64 "Monodomain model of cardiac electrophysiology.");
87 std::string vCellModel;
88 m_session->LoadSolverInfo(
"CELLMODEL", vCellModel,
"");
90 ASSERTL0(vCellModel !=
"",
"Cell Model not specified.");
106 std::string varCoeffString[6] = {
"xx",
"xy",
"yy",
"xz",
"yz",
"zz"};
107 std::string aniso_var[3] = {
"fx",
"fy",
"fz"};
109 const int nq =
m_fields[0]->GetNpoints();
115 for (
int j = 0; j < i+1; ++j)
119 m_vardiff[varCoeffEnum[k]] = Array<OneD, NekDouble>(nq, 1.0);
123 m_vardiff[varCoeffEnum[k]] = Array<OneD, NekDouble>(nq, 0.0);
131 if (
m_session->DefinesFunction(
"AnisotropicConductivity"))
133 if (
m_session->DefinesCmdLineArgument(
"verbose"))
135 cout <<
"Loading Anisotropic Fibre map." << endl;
142 Array<OneD, NekDouble> vTemp_i;
143 Array<OneD, NekDouble> vTemp_j;
166 "Function 'AnisotropicConductivity' not correctly "
169 "AnisotropicConductivity");
172 for (
int i = 0; i < j + 1; ++i)
175 "AnisotropicConductivity",aniso_var[i]),
176 "Function 'AnisotropicConductivity' not correctly "
179 "AnisotropicConductivity");
202 if (
m_session->DefinesFunction(
"IsotropicConductivity"))
204 if (
m_session->DefinesCmdLineArgument(
"verbose"))
206 cout <<
"Loading Isotropic Conductivity map." << endl;
209 const std::string varName =
"intensity";
210 Array<OneD, NekDouble> vTemp;
216 if (
m_session->DefinesParameter(
"d_min") ||
224 for (
int j = 0; j < nq; ++j)
226 vTemp[j] = (vTemp[j] < f_min ? f_min : vTemp[j]);
227 vTemp[j] = (vTemp[j] > f_max ? f_max : vTemp[j]);
232 Vmath::Smul(nq, -1.0/(f_max-f_min), vTemp, 1, vTemp, 1);
234 Vmath::Smul(nq, scar_max - scar_min, vTemp, 1, vTemp, 1);
239 for (
int i = 0; i < nVarDiffCmpts; ++i)
252 for (
int i = 0; i < j + 1; ++i)
257 std::stringstream filename;
258 filename <<
"Conductivity_" << varCoeffString[k] <<
".fld";
269 LibUtilities::FilterMap::const_iterator x;
270 for (x = f.begin(); x != f.end(); ++x, ++k)
272 if (x->first ==
"CheckpointCellModel")
274 boost::shared_ptr<FilterCheckpointCellModel> c
308 const Array<
OneD,
const Array<OneD, NekDouble> >&inarray,
309 Array<
OneD, Array<OneD, NekDouble> >&outarray,
313 int nvariables = inarray.num_elements();
323 for (
int i = 0; i < nvariables; ++i)
340 outarray[i] =
m_fields[i]->GetPhys();
349 const Array<
OneD,
const Array<OneD, NekDouble> >&inarray,
350 Array<
OneD, Array<OneD, NekDouble> >&outarray,
354 m_cell->TimeIntegrate(inarray, outarray, time);
357 for (
unsigned int i = 0; i <
m_stimulus.size(); ++i)
368 bool dumpInitialConditions,
372 dumpInitialConditions,
385 m_session->GetFunctionType(
"d00",
"intensity")
389 m_session->GetFunction(
"d00",
"intensity")->GetExpression());
392 m_session->GetFunctionType(
"d11",
"intensity")
396 m_session->GetFunction(
"d11",
"intensity")->GetExpression());
399 m_session->GetFunctionType(
"d22",
"intensity")
403 m_session->GetFunction(
"d22",
"intensity")->GetExpression());
405 m_cell->GenerateSummary(s);