|
svZeroDSolver
|
Open loop coronary boundary condition with time-varying microvascular resistance based on [11]. More...
#include <OpenLoopCoronaryVarResBC.h>
Public Member Functions | |
| OpenLoopCoronaryVarResBC (int id, Model *model) | |
| Construct a new OpenLoopCoronaryVarResBC object. | |
| Public Member Functions inherited from OpenLoopCoronaryBC | |
| OpenLoopCoronaryBC (int id, Model *model) | |
| Construct a new OpenLoopCoronaryBC object. | |
| void | setup_dofs (DOFHandler &dofhandler) |
| Set up the degrees of freedom (DOF) of the block. | |
| void | setup_initial_state_dependent_params (State initial_state, std::vector< double > ¶meters) |
| Setup parameters that depend on the initial state. | |
| void | update_constant (SparseSystem &system, std::vector< double > ¶meters) |
| Update the constant contributions of the element in a sparse system. | |
| void | update_time (SparseSystem &system, std::vector< double > ¶meters) |
| Update the time-dependent contributions of the element in a sparse system. | |
| virtual | ~OpenLoopCoronaryBC ()=default |
| Virtual destructor for proper cleanup in derived classes. | |
| Public Member Functions inherited from Block | |
| Block (int id, Model *model, BlockType block_type, BlockClass block_class, std::vector< std::pair< std::string, InputParameter > > input_params) | |
| Construct a new Block object. | |
| ~Block () | |
| Destroy the Block object. | |
| Block (const Block &)=delete | |
| Copy the Block object. | |
| std::string | get_name () |
| Get the name of the block. | |
| void | update_vessel_type (VesselType type) |
| Update vessel type of the block. | |
| void | setup_params_ (const std::vector< int > ¶m_ids) |
| Setup parameter IDs for the block. | |
| void | setup_dofs_ (DOFHandler &dofhandler, int num_equations, const std::list< std::string > &internal_var_names) |
| Set up the degrees of freedom (DOF) of the block. | |
| virtual void | setup_model_dependent_params () |
| Setup parameters that depend on the model. | |
| virtual void | update_solution (SparseSystem &system, std::vector< double > ¶meters, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &y, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &dy) |
| Update the solution-dependent contributions of the element in a sparse system. | |
| virtual void | post_solve (Eigen::Matrix< double, Eigen::Dynamic, 1 > &y) |
| Modify the solution after solving it. | |
| virtual void | update_gradient (Eigen::SparseMatrix< double > &jacobian, Eigen::Matrix< double, Eigen::Dynamic, 1 > &residual, Eigen::Matrix< double, Eigen::Dynamic, 1 > &alpha, std::vector< double > &y, std::vector< double > &dy) |
| Set the gradient of the block contributions with respect to the parameters. | |
| virtual TripletsContributions | get_num_triplets () |
| Get number of triplets of element. | |
| virtual void | set_activation_function (std::unique_ptr< ActivationFunction > af) |
| Set activation function (for chamber blocks that use one). | |
Protected Member Functions | |
| double | get_Ram (std::vector< double > ¶meters, double time) const override |
| Get time-varying microvascular resistance. | |
| Protected Member Functions inherited from OpenLoopCoronaryBC | |
| OpenLoopCoronaryBC (int id, Model *model, BlockType block_type, const std::vector< std::pair< std::string, InputParameter > > &input_params) | |
| Protected constructor for derived classes. | |
Additional Inherited Members | |
| Public Attributes inherited from OpenLoopCoronaryBC | |
| TripletsContributions | num_triplets {5, 4, 0} |
| Number of triplets of element. | |
| Public Attributes inherited from Block | |
| const int | id |
| Global ID of the block. | |
| const Model * | model |
| The model to which the block belongs. | |
| const BlockType | block_type |
| Type of this block. | |
| const BlockClass | block_class |
| Class of this block. | |
| VesselType | vessel_type = VesselType::neither |
| Vessel type of this block. | |
| const std::vector< std::pair< std::string, InputParameter > > | input_params |
| Map from name to input parameter. | |
| std::vector< Node * > | inlet_nodes |
| Inlet nodes. | |
| std::vector< Node * > | outlet_nodes |
| Outlet nodes. | |
| bool | steady = false |
| Toggle steady behavior. | |
| bool | input_params_list = false |
| Are input parameters given as a list? | |
| std::vector< int > | global_param_ids |
| Global IDs for the block parameters. | |
| std::vector< int > | global_var_ids |
| Global variable indices of the local element contributions. | |
| std::vector< int > | global_eqn_ids |
| Global equation indices of the local element contributions. | |
| TripletsContributions | num_triplets |
| Number of triplets of element. | |
| Protected Attributes inherited from OpenLoopCoronaryBC | |
| double | P_Cim_0 = 0 |
| Pressure proximal to Cim/Vim at initial state. | |
| double | Pim_0 = 0 |
| Pim at initial state. | |
Open loop coronary boundary condition with time-varying microvascular resistance based on [11].
This model extends the standard open loop coronary BC ([4]) by allowing the microvascular resistance 
![\[R_{am}(t) = \left[ \left( \sqrt{R_{am,max}} - \sqrt{R_{am,min}} \right)
e(t) + \sqrt{R_{am,min}} \right]^2
\]](form_124.png)
where 
![\[e(t) =
\begin{cases}
\dfrac{1}{2}\left[ 1 - \cos\left( \pi \dfrac{t_{cycle}}{T_{vc}} \right)
\right], & 0 \le t_{cycle} \le T_{vc}, \\
\dfrac{1}{2}\left[ 1 + \cos\left( \pi \dfrac{t_{cycle} - T_{vc}}{T_{vr}}
\right) \right], & T_{vc} < t_{cycle} \le T_{vc} + T_{vr}, \\
0, & t_{cycle} > T_{vc} + T_{vr}
\end{cases}
\]](form_126.png)
where 
![\[\begin{circuitikz} \draw
node[left] {$Q_{in}$} [-latex] (0,0) -- (0.8,0);
\draw (1,0) node[anchor=south]{$P_{in}$}
to [R, l=$R_a$, *-*] (3,0)
to [R, l=$R_{am}(t)$, -] (5,0)
node[anchor=south]{$P_{cim}$}
to [R, l=$R_v$, *-*] (7,0)
node[anchor=south]{$P_{v}$}
(5,0) to [C, l=$C_{im} \;V_{im}$, -*] (5,-1.5)
node[left]{$P_{im}$}
(3,0) to [C, l=$C_a$, -*] (3,-1.5)
node[left]{$P_a$};
\end{circuitikz}
\]](form_128.png)
Same as OpenLoopCoronaryBC, but with 

Parameter sequence for constructing this block
"boundary_conditions": [
{
"bc_name": "OUT",
"bc_type": "CORONARY_VAR_RES",
"bc_values": {
"Ca": 0.0001,
"Cc": 0.0001,
"Pim": [
1000.0,
1000.0
],
"P_v": 0.0,
"Ra1": 100.0,
"Ra2_min": 50.0,
"Ra2_max": 200.0,
"Rv1": 100.0,
"T_vc": 0.2,
"T_vr": 0.3,
"t": [
0.0,
1.0
]
}
}
]
Names of internal variables in this block's output:
|
inline |
Construct a new OpenLoopCoronaryVarResBC object.
|
overrideprotectedvirtual |
Get time-varying microvascular resistance.
Overrides base class to provide time-varying resistance based on cardiac cycle phase.
| parameters | Parameters of the model |
| time | Current simulation time |
Reimplemented from OpenLoopCoronaryBC.