36 #ifndef HEARTCONFIGDEFAULTS_HPP_
37 #define HEARTCONFIGDEFAULTS_HPP_
93 cp::simulation_type simulation_params;
94 simulation_params.SpaceDimension().set(3);
95 cp::domain_type domain(
"Mono");
96 simulation_params.Domain().set(domain);
97 cp::ionic_model_selection_type default_ionic_model;
98 cp::ionic_models_available_type ionic_model(
"LuoRudyI");
99 default_ionic_model.Hardcoded().set(ionic_model);
100 cp::ionic_models_type ionic_models(default_ionic_model);
101 simulation_params.IonicModels().set(ionic_models);
102 simulation_params.OutputDirectory().set(
"ChasteResults");
103 simulation_params.OutputFilenamePrefix().set(
"SimulationResults");
106 cp::physiological_type phys_params;
107 XSD_CREATE_WITH_FIXED_ATTR3(cp::conductivities_type, intra_conductivities,
108 1.75, 1.75, 1.75,
"mS/cm");
109 phys_params.IntracellularConductivities().set(intra_conductivities);
110 XSD_CREATE_WITH_FIXED_ATTR3(cp::conductivities_type, extra_conductivities,
111 7.0, 7.0, 7.0,
"mS/cm");
112 phys_params.ExtracellularConductivities().set(extra_conductivities);
113 XSD_CREATE_WITH_FIXED_ATTR1(cp::conductivity_type, bath_conductivity, 7.0,
"mS/cm");
114 phys_params.BathConductivity().set(bath_conductivity);
115 XSD_CREATE_WITH_FIXED_ATTR1(cp::inverse_length_type, surface_area_to_volume_ratio, 1400,
"1/cm");
116 phys_params.SurfaceAreaToVolumeRatio().set(surface_area_to_volume_ratio);
117 XSD_CREATE_WITH_FIXED_ATTR1(cp::capacitance_type, capacitance, 1.0,
"uF/cm^2");
118 phys_params.Capacitance().set(capacitance);
120 cp::purkinje_physiological_type purkinje_phys_params;
121 XSD_CREATE_WITH_FIXED_ATTR1(cp::inverse_length_type, purkinje_Am, 2800,
"1/cm");
122 purkinje_phys_params.SurfaceAreaToVolumeRatio().set(purkinje_Am);
123 XSD_CREATE_WITH_FIXED_ATTR1(cp::capacitance_type, purkinje_Cm, 1.0,
"uF/cm^2");
124 purkinje_phys_params.Capacitance().set(purkinje_Cm);
125 XSD_CREATE_WITH_FIXED_ATTR1(cp::conductivity_type, purkinje_conductivity, 1.75,
"mS/cm");
126 purkinje_phys_params.Conductivity().set(purkinje_conductivity);
127 phys_params.Purkinje().set(purkinje_phys_params);
130 cp::numerical_type numerical_params;
131 XSD_CREATE_WITH_FIXED_ATTR3(cp::time_steps_type, timesteps, 0.01, 0.01, 0.01,
"ms");
132 cp::ksp_tolerances_type tolerances;
133 tolerances.KSPAbsolute().set(2e-4);
134 cp::ksp_solver_type ksp_solver(
"cg");
135 cp::ksp_preconditioner_type ksp_precond(
"bjacobi");
136 cp::mesh_partitioning_type mesh_partitioning(
"parmetis");
137 numerical_params.TimeSteps().set(timesteps);
138 numerical_params.KSPTolerances().set(tolerances);
139 numerical_params.KSPSolver().set(ksp_solver);
140 numerical_params.KSPPreconditioner().set(ksp_precond);
141 numerical_params.MeshPartitioning().set(mesh_partitioning);
142 numerical_params.UseStateVariableInterpolation().set(cp::yesno_type::no);
148 boost::shared_ptr<cp::chaste_parameters_type> p_defaults(
new cp::chaste_parameters_type(phys_params, numerical_params));
149 p_defaults->Simulation().set(simulation_params);
161 #define MERGE_PARAM(path) \
162 if (!pParams->path().present()) { \
163 if (pDefaults->path().present()) { \
164 pParams->path().set(pDefaults->path().get()); \
172 #define ELSE_IF_DEFAULT(path) \
173 else if (pDefaults->path().present())
185 boost::shared_ptr<cp::chaste_parameters_type> pDefaults)
188 if (!pParams->ResumeSimulation().present())
208 MERGE_PARAM(Physiological().IntracellularConductivities)
209 MERGE_PARAM(Physiological().ExtracellularConductivities)
211 MERGE_PARAM(Physiological().SurfaceAreaToVolumeRatio)
216 MERGE_PARAM(Physiological().Purkinje()->SurfaceAreaToVolumeRatio)
217 MERGE_PARAM(Physiological().Purkinje()->Capacitance)
218 MERGE_PARAM(Physiological().Purkinje()->Conductivity)
231 if (!pParams->Numerical().KSPTolerances()->KSPRelative().present())
233 MERGE_PARAM(Numerical().KSPTolerances()->KSPAbsolute)
239 MERGE_PARAM(Numerical().UseStateVariableInterpolation)
#define ELSE_IF_DEFAULT(path)
#define MERGE_PARAM(path)
void MergeDefaults(boost::shared_ptr< cp::chaste_parameters_type > pParams, boost::shared_ptr< cp::chaste_parameters_type > pDefaults)
boost::shared_ptr< cp::chaste_parameters_type > CreateDefaultParameters()