From 60731e8e6babe7e1f96b5471e7ea3c40a1bef7e8 Mon Sep 17 00:00:00 2001 From: KB Date: Sat, 28 Mar 2026 10:55:47 -0700 Subject: [PATCH 01/12] added initialization to TTP ionic parameters --- Code/Source/solver/CepMod.h | 4 + Code/Source/solver/CepModTtp.cpp | 197 ++++++++++-------- Code/Source/solver/CepModTtp.h | 38 +++- Code/Source/solver/Parameters.cpp | 182 ++++++++++++++++ Code/Source/solver/Parameters.h | 80 +++++++ Code/Source/solver/cep_ion.cpp | 24 ++- Code/Source/solver/distribute.cpp | 28 +++ Code/Source/solver/read_files.cpp | 49 +++++ tests/cases/cep/spiral_TTP_2d/README.md | 9 + tests/cases/cep/spiral_TTP_2d/SpiralWave.jpg | Bin 0 -> 464933 bytes .../cep/spiral_TTP_2d/domain-1_EPmodel.xml | 43 ++++ .../cep/spiral_TTP_2d/domain-2_EPmodel.xml | 44 ++++ .../cep/spiral_TTP_2d/domain-3_EPmodel.xml | 43 ++++ .../cep/spiral_TTP_2d/domain-4_EPmodel.xml | 43 ++++ .../spiral_TTP_2d/mesh/mesh-complete.mesh.vtu | 3 + .../spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp | 3 + .../spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp | 3 + .../spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp | 3 + .../spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp | 3 + .../mesh/mesh_with_domain_ids.vtu | 3 + .../spiral_TTP_2d/mesh/spiral_domain_info.dat | 3 + tests/cases/cep/spiral_TTP_2d/result_001.vtu | 3 + tests/cases/cep/spiral_TTP_2d/solver.xml | 85 ++++++++ tests/test_cep.py | 5 + 24 files changed, 814 insertions(+), 84 deletions(-) create mode 100644 tests/cases/cep/spiral_TTP_2d/README.md create mode 100644 tests/cases/cep/spiral_TTP_2d/SpiralWave.jpg create mode 100644 tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml create mode 100644 tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml create mode 100644 tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml create mode 100644 tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml create mode 100755 tests/cases/cep/spiral_TTP_2d/mesh/mesh-complete.mesh.vtu create mode 100755 tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp create mode 100755 tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp create mode 100755 tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp create mode 100755 tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp create mode 100644 tests/cases/cep/spiral_TTP_2d/mesh/mesh_with_domain_ids.vtu create mode 100644 tests/cases/cep/spiral_TTP_2d/mesh/spiral_domain_info.dat create mode 100644 tests/cases/cep/spiral_TTP_2d/result_001.vtu create mode 100644 tests/cases/cep/spiral_TTP_2d/solver.xml diff --git a/Code/Source/solver/CepMod.h b/Code/Source/solver/CepMod.h index b9edf28f8..8654d73bf 100644 --- a/Code/Source/solver/CepMod.h +++ b/Code/Source/solver/CepMod.h @@ -177,6 +177,10 @@ class cepModelType /// @brief Interface for Tusscher-Panfilov cellular activation model CepModTtp ttp; + + /// @brief TTP state initializations + TenTusscherPanfilovState ttp_initial_state; + bool ttp_user_initial_state = false; }; /// @brief Cardiac electromechanics model type diff --git a/Code/Source/solver/CepModTtp.cpp b/Code/Source/solver/CepModTtp.cpp index c4a703660..d36b6c4bf 100644 --- a/Code/Source/solver/CepModTtp.cpp +++ b/Code/Source/solver/CepModTtp.cpp @@ -5,6 +5,7 @@ #include "mat_fun.h" #include +#include CepModTtp::CepModTtp() { @@ -14,6 +15,72 @@ CepModTtp::~CepModTtp() { } +namespace TenTusscherPanfilovDefaults { + + const TenTusscherPanfilovState epicardium_state = { + .V = -85.23, + .K_i = 136.89, + .Na_i = 8.6040, + .Ca_i = 1.26E-4, + .Ca_ss = 3.6E-4, + .Ca_sr = 3.64, + .R_bar = 0.9073, + .x_r1 = 6.21E-3, + .x_r2 = 0.4712, + .x_s = 9.5E-3, + .m = 1.72E-3, + .h = 0.7444, + .j = 0.7045, + .d = 3.373E-5, + .f = 0.7888, + .f2 = 0.9755, + .fcass = 0.9953, + .s = 0.999998, + .r = 2.42E-8}; + + const TenTusscherPanfilovState endocardium_state = { + .V = -86.709, + .K_i = 138.4, + .Na_i = 10.355, + .Ca_i = 1.3E-4, + .Ca_ss = 3.6E-4, + .Ca_sr = 3.715, + .R_bar = 0.9068, + .x_r1 = 4.48E-3, + .x_r2 = 0.476, + .x_s = 8.7E-3, + .m = 1.55E-3, + .h = 0.7573, + .j = 0.7225, + .d = 3.164E-5, + .f = 0.8009, + .f2 = 0.9778, + .fcass = 0.9953, + .s = 0.3212, + .r = 2.235E-8}; + + const TenTusscherPanfilovState midmyocardium_state = { + .V = -85.423, + .K_i = 138.52, + .Na_i = 10.132, + .Ca_i = 1.53E-4, + .Ca_ss = 4.2E-4, + .Ca_sr = 4.272, + .R_bar = 0.8978, + .x_r1 = 1.65E-2, + .x_r2 = 0.4730, + .x_s = 1.74E-2, + .m = 1.65E-3, + .h = 0.7490, + .j = 0.6788, + .d = 3.288E-5, + .f = 0.7026, + .f2 = 0.9526, + .fcass = 0.9942, + .s = 0.999998, + .r = 2.347E-8}; +} + /// @brief Compute macroscopic fiber strain based on sacromere force-length relationship and calcium concentration void CepModTtp::actv_strn(const double c_Ca, const double I4f, const double dt, double& gf) { @@ -444,89 +511,32 @@ void CepModTtp::getj(const int i, const int nX, const int nG, const Vector& X, Vector& Xg ) +void CepModTtp::init(const int imyo, const int nX, const int nG, Vector& X, + Vector& Xg, const TenTusscherPanfilovState* user_state) { - switch (imyo) { - - // epi - case 1: - // Initialize state variables - X(0) = -85.23; // V (units: mV) - X(1) = 136.89; // K_i (units: mM) - X(2) = 8.6040; // Na_i (units: mM) - X(3) = 1.26E-4; // Ca_i (units: mM) - X(4) = 3.6E-4; // Ca_ss (units: mM) - X(5) = 3.64; // Ca_sr (units: mM) - X(6) = 0.9073; // R' (dimensionless) - - // Initialize gating variables - Xg(0) = 6.21E-3; // x_r1 (dimensionless) - Xg(1) = 0.4712; // x_r2 (dimensionless) - Xg(2) = 9.5E-3; // x_s (dimensionless) - Xg(3) = 1.72E-3; // m (dimensionless) - Xg(4) = 0.7444; // h (dimensionless) - Xg(5) = 0.7045; // j (dimensionless) - Xg(6) = 3.373E-5; // d (dimensionless) - Xg(7) = 0.7888; // f (dimensionless) - Xg(8) = 0.9755; // f_2 (dimensionless) - Xg(9) = 0.9953; // f_cass (dimensionless) - Xg(10) = 0.999998; // s (dimensionless) - Xg(11) = 2.42E-8; // r (dimensionless) - break; - - // endo - case 2: - // Initialize state variables - X(0) = -86.709; // V (units: mV) - X(1) = 138.4; // K_i (units: mM) - X(2) = 10.355; // Na_i (units: mM) - X(3) = 1.3E-4; // Ca_i (units: mM) - X(4) = 3.6E-4; // Ca_ss (units: mM) - X(5) = 3.715; // Ca_sr (units: mM) - X(6) = 0.9068; // R' (dimensionless) - - // Initialize gating variables - Xg(0) = 4.48E-3; // x_r1 (dimensionless) - Xg(1) = 0.476; // x_r2 (dimensionless) - Xg(2) = 8.7E-3; // x_s (dimensionless) - Xg(3) = 1.55E-3; // m (dimensionless) - Xg(4) = 0.7573; // h (dimensionless) - Xg(5) = 0.7225; // j (dimensionless) - Xg(6) = 3.164E-5; // d (dimensionless) - Xg(7) = 0.8009; // f (dimensionless) - Xg(8) = 0.9778; // f_2 (dimensionless) - Xg(9) = 0.9953; // f_cass (dimensionless) - Xg(10) = 0.3212; // s (dimensionless) - Xg(11) = 2.235E-8; // r (dimensionless) - break; - - // mid-myo - case 3: - // Initialize state variables - X(0) = -85.423; // V (units: mV) - X(1) = 138.52; // K_i (units: mM) - X(2) = 10.132; // Na_i (units: mM) - X(3) = 1.53E-4; // Ca_i (units: mM) - X(4) = 4.2E-4; // Ca_ss (units: mM) - X(5) = 4.272; // Ca_sr (units: mM) - X(6) = 0.8978; // R' (dimensionless) - - // Initialize gating variables - Xg(0) = 1.65E-2; // x_r1 (dimensionless) - Xg(1) = 0.4730; // x_r2 (dimensionless) - Xg(2) = 1.74E-2; // x_s (dimensionless) - Xg(3) = 1.65E-3; // m (dimensionless) - Xg(4) = 0.7490; // h (dimensionless) - Xg(5) = 0.6788; // j (dimensionless) - Xg(6) = 3.288E-5; // d (dimensionless) - Xg(7) = 0.7026; // f (dimensionless) - Xg(8) = 0.9526; // f_2 (dimensionless) - Xg(9) = 0.9942; // f_cass (dimensionless) - Xg(10) = 0.999998; // s (dimensionless) - Xg(11) = 2.347E-8; // r (dimensionless) - break; - } + if (user_state) { + initial_state = *user_state; + } else { + switch (imyo) { + // Initialize state variables with default values + // epi + case 1: + initial_state = TenTusscherPanfilovDefaults::epicardium_state; + break; + // endo + case 2: + initial_state = TenTusscherPanfilovDefaults::endocardium_state; + break; + // mid-myo + case 3: + initial_state = TenTusscherPanfilovDefaults::midmyocardium_state; + break; + default: + throw std::invalid_argument("Invalid imyo value: must be 1 (epi), 2 (endo), or 3 (mid-myo)"); + } + } + copyStateToVectors(X, Xg); } void CepModTtp::init(const int imyo, const int nX, const int nG, Vector& X, Vector& Xg, @@ -791,5 +801,28 @@ void CepModTtp::update_g(const int i, const double dt, const int n, const int nG Xg(11) = ri - (ri - r)*exp(-dt/tau); } - +void CepModTtp::copyStateToVectors(Vector& X, Vector& Xg) const +{ + // Copy state variables to state vector X and channel gating variables Xg + X(0) = initial_state.V; + X(1) = initial_state.K_i; + X(2) = initial_state.Na_i; + X(3) = initial_state.Ca_i; + X(4) = initial_state.Ca_ss; + X(5) = initial_state.Ca_sr; + X(6) = initial_state.R_bar; + + Xg(0) = initial_state.x_r1; + Xg(1) = initial_state.x_r2; + Xg(2) = initial_state.x_s; + Xg(3) = initial_state.m; + Xg(4) = initial_state.h; + Xg(5) = initial_state.j; + Xg(6) = initial_state.d; + Xg(7) = initial_state.f; + Xg(8) = initial_state.f2; + Xg(9) = initial_state.fcass; + Xg(10) = initial_state.s; + Xg(11) = initial_state.r; +} diff --git a/Code/Source/solver/CepModTtp.h b/Code/Source/solver/CepModTtp.h index 181a7b7f0..16b46c269 100644 --- a/Code/Source/solver/CepModTtp.h +++ b/Code/Source/solver/CepModTtp.h @@ -19,8 +19,38 @@ T& make_ref(T&& x) { return x; } /// /// The classes defined here duplicate the data structures in the Fortran TPPMOD module defined /// in CEPMOD_TTP.f and PARAMS_TPP.f files. +class TenTusscherPanfilovState { + public: + double V; + double K_i; + double Na_i; + double Ca_i; + double Ca_ss; + double Ca_sr; + double R_bar; + double x_r1; + double x_r2; + double x_s; + double m; + double h; + double j; + double d; + double f; + double f2; + double fcass; + double s; + double r; +}; + +namespace TenTusscherPanfilovDefaults { + extern const TenTusscherPanfilovState epicardium_state; + extern const TenTusscherPanfilovState endocardium_state; + extern const TenTusscherPanfilovState midmyocardium_state; +} class CepModTtp { + private: + TenTusscherPanfilovState initial_state; public: CepModTtp(); ~CepModTtp(); @@ -367,6 +397,9 @@ class CepModTtp double I_xfer_Cai, I_xfer_Cass; double k_casr_sr, k1_casr, O_Casr, O_Cass, O_Rbar; +// Flag for user defined initial conditions + bool user_initial_conditions_defined = false; + void actv_strn(const double c_Ca, const double I4f, const double dt, double& gf); void actv_strs(const double c_Ca, const double dt, double& Tact, double& epsX); @@ -376,7 +409,8 @@ class CepModTtp void getj(const int i, const int nX, const int nG, const Vector& X, const Vector& Xg, Array& JAC, const double Ksac); - void init(const int imyo, const int nX, const int nG, Vector& X, Vector& Xg); + void init(const int imyo, const int nX, const int nG, Vector& X, Vector& Xg, + const TenTusscherPanfilovState* user_state = nullptr); void init(const int imyo, const int nX, const int nG, Vector& X, Vector& Xg, Vector& X0, Vector& Xg0); @@ -394,6 +428,8 @@ class CepModTtp void update_g(const int i, const double dt, const int n, const int nG, const Vector& X, Vector& Xg); + void copyStateToVectors(Vector& X, Vector& Xg) const; + }; #endif diff --git a/Code/Source/solver/Parameters.cpp b/Code/Source/solver/Parameters.cpp index d308e89b7..b15b50072 100644 --- a/Code/Source/solver/Parameters.cpp +++ b/Code/Source/solver/Parameters.cpp @@ -1666,6 +1666,8 @@ void DomainParameters::print_parameters() stimulus.print_parameters(); + ttp_initial_conditions.print_parameters(); + fluid_viscosity.print_parameters(); solid_viscosity.print_parameters(); @@ -1711,6 +1713,9 @@ void DomainParameters::set_values(tinyxml2::XMLElement* domain_elem, bool from_e } else if (name == StimulusParameters::xml_element_name_) { stimulus.set_values(item); + } else if (name == InitialConditionsParameters::xml_element_name_) { + ttp_initial_conditions.set_values(item); + } else if (name == FluidViscosityParameters::xml_element_name_ || name == SolidViscosityParameters::xml_element_name_) { auto eq_type = consts::equation_name_to_type.at(equation.value()); if (eq_type == consts::EquationType::phys_fluid || eq_type == consts::EquationType::phys_CMM || eq_type == consts::EquationType::phys_stokes) { @@ -3137,4 +3142,181 @@ void LinearSolverParameters::set_values(tinyxml2::XMLElement* xml_elem) } } +/////////////////////////////////////////////////////////// +// InitialConditionsParameters // +////////////////////////////////////////////////////////// + +// Process parameters for the 'TTP_initial_conditions' XML element. + +/// @brief Define the XML element name for initial conditions parameters. +const std::string InitialConditionsParameters::xml_element_name_ = "TTP_initial_conditions"; + +InitialConditionsParameters::InitialConditionsParameters() +{ + // No parameters to set in constructor - all are in sub-elements +} + +void InitialConditionsParameters::print_parameters() +{ + if (value_set) { + std::cout << std::endl; + std::cout << "Initial Conditions Parameters" << std::endl; + std::cout << "-----------------------------" << std::endl; + initial_states.print_parameters(); + gating_variables.print_parameters(); + } +} + +void InitialConditionsParameters::set_values(tinyxml2::XMLElement* xml_elem) +{ + using namespace tinyxml2; + std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; + + auto item = xml_elem->FirstChildElement(); + + while (item != nullptr) { + auto name = std::string(item->Value()); + + if (name == InitialStatesParameters::xml_element_name_) { + initial_states.set_values(item); + value_set = true; + + } else if (name == GatingVariablesParameters::xml_element_name_) { + gating_variables.set_values(item); + value_set = true; + + } else { + throw std::runtime_error(error_msg + name + "'."); + } + + item = item->NextSiblingElement(); + } +} + +////////////////////////////////////////////////////////// +// InitialStatesParameters // +////////////////////////////////////////////////////////// + +/// @brief Define the XML element name for initial states parameters (Initial_states). +const std::string InitialStatesParameters::xml_element_name_ = "Initial_states"; + +InitialStatesParameters::InitialStatesParameters() +{ + bool required = false; + + set_parameter("V", -85.23, !required, V); + set_parameter("K_i", 136.89, !required, K_i); + set_parameter("Na_i", 8.6040, !required, Na_i); + set_parameter("Ca_i", 1.26E-4, !required, Ca_i); + set_parameter("Ca_ss", 3.6E-4, !required, Ca_ss); + set_parameter("Ca_sr", 3.64, !required, Ca_sr); + set_parameter("R_bar", 0.9073, !required, R_bar); +} + +void InitialStatesParameters::print_parameters() +{ + if (value_set) { + std::cout << " Initial States:" << std::endl; + auto params_name_value = get_parameter_list(); + for (auto& [ key, value ] : params_name_value) { + std::cout << " " << key << ": " << value << std::endl; + } + } +} + +void InitialStatesParameters::set_values(tinyxml2::XMLElement* xml_elem) +{ + using namespace tinyxml2; + std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; + + auto item = xml_elem->FirstChildElement(); + + while (item != nullptr) { + auto name = std::string(item->Value()); + + if (item->GetText() != nullptr) { + auto value = item->GetText(); + try { + set_parameter_value(name, value); + value_set = true; + } catch (const std::bad_function_call& exception) { + throw std::runtime_error(error_msg + name + "'."); + } + + } else { + throw std::runtime_error(error_msg + name + "'."); + } + + item = item->NextSiblingElement(); + } +} + +////////////////////////////////////////////////////////// +// GatingVariablesParameters // +////////////////////////////////////////////////////////// + +/// @brief Define the XML element name for gating variables parameters. +const std::string GatingVariablesParameters::xml_element_name_ = "Gating_variables"; + +GatingVariablesParameters::GatingVariablesParameters() +{ + bool required = false; + + // Rectifier current gating variables + set_parameter("x_r1_rectifier", 6.21E-3, !required, x_r1_rectifier); + set_parameter("x_r2_rectifier", 0.4712, !required, x_r2_rectifier); + set_parameter("x_s_rectifier", 9.5E-3, !required, x_s_rectifier); + + // Fast sodium current gating variables + set_parameter("m_fast_Na", 1.72E-3, !required, m_fast_Na); + set_parameter("h_fast_Na", 0.7444, !required, h_fast_Na); + set_parameter("j_fast_Na", 0.7045, !required, j_fast_Na); + + // Slow inward current gating variables + set_parameter("d_slow_in", 3.373E-5, !required, d_slow_in); + set_parameter("f_slow_in", 0.7888, !required, f_slow_in); + set_parameter("f2_slow_in", 0.9755, !required, f2_slow_in); + set_parameter("fcass_slow_in", 0.9953, !required, fcass_slow_in); + + // Transient outward current gating variables + set_parameter("s_out", 0.999998, !required, s_out); + set_parameter("r_out", 2.42E-8, !required, r_out); +} +void GatingVariablesParameters::print_parameters() +{ + if (value_set) { + std::cout << " Gating Variables:" << std::endl; + auto params_name_value = get_parameter_list(); + for (auto& [ key, value ] : params_name_value) { + std::cout << " " << key << ": " << value << std::endl; + } + } +} + +void GatingVariablesParameters::set_values(tinyxml2::XMLElement* xml_elem) +{ + using namespace tinyxml2; + std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; + + auto item = xml_elem->FirstChildElement(); + + while (item != nullptr) { + auto name = std::string(item->Value()); + + if (item->GetText() != nullptr) { + auto value = item->GetText(); + try { + set_parameter_value(name, value); + value_set = true; + } catch (const std::bad_function_call& exception) { + throw std::runtime_error(error_msg + name + "'."); + } + + } else { + throw std::runtime_error(error_msg + name + "'."); + } + + item = item->NextSiblingElement(); + } +} \ No newline at end of file diff --git a/Code/Source/solver/Parameters.h b/Code/Source/solver/Parameters.h index d4db1580b..706acb804 100644 --- a/Code/Source/solver/Parameters.h +++ b/Code/Source/solver/Parameters.h @@ -1180,6 +1180,85 @@ class FiberReinforcementStressParameters : public ParameterLists bool value_set = false; }; +/// @brief The GatingVariablesParameters class stores parameters for the +/// 'Gating_variables' XML element under TTP_initial_conditions. +class GatingVariablesParameters : public ParameterLists +{ + public: + GatingVariablesParameters(); + + static const std::string xml_element_name_; + + bool defined() const { return value_set; }; + void print_parameters(); + void set_values(tinyxml2::XMLElement* xml_elem); + + // Rectifier current gating variables + Parameter x_r1_rectifier; + Parameter x_r2_rectifier; + Parameter x_s_rectifier; + + // Fast sodium current gating variables + Parameter m_fast_Na; + Parameter h_fast_Na; + Parameter j_fast_Na; + + // Slow inward current gating variables + Parameter d_slow_in; + Parameter f_slow_in; + Parameter f2_slow_in; + Parameter fcass_slow_in; + + // Transient outward current gating variables + Parameter s_out; + Parameter r_out; + + bool value_set = false; +}; + +/// @brief The InitialStatesParameters class stores parameters for the +/// 'Initial_states' XML element under TTP_initial_conditions. +class InitialStatesParameters : public ParameterLists +{ + public: + InitialStatesParameters(); + + static const std::string xml_element_name_; + + bool defined() const { return value_set; }; + void print_parameters(); + void set_values(tinyxml2::XMLElement* xml_elem); + + Parameter V; + Parameter K_i; + Parameter Na_i; + Parameter Ca_i; + Parameter Ca_ss; + Parameter Ca_sr; + Parameter R_bar; + + bool value_set = false; +}; + +/// @brief The InitialConditionsParameters class stores parameters for the +/// 'TTP_initial_conditions' XML element under Domain. +class InitialConditionsParameters : public ParameterLists +{ + public: + InitialConditionsParameters(); + + static const std::string xml_element_name_; + + bool defined() const { return value_set; }; + void print_parameters(); + void set_values(tinyxml2::XMLElement* xml_elem); + + InitialStatesParameters initial_states; + GatingVariablesParameters gating_variables; + + bool value_set = false; +}; + /// @brief The DomainParameters class stores parameters for the XML /// 'Domain' element to specify properties for solving equations. /// @@ -1209,6 +1288,7 @@ class DomainParameters : public ParameterLists StimulusParameters stimulus; FluidViscosityParameters fluid_viscosity; SolidViscosityParameters solid_viscosity; + InitialConditionsParameters ttp_initial_conditions; // Attributes. Parameter id; diff --git a/Code/Source/solver/cep_ion.cpp b/Code/Source/solver/cep_ion.cpp index 2cf78b836..d5873048c 100644 --- a/Code/Source/solver/cep_ion.cpp +++ b/Code/Source/solver/cep_ion.cpp @@ -6,6 +6,7 @@ #include "all_fun.h" #include "post.h" #include "utils.h" +#include #include namespace cep_ion { @@ -41,6 +42,23 @@ void cep_init(Simulation* simulation) continue; } + // Warn once on rank 0 if any TTP domain uses default initial conditions. + bool any_ttp_defaults = false; + for (int iDmn = 0; iDmn < eq.nDmn; iDmn++) { + if (eq.dmn[iDmn].cep.cepType == ElectrophysiologyModelType::TTP + && !eq.dmn[iDmn].cep.ttp_user_initial_state) { + any_ttp_defaults = true; + break; + } + } + static bool ttp_default_ic_warning_printed = false; + if (any_ttp_defaults && !ttp_default_ic_warning_printed && cm.idcm() == 0) { + std::cout << "[WARNING] Default initial conditions are being used for the TTP ionic " + "model (zone-based: epi/endo/mid-myo). To set custom initial conditions, " + "specify in the domain XML." << std::endl; + ttp_default_ic_warning_printed = true; + } + if (com_mod.dmnId.size() != 0) { Vector sA(tnNo); Array sF(nXion,tnNo); @@ -131,7 +149,11 @@ void cep_init_l(cepModelType& cep, int nX, int nG, Vector& X, VectorG_to.value(); } + if (domain_params->ttp_initial_conditions.defined()) { + auto& ttp_ic = domain_params->ttp_initial_conditions; + + if (ttp_ic.initial_states.defined()) { + auto& s = ttp_ic.initial_states; + std::map*, double*> initial_states_params { + {&s.V, &lDmn.cep.ttp_initial_state.V}, + {&s.K_i, &lDmn.cep.ttp_initial_state.K_i}, + {&s.Na_i, &lDmn.cep.ttp_initial_state.Na_i}, + {&s.Ca_i, &lDmn.cep.ttp_initial_state.Ca_i}, + {&s.Ca_ss, &lDmn.cep.ttp_initial_state.Ca_ss}, + {&s.Ca_sr, &lDmn.cep.ttp_initial_state.Ca_sr}, + {&s.R_bar, &lDmn.cep.ttp_initial_state.R_bar}, + }; + bool any_set = false; + for (auto& [param, value] : initial_states_params) { + if (param->defined()) { *value = param->value(); any_set = true; } + } + lDmn.cep.ttp_user_initial_state = any_set; + } + + if (ttp_ic.gating_variables.defined()) { + auto& g = ttp_ic.gating_variables; + std::map*, double*> gating_variables_params { + // Rectifier current gating variables + {&g.x_r1_rectifier, &lDmn.cep.ttp_initial_state.x_r1}, + {&g.x_r2_rectifier, &lDmn.cep.ttp_initial_state.x_r2}, + {&g.x_s_rectifier, &lDmn.cep.ttp_initial_state.x_s}, + // Fast sodium current gating variables + {&g.m_fast_Na, &lDmn.cep.ttp_initial_state.m}, + {&g.h_fast_Na, &lDmn.cep.ttp_initial_state.h}, + {&g.j_fast_Na, &lDmn.cep.ttp_initial_state.j}, + // Slow inward current gating variables + {&g.d_slow_in, &lDmn.cep.ttp_initial_state.d}, + {&g.f_slow_in, &lDmn.cep.ttp_initial_state.f}, + {&g.f2_slow_in, &lDmn.cep.ttp_initial_state.f2}, + {&g.fcass_slow_in, &lDmn.cep.ttp_initial_state.fcass}, + // Transient outward current gating variables + {&g.s_out, &lDmn.cep.ttp_initial_state.s}, + {&g.r_out, &lDmn.cep.ttp_initial_state.r}, + }; + bool any_set = false; + for (auto& [param, value] : gating_variables_params) { + if (param->defined()) { *value = param->value(); any_set = true; } + } + if (any_set) lDmn.cep.ttp_user_initial_state = true; + } + } + // Set stimulus parameters. // lDmn.cep.Istim.A = 0.0; diff --git a/tests/cases/cep/spiral_TTP_2d/README.md b/tests/cases/cep/spiral_TTP_2d/README.md new file mode 100644 index 000000000..85c90d729 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/README.md @@ -0,0 +1,9 @@ +# Spiral Wave for TTP Model + +Another approach to spiral wave initialization is to 'rig' the simulation domain such that there are 4 sub-domains which are all initialized to different sets of ionic and gating variable states. A visualization of this simulation case is shown below + +

