8.0
general documentation
cs_gwf_soil.h File Reference
#include "cs_base.h"
#include "cs_cdo_connect.h"
#include "cs_cdo_quantities.h"
#include "cs_gwf_param.h"
#include "cs_gwf_priv.h"
#include "cs_mesh.h"
#include "cs_property.h"
#include "cs_volume_zone.h"
+ Include dependency graph for cs_gwf_soil.h:

Go to the source code of this file.

Data Structures

struct  cs_gwf_soil_param_genuchten_t
 Structure to handle the Van Genuchten-Mualen model of soil. More...
 
struct  cs_gwf_soil_t
 Main structure to handle a soil in the groundwater flow module. 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. More...
 
typedef void() cs_gwf_soil_free_param_t(void **p_param)
 Generic function to set free the parameter structure associated to a soil. 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...
 
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. More...
 
bool cs_gwf_soil_all_are_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_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. More...
 
void cs_gwf_soil_build_cell2soil (cs_lnum_t n_cells)
 Build an array storing the associated soil for each cell The lifecycle of this array is managed by the code. More...
 
const short int * cs_gwf_soil_get_cell2soil (void)
 Get the array storing the associated soil for each cell. More...
 
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() More...
 
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. 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_genuchten_param (cs_gwf_soil_t *soil, double theta_r, double alpha, double n, double L)
 Set a soil defined by a Van Genuchten-Mualen model. More...
 
