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

Bueno-Orovio ionic model. More...

#include <ionic_bueno_orovio.h>

Inheritance diagram for BuenoOrovio:
[legend]

Classes

class  Parameters
 Model parameters class. More...
 

Public Member Functions

 BuenoOrovio ()
 Constructor.
 
virtual std::unique_ptr< IonicModelParametersget_parameters () const override
 Construct an instance of model parameters.
 
virtual void read_parameters (const IonicModelParameters &params) override
 Read model parameters from a parameter object.
 
virtual void distribute_parameters (const CmMod &cm_mod, const cmType &cm) override
 Distribute model parameters to all parallel processes.
 
virtual unsigned int get_calcium_index () const override
 Get the calcium proxy index.
 
- Public Member Functions inherited from IonicModel
 IonicModel (const InitialStates &initial_X_, const InitialStates &initial_Xg_, const double Vrest_)
 Constructor.
 
 IonicModel (const InitialStates &initial_X_, const InitialStates &initial_Xg_, const double Vrest_, const double Vscale_, const double Tscale_, const double Voffset_)
 Constructor with scaling factors.
 
virtual ~IonicModel ()=default
 Virtual destructor.
 
void init (Vector< double > &X, Vector< double > &Xg) const
 Setup model initial conditions.
 
void integ (const odeType &ode_solver_params, const int zone_id, const double t, const double dt, const double Istim, const double Ksac, Vector< double > &X, Vector< double > &Xg) const
 Integrate over one time step.
 
unsigned int nX () const
 Get the number of state variables.
 
unsigned int nG () const
 Get the number of gating variables.
 
virtual std::vector< std::pair< std::string, int > > get_output_variables () const
 Get a list of state variables to export to VTU.
 
std::vector< outputTypeget_registered_outputs () const
 Get output variable information for output registration.
 

Static Public Attributes

static const std::string label = "BO"
 Model label.
 
static const InitialStates initial_X
 State variables.
 
static const InitialStates initial_Xg = {}
 Gating variables.
 
static constexpr unsigned int calcium_index = 3
 

Protected Member Functions

virtual void update_g (const unsigned int zone_id, const double dt, const Vector< double > &X, Vector< double > &Xg) const override
 
virtual Vector< double > getf (const unsigned int zone_id, const Vector< double > &X, const Vector< double > &Xg, const double I_stim, const double I_sac) const override
 Model right-hand side.
 
virtual Array< double > getj (const unsigned int zone_id, const Vector< double > &X, const Vector< double > &Xg, const double Ksac) const override
 Model jacobian.
 
double step (const double r) const
 Step function.
 
double delta (const double r) const
 Delta function.
 
- Protected Member Functions inherited from IonicModel
void integ_fe (const unsigned int zone_id, Vector< double > &X, Vector< double > &Xg, const double Ts, const double Ti, const double Istim, const double Ksac) const
 Integrate the model with the forward Euler method.
 
void integ_rk (const unsigned int zone_id, Vector< double > &X, Vector< double > &Xg, const double Ts, const double Ti, const double Istim, const double Ksac) const
 Integrate the model with the fourth-order explicit Runge-Kutta method.
 
void integ_cn2 (const unsigned int zone_id, Vector< double > &X, Vector< double > &Xg, const double Ts, const double Ti, const double Istim, const double Ksac, const unsigned int max_iter, const double rtol, const double atol) const
 Integrate the model with the Crank-Nicolson method.
 

Model parameters

using ModelParam = Vector< double >
 
ModelParam u_o = {0.0, 0.0, 0.0}
 [1].
 
ModelParam u_u = {1.550, 1.56, 1.61}
 [1].
 
ModelParam theta_v = {0.30, 0.3, 0.3}
 [1].
 
ModelParam theta_w = {0.130, 0.13, 0.13}
 [1].
 
ModelParam thetam_v = {6.E-3, 0.2, 0.1}
 [1].
 
ModelParam theta_o = {6.E-3, 6.E-3, 5.E-3}
 [1].
 
ModelParam taum_v1 = {60.0, 75., 80.}
 [1/s].
 
ModelParam taum_v2 = {1.15E3, 10., 1.4506}
 [1/s].
 
ModelParam taup_v = {1.45060, 1.4506, 1.4506}
 [1/s].
 
ModelParam taum_w1 = {60.0, 6., 70.}
 [1/s].
 
ModelParam taum_w2 = {15.0, 140., 8.}
 [1/s].
 
ModelParam km_w = {65.0, 200., 200.}
 [1].
 