+ +

+ +Initial conditions for the Ten-tusscher-Panfilov (TTP) EP model need to be specified in the solver.xml to override the default variables that are hard-coded inside the solver. Each set of initial conditions parameters are defined in a seperate xml file that is included in the solver.xml via the Include_xml parameter. diff --git a/tests/cases/cep/spiral_TTP_2d/SpiralWave.jpg b/tests/cases/cep/spiral_TTP_2d/SpiralWave.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a9e4aaf887fa01b30469726239ebb3e7b5169d32 GIT binary patch literal 464933 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�t>cu(+oAqjW6M4E6Z$*F>u0SkxSgnqyIOENYHL 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 C65pNx literal 0 HcmV?d00001 diff --git a/tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml new file mode 100644 index 000000000..446c9345b --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml @@ -0,0 +1,43 @@ + + + + TTP + 14.838 + 3.98E-5 + 0.153 + 0.392 + 0.294 + 0.1171 + + epi + + + + 18.167 + 136.897 + 8.6105 + 1.2592E-4 + 3.6181E-4 + 3.6399 + 0.9078 + + + + 6.368E-3 + 0.36774 + 9.77E-3 + 0.9338 + 0.5276 + 0.6837 + 1.9520E-2 + 0.7896 + 0.9752 + 0.9954 + 0.9941 + 4.2757E-5 + + + + RK + + \ No newline at end of file diff --git a/tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml new file mode 100644 index 000000000..01367f863 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml @@ -0,0 +1,44 @@ + + + + TTP + 14.838 + 3.98E-5 + 0.153 + 0.392 + 0.294 + + 0.1171 + myo + + + + -85.423 + 138.52 + 10.132 + 1.53E-4 + 4.2E-4 + 4.272 + 0.8978 + + + + 1.65E-2 + 0.4730 + 1.74E-2 + 1.65E-3 + 0.7490 + 0.6788 + 3.288E-5 + 0.7026 + 0.9526 + 0.9942 + 0.999998 + 2.347E-8 + + + + + RK + + \ No newline at end of file diff --git a/tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml new file mode 100644 index 000000000..af19dd7ba --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml @@ -0,0 +1,43 @@ + + + + TTP + 14.838 + 3.98E-5 + 0.153 + 0.392 + 0.294 + 0.1171 + + epi + + + + -44.756 + 136.88 + 8.5907 + 3.0084E-4 + 2.5462E-3 + 3.5292 + 0.7235 + + + + 0.9739 + 0.1239 + 0.1766 + 0.6379 + 2.3557E-4 + 3.147E-5 + 9.7186E-3 + 0.1754 + 0.3475 + 0.9296 + 0.4095 + 7.857E-4 + + + + RK + + \ No newline at end of file diff --git a/tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml new file mode 100644 index 000000000..654e04ab7 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml @@ -0,0 +1,43 @@ + + + + TTP + 14.838 + 3.98E-5 + 0.153 + 0.392 + 0.294 + 0.1171 + + epi + + + + -11.612 + 136.88 + 8.5916 + 3.486E-4 + 1.312E-2 + 3.4619 + 0.6875 + + + + 9.882E-1 + 3.707E-2 + 1.7887E-1 + 9.8692E-1 + 9.184E-8 + 6.291E-8 + 0.4147 + 0.15883 + 0.3341 + 0.9036 + 7.9355E-2 + 1.0429E-2 + + + + RK + + \ No newline at end of file diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-complete.mesh.vtu b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-complete.mesh.vtu new file mode 100755 index 000000000..290a670fa --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-complete.mesh.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71c85685b19c6d3a9576d6256ad538a7764f21b1ee54a1ec1a551bd628215755 +size 10591949 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp new file mode 100755 index 000000000..06d9b3377 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1618fd5d93f5e86513bf15e827c7c7cc8c5f94a42e1d305a4628df24ce2d9f0e +size 9613 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp new file mode 100755 index 000000000..012143915 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b96544c9a265753c24fce1cb4924ebb01ab9fbe581fea161bb42934592dfad63 +size 9604 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp new file mode 100755 index 000000000..c906f072f --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6b19987a2f4cc6a50754294a129a2d62976d6729464a2ca4c3226210c5d7044 +size 10919 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp new file mode 100755 index 000000000..51f0eb485 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68aa167c5024639fac7eba97dcb0a3c82222dc41d49319d668113a1d8d0a00e5 +size 10946 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh_with_domain_ids.vtu b/tests/cases/cep/spiral_TTP_2d/mesh/mesh_with_domain_ids.vtu new file mode 100644 index 000000000..48ea86df5 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/mesh_with_domain_ids.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4b967b48af296c79bfc7de86e330c9039551c26e5b634d85701981961661fae +size 14155939 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/spiral_domain_info.dat b/tests/cases/cep/spiral_TTP_2d/mesh/spiral_domain_info.dat new file mode 100644 index 000000000..212da27ad --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/spiral_domain_info.dat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1180e719c66e452d605505ef50e11a528208ae3f8963fe01390864406cae9f2 +size 2000000 diff --git a/tests/cases/cep/spiral_TTP_2d/result_001.vtu b/tests/cases/cep/spiral_TTP_2d/result_001.vtu new file mode 100644 index 000000000..7259069b5 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/result_001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:caaf854ab586476bffa6a0b5a6615498239ae6d63f4da787d40651c3655586f2 +size 14279770 diff --git a/tests/cases/cep/spiral_TTP_2d/solver.xml b/tests/cases/cep/spiral_TTP_2d/solver.xml new file mode 100644 index 000000000..44b29fd0a --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/solver.xml @@ -0,0 +1,85 @@ + + + + + false + 2 + 1 + 0.1 + 0.50 + STOP_SIM + + true + result + 1 + 1 + + 1 + 0 + + 1 + 0 + 0 + + + + + mesh/mesh-complete.mesh.vtu + + + mesh/mesh-surfaces/X0.vtp + + + + mesh/mesh-surfaces/X1.vtp + + + + mesh/mesh-surfaces/Y0.vtp + + + + mesh/mesh-surfaces/Y1.vtp + + + mesh/spiral_domain_info.dat + + + + + true + 1 + 2 + 1e-6 + + + domain-1_EPmodel.xml + + + + domain-2_EPmodel.xml + + + + domain-3_EPmodel.xml + + + + domain-4_EPmodel.xml + + + + true + + + + + rcs + + 1e-6 + + + + + + diff --git a/tests/test_cep.py b/tests/test_cep.py index 9ad915dd0..45ccd2db1 100644 --- a/tests/test_cep.py +++ b/tests/test_cep.py @@ -22,6 +22,11 @@ def test_spiral_BO_2d(n_proc): run_with_reference(base_folder, test_folder, fields, n_proc) +def test_spiral_TTP_2d(n_proc): + test_folder = "spiral_TTP_2d" + run_with_reference(base_folder, test_folder, fields, n_proc) + + def test_square_AP_2d(n_proc): test_folder = "square_AP_2d" run_with_reference(base_folder, test_folder, fields, n_proc) From 4ba8a55e8426855ec15068122840e1e0253ec71a Mon Sep 17 00:00:00 2001 From: KB Date: Mon, 30 Mar 2026 08:16:00 -0700 Subject: [PATCH 02/12] Renamed ic parameter classes with TTP --- Code/Source/solver/Parameters.cpp | 36 +++++++++++++++---------------- Code/Source/solver/Parameters.h | 24 ++++++++++----------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/Code/Source/solver/Parameters.cpp b/Code/Source/solver/Parameters.cpp index b15b50072..d3a1e3a74 100644 --- a/Code/Source/solver/Parameters.cpp +++ b/Code/Source/solver/Parameters.cpp @@ -1713,7 +1713,7 @@ void DomainParameters::set_values(tinyxml2::XMLElement* domain_elem, bool from_e } else if (name == StimulusParameters::xml_element_name_) { stimulus.set_values(item); - } else if (name == InitialConditionsParameters::xml_element_name_) { + } else if (name == TTPInitialConditionsParameters::xml_element_name_) { ttp_initial_conditions.set_values(item); } else if (name == FluidViscosityParameters::xml_element_name_ || name == SolidViscosityParameters::xml_element_name_) { @@ -3143,20 +3143,20 @@ void LinearSolverParameters::set_values(tinyxml2::XMLElement* xml_elem) } /////////////////////////////////////////////////////////// -// InitialConditionsParameters // +// TTPInitialConditionsParameters // ////////////////////////////////////////////////////////// // Process parameters for the 'TTP_initial_conditions' XML element. /// @brief Define the XML element name for initial conditions parameters. -const std::string InitialConditionsParameters::xml_element_name_ = "TTP_initial_conditions"; +const std::string TTPInitialConditionsParameters::xml_element_name_ = "TTP_initial_conditions"; -InitialConditionsParameters::InitialConditionsParameters() +TTPInitialConditionsParameters::TTPInitialConditionsParameters() { // No parameters to set in constructor - all are in sub-elements } -void InitialConditionsParameters::print_parameters() +void TTPInitialConditionsParameters::print_parameters() { if (value_set) { std::cout << std::endl; @@ -3167,7 +3167,7 @@ void InitialConditionsParameters::print_parameters() } } -void InitialConditionsParameters::set_values(tinyxml2::XMLElement* xml_elem) +void TTPInitialConditionsParameters::set_values(tinyxml2::XMLElement* xml_elem) { using namespace tinyxml2; std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; @@ -3177,11 +3177,11 @@ void InitialConditionsParameters::set_values(tinyxml2::XMLElement* xml_elem) while (item != nullptr) { auto name = std::string(item->Value()); - if (name == InitialStatesParameters::xml_element_name_) { + if (name == TTPInitialStatesParameters::xml_element_name_) { initial_states.set_values(item); value_set = true; - } else if (name == GatingVariablesParameters::xml_element_name_) { + } else if (name == TTPGatingVariablesParameters::xml_element_name_) { gating_variables.set_values(item); value_set = true; @@ -3194,13 +3194,13 @@ void InitialConditionsParameters::set_values(tinyxml2::XMLElement* xml_elem) } ////////////////////////////////////////////////////////// -// InitialStatesParameters // +// TTPInitialStatesParameters // ////////////////////////////////////////////////////////// /// @brief Define the XML element name for initial states parameters (Initial_states). -const std::string InitialStatesParameters::xml_element_name_ = "Initial_states"; +const std::string TTPInitialStatesParameters::xml_element_name_ = "Initial_states"; -InitialStatesParameters::InitialStatesParameters() +TTPInitialStatesParameters::TTPInitialStatesParameters() { bool required = false; @@ -3213,7 +3213,7 @@ InitialStatesParameters::InitialStatesParameters() set_parameter("R_bar", 0.9073, !required, R_bar); } -void InitialStatesParameters::print_parameters() +void TTPInitialStatesParameters::print_parameters() { if (value_set) { std::cout << " Initial States:" << std::endl; @@ -3224,7 +3224,7 @@ void InitialStatesParameters::print_parameters() } } -void InitialStatesParameters::set_values(tinyxml2::XMLElement* xml_elem) +void TTPInitialStatesParameters::set_values(tinyxml2::XMLElement* xml_elem) { using namespace tinyxml2; std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; @@ -3252,13 +3252,13 @@ void InitialStatesParameters::set_values(tinyxml2::XMLElement* xml_elem) } ////////////////////////////////////////////////////////// -// GatingVariablesParameters // +// TTPGatingVariablesParameters // ////////////////////////////////////////////////////////// /// @brief Define the XML element name for gating variables parameters. -const std::string GatingVariablesParameters::xml_element_name_ = "Gating_variables"; +const std::string TTPGatingVariablesParameters::xml_element_name_ = "Gating_variables"; -GatingVariablesParameters::GatingVariablesParameters() +TTPGatingVariablesParameters::TTPGatingVariablesParameters() { bool required = false; @@ -3283,7 +3283,7 @@ GatingVariablesParameters::GatingVariablesParameters() set_parameter("r_out", 2.42E-8, !required, r_out); } -void GatingVariablesParameters::print_parameters() +void TTPGatingVariablesParameters::print_parameters() { if (value_set) { std::cout << " Gating Variables:" << std::endl; @@ -3294,7 +3294,7 @@ void GatingVariablesParameters::print_parameters() } } -void GatingVariablesParameters::set_values(tinyxml2::XMLElement* xml_elem) +void TTPGatingVariablesParameters::set_values(tinyxml2::XMLElement* xml_elem) { using namespace tinyxml2; std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; diff --git a/Code/Source/solver/Parameters.h b/Code/Source/solver/Parameters.h index 706acb804..0ecd14d66 100644 --- a/Code/Source/solver/Parameters.h +++ b/Code/Source/solver/Parameters.h @@ -1180,12 +1180,12 @@ class FiberReinforcementStressParameters : public ParameterLists bool value_set = false; }; -/// @brief The GatingVariablesParameters class stores parameters for the +/// @brief The TTPGatingVariablesParameters class stores parameters for the /// 'Gating_variables' XML element under TTP_initial_conditions. -class GatingVariablesParameters : public ParameterLists +class TTPGatingVariablesParameters : public ParameterLists { public: - GatingVariablesParameters(); + TTPGatingVariablesParameters(); static const std::string xml_element_name_; @@ -1216,12 +1216,12 @@ class GatingVariablesParameters : public ParameterLists bool value_set = false; }; -/// @brief The InitialStatesParameters class stores parameters for the +/// @brief The TTPInitialStatesParameters class stores parameters for the /// 'Initial_states' XML element under TTP_initial_conditions. -class InitialStatesParameters : public ParameterLists +class TTPInitialStatesParameters : public ParameterLists { public: - InitialStatesParameters(); + TTPInitialStatesParameters(); static const std::string xml_element_name_; @@ -1240,12 +1240,12 @@ class InitialStatesParameters : public ParameterLists bool value_set = false; }; -/// @brief The InitialConditionsParameters class stores parameters for the +/// @brief The TTPInitialConditionsParameters class stores parameters for the /// 'TTP_initial_conditions' XML element under Domain. -class InitialConditionsParameters : public ParameterLists +class TTPInitialConditionsParameters : public ParameterLists { public: - InitialConditionsParameters(); + TTPInitialConditionsParameters(); static const std::string xml_element_name_; @@ -1253,8 +1253,8 @@ class InitialConditionsParameters : public ParameterLists void print_parameters(); void set_values(tinyxml2::XMLElement* xml_elem); - InitialStatesParameters initial_states; - GatingVariablesParameters gating_variables; + TTPInitialStatesParameters initial_states; + TTPGatingVariablesParameters gating_variables; bool value_set = false; }; @@ -1288,7 +1288,7 @@ class DomainParameters : public ParameterLists StimulusParameters stimulus; FluidViscosityParameters fluid_viscosity; SolidViscosityParameters solid_viscosity; - InitialConditionsParameters ttp_initial_conditions; + TTPInitialConditionsParameters ttp_initial_conditions; // Attributes. Parameter id; From bdad8ebf2fcedae262cae734dc46251721cfc8a7 Mon Sep 17 00:00:00 2001 From: KB Date: Wed, 1 Apr 2026 14:31:04 -0700 Subject: [PATCH 03/12] removed zonal initial conditions for ttp model --- Code/Source/solver/CepMod.h | 6 + Code/Source/solver/CepModTtp.cpp | 137 ++++++-------- Code/Source/solver/CepModTtp.h | 41 ++++- Code/Source/solver/Parameters.cpp | 172 ++++++++++++++++++ Code/Source/solver/Parameters.h | 76 ++++++++ Code/Source/solver/cep_ion.cpp | 6 +- Code/Source/solver/distribute.cpp | 29 +++ Code/Source/solver/distribute.h | 2 + Code/Source/solver/read_files.cpp | 41 +++++ .../cep/cylinder_purkinje_1d3d/solver.xml | 6 +- .../solver_GMRES_FE_epicardium_TTP.xml | 8 +- .../solver_GMRES_FE_pfib_AP.xml | 4 - tests/cases/cep/purkinje/solver.xml | 4 +- tests/cases/cep/slab_domains/solver_dat.xml | 8 +- tests/cases/cep/slab_domains/solver_vtu.xml | 6 +- tests/cases/cep/spiral_TTP_2d/README.md | 9 + tests/cases/cep/spiral_TTP_2d/SpiralWave.jpg | Bin 0 -> 464933 bytes .../cep/spiral_TTP_2d/domain-1_EPmodel.xml | 38 ++++ .../cep/spiral_TTP_2d/domain-2_EPmodel.xml | 39 ++++ .../cep/spiral_TTP_2d/domain-3_EPmodel.xml | 39 ++++ .../cep/spiral_TTP_2d/domain-4_EPmodel.xml | 38 ++++ .../spiral_TTP_2d/mesh/mesh-complete.mesh.vtu | 3 + .../spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp | 3 + .../spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp | 3 + .../spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp | 3 + .../spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp | 3 + .../mesh/mesh_with_domain_ids.vtu | 3 + .../spiral_TTP_2d/mesh/spiral_domain_info.dat | 3 + tests/cases/cep/spiral_TTP_2d/result_001.vtu | 3 + tests/cases/cep/spiral_TTP_2d/solver.xml | 93 ++++++++++ .../ttp_endocardium_parameters.xml | 34 ++++ .../ttp_epicardium_parameters.xml | 34 ++++ .../ttp_midmyocardium_parameters.xml | 34 ++++ tests/test_cep.py | 5 + 34 files changed, 820 insertions(+), 113 deletions(-) create mode 100644 tests/cases/cep/spiral_TTP_2d/README.md create mode 100644 tests/cases/cep/spiral_TTP_2d/SpiralWave.jpg create mode 100644 tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml create mode 100644 tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml create mode 100644 tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml create mode 100644 tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml create mode 100755 tests/cases/cep/spiral_TTP_2d/mesh/mesh-complete.mesh.vtu create mode 100755 tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp create mode 100755 tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp create mode 100755 tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp create mode 100755 tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp create mode 100644 tests/cases/cep/spiral_TTP_2d/mesh/mesh_with_domain_ids.vtu create mode 100644 tests/cases/cep/spiral_TTP_2d/mesh/spiral_domain_info.dat create mode 100644 tests/cases/cep/spiral_TTP_2d/result_001.vtu create mode 100644 tests/cases/cep/spiral_TTP_2d/solver.xml create mode 100644 tests/cases/cep/ttp_parameters/ttp_endocardium_parameters.xml create mode 100644 tests/cases/cep/ttp_parameters/ttp_epicardium_parameters.xml create mode 100644 tests/cases/cep/ttp_parameters/ttp_midmyocardium_parameters.xml diff --git a/Code/Source/solver/CepMod.h b/Code/Source/solver/CepMod.h index b9edf28f8..117357e81 100644 --- a/Code/Source/solver/CepMod.h +++ b/Code/Source/solver/CepMod.h @@ -177,6 +177,12 @@ class cepModelType /// @brief Interface for Tusscher-Panfilov cellular activation model CepModTtp ttp; + + /// @brief TTP initial condition state (user-specified via XML) + TenTusscherPanfilovState ttp_initial_state; + + /// @brief True if user has provided TTP initial conditions via XML + bool ttp_user_initial_state = false; }; /// @brief Cardiac electromechanics model type diff --git a/Code/Source/solver/CepModTtp.cpp b/Code/Source/solver/CepModTtp.cpp index c4a703660..ed637226b 100644 --- a/Code/Source/solver/CepModTtp.cpp +++ b/Code/Source/solver/CepModTtp.cpp @@ -6,6 +6,28 @@ #include "mat_fun.h" #include +const TenTusscherPanfilovState TenTusscherPanfilovState::default_state = { + .V = -85.23, + .K_i = 136.89, + .Na_i = 8.6040, + .Ca_i = 1.26E-4, + .Ca_ss = 3.6E-4, + .Ca_sr = 3.64, + .R_bar = 0.9073, + .x_r1 = 6.21E-3, + .x_r2 = 0.4712, + .x_s = 9.5E-3, + .m = 1.72E-3, + .h = 0.7444, + .j = 0.7045, + .d = 3.373E-5, + .f = 0.7888, + .f2 = 0.9755, + .fcass = 0.9953, + .s = 0.999998, + .r = 2.42E-8 +}; + CepModTtp::CepModTtp() { } @@ -444,95 +466,17 @@ void CepModTtp::getj(const int i, const int nX, const int nG, const Vector& X, Vector& Xg ) +void CepModTtp::init(const int nX, const int nG, Vector& X, Vector& Xg, + const TenTusscherPanfilovState* user_state) { - switch (imyo) { - - // epi - case 1: - // Initialize state variables - X(0) = -85.23; // V (units: mV) - X(1) = 136.89; // K_i (units: mM) - X(2) = 8.6040; // Na_i (units: mM) - X(3) = 1.26E-4; // Ca_i (units: mM) - X(4) = 3.6E-4; // Ca_ss (units: mM) - X(5) = 3.64; // Ca_sr (units: mM) - X(6) = 0.9073; // R' (dimensionless) - - // Initialize gating variables - Xg(0) = 6.21E-3; // x_r1 (dimensionless) - Xg(1) = 0.4712; // x_r2 (dimensionless) - Xg(2) = 9.5E-3; // x_s (dimensionless) - Xg(3) = 1.72E-3; // m (dimensionless) - Xg(4) = 0.7444; // h (dimensionless) - Xg(5) = 0.7045; // j (dimensionless) - Xg(6) = 3.373E-5; // d (dimensionless) - Xg(7) = 0.7888; // f (dimensionless) - Xg(8) = 0.9755; // f_2 (dimensionless) - Xg(9) = 0.9953; // f_cass (dimensionless) - Xg(10) = 0.999998; // s (dimensionless) - Xg(11) = 2.42E-8; // r (dimensionless) - break; - - // endo - case 2: - // Initialize state variables - X(0) = -86.709; // V (units: mV) - X(1) = 138.4; // K_i (units: mM) - X(2) = 10.355; // Na_i (units: mM) - X(3) = 1.3E-4; // Ca_i (units: mM) - X(4) = 3.6E-4; // Ca_ss (units: mM) - X(5) = 3.715; // Ca_sr (units: mM) - X(6) = 0.9068; // R' (dimensionless) - - // Initialize gating variables - Xg(0) = 4.48E-3; // x_r1 (dimensionless) - Xg(1) = 0.476; // x_r2 (dimensionless) - Xg(2) = 8.7E-3; // x_s (dimensionless) - Xg(3) = 1.55E-3; // m (dimensionless) - Xg(4) = 0.7573; // h (dimensionless) - Xg(5) = 0.7225; // j (dimensionless) - Xg(6) = 3.164E-5; // d (dimensionless) - Xg(7) = 0.8009; // f (dimensionless) - Xg(8) = 0.9778; // f_2 (dimensionless) - Xg(9) = 0.9953; // f_cass (dimensionless) - Xg(10) = 0.3212; // s (dimensionless) - Xg(11) = 2.235E-8; // r (dimensionless) - break; - - // mid-myo - case 3: - // Initialize state variables - X(0) = -85.423; // V (units: mV) - X(1) = 138.52; // K_i (units: mM) - X(2) = 10.132; // Na_i (units: mM) - X(3) = 1.53E-4; // Ca_i (units: mM) - X(4) = 4.2E-4; // Ca_ss (units: mM) - X(5) = 4.272; // Ca_sr (units: mM) - X(6) = 0.8978; // R' (dimensionless) - - // Initialize gating variables - Xg(0) = 1.65E-2; // x_r1 (dimensionless) - Xg(1) = 0.4730; // x_r2 (dimensionless) - Xg(2) = 1.74E-2; // x_s (dimensionless) - Xg(3) = 1.65E-3; // m (dimensionless) - Xg(4) = 0.7490; // h (dimensionless) - Xg(5) = 0.6788; // j (dimensionless) - Xg(6) = 3.288E-5; // d (dimensionless) - Xg(7) = 0.7026; // f (dimensionless) - Xg(8) = 0.9526; // f_2 (dimensionless) - Xg(9) = 0.9942; // f_cass (dimensionless) - Xg(10) = 0.999998; // s (dimensionless) - Xg(11) = 2.347E-8; // r (dimensionless) - break; - } - + initial_state = user_state ? *user_state : TenTusscherPanfilovState::default_state; + copyStateToVectors(X, Xg); } -void CepModTtp::init(const int imyo, const int nX, const int nG, Vector& X, Vector& Xg, +void CepModTtp::init(const int nX, const int nG, Vector& X, Vector& Xg, Vector& X0, Vector& Xg0) { - init(imyo, nX, nG, X, Xg); + init(nX, nG, X, Xg); if (X0.size() != 0) { X = X0; @@ -791,5 +735,26 @@ void CepModTtp::update_g(const int i, const double dt, const int n, const int nG Xg(11) = ri - (ri - r)*exp(-dt/tau); } - - +void CepModTtp::copyStateToVectors(Vector& X, Vector& Xg) const +{ + X(0) = initial_state.V; + X(1) = initial_state.K_i; + X(2) = initial_state.Na_i; + X(3) = initial_state.Ca_i; + X(4) = initial_state.Ca_ss; + X(5) = initial_state.Ca_sr; + X(6) = initial_state.R_bar; + + Xg(0) = initial_state.x_r1; + Xg(1) = initial_state.x_r2; + Xg(2) = initial_state.x_s; + Xg(3) = initial_state.m; + Xg(4) = initial_state.h; + Xg(5) = initial_state.j; + Xg(6) = initial_state.d; + Xg(7) = initial_state.f; + Xg(8) = initial_state.f2; + Xg(9) = initial_state.fcass; + Xg(10) = initial_state.s; + Xg(11) = initial_state.r; +} diff --git a/Code/Source/solver/CepModTtp.h b/Code/Source/solver/CepModTtp.h index 181a7b7f0..67e0f9330 100644 --- a/Code/Source/solver/CepModTtp.h +++ b/Code/Source/solver/CepModTtp.h @@ -17,10 +17,40 @@ T& make_ref(T&& x) { return x; } /// @brief This module defines data structures for ten Tusscher-Panfilov /// epicardial cellular activation model for cardiac electrophysiology /// -/// The classes defined here duplicate the data structures in the Fortran TPPMOD module defined -/// in CEPMOD_TTP.f and PARAMS_TPP.f files. +/// The classes defined here duplicate the data structures in the Fortran TPPMOD module defined +/// in CEPMOD_TTP.f and PARAMS_TPP.f files. + +/// @brief Stores all TTP state and gating variables in a single typed struct. +class TenTusscherPanfilovState { + public: + double V; + double K_i; + double Na_i; + double Ca_i; + double Ca_ss; + double Ca_sr; + double R_bar; + double x_r1; + double x_r2; + double x_s; + double m; + double h; + double j; + double d; + double f; + double f2; + double fcass; + double s; + double r; + + static const TenTusscherPanfilovState default_state; +}; + class CepModTtp { + private: + TenTusscherPanfilovState initial_state; + public: CepModTtp(); ~CepModTtp(); @@ -376,11 +406,14 @@ class CepModTtp void getj(const int i, const int nX, const int nG, const Vector& X, const Vector& Xg, Array& JAC, const double Ksac); - void init(const int imyo, const int nX, const int nG, Vector& X, Vector& Xg); + void init(const int nX, const int nG, Vector& X, Vector& Xg, + const TenTusscherPanfilovState* user_state = nullptr); - void init(const int imyo, const int nX, const int nG, Vector& X, Vector& Xg, + void init(const int nX, const int nG, Vector& X, Vector& Xg, Vector& X0, Vector& Xg0); + void copyStateToVectors(Vector& X, Vector& Xg) const; + void integ_cn2(const int imyo, const int nX, const int nG, Vector& X, Vector& Xg, const double Ts, const double dt, const double Istim, const double Ksac, Vector& IPAR, Vector& RPAR); diff --git a/Code/Source/solver/Parameters.cpp b/Code/Source/solver/Parameters.cpp index d308e89b7..afbf6a764 100644 --- a/Code/Source/solver/Parameters.cpp +++ b/Code/Source/solver/Parameters.cpp @@ -1669,6 +1669,8 @@ void DomainParameters::print_parameters() fluid_viscosity.print_parameters(); solid_viscosity.print_parameters(); + + ttp_initial_conditions.print_parameters(); } //------------ @@ -1711,6 +1713,9 @@ void DomainParameters::set_values(tinyxml2::XMLElement* domain_elem, bool from_e } else if (name == StimulusParameters::xml_element_name_) { stimulus.set_values(item); + } else if (name == InitialConditionsParameters::xml_element_name_) { + ttp_initial_conditions.set_values(item); + } else if (name == FluidViscosityParameters::xml_element_name_ || name == SolidViscosityParameters::xml_element_name_) { auto eq_type = consts::equation_name_to_type.at(equation.value()); if (eq_type == consts::EquationType::phys_fluid || eq_type == consts::EquationType::phys_CMM || eq_type == consts::EquationType::phys_stokes) { @@ -1758,6 +1763,173 @@ void DomainParameters::set_values(tinyxml2::XMLElement* domain_elem, bool from_e */ } +////////////////////////////////////////////////////////// +// InitialConditionsParameters // +////////////////////////////////////////////////////////// + +const std::string InitialConditionsParameters::xml_element_name_ = "TTP_initial_conditions"; + +InitialConditionsParameters::InitialConditionsParameters() +{ +} + +void InitialConditionsParameters::print_parameters() +{ + if (value_set) { + std::cout << std::endl; + std::cout << "TTP Initial Conditions Parameters" << std::endl; + std::cout << "---------------------------------" << std::endl; + initial_states.print_parameters(); + gating_variables.print_parameters(); + } +} + +void InitialConditionsParameters::set_values(tinyxml2::XMLElement* xml_elem) +{ + using namespace tinyxml2; + std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; + + auto item = xml_elem->FirstChildElement(); + + while (item != nullptr) { + auto name = std::string(item->Value()); + + if (name == InitialStatesParameters::xml_element_name_) { + initial_states.set_values(item); + value_set = true; + + } else if (name == GatingVariablesParameters::xml_element_name_) { + gating_variables.set_values(item); + value_set = true; + + } else { + throw std::runtime_error(error_msg + name + "'."); + } + + item = item->NextSiblingElement(); + } +} + +////////////////////////////////////////////////////////// +// InitialStatesParameters // +////////////////////////////////////////////////////////// + +const std::string InitialStatesParameters::xml_element_name_ = "Initial_states"; + +InitialStatesParameters::InitialStatesParameters() +{ + bool required = false; + + set_parameter("V", -85.23, required, V); + set_parameter("K_i", 136.89, required, K_i); + set_parameter("Na_i", 8.6040, required, Na_i); + set_parameter("Ca_i", 1.26E-4, required, Ca_i); + set_parameter("Ca_ss", 3.6E-4, required, Ca_ss); + set_parameter("Ca_sr", 3.64, required, Ca_sr); + set_parameter("R_bar", 0.9073, required, R_bar); +} + +void InitialStatesParameters::print_parameters() +{ + if (value_set) { + std::cout << " Initial States:" << std::endl; + auto params_name_value = get_parameter_list(); + for (auto& [key, value] : params_name_value) { + std::cout << " " << key << ": " << value << std::endl; + } + } +} + +void InitialStatesParameters::set_values(tinyxml2::XMLElement* xml_elem) +{ + using namespace tinyxml2; + std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; + + auto item = xml_elem->FirstChildElement(); + + while (item != nullptr) { + auto name = std::string(item->Value()); + + if (item->GetText() != nullptr) { + auto value = item->GetText(); + try { + set_parameter_value(name, value); + value_set = true; + } catch (const std::bad_function_call& exception) { + throw std::runtime_error(error_msg + name + "'."); + } + } else { + throw std::runtime_error(error_msg + name + "'."); + } + + item = item->NextSiblingElement(); + } +} + +////////////////////////////////////////////////////////// +// GatingVariablesParameters // +////////////////////////////////////////////////////////// + +const std::string GatingVariablesParameters::xml_element_name_ = "Gating_variables"; + +GatingVariablesParameters::GatingVariablesParameters() +{ + bool required = false; + + set_parameter("x_r1_rectifier", 6.21E-3, required, x_r1_rectifier); + set_parameter("x_r2_rectifier", 0.4712, required, x_r2_rectifier); + set_parameter("x_s_rectifier", 9.5E-3, required, x_s_rectifier); + + set_parameter("m_fast_Na", 1.72E-3, required, m_fast_Na); + set_parameter("h_fast_Na", 0.7444, required, h_fast_Na); + set_parameter("j_fast_Na", 0.7045, required, j_fast_Na); + + set_parameter("d_slow_in", 3.373E-5, required, d_slow_in); + set_parameter("f_slow_in", 0.7888, required, f_slow_in); + set_parameter("f2_slow_in", 0.9755, required, f2_slow_in); + set_parameter("fcass_slow_in", 0.9953, required, fcass_slow_in); + + set_parameter("s_out", 0.999998, required, s_out); + set_parameter("r_out", 2.42E-8, required, r_out); +} + +void GatingVariablesParameters::print_parameters() +{ + if (value_set) { + std::cout << " Gating Variables:" << std::endl; + auto params_name_value = get_parameter_list(); + for (auto& [key, value] : params_name_value) { + std::cout << " " << key << ": " << value << std::endl; + } + } +} + +void GatingVariablesParameters::set_values(tinyxml2::XMLElement* xml_elem) +{ + using namespace tinyxml2; + std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; + + auto item = xml_elem->FirstChildElement(); + + while (item != nullptr) { + auto name = std::string(item->Value()); + + if (item->GetText() != nullptr) { + auto value = item->GetText(); + try { + set_parameter_value(name, value); + value_set = true; + } catch (const std::bad_function_call& exception) { + throw std::runtime_error(error_msg + name + "'."); + } + } else { + throw std::runtime_error(error_msg + name + "'."); + } + + item = item->NextSiblingElement(); + } +} + ////////////////////////////////////////////////////////// // DirectionalDistributionParameters // ////////////////////////////////////////////////////////// diff --git a/Code/Source/solver/Parameters.h b/Code/Source/solver/Parameters.h index d4db1580b..54d13fde2 100644 --- a/Code/Source/solver/Parameters.h +++ b/Code/Source/solver/Parameters.h @@ -1180,6 +1180,81 @@ class FiberReinforcementStressParameters : public ParameterLists bool value_set = false; }; +/// @brief Stores parameters for the 'Gating_variables' XML element +/// under TTP_initial_conditions. +class GatingVariablesParameters : public ParameterLists +{ + public: + GatingVariablesParameters(); + + static const std::string xml_element_name_; + + bool defined() const { return value_set; }; + void print_parameters(); + void set_values(tinyxml2::XMLElement* xml_elem); + + Parameter x_r1_rectifier; + Parameter x_r2_rectifier; + Parameter x_s_rectifier; + + Parameter m_fast_Na; + Parameter h_fast_Na; + Parameter j_fast_Na; + + Parameter d_slow_in; + Parameter f_slow_in; + Parameter f2_slow_in; + Parameter fcass_slow_in; + + Parameter s_out; + Parameter r_out; + + bool value_set = false; +}; + +/// @brief Stores parameters for the 'Initial_states' XML element +/// under TTP_initial_conditions. +class InitialStatesParameters : public ParameterLists +{ + public: + InitialStatesParameters(); + + static const std::string xml_element_name_; + + bool defined() const { return value_set; }; + void print_parameters(); + void set_values(tinyxml2::XMLElement* xml_elem); + + Parameter V; + Parameter K_i; + Parameter Na_i; + Parameter Ca_i; + Parameter Ca_ss; + Parameter Ca_sr; + Parameter R_bar; + + bool value_set = false; +}; + +/// @brief Stores parameters for the 'TTP_initial_conditions' XML element +/// under Domain. +class InitialConditionsParameters : public ParameterLists +{ + public: + InitialConditionsParameters(); + + static const std::string xml_element_name_; + + bool defined() const { return value_set; }; + void print_parameters(); + void set_values(tinyxml2::XMLElement* xml_elem); + + InitialStatesParameters initial_states; + GatingVariablesParameters gating_variables; + + bool value_set = false; +}; + /// @brief The DomainParameters class stores parameters for the XML /// 'Domain' element to specify properties for solving equations. /// @@ -1209,6 +1284,7 @@ class DomainParameters : public ParameterLists StimulusParameters stimulus; FluidViscosityParameters fluid_viscosity; SolidViscosityParameters solid_viscosity; + InitialConditionsParameters ttp_initial_conditions; // Attributes. Parameter id; diff --git a/Code/Source/solver/cep_ion.cpp b/Code/Source/solver/cep_ion.cpp index 2cf78b836..4d09a7d38 100644 --- a/Code/Source/solver/cep_ion.cpp +++ b/Code/Source/solver/cep_ion.cpp @@ -131,7 +131,11 @@ void cep_init_l(cepModelType& cep, int nX, int nG, Vector& X, Vector& gmtl) { diff --git a/Code/Source/solver/distribute.h b/Code/Source/solver/distribute.h index e62c68b32..f22bd123e 100644 --- a/Code/Source/solver/distribute.h +++ b/Code/Source/solver/distribute.h @@ -28,6 +28,8 @@ void dist_fluid_visc_model(const ComMod& com_mod, const CmMod& cm_mod, const cmT void dist_solid_visc_model(const ComMod& com_mod, const CmMod& cm_mod, const cmType& cm, solidViscModelType& lVis); +void dist_ttp_initial_state(const CmMod& cm_mod, const cmType& cm, cepModelType& cep); + void part_face(Simulation* simulation, mshType& lM, faceType& lFa, faceType& gFa, Vector& gmtl); void part_msh(Simulation* simulation, int iM, mshType& lM, Vector& mtl, int nP, Vector& wgt); diff --git a/Code/Source/solver/read_files.cpp b/Code/Source/solver/read_files.cpp index b01b9a86b..2cc7bc428 100644 --- a/Code/Source/solver/read_files.cpp +++ b/Code/Source/solver/read_files.cpp @@ -1021,6 +1021,47 @@ void read_cep_domain(Simulation* simulation, EquationParameters* eq_params, Doma lDmn.cep.ttp.G_to[lDmn.cep.imyo - 1] = domain_params->G_to.value(); } + if (domain_params->ttp_initial_conditions.defined()) { + auto& ttp_ic = domain_params->ttp_initial_conditions; + + if (ttp_ic.initial_states.defined()) { + auto& s = ttp_ic.initial_states; + std::map*, double*> state_map { + {&s.V, &lDmn.cep.ttp_initial_state.V}, + {&s.K_i, &lDmn.cep.ttp_initial_state.K_i}, + {&s.Na_i, &lDmn.cep.ttp_initial_state.Na_i}, + {&s.Ca_i, &lDmn.cep.ttp_initial_state.Ca_i}, + {&s.Ca_ss, &lDmn.cep.ttp_initial_state.Ca_ss}, + {&s.Ca_sr, &lDmn.cep.ttp_initial_state.Ca_sr}, + {&s.R_bar, &lDmn.cep.ttp_initial_state.R_bar}, + }; + for (auto& [param, value] : state_map) { + if (param->defined()) { *value = param->value(); lDmn.cep.ttp_user_initial_state = true; } + } + } + + if (ttp_ic.gating_variables.defined()) { + auto& g = ttp_ic.gating_variables; + std::map*, double*> gating_map { + {&g.x_r1_rectifier, &lDmn.cep.ttp_initial_state.x_r1}, + {&g.x_r2_rectifier, &lDmn.cep.ttp_initial_state.x_r2}, + {&g.x_s_rectifier, &lDmn.cep.ttp_initial_state.x_s}, + {&g.m_fast_Na, &lDmn.cep.ttp_initial_state.m}, + {&g.h_fast_Na, &lDmn.cep.ttp_initial_state.h}, + {&g.j_fast_Na, &lDmn.cep.ttp_initial_state.j}, + {&g.d_slow_in, &lDmn.cep.ttp_initial_state.d}, + {&g.f_slow_in, &lDmn.cep.ttp_initial_state.f}, + {&g.f2_slow_in, &lDmn.cep.ttp_initial_state.f2}, + {&g.fcass_slow_in, &lDmn.cep.ttp_initial_state.fcass}, + {&g.s_out, &lDmn.cep.ttp_initial_state.s}, + {&g.r_out, &lDmn.cep.ttp_initial_state.r}, + }; + for (auto& [param, value] : gating_map) { + if (param->defined()) { *value = param->value(); lDmn.cep.ttp_user_initial_state = true; } + } + } + } + // Set stimulus parameters. // lDmn.cep.Istim.A = 0.0; diff --git a/tests/cases/cep/cylinder_purkinje_1d3d/solver.xml b/tests/cases/cep/cylinder_purkinje_1d3d/solver.xml index 35844bcb0..cef558fd5 100644 --- a/tests/cases/cep/cylinder_purkinje_1d3d/solver.xml +++ b/tests/cases/cep/cylinder_purkinje_1d3d/solver.xml @@ -61,7 +61,7 @@ TTP - myocardium + ../ttp_parameters/ttp_midmyocardium_parameters.xml 0.05 0.05 RK @@ -69,14 +69,14 @@ TTP - pfib + ../ttp_parameters/ttp_endocardium_parameters.xml 1.1 RK TTP - pfib + ../ttp_parameters/ttp_endocardium_parameters.xml 1.1 RK diff --git a/tests/cases/cep/niederer_benchmark_ECGs_quadrature/solver_GMRES_FE_epicardium_TTP.xml b/tests/cases/cep/niederer_benchmark_ECGs_quadrature/solver_GMRES_FE_epicardium_TTP.xml index 6afd15d44..09b75e5aa 100644 --- a/tests/cases/cep/niederer_benchmark_ECGs_quadrature/solver_GMRES_FE_epicardium_TTP.xml +++ b/tests/cases/cep/niederer_benchmark_ECGs_quadrature/solver_GMRES_FE_epicardium_TTP.xml @@ -76,13 +76,11 @@ 14.838 3.98E-5 0.153 - 0.392 - 0.294 0.012571 0.082715 - epicardium + ../ttp_parameters/ttp_epicardium_parameters.xml FE @@ -93,13 +91,11 @@ 14.838 3.98E-5 0.153 - 0.392 - 0.294 0.012571 0.082715 - epicardium + ../ttp_parameters/ttp_epicardium_parameters.xml -35.714 diff --git a/tests/cases/cep/niederer_benchmark_ECGs_quadrature/solver_GMRES_FE_pfib_AP.xml b/tests/cases/cep/niederer_benchmark_ECGs_quadrature/solver_GMRES_FE_pfib_AP.xml index acd86172b..f782bfcc4 100644 --- a/tests/cases/cep/niederer_benchmark_ECGs_quadrature/solver_GMRES_FE_pfib_AP.xml +++ b/tests/cases/cep/niederer_benchmark_ECGs_quadrature/solver_GMRES_FE_pfib_AP.xml @@ -76,8 +76,6 @@ 0.012571 0.082715 - pfib - FE @@ -87,8 +85,6 @@ 0.012571 0.082715 - pfib - -35.714 0.0 diff --git a/tests/cases/cep/purkinje/solver.xml b/tests/cases/cep/purkinje/solver.xml index 395aee00b..0f26e1e88 100644 --- a/tests/cases/cep/purkinje/solver.xml +++ b/tests/cases/cep/purkinje/solver.xml @@ -44,14 +44,14 @@ TTP - pfib + ../ttp_parameters/ttp_endocardium_parameters.xml 1.1 RK TTP - pfib + ../ttp_parameters/ttp_endocardium_parameters.xml 1.1 RK diff --git a/tests/cases/cep/slab_domains/solver_dat.xml b/tests/cases/cep/slab_domains/solver_dat.xml index fd626d280..8f138d899 100644 --- a/tests/cases/cep/slab_domains/solver_dat.xml +++ b/tests/cases/cep/slab_domains/solver_dat.xml @@ -50,7 +50,7 @@ 29.68 7.96e-5 0.31 - epi + ../ttp_parameters/ttp_epicardium_parameters.xml 0.033192 RK @@ -60,7 +60,7 @@ 7.42 1.99e-5 0.08 - epi + ../ttp_parameters/ttp_epicardium_parameters.xml 0.033192 RK @@ -72,8 +72,8 @@ 7.96e-5 0.31 - epi - + ../ttp_parameters/ttp_epicardium_parameters.xml + 0.033192 diff --git a/tests/cases/cep/slab_domains/solver_vtu.xml b/tests/cases/cep/slab_domains/solver_vtu.xml index e82c3e8b2..2f9c3adf0 100644 --- a/tests/cases/cep/slab_domains/solver_vtu.xml +++ b/tests/cases/cep/slab_domains/solver_vtu.xml @@ -50,7 +50,7 @@ 29.68 7.96e-5 0.31 - epi + ../ttp_parameters/ttp_epicardium_parameters.xml 0.033192 RK @@ -60,7 +60,7 @@ 7.42 1.99e-5 0.08 - epi + ../ttp_parameters/ttp_epicardium_parameters.xml 0.033192 RK @@ -72,7 +72,7 @@ 7.96e-5 0.31 - epi + ../ttp_parameters/ttp_epicardium_parameters.xml 0.033192 diff --git a/tests/cases/cep/spiral_TTP_2d/README.md b/tests/cases/cep/spiral_TTP_2d/README.md new file mode 100644 index 000000000..85c90d729 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/README.md @@ -0,0 +1,9 @@ +# Spiral Wave for TTP Model + +Another approach to spiral wave initialization is to 'rig' the simulation domain such that there are 4 sub-domains which are all initialized to different sets of ionic and gating variable states. A visualization of this simulation case is shown below + +

+ +

+ +Initial conditions for the Ten-tusscher-Panfilov (TTP) EP model need to be specified in the solver.xml to override the default variables that are hard-coded inside the solver. Each set of initial conditions parameters are defined in a seperate xml file that is included in the solver.xml via the Include_xml parameter. diff --git a/tests/cases/cep/spiral_TTP_2d/SpiralWave.jpg b/tests/cases/cep/spiral_TTP_2d/SpiralWave.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a9e4aaf887fa01b30469726239ebb3e7b5169d32 GIT binary patch literal 464933 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�t>cu(+oAqjW6M4E6Z$*F>u0SkxSgnqyIOENYHL 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 C65pNx literal 0 HcmV?d00001 diff --git a/tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml new file mode 100644 index 000000000..8d6475e82 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml @@ -0,0 +1,38 @@ + + + + 14.838 + 3.98E-5 + 0.153 + 0.392 + 0.294 + 0.1171 + + + + 18.167 + 136.897 + 8.6105 + 1.2592E-4 + 3.6181E-4 + 3.6399 + 0.9078 + + + + 6.368E-3 + 0.36774 + 9.77E-3 + 0.9338 + 0.5276 + 0.6837 + 1.9520E-2 + 0.7896 + 0.9752 + 0.9954 + 0.9941 + 4.2757E-5 + + + + \ No newline at end of file diff --git a/tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml new file mode 100644 index 000000000..967364d12 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml @@ -0,0 +1,39 @@ + + + + 14.838 + 3.98E-5 + 0.153 + 0.392 + 0.294 + + 0.1171 + + + + -85.423 + 138.52 + 10.132 + 1.53E-4 + 4.2E-4 + 4.272 + 0.8978 + + + + 1.65E-2 + 0.4730 + 1.74E-2 + 1.65E-3 + 0.7490 + 0.6788 + 3.288E-5 + 0.7026 + 0.9526 + 0.9942 + 0.999998 + 2.347E-8 + + + + \ No newline at end of file diff --git a/tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml new file mode 100644 index 000000000..56dc44223 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml @@ -0,0 +1,39 @@ + + + + 14.838 + 3.98E-5 + 0.153 + 0.392 + 0.294 + + 0.1171 + + + + -44.756 + 136.88 + 8.5907 + 3.0084E-4 + 2.5462E-3 + 3.5292 + 0.7235 + + + + 0.9739 + 0.1239 + 0.1766 + 0.6379 + 2.3557E-4 + 3.147E-5 + 9.7186E-3 + 0.1754 + 0.3475 + 0.9296 + 0.4095 + 7.857E-4 + + + + \ No newline at end of file diff --git a/tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml new file mode 100644 index 000000000..93e1309a5 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml @@ -0,0 +1,38 @@ + + + + 14.838 + 3.98E-5 + 0.153 + 0.392 + 0.294 + 0.1171 + + + + -11.612 + 136.88 + 8.5916 + 3.486E-4 + 1.312E-2 + 3.4619 + 0.6875 + + + + 9.882E-1 + 3.707E-2 + 1.7887E-1 + 9.8692E-1 + 9.184E-8 + 6.291E-8 + 0.4147 + 0.15883 + 0.3341 + 0.9036 + 7.9355E-2 + 1.0429E-2 + + + + \ No newline at end of file diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-complete.mesh.vtu b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-complete.mesh.vtu new file mode 100755 index 000000000..290a670fa --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-complete.mesh.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71c85685b19c6d3a9576d6256ad538a7764f21b1ee54a1ec1a551bd628215755 +size 10591949 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp new file mode 100755 index 000000000..06d9b3377 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1618fd5d93f5e86513bf15e827c7c7cc8c5f94a42e1d305a4628df24ce2d9f0e +size 9613 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp new file mode 100755 index 000000000..012143915 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b96544c9a265753c24fce1cb4924ebb01ab9fbe581fea161bb42934592dfad63 +size 9604 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp new file mode 100755 index 000000000..c906f072f --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6b19987a2f4cc6a50754294a129a2d62976d6729464a2ca4c3226210c5d7044 +size 10919 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp new file mode 100755 index 000000000..51f0eb485 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68aa167c5024639fac7eba97dcb0a3c82222dc41d49319d668113a1d8d0a00e5 +size 10946 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh_with_domain_ids.vtu b/tests/cases/cep/spiral_TTP_2d/mesh/mesh_with_domain_ids.vtu new file mode 100644 index 000000000..48ea86df5 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/mesh_with_domain_ids.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4b967b48af296c79bfc7de86e330c9039551c26e5b634d85701981961661fae +size 14155939 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/spiral_domain_info.dat b/tests/cases/cep/spiral_TTP_2d/mesh/spiral_domain_info.dat new file mode 100644 index 000000000..212da27ad --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/spiral_domain_info.dat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1180e719c66e452d605505ef50e11a528208ae3f8963fe01390864406cae9f2 +size 2000000 diff --git a/tests/cases/cep/spiral_TTP_2d/result_001.vtu b/tests/cases/cep/spiral_TTP_2d/result_001.vtu new file mode 100644 index 000000000..7259069b5 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/result_001.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:caaf854ab586476bffa6a0b5a6615498239ae6d63f4da787d40651c3655586f2 +size 14279770 diff --git a/tests/cases/cep/spiral_TTP_2d/solver.xml b/tests/cases/cep/spiral_TTP_2d/solver.xml new file mode 100644 index 000000000..544379431 --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/solver.xml @@ -0,0 +1,93 @@ + + + + + false + 2 + 1 + 0.1 + 0.50 + STOP_SIM + + true + result + 1 + 1 + + 1 + 0 + + 1 + 0 + 0 + + + + + mesh/mesh-complete.mesh.vtu + + + mesh/mesh-surfaces/X0.vtp + + + + mesh/mesh-surfaces/X1.vtp + + + + mesh/mesh-surfaces/Y0.vtp + + + + mesh/mesh-surfaces/Y1.vtp + + + mesh/spiral_domain_info.dat + + + + + true + 1 + 2 + 1e-6 + + + TTP + domain-1_EPmodel.xml + RK + + + + TTP + domain-2_EPmodel.xml + RK + + + + TTP + domain-3_EPmodel.xml + RK + + + + TTP + domain-4_EPmodel.xml + RK + + + + true + + + + + rcs + + 1e-6 + + + + + + diff --git a/tests/cases/cep/ttp_parameters/ttp_endocardium_parameters.xml b/tests/cases/cep/ttp_parameters/ttp_endocardium_parameters.xml new file mode 100644 index 000000000..67ccedeb1 --- /dev/null +++ b/tests/cases/cep/ttp_parameters/ttp_endocardium_parameters.xml @@ -0,0 +1,34 @@ + + + + 0.392 + 0.073 + + + + -86.709 + 138.4 + 10.355 + 1.3E-4 + 3.6E-4 + 3.715 + 0.9068 + + + + 4.48E-3 + 0.476 + 8.7E-3 + 1.55E-3 + 0.7573 + 0.7225 + 3.164E-5 + 0.8009 + 0.9778 + 0.9953 + 0.3212 + 2.235E-8 + + + + \ No newline at end of file diff --git a/tests/cases/cep/ttp_parameters/ttp_epicardium_parameters.xml b/tests/cases/cep/ttp_parameters/ttp_epicardium_parameters.xml new file mode 100644 index 000000000..0ced4ab36 --- /dev/null +++ b/tests/cases/cep/ttp_parameters/ttp_epicardium_parameters.xml @@ -0,0 +1,34 @@ + + + + 0.392 + 0.294 + + + + -85.23 + 136.89 + 8.6040 + 1.26E-4 + 3.6E-4 + 3.64 + 0.9073 + + + + 6.21E-3 + 0.4712 + 9.5E-3 + 1.72E-3 + 0.7444 + 0.7045 + 3.373E-5 + 0.7888 + 0.9755 + 0.9953 + 0.999998 + 2.42E-8 + + + + \ No newline at end of file diff --git a/tests/cases/cep/ttp_parameters/ttp_midmyocardium_parameters.xml b/tests/cases/cep/ttp_parameters/ttp_midmyocardium_parameters.xml new file mode 100644 index 000000000..eca5f63a1 --- /dev/null +++ b/tests/cases/cep/ttp_parameters/ttp_midmyocardium_parameters.xml @@ -0,0 +1,34 @@ + + + + 0.098 + 0.294 + + + + -85.423 + 138.52 + 10.132 + 1.53E-4 + 4.2E-4 + 4.272 + 0.8978 + + + + 1.65E-2 + 0.4730 + 1.74E-2 + 1.65E-3 + 0.7490 + 0.6788 + 3.288E-5 + 0.7026 + 0.9526 + 0.9942 + 0.999998 + 2.347E-8 + + + + \ No newline at end of file diff --git a/tests/test_cep.py b/tests/test_cep.py index f0e49c8f1..5e6cdccba 100644 --- a/tests/test_cep.py +++ b/tests/test_cep.py @@ -22,6 +22,11 @@ def test_spiral_BO_2d(n_proc): run_with_reference(base_folder, test_folder, fields, n_proc) +def test_spiral_TTP_2d(n_proc): + test_folder = "spiral_TTP_2d" + run_with_reference(base_folder, test_folder, fields, n_proc) + + def test_square_AP_2d(n_proc): test_folder = "square_AP_2d" run_with_reference(base_folder, test_folder, fields, n_proc) From 36baf2ae2a100fd42c1183c2c2042c4b962a7bf8 Mon Sep 17 00:00:00 2001 From: KB Date: Wed, 1 Apr 2026 15:19:38 -0700 Subject: [PATCH 04/12] removed imyo for G_Ks and G_to variables --- Code/Source/solver/CepModTtp.cpp | 35 +++++++++---------- Code/Source/solver/CepModTtp.h | 12 +++---- Code/Source/solver/distribute.cpp | 4 +-- Code/Source/solver/read_files.cpp | 17 +++------ .../cep/spiral_TTP_2d/domain-1_EPmodel.xml | 3 ++ .../cep/spiral_TTP_2d/domain-2_EPmodel.xml | 2 ++ .../cep/spiral_TTP_2d/domain-3_EPmodel.xml | 2 ++ .../cep/spiral_TTP_2d/domain-4_EPmodel.xml | 3 ++ .../ttp_endocardium_parameters.xml | 2 ++ .../ttp_epicardium_parameters.xml | 2 ++ .../ttp_midmyocardium_parameters.xml | 2 ++ 11 files changed, 46 insertions(+), 38 deletions(-) diff --git a/Code/Source/solver/CepModTtp.cpp b/Code/Source/solver/CepModTtp.cpp index ed637226b..9d3cc3458 100644 --- a/Code/Source/solver/CepModTtp.cpp +++ b/Code/Source/solver/CepModTtp.cpp @@ -68,7 +68,7 @@ void CepModTtp::actv_strs(const double c_Ca, const double dt, double& Tact, doub /// Note that is 'i' the myocardium zone id: 1, 2 or 3. /// /// Reproduces Fortran 'GETF()'. -void CepModTtp::getf(const int i, const int nX, const int nG, const Vector& X, const Vector& Xg, Vector& dX, +void CepModTtp::getf(const int nX, const int nG, const Vector& X, const Vector& Xg, Vector& dX, const double I_stim, const double K_sac, Vector& RPAR) { // Local copies of state variables @@ -108,8 +108,7 @@ void CepModTtp::getf(const int i, const int nX, const int nG, const Vector& X, const Vector& Xg, +void CepModTtp::getj(const int nX, const int nG, const Vector& X, const Vector& Xg, Array& JAC, const double Ksac) { @@ -276,8 +275,8 @@ void CepModTtp::getj(const int i, const int nX, const int nG, const Vector fn(nX); - getf(imyo, nX, nG, Xn, Xg, fn, Istim, Ksac, RPAR); + getf(nX, nG, Xn, Xg, fn, Istim, Ksac, RPAR); int k = 0; auto Xk = Xn; @@ -510,7 +509,7 @@ void CepModTtp::integ_cn2(const int imyo, const int nX, const int nG, Vector fk(nX); - getf(imyo, nX, nG, Xn, Xg, fn, Istim, Ksac, RPAR); + getf(nX, nG, Xn, Xg, fn, Istim, Ksac, RPAR); auto rK = Xk - Xn - 0.5*dt*(fk + fn); @@ -533,7 +532,7 @@ void CepModTtp::integ_cn2(const int imyo, const int nX, const int nG, Vector JAC(nX,nX); - getj(imyo, nX, nG, Xk, Xg, JAC, Ksac); + getj(nX, nG, Xk, Xg, JAC, Ksac); JAC = Im - 0.5*dt*JAC; JAC = mat_fun::mat_inv(JAC, nX); @@ -544,7 +543,7 @@ void CepModTtp::integ_cn2(const int imyo, const int nX, const int nG, Vector f(nX); // Get time derivatives (RHS) - getf(imyo, nX, nG, X, Xg, f, Istim, Ksac, RPAR); + getf(nX, nG, X, Xg, f, Istim, Ksac, RPAR); //CALL TTP_GETF(imyo, nX, nG, X, Xg, f, Istim, Ksac, RPAR) // Update gating variables @@ -577,7 +576,7 @@ void CepModTtp::integ_rk(const int imyo, const int nX, const int nG, Vector G_to = {0.294, 0.073, 0.294}; + /// Maximal I_to conductance [nS/pF] + double G_to = 0.294; /// Maximal I_Kr conductance [nS/pF] double G_Kr = 0.153; @@ -114,8 +114,8 @@ class CepModTtp // G_Kr for spiral wave breakup // double G_Kr = 0.172; // units: nS/pF - /// Maximal epicardial I_Ks conductance [nS/pF] - Vector G_Ks = {0.392, 0.392, 0.098}; + /// Maximal I_Ks conductance [nS/pF] + double G_Ks = 0.392; // G_Ks for spiral wave breakup (epi) // double G_Ks(3) = (/0.441, 0.392_RKIND, 0.098_RKIND/) @@ -400,10 +400,10 @@ class CepModTtp void actv_strn(const double c_Ca, const double I4f, const double dt, double& gf); void actv_strs(const double c_Ca, const double dt, double& Tact, double& epsX); - void getf(const int i, const int nX, const int nG, const Vector& X, const Vector& Xg, + void getf(const int nX, const int nG, const Vector& X, const Vector& Xg, Vector& dX, const double I_stim, const double K_sac, Vector& RPAR); - void getj(const int i, const int nX, const int nG, const Vector& X, const Vector& Xg, + void getj(const int nX, const int nG, const Vector& X, const Vector& Xg, Array& JAC, const double Ksac); void init(const int nX, const int nG, Vector& X, Vector& Xg, diff --git a/Code/Source/solver/distribute.cpp b/Code/Source/solver/distribute.cpp index 05606ce93..0fae31bf8 100644 --- a/Code/Source/solver/distribute.cpp +++ b/Code/Source/solver/distribute.cpp @@ -1562,8 +1562,8 @@ void dist_eq(ComMod& com_mod, const CmMod& cm_mod, const cmType& cm, const std:: cm.bcast(cm_mod, &cep.ttp.G_Na); cm.bcast(cm_mod, &cep.ttp.G_CaL); cm.bcast(cm_mod, &cep.ttp.G_Kr); - cm.bcast(cm_mod, cep.ttp.G_Ks); - cm.bcast(cm_mod, cep.ttp.G_to); + cm.bcast(cm_mod, &cep.ttp.G_Ks); + cm.bcast(cm_mod, &cep.ttp.G_to); dist_ttp_initial_state(cm_mod, cm, cep); diff --git a/Code/Source/solver/read_files.cpp b/Code/Source/solver/read_files.cpp index 2cc7bc428..ad652b1fd 100644 --- a/Code/Source/solver/read_files.cpp +++ b/Code/Source/solver/read_files.cpp @@ -1000,11 +1000,12 @@ void read_cep_domain(Simulation* simulation, EquationParameters* eq_params, Doma } // Set Ttp parameters. - // Scalar params std::map*,double*> simple_ttp_params{ - {&domain_params->G_Na, &lDmn.cep.ttp.G_Na}, - {&domain_params->G_Kr, &lDmn.cep.ttp.G_Kr}, - {&domain_params->G_CaL, &lDmn.cep.ttp.G_CaL} + {&domain_params->G_Na, &lDmn.cep.ttp.G_Na}, + {&domain_params->G_Kr, &lDmn.cep.ttp.G_Kr}, + {&domain_params->G_CaL, &lDmn.cep.ttp.G_CaL}, + {&domain_params->G_Ks, &lDmn.cep.ttp.G_Ks}, + {&domain_params->G_to, &lDmn.cep.ttp.G_to}, }; for (auto& [param, value] : simple_ttp_params) { @@ -1013,14 +1014,6 @@ void read_cep_domain(Simulation* simulation, EquationParameters* eq_params, Doma } } - // Array params - if (domain_params->G_Ks.defined()) { - lDmn.cep.ttp.G_Ks[lDmn.cep.imyo - 1] = domain_params->G_Ks.value(); - } - if (domain_params->G_to.defined()) { - lDmn.cep.ttp.G_to[lDmn.cep.imyo - 1] = domain_params->G_to.value(); - } - if (domain_params->ttp_initial_conditions.defined()) { auto& ttp_ic = domain_params->ttp_initial_conditions; diff --git a/tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml index 8d6475e82..22992d227 100644 --- a/tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml +++ b/tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml @@ -6,8 +6,11 @@ 0.153 0.392 0.294 + 0.1171 + epicardium + 18.167 diff --git a/tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml index 967364d12..0bb31166f 100644 --- a/tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml +++ b/tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml @@ -9,6 +9,8 @@ 0.1171 + epicardium + -85.423 diff --git a/tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml index 56dc44223..c2af654ce 100644 --- a/tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml +++ b/tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml @@ -9,6 +9,8 @@ 0.1171 + epicardium + -44.756 diff --git a/tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml index 93e1309a5..84874fb9e 100644 --- a/tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml +++ b/tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml @@ -6,8 +6,11 @@ 0.153 0.392 0.294 + 0.1171 + epicardium + -11.612 diff --git a/tests/cases/cep/ttp_parameters/ttp_endocardium_parameters.xml b/tests/cases/cep/ttp_parameters/ttp_endocardium_parameters.xml index 67ccedeb1..d5bdc655b 100644 --- a/tests/cases/cep/ttp_parameters/ttp_endocardium_parameters.xml +++ b/tests/cases/cep/ttp_parameters/ttp_endocardium_parameters.xml @@ -4,6 +4,8 @@ 0.392 0.073 + endocardium + -86.709 diff --git a/tests/cases/cep/ttp_parameters/ttp_epicardium_parameters.xml b/tests/cases/cep/ttp_parameters/ttp_epicardium_parameters.xml index 0ced4ab36..d7fd60a12 100644 --- a/tests/cases/cep/ttp_parameters/ttp_epicardium_parameters.xml +++ b/tests/cases/cep/ttp_parameters/ttp_epicardium_parameters.xml @@ -4,6 +4,8 @@ 0.392 0.294 + epicardium + -85.23 diff --git a/tests/cases/cep/ttp_parameters/ttp_midmyocardium_parameters.xml b/tests/cases/cep/ttp_parameters/ttp_midmyocardium_parameters.xml index eca5f63a1..ffd6655ff 100644 --- a/tests/cases/cep/ttp_parameters/ttp_midmyocardium_parameters.xml +++ b/tests/cases/cep/ttp_parameters/ttp_midmyocardium_parameters.xml @@ -4,6 +4,8 @@ 0.098 0.294 + myocardium + -85.423 From 7baf341f6ce26461a36a51b2c38e237b4b6baedb Mon Sep 17 00:00:00 2001 From: KB Date: Wed, 1 Apr 2026 15:33:05 -0700 Subject: [PATCH 05/12] Renamed variables in parameters.cpp --- Code/Source/solver/Parameters.cpp | 36 +++++++++++++++---------------- Code/Source/solver/Parameters.h | 18 ++++++++-------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/Code/Source/solver/Parameters.cpp b/Code/Source/solver/Parameters.cpp index afbf6a764..e69b6ebf6 100644 --- a/Code/Source/solver/Parameters.cpp +++ b/Code/Source/solver/Parameters.cpp @@ -1713,7 +1713,7 @@ void DomainParameters::set_values(tinyxml2::XMLElement* domain_elem, bool from_e } else if (name == StimulusParameters::xml_element_name_) { stimulus.set_values(item); - } else if (name == InitialConditionsParameters::xml_element_name_) { + } else if (name == TTPInitialConditionsParameters::xml_element_name_) { ttp_initial_conditions.set_values(item); } else if (name == FluidViscosityParameters::xml_element_name_ || name == SolidViscosityParameters::xml_element_name_) { @@ -1764,16 +1764,16 @@ void DomainParameters::set_values(tinyxml2::XMLElement* domain_elem, bool from_e } ////////////////////////////////////////////////////////// -// InitialConditionsParameters // +// TTPInitialConditionsParameters // ////////////////////////////////////////////////////////// -const std::string InitialConditionsParameters::xml_element_name_ = "TTP_initial_conditions"; +const std::string TTPInitialConditionsParameters::xml_element_name_ = "TTP_initial_conditions"; -InitialConditionsParameters::InitialConditionsParameters() +TTPInitialConditionsParameters::TTPInitialConditionsParameters() { } -void InitialConditionsParameters::print_parameters() +void TTPInitialConditionsParameters::print_parameters() { if (value_set) { std::cout << std::endl; @@ -1784,7 +1784,7 @@ void InitialConditionsParameters::print_parameters() } } -void InitialConditionsParameters::set_values(tinyxml2::XMLElement* xml_elem) +void TTPInitialConditionsParameters::set_values(tinyxml2::XMLElement* xml_elem) { using namespace tinyxml2; std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; @@ -1794,11 +1794,11 @@ void InitialConditionsParameters::set_values(tinyxml2::XMLElement* xml_elem) while (item != nullptr) { auto name = std::string(item->Value()); - if (name == InitialStatesParameters::xml_element_name_) { + if (name == TTPInitialStatesParameters::xml_element_name_) { initial_states.set_values(item); value_set = true; - } else if (name == GatingVariablesParameters::xml_element_name_) { + } else if (name == TTPGatingVariablesParameters::xml_element_name_) { gating_variables.set_values(item); value_set = true; @@ -1811,12 +1811,12 @@ void InitialConditionsParameters::set_values(tinyxml2::XMLElement* xml_elem) } ////////////////////////////////////////////////////////// -// InitialStatesParameters // +// TTPInitialStatesParameters // ////////////////////////////////////////////////////////// -const std::string InitialStatesParameters::xml_element_name_ = "Initial_states"; +const std::string TTPInitialStatesParameters::xml_element_name_ = "Initial_states"; -InitialStatesParameters::InitialStatesParameters() +TTPInitialStatesParameters::TTPInitialStatesParameters() { bool required = false; @@ -1829,7 +1829,7 @@ InitialStatesParameters::InitialStatesParameters() set_parameter("R_bar", 0.9073, required, R_bar); } -void InitialStatesParameters::print_parameters() +void TTPInitialStatesParameters::print_parameters() { if (value_set) { std::cout << " Initial States:" << std::endl; @@ -1840,7 +1840,7 @@ void InitialStatesParameters::print_parameters() } } -void InitialStatesParameters::set_values(tinyxml2::XMLElement* xml_elem) +void TTPInitialStatesParameters::set_values(tinyxml2::XMLElement* xml_elem) { using namespace tinyxml2; std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; @@ -1867,12 +1867,12 @@ void InitialStatesParameters::set_values(tinyxml2::XMLElement* xml_elem) } ////////////////////////////////////////////////////////// -// GatingVariablesParameters // +// TTPGatingVariablesParameters // ////////////////////////////////////////////////////////// -const std::string GatingVariablesParameters::xml_element_name_ = "Gating_variables"; +const std::string TTPGatingVariablesParameters::xml_element_name_ = "Gating_variables"; -GatingVariablesParameters::GatingVariablesParameters() +TTPGatingVariablesParameters::TTPGatingVariablesParameters() { bool required = false; @@ -1893,7 +1893,7 @@ GatingVariablesParameters::GatingVariablesParameters() set_parameter("r_out", 2.42E-8, required, r_out); } -void GatingVariablesParameters::print_parameters() +void TTPGatingVariablesParameters::print_parameters() { if (value_set) { std::cout << " Gating Variables:" << std::endl; @@ -1904,7 +1904,7 @@ void GatingVariablesParameters::print_parameters() } } -void GatingVariablesParameters::set_values(tinyxml2::XMLElement* xml_elem) +void TTPGatingVariablesParameters::set_values(tinyxml2::XMLElement* xml_elem) { using namespace tinyxml2; std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; diff --git a/Code/Source/solver/Parameters.h b/Code/Source/solver/Parameters.h index 54d13fde2..45ba95dcb 100644 --- a/Code/Source/solver/Parameters.h +++ b/Code/Source/solver/Parameters.h @@ -1182,10 +1182,10 @@ class FiberReinforcementStressParameters : public ParameterLists /// @brief Stores parameters for the 'Gating_variables' XML element /// under TTP_initial_conditions. -class GatingVariablesParameters : public ParameterLists +class TTPGatingVariablesParameters : public ParameterLists { public: - GatingVariablesParameters(); + TTPGatingVariablesParameters(); static const std::string xml_element_name_; @@ -1214,10 +1214,10 @@ class GatingVariablesParameters : public ParameterLists /// @brief Stores parameters for the 'Initial_states' XML element /// under TTP_initial_conditions. -class InitialStatesParameters : public ParameterLists +class TTPInitialStatesParameters : public ParameterLists { public: - InitialStatesParameters(); + TTPInitialStatesParameters(); static const std::string xml_element_name_; @@ -1238,10 +1238,10 @@ class InitialStatesParameters : public ParameterLists /// @brief Stores parameters for the 'TTP_initial_conditions' XML element /// under Domain. -class InitialConditionsParameters : public ParameterLists +class TTPInitialConditionsParameters : public ParameterLists { public: - InitialConditionsParameters(); + TTPInitialConditionsParameters(); static const std::string xml_element_name_; @@ -1249,8 +1249,8 @@ class InitialConditionsParameters : public ParameterLists void print_parameters(); void set_values(tinyxml2::XMLElement* xml_elem); - InitialStatesParameters initial_states; - GatingVariablesParameters gating_variables; + TTPInitialStatesParameters initial_states; + TTPGatingVariablesParameters gating_variables; bool value_set = false; }; @@ -1284,7 +1284,7 @@ class DomainParameters : public ParameterLists StimulusParameters stimulus; FluidViscosityParameters fluid_viscosity; SolidViscosityParameters solid_viscosity; - InitialConditionsParameters ttp_initial_conditions; + TTPInitialConditionsParameters ttp_initial_conditions; // Attributes. Parameter id; From 3fff38526a676525eba8fe12298caffcee566bd6 Mon Sep 17 00:00:00 2001 From: KB Date: Thu, 2 Apr 2026 14:17:03 -0700 Subject: [PATCH 06/12] minor changes after merge --- Code/Source/solver/CepModTtp.cpp | 79 ------------- Code/Source/solver/CepModTtp.h | 4 - Code/Source/solver/Parameters.cpp | 178 ------------------------------ Code/Source/solver/cep_ion.cpp | 6 +- Code/Source/solver/distribute.cpp | 28 ----- 5 files changed, 1 insertion(+), 294 deletions(-) diff --git a/Code/Source/solver/CepModTtp.cpp b/Code/Source/solver/CepModTtp.cpp index cde96a7ac..fbdc7959a 100644 --- a/Code/Source/solver/CepModTtp.cpp +++ b/Code/Source/solver/CepModTtp.cpp @@ -5,7 +5,6 @@ #include "mat_fun.h" #include -#include const TenTusscherPanfilovState TenTusscherPanfilovState::default_state = { .V = -85.23, @@ -37,71 +36,6 @@ CepModTtp::~CepModTtp() { } -namespace TenTusscherPanfilovDefaults { - - const TenTusscherPanfilovState epicardium_state = { - .V = -85.23, - .K_i = 136.89, - .Na_i = 8.6040, - .Ca_i = 1.26E-4, - .Ca_ss = 3.6E-4, - .Ca_sr = 3.64, - .R_bar = 0.9073, - .x_r1 = 6.21E-3, - .x_r2 = 0.4712, - .x_s = 9.5E-3, - .m = 1.72E-3, - .h = 0.7444, - .j = 0.7045, - .d = 3.373E-5, - .f = 0.7888, - .f2 = 0.9755, - .fcass = 0.9953, - .s = 0.999998, - .r = 2.42E-8}; - - const TenTusscherPanfilovState endocardium_state = { - .V = -86.709, - .K_i = 138.4, - .Na_i = 10.355, - .Ca_i = 1.3E-4, - .Ca_ss = 3.6E-4, - .Ca_sr = 3.715, - .R_bar = 0.9068, - .x_r1 = 4.48E-3, - .x_r2 = 0.476, - .x_s = 8.7E-3, - .m = 1.55E-3, - .h = 0.7573, - .j = 0.7225, - .d = 3.164E-5, - .f = 0.8009, - .f2 = 0.9778, - .fcass = 0.9953, - .s = 0.3212, - .r = 2.235E-8}; - - const TenTusscherPanfilovState midmyocardium_state = { - .V = -85.423, - .K_i = 138.52, - .Na_i = 10.132, - .Ca_i = 1.53E-4, - .Ca_ss = 4.2E-4, - .Ca_sr = 4.272, - .R_bar = 0.8978, - .x_r1 = 1.65E-2, - .x_r2 = 0.4730, - .x_s = 1.74E-2, - .m = 1.65E-3, - .h = 0.7490, - .j = 0.6788, - .d = 3.288E-5, - .f = 0.7026, - .f2 = 0.9526, - .fcass = 0.9942, - .s = 0.999998, - .r = 2.347E-8}; -} /// @brief Compute macroscopic fiber strain based on sacromere force-length relationship and calcium concentration void CepModTtp::actv_strn(const double c_Ca, const double I4f, const double dt, double& gf) @@ -539,19 +473,6 @@ void CepModTtp::init(const int nX, const int nG, Vector& X, Vector& X, Vector& Xg, - Vector& X0, Vector& Xg0) -{ - init(nX, nG, X, Xg); - - if (X0.size() != 0) { - X = X0; - } - - if (Xg0.size() != 0) { - Xg = Xg0; - } -} /// @brief Time integration performed using Crank-Nicholson method void CepModTtp::integ_cn2(const int imyo, const int nX, const int nG, Vector& Xn, Vector& Xg, diff --git a/Code/Source/solver/CepModTtp.h b/Code/Source/solver/CepModTtp.h index 36957796e..00bb72908 100644 --- a/Code/Source/solver/CepModTtp.h +++ b/Code/Source/solver/CepModTtp.h @@ -412,10 +412,6 @@ class CepModTtp void init(const int nX, const int nG, Vector& X, Vector& Xg, const TenTusscherPanfilovState* user_state = nullptr); - void init(const int nX, const int nG, Vector& X, Vector& Xg, - Vector& X0, Vector& Xg0); - - void copyStateToVectors(Vector& X, Vector& Xg) const; void integ_cn2(const int imyo, const int nX, const int nG, Vector& X, Vector& Xg, const double Ts, const double dt, const double Istim, const double Ksac, diff --git a/Code/Source/solver/Parameters.cpp b/Code/Source/solver/Parameters.cpp index 30267e811..661a76add 100644 --- a/Code/Source/solver/Parameters.cpp +++ b/Code/Source/solver/Parameters.cpp @@ -3311,181 +3311,3 @@ void LinearSolverParameters::set_values(tinyxml2::XMLElement* xml_elem) } } -/////////////////////////////////////////////////////////// -// TTPInitialConditionsParameters // -////////////////////////////////////////////////////////// - -// Process parameters for the 'TTP_initial_conditions' XML element. - -/// @brief Define the XML element name for initial conditions parameters. -const std::string TTPInitialConditionsParameters::xml_element_name_ = "TTP_initial_conditions"; - -TTPInitialConditionsParameters::TTPInitialConditionsParameters() -{ - // No parameters to set in constructor - all are in sub-elements -} - -void TTPInitialConditionsParameters::print_parameters() -{ - if (value_set) { - std::cout << std::endl; - std::cout << "Initial Conditions Parameters" << std::endl; - std::cout << "-----------------------------" << std::endl; - initial_states.print_parameters(); - gating_variables.print_parameters(); - } -} - -void TTPInitialConditionsParameters::set_values(tinyxml2::XMLElement* xml_elem) -{ - using namespace tinyxml2; - std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; - - auto item = xml_elem->FirstChildElement(); - - while (item != nullptr) { - auto name = std::string(item->Value()); - - if (name == TTPInitialStatesParameters::xml_element_name_) { - initial_states.set_values(item); - value_set = true; - - } else if (name == TTPGatingVariablesParameters::xml_element_name_) { - gating_variables.set_values(item); - value_set = true; - - } else { - throw std::runtime_error(error_msg + name + "'."); - } - - item = item->NextSiblingElement(); - } -} - -////////////////////////////////////////////////////////// -// TTPInitialStatesParameters // -////////////////////////////////////////////////////////// - -/// @brief Define the XML element name for initial states parameters (Initial_states). -const std::string TTPInitialStatesParameters::xml_element_name_ = "Initial_states"; - -TTPInitialStatesParameters::TTPInitialStatesParameters() -{ - bool required = false; - - set_parameter("V", -85.23, !required, V); - set_parameter("K_i", 136.89, !required, K_i); - set_parameter("Na_i", 8.6040, !required, Na_i); - set_parameter("Ca_i", 1.26E-4, !required, Ca_i); - set_parameter("Ca_ss", 3.6E-4, !required, Ca_ss); - set_parameter("Ca_sr", 3.64, !required, Ca_sr); - set_parameter("R_bar", 0.9073, !required, R_bar); -} - -void TTPInitialStatesParameters::print_parameters() -{ - if (value_set) { - std::cout << " Initial States:" << std::endl; - auto params_name_value = get_parameter_list(); - for (auto& [ key, value ] : params_name_value) { - std::cout << " " << key << ": " << value << std::endl; - } - } -} - -void TTPInitialStatesParameters::set_values(tinyxml2::XMLElement* xml_elem) -{ - using namespace tinyxml2; - std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; - - auto item = xml_elem->FirstChildElement(); - - while (item != nullptr) { - auto name = std::string(item->Value()); - - if (item->GetText() != nullptr) { - auto value = item->GetText(); - try { - set_parameter_value(name, value); - value_set = true; - } catch (const std::bad_function_call& exception) { - throw std::runtime_error(error_msg + name + "'."); - } - - } else { - throw std::runtime_error(error_msg + name + "'."); - } - - item = item->NextSiblingElement(); - } -} - -////////////////////////////////////////////////////////// -// TTPGatingVariablesParameters // -////////////////////////////////////////////////////////// - -/// @brief Define the XML element name for gating variables parameters. -const std::string TTPGatingVariablesParameters::xml_element_name_ = "Gating_variables"; - -TTPGatingVariablesParameters::TTPGatingVariablesParameters() -{ - bool required = false; - - // Rectifier current gating variables - set_parameter("x_r1_rectifier", 6.21E-3, !required, x_r1_rectifier); - set_parameter("x_r2_rectifier", 0.4712, !required, x_r2_rectifier); - set_parameter("x_s_rectifier", 9.5E-3, !required, x_s_rectifier); - - // Fast sodium current gating variables - set_parameter("m_fast_Na", 1.72E-3, !required, m_fast_Na); - set_parameter("h_fast_Na", 0.7444, !required, h_fast_Na); - set_parameter("j_fast_Na", 0.7045, !required, j_fast_Na); - - // Slow inward current gating variables - set_parameter("d_slow_in", 3.373E-5, !required, d_slow_in); - set_parameter("f_slow_in", 0.7888, !required, f_slow_in); - set_parameter("f2_slow_in", 0.9755, !required, f2_slow_in); - set_parameter("fcass_slow_in", 0.9953, !required, fcass_slow_in); - - // Transient outward current gating variables - set_parameter("s_out", 0.999998, !required, s_out); - set_parameter("r_out", 2.42E-8, !required, r_out); -} - -void TTPGatingVariablesParameters::print_parameters() -{ - if (value_set) { - std::cout << " Gating Variables:" << std::endl; - auto params_name_value = get_parameter_list(); - for (auto& [ key, value ] : params_name_value) { - std::cout << " " << key << ": " << value << std::endl; - } - } -} - -void TTPGatingVariablesParameters::set_values(tinyxml2::XMLElement* xml_elem) -{ - using namespace tinyxml2; - std::string error_msg = "Unknown " + xml_element_name_ + " XML element '"; - - auto item = xml_elem->FirstChildElement(); - - while (item != nullptr) { - auto name = std::string(item->Value()); - - if (item->GetText() != nullptr) { - auto value = item->GetText(); - try { - set_parameter_value(name, value); - value_set = true; - } catch (const std::bad_function_call& exception) { - throw std::runtime_error(error_msg + name + "'."); - } - - } else { - throw std::runtime_error(error_msg + name + "'."); - } - - item = item->NextSiblingElement(); - } -} \ No newline at end of file diff --git a/Code/Source/solver/cep_ion.cpp b/Code/Source/solver/cep_ion.cpp index 129a830fe..99cb091d5 100644 --- a/Code/Source/solver/cep_ion.cpp +++ b/Code/Source/solver/cep_ion.cpp @@ -149,11 +149,7 @@ void cep_init_l(cepModelType& cep, int nX, int nG, Vector& X, Vector Date: Thu, 2 Apr 2026 15:29:10 -0700 Subject: [PATCH 07/12] removed warning message --- Code/Source/solver/cep_ion.cpp | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/Code/Source/solver/cep_ion.cpp b/Code/Source/solver/cep_ion.cpp index 99cb091d5..51777e5fc 100644 --- a/Code/Source/solver/cep_ion.cpp +++ b/Code/Source/solver/cep_ion.cpp @@ -6,7 +6,6 @@ #include "all_fun.h" #include "post.h" #include "utils.h" -#include #include namespace cep_ion { @@ -42,25 +41,8 @@ void cep_init(Simulation* simulation) continue; } - // Warn once on rank 0 if any TTP domain uses default initial conditions. - bool any_ttp_defaults = false; - for (int iDmn = 0; iDmn < eq.nDmn; iDmn++) { - if (eq.dmn[iDmn].cep.cepType == ElectrophysiologyModelType::TTP - && !eq.dmn[iDmn].cep.ttp_user_initial_state) { - any_ttp_defaults = true; - break; - } - } - static bool ttp_default_ic_warning_printed = false; - if (any_ttp_defaults && !ttp_default_ic_warning_printed && cm.idcm() == 0) { - std::cout << "[WARNING] Default initial conditions are being used for the TTP ionic " - "model (zone-based: epi/endo/mid-myo). To set custom initial conditions, " - "specify in the domain XML." << std::endl; - ttp_default_ic_warning_printed = true; - } - if (com_mod.dmnId.size() != 0) { - Vector sA(tnNo); + Vector sA(tnNo); Array sF(nXion,tnNo); for (int a = 0; a < tnNo; a++) { @@ -662,5 +644,4 @@ void cep_integ_l(CepMod& cep_mod, cepModelType& cep, int nX, int nG, Vector Date: Mon, 6 Apr 2026 09:07:03 -0700 Subject: [PATCH 08/12] Added and removed comments where required --- Code/Source/solver/CepModTtp.cpp | 2 ++ Code/Source/solver/CepModTtp.h | 12 ------------ 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/Code/Source/solver/CepModTtp.cpp b/Code/Source/solver/CepModTtp.cpp index fbdc7959a..964a6e5ae 100644 --- a/Code/Source/solver/CepModTtp.cpp +++ b/Code/Source/solver/CepModTtp.cpp @@ -6,6 +6,8 @@ #include "mat_fun.h" #include +// Parameters discussed in https://doi.org/10.1152/ajpheart.00109.2006 +// Default parameters are for epicardium state (source: https://models.cellml.org/e/80d) const TenTusscherPanfilovState TenTusscherPanfilovState::default_state = { .V = -85.23, .K_i = 136.89, diff --git a/Code/Source/solver/CepModTtp.h b/Code/Source/solver/CepModTtp.h index 00bb72908..d5fa4f328 100644 --- a/Code/Source/solver/CepModTtp.h +++ b/Code/Source/solver/CepModTtp.h @@ -111,15 +111,9 @@ class CepModTtp /// Maximal I_Kr conductance [nS/pF] double G_Kr = 0.153; -// G_Kr for spiral wave breakup -// double G_Kr = 0.172; // units: nS/pF - /// Maximal I_Ks conductance [nS/pF] double G_Ks = 0.392; -// G_Ks for spiral wave breakup (epi) -// double G_Ks(3) = (/0.441, 0.392_RKIND, 0.098_RKIND/) - /// Relative I_Ks permeability to Na [-] double p_KNa = 3.E-2; @@ -156,15 +150,9 @@ class CepModTtp /// Maximal I_pK conductance [nS/pF] double G_pK = 1.46E-2; -// G_pK for spiral wave breakup -// double G_pK = 2.19E-3; // units: nS/pF - /// Maximal I_pCa conductance [pA/pF] double G_pCa = 0.1238; -// G_pCa for spiral wave breakup -// double G_pCa = 0.8666; // units: pA/pF - /// Half-saturation constant of I_pCa [mM] double K_pCa = 5.E-4; From 345bced31627ecac0ad866a9e75e0e27c417fcd8 Mon Sep 17 00:00:00 2001 From: KB Date: Tue, 7 Apr 2026 09:19:53 -0700 Subject: [PATCH 09/12] Replace test case with coarser mesh --- Code/Source/solver/CepModTtp.cpp | 6 ++-- Code/Source/solver/CepModTtp.h | 4 +-- .../cep/spiral_TTP_2d/domain-1_EPmodel.xml | 2 +- .../cep/spiral_TTP_2d/domain-2_EPmodel.xml | 2 +- .../cep/spiral_TTP_2d/domain-3_EPmodel.xml | 2 +- .../cep/spiral_TTP_2d/domain-4_EPmodel.xml | 2 +- .../cep/spiral_TTP_2d/mesh/domain_ids.dat | 3 ++ .../spiral_TTP_2d/mesh/mesh-complete.mesh.vtu | 4 +-- .../spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp | 3 -- .../spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp | 3 -- .../spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp | 3 -- .../spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp | 3 -- .../mesh/mesh_with_domain_ids.vtu | 3 -- .../spiral_TTP_2d/mesh/spiral_domain_info.dat | 3 -- tests/cases/cep/spiral_TTP_2d/result_001.vtu | 4 +-- tests/cases/cep/spiral_TTP_2d/solver.xml | 32 ++++++------------- 16 files changed, 26 insertions(+), 53 deletions(-) create mode 100644 tests/cases/cep/spiral_TTP_2d/mesh/domain_ids.dat mode change 100755 => 100644 tests/cases/cep/spiral_TTP_2d/mesh/mesh-complete.mesh.vtu delete mode 100755 tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp delete mode 100755 tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp delete mode 100755 tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp delete mode 100755 tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp delete mode 100644 tests/cases/cep/spiral_TTP_2d/mesh/mesh_with_domain_ids.vtu delete mode 100644 tests/cases/cep/spiral_TTP_2d/mesh/spiral_domain_info.dat diff --git a/Code/Source/solver/CepModTtp.cpp b/Code/Source/solver/CepModTtp.cpp index 964a6e5ae..3a9607653 100644 --- a/Code/Source/solver/CepModTtp.cpp +++ b/Code/Source/solver/CepModTtp.cpp @@ -593,7 +593,7 @@ void CepModTtp::integ_rk(const int imyo, const int nX, const int nG, Vector& X, Vector& Xg) +void CepModTtp::update_g(const int imyo, const double dt, const int n, const int nG, const Vector& X, Vector& Xg) { V = X(0); Ca_ss = X(4); @@ -707,10 +707,10 @@ void CepModTtp::update_g(const int i, const double dt, const int n, const int nG Xg(9) = fcassi - (fcassi - fcass)*exp(-dt/tau); // s: inactivation gate for I_to - if (i == 1 || i == 3) { + if (imyo == 1 || imyo == 3) { si = 1.0/(1.0 + exp((20.0+V)/5.0)); tau = 85.0*exp(-pow(V+45.0,2.0) / 320.0) + 5.0/(1.0+exp((V-20.0)/5.0)) + 3.0; - } else if (i == 2) { + } else if (imyo == 2) { si = 1.0/(1.0 + exp((28.0+V)/5.0)); tau = 1000.0*exp(-pow(V+67.0,2.0) /1000.0) + 8.0; //tau = 1000.0*exp(-((V+67.0)**2.0) /1000.0) + 8.0; diff --git a/Code/Source/solver/CepModTtp.h b/Code/Source/solver/CepModTtp.h index d5fa4f328..16518ce50 100644 --- a/Code/Source/solver/CepModTtp.h +++ b/Code/Source/solver/CepModTtp.h @@ -59,7 +59,7 @@ class CepModTtp //-------------------------------------------------------------------- // // Constants for TenTusscher-Panfilov Ventricular Myocyte Model. -// +// Default values are for the epicardium state (source: https://models.cellml.org/e/80d) //-------------------------------------------------------------------- // Default model parameters @@ -411,7 +411,7 @@ class CepModTtp void integ_rk(const int imyo, const int nX, const int nG, Vector& X, Vector& Xg, const double Ts, const double dt, const double Istim, const double Ksac, Vector& RPAR); - void update_g(const int i, const double dt, const int n, const int nG, const Vector& X, + void update_g(const int imyo, const double dt, const int n, const int nG, const Vector& X, Vector& Xg); void copyStateToVectors(Vector& X, Vector& Xg) const; diff --git a/tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml index 22992d227..db64441ae 100644 --- a/tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml +++ b/tests/cases/cep/spiral_TTP_2d/domain-1_EPmodel.xml @@ -7,7 +7,7 @@ 0.392 0.294 - 0.1171 + 0.1 epicardium diff --git a/tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml index 0bb31166f..9ca684de3 100644 --- a/tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml +++ b/tests/cases/cep/spiral_TTP_2d/domain-2_EPmodel.xml @@ -7,7 +7,7 @@ 0.392 0.294 - 0.1171 + 0.1 epicardium diff --git a/tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml index c2af654ce..49b0a8626 100644 --- a/tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml +++ b/tests/cases/cep/spiral_TTP_2d/domain-3_EPmodel.xml @@ -7,7 +7,7 @@ 0.392 0.294 - 0.1171 + 0.1 epicardium diff --git a/tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml b/tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml index 84874fb9e..04f1ebd4b 100644 --- a/tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml +++ b/tests/cases/cep/spiral_TTP_2d/domain-4_EPmodel.xml @@ -7,7 +7,7 @@ 0.392 0.294 - 0.1171 + 0.1 epicardium diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/domain_ids.dat b/tests/cases/cep/spiral_TTP_2d/mesh/domain_ids.dat new file mode 100644 index 000000000..bf695480e --- /dev/null +++ b/tests/cases/cep/spiral_TTP_2d/mesh/domain_ids.dat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7965457ae9a682c6f2599a997818ec50a7f4bbf72518b9a559f43a9b59da3c3 +size 20000 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-complete.mesh.vtu b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-complete.mesh.vtu old mode 100755 new mode 100644 index 290a670fa..1f398a0e2 --- a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-complete.mesh.vtu +++ b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-complete.mesh.vtu @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:71c85685b19c6d3a9576d6256ad538a7764f21b1ee54a1ec1a551bd628215755 -size 10591949 +oid sha256:e6d068e474c097975a236937fc5d3f94713456c78466c859ab726b9e95c5751a +size 164951 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp deleted file mode 100755 index 06d9b3377..000000000 --- a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X0.vtp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1618fd5d93f5e86513bf15e827c7c7cc8c5f94a42e1d305a4628df24ce2d9f0e -size 9613 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp deleted file mode 100755 index 012143915..000000000 --- a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/X1.vtp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b96544c9a265753c24fce1cb4924ebb01ab9fbe581fea161bb42934592dfad63 -size 9604 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp deleted file mode 100755 index c906f072f..000000000 --- a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y0.vtp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a6b19987a2f4cc6a50754294a129a2d62976d6729464a2ca4c3226210c5d7044 -size 10919 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp b/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp deleted file mode 100755 index 51f0eb485..000000000 --- a/tests/cases/cep/spiral_TTP_2d/mesh/mesh-surfaces/Y1.vtp +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:68aa167c5024639fac7eba97dcb0a3c82222dc41d49319d668113a1d8d0a00e5 -size 10946 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/mesh_with_domain_ids.vtu b/tests/cases/cep/spiral_TTP_2d/mesh/mesh_with_domain_ids.vtu deleted file mode 100644 index 48ea86df5..000000000 --- a/tests/cases/cep/spiral_TTP_2d/mesh/mesh_with_domain_ids.vtu +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c4b967b48af296c79bfc7de86e330c9039551c26e5b634d85701981961661fae -size 14155939 diff --git a/tests/cases/cep/spiral_TTP_2d/mesh/spiral_domain_info.dat b/tests/cases/cep/spiral_TTP_2d/mesh/spiral_domain_info.dat deleted file mode 100644 index 212da27ad..000000000 --- a/tests/cases/cep/spiral_TTP_2d/mesh/spiral_domain_info.dat +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f1180e719c66e452d605505ef50e11a528208ae3f8963fe01390864406cae9f2 -size 2000000 diff --git a/tests/cases/cep/spiral_TTP_2d/result_001.vtu b/tests/cases/cep/spiral_TTP_2d/result_001.vtu index 7259069b5..973f62f0b 100644 --- a/tests/cases/cep/spiral_TTP_2d/result_001.vtu +++ b/tests/cases/cep/spiral_TTP_2d/result_001.vtu @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:caaf854ab586476bffa6a0b5a6615498239ae6d63f4da787d40651c3655586f2 -size 14279770 +oid sha256:1942cb07e1b03acafd22868527a4d44a8dcb363f97587a2cc559eb40b4dba3d5 +size 147975 diff --git a/tests/cases/cep/spiral_TTP_2d/solver.xml b/tests/cases/cep/spiral_TTP_2d/solver.xml index 544379431..37dd6ba12 100644 --- a/tests/cases/cep/spiral_TTP_2d/solver.xml +++ b/tests/cases/cep/spiral_TTP_2d/solver.xml @@ -24,33 +24,19 @@ - mesh/mesh-complete.mesh.vtu + mesh/mesh-complete.mesh.vtu - - mesh/mesh-surfaces/X0.vtp - + mesh/domain_ids.dat - - mesh/mesh-surfaces/X1.vtp - - - - mesh/mesh-surfaces/Y0.vtp - - - - mesh/mesh-surfaces/Y1.vtp - - - mesh/spiral_domain_info.dat + 100 true 1 - 2 - 1e-6 + 3 + 1e-11 TTP @@ -80,11 +66,13 @@ true - + - rcs + fsils - 1e-6 + 500 + 1e-12 + 50 From 486937a44b3c20b98011c34cd6a25e1c3105ba5c Mon Sep 17 00:00:00 2001 From: KB Date: Tue, 7 Apr 2026 17:14:42 -0700 Subject: [PATCH 10/12] moved distribution of ttp cep variables to CepModTtp method --- Code/Source/solver/CepModTtp.cpp | 44 ++++++++++++++++++++++++++++--- Code/Source/solver/CepModTtp.h | 10 ++++++- Code/Source/solver/distribute.cpp | 37 +++----------------------- Code/Source/solver/distribute.h | 2 -- 4 files changed, 52 insertions(+), 41 deletions(-) diff --git a/Code/Source/solver/CepModTtp.cpp b/Code/Source/solver/CepModTtp.cpp index 3a9607653..91906b42b 100644 --- a/Code/Source/solver/CepModTtp.cpp +++ b/Code/Source/solver/CepModTtp.cpp @@ -3,6 +3,7 @@ #include "CepModTtp.h" +#include "CmMod.h" #include "mat_fun.h" #include @@ -68,8 +69,6 @@ void CepModTtp::actv_strs(const double c_Ca, const double dt, double& Tact, doub /// @brief Compute currents and time derivatives of state variables /// -/// Note that is 'i' the myocardium zone id: 1, 2 or 3. -/// /// Reproduces Fortran 'GETF()'. void CepModTtp::getf(const int nX, const int nG, const Vector& X, const Vector& Xg, Vector& dX, const double I_stim, const double K_sac, Vector& RPAR) @@ -468,11 +467,48 @@ void CepModTtp::getj(const int nX, const int nG, const Vector& X, const JAC(6,6) = -(k2*Ca_ss + k4); } +void CepModTtp::distribute_conductance(const CmMod& cm_mod, const cmType& cm) +{ + cm.bcast(cm_mod, &G_Na); + cm.bcast(cm_mod, &G_CaL); + cm.bcast(cm_mod, &G_Kr); + cm.bcast(cm_mod, &G_Ks); + cm.bcast(cm_mod, &G_to); +} + +void CepModTtp::distribute_initial_state(const CmMod& cm_mod, const cmType& cm, + bool& user_initial_state, TenTusscherPanfilovState& s) +{ + cm.bcast(cm_mod, &user_initial_state); + + if (user_initial_state) { + cm.bcast(cm_mod, &s.V); + cm.bcast(cm_mod, &s.K_i); + cm.bcast(cm_mod, &s.Na_i); + cm.bcast(cm_mod, &s.Ca_i); + cm.bcast(cm_mod, &s.Ca_ss); + cm.bcast(cm_mod, &s.Ca_sr); + cm.bcast(cm_mod, &s.R_bar); + cm.bcast(cm_mod, &s.x_r1); + cm.bcast(cm_mod, &s.x_r2); + cm.bcast(cm_mod, &s.x_s); + cm.bcast(cm_mod, &s.m); + cm.bcast(cm_mod, &s.h); + cm.bcast(cm_mod, &s.j); + cm.bcast(cm_mod, &s.d); + cm.bcast(cm_mod, &s.f); + cm.bcast(cm_mod, &s.f2); + cm.bcast(cm_mod, &s.fcass); + cm.bcast(cm_mod, &s.s); + cm.bcast(cm_mod, &s.r); + } +} + void CepModTtp::init(const int nX, const int nG, Vector& X, Vector& Xg, const TenTusscherPanfilovState* user_state) { initial_state = user_state ? *user_state : TenTusscherPanfilovState::default_state; - copyStateToVectors(X, Xg); + copy_state_to_vectors(X, Xg); } @@ -724,7 +760,7 @@ void CepModTtp::update_g(const int imyo, const double dt, const int n, const int Xg(11) = ri - (ri - r)*exp(-dt/tau); } -void CepModTtp::copyStateToVectors(Vector& X, Vector& Xg) const +void CepModTtp::copy_state_to_vectors(Vector& X, Vector& Xg) const { X(0) = initial_state.V; X(1) = initial_state.K_i; diff --git a/Code/Source/solver/CepModTtp.h b/Code/Source/solver/CepModTtp.h index 16518ce50..5998519e6 100644 --- a/Code/Source/solver/CepModTtp.h +++ b/Code/Source/solver/CepModTtp.h @@ -8,6 +8,9 @@ #include "Vector.h" #include +class CmMod; +class cmType; + #include #include @@ -414,7 +417,12 @@ class CepModTtp void update_g(const int imyo, const double dt, const int n, const int nG, const Vector& X, Vector& Xg); - void copyStateToVectors(Vector& X, Vector& Xg) const; + void copy_state_to_vectors(Vector& X, Vector& Xg) const; + + void distribute_conductance(const CmMod& cm_mod, const cmType& cm); + + void distribute_initial_state(const CmMod& cm_mod, const cmType& cm, + bool& user_initial_state, TenTusscherPanfilovState& state); }; diff --git a/Code/Source/solver/distribute.cpp b/Code/Source/solver/distribute.cpp index 0fae31bf8..84a4fd0cf 100644 --- a/Code/Source/solver/distribute.cpp +++ b/Code/Source/solver/distribute.cpp @@ -6,6 +6,7 @@ #include "distribute.h" #include "all_fun.h" +#include "CepModTtp.h" #include "ComMod.h" #include "consts.h" #include "nn.h" @@ -1559,13 +1560,8 @@ void dist_eq(ComMod& com_mod, const CmMod& cm_mod, const cmType& cm, const std:: } // Broadcast domain-specific model parameters - cm.bcast(cm_mod, &cep.ttp.G_Na); - cm.bcast(cm_mod, &cep.ttp.G_CaL); - cm.bcast(cm_mod, &cep.ttp.G_Kr); - cm.bcast(cm_mod, &cep.ttp.G_Ks); - cm.bcast(cm_mod, &cep.ttp.G_to); - - dist_ttp_initial_state(cm_mod, cm, cep); + cep.ttp.distribute_conductance(cm_mod, cm); + cep.ttp.distribute_initial_state(cm_mod, cm, cep.ttp_user_initial_state, cep.ttp_initial_state); cm.bcast(cm_mod, cep.bo.tau_si); cm.bcast(cm_mod, cep.bo.tau_fi); @@ -1781,33 +1777,6 @@ void dist_solid_visc_model(const ComMod& com_mod, const CmMod& cm_mod, const cmT cm.bcast(cm_mod, &lVis.mu); } -void dist_ttp_initial_state(const CmMod& cm_mod, const cmType& cm, cepModelType& cep) -{ - cm.bcast(cm_mod, &cep.ttp_user_initial_state); - - if (cep.ttp_user_initial_state) { - auto& s = cep.ttp_initial_state; - cm.bcast(cm_mod, &s.V); - cm.bcast(cm_mod, &s.K_i); - cm.bcast(cm_mod, &s.Na_i); - cm.bcast(cm_mod, &s.Ca_i); - cm.bcast(cm_mod, &s.Ca_ss); - cm.bcast(cm_mod, &s.Ca_sr); - cm.bcast(cm_mod, &s.R_bar); - cm.bcast(cm_mod, &s.x_r1); - cm.bcast(cm_mod, &s.x_r2); - cm.bcast(cm_mod, &s.x_s); - cm.bcast(cm_mod, &s.m); - cm.bcast(cm_mod, &s.h); - cm.bcast(cm_mod, &s.j); - cm.bcast(cm_mod, &s.d); - cm.bcast(cm_mod, &s.f); - cm.bcast(cm_mod, &s.f2); - cm.bcast(cm_mod, &s.fcass); - cm.bcast(cm_mod, &s.s); - cm.bcast(cm_mod, &s.r); - } -} void part_face(Simulation* simulation, mshType& lM, faceType& lFa, faceType& gFa, Vector& gmtl) { diff --git a/Code/Source/solver/distribute.h b/Code/Source/solver/distribute.h index f22bd123e..e62c68b32 100644 --- a/Code/Source/solver/distribute.h +++ b/Code/Source/solver/distribute.h @@ -28,8 +28,6 @@ void dist_fluid_visc_model(const ComMod& com_mod, const CmMod& cm_mod, const cmT void dist_solid_visc_model(const ComMod& com_mod, const CmMod& cm_mod, const cmType& cm, solidViscModelType& lVis); -void dist_ttp_initial_state(const CmMod& cm_mod, const cmType& cm, cepModelType& cep); - void part_face(Simulation* simulation, mshType& lM, faceType& lFa, faceType& gFa, Vector& gmtl); void part_msh(Simulation* simulation, int iM, mshType& lM, Vector& mtl, int nP, Vector& wgt); From 9544ed5a0dfe7b653ea524996b0dd75a6d38e6eb Mon Sep 17 00:00:00 2001 From: KB Date: Wed, 8 Apr 2026 09:54:29 -0700 Subject: [PATCH 11/12] fixed error handling --- Code/Source/solver/Parameters.cpp | 9 +- Code/Source/solver/read_files.cpp | 123 ++++++++---------------- tests/cases/cep/cable_TTP_1d/solver.xml | 2 + 3 files changed, 47 insertions(+), 87 deletions(-) diff --git a/Code/Source/solver/Parameters.cpp b/Code/Source/solver/Parameters.cpp index 661a76add..24d6a285a 100644 --- a/Code/Source/solver/Parameters.cpp +++ b/Code/Source/solver/Parameters.cpp @@ -1672,7 +1672,6 @@ void DomainParameters::print_parameters() solid_viscosity.print_parameters(); - ttp_initial_conditions.print_parameters(); } //------------ @@ -1820,7 +1819,7 @@ const std::string TTPInitialStatesParameters::xml_element_name_ = "Initial_state TTPInitialStatesParameters::TTPInitialStatesParameters() { - bool required = false; + bool required = true; set_parameter("V", -85.23, required, V); set_parameter("K_i", 136.89, required, K_i); @@ -1866,6 +1865,8 @@ void TTPInitialStatesParameters::set_values(tinyxml2::XMLElement* xml_elem) item = item->NextSiblingElement(); } + + check_required(); } ////////////////////////////////////////////////////////// @@ -1876,7 +1877,7 @@ const std::string TTPGatingVariablesParameters::xml_element_name_ = "Gating_vari TTPGatingVariablesParameters::TTPGatingVariablesParameters() { - bool required = false; + bool required = true; set_parameter("x_r1_rectifier", 6.21E-3, required, x_r1_rectifier); set_parameter("x_r2_rectifier", 0.4712, required, x_r2_rectifier); @@ -1930,6 +1931,8 @@ void TTPGatingVariablesParameters::set_values(tinyxml2::XMLElement* xml_elem) item = item->NextSiblingElement(); } + + check_required(); } ////////////////////////////////////////////////////////// diff --git a/Code/Source/solver/read_files.cpp b/Code/Source/solver/read_files.cpp index ee9abd764..f7182eb86 100644 --- a/Code/Source/solver/read_files.cpp +++ b/Code/Source/solver/read_files.cpp @@ -1014,94 +1014,49 @@ void read_cep_domain(Simulation* simulation, EquationParameters* eq_params, Doma } } - if (domain_params->ttp_initial_conditions.defined()) { - auto& ttp_ic = domain_params->ttp_initial_conditions; - - if (ttp_ic.initial_states.defined()) { - auto& s = ttp_ic.initial_states; - std::map*, double*> state_map { - {&s.V, &lDmn.cep.ttp_initial_state.V}, - {&s.K_i, &lDmn.cep.ttp_initial_state.K_i}, - {&s.Na_i, &lDmn.cep.ttp_initial_state.Na_i}, - {&s.Ca_i, &lDmn.cep.ttp_initial_state.Ca_i}, - {&s.Ca_ss, &lDmn.cep.ttp_initial_state.Ca_ss}, - {&s.Ca_sr, &lDmn.cep.ttp_initial_state.Ca_sr}, - {&s.R_bar, &lDmn.cep.ttp_initial_state.R_bar}, - }; - for (auto& [param, value] : state_map) { - if (param->defined()) { *value = param->value(); lDmn.cep.ttp_user_initial_state = true; } - } - } - - if (ttp_ic.gating_variables.defined()) { - auto& g = ttp_ic.gating_variables; - std::map*, double*> gating_map { - {&g.x_r1_rectifier, &lDmn.cep.ttp_initial_state.x_r1}, - {&g.x_r2_rectifier, &lDmn.cep.ttp_initial_state.x_r2}, - {&g.x_s_rectifier, &lDmn.cep.ttp_initial_state.x_s}, - {&g.m_fast_Na, &lDmn.cep.ttp_initial_state.m}, - {&g.h_fast_Na, &lDmn.cep.ttp_initial_state.h}, - {&g.j_fast_Na, &lDmn.cep.ttp_initial_state.j}, - {&g.d_slow_in, &lDmn.cep.ttp_initial_state.d}, - {&g.f_slow_in, &lDmn.cep.ttp_initial_state.f}, - {&g.f2_slow_in, &lDmn.cep.ttp_initial_state.f2}, - {&g.fcass_slow_in, &lDmn.cep.ttp_initial_state.fcass}, - {&g.s_out, &lDmn.cep.ttp_initial_state.s}, - {&g.r_out, &lDmn.cep.ttp_initial_state.r}, - }; - for (auto& [param, value] : gating_map) { - if (param->defined()) { *value = param->value(); lDmn.cep.ttp_user_initial_state = true; } - } + if (model_type == ElectrophysiologyModelType::TTP) { + if (!domain_params->ttp_initial_conditions.defined()) { + throw std::runtime_error("TTP model requires an 'Initial_condition' XML block."); } - } - if (domain_params->ttp_initial_conditions.defined()) { auto& ttp_ic = domain_params->ttp_initial_conditions; - if (ttp_ic.initial_states.defined()) { - auto& s = ttp_ic.initial_states; - std::map*, double*> initial_states_params { - {&s.V, &lDmn.cep.ttp_initial_state.V}, - {&s.K_i, &lDmn.cep.ttp_initial_state.K_i}, - {&s.Na_i, &lDmn.cep.ttp_initial_state.Na_i}, - {&s.Ca_i, &lDmn.cep.ttp_initial_state.Ca_i}, - {&s.Ca_ss, &lDmn.cep.ttp_initial_state.Ca_ss}, - {&s.Ca_sr, &lDmn.cep.ttp_initial_state.Ca_sr}, - {&s.R_bar, &lDmn.cep.ttp_initial_state.R_bar}, - }; - bool any_set = false; - for (auto& [param, value] : initial_states_params) { - if (param->defined()) { *value = param->value(); any_set = true; } - } - lDmn.cep.ttp_user_initial_state = any_set; - } - - if (ttp_ic.gating_variables.defined()) { - auto& g = ttp_ic.gating_variables; - std::map*, double*> gating_variables_params { - // Rectifier current gating variables - {&g.x_r1_rectifier, &lDmn.cep.ttp_initial_state.x_r1}, - {&g.x_r2_rectifier, &lDmn.cep.ttp_initial_state.x_r2}, - {&g.x_s_rectifier, &lDmn.cep.ttp_initial_state.x_s}, - // Fast sodium current gating variables - {&g.m_fast_Na, &lDmn.cep.ttp_initial_state.m}, - {&g.h_fast_Na, &lDmn.cep.ttp_initial_state.h}, - {&g.j_fast_Na, &lDmn.cep.ttp_initial_state.j}, - // Slow inward current gating variables - {&g.d_slow_in, &lDmn.cep.ttp_initial_state.d}, - {&g.f_slow_in, &lDmn.cep.ttp_initial_state.f}, - {&g.f2_slow_in, &lDmn.cep.ttp_initial_state.f2}, - {&g.fcass_slow_in, &lDmn.cep.ttp_initial_state.fcass}, - // Transient outward current gating variables - {&g.s_out, &lDmn.cep.ttp_initial_state.s}, - {&g.r_out, &lDmn.cep.ttp_initial_state.r}, - }; - bool any_set = false; - for (auto& [param, value] : gating_variables_params) { - if (param->defined()) { *value = param->value(); any_set = true; } - } - if (any_set) lDmn.cep.ttp_user_initial_state = true; - } + if (!ttp_ic.initial_states.defined()) { + throw std::runtime_error("TTP initial conditions require an 'Initial_states' XML block."); + } + + auto& s = ttp_ic.initial_states; + lDmn.cep.ttp_initial_state.V = s.V.value(); + lDmn.cep.ttp_initial_state.K_i = s.K_i.value(); + lDmn.cep.ttp_initial_state.Na_i = s.Na_i.value(); + lDmn.cep.ttp_initial_state.Ca_i = s.Ca_i.value(); + lDmn.cep.ttp_initial_state.Ca_ss = s.Ca_ss.value(); + lDmn.cep.ttp_initial_state.Ca_sr = s.Ca_sr.value(); + lDmn.cep.ttp_initial_state.R_bar = s.R_bar.value(); + + if (!ttp_ic.gating_variables.defined()) { + throw std::runtime_error("TTP initial conditions require a 'Gating_variables' XML block."); + } + + auto& g = ttp_ic.gating_variables; + // Rectifier current gating variables + lDmn.cep.ttp_initial_state.x_r1 = g.x_r1_rectifier.value(); + lDmn.cep.ttp_initial_state.x_r2 = g.x_r2_rectifier.value(); + lDmn.cep.ttp_initial_state.x_s = g.x_s_rectifier.value(); + // Fast sodium current gating variables + lDmn.cep.ttp_initial_state.m = g.m_fast_Na.value(); + lDmn.cep.ttp_initial_state.h = g.h_fast_Na.value(); + lDmn.cep.ttp_initial_state.j = g.j_fast_Na.value(); + // Slow inward current gating variables + lDmn.cep.ttp_initial_state.d = g.d_slow_in.value(); + lDmn.cep.ttp_initial_state.f = g.f_slow_in.value(); + lDmn.cep.ttp_initial_state.f2 = g.f2_slow_in.value(); + lDmn.cep.ttp_initial_state.fcass = g.fcass_slow_in.value(); + // Transient outward current gating variables + lDmn.cep.ttp_initial_state.s = g.s_out.value(); + lDmn.cep.ttp_initial_state.r = g.r_out.value(); + + lDmn.cep.ttp_user_initial_state = true; } // Set stimulus parameters. diff --git a/tests/cases/cep/cable_TTP_1d/solver.xml b/tests/cases/cep/cable_TTP_1d/solver.xml index 9441f5035..bacef4b3b 100644 --- a/tests/cases/cep/cable_TTP_1d/solver.xml +++ b/tests/cases/cep/cable_TTP_1d/solver.xml @@ -36,12 +36,14 @@ TTP + ../ttp_parameters/ttp_epicardium_parameters.xml 0.15432 RK TTP + ../ttp_parameters/ttp_epicardium_parameters.xml 0.15432 RK From 74e35a7dca31d05a597f94c9a7253828f7b1c44a Mon Sep 17 00:00:00 2001 From: KB Date: Wed, 8 Apr 2026 10:03:50 -0700 Subject: [PATCH 12/12] Update to README --- tests/cases/cep/spiral_TTP_2d/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/cases/cep/spiral_TTP_2d/README.md b/tests/cases/cep/spiral_TTP_2d/README.md index 85c90d729..08231c6c4 100644 --- a/tests/cases/cep/spiral_TTP_2d/README.md +++ b/tests/cases/cep/spiral_TTP_2d/README.md @@ -6,4 +6,4 @@ Another approach to spiral wave initialization is to 'rig' the simulation domain

-Initial conditions for the Ten-tusscher-Panfilov (TTP) EP model need to be specified in the solver.xml to override the default variables that are hard-coded inside the solver. Each set of initial conditions parameters are defined in a seperate xml file that is included in the solver.xml via the Include_xml parameter. +Each set of initial conditions parameters is defined in a seperate xml file that is included in the solver.xml via the `` parameter.