4#ifndef ACTIVE_STRESS_REGAZZONI_H
5#define ACTIVE_STRESS_REGAZZONI_H
7#include "ActiveStress.h"
54 static inline const std::string
label =
"Regazzoni";
77 static constexpr unsigned int ru_index(
unsigned int TL,
unsigned int TC,
78 unsigned int TR,
unsigned int CC) {
79 return 8 * TL + 4 * TC + 2 * TR + CC;
83 static constexpr unsigned int xb_index(
unsigned int i) {
98 constexpr bool required =
true;
111 add_parameter(
"kd_reference_sarcomere_length", 2.15, required);
123 add_parameter(
"Disable_force_strain_rate_feedback",
false, !required);
138 virtual std::unique_ptr<ActiveStressModelParameters>
140 return std::make_unique<Parameters>();
154 const cmType &cm)
override;
176 const double calcium,
177 const double fiber_stretch,
178 const double fiber_stretch_rate,
191 const double fiber_stretch)
const override;
197 std::array<std::array<std::array<std::array<double, 2>, 2>, 2>, 2>;
200 using BinaryPairArray = std::array<std::array<double, 2>, 2>;
203 using XBArray = std::array<double, 4>;
220 RUArray ru_transition_rates_tropomyosin()
const;
236 void ru_forward_euler_substep(
double dt,
const RUArray &rates_T,
237 const BinaryPairArray &rates_C,
238 RUArray &state_RU)
const;
258 XBArray xb_implicit_update(
double dt,
double velocity,
const RUArray &rates_T,
259 const RUArray &state_RU,
260 const XBArray &state_XB)
const;
271 double fraction_single_overlap(
double sarcomere_length)
const;
291 double kd_reference_sarcomere_length;
315 bool disable_force_strain_rate_feedback_ =
false;
Abstract active stress class.
Definition ActiveStress.h:100
Parameters for a generic active stress model.
Definition Parameters.h:1444
void add_parameter(const std::string &label, double default_value, bool required)
Add a new parameter to this object.
Definition Parameters.h:1490
Model parameters class.
Definition ActiveStressRegazzoni.h:95
Mean-field active stress model (implements the RDQ20-MF formulation).
Definition ActiveStressRegazzoni.h:51
static constexpr unsigned int n_xb_states
Number of crossbridge (XB) moment states (entries 16-19).
Definition ActiveStressRegazzoni.h:63
static constexpr unsigned int xb_index(unsigned int i)
Flat index of the XB moment state i (in [0, 3]), spanning [16, 19].
Definition ActiveStressRegazzoni.h:83
virtual void read_model_specific_parameters(const ActiveStressModelParameters ¶ms) override
Read model parameters from a parameter object.
Definition ActiveStressRegazzoni.cpp:11
static constexpr unsigned int ru_index(unsigned int TL, unsigned int TC, unsigned int TR, unsigned int CC)
Flat index of the RU probability state P(TL, TC, TR, CC).
Definition ActiveStressRegazzoni.h:77
ActiveStressRegazzoni()
Constructor.
Definition ActiveStressRegazzoni.h:130
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.
Definition ActiveStressRegazzoni.cpp:82
virtual double compute_active_tension_local(const Vector< double > &state, const double fiber_stretch) const override
Compute the scalar active tension for a single node.
Definition ActiveStressRegazzoni.cpp:144
virtual std::unique_ptr< ActiveStressModelParameters > get_parameters() const override
Construct an instance of model parameters.
Definition ActiveStressRegazzoni.h:139
static const std::string label
Model label, used for factory registration and XML selection.
Definition ActiveStressRegazzoni.h:54
static constexpr unsigned int n_state_variables
Total number of state variables.
Definition ActiveStressRegazzoni.h:66
virtual void init_local(Vector< double > &state) const override
Initialize the state vector for a single node.
Definition ActiveStressRegazzoni.cpp:75
virtual void distribute_model_specific_parameters(const CmMod &cm_mod, const cmType &cm) override
Distribute model parameters to all parallel processes.
Definition ActiveStressRegazzoni.cpp:49
static constexpr unsigned int n_ru_states
Number of regulatory-unit (RU) probability states (entries 0-15).
Definition ActiveStressRegazzoni.h:60
The CmMod class duplicates the data structures in the Fortran CMMOD module defined in COMU....
Definition CmMod.h:36
The Vector template class is used for storing int and double data.
Definition Vector.h:26
The cmType class stores data and defines methods used for mpi communication.
Definition CmMod.h:56