8.0
general documentation
cs_equation_param.h File Reference
#include "cs_advection_field.h"
#include "cs_enforcement.h"
#include "cs_hodge.h"
#include "cs_iter_algo.h"
#include "cs_param_cdo.h"
#include "cs_param_sles.h"
#include "cs_property.h"
#include "cs_xdef.h"
+ Include dependency graph for cs_equation_param.h:

Go to the source code of this file.

Data Structures

struct  cs_equation_param_t
 Set of parameters to handle an unsteady convection-diffusion-reaction equation with term sources. More...
 

Macros

Flags specifying the behavior of an equation (activated terms like the

convection, diffusion, etc.).

#define CS_EQUATION_LOCKED   (1 << 0) /* 1 */
 Parameters for setting an equation are not modifiable anymore. More...
 
#define CS_EQUATION_UNSTEADY   (1 << 1) /* 2 */
 Unsteady term is needed. More...
 
#define CS_EQUATION_CONVECTION   (1 << 2) /* 4 */
 Convection term is needed. More...
 
#define CS_EQUATION_DIFFUSION   (1 << 3) /* 8 */
 Diffusion term is needed. A scalar-/vector-valued Laplacian with div .grad. More...
 
#define CS_EQUATION_CURLCURL   (1 << 4) /* 16 */
 The term related to the curl-curl operator is needed. More...
 
#define CS_EQUATION_GRADDIV   (1 << 5) /* 32 */
 The term related to the grad-div operator is needed. More...
 
#define CS_EQUATION_REACTION   (1 << 6) /* 64 */
 Reaction term is needed. More...
 
#define CS_EQUATION_FORCE_VALUES   (1 << 7) /* 128 */
 Add an algebraic manipulation to set the value of a given set of interior degrees of freedom. More...
 
#define CS_EQUATION_INSIDE_SYSTEM   (1 << 8) /* 256 */
 The current equation settings belong to a system of equation. More...
 
#define CS_EQUATION_BUILD_HOOK   (1 << 9) /* 512 */
 Activate a build hook function to get a fine control of the discretization process during the cellwise building of the linear system. Need a function matching the cs_equation_build_hook_t prototype. More...
 
#define CS_EQUATION_USER_TRIGGERED   (1 << 10) /* 1024 */
 The stage at which the equation is solved is driven by the user. So, this user-defined equation is not solved at the same time as the other user-defined equations. More...
 
Flags specifying which extra operation related to an equation is

needed.

#define CS_EQUATION_POST_BALANCE   (1 << 0) /* 1 */
 Compute and postprocess the equation balance. More...
 
#define CS_EQUATION_POST_PECLET   (1 << 1) /* 2 */
 Compute and postprocess the Peclet number. More...
 
#define CS_EQUATION_POST_UPWIND_COEF   (1 << 2) /* 4 */
 Postprocess the value of the upwinding coefficient. Only useful if variable coefficient controls the amount of upwinding. For instant, in schemes such as Schaffeter-Gummel, the upwind portion is driven by the local Peclet number. More...
 
#define CS_EQUATION_POST_NORMAL_FLUX   (1 << 3) /* 8 */
 Postprocess the value of the normal flux across the boundary faces. More...
 

Enumerations

enum  cs_equation_type_t {
  CS_EQUATION_TYPE_GROUNDWATER , CS_EQUATION_TYPE_MAXWELL , CS_EQUATION_TYPE_NAVSTO , CS_EQUATION_TYPE_PREDEFINED ,
  CS_EQUATION_TYPE_THERMAL , CS_EQUATION_TYPE_SOLIDIFICATION , CS_EQUATION_TYPE_USER , CS_EQUATION_N_TYPES
}
 Type of equations managed by the solver. More...
 
enum  cs_equation_key_t {
  CS_EQKEY_ADV_EXTRAPOL , CS_EQKEY_ADV_FORMULATION , CS_EQKEY_ADV_SCHEME , CS_EQKEY_ADV_STRATEGY ,
  CS_EQKEY_ADV_UPWIND_PORTION , CS_EQKEY_AMG_TYPE , CS_EQKEY_BC_ENFORCEMENT , CS_EQKEY_BC_QUADRATURE ,
  CS_EQKEY_BC_STRONG_PENA_COEFF , CS_EQKEY_BC_WEAK_PENA_COEFF , CS_EQKEY_DO_LUMPING , CS_EQKEY_DOF_REDUCTION ,
  CS_EQKEY_EXTRA_OP , CS_EQKEY_HODGE_DIFF_ALGO , CS_EQKEY_HODGE_DIFF_COEF , CS_EQKEY_HODGE_TIME_ALGO ,
  CS_EQKEY_HODGE_REAC_ALGO , CS_EQKEY_ITSOL , CS_EQKEY_ITSOL_EPS , CS_EQKEY_ITSOL_MAX_ITER ,
  CS_EQKEY_ITSOL_RESNORM_TYPE , CS_EQKEY_ITSOL_RESTART , CS_EQKEY_ITSOL_RTOL , CS_EQKEY_OMP_ASSEMBLY_STRATEGY ,
  CS_EQKEY_PRECOND , CS_EQKEY_PRECOND_BLOCK_TYPE , CS_EQKEY_SADDLE_PRECOND , CS_EQKEY_SADDLE_RTOL ,
  CS_EQKEY_SADDLE_SOLVER , CS_EQKEY_SADDLE_VERBOSITY , CS_EQKEY_SCHUR_APPROX , CS_EQKEY_SLES_VERBOSITY ,
  CS_EQKEY_SOLVER_FAMILY , CS_EQKEY_SPACE_SCHEME , CS_EQKEY_TIME_SCHEME , CS_EQKEY_TIME_THETA ,
  CS_EQKEY_VERBOSITY , CS_EQKEY_N_KEYS
}
 List of available keys for setting the parameters of an equation. More...
 

Functions

static void cs_equation_param_set_flag (cs_equation_param_t *eqp, cs_flag_t flag)
 Update the flag related to a cs_equation_param_t structure. More...
 
static bool cs_equation_param_has_diffusion (const cs_equation_param_t *eqp)
 Ask if the parameters of the equation needs a diffusion term. More...
 
static bool cs_equation_param_has_curlcurl (const cs_equation_param_t *eqp)
 Ask if the parameters of the equation needs a curl-curl term. More...
 
static bool cs_equation_param_has_graddiv (const cs_equation_param_t *eqp)
 Ask if the parameters of the equation needs a grad-div term. More...
 
static bool cs_equation_param_has_convection (const cs_equation_param_t *eqp)
 Ask if the parameters of the equation needs a convection term. More...
 
static bool cs_equation_param_has_reaction (const cs_equation_param_t *eqp)
 Ask if the parameters of the equation needs a reaction term. More...
 
static bool cs_equation_param_has_time (const cs_equation_param_t *eqp)
 Ask if the parameters of the equation needs an unsteady term. More...
 
static bool cs_equation_param_has_sourceterm (const cs_equation_param_t *eqp)
 Ask if the parameters of the equation needs a source term. More...
 
static bool cs_equation_param_has_internal_enforcement (const cs_equation_param_t *eqp)
 Ask if the parameters of the equation has an internal enforcement of the degrees of freedom. More...
 
static bool cs_equation_param_has_implicit_advection (const cs_equation_param_t *eqp)
 Ask if the parameters of the equation induces an implicit treatment of the advection term. More...
 
static bool cs_equation_param_has_user_hook (const cs_equation_param_t *eqp)
 Ask if the parameters of the equation has activated a user hook to get a fine tuning of the cellwise system building. More...
 
static bool cs_equation_param_has_name (cs_equation_param_t *eqp, const char *name)
 Check if a cs_equation_param_t structure has its name member equal to the given name. More...
 
cs_equation_param_tcs_equation_param_create (const char *name, cs_equation_type_t type, int dim, cs_param_bc_type_t default_bc)
 Create a cs_equation_param_t structure. More...
 
static cs_equation_param_tcs_equation_create_param (const char *name, cs_equation_type_t type, int dim, cs_param_bc_type_t default_bc)
 Create a cs_equation_param_t structure. More...
 
void cs_equation_param_copy_from (const cs_equation_param_t *ref, cs_equation_param_t *dst, bool copy_fld_id)
 Copy the settings from one cs_equation_param_t structure to another one. The name is not copied. More...
 
void cs_equation_param_copy_bc (const cs_equation_param_t *ref, cs_equation_param_t *dst)
 Copy only the part dedicated to the boundary conditions and the DoF (degrees of freedom) enforcement from one cs_equation_param_t structure to another one. More...
 
