|
svZeroDSolver
|
#include <Model.h>
Public Member Functions | |
| Model () | |
| Construct a new Model object. | |
| ~Model () | |
| Destroy the Model object. | |
| Block * | create_block (const std::string &block_name) |
| Create a new block. | |
| int | add_block (Block *block, const std::string_view &name, const std::vector< int > &block_param_ids, bool internal=false) |
| Add a block to the model (without parameters) | |
| int | add_block (const std::string &block_name, const std::vector< int > &block_param_ids, const std::string_view &name, bool internal=false) |
| Add a block to the model (with parameters) | |
| bool | has_block (const std::string &name) const |
| Check if a block with given name exists. | |
| Block * | get_block (const std::string_view &name) const |
| Get a block by its name. | |
| Block * | get_block (int block_id) const |
| Get a block by its global ID. | |
| BlockType | get_block_type (const std::string_view &name) const |
| Get a block type by its name. | |
| std::string | get_block_name (int block_id) const |
| Get the name of a block by it's ID. | |
| int | add_node (const std::vector< Block * > &inlet_eles, const std::vector< Block * > &outlet_eles, const std::string_view &name) |
| Add a node to the model. | |
| std::string | get_node_name (int node_id) const |
| Get the name of a node by it's ID. | |
| int | add_parameter (double value) |
| Add a constant model parameter. | |
| int | add_parameter (const std::vector< double > ×, const std::vector< double > &values, bool periodic=true) |
| Add a time-dependent model parameter. | |
| Parameter * | get_parameter (int param_id) |
| Get a parameter by its global ID. | |
| double | get_parameter_value (int param_id) const |
| Get the current value of a parameter. | |
| void | update_parameter_value (int param_id, double param_value) |
Update the current value of a parameter in the parameter_values vector. Note that this is different from updating the value within each parameter object, which is done in Parameter::update() | |
| void | finalize () |
| Finalize the model after all blocks, nodes and parameters have been added. | |
| void | update_constant (SparseSystem &system) |
| Update the constant contributions of all elements in a sparse system. | |
| void | update_time (SparseSystem &system, double time) |
| Update the time-dependent contributions of all elements in a sparse system. | |
| void | update_solution (SparseSystem &system, Eigen::Matrix< double, Eigen::Dynamic, 1 > &y, Eigen::Matrix< double, Eigen::Dynamic, 1 > &dy) |
| Update the solution-dependent contributions of all elements in a sparse system. | |
| void | post_solve (Eigen::Matrix< double, Eigen::Dynamic, 1 > &y) |
| Modify the solution after solving it. | |
| void | to_steady () |
| Convert the blocks to a steady behavior. | |
| void | to_unsteady () |
| Convert the blocks to an unsteady behavior. | |
| TripletsContributions | get_num_triplets () const |
| Get number of triplets all elements. | |
| int | get_num_blocks (bool internal=false) const |
| Get the number of blocks in the model. | |
| void | update_has_windkessel_bc (bool has_windkessel) |
| Specify if model has at least one Windkessel boundary condition. | |
| void | update_largest_windkessel_time_constant (double time_constant) |
| Update model with largest time constant among all Windkessel boundary conditions present in model. | |
| bool | get_has_windkessel_bc () |
| Check if model has at least one Windkessel boundary condition. | |
| double | get_largest_windkessel_time_constant () |
| Get largest Windkessel time constant in model. | |
| void | setup_initial_state_dependent_parameters (State initial_state) |
| Setup model parameters that depend on the initial state. | |
Public Attributes | |
| std::map< std::string_view, BlockFactoryFunc > | block_factory_map |
| Factory that holds all implemented blocks. | |
| DOFHandler | dofhandler |
| Degree-of-freedom handler of the model. | |
| double | cardiac_cycle_period = -1.0 |
| Cardiac cycle period. | |
| double | time = 0.0 |
| Current time. | |
Model of 0D elements.
This class represents a full 0D model. It contains attributes and methods to store and modify 0D elements.
| Model::Model | ( | ) |
Construct a new Model object.
| Model::~Model | ( | ) |
Destroy the Model object.
| int Model::add_block | ( | Block * | block, |
| const std::string_view & | name, | ||
| const std::vector< int > & | block_param_ids, | ||
| bool | internal = false ) |
Add a block to the model (without parameters)
| block | The block to add |
| name | The name of the block |
| block_param_ids | Global IDs of the parameters of the block |
| internal | Toggle whether block is internal |
| int Model::add_block | ( | const std::string & | block_name, |
| const std::vector< int > & | block_param_ids, | ||
| const std::string_view & | name, | ||
| bool | internal = false ) |
Add a block to the model (with parameters)
| block_name | Type of the block |
| block_param_ids | Global IDs of the parameters of the block |
| name | The name of the block |
| internal | Toggle whether block is internal |
| int Model::add_node | ( | const std::vector< Block * > & | inlet_eles, |
| const std::vector< Block * > & | outlet_eles, | ||
| const std::string_view & | name ) |
Add a node to the model.
| inlet_eles | Inlet blocks of the node |
| outlet_eles | Outlet blocks of the node |
| name | Name of node |
| int Model::add_parameter | ( | const std::vector< double > & | times, |
| const std::vector< double > & | values, | ||
| bool | periodic = true ) |
Add a time-dependent model parameter.
| times | Times corresponding to the parameter values |
| values | Values of the parameter |
| periodic | Toggle whether parameter is periodic |
| int Model::add_parameter | ( | double | value | ) |
Add a constant model parameter.
| value | Value of the parameter |
| Block * Model::create_block | ( | const std::string & | block_name | ) |
Create a new block.
| block_name | The block name (defined in block_factory_map) |
| void Model::finalize | ( | ) |
Finalize the model after all blocks, nodes and parameters have been added.
| Block * Model::get_block | ( | const std::string_view & | name | ) | const |
| Block * Model::get_block | ( | int | block_id | ) | const |
| std::string Model::get_block_name | ( | int | block_id | ) | const |
Get the name of a block by it's ID.
| block_id | Global ID of the block |
| BlockType Model::get_block_type | ( | const std::string_view & | name | ) | const |
| bool Model::get_has_windkessel_bc | ( | ) |
Check if model has at least one Windkessel boundary condition.
| double Model::get_largest_windkessel_time_constant | ( | ) |
Get largest Windkessel time constant in model.
| std::string Model::get_node_name | ( | int | node_id | ) | const |
Get the name of a node by it's ID.
| node_id | Global ID of the node |
| int Model::get_num_blocks | ( | bool | internal = false | ) | const |
Get the number of blocks in the model.
| internal | Toggle whether to return internal/hidden blocks |
| TripletsContributions Model::get_num_triplets | ( | ) | const |
Get number of triplets all elements.
Get the number of triplets the elements contribute to the global system (relevant for sparse memory reservation)
| Parameter * Model::get_parameter | ( | int | param_id | ) |
Get a parameter by its global ID.
| param_id | Global ID of the parameter |
| double Model::get_parameter_value | ( | int | param_id | ) | const |
Get the current value of a parameter.
| param_id | Global ID of the parameter |
| bool Model::has_block | ( | const std::string & | name | ) | const |
Check if a block with given name exists.
| name | Name of the Block |
| void Model::post_solve | ( | Eigen::Matrix< double, Eigen::Dynamic, 1 > & | y | ) |
Modify the solution after solving it.
| y | Current solution |
| void Model::setup_initial_state_dependent_parameters | ( | State | initial_state | ) |
Setup model parameters that depend on the initial state.
| initial_state | The initial state vector |
| void Model::to_steady | ( | ) |
Convert the blocks to a steady behavior.
| void Model::to_unsteady | ( | ) |
Convert the blocks to an unsteady behavior.
| void Model::update_constant | ( | SparseSystem & | system | ) |
Update the constant contributions of all elements in a sparse system.
| system | System to update contributions at |
| void Model::update_has_windkessel_bc | ( | bool | has_windkessel | ) |
Specify if model has at least one Windkessel boundary condition.
| has_windkessel | Toggle if model has at least one Windkessel boundary condition |
| void Model::update_largest_windkessel_time_constant | ( | double | time_constant | ) |
Update model with largest time constant among all Windkessel boundary conditions present in model.
| time_constant | Largest Windkessel time constant |
| void Model::update_parameter_value | ( | int | param_id, |
| double | param_value ) |
Update the current value of a parameter in the parameter_values vector. Note that this is different from updating the value within each parameter object, which is done in Parameter::update()
| param_id | Global ID of the parameter |
| param_value | The new parameter value |
| void Model::update_solution | ( | SparseSystem & | system, |
| Eigen::Matrix< double, Eigen::Dynamic, 1 > & | y, | ||
| Eigen::Matrix< double, Eigen::Dynamic, 1 > & | dy ) |
Update the solution-dependent contributions of all elements in a sparse system.
| system | System to update contributions at |
| y | Current solution |
| dy | Current derivate of the solution |
| void Model::update_time | ( | SparseSystem & | system, |
| double | time ) |
Update the time-dependent contributions of all elements in a sparse system.
| system | System to update contributions at |
| time | Current time |
| std::map<std::string_view, BlockFactoryFunc> Model::block_factory_map |
Factory that holds all implemented blocks.
| double Model::cardiac_cycle_period = -1.0 |
Cardiac cycle period.
| DOFHandler Model::dofhandler |
Degree-of-freedom handler of the model.
| double Model::time = 0.0 |
Current time.