|
programmer's documentation
|
#include "cs_defs.h"#include <assert.h>#include <string.h>#include <float.h>#include <stdlib.h>#include <math.h>#include <bft_mem.h>#include <bft_printf.h>#include "cs_base.h"#include "cs_cdo.h"#include "cs_mesh_location.h"#include "cs_field.h"#include "cs_multigrid.h"#include "cs_timer_stats.h"#include "cs_param.h"#include "cs_cdovb_scaleq.h"#include "cs_cdofb_scaleq.h"#include "cs_equation.h"
Typedefs | |
| typedef void *( | cs_equation_init_builder_t) (const cs_equation_param_t *eqp, const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq, const cs_time_step_t *time_step) |
| Initialize a builder structure. More... | |
| typedef void( | cs_equation_compute_source_t) (void *builder) |
| Compute the contribution of source terms for the current time. More... | |
| typedef void( | cs_equation_build_system_t) (const cs_mesh_t *mesh, const cs_real_t *field_val, double dt_cur, void *builder, cs_real_t **rhs, cs_sla_matrix_t **sla_mat) |
| Build a linear system within the CDO framework. More... | |
| typedef void( | cs_equation_update_field_t) (const cs_real_t *solu, void *builder, cs_real_t *field_val) |
| Store solution(s) of the linear system into a field structure. More... | |
| typedef void( | cs_equation_post_t) (const char *eqname, const cs_field_t *field, void *builder) |
| Post-processing related to this equation. More... | |
| typedef const double *( | cs_equation_get_f_values_t) (const void *builder, const cs_field_t *field) |
| Get the computed values at each face. More... | |
| typedef cs_real_t *( | cs_equation_get_tmpbuf_t) (void) |
| Retrieve a pointer to a buffer of size at least the number of unknows. More... | |
| typedef void *( | cs_equation_free_builder_t) (void *builder) |
| Destroy a builder structure. More... | |
Functions | |
| static void | _sles_initialization (const cs_equation_t *eq) |
| static void | _check_ml_name (const char *ml_name, int *p_ml_id) |
| Given its name, get the id related to a cs_mesh_location_t structure. More... | |
| static const char * | _print_eqkey (eqkey_t key) |
| Print the name of the corresponding equation key. More... | |
| static const char * | _print_reakey (reakey_t key) |
| Print the name of the corresponding reaction term key. More... | |
| static const char * | _print_stkey (stkey_t key) |
| Print the name of the corresponding source term key. More... | |
| static eqkey_t | _get_eqkey (const char *keyname) |
| Get the corresponding enum from the name of an equation key. If not found, print an error message. More... | |
| static reakey_t | _get_reakey (const char *keyname) |
| Get the corresponding enum from the name of a reaction term key. If not found, print an error message. More... | |
| static stkey_t | _get_stkey (const char *keyname) |
| Get the corresponding enum from the name of a source term key. If not found, print an error message. More... | |
| static cs_equation_param_t * | _create_equation_param (cs_equation_type_t type, cs_param_var_type_t var_type, cs_param_bc_type_t default_bc) |
| Create a cs_equation_param_t. More... | |
| cs_equation_t * | cs_equation_create (const char *eqname, const char *varname, cs_equation_type_t eqtype, cs_param_var_type_t vartype, cs_param_bc_type_t default_bc) |
| Define and initialize a new structure to store parameters related to an equation. More... | |
| cs_equation_t * | cs_equation_free (cs_equation_t *eq) |
| Destroy a cs_equation_t structure. More... | |
| void | cs_equation_summary (const cs_equation_t *eq) |
| Summary of a cs_equation_t structure. More... | |
| void | cs_equation_last_setup (cs_equation_t *eq) |
| Assign a set of pointer functions for managing the cs_equation_t structure during the computation. More... | |
| void | cs_equation_set_option (cs_equation_t *eq, const char *keyname, const void *val) |
| Set a parameter in a cs_equation_t structure attached to keyname. More... | |
| void | cs_equation_link (cs_equation_t *eq, const char *keyword, void *pointer) |
| Associate a material property or an advection field with an equation for a given term (diffusion, time, convection) More... | |
| void | cs_equation_set_ic (cs_equation_t *eq, const char *def_key, void *val) |
| Define the initial condition of the unknown related to this equation def_key is among "value", "analytic", "user". More... | |
| void | cs_equation_add_bc (cs_equation_t *eq, const char *ml_name, const char *bc_key, const char *def_key, const void *val) |
| Define and initialize a new structure to store parameters related to an equation bc_key among "dirichlet", "neumann" or "robin" def_key among "value", "analytic", "user". More... | |
| void | cs_equation_add_reaction (cs_equation_t *eq, const char *r_name, const char *type_name, cs_property_t *property) |
| Define and initialize a new structure to store parameters related to a reaction term. More... | |
| void | cs_equation_set_reaction_option (cs_equation_t *eq, const char *r_name, const char *keyname, const char *keyval) |
| Set advanced parameters related to a reaction term keyname among "lumping", "hodge_algo", "hodge_coef"... If r_name is NULL, all reaction terms of the given equation are set according to the couple (keyname, keyval) More... | |
| void | cs_equation_add_source_term (cs_equation_t *eq, const char *st_name, const char *ml_name, const char *def_key, const void *val) |
| Define and initialize a new structure to store parameters related to a source term def_key among "value", "analytic", "user"... More... | |
| void | cs_equation_set_source_term_option (cs_equation_t *eq, const char *st_name, const char *keyname, const char *keyval) |
| Set advanced parameters which are members defined by default in a source term structure. keyname among "quadrature", "post"... If st_name is NULL, all source terms of the given equation are set according to keyname/keyval. More... | |
| void | cs_equation_create_field (cs_equation_t *eq) |
| Create a field structure related to this cs_equation_t structure to an equation. More... | |
| void | cs_equation_init_system (const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq, const cs_time_step_t *time_step, cs_equation_t *eq) |
| Initialize the values of a field according to the initial condition related to its equation. More... | |
| bool | cs_equation_needs_build (const cs_equation_t *eq) |
| Check if one has to build the linear system. More... | |
| void | cs_equation_build_system (const cs_mesh_t *mesh, const cs_time_step_t *time_step, double dt_cur, cs_equation_t *eq) |
| Build the linear system for this equation. More... | |
| void | cs_equation_solve (const cs_time_step_t *time_step, cs_equation_t *eq) |
| Solve the linear system for this equation. More... | |
| void | cs_equation_post (const cs_time_step_t *time_step, const cs_equation_t *eq) |
| Post-processing related to this equation. More... | |
| bool | cs_equation_is_steady (const cs_equation_t *eq) |
| Return true is the given equation is steady otherwise false. More... | |
| const cs_real_t * | cs_equation_get_face_values (const cs_equation_t *eq) |
| Compute the values of the associated field at each face of the mesh If the pointer storing the values is NULL, it is alloacted inside the function. More... | |
| const char * | cs_equation_get_name (const cs_equation_t *eq) |
| Return the name related to the given cs_equation_t structure to an equation. More... | |
| cs_field_t * | cs_equation_get_field (const cs_equation_t *eq) |
| Return the field structure associated to a cs_equation_t structure. More... | |
| const cs_equation_param_t * | cs_equation_get_param (const cs_equation_t *eq) |
| Return the cs_equation_param_t structure associated to a cs_equation_t structure. More... | |
| cs_property_t * | cs_equation_get_diffusion_property (const cs_equation_t *eq) |
| Return a pointer to the cs_property_t structure associated to the diffusion term for this equation (NULL if not activated). More... | |
| cs_property_t * | cs_equation_get_time_property (const cs_equation_t *eq) |
| Return a pointer to the cs_property_t structure associated to the unsteady term for this equation (NULL if not activated). More... | |
| cs_space_scheme_t | cs_equation_get_space_scheme (const cs_equation_t *eq) |
| Return the type of numerical scheme used for the discretization in space. More... | |
| cs_param_var_type_t | cs_equation_get_var_type (const cs_equation_t *eq) |
| Return the type of variable solved by this equation. More... | |
| cs_equation_type_t | cs_equation_get_type (const cs_equation_t *eq) |
| Return the type of equation for the given equation structure. More... | |
Variables | |
| static cs_equation_algo_t | _algo_info_by_default |
| static cs_param_itsol_t | _itsol_info_by_default |
| typedef void( cs_equation_build_system_t) (const cs_mesh_t *mesh, const cs_real_t *field_val, double dt_cur, void *builder, cs_real_t **rhs, cs_sla_matrix_t **sla_mat) |
Build a linear system within the CDO framework.
| [in] | m | pointer to a cs_mesh_t structure |
| [in] | field_val | pointer to the current value of the field |
| [in] | dt_cur | current value of the time step |
| [in,out] | builder | pointer to builder structure |
| [in,out] | rhs | pointer to a right-hand side array pointer |
| [in,out] | sla_mat | pointer to cs_sla_matrix_t structure pointer |
| typedef void( cs_equation_compute_source_t) (void *builder) |
Compute the contribution of source terms for the current time.
| [in,out] | builder | pointer to builder structure |
| typedef void*( cs_equation_free_builder_t) (void *builder) |
Destroy a builder structure.
| [in,out] | builder | pointer to a builder structure |
| typedef const double*( cs_equation_get_f_values_t) (const void *builder, const cs_field_t *field) |
Get the computed values at each face.
| [in] | builder | pointer to a builder structure |
| [in] | field | pointer to a cs_field_t structure |
| typedef cs_real_t*( cs_equation_get_tmpbuf_t) (void) |
Retrieve a pointer to a buffer of size at least the number of unknows.
| [in,out] | builder | pointer to a builder structure |
| typedef void*( cs_equation_init_builder_t) (const cs_equation_param_t *eqp, const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq, const cs_time_step_t *time_step) |
Initialize a builder structure.
| [in] | eq | pointer to a cs_equation_param_t structure |
| [in] | mesh | pointer to a cs_mesh_t structure |
| [in] | connect | pointer to a cs_cdo_connect_t structure |
| [in] | quant | pointer to a cs_cdo_quantities_t structure |
| [in] | time_step | time_step structure |
| typedef void( cs_equation_post_t) (const char *eqname, const cs_field_t *field, void *builder) |
Post-processing related to this equation.
| [in] | eqname | name of the equation |
| [in] | field | pointer to a field strufcture |
| [in,out] | builder | pointer to builder structure |
| typedef void( cs_equation_update_field_t) (const cs_real_t *solu, void *builder, cs_real_t *field_val) |
Store solution(s) of the linear system into a field structure.
| [in] | solu | solution array |
| [in,out] | builder | pointer to builder structure |
| [in,out] | field_val | pointer to the current value of the field |
| enum eqkey_t |
| enum reakey_t |
| enum stkey_t |
|
static |
Given its name, get the id related to a cs_mesh_location_t structure.
| [in] | ml_name | name of the location |
| [in,out] | p_ml_id | pointer on the id of the related mesh location |
|
static |
Create a cs_equation_param_t.
| [in] | type | type of equation |
| [in] | var_type | type of variable (scalar, vector, tensor...) |
| [in] | default_bc | type of boundary condition set by default |
|
static |
Get the corresponding enum from the name of an equation key. If not found, print an error message.
| [in] | keyname | name of the key |
|
static |
Get the corresponding enum from the name of a reaction term key. If not found, print an error message.
| [in] | keyname | name of the key |
|
static |
Get the corresponding enum from the name of a source term key. If not found, print an error message.
| [in] | keyname | name of the key |
|
static |
Print the name of the corresponding equation key.
| [in] | key | name of the key |
|
static |
Print the name of the corresponding reaction term key.
| [in] | key | name of the key |
|
static |
Print the name of the corresponding source term key.
| [in] | key | name of the key |
|
static |
| void cs_equation_add_bc | ( | cs_equation_t * | eq, |
| const char * | ml_name, | ||
| const char * | bc_key, | ||
| const char * | def_key, | ||
| const void * | val | ||
| ) |
Define and initialize a new structure to store parameters related to an equation bc_key among "dirichlet", "neumann" or "robin" def_key among "value", "analytic", "user".
| [in,out] | eq | pointer to a cs_equation_t structure |
| [in] | ml_name | name of the related mesh location |
| [in] | bc_key | type of boundary condition to add |
| [in] | def_key | way of defining the value of the bc |
| [in] | val | pointer to the value |
| void cs_equation_add_reaction | ( | cs_equation_t * | eq, |
| const char * | r_name, | ||
| const char * | type_name, | ||
| cs_property_t * | property | ||
| ) |
Define and initialize a new structure to store parameters related to a reaction term.
| [in,out] | eq | pointer to a cs_equation_t structure |
| [in] | r_name | name of the source term or NULL |
| [in] | type_name | type of reaction term to add |
| [in] | property | pointer to a cs_property_t struct. |
| void cs_equation_add_source_term | ( | cs_equation_t * | eq, |
| const char * | st_name, | ||
| const char * | ml_name, | ||
| const char * | def_key, | ||
| const void * | val | ||
| ) |
Define and initialize a new structure to store parameters related to a source term def_key among "value", "analytic", "user"...
| [in,out] | eq | pointer to a cs_equation_t structure |
| [in] | st_name | name of the source term or NULL |
| [in] | ml_name | name of the related mesh location |
| [in] | def_key | way of defining the value of the source term |
| [in] | val | pointer to the value |
| void cs_equation_build_system | ( | const cs_mesh_t * | mesh, |
| const cs_time_step_t * | time_step, | ||
| double | dt_cur, | ||
| cs_equation_t * | eq | ||
| ) |
Build the linear system for this equation.
| [in] | m | pointer to a cs_mesh_t structure |
| [in] | time_step | pointer to a time step structure |
| [in] | dt_cur | value of the current time step |
| [in,out] | eq | pointer to a cs_equation_t structure |
| cs_equation_t* cs_equation_create | ( | const char * | eqname, |
| const char * | varname, | ||
| cs_equation_type_t | eqtype, | ||
| cs_param_var_type_t | vartype, | ||
| cs_param_bc_type_t | default_bc | ||
| ) |
Define and initialize a new structure to store parameters related to an equation.
| [in] | eqname | name of the equation |
| [in] | varname | name of the variable associated to this equation |
| [in] | eqtype | type of equation (user, predefined...) |
| [in] | vartype | type of variable (scalar, vector, tensor...) |
| [in] | default_bc | type of boundary condition set by default |
| void cs_equation_create_field | ( | cs_equation_t * | eq | ) |
Create a field structure related to this cs_equation_t structure to an equation.
| [in,out] | eq | pointer to a cs_equation_t structure |
| cs_equation_t* cs_equation_free | ( | cs_equation_t * | eq | ) |
Destroy a cs_equation_t structure.
| [in,out] | eq | pointer to a cs_equation_t structure |
| cs_property_t* cs_equation_get_diffusion_property | ( | const cs_equation_t * | eq | ) |
Return a pointer to the cs_property_t structure associated to the diffusion term for this equation (NULL if not activated).
| [in] | eq | pointer to a cs_equation_t structure |
| const cs_real_t* cs_equation_get_face_values | ( | const cs_equation_t * | eq | ) |
Compute the values of the associated field at each face of the mesh If the pointer storing the values is NULL, it is alloacted inside the function.
| [in] | eq | pointer to a cs_equation_t structure |
| cs_field_t* cs_equation_get_field | ( | const cs_equation_t * | eq | ) |
Return the field structure associated to a cs_equation_t structure.
| [in] | eq | pointer to a cs_equation_t structure |
| const char* cs_equation_get_name | ( | const cs_equation_t * | eq | ) |
Return the name related to the given cs_equation_t structure to an equation.
| [in] | eq | pointer to a cs_equation_t structure |
| const cs_equation_param_t* cs_equation_get_param | ( | const cs_equation_t * | eq | ) |
Return the cs_equation_param_t structure associated to a cs_equation_t structure.
| [in] | eq | pointer to a cs_equation_t structure |
| cs_space_scheme_t cs_equation_get_space_scheme | ( | const cs_equation_t * | eq | ) |
Return the type of numerical scheme used for the discretization in space.
| [in] | eq | pointer to a cs_equation_t structure |
| cs_property_t* cs_equation_get_time_property | ( | const cs_equation_t * | eq | ) |
Return a pointer to the cs_property_t structure associated to the unsteady term for this equation (NULL if not activated).
| [in] | eq | pointer to a cs_equation_t structure |
| cs_equation_type_t cs_equation_get_type | ( | const cs_equation_t * | eq | ) |
Return the type of equation for the given equation structure.
| [in] | eq | pointer to a cs_equation_t structure |
| cs_param_var_type_t cs_equation_get_var_type | ( | const cs_equation_t * | eq | ) |
Return the type of variable solved by this equation.
| [in] | eq | pointer to a cs_equation_t structure |
| void cs_equation_init_system | ( | const cs_mesh_t * | mesh, |
| const cs_cdo_connect_t * | connect, | ||
| const cs_cdo_quantities_t * | cdoq, | ||
| const cs_time_step_t * | time_step, | ||
| cs_equation_t * | eq | ||
| ) |
Initialize the values of a field according to the initial condition related to its equation.
| [in] | mesh | pointer to the mesh structure |
| [in] | connect | pointer to a cs_cdo_connect_t struct. |
| [in] | cdoq | pointer to a cs_cdo_quantities_t struct. |
| [in] | time_step | pointer to a time step structure |
| [in,out] | eq | pointer to a cs_equation_t structure |
| bool cs_equation_is_steady | ( | const cs_equation_t * | eq | ) |
Return true is the given equation is steady otherwise false.
| [in] | eq | pointer to a cs_equation_t structure |
| void cs_equation_last_setup | ( | cs_equation_t * | eq | ) |
Assign a set of pointer functions for managing the cs_equation_t structure during the computation.
| [in,out] | eq | pointer to a cs_equation_t structure |
| void cs_equation_link | ( | cs_equation_t * | eq, |
| const char * | keyword, | ||
| void * | pointer | ||
| ) |
Associate a material property or an advection field with an equation for a given term (diffusion, time, convection)
| [in,out] | eq | pointer to a cs_equation_t structure |
| [in] | keyword | "time", "diffusion", "advection" |
| [in] | pointer | pointer to a given structure |
| bool cs_equation_needs_build | ( | const cs_equation_t * | eq | ) |
Check if one has to build the linear system.
| [in] | eq | pointer to a cs_equation_t structure |
| void cs_equation_post | ( | const cs_time_step_t * | time_step, |
| const cs_equation_t * | eq | ||
| ) |
Post-processing related to this equation.
| [in] | time_step | pointer to a time step structure |
| [in] | eq | pointer to a cs_equation_t structure |
| void cs_equation_set_ic | ( | cs_equation_t * | eq, |
| const char * | def_key, | ||
| void * | val | ||
| ) |
Define the initial condition of the unknown related to this equation def_key is among "value", "analytic", "user".
Define the initial condition of the unknown related to this equation def_key is among "value", "analytic".
| [in,out] | eq | pointer to a cs_equation_t structure |
| [in] | def_key | way of defining the value of the bc |
| [in] | val | pointer to the value |
| void cs_equation_set_option | ( | cs_equation_t * | eq, |
| const char * | keyname, | ||
| const void * | val | ||
| ) |
Set a parameter in a cs_equation_t structure attached to keyname.
| [in,out] | eq | pointer to a cs_equation_t structure |
| [in] | keyname | name of key related to the member of eq to set |
| [in] | val | accessor to the value to set |
| void cs_equation_set_reaction_option | ( | cs_equation_t * | eq, |
| const char * | r_name, | ||
| const char * | keyname, | ||
| const char * | keyval | ||
| ) |
Set advanced parameters related to a reaction term keyname among "lumping", "hodge_algo", "hodge_coef"... If r_name is NULL, all reaction terms of the given equation are set according to the couple (keyname, keyval)
| [in,out] | eq | pointer to a cs_equation_t structure |
| [in] | r_name | name of the reaction term |
| [in] | keyname | name of the key |
| [in] | keyval | pointer to the value to set to the key |
| void cs_equation_set_source_term_option | ( | cs_equation_t * | eq, |
| const char * | st_name, | ||
| const char * | keyname, | ||
| const char * | keyval | ||
| ) |
Set advanced parameters which are members defined by default in a source term structure. keyname among "quadrature", "post"... If st_name is NULL, all source terms of the given equation are set according to keyname/keyval.
Set members defined by default in a source term structure keyname among "quadrature", "post"...
| [in,out] | eq | pointer to a cs_equation_t structure |
| [in] | st_name | name of the source term |
| [in] | keyname | name of the key |
| [in] | keyval | pointer to the value to set to the key |
| void cs_equation_solve | ( | const cs_time_step_t * | time_step, |
| cs_equation_t * | eq | ||
| ) |
Solve the linear system for this equation.
| [in] | time_step | pointer to a time step structure |
| [in,out] | eq | pointer to a cs_equation_t structure |
| void cs_equation_summary | ( | const cs_equation_t * | eq | ) |
Summary of a cs_equation_t structure.
| [in] | eq | pointer to a cs_equation_t structure |
|
static |
|
static |
1.8.9.1