static void cs_equation_copy_param_from (const cs_equation_param_t *ref, cs_equation_param_t *dst, bool copy_fid)
 Copy the settings from one cs_equation_param_t structure to another one. The name is not copied. More...
 
void cs_equation_param_clear (cs_equation_param_t *eqp)
 Free the contents of a cs_equation_param_t. More...
 
static void cs_equation_clear_param (cs_equation_param_t *eqp)
 Free the contents of a cs_equation_param_t. More...
 
cs_equation_param_tcs_equation_param_free (cs_equation_param_t *eqp)
 Free a cs_equation_param_t. More...
 
static cs_equation_param_tcs_equation_free_param (cs_equation_param_t *eqp)
 Free a cs_equation_param_t. More...
 
void cs_equation_param_set (cs_equation_param_t *eqp, cs_equation_key_t key, const char *keyval)
 Set a parameter attached to a keyname in a cs_equation_param_t structure. More...
 
static void cs_equation_set_param (cs_equation_param_t *eqp, cs_equation_key_t key, const char *keyval)
 Set a parameter attached to a keyname in a cs_equation_param_t structure. More...
 
void cs_equation_param_set_sles (cs_equation_param_t *eqp)
 Set parameters for initializing SLES structures used for the resolution of the linear system. Settings are related to this equation. More...
 
void cs_equation_param_lock_settings (cs_equation_param_t *eqp)
 Lock settings to prevent from unwanted modifications. More...
 
void cs_equation_param_unlock_settings (cs_equation_param_t *eqp)
 Unlock settings. Be sure that is really wanted (inconsistency between the setup logging and what is used may appear) More...
 
void cs_equation_param_ensure_consistent_settings (cs_equation_param_t *eqp)
 At this stage, the numerical settings should not be modified anymore by the user. One makes a last set of modifications if needed to ensure a consistent numerical settings. More...
 
void cs_equation_param_log (const cs_equation_param_t *eqp)
 Print the detail of a cs_equation_param_t structure. More...
 
bool cs_equation_param_has_robin_bc (const cs_equation_param_t *eqp)
 Ask if the parameter settings of the equation has requested the treatment of Robin boundary conditions. More...
 
cs_xdef_tcs_equation_add_ic_by_value (cs_equation_param_t *eqp, const char *z_name, cs_real_t *val)
 Define the initial condition for the unknown related to this equation. This definition applies to a volume zone. By default, the unknown is set to zero everywhere. Here a constant value is set to all the unknows belonging to the given zone with name z_name. More...
 
cs_xdef_tcs_equation_add_ic_by_qov (cs_equation_param_t *eqp, const char *z_name, double quantity)
 Define the initial condition for the unknown related to this equation. This definition applies to a volume zone. By default, the unknown is set to zero everywhere. Here the value set to each unknown belonging to the given zone with name z_name is such that the integral over the cells of the zone returns the requested quantity. More...
 
cs_xdef_tcs_equation_add_ic_by_analytic (cs_equation_param_t *eqp, const char *z_name, cs_analytic_func_t *analytic, void *input)
 Define the initial condition for the unknown related to this equation. This definition applies to a volume zone. By default, the unknown is set to zero everywhere. Here the initial value for each unknown associated to the zone with name z_name is set according to an analytical function. More...
 
cs_xdef_tcs_equation_add_ic_by_dof_func (cs_equation_param_t *eqp, const char *z_name, cs_flag_t loc_flag, cs_dof_func_t *func, void *input)
 Define the initial condition for the unknown related to this equation. This definition applies to a volume zone. By default, the unknown is set to zero everywhere. Case of a definition by a DoF function. More...
 
void cs_equation_add_xdef_bc (cs_equation_param_t *eqp, cs_xdef_t *xdef)
 Set a boundary condition from an existing cs_xdef_t structure The lifecycle of the cs_xdef_t structure is now managed by the current cs_equation_param_t structure. More...
 
cs_xdef_tcs_equation_add_bc_by_value (cs_equation_param_t *eqp, const cs_param_bc_type_t bc_type, const char *z_name, cs_real_t *values)
 Define and initialize a new structure to set a boundary condition related to the given equation structure z_name corresponds to the name of a pre-existing cs_zone_t. More...
 
cs_xdef_tcs_equation_add_bc_by_array (cs_equation_param_t *eqp, const cs_param_bc_type_t bc_type, const char *z_name, cs_flag_t loc, cs_real_t *array, bool is_owner, bool full_length)
 Define and initialize a new structure to set a boundary condition related to the given equation structure z_name corresponds to the name of a pre-existing cs_zone_t. More...
 
cs_xdef_tcs_equation_add_bc_by_field (cs_equation_param_t *eqp, const cs_param_bc_type_t bc_type, const char *z_name, cs_field_t *field)
 Define and initialize a new structure to set a boundary condition related to the given equation structure z_name corresponds to the name of a pre-existing cs_zone_t. More...
 
cs_xdef_tcs_equation_add_bc_by_analytic (cs_equation_param_t *eqp, const cs_param_bc_type_t bc_type, const char *z_name, cs_analytic_func_t *analytic, void *input)
 Define and initialize a new structure to set a boundary condition related to the given equation param structure ml_name corresponds to the name of a pre-existing cs_mesh_location_t. More...
 
cs_xdef_tcs_equation_add_bc_by_dof_func (cs_equation_param_t *eqp, const cs_param_bc_type_t bc_type, const char *z_name, cs_flag_t loc_flag, cs_dof_func_t *func, void *input)
 Define and initialize a new structure to set a boundary condition related to the given cs_equation_param_t structure ml_name corresponds to the name of a pre-existing cs_mesh_location_t. More...
 
cs_xdef_tcs_equation_find_bc (cs_equation_param_t *eqp, const char *z_name)
 Return pointer to existing boundary condition definition structure for the given equation param structure and zone. More...
 
void cs_equation_remove_bc (cs_equation_param_t *eqp, const char *z_name)
 Remove boundary condition from the given equation param structure for a given zone. More...
 
void cs_equation_add_sliding_condition (cs_equation_param_t *eqp, const char *z_name)
 Define and initialize a new structure to set a sliding boundary condition related to the given equation structure z_name corresponds to the name of a pre-existing cs_zone_t. More...
 
void cs_equation_add_diffusion (cs_equation_param_t *eqp, cs_property_t *property)
 Associate a new term related to the Laplacian operator for the equation associated to the given cs_equation_param_t structure Laplacian means div-grad (either for vector-valued or scalar-valued equations) More...
 
void cs_equation_add_curlcurl (cs_equation_param_t *eqp, cs_property_t *property, int inversion)
 Associate a new term related to the curl-curl operator for the equation associated to the given cs_equation_param_t structure. More...
 
void cs_equation_add_graddiv (cs_equation_param_t *eqp, cs_property_t *property)
 Associate a new term related to the grad-div operator for the equation associated to the given cs_equation_param_t structure. More...
 
void cs_equation_add_time (cs_equation_param_t *eqp, cs_property_t *property)
 Associate a new term related to the time derivative operator for the equation associated to the given cs_equation_param_t structure. More...
 
void cs_equation_add_advection (cs_equation_param_t *eqp, cs_adv_field_t *adv_field)
 Associate a new term related to the advection operator for the equation associated to the given cs_equation_param_t structure. More...
 
void cs_equation_add_advection_scaling_property (cs_equation_param_t *eqp, cs_property_t *property)
 Associate a scaling property to the advection. More...
 
int cs_equation_add_reaction (cs_equation_param_t *eqp, cs_property_t *property)
 Associate a new term related to the reaction operator for the equation associated to the given cs_equation_param_t structure. More...
 
cs_xdef_tcs_equation_add_source_term_by_val (cs_equation_param_t *eqp, const char *z_name, cs_real_t *val)
 Add a new source term by initializing a cs_xdef_t structure. Case of a definition by a constant value. More...
 
cs_xdef_tcs_equation_add_source_term_by_analytic (cs_equation_param_t *eqp, const char *z_name, cs_analytic_func_t *func, void *input)
 Add a new source term by initializing a cs_xdef_t structure. Case of a definition by an analytical function. More...
 
cs_xdef_tcs_equation_add_source_term_by_dof_func (cs_equation_param_t *eqp, const char *z_name, cs_flag_t loc_flag, cs_dof_func_t *func, void *input)
 Add a new source term by initializing a cs_xdef_t structure. Case of a definition by a DoF function. More...
 
cs_xdef_tcs_equation_add_source_term_by_array (cs_equation_param_t *eqp, const char *z_name, cs_flag_t loc, cs_real_t *array, bool is_owner, bool full_length)
 Add a new source term by initializing a cs_xdef_t structure. Case of a definition by an array. More...
 
