svZeroDSolver
Loading...
Searching...
No Matches
BloodVesselRC Class Reference

Flow-through RC windkessel for pulmonary circulation. More...

#include <BloodVesselRC.h>

Inheritance diagram for BloodVesselRC:
[legend]

Public Types

enum  ParamId {
  RPD = 0 ,
  CP = 1
}
 Local IDs of the parameters. More...

Public Member Functions

 BloodVesselRC (int id, Model *model)
 Construct a new BloodVesselRC object.
void setup_dofs (DOFHandler &dofhandler)
 Set up the degrees of freedom (DOF) of the block.
void update_constant (SparseSystem &system, std::vector< double > &parameters)
 Update the constant contributions of the element in a sparse system.
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 > &param_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 > &parameters)
 Setup parameters that depend on the initial state.
virtual void update_time (SparseSystem &system, std::vector< double > &parameters)
 Update the time-dependent contributions of the element in a sparse system.
virtual void update_solution (SparseSystem &system, std::vector< double > &parameters, 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).

Public Attributes

TripletsContributions num_triplets {5, 1, 0}
 Number of triplets of element.
Public Attributes inherited from Block
const int id
 Global ID of the block.
const Modelmodel
 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.

Detailed Description

Flow-through RC windkessel for pulmonary circulation.

Models a resistance-capacitance windkessel where the inlet and outlet flows are equal (Q_in = Q_out). The capacitor stores pressure but does not store blood volume. This matches the pulmonary model in [9] (equation X6' = X4 - X7).

Governing equations

\‍[C_p \, \dot{P}_{in} + \frac{P_{in} - P_{out}}{R_{pd}} - Q_{in} = 0
\‍]

\‍[Q_{in} - Q_{out} = 0
\‍]

Parameters

  • Rpd — Pulmonary resistance
  • Cp — Pulmonary capacitance

Member Enumeration Documentation

◆ ParamId

Local IDs of the parameters.

Constructor & Destructor Documentation

◆ BloodVesselRC()

BloodVesselRC::BloodVesselRC ( int id,
Model * model )
inline

Construct a new BloodVesselRC object.

Parameters
idGlobal ID of the block
modelThe model to which the block belongs

Member Function Documentation

◆ setup_dofs()

void BloodVesselRC::setup_dofs ( DOFHandler & dofhandler)
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.

Parameters
dofhandlerDegree-of-freedom handler to register variables and equations at

Reimplemented from Block.

◆ update_constant()

void BloodVesselRC::update_constant ( SparseSystem & system,
std::vector< double > & parameters )
virtual

Update the constant contributions of the element in a sparse system.

Parameters
systemSystem to update contributions at
parametersParameters of the model

Reimplemented from Block.

Member Data Documentation

◆ num_triplets

TripletsContributions BloodVesselRC::num_triplets {5, 1, 0}

Number of triplets of element.


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