9#ifndef SVZERODSOLVER_MODEL_ACTIVESTRESS_HPP_
10#define SVZERODSOLVER_MODEL_ACTIVESTRESS_HPP_
81 const std::vector<std::pair<std::string, InputParameter>>& props);
116 const std::vector<int>& global_eqn_ids,
117 const std::vector<int>& global_var_ids) {
119 (void)global_eqn_ids;
120 (void)global_var_ids;
133 const std::vector<int>& global_eqn_ids,
134 const std::vector<int>& global_var_ids,
135 double activation_signal) {
137 (void)global_eqn_ids;
138 (void)global_var_ids;
139 (void)activation_signal;
155 SparseSystem& system,
const std::vector<int>& global_eqn_ids,
156 const std::vector<int>& global_var_ids,
157 const Eigen::Matrix<double, Eigen::Dynamic, 1>& y,
158 const Eigen::Matrix<double, Eigen::Dynamic, 1>& dy,
double radius0,
159 double activation_signal) = 0;
178 static std::unique_ptr<ActiveStress>
create(
const std::string& type_str);
195 StrainIndependentActiveStress()
207 const std::vector<int>& global_eqn_ids,
208 const std::vector<int>& global_var_ids)
override;
211 const std::vector<int>& global_var_ids,
212 double activation_signal)
override;
215 const std::vector<int>& global_eqn_ids,
216 const std::vector<int>& global_var_ids,
217 const Eigen::Matrix<double, Eigen::Dynamic, 1>& y,
218 const Eigen::Matrix<double, Eigen::Dynamic, 1>& dy,
219 double radius0,
double activation_signal)
override;
223 double act_plus_ = 0.0;
262 StrainDependentActiveStress()
276 return {
"e_c",
"tau_c",
"k_c",
"omega"};
285 const std::vector<int>& global_eqn_ids,
286 const std::vector<int>& global_var_ids)
override;
289 const std::vector<int>& global_var_ids,
290 double activation_signal)
override;
293 const std::vector<int>& global_eqn_ids,
294 const std::vector<int>& global_var_ids,
295 const Eigen::Matrix<double, Eigen::Dynamic, 1>& y,
296 const Eigen::Matrix<double, Eigen::Dynamic, 1>& dy,
297 double radius0,
double activation_signal)
override;
325 void update_active_stress_values(
double e_c);
329 double dn_0_de_c_ = 0.0;
330 double dm_0_de_c_ = 0.0;
331 double u_plus_ = 0.0;
332 double u_minus_ = 0.0;
Activation function classes for cardiac chamber models.
ActivationSignalType
Type of signal an ActivationFunction produces.
Definition ActivationFunction.h:27
@ normalized
f(t) in [0, 1], used by most activation functions
Definition ActivationFunction.h:28
@ rate
Definition ActivationFunction.h:29
model::Parameter source file
Common base for chamber sub-components configured from input parameters.
SparseSystem source file.
static constexpr int TAU_VAR
Definition ActiveStress.h:59
virtual int num_extra_equations() const =0
Number of equations this model owns beyond ChamberSphere's fixed 6 core equations....
static constexpr int VELO_VAR
Definition ActiveStress.h:51
virtual ActivationSignalType required_signal_type() const =0
Type of activation signal this active stress model needs.
virtual void update_constant(SparseSystem &system, const std::vector< int > &global_eqn_ids, const std::vector< int > &global_var_ids)
Constant (time- and solution-independent) contributions.
Definition ActiveStress.h:115
virtual int num_extra_vars() const
Number of internal variables this model owns beyond ChamberSphere's fixed 5 (radius,...
Definition ActiveStress.h:89
static std::unique_ptr< ActiveStress > create(const std::string &type_str)
Factory: create an active stress model from a type string.
Definition ActiveStress.cpp:14
static constexpr int NUM_CORE_VARS
Definition ActiveStress.h:65
virtual void update_time(SparseSystem &system, const std::vector< int > &global_eqn_ids, const std::vector< int > &global_var_ids, double activation_signal)
Time-dependent contributions.
Definition ActiveStress.h:132
ActiveStress(const std::vector< std::pair< std::string, InputParameter > > &props)
Construct an ActiveStress model.
Definition ActiveStress.cpp:10
virtual void update_solution(SparseSystem &system, const std::vector< int > &global_eqn_ids, const std::vector< int > &global_var_ids, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &y, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &dy, double radius0, double activation_signal)=0
Solution-dependent contributions.
static constexpr int STRESS_VAR
Definition ActiveStress.h:55
static constexpr int RADIUS_VAR
Radius position within ChamberSphere's own global_var_ids array.
Definition ActiveStress.h:49
virtual std::list< std::string > extra_var_names() const
Names of this model's extra internal variables, in registration order (appended immediately after "vo...
Definition ActiveStress.h:97
static constexpr int VOLUME_VAR
Volume position within ChamberSphere's own global_var_ids array.
Definition ActiveStress.h:63
static constexpr int NUM_CORE_EQNS
Definition ActiveStress.h:69
ParameterHolder(const std::vector< std::pair< std::string, InputParameter > > &props)
Construct a ParameterHolder.
Definition ParameterHolder.cpp:5
Sparse system.
Definition SparseSystem.h:30
void update_time(SparseSystem &system, const std::vector< int > &global_eqn_ids, const std::vector< int > &global_var_ids, double activation_signal) override
Time-dependent contributions.
Definition ActiveStress.cpp:97
void update_solution(SparseSystem &system, const std::vector< int > &global_eqn_ids, const std::vector< int > &global_var_ids, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &y, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &dy, double radius0, double activation_signal) override
Solution-dependent contributions.
Definition ActiveStress.cpp:128
ActivationSignalType required_signal_type() const override
Type of activation signal this active stress model needs.
Definition ActiveStress.h:280
std::list< std::string > extra_var_names() const override
Names of this model's extra internal variables, in registration order (appended immediately after "vo...
Definition ActiveStress.h:275
int num_extra_vars() const override
Number of internal variables this model owns beyond ChamberSphere's fixed 5 (radius,...
Definition ActiveStress.h:274
void update_constant(SparseSystem &system, const std::vector< int > &global_eqn_ids, const std::vector< int > &global_var_ids) override
Constant (time- and solution-independent) contributions.
Definition ActiveStress.cpp:72
int num_extra_equations() const override
Number of equations this model owns beyond ChamberSphere's fixed 6 core equations....
Definition ActiveStress.h:278
ActivationSignalType required_signal_type() const override
Type of activation signal this active stress model needs.
Definition ActiveStress.h:202
int num_extra_equations() const override
Number of equations this model owns beyond ChamberSphere's fixed 6 core equations....
Definition ActiveStress.h:200
void update_time(SparseSystem &system, const std::vector< int > &global_eqn_ids, const std::vector< int > &global_var_ids, double activation_signal) override
Time-dependent contributions.
Definition ActiveStress.cpp:37
void update_solution(SparseSystem &system, const std::vector< int > &global_eqn_ids, const std::vector< int > &global_var_ids, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &y, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &dy, double radius0, double activation_signal) override
Solution-dependent contributions.
Definition ActiveStress.cpp:52
void update_constant(SparseSystem &system, const std::vector< int > &global_eqn_ids, const std::vector< int > &global_var_ids) override
Constant (time- and solution-independent) contributions.
Definition ActiveStress.cpp:31