cs_xdef_tcs_equation_add_volume_mass_injection_by_value (cs_equation_param_t *eqp, const char *z_name, double *val)
 Add a new volume mass injection definition source term by initializing a cs_xdef_t structure, using a constant value. More...
 
cs_xdef_tcs_equation_add_volume_mass_injection_by_qov (cs_equation_param_t *eqp, const char *z_name, double *quantity)
 Add a new volume mass injection definition source term by initializing a cs_xdef_t structure, using a constant quantity distributed over the associated zone's volume. More...
 
cs_xdef_tcs_equation_add_volume_mass_injection_by_analytic (cs_equation_param_t *eqp, const char *z_name, cs_analytic_func_t *func, void *input)
 Add a new volume mass injection definition source term by initializing a cs_xdef_t structure, using an analytical function. More...
 
cs_xdef_tcs_equation_add_volume_mass_injection_by_dof_func (cs_equation_param_t *eqp, const char *z_name, cs_flag_t loc_flag, cs_dof_func_t *func, void *input)
 Add a new volume mass injection definition source term by initializing a cs_xdef_t structure, using a DoF function. More...
 
cs_enforcement_param_tcs_equation_add_vertex_dof_enforcement (cs_equation_param_t *eqp, cs_lnum_t n_vertices, const cs_lnum_t vertex_ids[], const cs_real_t ref_value[], const cs_real_t vtx_values[])
 Add an enforcement of the value of degrees of freedom located at the mesh vertices. The spatial discretization scheme for the given equation has to be CDO vertex-based or CDO vertex+cell-based schemes. More...
 
cs_enforcement_param_tcs_equation_add_edge_dof_enforcement (cs_equation_param_t *eqp, cs_lnum_t n_edges, const cs_lnum_t edge_ids[], const cs_real_t ref_value[], const cs_real_t edge_values[])
 Add an enforcement of the value of degrees of freedom located at the mesh edges. The spatial discretization scheme for the given equation has to be CDO edge-based schemes. More...
 
cs_enforcement_param_tcs_equation_add_face_dof_enforcement (cs_equation_param_t *eqp, cs_lnum_t n_faces, const cs_lnum_t face_ids[], const cs_real_t ref_value[], const cs_real_t face_values[])
 Add an enforcement of the value of degrees of freedom located at the mesh faces. The spatial discretization scheme for the given equation has to be CDO face-based schemes. More...
 
cs_enforcement_param_tcs_equation_add_cell_enforcement (cs_equation_param_t *eqp, cs_lnum_t n_cells, const cs_lnum_t elt_ids[], const cs_real_t ref_value[], const cs_real_t cell_values[])
 Add an enforcement of the value related to the degrees of freedom associated to the list of selected cells. More...
 
cs_enforcement_param_tcs_equation_add_or_replace_cell_enforcement (cs_equation_param_t *eqp, int enforcement_id, cs_lnum_t n_cells, const cs_lnum_t cell_ids[], const cs_real_t ref_value[], const cs_real_t cell_values[])
 Add a new enforcement if enforcement_id does not exist or replace it otherwise. Enforcement of the value related to the degrees of freedom associated to the list of selected cells. More...
 

Macro Definition Documentation

◆ CS_EQUATION_BUILD_HOOK

#define CS_EQUATION_BUILD_HOOK   (1 << 9) /* 512 */

Activate a build hook function to get a fine control of the discretization process during the cellwise building of the linear system. Need a function matching the cs_equation_build_hook_t prototype.

◆ CS_EQUATION_CONVECTION

#define CS_EQUATION_CONVECTION   (1 << 2) /* 4 */

Convection term is needed.

◆ CS_EQUATION_CURLCURL

#define CS_EQUATION_CURLCURL   (1 << 4) /* 16 */

The term related to the curl-curl operator is needed.

◆ CS_EQUATION_DIFFUSION

#define CS_EQUATION_DIFFUSION   (1 << 3) /* 8 */

Diffusion term is needed. A scalar-/vector-valued Laplacian with div .grad.

◆ CS_EQUATION_FORCE_VALUES

#define CS_EQUATION_FORCE_VALUES   (1 << 7) /* 128 */

Add an algebraic manipulation to set the value of a given set of interior degrees of freedom.

◆ CS_EQUATION_GRADDIV

#define CS_EQUATION_GRADDIV   (1 << 5) /* 32 */

The term related to the grad-div operator is needed.

◆ CS_EQUATION_INSIDE_SYSTEM

#define CS_EQUATION_INSIDE_SYSTEM   (1 << 8) /* 256 */

The current equation settings belong to a system of equation.

◆ CS_EQUATION_LOCKED

#define CS_EQUATION_LOCKED   (1 << 0) /* 1 */

Parameters for setting an equation are not modifiable anymore.

◆ CS_EQUATION_POST_BALANCE

#define CS_EQUATION_POST_BALANCE   (1 << 0) /* 1 */

Compute and postprocess the equation balance.

◆ CS_EQUATION_POST_NORMAL_FLUX

#define CS_EQUATION_POST_NORMAL_FLUX   (1 << 3) /* 8 */

Postprocess the value of the normal flux across the boundary faces.

◆ CS_EQUATION_POST_PECLET

#define CS_EQUATION_POST_PECLET   (1 << 1) /* 2 */

Compute and postprocess the Peclet number.

◆ CS_EQUATION_POST_UPWIND_COEF

#define CS_EQUATION_POST_UPWIND_COEF   (1 << 2) /* 4 */

Postprocess the value of the upwinding coefficient. Only useful if variable coefficient controls the amount of upwinding. For instant, in schemes such as Schaffeter-Gummel, the upwind portion is driven by the local Peclet number.

◆ CS_EQUATION_REACTION

#define CS_EQUATION_REACTION   (1 << 6) /* 64 */

Reaction term is needed.

◆ CS_EQUATION_UNSTEADY

#define CS_EQUATION_UNSTEADY   (1 << 1) /* 2 */

Unsteady term is needed.

◆ CS_EQUATION_USER_TRIGGERED

#define CS_EQUATION_USER_TRIGGERED   (1 << 10) /* 1024 */

The stage at which the equation is solved is driven by the user. So, this user-defined equation is not solved at the same time as the other user-defined equations.

Enumeration Type Documentation

◆ cs_equation_key_t

List of available keys for setting the parameters of an equation.

Enumerator
CS_EQKEY_ADV_EXTRAPOL 

Choice in the way to extrapolate the advection field when building the advection operator

CS_EQKEY_ADV_FORMULATION 

Kind of formulation of the advective term. Available choices are:

  • "conservative"
  • "non_conservative"
CS_EQKEY_ADV_SCHEME 

Type of numerical scheme for the advective term. The available choices depend on the space discretization scheme.

CS_EQKEY_ADV_STRATEGY 

Strategy used to handle the advection term

  • "fully_implicit" or "implicit" (default choice)
  • "linearized" or "implicit_linear"
  • "explicit" There is a difference between the two first choices when the advection term induces a non-linearity. In this situation, the first choice implies that a non-linear algorithm has to be used.
CS_EQKEY_ADV_UPWIND_PORTION 

Value between 0 and 1 specifying the portion of upwind added to a centered discretization.

CS_EQKEY_AMG_TYPE 

Specify which type of algebraic multigrid (AMG) to choose. Available choices are:

  • "none" --> (default) No predefined AMG solver
  • "boomer"/"boomer_v" --> Boomer AMG V-cycle multigrid from the Hypre library
  • "boomer_w" --> Boomer AMG W-cycle multigrid from the Hypre library
  • "gamg"/"gamg_v" --> GAMG V-cycle multigrid from the PETSc library
  • "gamg_w" --> GAMG W-cycle multigrid from the PETSc library
  • "pcmg" --> MG multigrid as preconditioner from the PETSc library
  • "v_cycle" --> code_saturne's built-in multigrid with a V-cycle strategy
  • "k_cycle" --> code_saturne's built-in multigrid with a K-cycle strategy WARNING: When selecting "boomer", "boomer_w" and "gamg"/"gamg_w", one needs to install code_saturne with the PETSc library and PETSc with Hypre if one wants to use boomeramg
CS_EQKEY_BC_ENFORCEMENT 

