My Project
programmer's documentation
Data Structures | Functions
cs_equation_common.h File Reference
#include "cs_cdo_bc.h"
#include "cs_cdo_connect.h"
#include "cs_cdo_local.h"
#include "cs_cdo_quantities.h"
#include "cs_equation_param.h"
#include "cs_flag.h"
#include "cs_matrix.h"
#include "cs_time_step.h"
#include "cs_timer.h"
#include "cs_source_term.h"
Include dependency graph for cs_equation_common.h:

Go to the source code of this file.

Data Structures

struct  cs_equation_builder_t
 Store common elements used when building an algebraic system related to an equation. More...
 
struct  cs_equation_balance_t
 

Functions

static cs_flag_t cs_equation_cell_mesh_flag (cs_flag_t cell_flag, const cs_equation_builder_t *eqb)
 Retrieve the flag to give for building a cs_cell_mesh_t structure. More...
 
static void cs_equation_set_diffusion_property (const cs_equation_param_t *eqp, const cs_lnum_t c_id, const cs_real_t t_eval, const cs_flag_t c_flag, cs_cell_builder_t *cb)
 Set the diffusion property inside a cell and its related quantities. More...
 
static void cs_equation_set_diffusion_property_cw (const cs_equation_param_t *eqp, const cs_cell_mesh_t *cm, const cs_real_t t_eval, const 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_common_init (const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *time_step, cs_flag_t vb_flag, cs_flag_t vcb_flag, cs_flag_t fb_flag, cs_flag_t hho_flag)
 Allocate a pointer to a buffer of size at least the n_cells for managing temporary usage of memory when dealing with equations 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_finalize (void)
 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 to the scheme flag The size of the temporary buffer can be bigger according to the numerical settings. More...
 
cs_equation_builder_tcs_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 an 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_matrix_t *matrix, cs_range_set_t *rset, cs_real_t *x, cs_real_t *b)
 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_properties (const cs_equation_param_t *eqp, const cs_equation_builder_t *eqb, const cs_real_t t_eval, cs_cell_builder_t *cb)
 Initialize all properties for an algebraic system. More...
 
void cs_equation_init_properties_cw (const cs_equation_param_t *eqp, const cs_equation_builder_t *eqb, const cs_real_t t_eval, const cs_flag_t cell_flag, const cs_cell_mesh_t *cm, cs_cell_builder_t *cb)
 Initialize all properties for a given cell when building the algebraic system. If the property is uniform, a first call has to be done before the loop on cells Call cs_eqution_init_properties for instance. 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_enforced_internal_block_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. Case of matrices defined by blocks. Apply an algebraic manipulation. More...
 
cs_real_tcs_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_tcs_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...
 

Function Documentation

◆ cs_equation_balance_create()

cs_equation_balance_t* cs_equation_balance_create ( cs_flag_t  location,
cs_lnum_t  size 
)

Allocate a cs_equation_balance_t structure.

Parameters
[in]locationwhere the balance is performed
[in]sizesize of arrays in the structure
Returns
a pointer to the new allocated structure

◆ cs_equation_balance_destroy()

void cs_equation_balance_destroy ( cs_equation_balance_t **  p_balance)

Free a cs_equation_balance_t structure.

Parameters
[in,out]p_balancepointer to the pointer to free

◆ cs_equation_balance_reset()

void cs_equation_balance_reset ( cs_equation_balance_t b)

Reset a cs_equation_balance_t structure.

Parameters
[in,out]bpointer to a cs_equation_balance_t to reset

◆ cs_equation_balance_sync()

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.

Parameters
[in]connectpointer to a cs_cdo_connect_t structure
[in,out]bpointer to a cs_equation_balance_t to rsync

◆ cs_equation_cell_mesh_flag()

static cs_flag_t cs_equation_cell_mesh_flag ( cs_flag_t  cell_flag,
const cs_equation_builder_t eqb 
)
inlinestatic

Retrieve the flag to give for building a cs_cell_mesh_t structure.

Parameters
[in]cell_flagflag related to the current cell
[in]eqbpointer to a cs_equation_builder_t structure
Returns
the flag to set for the current cell

◆ cs_equation_common_finalize()

void cs_equation_common_finalize ( void  )

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 to the scheme flag The size of the temporary buffer can be bigger according to the numerical settings.

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 to the scheme flag The size of the temporary buffer can be bigger according to the numerical settings.

◆ cs_equation_common_init()

void cs_equation_common_init ( const cs_cdo_connect_t connect,
const cs_cdo_quantities_t quant,
const cs_time_step_t time_step,
cs_flag_t  vb_flag,
cs_flag_t  vcb_flag,
cs_flag_t  fb_flag,
cs_flag_t  hho_flag 
)

Allocate a pointer to a buffer of size at least the n_cells for managing temporary usage of memory when dealing with equations The size of the temporary buffer can be bigger according to the numerical settings Set also shared pointers from the main domain members.

