#include "base/cs_base.h"
#include "cdo/cs_cdo_connect.h"
#include "cdo/cs_cdo_quantities.h"
#include "gwf/cs_gwf_param.h"
#include "gwf/cs_gwf_hydraulic_model.h"
#include "mesh/cs_mesh.h"
#include "cdo/cs_property.h"
#include "base/cs_volume_zone.h"
Go to the source code of this file.
Data Structures | |
struct | cs_gwf_soil_vgm_spf_param_t |
Structure to handle the Van Genuchten-Mualem model of soil in the case of a single-phase flow in a porous media. More... | |
struct | cs_gwf_soil_vgm_tpf_param_t |
struct | cs_gwf_soil_t |
Main structure to handle a soil in the groundwater flow module: its definition, the way to update its related properties. More... |
Typedefs | |
typedef void | cs_gwf_soil_update_t(const cs_real_t t_eval, const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_zone_t *zone, cs_gwf_soil_t *soil) |
Generic function to update the properties related to a hydraulic model given the soil model. The soil parameters depend on the type of soil model. | |
typedef void | cs_gwf_soil_free_param_t(void **p_param) |
Generic function to set free the parameter structure associated to a soil. | |
typedef void | cs_gwf_soil_tpf_eval_t(const cs_gwf_soil_vgm_tpf_param_t *sp, const double pc, double *sl, double *dsldpc, double *krl, double *krg) |
Compute the values of the different properties related to a soil in the case of a Van Genuchten-Mualem model and a two-phase flow model. |
Enumerations | |
enum | cs_gwf_soil_join_type_t { CS_GWF_SOIL_JOIN_NOTHING , CS_GWF_SOIL_JOIN_C1_HYPERBOLIC , CS_GWF_SOIL_JOIN_C1_EXPONENTIAL , CS_GWF_SOIL_JOIN_C1_POLY_ORDER2 , CS_GWF_SOIL_N_JOINS } |
Kind of joining function used with closure laws. More... | |
enum | cs_gwf_soil_state_t { CS_GWF_SOIL_STATE_SATURATED = 0 , CS_GWF_SOIL_STATE_UNSATURATED = 1 , CS_GWF_SOIL_STATE_DRY = 2 , CS_GWF_SOIL_N_STATES = 3 } |
Kind of state in which a cell is. More... |
Functions | |
int | cs_gwf_get_n_soils (void) |
Get the number of allocated soils. | |
cs_gwf_soil_t * | cs_gwf_soil_create (const cs_zone_t *zone, cs_gwf_model_type_t hydraulic_model, cs_gwf_soil_model_t model, cs_property_type_t perm_type, double k_abs[3][3], double porosity, double bulk_density, void *hydraulic_context) |
Create a new cs_gwf_soil_t structure and add it to the array of soils. An initialization by default of all members is performed. | |
cs_gwf_soil_t * | cs_gwf_soil_by_id (int id) |
Retrieve a soil structure from its id. | |
cs_gwf_soil_t * | cs_gwf_soil_by_name (const char *name) |
Retrieve a soil structure from its name. | |
const cs_zone_t * | cs_gwf_soil_get_zone (int soil_id) |
Retrieve a zone associated to a soil from its id. | |
void | cs_gwf_soil_free_all (void) |
Free all cs_gwf_soil_t structures. | |
void | cs_gwf_soil_finalize_setup (cs_gwf_model_type_t gwf_model, cs_flag_t post_flag, cs_lnum_t n_cells) |
Last initialization step for the soil structures/parameters. | |
void | cs_gwf_soil_log_setup (void) |
Summary of the settings related to all cs_gwf_soil_t structures. | |
void | cs_gwf_soil_update (cs_real_t time_eval, const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq) |
Update the soil properties. | |
void | cs_gwf_soil_update_soil_state (cs_lnum_t n_cells, const cs_real_t *sliq) |
Update the soil state associated to each cell w.r.t. the given liquid saturation. | |
void | cs_gwf_soil_define_shared_properties (cs_property_t *abs_permeability, cs_property_t *soil_porosity) |
Set the definition of the soil porosity and absolute permeability (which are properties always defined in the GWF module). One relies on the definition of these properties in each soil. | |
void | cs_gwf_soil_define_sspf_property (cs_property_t *moisture_content) |
Set the definition of the soil porosity and absolute porosity (which are properties always defined). This relies on the definition of each soil. | |
void | cs_gwf_soil_build_dual_porous_volume (const cs_cdo_quantities_t *cdoq, const cs_cdo_connect_t *connect) |
Build an array storing the dual volume associated to each vertex taking into account the porosity of the soil The computed quantity is stored as a static array. Use the function cs_gwf_soil_get_dual_vol_l() | |
const double * | cs_gwf_soil_get_dual_porous_volume (void) |
Get the array storing the dual volume weighted by the soil porosity Array of size n_vertices. | |
const short int * | cs_gwf_soil_get_cell2soil (void) |
Get the array storing the associated soil for each cell. | |
const int * | cs_gwf_soil_get_soil_state (void) |
Get the array storing the soil state associated to each cell. | |
cs_real_t | cs_gwf_soil_get_porosity (int soil_id) |
Get the porosity value for the given soil id. | |
cs_real_t | cs_gwf_soil_get_saturated_moisture (int soil_id) |
Get the saturated moisture for the given soil id. | |
int | cs_gwf_soil_get_permeability_max_dim (void) |
Retrieve the max dim (aniso=9; iso=1) for the absolute permeability associated to each soil. | |
void | cs_gwf_soil_set_vgm_spf_param (cs_gwf_soil_t *soil, double theta_r, double alpha, double n, double L) |
Set a soil defined by a Van Genuchten-Mualem model in the case of single-phase flow in an (unsaturated) porous media. | |
void | cs_gwf_soil_set_vgm_tpf_param (cs_gwf_soil_t *soil, double n, double pr_r, double sl_r, double sl_s) |
Set the parameters related to a Van Genuchten-Mualen model to defined the behavior of a soil in the case of two-phase flow in an porous media. | |
void | cs_gwf_soil_set_vgm_tpf_advanced_param (cs_gwf_soil_t *soil, cs_gwf_soil_join_type_t sle_jtype, cs_gwf_soil_join_type_t kr_jtype, double sle_thres) |
Set advanced parameter settings related to a Van Genuchten-Mualen soil model. | |
void | cs_gwf_soil_set_user_model_param (cs_gwf_soil_t *soil, void *param, cs_gwf_soil_update_t *update_func, cs_gwf_soil_free_param_t *free_param_func) |
Set a soil defined by a user-defined model. | |
void | cs_gwf_soil_set_joining_poly_order (int order) |
Set the value of the polynomial order considered when regularizing the Van Genuchten-Mualen soil law near the saturated regime. Advanced usage. This function has to be called before calling the function cs_gwf_soil_set_vgm_tpf_param Default: 2. Available values: 2 or 3. |
typedef void cs_gwf_soil_free_param_t(void **p_param) |
Generic function to set free the parameter structure associated to a soil.
[in,out] | p_param | double pointer to a structure cast on-the-fly |
typedef void cs_gwf_soil_tpf_eval_t(const cs_gwf_soil_vgm_tpf_param_t *sp, const double pc, double *sl, double *dsldpc, double *krl, double *krg) |
Compute the values of the different properties related to a soil in the case of a Van Genuchten-Mualem model and a two-phase flow model.
[in] | sp | set of modelling parameters |
[out] | sl | liquid saturation |
[out] | dsldpc | liquid capacity |
[out] | krl | relative permeability for the liquid phase |
[out] | krg | relative permeability for the gas phase |
typedef void cs_gwf_soil_update_t(const cs_real_t t_eval, const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_zone_t *zone, cs_gwf_soil_t *soil) |
Generic function to update the properties related to a hydraulic model given the soil model. The soil parameters depend on the type of soil model.
[in] | t_eval | time at which one performs the evaluation |
[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] | zone | pointer to a cs_zone_t |
[in,out] | soil | pointer to the soil structure to update |
Kind of joining function used with closure laws.
enum cs_gwf_soil_state_t |
Kind of state in which a cell is.
int cs_gwf_get_n_soils | ( | void | ) |
Get the number of allocated soils.
void cs_gwf_soil_build_dual_porous_volume | ( | const cs_cdo_quantities_t * | cdoq, |
const cs_cdo_connect_t * | connect ) |
Build an array storing the dual volume associated to each vertex taking into account the porosity of the soil The computed quantity is stored as a static array. Use the function cs_gwf_soil_get_dual_vol_l()
[in] | cdoq | additional geometrical quantities for CDO schemes |
[in] | connect | additional connectivities for CDO schemes |
cs_gwf_soil_t * cs_gwf_soil_by_id | ( | int | id | ) |
Retrieve a soil structure from its id.
[in] | id | id to look for |
cs_gwf_soil_t * cs_gwf_soil_by_name | ( | const char * | name | ) |
Retrieve a soil structure from its name.
[in] | name | name to look for |
cs_gwf_soil_t * cs_gwf_soil_create | ( | const cs_zone_t * | zone, |
cs_gwf_model_type_t | hydraulic_model, | ||
cs_gwf_soil_model_t | model, | ||
cs_property_type_t | perm_type, | ||
double | k_abs[3][3], | ||
double | porosity, | ||
double | bulk_density, | ||
void * | hydraulic_context ) |
Create a new cs_gwf_soil_t structure and add it to the array of soils. An initialization by default of all members is performed.
[in] | zone | pointer to a volume zone structure |
[in] | hydraulic_model | main hydraulic model for the module |
[in] | model | type of model for the soil behavior |
[in] | perm_type | type of permeability (iso/anisotropic) |
[in] | k_abs | absolute (intrisic) permeability |
[in] | porosity | porosity or max. moisture content |
[in] | bulk_density | value of the mass density |
[in] | hydraulic_context | pointer to the context structure |
void cs_gwf_soil_define_shared_properties | ( | cs_property_t * | abs_permeability, |
cs_property_t * | soil_porosity ) |
Set the definition of the soil porosity and absolute permeability (which are properties always defined in the GWF module). One relies on the definition of these properties in each soil.
[in,out] | abs_permeability | pointer to a cs_property_t structure |
[in,out] | soil_porosity | pointer to a cs_property_t structure |
void cs_gwf_soil_define_sspf_property | ( | cs_property_t * | moisture_content | ) |
Set the definition of the soil porosity and absolute porosity (which are properties always defined). This relies on the definition of each soil.
[in,out] | moisture_content | pointer to a cs_property_t structure |
void cs_gwf_soil_finalize_setup | ( | cs_gwf_model_type_t | gwf_model, |
cs_flag_t | post_flag, | ||
cs_lnum_t | n_cells ) |
Last initialization step for the soil structures/parameters.
[in] | gwf_model | modelling used for the GWF module |
[in] | post_flag | which post-processing to do |
[in] | n_cells | number of cells |
void cs_gwf_soil_free_all | ( | void | ) |
Free all cs_gwf_soil_t structures.
const short int * cs_gwf_soil_get_cell2soil | ( | void | ) |
Get the array storing the associated soil for each cell.
const double * cs_gwf_soil_get_dual_porous_volume | ( | void | ) |
Get the array storing the dual volume weighted by the soil porosity Array of size n_vertices.
int cs_gwf_soil_get_permeability_max_dim | ( | void | ) |
Retrieve the max dim (aniso=9; iso=1) for the absolute permeability associated to each soil.
cs_real_t cs_gwf_soil_get_porosity | ( | int | soil_id | ) |
Get the porosity value for the given soil id.
[in] | soil_id | id of the requested soil |
cs_real_t cs_gwf_soil_get_saturated_moisture | ( | int | soil_id | ) |
Get the saturated moisture for the given soil id.
[in] | soil_id | id of the requested soil |
const int * cs_gwf_soil_get_soil_state | ( | void | ) |
Get the array storing the soil state associated to each cell.
const cs_zone_t * cs_gwf_soil_get_zone | ( | int | soil_id | ) |
Retrieve a zone associated to a soil from its id.
[in] | soil_id | id to look for |
[in] | soil_id | id to look for |
void cs_gwf_soil_log_setup | ( | void | ) |
Summary of the settings related to all cs_gwf_soil_t structures.
void cs_gwf_soil_set_joining_poly_order | ( | int | order | ) |
Set the value of the polynomial order considered when regularizing the Van Genuchten-Mualen soil law near the saturated regime. Advanced usage. This function has to be called before calling the function cs_gwf_soil_set_vgm_tpf_param Default: 2. Available values: 2 or 3.
[in] | order | value of the polynomial order (2 or 3) |
void cs_gwf_soil_set_user_model_param | ( | cs_gwf_soil_t * | soil, |
void * | param, | ||
cs_gwf_soil_update_t * | update_func, | ||
cs_gwf_soil_free_param_t * | free_param_func ) |
Set a soil defined by a user-defined model.
[in,out] | soil | pointer to a cs_gwf_soil_t structure |
[in] | param | pointer to a structure cast on-the-fly |
[in] | update_func | function pointer to update propoerties |
[in] | free_param_func | function pointer to free the param struct. |
void cs_gwf_soil_set_vgm_spf_param | ( | cs_gwf_soil_t * | soil, |
double | theta_r, | ||
double | alpha, | ||
double | n, | ||
double | L ) |
Set a soil defined by a Van Genuchten-Mualem model in the case of single-phase flow in an (unsaturated) porous media.
The (effective) liquid saturation (also called moisture content) follows the identity S_l,eff = (S_l - theta_r)/(theta_s - theta_r) = (1 + |alpha . h|^n)^(-m)
The isotropic relative permeability is defined as: k_r = S_l,eff^L * (1 - (1 - S_l,eff^(1/m))^m))^2 where m = 1 - 1/n
[in,out] | soil | pointer to a cs_gwf_soil_t structure |
[in] | theta_r | residual moisture |
[in] | alpha | scale parameter (in m^-1) |
[in] | n | shape parameter |
[in] | L | tortuosity parameter |
void cs_gwf_soil_set_vgm_tpf_advanced_param | ( | cs_gwf_soil_t * | soil, |
cs_gwf_soil_join_type_t | sle_jtype, | ||
cs_gwf_soil_join_type_t | kr_jtype, | ||
double | sle_thres ) |
Set advanced parameter settings related to a Van Genuchten-Mualen soil model.
[in,out] | soil | pointer to a cs_gwf_soil_t structure |
[in] | sle_jtype | type of joining function for the effective Sl |
[in] | kr_jtype | type of joining function for krg and krl |
[in] | sle_thres | value of the effective liquid saturation above which a joining function is used |
void cs_gwf_soil_set_vgm_tpf_param | ( | cs_gwf_soil_t * | soil, |
double | n, | ||
double | pr_r, | ||
double | sl_r, | ||
double | sl_s ) |
Set the parameters related to a Van Genuchten-Mualen model to defined the behavior of a soil in the case of two-phase flow in an porous media.
The (effective) liquid saturation follows the identity sl_eff = (sl - sl_r)/(sl_s - sl_r) = (1 + |Pc/Pr_r|^n)^(-m) where m = 1 - 1/n
The isotropic relative permeability in the liquid and gaz are defined as: krl = sl_eff^(1/2) * (1 - (1 - sl_eff^(1/m))^m))^2 krg = (1 - sl_eff)^(1/2) * (1 - sl_eff^(1/m))^(2m)
[in,out] | soil | pointer to a cs_gwf_soil_t structure |
[in] | n | shape parameter |
[in] | pr_r | reference (capillarity) pressure |
[in] | sl_r | residual liquid saturation |
[in] | sl_s | saturated (max.) liquid saturation |
void cs_gwf_soil_update | ( | cs_real_t | time_eval, |
const cs_mesh_t * | mesh, | ||
const cs_cdo_connect_t * | connect, | ||
const cs_cdo_quantities_t * | cdoq ) |
Update the soil properties.
[in] | time_eval | time at which one evaluates properties |
[in] | mesh | pointer to the mesh structure |
[in] | connect | pointer to the cdo connectivity |
[in] | cdoq | pointer to the cdo quantities |