Main high-level functions dedicated to groundwater flows when using CDO schemes. More...
#include "cs_defs.h"#include <assert.h>#include <ctype.h>#include <float.h>#include <math.h>#include <stdlib.h>#include <string.h>#include <bft_mem.h>#include "cs_array.h"#include "cs_equation_bc.h"#include "cs_field.h"#include "cs_gwf_priv.h"#include "cs_gwf_sspf.h"#include "cs_gwf_tpf.h"#include "cs_gwf_uspf.h"#include "cs_log.h"#include "cs_parall.h"#include "cs_param_types.h"#include "cs_physical_model.h"#include "cs_post.h"#include "cs_gwf.h"Macros | |
| #define | _dp3 cs_math_3_dot_product |
| #define | CS_GWF_DBG 0 |
Functions | |
| bool | cs_gwf_is_activated (void) |
| Check if the groundwater flow module has been activated. | |
| cs_gwf_t * | cs_gwf_activate (cs_gwf_model_type_t model, cs_flag_t option_flag, cs_flag_t post_flag) |
| Initialize the module dedicated to groundwater flows. | |
| cs_gwf_t * | cs_gwf_destroy_all (void) |
| Free all structures related to groundwater flows. | |
| void | cs_gwf_log_setup (void) |
| Summary of the main cs_gwf_t structure. | |
| cs_gwf_tpf_t * | cs_gwf_get_two_phase_model (void) |
| Get the main structure which manages a two-phase flow model. | |
| void | cs_gwf_set_two_phase_numerical_options (cs_gwf_tpf_approx_type_t approx, cs_gwf_tpf_solver_type_t solver, bool use_incremental_solver, bool use_diffusion_view_for_darcy) |
| Set the numerical options related to the two phase flow models. | |
| void | cs_gwf_set_miscible_two_phase_model (cs_real_t l_mass_density, cs_real_t l_viscosity, cs_real_t g_viscosity, cs_real_t l_diffusivity_h, cs_real_t h_molar_mass, cs_real_t ref_temperature, cs_real_t henry_constant) |
| Set the parameters defining the two-phase flow model in the miscible case. Use SI unit if not prescribed otherwise. | |
| void | cs_gwf_set_immiscible_two_phase_model (cs_real_t l_mass_density, cs_real_t l_viscosity, cs_real_t g_viscosity, cs_real_t h_molar_mass, cs_real_t ref_temperature) |
| Set the parameters defining the immiscible two-phase flow model. Use SI unit if not prescribed otherwise. | |
| void | cs_gwf_set_post_options (cs_flag_t post_flag, bool reset) |
| Set the flag dedicated to the post-processing of the GWF module. | |
| cs_adv_field_t * | cs_gwf_get_adv_field (void) |
| Retrieve the advection field related to the Darcy flux in the liquid phase. | |
| cs_gwf_soil_t * | cs_gwf_add_iso_soil (const char *z_name, double density, double k_abs, double porosity, cs_gwf_soil_model_t model) |
| Create and add a new cs_gwf_soil_t structure. An initialization by default of all members is performed. Case of a soil with an isotropic absolute permeability. | |
| cs_gwf_soil_t * | cs_gwf_add_aniso_soil (const char *z_name, double density, double k_abs[3][3], double porosity, cs_gwf_soil_model_t model) |
| Create and add a new cs_gwf_soil_t structure. An initialization by default of all members is performed. | |
| cs_gwf_tracer_t * | cs_gwf_add_tracer (cs_gwf_tracer_model_t tr_model, const char *eq_name, const char *var_name) |
| Add a new equation related to the groundwater flow module. | |
| cs_gwf_tracer_t * | cs_gwf_add_radioactive_tracer (cs_gwf_tracer_model_t tr_model, const char *eq_name, const char *var_name, double lambda) |
| Add a new equation related to the groundwater flow module. | |
| cs_gwf_tracer_t * | cs_gwf_add_user_tracer (const char *eq_name, const char *var_name, cs_gwf_tracer_init_setup_t *init_setup, cs_gwf_tracer_finalize_setup_t *finalize_setup) |
| Add a new equation related to the groundwater flow module. | |
| cs_gwf_tracer_decay_chain_t * | cs_gwf_add_decay_chain (int n_tracers, cs_gwf_tracer_unit_t unit, const char *chain_name, const char *var_names[], cs_gwf_tracer_model_t models[], double lambda_vals[]) |
| Add a set of tracer equations corresponding to a radioactive decay chain in the groundwater flow module. | |
| void | cs_gwf_init_sharing (const cs_cdo_quantities_t *cdoq, const cs_cdo_connect_t *connect) |
| Set shared pointers to main domain members. | |
| void | cs_gwf_init_model_context (void) |
| Initialize the context of the model after the activation of the module and make first settings of the model parameters (physical and numerical). At this stage, cs_user_parameters() has not been called. | |
| void | cs_gwf_init_setup (void) |
| Predefined settings for the groundwater flow model and its related equations. | |
| void | cs_gwf_finalize_setup (const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant) |
| Last initialization step of the groundwater flow module. At this stage, the mesh quantities are defined. | |
| void | cs_gwf_hydraulic_update (const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *ts, cs_flag_t update_flag) |
| Update the groundwater system related to the hydraulic model: pressure head, head in law, moisture content, darcian velocity, soil capacity or permeability if needed. Quantities related to tracer model are updated elsewhere. | |
| void | cs_gwf_init_values (const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *ts) |
| Initialize the GWF module (done after all the setup phase and after the initialization of all equations) One sets an initial value to all quantities related to this module. | |
| void | cs_gwf_compute_steady_state (const cs_mesh_t *mesh, const cs_time_step_t *time_step, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq) |
| Compute the steady-state of the groundwater flows module. Nothing is done if all equations are unsteady. | |
| void | cs_gwf_compute (const cs_mesh_t *mesh, const cs_time_step_t *time_step, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq) |
| Compute the system related to groundwater flows module. | |
| void | cs_gwf_extra_op (const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq, const cs_time_step_t *ts) |
| Predefined extra-operations for the groundwater flow module. | |
| void | cs_gwf_extra_post (void *input, int mesh_id, int cat_id, int ent_flag[5], cs_lnum_t n_cells, cs_lnum_t n_i_faces, cs_lnum_t n_b_faces, const cs_lnum_t cell_ids[], const cs_lnum_t i_face_ids[], const cs_lnum_t b_face_ids[], const cs_time_step_t *time_step) |
| Predefined post-processing output for the groundwater flow module. According to the model, additional postprocessing may be defined. Prototype of this function is given since it is a function pointer defined in cs_post.h (cs_post_time_mesh_dep_output_t) | |
Variables | |
| static const char | cs_gwf_model_name [CS_GWF_N_MODEL_TYPES][CS_BASE_STRING_LEN] |
Main high-level functions dedicated to groundwater flows when using CDO schemes.
| #define _dp3 cs_math_3_dot_product |
| #define CS_GWF_DBG 0 |
| cs_gwf_t * cs_gwf_activate | ( | cs_gwf_model_type_t | model, |
| cs_flag_t | option_flag, | ||
| cs_flag_t | post_flag ) |
Initialize the module dedicated to groundwater flows.
| [in] | model | type of physical modelling |
| [in] | option_flag | optional flag to specify this module |
| [in] | post_flag | optional automatic postprocessing |
| cs_gwf_soil_t * cs_gwf_add_aniso_soil | ( | const char * | z_name, |
| double | density, | ||
| double | k_abs[3][3], | ||
| double | porosity, | ||
| cs_gwf_soil_model_t | model ) |
Create and add a new cs_gwf_soil_t structure. An initialization by default of all members is performed.
| [in] | z_name | name of the volume zone corresponding to the soil |
| [in] | density | value of the bulk mass density |
| [in] | k_abs | absolute (or intrisic) permeability (tensor-valued) |
| [in] | porosity | value of the porosity (saturated moisture content) |
| [in] | model | type of model for the soil behavior |
| cs_gwf_tracer_decay_chain_t * cs_gwf_add_decay_chain | ( | int | n_tracers, |
| cs_gwf_tracer_unit_t | unit, | ||
| const char * | chain_name, | ||
| const char * | var_names[], | ||
| cs_gwf_tracer_model_t | models[], | ||
| double | lambda_vals[] ) |
Add a set of tracer equations corresponding to a radioactive decay chain in the groundwater flow module.
This equation is a particular type of unsteady advection-diffusion reaction equation. Tracer is advected thanks to the darcian velocity and diffusion/reaction parameters result from a physical modelling. Terms solved in this equation are activated according to predefined settings. The advection field corresponds to that of the liquid phase. A difference w.r.t. to standard tracer is the definition of specific source term taking into account the source/sink of the parent/current equation.
| [in] | n_tracers | number of tracers equations |
| [in] | unit | type of unit used in the tracer equations |
| [in] | chain_name | name of the decay chain |
| [in] | var_names | array of names of the related variable |
| [in] | models | model associated to each tracer equation |
| [in] | lambda_vals | set of first order radiactive decay coefficient |
| cs_gwf_soil_t * cs_gwf_add_iso_soil | ( | const char * | z_name, |
| double | density, | ||
| double | k_abs, | ||
| double | porosity, | ||
| cs_gwf_soil_model_t | model ) |
Create and add a new cs_gwf_soil_t structure. An initialization by default of all members is performed. Case of a soil with an isotropic absolute permeability.
| [in] | z_name | name of the volume zone corresponding to the soil |
| [in] | density | value of the bulk mass density |
| [in] | k_abs | absolute (or intrisic) permeability (scalar-valued) |
| [in] | porosity | value of the porosity (saturated moisture content) |
| [in] | model | type of model for the soil behavior |
| cs_gwf_tracer_t * cs_gwf_add_radioactive_tracer | ( | cs_gwf_tracer_model_t | tr_model, |
| const char * | eq_name, | ||
| const char * | var_name, | ||
| double | lambda ) |
Add a new equation related to the groundwater flow module.
This equation is a particular type of unsteady advection-diffusion reaction equation. The tracer is advected thanks to the darcian velocity. The diffusion and reaction properties result from predefined physical modelling given by the parameter "tr_model". Other terms solved in this equation are activated according to predefined settings. The advection field corresponds to that of the liquid phase.
| [in] | tr_model | physical modelling to consider (0 = default settings) |
| [in] | eq_name | name of the tracer equation |
| [in] | var_name | name of the related variable |
| [in] | lambda | first order radioactive decay coefficient |
| cs_gwf_tracer_t * cs_gwf_add_tracer | ( | cs_gwf_tracer_model_t | tr_model, |
| const char * | eq_name, | ||
| const char * | var_name ) |
Add a new equation related to the groundwater flow module.
This equation is a particular type of unsteady advection-diffusion equation. The tracer is advected thanks to the darcian velocity and the diffusion property results from a physical modelling. Terms solved in this equation are activated according to predefined settings. The advection field corresponds to that of the liquid phase.
| [in] | tr_model | physical modelling to consider (0 = default settings) |
| [in] | eq_name | name of the tracer equation |
| [in] | var_name | name of the related variable |
| cs_gwf_tracer_t * cs_gwf_add_user_tracer | ( | const char * | eq_name, |
| const char * | var_name, | ||
| cs_gwf_tracer_init_setup_t * | init_setup, | ||
| cs_gwf_tracer_finalize_setup_t * | finalize_setup ) |
Add a new equation related to the groundwater flow module.
This equation is a particular type of unsteady advection-diffusion reaction equation. Tracer is advected thanks to the darcian velocity and diffusion/reaction parameters result from a physical modelling. Terms are activated according to predefined settings. Modelling of the tracer parameters are left to the user
| [in] | eq_name | name of the tracer equation |
| [in] | var_name | name of the related variable |
| [in] | init_setup | function pointer (predefined prototype) |
| [in] | finalize_setup | function pointer (predefined prototype) |
| void cs_gwf_compute | ( | const cs_mesh_t * | mesh, |
| const cs_time_step_t * | time_step, | ||
| const cs_cdo_connect_t * | connect, | ||
| const cs_cdo_quantities_t * | cdoq ) |
Compute the system related to groundwater flows module.
| [in] | mesh | pointer to a cs_mesh_t structure |
| [in] | time_step | pointer to a cs_time_step_t structure |
| [in] | connect | pointer to a cs_cdo_connect_t structure |
| [in] | cdoq | pointer to a cs_cdo_quantities_t structure |
| void cs_gwf_compute_steady_state | ( | const cs_mesh_t * | mesh, |
| const cs_time_step_t * | time_step, | ||
| const cs_cdo_connect_t * | connect, | ||
| const cs_cdo_quantities_t * | cdoq ) |
Compute the steady-state of the groundwater flows module. Nothing is done if all equations are unsteady.
| [in] | mesh | pointer to a cs_mesh_t structure |
| [in] | time_step | pointer to a cs_time_step_t structure |
| [in] | connect | pointer to a cs_cdo_connect_t structure |
| [in] | cdoq | pointer to a cs_cdo_quantities_t structure |
| cs_gwf_t * cs_gwf_destroy_all | ( | void | ) |
Free all structures related to groundwater flows.
| void cs_gwf_extra_op | ( | const cs_cdo_connect_t * | connect, |
| const cs_cdo_quantities_t * | cdoq, | ||
| const cs_time_step_t * | ts ) |
Predefined extra-operations for the groundwater flow module.
| [in] | connect | pointer to a cs_cdo_connect_t structure |
| [in] | cdoq | pointer to a cs_cdo_quantities_t structure |
| [in] | ts | pointer to a cs_time_step_t struct. |
| void cs_gwf_extra_post | ( | void * | input, |
| int | mesh_id, | ||
| int | cat_id, | ||
| int | ent_flag[5], | ||
| cs_lnum_t | n_cells, | ||
| cs_lnum_t | n_i_faces, | ||
| cs_lnum_t | n_b_faces, | ||
| const cs_lnum_t | cell_ids[], | ||
| const cs_lnum_t | i_face_ids[], | ||
| const cs_lnum_t | b_face_ids[], | ||
| const cs_time_step_t * | time_step ) |
Predefined post-processing output for the groundwater flow module. According to the model, additional postprocessing may be defined. Prototype of this function is given since it is a function pointer defined in cs_post.h (cs_post_time_mesh_dep_output_t)
| [in,out] | input | pointer to a optional structure (here a cs_gwf_t structure) |
| [in] | mesh_id | id of the output mesh for the current call |
| [in] | cat_id | category id of the output mesh for this call |
| [in] | ent_flag | indicate global presence of cells (ent_flag[0]), interior faces (ent_flag[1]), boundary faces (ent_flag[2]), particles (ent_flag[3]) or probes (ent_flag[4]) |
| [in] | n_cells | local number of cells of post_mesh |
| [in] | n_i_faces | local number of interior faces of post_mesh |
| [in] | n_b_faces | local number of boundary faces of post_mesh |
| [in] | cell_ids | list of cells (0 to n-1) |
| [in] | i_face_ids | list of interior faces (0 to n-1) |
| [in] | b_face_ids | list of boundary faces (0 to n-1) |
| [in] | time_step | pointer to a cs_time_step_t struct. |
| void cs_gwf_finalize_setup | ( | const cs_cdo_connect_t * | connect, |
| const cs_cdo_quantities_t * | quant ) |
Last initialization step of the groundwater flow module. At this stage, the mesh quantities are defined.
| [in] | connect | pointer to a cs_cdo_connect_t structure |
| [in] | quant | pointer to a cs_cdo_quantities_t structure |
| cs_adv_field_t * cs_gwf_get_adv_field | ( | void | ) |
Retrieve the advection field related to the Darcy flux in the liquid phase.
| cs_gwf_tpf_t * cs_gwf_get_two_phase_model | ( | void | ) |
Get the main structure which manages a two-phase flow model.
| void cs_gwf_hydraulic_update | ( | const cs_mesh_t * | mesh, |
| const cs_cdo_connect_t * | connect, | ||
| const cs_cdo_quantities_t * | quant, | ||
| const cs_time_step_t * | ts, | ||
| cs_flag_t | update_flag ) |
Update the groundwater system related to the hydraulic model: pressure head, head in law, moisture content, darcian velocity, soil capacity or permeability if needed. Quantities related to tracer model are updated elsewhere.
| [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] | ts | pointer to a cs_time_step_t structure |
| [in] | update_flag | metadata associated to the status of the update step to perform |
| void cs_gwf_init_model_context | ( | void | ) |
Initialize the context of the model after the activation of the module and make first settings of the model parameters (physical and numerical). At this stage, cs_user_parameters() has not been called.
| void cs_gwf_init_setup | ( | void | ) |
Predefined settings for the groundwater flow model and its related equations.
At this stage, all soils have been defined and equation parameters are set (cs_user_parameters() has been called and settings performed).
Create new cs_field_t structures according to the setting.
| void cs_gwf_init_sharing | ( | const cs_cdo_quantities_t * | cdoq, |
| const cs_cdo_connect_t * | connect ) |
Set shared pointers to main domain members.
| [in] | cdoq | pointer to additional mesh quantities for CDO schemes |
| [in] | connect | pointer to additional mesh connectivities for CDO schemes |
| void cs_gwf_init_values | ( | const cs_mesh_t * | mesh, |
| const cs_cdo_connect_t * | connect, | ||
| const cs_cdo_quantities_t * | quant, | ||
| const cs_time_step_t * | ts ) |
Initialize the GWF module (done after all the setup phase and after the initialization of all equations) One sets an initial value to all quantities related to this module.
| [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] | ts | pointer to a cs_time_step_t structure |
| bool cs_gwf_is_activated | ( | void | ) |
Check if the groundwater flow module has been activated.
| void cs_gwf_log_setup | ( | void | ) |
Summary of the main cs_gwf_t structure.
| void cs_gwf_set_immiscible_two_phase_model | ( | cs_real_t | l_mass_density, |
| cs_real_t | l_viscosity, | ||
| cs_real_t | g_viscosity, | ||
| cs_real_t | h_molar_mass, | ||
| cs_real_t | ref_temperature ) |
Set the parameters defining the immiscible two-phase flow model. Use SI unit if not prescribed otherwise.
| [in] | l_mass_density | mass density of the main liquid component |
| [in] | l_viscosity | viscosity in the liquid phase (Pa.s) |
| [in] | g_viscosity | viscosity in the gas phase (Pa.s) |
| [in] | h_molar_mass | molar mass of the main gas component |
| [in] | ref_temperature | reference temperature in Kelvin |
| void cs_gwf_set_miscible_two_phase_model | ( | cs_real_t | l_mass_density, |
| cs_real_t | l_viscosity, | ||
| cs_real_t | g_viscosity, | ||
| cs_real_t | l_diffusivity_h, | ||
| cs_real_t | h_molar_mass, | ||
| cs_real_t | ref_temperature, | ||
| cs_real_t | henry_constant ) |
Set the parameters defining the two-phase flow model in the miscible case. Use SI unit if not prescribed otherwise.
| [in] | l_mass_density | mass density of the main liquid component |
| [in] | l_viscosity | viscosity in the liquid phase (Pa.s) |
| [in] | g_viscosity | viscosity in the gas phase (Pa.s) |
| [in] | l_diffusivity_h | diffusivity of the main gas component in the liquid phase |
| [in] | h_molar_mass | molar mass of the main gas component |
| [in] | ref_temperature | reference temperature in Kelvin |
| [in] | henry_constant | constant in the Henry law |
Set the flag dedicated to the post-processing of the GWF module.
| [in] | post_flag | flag to set |
| [in] | reset | reset post flag before |
| void cs_gwf_set_two_phase_numerical_options | ( | cs_gwf_tpf_approx_type_t | approx, |
| cs_gwf_tpf_solver_type_t | solver, | ||
| bool | use_incremental_solver, | ||
| bool | use_diffusion_view_for_darcy ) |
Set the numerical options related to the two phase flow models.
| [in] | approx | type of coefficient approximation |
| [in] | solver | type of solver |
| [in] | use_incremental_solver | true/false |
| [in] | use_diffusion_view_for_darcy | true/false |
|
static |