|
programmer's documentation
|
#include "cs_defs.h"#include <assert.h>#include <string.h>#include <bft_mem.h>#include "cs_boundary_zone.h"#include "cs_cdo_local.h"#include "cs_cdovb_scaleq.h"#include "cs_cdovb_vecteq.h"#include "cs_cdovcb_scaleq.h"#include "cs_cdofb_navsto.h"#include "cs_cdofb_scaleq.h"#include "cs_cdofb_vecteq.h"#include "cs_hho_scaleq.h"#include "cs_hho_vecteq.h"#include "cs_log.h"#include "cs_math.h"#include "cs_parall.h"#include "cs_xdef_eval.h"#include "cs_equation_common.h"
Macros | |
| #define | CS_EQUATION_COMMON_DBG 0 |
Functions | |
| void | cs_equation_common_allocate (const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *time_step, const cs_domain_cdo_context_t *cc) |
| Allocate a pointer to a buffer of size at least the 2*n_cells for managing temporary usage of memory when dealing with equations Call specific structure allocation related to a numerical scheme according the scheme flag The size of the temporary buffer can be bigger according to the numerical settings Set also shared pointers from the main domain members. More... | |
| void | cs_equation_common_free (const cs_domain_cdo_context_t *cc) |
| Allocate a pointer to a buffer of size at least the 2*n_cells for managing temporary usage of memory when dealing with equations Call specific structure allocation related to a numerical scheme according the scheme flag The size of the temporary buffer can be bigger according to the numerical settings. More... | |
| cs_equation_builder_t * | cs_equation_init_builder (const cs_equation_param_t *eqp, const cs_mesh_t *mesh) |
| Allocate a new structure to handle the building of algebraic system related to a cs_equation_t structure. More... | |
| void | cs_equation_free_builder (cs_equation_builder_t **p_builder) |
| Free a cs_equation_builder_t structure. More... | |
| cs_gnum_t | cs_equation_prepare_system (int stride, cs_lnum_t x_size, const cs_real_t *x0, const cs_real_t *rhs, const cs_matrix_t *matrix, cs_range_set_t *rset, cs_real_t *p_x[], cs_real_t *p_rhs[]) |
| Prepare a linear system and synchronize buffers to handle parallelism. Transfer a mesh-based description of arrays x0 and rhs into an algebraic description for the linear system in x and b. More... | |
| void | cs_equation_write_monitoring (const char *eqname, const cs_equation_builder_t *eqb) |
| Print a message in the performance output file related to the monitoring of equation. More... | |
| void | cs_equation_init_cell_sys_bc (const cs_equation_builder_t *eqb, const cs_cell_mesh_t *cm, cs_cell_sys_t *csys) |
| Set members of the cs_cell_sys_t structure related to the boundary conditions. Only the generic part is done here. The remaining part is performed in _init_cell_system() for each scheme. More... | |
| void | cs_equation_init_properties (const cs_equation_param_t *eqp, const cs_equation_builder_t *eqb, cs_real_t t_eval, cs_cell_builder_t *cb) |
| Initialize all properties for an algebraic system. More... | |
| void | cs_equation_set_diffusion_property (const cs_equation_param_t *eqp, cs_lnum_t c_id, cs_real_t t_eval, cs_flag_t c_flag, cs_cell_builder_t *cb) |
| Set the diffusion property inside a cell and its related quantities. More... | |
| void | cs_equation_set_diffusion_property_cw (const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, cs_real_t t_eval, cs_flag_t c_flag, cs_cell_builder_t *cb) |
| Set the diffusion property inside a cell and its related quantities. Cellwise version using a cs_cell_mesh_t structure. More... | |
| void | cs_equation_enforced_internal_dofs (const cs_equation_param_t *eqp, cs_cell_builder_t *cb, cs_cell_sys_t *csys) |
| Take into account the enforcement of internal DoFs. Apply an algebraic manipulation. More... | |
| void | cs_equation_assemble_matrix (const cs_cell_sys_t *csys, const cs_range_set_t *rset, cs_matrix_assembler_values_t *mav) |
| Assemble a cellwise system into the global algebraic system. More... | |
| void | cs_equation_assemble_block_matrix (const cs_cell_sys_t *csys, const cs_range_set_t *rset, int n_x_dofs, cs_matrix_assembler_values_t *mav) |
| Assemble a cellwise system defined by blocks into the global algebraic system. More... | |
| const cs_adjacency_t * | cs_equation_get_v2v_index (void) |
| Get the connectivity vertex->vertices for the local rank. More... | |
| const cs_adjacency_t * | cs_equation_get_f2f_index (void) |
| Get the connectivity face->faces for the local rank. More... | |
| cs_real_t * | cs_equation_get_tmpbuf (void) |
| Retrieve a pointer to a buffer of size at least the 2*n_cells The size of the temporary buffer can be bigger according to the numerical settings. More... | |
| size_t | cs_equation_get_tmpbuf_size (void) |
| Get the allocation size of the temporary buffer. More... | |
| cs_equation_balance_t * | cs_equation_balance_create (cs_flag_t location, cs_lnum_t size) |
| Allocate a cs_equation_balance_t structure. More... | |
| void | cs_equation_balance_reset (cs_equation_balance_t *b) |
| Reset a cs_equation_balance_t structure. More... | |
| void | cs_equation_balance_sync (const cs_cdo_connect_t *connect, cs_equation_balance_t *b) |
| Synchronize balance terms if this is a parallel computation. More... | |
| void | cs_equation_balance_destroy (cs_equation_balance_t **p_balance) |
| Free a cs_equation_balance_t structure. More... | |
Variables | |
| static size_t | cs_equation_common_work_buffer_size = 0 |
| static cs_real_t * | cs_equation_common_work_buffer = NULL |
| static cs_matrix_assembler_t ** | cs_equation_common_ma = NULL |
| static cs_matrix_structure_t ** | cs_equation_common_ms = NULL |
| static cs_adjacency_t * | cs_connect_v2v = NULL |
| static cs_adjacency_t * | cs_connect_f2f = NULL |
| static const cs_cdo_quantities_t * | cs_shared_quant |
| static const cs_cdo_connect_t * | cs_shared_connect |
| static const cs_time_step_t * | cs_shared_time_step |
| static cs_timer_counter_t | tca |
| static cs_timer_counter_t | tcc |
| #define CS_EQUATION_COMMON_DBG 0 |
| void cs_equation_assemble_block_matrix | ( | const cs_cell_sys_t * | csys, |
| const cs_range_set_t * | rset, | ||
| int | n_x_dofs, | ||
| cs_matrix_assembler_values_t * | mav | ||
| ) |
Assemble a cellwise system defined by blocks into the global algebraic system.
| [in] | csys | cellwise view of the algebraic system |
| [in] | rset | pointer to a cs_range_set_t structure |
| [in] | n_x_dofs | number of DoFs per entity (= size of the block) |
| [in,out] | mav | pointer to a matrix assembler structure |
| void cs_equation_assemble_matrix | ( | const cs_cell_sys_t * | csys, |
| const cs_range_set_t * | rset, | ||
| cs_matrix_assembler_values_t * | mav | ||
| ) |
Assemble a cellwise system into the global algebraic system.
| [in] | csys | cellwise view of the algebraic system |
| [in] | rset | pointer to a cs_range_set_t structure |
| [in,out] | mav | pointer to a matrix assembler structure |
| cs_equation_balance_t* cs_equation_balance_create | ( | cs_flag_t | location, |
| cs_lnum_t | size | ||
| ) |
Allocate a cs_equation_balance_t structure.
| [in] | location | where the balance is performed |
| [in] | size | size of arrays in the structure |
| void cs_equation_balance_destroy | ( | cs_equation_balance_t ** | p_balance | ) |
Free a cs_equation_balance_t structure.
| [in,out] | p_balance | pointer to the pointer to free |
| void cs_equation_balance_reset | ( | cs_equation_balance_t * | b | ) |
Reset a cs_equation_balance_t structure.
| [in,out] | b | pointer to a cs_equation_balance_t to reset |
| void cs_equation_balance_sync | ( | const cs_cdo_connect_t * | connect, |
| cs_equation_balance_t * | b | ||
| ) |
Synchronize balance terms if this is a parallel computation.
| [in] | connect | pointer to a cs_cdo_connect_t structure |
| [in,out] | b | pointer to a cs_equation_balance_t to rsync |
| void cs_equation_common_allocate | ( | const cs_cdo_connect_t * | connect, |
| const cs_cdo_quantities_t * | quant, | ||
| const cs_time_step_t * | time_step, | ||
| const cs_domain_cdo_context_t * | cc | ||
| ) |
Allocate a pointer to a buffer of size at least the 2*n_cells for managing temporary usage of memory when dealing with equations Call specific structure allocation related to a numerical scheme according the scheme flag The size of the temporary buffer can be bigger according to the numerical settings Set also shared pointers from the main domain members.
| [in] | connect | pointer to a cs_cdo_connect_t structure |
| [in] | quant | pointer to additional mesh quantities struct. |
| [in] | time_step | pointer to a time step structure |
| [in] | cc | pointer to a cs_domain_cdo_context_t struct. |
| void cs_equation_common_free | ( | const cs_domain_cdo_context_t * | cc | ) |
Allocate a pointer to a buffer of size at least the 2*n_cells for managing temporary usage of memory when dealing with equations Call specific structure allocation related to a numerical scheme according the scheme flag The size of the temporary buffer can be bigger according to the numerical settings.
| [in] | cc | pointer to a structure storing CDO/HHO metadata |
| void cs_equation_enforced_internal_dofs | ( | const cs_equation_param_t * | eqp, |
| cs_cell_builder_t * | cb, | ||
| cs_cell_sys_t * | csys | ||
| ) |
Take into account the enforcement of internal DoFs. Apply an algebraic manipulation.
| | | | | | | | | | | Aii | Aie | | Aii | 0 | |bi| |bi -Aid.x_enf| |---------—| –> |---------—| and |–| –> |----------—| | | | | | | | | | | | Aei | Aee | | 0 | Id | |be| | x_enf |
where x_enf is the value of the enforcement for the selected internal DoFs
| [in] | eqp | pointer to a cs_equation_param_t struct. |
| [in,out] | cb | pointer to a cs_cell_builder_t structure |
| [in,out] | csys | structure storing the cell-wise system |
| void cs_equation_free_builder | ( | cs_equation_builder_t ** | p_builder | ) |
Free a cs_equation_builder_t structure.
| [in,out] | p_builder | pointer of pointer to the cs_equation_builder_t structure to free |
| const cs_adjacency_t* cs_equation_get_f2f_index | ( | void | ) |
Get the connectivity face->faces for the local rank.
| cs_real_t* cs_equation_get_tmpbuf | ( | void | ) |
Retrieve a pointer to a buffer of size at least the 2*n_cells The size of the temporary buffer can be bigger according to the numerical settings.
| size_t cs_equation_get_tmpbuf_size | ( | void | ) |
Get the allocation size of the temporary buffer.
| const cs_adjacency_t* cs_equation_get_v2v_index | ( | void | ) |
Get the connectivity vertex->vertices for the local rank.
| cs_equation_builder_t* cs_equation_init_builder | ( | const cs_equation_param_t * | eqp, |
| const cs_mesh_t * | mesh | ||
| ) |
Allocate a new structure to handle the building of algebraic system related to a cs_equation_t structure.
Allocate a new structure to handle the building of algebraic system related to an cs_equation_t structure.
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in] | mesh | pointer to a cs_mesh_t structure |
| void cs_equation_init_cell_sys_bc | ( | const cs_equation_builder_t * | eqb, |
| const cs_cell_mesh_t * | cm, | ||
| cs_cell_sys_t * | csys | ||
| ) |
Set members of the cs_cell_sys_t structure related to the boundary conditions. Only the generic part is done here. The remaining part is performed in _init_cell_system() for each scheme.
| [in] | eqb | pointer to a cs_equation_builder_t structure |
| [in] | cm | pointer to a cs_cell_mesh_t structure |
| [in,out] | csys | pointer to a cs_cell_system_t structure |
| void cs_equation_init_properties | ( | const cs_equation_param_t * | eqp, |
| const cs_equation_builder_t * | eqb, | ||
| cs_real_t | t_eval, | ||
| cs_cell_builder_t * | cb | ||
| ) |
Initialize all properties for an algebraic system.
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in] | eqb | pointer to a cs_equation_builder_t structure |
| [in] | t_eval | time at which one performs the evaluation |
| [in,out] | cb | pointer to a cs_cell_builder_t structure (diffusion property is stored inside) |
| cs_gnum_t cs_equation_prepare_system | ( | int | stride, |
| cs_lnum_t | x_size, | ||
| const cs_real_t * | x0, | ||
| const cs_real_t * | rhs, | ||
| const cs_matrix_t * | matrix, | ||
| cs_range_set_t * | rset, | ||
| cs_real_t * | p_x[], | ||
| cs_real_t * | p_rhs[] | ||
| ) |
Prepare a linear system and synchronize buffers to handle parallelism. Transfer a mesh-based description of arrays x0 and rhs into an algebraic description for the linear system in x and b.
| [in] | stride | stride to apply to the range set operations |
| [in] | x_size | size of the vector unknows (scatter view) |
| [in] | x0 | pointer to an array (unknows to compute) |
| [in] | rhs | pointer to an array (right-hand side) |
| [in] | matrix | pointer to a cs_matrix_t structure |
| [in] | rset | pointer to a range set structure |
| [in,out] | p_x | pointer of pointer to the linear solver unknows |
| [in,out] | p_rhs | pointer of pointer to the right-hand side |
| void cs_equation_set_diffusion_property | ( | const cs_equation_param_t * | eqp, |
| cs_lnum_t | c_id, | ||
| cs_real_t | t_eval, | ||
| cs_flag_t | c_flag, | ||
| cs_cell_builder_t * | cb | ||
| ) |
Set the diffusion property inside a cell and its related quantities.
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in] | c_id | id of the cell to deal with |
| [in] | t_eval | time at which one performs the evaluation |
| [in] | c_flag | flag related to this cell |
| [in,out] | cb | pointer to a cs_cell_builder_t structure |
| void cs_equation_set_diffusion_property_cw | ( | const cs_equation_param_t * | eqp, |
| const cs_cell_mesh_t * | cm, | ||
| cs_real_t | t_eval, | ||
| cs_flag_t | c_flag, | ||
| cs_cell_builder_t * | cb | ||
| ) |
Set the diffusion property inside a cell and its related quantities. Cellwise version using a cs_cell_mesh_t structure.
| [in] | eqp | pointer to a cs_equation_param_t structure |
| [in] | cm | pointer to a cs_cell_mesh_t structure |
| [in] | t_eval | time at which one performs the evaluation |
| [in] | c_flag | flag related to this cell |
| [in,out] | cb | pointer to a cs_cell_builder_t structure |
| void cs_equation_write_monitoring | ( | const char * | eqname, |
| const cs_equation_builder_t * | eqb | ||
| ) |
Print a message in the performance output file related to the monitoring of equation.
| [in] | eqname | pointer to the name of the current equation |
| [in] | eqb | pointer to a cs_equation_builder_t structure |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
1.8.13