#include "cs_base.h"
#include "cs_cdo_connect.h"
#include "cs_cdo_quantities.h"
#include "cs_mesh.h"
#include "cs_property.h"
#include "cs_volume_zone.h"
Go to the source code of this file.
Data Structures | |
struct | cs_gwf_soil_context_genuchten_t |
Structure to handle the Van Genuchten-Mualen model of soil. More... | |
struct | cs_gwf_soil_context_saturated_t |
Parameters defining a saturated soil in a given zone. More... | |
struct | cs_gwf_soil_t |
Main structure to handle a soil in the groundawater flow module. Store a set of parameters and pointers describing a soil. 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, void *soil_context) |
Generic function to update the physical properties related to a hydraulic model. The soil context depends on the type of soil. More... | |
typedef void() | cs_gwf_soil_free_context_t(void **p_context) |
Generic function to set free the soil context of a soil structure. More... | |
Enumerations | |
enum | cs_gwf_soil_hydraulic_model_t { CS_GWF_SOIL_GENUCHTEN, CS_GWF_SOIL_SATURATED, CS_GWF_SOIL_USER, CS_GWF_SOIL_N_HYDRAULIC_MODELS } |
Predefined hydraulic model of soils used in the groundwater flow module. More... | |
Functions | |
int | cs_gwf_get_n_soils (void) |
Get the number of allocated soils. More... | |
cs_gwf_soil_t * | cs_gwf_soil_by_id (int id) |
Retrieve a soil structure from its id. More... | |
cs_gwf_soil_t * | cs_gwf_soil_by_name (const char *name) |
Retrieve a soil structure from its name. More... | |
cs_real_t | cs_gwf_soil_get_saturated_moisture (int soil_id) |
Get the saturated moisture for the given soil id. More... | |
bool | cs_gwf_soil_all_saturated (void) |
Check if all soils have been set as CS_GWF_SOIL_SATURATED. More... | |
void | cs_gwf_soil_check (void) |
Check that at least one soil has been defined and the model of soil exists. Raise an error if a problem is encoutered. More... | |
cs_gwf_soil_t * | cs_gwf_soil_create (const cs_zone_t *zone, cs_gwf_soil_hydraulic_model_t model, cs_property_type_t perm_type, double saturated_moisture, double bulk_density) |
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. More... | |
void | cs_gwf_build_cell2soil (cs_lnum_t n_cells) |
Build an array storing the associated soil for each cell. More... | |
const short int * | cs_gwf_get_cell2soil (void) |
Get the array storing the associated soil for each cell. More... | |
void | cs_gwf_soil_free_all (void) |
Free all cs_gwf_soil_t structures. More... | |
void | cs_gwf_soil_log_setup (void) |
Summary of the settings related to all cs_gwf_soil_t structures. More... | |
void | cs_gwf_soil_set_iso_saturated (cs_gwf_soil_t *soil, double k_s) |
Set a soil defined by a saturated hydraulic model and attached to an isotropic permeability. More... | |
void | cs_gwf_soil_set_aniso_saturated (cs_gwf_soil_t *soil, double k_s[3][3]) |
Set a soil defined by a saturated hydraulic model and attached to an anisotropic permeability. More... | |
void | cs_gwf_soil_set_iso_genuchten (cs_gwf_soil_t *soil, double k_s, double theta_r, double alpha, double n, double L) |
Set a soil defined by a Van Genuchten-Mualen hydraulic model and attached to an isotropic saturated permeability. More... | |
void | cs_gwf_soil_set_aniso_genuchten (cs_gwf_soil_t *soil, double k_s[3][3], double theta_r, double alpha, double n, double L) |
Set a soil defined by a Van Genuchten-Mualen hydraulic model and attached to an anisotropic saturated permeability. More... | |
void | cs_gwf_soil_set_user (cs_gwf_soil_t *soil, void *context, cs_gwf_soil_update_t *update_func, cs_gwf_soil_free_context_t *free_context_func) |
Set a soil defined by a user-defined hydraulic model. More... | |
void | cs_gwf_soil_saturated_set_properties (cs_property_t *permeability, cs_property_t *moisture_content) |
Set the properties of the groundwater flow module in the case where all soils are considered as saturated. More... | |
void | cs_gwf_soil_uspf_set_arrays (cs_real_t head[], cs_real_t permeability[], cs_real_t moisture_content[], cs_real_t capacity[]) |
Set the different arrays used in soil context for a GWF model set to unsaturated single-phase flows in a porous media. More... | |
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 *quant) |
Update the soil properties. More... | |
typedef void() cs_gwf_soil_free_context_t(void **p_context) |
Generic function to set free the soil context of a soil structure.
[in,out] | context | double pointer to a structure cast on-the-fly |
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, void *soil_context) |
Generic function to update the physical properties related to a hydraulic model. The soil context depends on the type of soil.
[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_context | pointer to a structure cast on-the-fly |
Predefined hydraulic model of soils used in the groundwater flow module.
void cs_gwf_build_cell2soil | ( | cs_lnum_t | n_cells | ) |
Build an array storing the associated soil for each cell.
[in] | n_cells | number of cells |
const short int* cs_gwf_get_cell2soil | ( | void | ) |
Get the array storing the associated soil for each cell.
int cs_gwf_get_n_soils | ( | void | ) |
Get the number of allocated soils.
bool cs_gwf_soil_all_saturated | ( | void | ) |
Check if all soils have been set as CS_GWF_SOIL_SATURATED.
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 |
void cs_gwf_soil_check | ( | void | ) |
Check that at least one soil has been defined and the model of soil exists. Raise an error if a problem is encoutered.
cs_gwf_soil_t* cs_gwf_soil_create | ( | const cs_zone_t * | zone, |
cs_gwf_soil_hydraulic_model_t | model, | ||
cs_property_type_t | perm_type, | ||
double | sat_moisture, | ||
double | bulk_density | ||
) |
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] | model | type of modelling for the hydraulic behavior |
[in] | perm_type | type of permeability (iso/anisotropic) |
[in] | saturated_moisture | moisture content |
[in] | bulk_density | value of the mass density |
[in] | zone | pointer to a volume zone structure |
[in] | model | type of modelling for the hydraulic behavior |
[in] | perm_type | type of permeability (iso/anisotropic) |
[in] | sat_moisture | value of the saturated moisture content |
[in] | bulk_density | value of the mass density |
void cs_gwf_soil_free_all | ( | void | ) |
Free all cs_gwf_soil_t structures.
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 |
void cs_gwf_soil_log_setup | ( | void | ) |
Summary of the settings related to all cs_gwf_soil_t structures.
void cs_gwf_soil_saturated_set_properties | ( | cs_property_t * | permeability, |
cs_property_t * | moisture_content | ||
) |
Set the properties of the groundwater flow module in the case where all soils are considered as saturated.
[in,out] | permeability | pointer to a cs_property_t structure |
[in,out] | moisture_content | pointer to a cs_property_t structure |
void cs_gwf_soil_set_aniso_genuchten | ( | cs_gwf_soil_t * | soil, |
double | k_s[3][3], | ||
double | theta_r, | ||
double | alpha, | ||
double | n, | ||
double | L | ||
) |
Set a soil defined by a Van Genuchten-Mualen hydraulic model and attached to an anisotropic saturated permeability.
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] | k_s | value of the isotropic saturated permeability |
[in] | theta_r | residual moisture/liquid saturation |
[in] | alpha | scale parameter (in m^-1) |
[in] | n | shape parameter |
[in] | L | turtuosity parameter |
void cs_gwf_soil_set_aniso_saturated | ( | cs_gwf_soil_t * | soil, |
double | k_s[3][3] | ||
) |
Set a soil defined by a saturated hydraulic model and attached to an anisotropic permeability.
[in,out] | soil | pointer to a cs_gwf_soil_t structure |
[in] | k_s | value of the anisotropic saturated permeability |
void cs_gwf_soil_set_iso_genuchten | ( | cs_gwf_soil_t * | soil, |
double | k_s, | ||
double | theta_r, | ||
double | alpha, | ||
double | n, | ||
double | L | ||
) |
Set a soil defined by a Van Genuchten-Mualen hydraulic model and attached to an isotropic saturated permeability.
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] | k_s | value of the isotropic saturated permeability |
[in] | theta_r | residual moisture |
[in] | alpha | scale parameter (in m^-1) |
[in] | n | shape parameter |
[in] | L | turtuosity parameter |
void cs_gwf_soil_set_iso_saturated | ( | cs_gwf_soil_t * | soil, |
double | k_s | ||
) |
Set a soil defined by a saturated hydraulic model and attached to an isotropic permeability.
[in,out] | soil | pointer to a cs_gwf_soil_t structure |
[in] | k_s | value of the saturated permeability |
void cs_gwf_soil_set_user | ( | cs_gwf_soil_t * | soil, |
void * | context, | ||
cs_gwf_soil_update_t * | update_func, | ||
cs_gwf_soil_free_context_t * | free_context_func | ||
) |
Set a soil defined by a user-defined hydraulic model.
[in,out] | soil | pointer to a cs_gwf_soil_t structure |
[in] | context | pointer to a structure cast on-the-fly |
[in] | update_func | function pointer to update propoerties |
[in] | free_context_func | function pointer to free the context |
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 * | quant | ||
) |
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] | quant | pointer to the cdo quantities |
void cs_gwf_soil_uspf_set_arrays | ( | cs_real_t | head[], |
cs_real_t | permeability[], | ||
cs_real_t | moisture_content[], | ||
cs_real_t | capacity[] | ||
) |
Set the different arrays used in soil context for a GWF model set to unsaturated single-phase flows in a porous media.
[in] | head | pointer to the current head values in cells |
[in] | permeability | pointer to the current permeability values |
[in] | moisture_content | pointer to the current moisture content values |
[in] | capacity | pointer to the current soil capacity values |