svMultiPhysics
Loading...
Searching...
No Matches
Classes | Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
ActiveStressNashPanfilov Class Reference

Nash-Panfilov active stress model. More...

#include <ActiveStressNashPanfilov.h>

Inheritance diagram for ActiveStressNashPanfilov:
[legend]

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 &params)
 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 &params) 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.
 

Detailed Description

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).

Note
The published formulations [1,2] are driven by transmembrane potential. This implementation substitutes intracellular calcium, with \(\eta_T\), \(\calcium_\text{rest}\), \(\xi_T\), and \(\calcium_\text{crit}\) corresponding to \(k_\sigma\), \(\Phi_r\), \(\xi\), and \(\bar{\Phi}\) in [2], respectively.
The sensitivity of the model to calcium is controlled by the paramter \(\eta_\text{T}\), which has the same units of active tension over calcium. Therefore, if the ionic model providing the calcium is phenomenological (see IonicModel) and calcium is non-dimensional, this parameter may need to be rescaled as well. Similar considerations apply to \(\xi_T\).

References:

  1. Nash, Panfilov (2004)
  2. Goktepe, Kuhl (2009)

Constructor & Destructor Documentation

◆ ActiveStressNashPanfilov()

ActiveStressNashPanfilov::ActiveStressNashPanfilov ( )
inline

Constructor.

Member Function Documentation

◆ compute_active_tension_local()

double ActiveStressNashPanfilov::compute_active_tension_local ( const Vector< double > &  state,
const double  fiber_stretch 
) const
overrideprotectedvirtual

Compute the active tension for a single node.

Implements ActiveStress.

◆ distribute_model_specific_parameters()

void ActiveStressNashPanfilov::distribute_model_specific_parameters ( const CmMod &  cm_mod,
const cmType &  cm 
)
overrideprotectedvirtual

Distribute model parameters to all parallel processes.

Reimplemented from ActiveStressODE.

◆ get_parameters()

virtual std::unique_ptr< ActiveStressModelParameters > ActiveStressNashPanfilov::get_parameters ( ) const
inlineoverridevirtual

Construct an instance of model parameters.

Implements ActiveStress.

◆ getf()

Vector< double > ActiveStressNashPanfilov::getf ( const double  t,
const Vector< double > &  state,
const double  calcium,
const double  fiber_stretch,
const double  fiber_stretch_rate 
) const
overrideprotectedvirtual

Compute the rate of change in the state variables.

Implements ActiveStressODE.

◆ init_local()

void ActiveStressNashPanfilov::init_local ( Vector< double > &  state) const
overrideprotectedvirtual

Initialize the state vector for a single node.

Parameters
[out]stateState vector for a single node, to be initialized by this function.

Implements ActiveStress.

◆ read_model_specific_parameters()

void ActiveStressNashPanfilov::read_model_specific_parameters ( const ActiveStressModelParameters &  params)
overrideprotectedvirtual

Read model parameters from a parameter object.

Reimplemented from ActiveStressODE.

Member Data Documentation

◆ calcium_crit

double ActiveStressNashPanfilov::calcium_crit
protected

Critical calcium value, i.e. the threshold value for switching between minimum and maximum time constant.

◆ calcium_rest

double ActiveStressNashPanfilov::calcium_rest
protected

Resting calcium value. Active tension will increase if calcium is above this value.

◆ epsilon_0

double ActiveStressNashPanfilov::epsilon_0
protected

Minimum time constant \(\varepsilon_0\). The unit of measure for this parameter must be the inverse of the unit of measure for time.

◆ epsilon_i

double ActiveStressNashPanfilov::epsilon_i
protected

Maximum time constant \(\varepsilon_i\). The unit of measure for this parameter must be the inverse of the unit of measure for time.

◆ eta_T

double ActiveStressNashPanfilov::eta_T
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.

◆ label

const std::string ActiveStressNashPanfilov::label = "NashPanfilov"
inlinestatic

Model label.

◆ xi_T

double ActiveStressNashPanfilov::xi_T
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.


The documentation for this class was generated from the following files: