![]() |
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 |