void cs_gwf_soil_set_user (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. More...
 
void cs_gwf_soil_set_shared_properties (cs_property_t *abs_permeability, cs_property_t *soil_porosity)
 Set the definition of the soil porosity and absolute porosity (which are properties always defined). This relies on the definition of each soil. More...
 
void cs_gwf_soil_saturated_set_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. More...
 
void cs_gwf_soil_tpf_set_property (cs_gwf_two_phase_t *mc)
 Set the definition of some property(ies) in specific situations for the two-phase flow models This relies on the definition of each soil. 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...
 
void cs_gwf_soil_iso_update_mtpf_terms (cs_gwf_two_phase_t *mc)
 Update arrays associated to the definition of terms involved in the miscible two-phase flow model. Case of an isotropic absolute permeability. More...
 
void cs_gwf_soil_iso_update_itpf_terms (cs_gwf_two_phase_t *mc)
 Update arrays associated to the definition of terms involved in the immiscible two-phase flow model. Case of an isotropic absolute permeability. More...
 
void cs_gwf_soil_iso_update_itpf_terms_incr (const cs_time_step_t *ts, cs_gwf_two_phase_t *mc)
 Update arrays associated to the definition of terms involved in the immiscible two-phase flow model. Case of an isotropic absolute permeability and an incremental solve. More...
 
void cs_gwf_soil_iso_update_itpf_terms_incr_submesh (const cs_time_step_t *ts, const cs_cdo_connect_t *connect, cs_gwf_two_phase_t *mc)
 Update arrays associated to the definition of terms involved in the immiscible two-phase flow model. Case of an isotropic absolute permeability with an incremental solve and a liquid saturation defined on a submesh. More...
 

Typedef Documentation

◆ cs_gwf_soil_free_param_t

typedef void() cs_gwf_soil_free_param_t(void **p_param)

Generic function to set free the parameter structure associated to a soil.

Parameters
[in,out]p_paramdouble pointer to a structure cast on-the-fly

◆ cs_gwf_soil_update_t

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.

Parameters
[in]t_evaltime at which one performs the evaluation
[in]meshpointer to a cs_mesh_t structure
[in]connectpointer to a cs_cdo_connect_t structure
[in]quantpointer to a cs_cdo_quantities_t structure
[in]zonepointer to a cs_zone_t
[in,out]soilpointer to the soil structure to update

Function Documentation

◆ cs_gwf_get_n_soils()

int cs_gwf_get_n_soils ( void  )

Get the number of allocated soils.

Returns
the number of allocated soils

◆ cs_gwf_soil_all_are_saturated()

bool cs_gwf_soil_all_are_saturated ( void  )

Check if all soils have been set as CS_GWF_SOIL_SATURATED.

Returns
true or false

◆ cs_gwf_soil_build_cell2soil()

void cs_gwf_soil_build_cell2soil ( cs_lnum_t  n_cells)

Build an array storing the associated soil for each cell The lifecycle of this array is managed by the code.

Parameters
[in]n_cellsnumber of cells

◆ cs_gwf_soil_build_dual_porous_volume()

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()

Parameters
[in]cdoqpointer to a structure storing additional geometrical quantities for CDO schemes
[in]connectpointer to a structure storing additional connectivities for CDO schemes

◆ cs_gwf_soil_by_id()

cs_gwf_soil_t* cs_gwf_soil_by_id ( int  id)

Retrieve a soil structure from its id.

Parameters
[in]idid to look for
Returns
a pointer to a cs_gwf_soil_t structure

◆ cs_gwf_soil_by_name()

cs_gwf_soil_t* cs_gwf_soil_by_name ( const char *  name)

Retrieve a soil structure from its name.

Parameters
[in]namename to look for
Returns
a pointer to a cs_gwf_soil_t structure

◆ cs_gwf_soil_check()

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_create()

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.

Parameters
[in]zonepointer to a volume zone structure
[in]hydraulic_modelmain hydraulic model for the module
[in]modeltype of model for the soil behavior
[in]perm_typetype of permeability (iso/anisotropic)
[in]k_absabsolute (intrisic) permeability
[in]porosityporosity or max. moisture content
[in]bulk_densityvalue of the mass density
[in]hydraulic_contextpointer to the context structure
Returns
a pointer to the new allocated structure

◆ cs_gwf_soil_free_all()

void cs_gwf_soil_free_all ( void  )

Free all cs_gwf_soil_t structures.

◆ cs_gwf_soil_get_cell2soil()

const short int* cs_gwf_soil_get_cell2soil ( void  )

Get the array storing the associated soil for each cell.

Returns
a pointer to the array

◆ cs_gwf_soil_get_dual_porous_volume()

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.

Returns
a pointer to the requested array

◆ cs_gwf_soil_get_permeability_max_dim()

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.

Returns
the associated max. dimension

◆ cs_gwf_soil_get_saturated_moisture()

cs_real_t cs_gwf_soil_get_saturated_moisture ( int  soil_id)

Get the saturated moisture for the given soil id.

Parameters
[in]soil_idid of the requested soil
Returns
the value of the saturated moisture

◆ cs_gwf_soil_iso_update_itpf_terms()

void cs_gwf_soil_iso_update_itpf_terms ( cs_gwf_two_phase_t mc)

Update arrays associated to the definition of terms involved in the immiscible two-phase flow model. Case of an isotropic absolute permeability.

Parameters
[in,out]mcpointer to the model context to update

◆ cs_gwf_soil_iso_update_itpf_terms_incr()

void cs_gwf_soil_iso_update_itpf_terms_incr ( const cs_time_step_t ts,
cs_gwf_two_phase_t mc 
)

Update arrays associated to the definition of terms involved in the immiscible two-phase flow model. Case of an isotropic absolute permeability and an incremental solve.

Parameters
[in]tspointer to a cs_time_step_t structure
[in,out]mcpointer to the model context to update

◆ cs_gwf_soil_iso_update_itpf_terms_incr_submesh()

void cs_gwf_soil_iso_update_itpf_terms_incr_submesh ( const cs_time_step_t ts,
const cs_cdo_connect_t connect,
cs_gwf_two_phase_t mc 
)

Update arrays associated to the definition of terms involved in the immiscible two-phase flow model. Case of an isotropic absolute permeability with an incremental solve and a liquid saturation defined on a submesh.

Parameters
[in]tspointer to a cs_time_step_t structure
[in]connectpointer to a cs_cdo_connect_t structure
[in,out]mcpointer to the model context to update

◆ cs_gwf_soil_iso_update_mtpf_terms()

void cs_gwf_soil_iso_update_mtpf_terms ( cs_gwf_two_phase_t mc)

Update arrays associated to the definition of terms involved in the miscible two-phase flow model. Case of an isotropic absolute permeability.

Parameters
[in,out]mcpointer to the model context to update

◆ cs_gwf_soil_log_setup()

void cs_gwf_soil_log_setup ( void  )

Summary of the settings related to all cs_gwf_soil_t structures.

◆ cs_gwf_soil_saturated_set_property()

void cs_gwf_soil_saturated_set_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.

Parameters
[in,out]moisture_contentpointer to a cs_property_t structure

◆ cs_gwf_soil_set_genuchten_param()

void cs_gwf_soil_set_genuchten_param ( cs_gwf_soil_t *  soil,
double  theta_r,
double  alpha,
double  n,
double  L 
)

Set a soil defined by a Van Genuchten-Mualen model.

    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
Parameters
[in,out]soilpointer to a cs_gwf_soil_t structure
[in]theta_rresidual moisture
[in]alphascale parameter (in m^-1)
[in]nshape parameter
[in]Lturtuosity parameter

◆ cs_gwf_soil_set_shared_properties()

void cs_gwf_soil_set_shared_properties ( cs_property_t abs_permeability,
cs_property_t soil_porosity 
)

Set the definition of the soil porosity and absolute porosity (which are properties always defined). This relies on the definition of each soil.

Parameters
[in,out]abs_permeabilitypointer to a cs_property_t structure
[in,out]soil_porositypointer to a cs_property_t structure

◆ cs_gwf_soil_set_user()

void cs_gwf_soil_set_user ( 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.

Parameters
[in,out]soilpointer to a cs_gwf_soil_t structure
[in]parampointer to a structure cast on-the-fly
[in]update_funcfunction pointer to update propoerties
[in]free_param_funcfunction pointer to free the param struct.

◆ cs_gwf_soil_tpf_set_property()

void cs_gwf_soil_tpf_set_property ( cs_gwf_two_phase_t mc)

Set the definition of some property(ies) in specific situations for the two-phase flow models This relies on the definition of each soil.

Parameters
[in,out]mcpointer to the model context structure

◆ cs_gwf_soil_update()

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.

Parameters
[in]time_evaltime at which one evaluates properties
[in]meshpointer to the mesh structure
[in]connectpointer to the cdo connectivity
[in]quantpointer to the cdo quantities