Set the type of enforcement of the boundary conditions. Available choices are:

  • "algebraic": Modify the linear system so as to add the contribution of the Dirichlet in the right-hand side and replace the line associated to a Dirichlet BC by identity. This is a good choice for pure diffusinon or pure convection problem.
  • "penalization": Add a huge penalization coefficient on the diagonal term of the line related to DoFs associated a Dirichlet BC. The right-hand side is also modified to take into account this penalization. Be aware that it may worsen the matrix conditioning.
  • "weak": weak enforcement using the Nitsche method (there is also penalization term but the scaling is such that a moderate value (1-100) of the penalization coefficient is sufficient). This a good choice for convection/diffusion problem.
  • "weak_sym": Same as the "weak" option but with a modification so as to add a symmetric contribution to the system. If the problem yields a symmetric matrix. This choice is more relevant than "weak". This a good choice for a diffusion problem.

For HHO and CDO-Face based schemes, only the "penalization" and "algebraic" technique is available up to now.

CS_EQKEY_BC_QUADRATURE 

Set the quadrature algorithm used for evaluating integral quantities on faces or volumes. Available choices are:

  • "bary" used the barycenter approximation
  • "higher" used 4 Gauss points for approximating the integral
  • "highest" used 5 Gauss points for approximating the integral

Remark: "higher" and "highest" implies automatically a subdivision into tetrahedra of each cell.

CS_EQKEY_BC_STRONG_PENA_COEFF 

Set the value of the penalization coefficient when "penalization" is activated The default value is 1e12. cf. CS_PARAM_BC_ENFORCE_PENALIZED

CS_EQKEY_BC_WEAK_PENA_COEFF 

Set the value of the penalization coefficient when "weak" or "weak_sym" is activated. The default value is 100. cf. CS_PARAM_BC_ENFORCE_WEAK_NITSCHE or CS_PARAM_BC_ENFORCE_WEAK_SYM

CS_EQKEY_DO_LUMPING 
CS_EQKEY_DOF_REDUCTION 

Set how is defined each degree of freedom (DoF).

  • "de_rham" (default): Evaluation at vertices for potentials, integral along a line for circulations, integral across the normal component of a face for fluxes and integral inside a cell for densities
  • "average": DoF are defined as the average on the element
CS_EQKEY_EXTRA_OP 

Set the additional post-processing to perform. Available choices are:

  • "balance" post-process the balance result in each control volume for each main term of an equation (diffusion, convection, time...)
  • "peclet" post-process an estimation of the Peclet number in each cell
  • "upwind_coef" post-process an estimation of the upwinding coefficient
  • "normal_flux" post-process the normal flux across boundary faces
CS_EQKEY_HODGE_DIFF_ALGO 

Set the algorithm used for building the discrete Hodge operator used in the diffusion term. Available choices are:

  • "voronoi" --> leads to a diagonal discrete Hodge operator but is not consistent for all meshes. Require an "orthogonal" (or admissible) mesh; Warning: do not use this algorithm on general meshes.
  • "bubble" --> Reconstruction op. relying on a stabilization which is built with a bubble function associated to edges
  • "cost" or "ocs" --> Orthogonal decomposition of the Consistent and Stabilized part. (cost = COnsitent + STabilized) The stabilization part of the reconstruction op. is a piecewise constant polynom on a partition of each cell
  • "wbs" --> is robust and accurate but is limited to the reconstruction of potential-like degrees of freedom and needs a correct computation of the cell barycenter. Make sense only in the case of a CDOVB or CDOVCB scheme. In the case of tetrahedral meshes, the stiffness matrix is the same as the one encountered in FE P1 schemes
CS_EQKEY_HODGE_DIFF_COEF 

This key is only useful if CS_EQKEY_HODGE_{TIME, DIFF, REAC}_ALGO is set to "cost". keyval is either a name or a value:

  • "dga" corresponds to the value $ 1./3. $
  • "sushi" corresponds to the value $1./\sqrt(3.)$
  • "gcr" corresponds to the value $1$.
  • "frac23" or "2/3" corresponds to the value $2./3.$.
  • use an expression like "1.5", "9" for a user-defined value
CS_EQKEY_HODGE_TIME_ALGO 

Set the algorithm used for building the discrete Hodge operator used in the unsteady term. Available choices are:

  • "voronoi" --> (default) leads to diagonal discrete Hodge operator. It acts as a mass lumping.
  • "wbs" is robust and accurate but is less efficient. It needs a correct computation of the cell barycenter
CS_EQKEY_HODGE_REAC_ALGO 

Set the algorithm used for building the discrete Hodge operator used in the reaction term. Available choices are:

  • "voronoi" --> leads to diagonal discrete Hodge operator (similar to a lumping).
  • "wbs" --> (default) is robust and accurate but is limited to the reconstruction of potential-like degrees of freedom and needs a correct computation of the cell barycenter
CS_EQKEY_ITSOL 

Specify the iterative solver for solving the linear system related to an equation. Avalaible choices are:

  • "amg" --> Algebraic MultiGrid iterative solver. Good choice for a scalable solver related to symmetric positive definite system.
  • "jacobi","diag" or "diagonal" --> simpliest iterative solver
  • "gauss_seidel" or "gs" --> Gauss-Seidel algorithm
  • "cg" --> conjuguate gradient algorithm
  • "cr3" --> a 3-layer conjugate residual solver (when "cs" is chosen as the solver family)
  • "fcg" --> flexible version of the conjuguate gradient algorithm used when the preconditioner can change iteration by iteration
  • "bicg" --> Bi-CG algorithm (for non-symmetric linear systems)
  • "bicgstab2" --> BiCG-Stab2 algorithm (for non-symmetric linear systems)
  • "gcr" --> robust and flexible iterative solver. Not the best choice if the system is easy to solve
  • "gmres" --> robust iterative solver. Not the best choice if the system is easy to solve
  • "fgmres" --> Flexible gmres (only with PETSc installation up to now). An evolutive preconditioner can be used with this solver. This is a very robust iterative solver. Not the best choice if the system is easy to solve
  • "minres" --> Solver of choice for symmetric indefinite systems
  • "mumps" --> Direct solver (MUMPS or PETSc) LU factorization on general matrices
  • "mumps_sym" --> Direct solver (only MUMPS) LU factorization on general symmetric matrices
  • "mumps_ldlt" --> Direct solver (only MUMPS). LDLT factorization for SPD matrices
  • "mumps_float" --> Direct solver (only MUMPS). or "smumps" LU factorization on general matrices. Reduced memory footprint thanks to the usage of float instead of double. Well-suited when embedded inside an iterative process
  • "smumps_ldlt" --> Direct solver (only MUMPS). or "mumps_float_ldlt" LDLT factorization for SPD matrices Reduced memory footprint thanks to the usage of float instead of double. Well-suited when embedded inside an iterative process
  • "smumps_sym" --> Direct solver (only MUMPS). or "mumps_float_sym" LU factorization for general symmetric matrices Reduced memory footprint thanks to the usage of float instead of double. Well-suited when embedded inside an iterative process
  • "sym_gauss_seidel" or "sgs" --> Symmetric Gauss-Seidel algorithm
  • "user" --> User-defined iterative solver (rely on the function cs_user_sles_it_solver())
  • "none" --> No solver.
CS_EQKEY_ITSOL_EPS 

Tolerance factor for stopping the iterative process for solving the linear system related to an equation

  • Example: "1e-10"
CS_EQKEY_ITSOL_MAX_ITER 

Maximum number of iterations for solving the linear system

  • Example: "2000"
CS_EQKEY_ITSOL_RESNORM_TYPE 

Normalized or not the residual before testing if one continues iterating for solving the linear system. This normalization is performed before applying the boundary conditions to avoid handling the penalization of Dirichlet boundary conditions. If the RHS norm is equal to zero, then the "vol_tot" option is used for rescaling the residual.

Available choices are: "false" or "none" (default) "rhs" "weighted_rhs" or "weighted" "filtered_rhs" or "filtered_rhs"

CS_EQKEY_ITSOL_RESTART 

Maximum number of iterations before restarting a Krylov solver Only useful with GMRES, flexible GMRES or GCR solvers. This value has an impact on the memory footprint since one has to store a buffer of double with a size equal to restart*sizeof(solution array)

  • Example: "20"
CS_EQKEY_ITSOL_RTOL 

Relative tolerance factor for stopping the iterative process for solving the linear system related to an equation

  • Example: "1e-10"
CS_EQKEY_OMP_ASSEMBLY_STRATEGY 

Choice of the way to perform the assembly when OpenMP is active Available choices are:

  • "atomic" or "critical"
CS_EQKEY_PRECOND 

