#include "cs_base.h"
#include "cs_equation.h"
#include "cs_gwf_param.h"
#include "cs_gwf_priv.h"
#include "cs_gwf_soil.h"
#include "cs_gwf_tracer.h"
Go to the source code of this file.
Functions | |
bool | cs_gwf_is_activated (void) |
Check if the groundwater flow module has been activated. More... | |
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. More... | |
cs_gwf_t * | cs_gwf_destroy_all (void) |
Free all structures related to groundwater flows. More... | |
cs_gwf_tpf_t * | cs_gwf_get_two_phase_model (void) |
Get the main structure which manages a two-phase flow model. More... | |
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. More... | |
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. More... | |
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. More... | |
void | cs_gwf_log_setup (void) |
Summary of the main cs_gwf_t structure. More... | |
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. More... | |
cs_adv_field_t * | cs_gwf_get_adv_field (void) |
Retrieve the advection field related to the Darcy flux in the liquid phase. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
void | cs_gwf_init_sharing (const cs_cdo_quantities_t *cdoq, const cs_cdo_connect_t *connect) |
Set shared pointers to main domain members. More... | |
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. More... | |
void | cs_gwf_init_setup (void) |
Predefined settings for the groundwater flow model and its related equations. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
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) More... | |
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 |
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.
[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 |