|
svMultiPhysics
|
Nash-Panfilov active stress model. More...
#include <ActiveStressNashPanfilov.h>
Classes | |
| class | Parameters |
| Model parameters class. More... | |
Public Member Functions | |
| ActiveStressNashPanfilov () | |
| Constructor. | |
| virtual std::unique_ptr< ActiveStressModelParameters > | get_parameters () const override |
| Construct an instance of model parameters. | |
Public Member Functions inherited from ActiveStressODE | |
| ActiveStressODE (const unsigned int n_states, const bool needs_fiber_stretch, const bool needs_fiber_stretch_rate) | |
| Constructor. | |
Public Member Functions inherited from ActiveStress | |
| ActiveStress (const unsigned int n_states_, const bool needs_fiber_stretch, const bool needs_fiber_stretch_rate) | |
| Constructor. | |
| virtual | ~ActiveStress ()=default |
| Virtual destructor. | |
| void | read_parameters (const ActiveStressParameters ¶ms) |
| Read model parameters from a parameter object. | |
| void | distribute_parameters (const CmMod &cm_mod, const cmType &cm) |
| Distribute model parameters to all parallel processes. | |
| double | get_tension_fibers (const int idx) const |
| Get the tension along fibers \(\eta_f \Tact\) at a given point. | |
| double | get_tension_sheets (const int idx) const |
| Get the tension along sheets \(\eta_s \Tact\) at a given point. | |
| double | get_tension_sheet_normals (const int idx) const |
| Get the tension along sheet normals \(\eta_n \Tact\) at a given point. | |
| virtual void | init (const unsigned int tnNo) |
| Initialize the model. | |
| virtual void | advance_time_step (const double t, const double dt, const Vector< double > &calcium, const Vector< double > &fiber_stretch, const Vector< double > &fiber_stretch_rate) |
| Advance in time. | |
| bool | needs_fiber_stretch () const |
| Whether this model uses the fiber stretch passed to advance_time_step. This flag can be used to determine whether fiber stretch computation can be skipped for efficiency. | |
| bool | needs_fiber_stretch_rate () const |
| Whether this model uses the fiber stretch rate passed to advance_time_step. This flag can be used to determine whether fiber stretch rate computation can be skipped for efficiency. | |
Static Public Attributes | |
| static const std::string | label = "NashPanfilov" |
| Model label. | |
Protected Member Functions | |
| virtual void | read_model_specific_parameters (const ActiveStressModelParameters ¶ms) override |
| Read model parameters from a parameter object. | |
| virtual void | distribute_model_specific_parameters (const CmMod &cm_mod, const cmType &cm) override |
| Distribute model parameters to all parallel processes. | |
| virtual void | init_local (Vector< double > &state) const override |
| Initialize the state vector for a single node. | |
| virtual Vector< double > | getf (const double t, const Vector< double > &state, const double calcium, const double fiber_stretch, const double fiber_stretch_rate) const override |
| Compute the rate of change in the state variables. | |
| virtual double | compute_active_tension_local (const Vector< double > &state, const double fiber_stretch) const override |
| Compute the active tension for a single node. | |
Protected Member Functions inherited from ActiveStressODE | |
| virtual void | advance_time_step_local (const double t, const double dt, const double calcium, const double fiber_stretch, const double fiber_stretch_rate, Vector< double > &state) const override |
| Advance in time for a single node. | |
Protected Attributes | |
Model parameters. | |
| double | epsilon_0 |
| double | epsilon_i |
| double | xi_T |
| double | calcium_rest |
| double | calcium_crit |
| double | eta_T |
Protected Attributes inherited from ActiveStressODE | |
| ODESolver | ode_solver |
| ODE solver. | |
Protected Attributes inherited from ActiveStress | |
| bool | needs_fiber_stretch_ |
| Backing store for needs_fiber_stretch. | |
| bool | needs_fiber_stretch_rate_ |
| Backing store for needs_fiber_stretch_rate. | |
| double | time |
| Current time. Updated whenever calling advance_time_step. | |
| Array< double > | states |
| State variables for the model. | |
| Vector< double > | active_tension |
| Active tension at every node. | |
| double | eta_f |
| Active tension coefficient along the fiber direction. | |
| double | eta_s |
| Active tension coefficient along the sheet direction. | |
| double | eta_n |
| Active tension coefficient along the sheet-normal direction. | |
Additional Inherited Members | |
Public Types inherited from ActiveStressODE | |
| enum class | ODESolver { ForwardEuler } |
| Enumeration of supported ODE solvers. More... | |
Public Attributes inherited from ActiveStress | |
| const unsigned int | n_states |
| Number of state variables for this model. | |
Nash-Panfilov active stress model.
This class implements the Nash-Panfilov active stress model [1], with the modifications introduced by Goktepe and Kuhl [2].
The model equations are the following:
\[ \begin{aligned} \dv{\Tact}{t} &= \varepsilon(\calcium)( \eta_\text{T} (\calcium - \calcium_\text{rest}) - \Tact)\;, \\ \varepsilon(\calcium) &= \varepsilon_0 + (\varepsilon_i - \varepsilon_0) \exp(-\exp(-\xi_T (\calcium - \calcium_\text{crit})))\;, \end{aligned} \]
where \(\eta_\text{T}\), \(\calcium_\text{rest}\), \(\calcium_\text{crit}\), \(\varepsilon_0\), \(\varepsilon_i\) and \(\xi_T\) are user-defined model parameters. The function \(\varepsilon(\calcium)\) is a sigmoidal-shaped calcium-dependent time constant (see Figure 3 in [2] for more details).
References:
|
inline |
Constructor.
|
overrideprotectedvirtual |
Compute the active tension for a single node.
Implements ActiveStress.
|
overrideprotectedvirtual |
Distribute model parameters to all parallel processes.
Reimplemented from ActiveStressODE.
|
inlineoverridevirtual |
Construct an instance of model parameters.
Implements ActiveStress.
|
overrideprotectedvirtual |
Compute the rate of change in the state variables.
Implements ActiveStressODE.
|
overrideprotectedvirtual |
Initialize the state vector for a single node.
| [out] | state | State vector for a single node, to be initialized by this function. |
Implements ActiveStress.
|
overrideprotectedvirtual |
Read model parameters from a parameter object.
Reimplemented from ActiveStressODE.
|
protected |
Critical calcium value, i.e. the threshold value for switching between minimum and maximum time constant.
|
protected |
Resting calcium value. Active tension will increase if calcium is above this value.
|
protected |
Minimum time constant \(\varepsilon_0\). The unit of measure for this parameter must be the inverse of the unit of measure for time.
|
protected |
Maximum time constant \(\varepsilon_i\). The unit of measure for this parameter must be the inverse of the unit of measure for time.
|
protected |
\(\eta_T\). The unit of measure for this parameter must be the ratio of the unit for tension and the unit for calcium concentration.
|
inlinestatic |
Model label.
|
protected |
Sigmoidal function steepness \(\xi_T\). The unit of measure for this parameter must be the inverse of the unit of measure for calcium concentration.