Specify the preconditioner associated to an iterative solver. Be careful some options are only available with a given solver class. Be sure that your installation has been installed with the appropriate library.
Available choices are:

  • "none": no preconditioner is used
  • "jacobi" or "diag": diagonal preconditoner
  • "block_jacobi"/"bjacobi": Block Jacobi with ILU(0) in each block. A block is the matrix associated to a rank. (Only with PETSc)
  • "bjacobi_sgs"/"bjacobi_ssor": Block Jacobi with Symm. Gauss-Seidel in each block. A block is the matrix associated to a rank. (Only with PETSc)
  • "poly1": Neumann polynomial of order 1 (only with code_saturne)
  • "poly2": Neumann polynomial of order 2 (only with code_saturne)
  • "ssor": symmetric successive over-relaxation (only with PETSC)
  • "ilu0": incomplete LU factorization (only with PETSc)
  • "icc0": incomplete Cholesky factorization (for symmetric matrices and only with PETSc)
  • "lu": LU factorization (only with PETSc). It may use MUMPS ig PETSc is built with MUMPS
  • "amg": algebraic multigrid technique (see CS_EQKEY_AMG_TYPE for additional settings)
  • "amg_block"/"block_amg: algebraic multigrid by block (useful for vector-valued equations). By default, a diagonal block preconditioning is used if nothing else is set.
  • "mumps" --> Direct solver (only MUMPS) LU factorization on general matrices
  • "mumps_sym" --> Direct solver (only MUMPS) LU factorization on general symmetric matrices
  • "mumps_ldlt" --> Direct solver (only MUMPS). LDLT factorization for SPD matrices
  • "mumps_float" --> Direct solver (only MUMPS). or "smumps" LU factorization on general matrices. Reduced memory footprint thanks to the usage of float instead of double. Well-suited when embedded inside an iterative process
  • "smumps_ldlt" --> Direct solver (only MUMPS). or "mumps_float_ldlt" LDLT factorization for SPD matrices Reduced memory footprint thanks to the usage of float instead of double. Well-suited when embedded inside an iterative process
  • "smumps_sym" --> Direct solver (only MUMPS). or "mumps_float_sym" LU factorization for general symmetric matrices Reduced memory footprint thanks to the usage of float instead of double. Well-suited when embedded inside an iterative process
CS_EQKEY_PRECOND_BLOCK_TYPE 

Specify the type of block preconditioner associated to a preconditioner. When "full" is specified. That means that the smallest possible blocks are considered. Be careful: Most of these options are available only with PETSc/HYPRE.
Available choices are:

  • "none": no block preconditioner (default choice)
  • "diag": diagonal (or additive) block preconditoner
  • "lower": lower triangular (multiplicative) block preconditioner
  • "upper": upper triangular (multiplicative) block preconditioner
  • "symm": symmetric Gauss-Seidel block preconditioner
  • "full_diag": full diagonal (or additive) block preconditoner.
  • "full_lower": full lower triangular (multiplicative) block preconditioner
  • "full_upper": upper triangular (multiplicative) block preconditioner
  • "full_symm": symmetric Gauss-Seidel block preconditioner
CS_EQKEY_SADDLE_PRECOND 

Preconditioner used to solve a saddle-point system.
Please refer to cs_param_saddle_precond_t for more details.
Available choices are:

  • "none" No preconditioner is used (default)
  • "diag"
  • "lower"
  • "upper"
CS_EQKEY_SADDLE_RTOL 

Relative tolerance under which the iterative process stops

  • Example: "1e-7"
CS_EQKEY_SADDLE_SOLVER 

Strategy/solver used to solve a saddle-point system.
Available choices are:

  • "none" No solver (default --> no saddle-point system)
  • "gcr" GCR iterative solver
  • "mumps" MUMPS sparse direct solver (external library)
  • "minres" MINRES iterative solver
CS_EQKEY_SADDLE_VERBOSITY 

Level of details displayed for the resolution of a saddle-point system

  • Examples: "0", "1", "2" or higher
CS_EQKEY_SCHUR_APPROX 

Choice of apprixmation of the Schur complement. Only useful when a saddle-point problem has to be solved. Some solvers or choices of preconditioner/solver may not need an approximation of the schur complement. Please refer to cs_param_schur_approx_t for more details.
Available choices are: "none" no Schur approximation --> the identity is used "diag_inv" use the inverse of the (1,1)-block diagonal "lumped_inv" use the inverse of the (1,1)-block after lumping "mass" use a scaled mass matrix for the space related to the (2,2)-block

CS_EQKEY_SLES_VERBOSITY 

Level of details written by the code for the resolution of the linear system

  • Examples: "0", "1", "2" or higher
CS_EQKEY_SOLVER_FAMILY 
CS_EQKEY_SPACE_SCHEME 

Set the space discretization scheme. Available choices are:

  • "cdo_vb" or "cdovb" for CDO vertex-based scheme
  • "cdo_vcb" or "cdovcb" for CDO vertex+cell-based scheme
  • "cdo_fb" or "cdofb" for CDO face-based scheme
  • "cdo_eb" or "cdoeb" for CDO edge-based scheme
  • "cdo_cb" or "cdocb" for CDO cell-based scheme
  • "hho_p1" for HHO schemes with $\mathbb{P}_1$ polynomial approximation
  • "hho_p2" for HHO schemes with $\mathbb{P}_2$ polynomial approximation
CS_EQKEY_TIME_SCHEME 

Set the scheme for the temporal discretization. Available choices are:

  • "euler_implicit" or "forward_euler" (1st order)
  • "euler_explicit" or "backward_euler" (1st order, conditional stability)
  • "theta_scheme": Time scheme encompassing several other schemes according to the value of theta. One recovers for instance "euler_implicit" with theta equal to "1", "euler_explicit" with "0" or "crank_nicolson" with theta equal to "0.5"
  • "crank_nicolson": Shortcut to set a theta scheme with theta equal to 0.5. This time discretization is second_order in time accurate.
  • "bdf2": 2nd order, implicit time scheme
CS_EQKEY_TIME_THETA 

Set a value betwwen 0 and 1 for the theta parameter when a "theta_scheme" is set for the time discretization. Only useful if CS_EQKEY_TIME_SCHEME is set to "theta_scheme".

  • Example: "0.75"
CS_EQKEY_VERBOSITY 

Set the level of details written by the code for an equation. The higher the more detailed information is displayed.

  • "0" (default)
  • "1" detailed setup resume and coarse grain timer stats
  • "2" fine grain for timer stats
CS_EQKEY_N_KEYS 

◆ cs_equation_type_t

Type of equations managed by the solver.

Enumerator
CS_EQUATION_TYPE_GROUNDWATER 

Equation related to the groundwater flow module

CS_EQUATION_TYPE_MAXWELL 

Equation related to the Maxwell module

CS_EQUATION_TYPE_NAVSTO 

Equation related to the resolution of the Navier-Stokes system

  • Example: momentum, prediction, correction, energy...
CS_EQUATION_TYPE_PREDEFINED 

Predefined equation (most part of the setting is already done)

  • Example: equation for the wall distance or ALE
CS_EQUATION_TYPE_THERMAL 

Equation related to the heat transfer

CS_EQUATION_TYPE_SOLIDIFICATION 

Equation related to the solidification module

CS_EQUATION_TYPE_USER 

User-defined equation (no interaction with energy and momentum equations) Resolution is performed after all predefined equations have been solved.

CS_EQUATION_N_TYPES 

Function Documentation

◆ cs_equation_add_advection()

void cs_equation_add_advection ( cs_equation_param_t eqp,
cs_adv_field_t adv_field 
)

Associate a new term related to the advection operator for the equation associated to the given cs_equation_param_t structure.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]adv_fieldpointer to a cs_adv_field_t structure

◆ cs_equation_add_advection_scaling_property()

void cs_equation_add_advection_scaling_property ( cs_equation_param_t eqp,
cs_property_t property 
)

Associate a scaling property to the advection.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]propertypointer to a cs_property_t structure

◆ cs_equation_add_bc_by_analytic()

cs_xdef_t* cs_equation_add_bc_by_analytic ( cs_equation_param_t eqp,
const cs_param_bc_type_t  bc_type,
const char *  z_name,
cs_analytic_func_t analytic,
void *  input 
)

Define and initialize a new structure to set a boundary condition related to the given equation param structure ml_name corresponds to the name of a pre-existing cs_mesh_location_t.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]bc_typetype of boundary condition to add
[in]z_namename of the associated zone (if NULL or "" if all cells are considered)
[in]analyticpointer to an analytic function defining the value
[in]inputNULL or pointer to a structure cast on-the-fly
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_bc_by_array()

cs_xdef_t* cs_equation_add_bc_by_array ( cs_equation_param_t eqp,
const cs_param_bc_type_t  bc_type,
const char *  z_name,
cs_flag_t  loc,
cs_real_t array,
bool  is_owner,
bool  full_length 
)

