svZeroDSolver
|
#include <Junction.h>
Public Member Functions | |
Junction (int id, Model *model) | |
Construct a new Junction 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_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. | |
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 | update_time (SparseSystem &system, std::vector< double > ¶meters) |
Update the time-dependent contributions of the element in a sparse system. | |
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 TripletsContributions | get_num_triplets () |
Get number of triplets of element. | |
Public Attributes | |
TripletsContributions | num_triplets {0, 0, 0} |
Number of triplets of element. | |
int | num_inlets |
Number of inlets to the block. | |
int | num_outlets |
Number of outlets from the block. | |
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. | |
Static Public Attributes | |
static const BlockType | block_type |
Type of this block. | |
static const BlockClass | block_class |
Class of this block. | |
static const std::vector< InputParameter > | input_params |
List of input parameter names. | |
Models a junction with arbitrary inlets and outlets. Across all inlets and outlets of the junction, mass is conserved and pressure is continuous.
Inlets and outlets can be specified in two ways. Either using inlet_vessels
and outlet_vessels
keys in the JSON file, with the corresponding lists specifying vessel IDs, or using inlet_blocks
and outlet_blocks
keys, with the corresponding lists specifying the names of blocks as strings.
Mass conservation
Due to the pressure continuity, we can write for all independent pressure pairs:
This block has no internal variables.
|
inline |
Construct a new Junction object.
id | Global ID of the block |
model | The model to which the block belongs |
|
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 |
Set the gradient of the block contributions with respect to the parameters.
jacobian | Jacobian with respect to the parameters |
alpha | Current parameter vector |
residual | Residual with respect to the parameters |
y | Current solution |
dy | Time-derivative of the current solution |
Reimplemented from Block.
|
static |
Class of this block.
|
static |
Type of this block.
|
static |
List of input parameter names.
int Junction::num_inlets |
Number of inlets to the block.
int Junction::num_outlets |
Number of outlets from the block.
TripletsContributions Junction::num_triplets {0, 0, 0} |
Number of triplets of element.
Number of triplets that the element contributes to the global system (relevant for sparse memory reservation)