Parameters
[in]connectpointer to a cs_cdo_connect_t structure
[in]quantpointer to additional mesh quantities struct.
[in]time_steppointer to a time step structure
[in]vb_flagmetadata for Vb schemes
[in]vcb_flagmetadata for V+C schemes
[in]fb_flagmetadata for Fb schemes
[in]hho_flagmetadata for HHO schemes

◆ cs_equation_enforced_internal_block_dofs()

void cs_equation_enforced_internal_block_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. Case of matrices defined by blocks. 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

Parameters
[in]eqppointer to a cs_equation_param_t struct.
[in,out]cbpointer to a cs_cell_builder_t structure
[in,out]csysstructure storing the cell-wise system

◆ cs_equation_enforced_internal_dofs()

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

Parameters
[in]eqppointer to a cs_equation_param_t struct.
[in,out]cbpointer to a cs_cell_builder_t structure
[in,out]csysstructure storing the cell-wise system

◆ cs_equation_free_builder()

void cs_equation_free_builder ( cs_equation_builder_t **  p_builder)

Free a cs_equation_builder_t structure.

Parameters
[in,out]p_builderpointer of pointer to the cs_equation_builder_t structure to free

◆ cs_equation_get_tmpbuf()

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.

Returns
a pointer to an array of double

◆ cs_equation_get_tmpbuf_size()

size_t cs_equation_get_tmpbuf_size ( void  )

Get the allocation size of the temporary buffer.

Returns
the size of the temporary buffer

◆ cs_equation_init_builder()

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 an cs_equation_t structure.

Parameters
[in]eqppointer to a cs_equation_param_t structure
[in]meshpointer to a cs_mesh_t structure
Returns
a pointer to a new allocated cs_equation_builder_t structure

Allocate a new structure to handle the building of algebraic system related to an cs_equation_t structure.

Parameters
[in]eqppointer to a cs_equation_param_t structure
[in]meshpointer to a cs_mesh_t structure
Returns
a pointer to a new allocated cs_equation_builder_t structure

◆ cs_equation_init_properties()

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.

Parameters
[in]eqppointer to a cs_equation_param_t structure
[in]eqbpointer to a cs_equation_builder_t structure
[in]t_evaltime at which one performs the evaluation
[in,out]cbpointer to a cs_cell_builder_t structure (diffusion property is stored inside)

◆ cs_equation_init_properties_cw()

void cs_equation_init_properties_cw ( const cs_equation_param_t eqp,
const cs_equation_builder_t eqb,
const cs_real_t  t_eval,
const cs_flag_t  cell_flag,
const cs_cell_mesh_t cm,
cs_cell_builder_t cb 
)

Initialize all properties for a given cell when building the algebraic system. If the property is uniform, a first call has to be done before the loop on cells Call cs_eqution_init_properties for instance.

Parameters
[in]eqppointer to a cs_equation_param_t structure
[in]eqbpointer to a cs_equation_builder_t structure
[in]t_evaltime at which one performs the evaluation
[in]cell_flagflag related to the current cell
[in]cmpointer to a cs_cell_mesh_t structure
[in,out]cbpointer to a cs_cell_builder_t structure (diffusion property is stored inside)

◆ cs_equation_prepare_system()

cs_gnum_t cs_equation_prepare_system ( int  stride,
cs_lnum_t  x_size,
const cs_matrix_t matrix,
cs_range_set_t rset,
cs_real_t x,
cs_real_t b 
)

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.

Parameters
[in]stridestride to apply to the range set operations
[in]x_sizesize of the vector unknows (scatter view)
[in]matrixpointer to a cs_matrix_t structure
[in]rsetpointer to a range set structure
[in,out]xarray of unknows (in: initial guess)
[in,out]bright-hand side
Returns
the number of non-zeros in the matrix

◆ cs_equation_set_diffusion_property()

void cs_equation_set_diffusion_property ( const cs_equation_param_t eqp,
const cs_lnum_t  c_id,
const cs_real_t  t_eval,
const cs_flag_t  c_flag,
cs_cell_builder_t cb 
)
inlinestatic

Set the diffusion property inside a cell and its related quantities.

Parameters
[in]eqppointer to a cs_equation_param_t structure
[in]c_idid of the cell to deal with
[in]t_evaltime at which one performs the evaluation
[in]c_flagflag related to this cell
[in,out]cbpointer to a cs_cell_builder_t structure

◆ cs_equation_set_diffusion_property_cw()

void cs_equation_set_diffusion_property_cw ( const cs_equation_param_t eqp,
const cs_cell_mesh_t cm,
const cs_real_t  t_eval,
const cs_flag_t  c_flag,
cs_cell_builder_t cb 
)
inlinestatic

Set the diffusion property inside a cell and its related quantities. Cellwise version using a cs_cell_mesh_t structure.

Parameters
[in]eqppointer to a cs_equation_param_t structure
[in]cmpointer to a cs_cell_mesh_t structure
[in]t_evaltime at which one performs the evaluation
[in]c_flagflag related to this cell
[in,out]cbpointer to a cs_cell_builder_t structure

◆ cs_equation_write_monitoring()

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.

Parameters
[in]eqnamepointer to the name of the current equation
[in]eqbpointer to a cs_equation_builder_t structure