Define and initialize a new structure to set a boundary condition related to the given equation structure z_name corresponds to the name of a pre-existing cs_zone_t.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]bc_typetype of boundary condition to add
[in]z_namename of the related boundary zone
[in]locinformation to know where are located values
[in]arraypointer to an array
[in]is_ownertransfer the lifecycle to the cs_xdef_t struct. (true or false)
[in]full_lengthif true, size of "array" should be allocated to the total numbers of entities related to the given location. If false, a new list is allocated and filled with the related subset indirection.
Returns
a pointer to the new allocated cs_xdef_t structure

◆ cs_equation_add_bc_by_dof_func()

cs_xdef_t* cs_equation_add_bc_by_dof_func ( cs_equation_param_t eqp,
const cs_param_bc_type_t  bc_type,
const char *  z_name,
cs_flag_t  loc_flag,
cs_dof_func_t func,
void *  input 
)

Define and initialize a new structure to set a boundary condition related to the given cs_equation_param_t structure ml_name corresponds to the name of a pre-existing cs_mesh_location_t.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]bc_typetype of boundary condition to add
[in]z_namename of the associated zone (if NULL or "" if all cells are considered)
[in]loc_flaglocation where values are computed
[in]funcpointer to cs_dof_func_t function
[in]inputNULL or pointer to a structure cast on-the-fly
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_bc_by_field()

cs_xdef_t* cs_equation_add_bc_by_field ( cs_equation_param_t eqp,
const cs_param_bc_type_t  bc_type,
const char *  z_name,
cs_field_t field 
)

Define and initialize a new structure to set a boundary condition related to the given equation structure z_name corresponds to the name of a pre-existing cs_zone_t.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]bc_typetype of boundary condition to add
[in]z_namename of the related boundary zone
[in]fieldpointer to a cs_field_t structure
Returns
a pointer to the new allocated cs_xdef_t structure

◆ cs_equation_add_bc_by_value()

cs_xdef_t* cs_equation_add_bc_by_value ( cs_equation_param_t eqp,
const cs_param_bc_type_t  bc_type,
const char *  z_name,
cs_real_t values 
)

Define and initialize a new structure to set a boundary condition related to the given equation structure z_name corresponds to the name of a pre-existing cs_zone_t.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]bc_typetype of boundary condition to add
[in]z_namename of the related boundary zone
[in]valuespointer to a array storing the values
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_cell_enforcement()

cs_enforcement_param_t* cs_equation_add_cell_enforcement ( cs_equation_param_t eqp,
cs_lnum_t  n_cells,
const cs_lnum_t  cell_ids[],
const cs_real_t  ref_value[],
const cs_real_t  cell_values[] 
)

Add an enforcement of the value related to the degrees of freedom associated to the list of selected cells.

One assumes that values are interlaced if eqp->dim > 1 ref_value or elt_values has to be defined. If both parameters are defined, one keeps the definition in elt_values

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]n_cellsnumber of selected cells
[in]cell_idslist of cell ids
[in]ref_valueignored if NULL
[in]cell_valueslist of associated values, ignored if NULL
Returns
a pointer to a cs_enforcement_param_t structure

◆ cs_equation_add_curlcurl()

void cs_equation_add_curlcurl ( cs_equation_param_t eqp,
cs_property_t property,
int  inversion 
)

Associate a new term related to the curl-curl operator for the equation associated to the given cs_equation_param_t structure.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]propertypointer to a cs_property_t structure
[in]inversion1: true, false otherwise
[in,out]eqppointer to a cs_equation_param_t structure
[in]propertypointer to a cs_property_t structure
[in]inversion> 0: true, false otherwise

◆ cs_equation_add_diffusion()

void cs_equation_add_diffusion ( cs_equation_param_t eqp,
cs_property_t property 
)

Associate a new term related to the Laplacian operator for the equation associated to the given cs_equation_param_t structure Laplacian means div-grad (either for vector-valued or scalar-valued equations)

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]propertypointer to a cs_property_t structure

◆ cs_equation_add_edge_dof_enforcement()

cs_enforcement_param_t* cs_equation_add_edge_dof_enforcement ( cs_equation_param_t eqp,
cs_lnum_t  n_edges,
const cs_lnum_t  edge_ids[],
const cs_real_t  ref_value[],
const cs_real_t  edge_values[] 
)

Add an enforcement of the value of degrees of freedom located at the mesh edges. The spatial discretization scheme for the given equation has to be CDO edge-based schemes.

One assumes that values are interlaced if eqp->dim > 1 ref_value or elt_values has to be defined. If both parameters are defined, one keeps the definition in elt_values

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]n_edgesnumber of edges to enforce
[in]edge_idslist of edges
[in]ref_valuedefault values or ignored (may be NULL)
[in]edge_valueslist of associated values, ignored if NULL
Returns
a pointer to a cs_enforcement_param_t structure

◆ cs_equation_add_face_dof_enforcement()

cs_enforcement_param_t* cs_equation_add_face_dof_enforcement ( cs_equation_param_t eqp,
cs_lnum_t  n_faces,
const cs_lnum_t  face_ids[],
const cs_real_t  ref_value[],
const cs_real_t  face_values[] 
)

Add an enforcement of the value of degrees of freedom located at the mesh faces. The spatial discretization scheme for the given equation has to be CDO face-based schemes.

One assumes that values are interlaced if eqp->dim > 1 ref_value or elt_values has to be defined. If both parameters are defined, one keeps the definition in elt_values

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]n_facesnumber of faces to enforce
[in]face_idslist of faces
[in]ref_valuedefault values or ignored (may be NULL)
[in]face_valueslist of associated values, ignored if NULL
Returns
a pointer to a cs_enforcement_param_t structure

◆ cs_equation_add_graddiv()

void cs_equation_add_graddiv ( cs_equation_param_t eqp,
cs_property_t property 
)

Associate a new term related to the grad-div operator for the equation associated to the given cs_equation_param_t structure.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]propertypointer to a cs_property_t structure

◆ cs_equation_add_ic_by_analytic()

cs_xdef_t* cs_equation_add_ic_by_analytic ( cs_equation_param_t eqp,
const char *  z_name,
cs_analytic_func_t analytic,
void *  input 
)

Define the initial condition for the unknown related to this equation. This definition applies to a volume zone. By default, the unknown is set to zero everywhere. Here the initial value for each unknown associated to the zone with name z_name is set according to an analytical function.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the associated zone (if NULL or "" if all cells are considered)
[in]analyticpointer to an analytic function
[in]inputNULL or pointer to a structure cast on-the-fly
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_ic_by_dof_func()

cs_xdef_t* cs_equation_add_ic_by_dof_func ( cs_equation_param_t eqp,
const char *  z_name,
cs_flag_t  loc_flag,
cs_dof_func_t func,
void *  input 
)

Define the initial condition for the unknown related to this equation. This definition applies to a volume zone. By default, the unknown is set to zero everywhere. Case of a definition by a DoF function.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the associated zone (if NULL or "" if all cells are considered)
[in]loc_flagwhere information is computed
[in]funcpointer to a DoF function
[in]inputNULL or pointer to a structure cast on-the-fly
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_ic_by_qov()

cs_xdef_t* cs_equation_add_ic_by_qov ( cs_equation_param_t eqp,
const char *  z_name,
double  quantity 
)

Define the initial condition for the unknown related to this equation. This definition applies to a volume zone. By default, the unknown is set to zero everywhere. Here the value set to each unknown belonging to the given zone with name z_name is such that the integral over the cells of the zone returns the requested quantity.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the associated zone (if NULL or "" all cells are considered)
[in]quantityquantity to distribute over the mesh location
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_ic_by_value()

cs_xdef_t* cs_equation_add_ic_by_value ( cs_equation_param_t eqp,
const char *  z_name,
cs_real_t val 
)

Define the initial condition for the unknown related to this equation. This definition applies to a volume zone. By default, the unknown is set to zero everywhere. Here a constant value is set to all the unknows belonging to the given zone with name z_name.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the associated zone (if NULL or "" all cells are considered)
[in]valpointer to the value
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_or_replace_cell_enforcement()

cs_enforcement_param_t* cs_equation_add_or_replace_cell_enforcement ( cs_equation_param_t eqp,
int  enforcement_id,
cs_lnum_t  n_cells,
const cs_lnum_t  cell_ids[],
const cs_real_t  ref_value[],
const cs_real_t  cell_values[] 
)

Add a new enforcement if enforcement_id does not exist or replace it otherwise. Enforcement of the value related to the degrees of freedom associated to the list of selected cells.

