Helper functions dedicated to groundwater flows when using CDO schemes. More...
#include "cs_defs.h"#include <assert.h>#include <stdlib.h>#include <string.h>#include <bft_mem.h>#include "cs_advection_field.h"#include "cs_array.h"#include "cs_evaluate.h"#include "cs_parall.h"#include "cs_physical_constants.h"#include "cs_reco.h"#include "cs_gwf_priv.h" Include dependency graph for cs_gwf_priv.c:
 Include dependency graph for cs_gwf_priv.c:| Macros | |
| #define | _dp3 cs_math_3_dot_product | 
| #define | CS_GWF_PRIV_DBG 0 | 
| Functions | |
| void | cs_gwf_get_value_pointers (const cs_equation_t *eq, cs_real_t **p_dof_vals, cs_real_t **p_cell_vals) | 
| Retrieve the values of (potential) fields needed for the update of the Darcy velocity/fluxes.  More... | |
| cs_gwf_darcy_flux_t * | cs_gwf_darcy_flux_create (cs_flag_t loc_flag) | 
| Allocate and initialize a cs_gwf_darcy_flux_t structure.  More... | |
| void | cs_gwf_darcy_flux_free (cs_gwf_darcy_flux_t **p_darcy) | 
| Free a cs_gwf_darcy_flux_t structure.  More... | |
| void | cs_gwf_darcy_flux_log (cs_gwf_darcy_flux_t *darcy) | 
| Log a cs_gwf_darcy_flux_t structure.  More... | |
| void | cs_gwf_darcy_flux_define (const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq, cs_param_space_scheme_t space_scheme, void *update_context, cs_gwf_darcy_update_t *update_func, cs_gwf_darcy_flux_t *darcy) | 
| Set the definition of the advection field attached to a cs_gwf_darcy_flux_t structure If the function pointer is set to NULL, then an automatic settings is done.  More... | |
| void | cs_gwf_darcy_flux_balance (const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_equation_param_t *eqp, cs_gwf_darcy_flux_t *darcy) | 
| Operate the balance by zone (relying on the splitting arising from the boundary settings) for the advection field attached to a cs_gwf_darcy_flux_t structure.  More... | |
| void | cs_gwf_darcy_flux_update_on_boundary (cs_real_t t_eval, const cs_equation_t *eq, cs_adv_field_t *adv) | 
| Compute the associated Darcy flux over the boundary of the domain for each vertex of a boundary face. Case of a vertex-based discretization and single-phase flows in porous media (saturated or not).  More... | |
| void | cs_gwf_darcy_flux_update_on_boundary_wo_eq (const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq, cs_real_t *cell_vel, cs_adv_field_t *adv) | 
| Compute the associated Darcy flux over the boundary of the domain for each vertex of a boundary face without using an equation (i.e. there is no associated boundary condition). Case of a vertex-based discretization.  More... | |
| void | cs_gwf_update_head (const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq, const cs_equation_t *richards, cs_flag_t option_flag, cs_field_t *pressure_head, cs_real_t head_in_law[], bool cur2prev) | 
| Update head values (pressure head or head values for laws) Up to now, this is only used for single-phase flows in porous media (saturated or not case).  More... | |
Helper functions dedicated to groundwater flows when using CDO schemes.
| #define _dp3 cs_math_3_dot_product | 
| #define CS_GWF_PRIV_DBG 0 | 
| void cs_gwf_darcy_flux_balance | ( | const cs_cdo_connect_t * | connect, | 
| const cs_cdo_quantities_t * | quant, | ||
| const cs_equation_param_t * | eqp, | ||
| cs_gwf_darcy_flux_t * | darcy | ||
| ) | 
Operate the balance by zone (relying on the splitting arising from the boundary settings) for the advection field attached to a cs_gwf_darcy_flux_t structure.
| [in] | connect | pointer to a cs_cdo_connect_t structure | 
| [in] | quant | pointer to a cs_cdo_quantities_t structure | 
| [in] | eqp | pointer to the set of equation parameters | 
| [in,out] | darcy | pointer to the darcy structure | 
| cs_gwf_darcy_flux_t* cs_gwf_darcy_flux_create | ( | cs_flag_t | loc_flag | ) | 
Allocate and initialize a cs_gwf_darcy_flux_t structure.
| [in] | loc_flag | flag to define where the flux is defined | 
| void cs_gwf_darcy_flux_define | ( | const cs_cdo_connect_t * | connect, | 
| const cs_cdo_quantities_t * | cdoq, | ||
| cs_param_space_scheme_t | space_scheme, | ||
| void * | update_context, | ||
| cs_gwf_darcy_update_t * | update_func, | ||
| cs_gwf_darcy_flux_t * | darcy | ||
| ) | 
Set the definition of the advection field attached to a cs_gwf_darcy_flux_t structure If the function pointer is set to NULL, then an automatic settings is done.
| [in] | connect | pointer to a cs_cdo_connect_t structure | 
| [in] | cdoq | pointer to a cs_cdo_quantities_t structure | 
| [in] | space_scheme | space discretization using this structure | 
| [in] | update_context | pointer to the context for the update step | 
| [in] | update_func | pointer to an update function or NULL | 
| [in,out] | darcy | pointer to the darcy structure | 
| void cs_gwf_darcy_flux_free | ( | cs_gwf_darcy_flux_t ** | p_darcy | ) | 
Free a cs_gwf_darcy_flux_t structure.
| [in,out] | p_darcy | pointer of pointer to the darcy structure | 
| void cs_gwf_darcy_flux_log | ( | cs_gwf_darcy_flux_t * | darcy | ) | 
Log a cs_gwf_darcy_flux_t structure.
| [in,out] | darcy | pointer to the darcy structure | 
| void cs_gwf_darcy_flux_update_on_boundary | ( | cs_real_t | t_eval, | 
| const cs_equation_t * | eq, | ||
| cs_adv_field_t * | adv | ||
| ) | 
Compute the associated Darcy flux over the boundary of the domain for each vertex of a boundary face. Case of a vertex-based discretization and single-phase flows in porous media (saturated or not).
| [in] | t_eval | time at which one performs the evaluation | 
| [in] | eq | pointer to the equation related to this Darcy flux | 
| [in,out] | adv | pointer to the Darcy advection field | 
| void cs_gwf_darcy_flux_update_on_boundary_wo_eq | ( | const cs_cdo_connect_t * | connect, | 
| const cs_cdo_quantities_t * | cdoq, | ||
| cs_real_t * | cell_vel, | ||
| cs_adv_field_t * | adv | ||
| ) | 
Compute the associated Darcy flux over the boundary of the domain for each vertex of a boundary face without using an equation (i.e. there is no associated boundary condition). Case of a vertex-based discretization.
| [in] | connect | pointer to a cs_cdo_connect_t structure | 
| [in] | cdoq | pointer to a cs_cdo_quantities_t structure | 
| [in] | cell_vel | Darcy velocity in each cell | 
| [in,out] | adv | pointer to the Darcy advection field to update | 
| void cs_gwf_get_value_pointers | ( | const cs_equation_t * | eq, | 
| cs_real_t ** | p_dof_vals, | ||
| cs_real_t ** | p_cell_vals | ||
| ) | 
Retrieve the values of (potential) fields needed for the update of the Darcy velocity/fluxes.
| [in] | eq | pointer to an equation structure | 
| [out] | p_dof_vals | double pointer to the values (degrees of freedom) | 
| [out] | p_cell_vals | double pointer to the values (cell values) | 
| void cs_gwf_update_head | ( | const cs_cdo_connect_t * | connect, | 
| const cs_cdo_quantities_t * | cdoq, | ||
| const cs_equation_t * | richards, | ||
| cs_flag_t | option_flag, | ||
| cs_field_t * | pressure_head, | ||
| cs_real_t | head_in_law[], | ||
| bool | cur2prev | ||
| ) | 
Update head values (pressure head or head values for laws) Up to now, this is only used for single-phase flows in porous media (saturated or not case).
| [in] | connect | pointer to a cs_cdo_connect_t structure | 
| [in] | cdoq | pointer to a cs_cdo_quantities_t structure | 
| [in] | richards | pointer to the Richards equation | 
| [in] | option_flag | calculation option related to the GWF module | 
| [in,out] | pressure_head | pressure head field | 
| [in,out] | head_in_law | values of the head used in law | 
| [in] | cur2prev | true or false |