|
svZeroDSolver
|
Spherical heart chamber model. More...
#include <ChamberSphere.h>
Public Types | |
| enum | ParamId { rho = 0 , thick0 = 1 , radius0 = 2 , W1 = 3 , W2 = 4 , eta = 5 , sigma_max = 6 , alpha_max = 7 , alpha_min = 8 , tsys = 9 , tdias = 10 , steepness = 11 } |
| Local IDs of the parameters. More... | |
Public Member Functions | |
| ChamberSphere (int id, Model *model) | |
| Construct a new ChamberSphere object. | |
| void | setup_dofs (DOFHandler &dofhandler) |
| Set up the degrees of freedom (DOF) of the block. | |
| 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. | |
| 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. | |
| void | get_elastance_values (std::vector< double > ¶meters) |
| Update the elastance functions which depend on time. | |
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 | setup_initial_state_dependent_params (State initial_state, std::vector< double > ¶meters) |
| Setup parameters that depend on the initial state. | |
| 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. | |
Additional Inherited Members | |
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. | |
Spherical heart chamber model.
Models the mechanical behavior of a spherical heart chamber with active contraction. For reference, see [1] Equations (13a-b) for continuum mechanics (without length-dependent contraction valves, vessels) and [6] Equations (12-16) for the simplified active contraction model.
Cauchy-Green deformation tensor and time derivative:
![\[ C = \left(1 + \frac{r}{r_0} \right)^2
\]](form_41.png)
![\[ \dot{C} = 2 \left(1 + \frac{r}{r_0} \right) \frac{\dot{r}}{r_0}
\]](form_42.png)
![\[ \rho d_0 \dot{v} + \frac{d_0}{r_0} \left(1 + \frac{r}{r_0} \right) S -
P_\text{out} C = 0
\]](form_43.png)
![\[ -S + \tau + 4 (1 - C^{-3}) (W_1 + C W_2) + 2 \eta \dot{C}
(1 - 2 C^{-6}) = 0
\]](form_44.png)
![\[ 4 \pi r_0^2 Cv - \dot{V} = 0
\]](form_45.png)
![\[ \dot{\tau} + a \tau - \sigma_\text{max} a_+ = 0, \quad a_+ = \max(a, 0),
\quad a = f\alpha_\text{max} + (1 - f)\alpha_\text{min}
\]](form_46.png)
![\[ f = S_+ \cdot S_-, \quad S_\pm = \frac{1}{2} \left(1.0 \pm \text{tanh}\left(
\frac{t - t_\text{sys/dias}} {\gamma} \right) \right)
\]](form_47.png)
![\[ \dot{r} - v = 0
\]](form_48.png)
![\[ Q_\text{in} - Q_\text{out} - \dot{V} = 0
\]](form_49.png)
![\[ P_\text{in} - P_\text{out} = 0
\]](form_50.png)
Parameter sequence for constructing this block:
rho - Density 
thick0 - Wall thickness 
radius0 - Reference radius 
W1 - Material constant 
W2 - Material constant 
eta - Viscosity parameter 
sigma_max - Maximum active stress 
alpha_max - Maximum activation parameter 
alpha_min - Minimum activation parameter 
tsys - Systole timing parameter 
tdias - Diastole timing parameter 
steepness - Activation steepness parameter 
Names of internal variables in this block's output:
radius - Chamber radius 
velo - Chamber velocity 
stress - Spherical stress 
tau - Active stress 
volume - Chamber volume 
Local IDs of the parameters.
|
inline |
Construct a new ChamberSphere object.
| id | Global ID of the block |
| model | The model to which the block belongs |
| void ChamberSphere::get_elastance_values | ( | std::vector< double > & | parameters | ) |
Update the elastance functions which depend on time.
| parameters | Parameters of the model |
|
virtual |
Set up the degrees of freedom (DOF) of the block.
Set global_var_ids and global_eqn_ids of the element based on the number of equations and the number of internal variables of the element.
| dofhandler | Degree-of-freedom handler to register variables and equations at |
Reimplemented from Block.
|
virtual |
Update the constant contributions of the element in a sparse system.
| system | System to update contributions at |
| parameters | Parameters of the model |
Reimplemented from Block.
|
virtual |
Update the solution-dependent contributions of the element in a sparse system.
| system | System to update contributions at |
| parameters | Parameters of the model |
| y | Current solution |
| dy | Current derivate of the solution |
Reimplemented from Block.
|
virtual |
Update the time-dependent contributions of the element in a sparse system.
| system | System to update contributions at |
| parameters | Parameters of the model |
Reimplemented from Block.