One assumes that values are interlaced if eqp->dim > 1 ref_value or elt_values has to be defined. If both parameters are defined, one keeps the definition in elt_values

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]enforcement_idid of the enforcement to handle
[in]n_cellsnumber of selected cells
[in]cell_idslist of cell ids
[in]ref_valueignored if NULL
[in]cell_valueslist of associated values, ignored if NULL
Returns
a pointer to a cs_enforcement_param_t structure

◆ cs_equation_add_reaction()

int cs_equation_add_reaction ( cs_equation_param_t eqp,
cs_property_t property 
)

Associate a new term related to the reaction operator for the equation associated to the given cs_equation_param_t structure.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]propertypointer to a cs_property_t structure
Returns
the id related to the reaction term

◆ cs_equation_add_sliding_condition()

void cs_equation_add_sliding_condition ( cs_equation_param_t eqp,
const char *  z_name 
)

Define and initialize a new structure to set a sliding boundary condition related to the given equation structure z_name corresponds to the name of a pre-existing cs_zone_t.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the related boundary zone

◆ cs_equation_add_source_term_by_analytic()

cs_xdef_t* cs_equation_add_source_term_by_analytic ( cs_equation_param_t eqp,
const char *  z_name,
cs_analytic_func_t func,
void *  input 
)

Add a new source term by initializing a cs_xdef_t structure. Case of a definition by an analytical function.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the associated zone (if NULL or "" if all cells are considered)
[in]funcpointer to an analytical function
[in]inputNULL or pointer to a structure cast on-the-fly
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_source_term_by_array()

cs_xdef_t* cs_equation_add_source_term_by_array ( cs_equation_param_t eqp,
const char *  z_name,
cs_flag_t  loc,
cs_real_t array,
bool  is_owner,
bool  full_length 
)

Add a new source term by initializing a cs_xdef_t structure. Case of a definition by an array.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the associated zone (if NULL or "" if all cells are considered)
[in]locinformation to know where are located values
[in]arraypointer to an array
[in]is_ownertransfer the lifecycle to the cs_xdef_t struct. (true or false)
[in]full_lengthif true, the size of "array" should be allocated to the total numbers of entities related to the given location. If false, a new list is allocated and filled with the related subset indirection.
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_source_term_by_dof_func()

cs_xdef_t* cs_equation_add_source_term_by_dof_func ( cs_equation_param_t eqp,
const char *  z_name,
cs_flag_t  loc_flag,
cs_dof_func_t func,
void *  input 
)

Add a new source term by initializing a cs_xdef_t structure. Case of a definition by a DoF function.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the associated zone (if NULL or "" if all cells are considered)
[in]loc_flaglocation of element ids given as parameter
[in]funcpointer to a DoF function
[in]inputNULL or pointer to a structure cast on-the-fly
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_source_term_by_val()

cs_xdef_t* cs_equation_add_source_term_by_val ( cs_equation_param_t eqp,
const char *  z_name,
cs_real_t val 
)

Add a new source term by initializing a cs_xdef_t structure. Case of a definition by a constant value.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the associated zone (if NULL or "" all cells are considered)
[in]valpointer to the value
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_time()

void cs_equation_add_time ( cs_equation_param_t eqp,
cs_property_t property 
)

Associate a new term related to the time derivative operator for the equation associated to the given cs_equation_param_t structure.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]propertypointer to a cs_property_t structure

◆ cs_equation_add_vertex_dof_enforcement()

cs_enforcement_param_t* cs_equation_add_vertex_dof_enforcement ( cs_equation_param_t eqp,
cs_lnum_t  n_vertices,
const cs_lnum_t  vertex_ids[],
const cs_real_t  ref_value[],
const cs_real_t  vtx_values[] 
)

Add an enforcement of the value of degrees of freedom located at the mesh vertices. The spatial discretization scheme for the given equation has to be CDO vertex-based or CDO vertex+cell-based schemes.

One assumes that values are interlaced if eqp->dim > 1 ref_value or elt_values has to be defined. If both parameters are defined, one keeps the definition in elt_values

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]n_verticesnumber of vertices to enforce
[in]vertex_idslist of vertices
[in]ref_valuedefault values or ignored (may be NULL)
[in]vtx_valueslist of associated values, ignored if NULL
Returns
a pointer to a cs_enforcement_param_t structure

◆ cs_equation_add_volume_mass_injection_by_analytic()

cs_xdef_t* cs_equation_add_volume_mass_injection_by_analytic ( cs_equation_param_t eqp,
const char *  z_name,
cs_analytic_func_t func,
void *  input 
)

Add a new volume mass injection definition source term by initializing a cs_xdef_t structure, using an analytical function.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the associated zone (if NULL or "" if all cells are considered)
[in]funcpointer to an analytical function
[in]inputNULL or pointer to a structure cast on-the-fly
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_volume_mass_injection_by_dof_func()

cs_xdef_t* cs_equation_add_volume_mass_injection_by_dof_func ( cs_equation_param_t eqp,
const char *  z_name,
cs_flag_t  loc_flag,
cs_dof_func_t func,
void *  input 
)

Add a new volume mass injection definition source term by initializing a cs_xdef_t structure, using a DoF function.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the associated zone (if NULL or "" if all cells are considered)
[in]loc_flagwhere information is computed
[in]funcpointer to an analytical function
[in]inputNULL or pointer to a structure cast on-the-fly
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_volume_mass_injection_by_qov()

cs_xdef_t* cs_equation_add_volume_mass_injection_by_qov ( cs_equation_param_t eqp,
const char *  z_name,
double *  quantity 
)

Add a new volume mass injection definition source term by initializing a cs_xdef_t structure, using a constant quantity distributed over the associated zone's volume.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the associated zone (if NULL or "" if all cells are considered)
[in]quantitypointer to quantity to distribute over the zone
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_volume_mass_injection_by_value()

cs_xdef_t* cs_equation_add_volume_mass_injection_by_value ( cs_equation_param_t eqp,
const char *  z_name,
double *  val 
)

Add a new volume mass injection definition source term by initializing a cs_xdef_t structure, using a constant value.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the associated zone (if NULL or "" if all cells are considered)
[in]valpointer to the value
Returns
a pointer to the new cs_xdef_t structure

◆ cs_equation_add_xdef_bc()

void cs_equation_add_xdef_bc ( cs_equation_param_t eqp,
cs_xdef_t xdef 
)

Set a boundary condition from an existing cs_xdef_t structure The lifecycle of the cs_xdef_t structure is now managed by the current cs_equation_param_t structure.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]xdefpointer to the cs_xdef_t structure to transfer

◆ cs_equation_clear_param()

static void cs_equation_clear_param ( cs_equation_param_t eqp)
inlinestatic

Free the contents of a cs_equation_param_t.

Deprecated:
Renamed tocs_equation_param_clear.

The cs_equation_param_t structure itself is not freed, but all its sub-structures are freed.

This is useful for equation parameters which are accessed through field keywords.

Parameters
[in,out]eqppointer to a cs_equation_param_t

◆ cs_equation_copy_param_from()

static void cs_equation_copy_param_from ( const cs_equation_param_t ref,
cs_equation_param_t dst,
bool  copy_fid 
)
inlinestatic

Copy the settings from one cs_equation_param_t structure to another one. The name is not copied.

Deprecated:
Renamed tocs_equation_param_copy_from.
Parameters
[in]refpointer to the reference cs_equation_param_t
[in,out]dstpointer to the cs_equation_param_t to update
[in]copy_fidcopy also the field id or not

◆ cs_equation_create_param()

static cs_equation_param_t* cs_equation_create_param ( const char *  name,
cs_equation_type_t  type,
int  dim,
cs_param_bc_type_t  default_bc 
)
inlinestatic

Create a cs_equation_param_t structure.

Deprecated:
Renamed tocs_equation_param_create.
Parameters
[in]namename of the equation
[in]typetype of equation
[in]dimdim of the variable associated to this equation
[in]default_bctype of boundary condition set by default
Returns
a pointer to a new allocated cs_equation_param_t structure

◆ cs_equation_find_bc()

cs_xdef_t* cs_equation_find_bc ( cs_equation_param_t eqp,
const char *  z_name 
)

Return pointer to existing boundary condition definition structure for the given equation param structure and zone.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the associated zone (if NULL or "" if all cells are considered)
Returns
a pointer to the cs_xdef_t structure if present, or NULL

◆ cs_equation_free_param()

static cs_equation_param_t* cs_equation_free_param ( cs_equation_param_t eqp)
inlinestatic