ModelParam um_w = {3.E-2, 1.6E-2, 1.6E-2}
 [1].
 
ModelParam taup_w = {200.0, 280., 280.}
 [1/s].
 
ModelParam tau_fi = {0.110, 0.1, 0.078}
 [1/s].
 
ModelParam tau_o1 = {400.0, 470., 410.}
 [1/s].
 
ModelParam tau_o2 = {6.0, 6., 7.}
 [1/s].
 
ModelParam tau_so1 = {30.01810, 40., 91.}
 [1/s].
 
ModelParam tau_so2 = {0.99570, 1.2, 0.8}
 [1/s].
 
ModelParam k_so = {2.04580, 2., 2.1}
 [1].
 
ModelParam u_so = {0.650, 0.65, 0.6}
 [1].
 
ModelParam tau_s1 = {2.73420, 2.7342, 2.7342}
 [1/s].
 
ModelParam tau_s2 = {16.0, 2., 2.}
 [1/s].
 
ModelParam k_s = {2.09940, 2.0994, 2.0994}
 [1].
 
ModelParam u_s = {0.90870, 0.9087, 0.9087}
 [1].
 
ModelParam tau_si = {1.88750, 2.9013, 3.3849}
 [1/s].
 
ModelParam tau_winf = {7.E-2, 2.73E-2, 1.E-2}
 [1/s].
 
ModelParam ws_inf = {0.940, 0.78, 0.5}
 [1].
 

Additional Inherited Members

- Public Types inherited from IonicModel
using InitialStates = std::vector< std::pair< std::string, double > >
 
- Protected Attributes inherited from IonicModel
InitialStates initial_X
 Initial states.
 
InitialStates initial_Xg
 Initial gating variables.
 
const double Vrest
 
const double Vscale
 Voltage scaling [mV].
 
const double Tscale
 Time scaling [ms].
 
const double Voffset
 Voltage offset parameter [mV].
 

Detailed Description

Bueno-Orovio ionic model.

Reference: Bueno-Orovio, Cherry, Fenton. Minimal model for human ventricular action potentials in tissue. Journal of Theoretical Biology (2008)

Member Typedef Documentation

◆ ModelParam

using BuenoOrovio::ModelParam = Vector<double>
protected

Alias for model parameters container. The three entries in each of these correspond to epicardium, endocardium and myocardium, respectively (see also table 1 in the reference paper).

Todo:

[TODO:DaveP] these guys should be maps map<int,double>.

[michelebucelli] Would it make sense to treat these in the same way as the epi/endo/myo zone are treated in the TTP model?

Constructor & Destructor Documentation

◆ BuenoOrovio()

BuenoOrovio::BuenoOrovio ( )
inline

Constructor.

Member Function Documentation

◆ delta()

double BuenoOrovio::delta ( const double  r) const
inlineprotected

Delta function.

◆ distribute_parameters()

void BuenoOrovio::distribute_parameters ( const CmMod cm_mod,
const cmType cm 
)
overridevirtual

Distribute model parameters to all parallel processes.

Reimplemented from IonicModel.

◆ get_calcium_index()

virtual unsigned int BuenoOrovio::get_calcium_index ( ) const
inlineoverridevirtual

Get the calcium proxy index.

Implements IonicModel.

◆ get_parameters()

virtual std::unique_ptr< IonicModelParameters > BuenoOrovio::get_parameters ( ) const
inlineoverridevirtual

Construct an instance of model parameters.

Reimplemented from IonicModel.

◆ getf()

Vector< double > BuenoOrovio::getf ( const unsigned int  zone_id,
const Vector< double > &  X,
const Vector< double > &  Xg,
const double  I_stim,
const double  I_sac 
) const
overrideprotectedvirtual

Model right-hand side.

Implements IonicModel.

◆ getj()

Array< double > BuenoOrovio::getj ( const unsigned int  zone_id,
const Vector< double > &  X,
const Vector< double > &  Xg,
const double  Ksac 
) const
overrideprotectedvirtual

Model jacobian.

Reimplemented from IonicModel.

◆ read_parameters()

void BuenoOrovio::read_parameters ( const IonicModelParameters params)
overridevirtual

Read model parameters from a parameter object.

Reimplemented from IonicModel.

◆ step()

double BuenoOrovio::step ( const double  r) const
inlineprotected

Step function.

◆ update_g()

virtual void BuenoOrovio::update_g ( const unsigned int  zone_id,
const double  dt,
const Vector< double > &  X,
Vector< double > &  Xg 
) const
inlineoverrideprotectedvirtual

Update variable with analytical solution. This model has none, so this method does nothing.

Implements IonicModel.

Member Data Documentation

◆ calcium_index

constexpr unsigned int BuenoOrovio::calcium_index = 3
staticconstexpr

Index of the slow inward current gate (s), used as calcium proxy for electromechanical coupling.

◆ initial_X

const InitialStates BuenoOrovio::initial_X
inlinestatic
Initial value:
= {
{"u", -84.0}, {"v", 1.0}, {"w", 1.0}, {"s", 0.0}}

State variables.

◆ initial_Xg

const InitialStates BuenoOrovio::initial_Xg = {}
inlinestatic

Gating variables.

◆ k_s

ModelParam BuenoOrovio::k_s = {2.09940, 2.0994, 2.0994}
protected

[1].

◆ k_so

ModelParam BuenoOrovio::k_so = {2.04580, 2., 2.1}
protected

[1].

◆ km_w

ModelParam BuenoOrovio::km_w = {65.0, 200., 200.}
protected

[1].

◆ label

const std::string BuenoOrovio::label = "BO"
inlinestatic

Model label.

◆ tau_fi

ModelParam BuenoOrovio::tau_fi = {0.110, 0.1, 0.078}
protected

[1/s].

◆ tau_o1

ModelParam BuenoOrovio::tau_o1 = {400.0, 470., 410.}
protected

[1/s].

◆ tau_o2

ModelParam BuenoOrovio::tau_o2 = {6.0, 6., 7.}
protected

[1/s].

◆ tau_s1

ModelParam BuenoOrovio::tau_s1 = {2.73420, 2.7342, 2.7342}
protected

[1/s].

◆ tau_s2

ModelParam BuenoOrovio::tau_s2 = {16.0, 2., 2.}
protected

[1/s].

◆ tau_si

ModelParam BuenoOrovio::tau_si = {1.88750, 2.9013, 3.3849}
protected

[1/s].

◆ tau_so1

ModelParam BuenoOrovio::tau_so1 = {30.01810, 40., 91.}
protected

[1/s].

◆ tau_so2

ModelParam BuenoOrovio::tau_so2 = {0.99570, 1.2, 0.8}
protected

[1/s].

◆ tau_winf

ModelParam BuenoOrovio::tau_winf = {7.E-2, 2.73E-2, 1.E-2}
protected

[1/s].

◆ taum_v1

ModelParam BuenoOrovio::taum_v1 = {60.0, 75., 80.}
protected

[1/s].

◆ taum_v2

ModelParam BuenoOrovio::taum_v2 = {1.15E3, 10., 1.4506}
protected

[1/s].

◆ taum_w1

ModelParam BuenoOrovio::taum_w1 = {60.0, 6., 70.}
protected

[1/s].

◆ taum_w2

ModelParam BuenoOrovio::taum_w2 = {15.0, 140., 8.}
protected

[1/s].

◆ taup_v

ModelParam BuenoOrovio::taup_v = {1.45060, 1.4506, 1.4506}
protected

[1/s].

◆ taup_w

ModelParam BuenoOrovio::taup_w = {200.0, 280., 280.}
protected

[1/s].

◆ theta_o

ModelParam BuenoOrovio::theta_o = {6.E-3, 6.E-3, 5.E-3}
protected

[1].

◆ theta_v

ModelParam BuenoOrovio::theta_v = {0.30, 0.3, 0.3}
protected

[1].

◆ theta_w

ModelParam BuenoOrovio::theta_w = {0.130, 0.13, 0.13}
protected

[1].

◆ thetam_v

ModelParam BuenoOrovio::thetam_v = {6.E-3, 0.2, 0.1}
protected

[1].

◆ u_o

ModelParam BuenoOrovio::u_o = {0.0, 0.0, 0.0}
protected

[1].

◆ u_s

ModelParam BuenoOrovio::u_s = {0.90870, 0.9087, 0.9087}
protected

[1].

◆ u_so

ModelParam BuenoOrovio::u_so = {0.650, 0.65, 0.6}
protected

[1].

◆ u_u

ModelParam BuenoOrovio::u_u = {1.550, 1.56, 1.61}
protected

[1].

◆ um_w

ModelParam BuenoOrovio::um_w = {3.E-2, 1.6E-2, 1.6E-2}
protected

[1].

◆ ws_inf

ModelParam BuenoOrovio::ws_inf = {0.940, 0.78, 0.5}
protected

[1].


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