Free a cs_equation_param_t.

Deprecated:
Renamed tocs_equation_param_free.
Parameters
[in]eqppointer to a cs_equation_param_t
Returns
a NULL pointer

◆ cs_equation_param_clear()

void cs_equation_param_clear ( cs_equation_param_t eqp)

Free the contents of a cs_equation_param_t.

The cs_equation_param_t structure itself is not freed, but all its sub-structures are freed.

This is useful for equation parameters which are accessed through field keywords.

Parameters
[in,out]eqppointer to a cs_equation_param_t

◆ cs_equation_param_copy_bc()

void cs_equation_param_copy_bc ( const cs_equation_param_t ref,
cs_equation_param_t dst 
)

Copy only the part dedicated to the boundary conditions and the DoF (degrees of freedom) enforcement from one cs_equation_param_t structure to another one.

Parameters
[in]refpointer to the reference cs_equation_param_t
[in,out]dstpointer to the cs_equation_param_t to update

◆ cs_equation_param_copy_from()

void cs_equation_param_copy_from ( const cs_equation_param_t ref,
cs_equation_param_t dst,
bool  copy_fld_id 
)

Copy the settings from one cs_equation_param_t structure to another one. The name is not copied.

Parameters
[in]refpointer to the reference cs_equation_param_t
[in,out]dstpointer to the cs_equation_param_t to update
[in]copy_fld_idcopy also the field id or not

◆ cs_equation_param_create()

cs_equation_param_t* cs_equation_param_create ( const char *  name,
cs_equation_type_t  type,
int  dim,
cs_param_bc_type_t  default_bc 
)

Create a cs_equation_param_t structure.

Parameters
[in]namename of the equation
[in]typetype of equation
[in]dimdim of the variable associated to this equation
[in]default_bctype of boundary condition set by default
Returns
a pointer to a new allocated cs_equation_param_t structure

Create a cs_equation_param_t structure.

Parameters
[in]namename of the equation
[in]typetype of equation
[in]dimdim of the variable associated to this equation
[in]default_bctype of boundary condition set by default
Returns
a pointer to a new allocated cs_equation_param_t structure

◆ cs_equation_param_ensure_consistent_settings()

void cs_equation_param_ensure_consistent_settings ( cs_equation_param_t eqp)

At this stage, the numerical settings should not be modified anymore by the user. One makes a last set of modifications if needed to ensure a consistent numerical settings.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure

◆ cs_equation_param_free()

cs_equation_param_t* cs_equation_param_free ( cs_equation_param_t eqp)

Free a cs_equation_param_t.

Parameters
[in]eqppointer to a cs_equation_param_t
Returns
a NULL pointer
Parameters
[in,out]eqppointer to a cs_equation_param_t
Returns
a NULL pointer

◆ cs_equation_param_has_convection()

static bool cs_equation_param_has_convection ( const cs_equation_param_t eqp)
inlinestatic

Ask if the parameters of the equation needs a convection term.

Parameters
[in]eqppointer to a cs_equation_param_t
Returns
true or false

◆ cs_equation_param_has_curlcurl()

static bool cs_equation_param_has_curlcurl ( const cs_equation_param_t eqp)
inlinestatic

Ask if the parameters of the equation needs a curl-curl term.

Parameters
[in]eqppointer to a cs_equation_param_t
Returns
true or false

◆ cs_equation_param_has_diffusion()

static bool cs_equation_param_has_diffusion ( const cs_equation_param_t eqp)
inlinestatic

Ask if the parameters of the equation needs a diffusion term.

Parameters
[in]eqppointer to a cs_equation_param_t
Returns
true or false

◆ cs_equation_param_has_graddiv()

static bool cs_equation_param_has_graddiv ( const cs_equation_param_t eqp)
inlinestatic

Ask if the parameters of the equation needs a grad-div term.

Parameters
[in]eqppointer to a cs_equation_param_t
Returns
true or false

◆ cs_equation_param_has_implicit_advection()

static bool cs_equation_param_has_implicit_advection ( const cs_equation_param_t eqp)
inlinestatic

Ask if the parameters of the equation induces an implicit treatment of the advection term.

Parameters
[in]eqppointer to a cs_equation_param_t
Returns
true or false

◆ cs_equation_param_has_internal_enforcement()

static bool cs_equation_param_has_internal_enforcement ( const cs_equation_param_t eqp)
inlinestatic

Ask if the parameters of the equation has an internal enforcement of the degrees of freedom.

Parameters
[in]eqppointer to a cs_equation_param_t
Returns
true or false

◆ cs_equation_param_has_name()

static bool cs_equation_param_has_name ( cs_equation_param_t eqp,
const char *  name 
)
inlinestatic

Check if a cs_equation_param_t structure has its name member equal to the given name.

Parameters
[in]eqppointer to a cs_equation_param_t structure
[in]namename of the equation
Returns
true if the given eqp has the same name the one given as parameter otherwise false

◆ cs_equation_param_has_reaction()

static bool cs_equation_param_has_reaction ( const cs_equation_param_t eqp)
inlinestatic

Ask if the parameters of the equation needs a reaction term.

Parameters
[in]eqppointer to a cs_equation_param_t
Returns
true or false

◆ cs_equation_param_has_robin_bc()

bool cs_equation_param_has_robin_bc ( const cs_equation_param_t eqp)

Ask if the parameter settings of the equation has requested the treatment of Robin boundary conditions.

Parameters
[in]eqppointer to a cs_equation_param_t
Returns
true or false

◆ cs_equation_param_has_sourceterm()

static bool cs_equation_param_has_sourceterm ( const cs_equation_param_t eqp)
inlinestatic

Ask if the parameters of the equation needs a source term.

Parameters
[in]eqppointer to a cs_equation_param_t
Returns
true or false

◆ cs_equation_param_has_time()

static bool cs_equation_param_has_time ( const cs_equation_param_t eqp)
inlinestatic

Ask if the parameters of the equation needs an unsteady term.

Parameters
[in]eqppointer to a cs_equation_param_t
Returns
true or false

◆ cs_equation_param_has_user_hook()

static bool cs_equation_param_has_user_hook ( const cs_equation_param_t eqp)
inlinestatic

Ask if the parameters of the equation has activated a user hook to get a fine tuning of the cellwise system building.

Parameters
[in]eqppointer to a cs_equation_param_t
Returns
true or false

◆ cs_equation_param_lock_settings()

void cs_equation_param_lock_settings ( cs_equation_param_t eqp)

Lock settings to prevent from unwanted modifications.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure

◆ cs_equation_param_log()

void cs_equation_param_log ( const cs_equation_param_t eqp)

Print the detail of a cs_equation_param_t structure.

Parameters
[in]eqppointer to a cs_equation_param_t structure

◆ cs_equation_param_set()

void cs_equation_param_set ( cs_equation_param_t eqp,
cs_equation_key_t  key,
const char *  keyval 
)

Set a parameter attached to a keyname in a cs_equation_param_t structure.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]keykey related to the member of eq to set
[in]keyvalaccessor to the value to set

◆ cs_equation_param_set_flag()

static void cs_equation_param_set_flag ( cs_equation_param_t eqp,
cs_flag_t  flag 
)
inlinestatic

Update the flag related to a cs_equation_param_t structure.

Parameters
[in,out]eqppointer to a cs_equation_param_t
[in]flagflag to add

◆ cs_equation_param_set_sles()

void cs_equation_param_set_sles ( cs_equation_param_t eqp)

Set parameters for initializing SLES structures used for the resolution of the linear system. Settings are related to this equation.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure

◆ cs_equation_param_unlock_settings()

void cs_equation_param_unlock_settings ( cs_equation_param_t eqp)

Unlock settings. Be sure that is really wanted (inconsistency between the setup logging and what is used may appear)

Parameters
[in,out]eqppointer to a cs_equation_param_t structure

◆ cs_equation_remove_bc()

void cs_equation_remove_bc ( cs_equation_param_t eqp,
const char *  z_name 
)

Remove boundary condition from the given equation param structure for a given zone.

If no matching boundary condition is found, the function returns silently.

Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]z_namename of the associated zone (if NULL or "" if all cells are considered)

◆ cs_equation_set_param()

static void cs_equation_set_param ( cs_equation_param_t eqp,
cs_equation_key_t  key,
const char *  keyval 
)
inlinestatic

Set a parameter attached to a keyname in a cs_equation_param_t structure.

Deprecated:
Renamed tocs_equation_param_set.
Parameters
[in,out]eqppointer to a cs_equation_param_t structure
[in]keykey related to the member of eq to set
[in]keyvalaccessor to the value to set