programmer's documentation
cs_gwf.h
Go to the documentation of this file.
1 #ifndef __CS_GWF_H__
2 #define __CS_GWF_H__
3 
4 /*============================================================================
5  * Set of main functions to handle the groundwater flow module with CDO
6  *============================================================================*/
7 
8 /*
9  This file is part of Code_Saturne, a general-purpose CFD tool.
10 
11  Copyright (C) 1998-2018 EDF S.A.
12 
13  This program is free software; you can redistribute it and/or modify it under
14  the terms of the GNU General Public License as published by the Free Software
15  Foundation; either version 2 of the License, or (at your option) any later
16  version.
17 
18  This program is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
20  FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
21  details.
22 
23  You should have received a copy of the GNU General Public License along with
24  this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
25  Street, Fifth Floor, Boston, MA 02110-1301, USA.
26 */
27 
28 /*----------------------------------------------------------------------------*/
29 
30 /*----------------------------------------------------------------------------
31  * Local headers
32  *----------------------------------------------------------------------------*/
33 
34 #include "cs_base.h"
35 #include "cs_equation.h"
36 #include "cs_gwf_soil.h"
37 #include "cs_gwf_tracer.h"
38 
39 /*----------------------------------------------------------------------------*/
40 
42 
43 /*============================================================================
44  * Macro definitions
45  *============================================================================*/
46 
67 #define CS_GWF_GRAVITATION (1 << 0)
68 #define CS_GWF_RICHARDS_UNSTEADY (1 << 1)
69 #define CS_GWF_SOIL_PROPERTY_UNSTEADY (1 << 2)
70 #define CS_GWF_SOIL_ALL_SATURATED (1 << 3)
71 
74 /*============================================================================
75  * Type definitions
76  *============================================================================*/
77 
78 typedef struct _gwf_t cs_gwf_t;
79 
80 /*============================================================================
81  * Public function prototypes
82  *============================================================================*/
83 
84 /*----------------------------------------------------------------------------*/
90 /*----------------------------------------------------------------------------*/
91 
92 bool
94 
95 /*----------------------------------------------------------------------------*/
104 /*----------------------------------------------------------------------------*/
105 
106 cs_gwf_t *
108  cs_flag_t flag);
109 
110 /*----------------------------------------------------------------------------*/
116 /*----------------------------------------------------------------------------*/
117 
118 cs_gwf_t *
119 cs_gwf_destroy_all(void);
120 
121 /*----------------------------------------------------------------------------*/
125 /*----------------------------------------------------------------------------*/
126 
127 void
128 cs_gwf_log_setup(void);
129 
130 /*----------------------------------------------------------------------------*/
136 /*----------------------------------------------------------------------------*/
137 
138 void
140 
141 /*----------------------------------------------------------------------------*/
149 /*----------------------------------------------------------------------------*/
150 
151 void
153 
154 /*----------------------------------------------------------------------------*/
166 /*----------------------------------------------------------------------------*/
167 
169 cs_gwf_add_tracer(const char *eq_name,
170  const char *var_name);
171 
172 /*----------------------------------------------------------------------------*/
187 /*----------------------------------------------------------------------------*/
188 
190 cs_gwf_add_tracer_user(const char *eq_name,
191  const char *var_name,
192  cs_gwf_tracer_setup_t *setup,
193  cs_gwf_tracer_add_terms_t *add_terms);
194 
195 /*----------------------------------------------------------------------------*/
204 /*----------------------------------------------------------------------------*/
205 
207 cs_gwf_tracer_by_name(const char *eq_name);
208 
209 /*----------------------------------------------------------------------------*/
215 /*----------------------------------------------------------------------------*/
216 
217 void
218 cs_gwf_init_setup(void);
219 
220 /*----------------------------------------------------------------------------*/
225 /*----------------------------------------------------------------------------*/
226 
227 void
229 
230 /*----------------------------------------------------------------------------*/
237 /*----------------------------------------------------------------------------*/
238 
239 void
241  const cs_cdo_quantities_t *quant);
242 
243 /*----------------------------------------------------------------------------*/
254 /*----------------------------------------------------------------------------*/
255 
256 void
258  const cs_cdo_connect_t *connect,
259  const cs_cdo_quantities_t *quant,
260  const cs_time_step_t *ts,
261  bool cur2prev);
262 
263 /*----------------------------------------------------------------------------*/
273 /*----------------------------------------------------------------------------*/
274 
275 void
277  const cs_time_step_t *time_step,
278  double dt_cur,
279  const cs_cdo_connect_t *connect,
280  const cs_cdo_quantities_t *cdoq);
281 
282 /*----------------------------------------------------------------------------*/
304 /*----------------------------------------------------------------------------*/
305 
306 void
308  int mesh_id,
309  int cat_id,
310  int ent_flag[5],
311  cs_lnum_t n_cells,
312  cs_lnum_t n_i_faces,
313  cs_lnum_t n_b_faces,
314  const cs_lnum_t cell_ids[],
315  const cs_lnum_t i_face_ids[],
316  const cs_lnum_t b_face_ids[],
317  const cs_time_step_t *time_step);
318 
319 /*----------------------------------------------------------------------------*/
320 
322 
323 #endif /* __CS_GWF_H__ */
void cs_gwf_init_setup(void)
Predefined settings for the Richards equation and the related equations defining the groundwater flow...
Definition: cs_gwf.c:744
time step descriptor
Definition: cs_time_step.h:51
void cs_gwf_log_setup(void)
Summary of the main cs_gwf_t structure.
Definition: cs_gwf.c:543
cs_gwf_t * cs_gwf_activate(cs_property_type_t pty_type, cs_flag_t flag)
Initialize the module dedicated to groundwater flows.
Definition: cs_gwf.c:452
cs_property_type_t
Definition: cs_property.h:52
#define BEGIN_C_DECLS
Definition: cs_defs.h:461
void() cs_gwf_tracer_setup_t(const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, cs_gwf_tracer_t *tracer)
Generic function to set the parameters related to a tracer equation.
Definition: cs_gwf_tracer.h:153
Definition: cs_cdo_connect.h:69
Definition: cs_cdo_quantities.h:94
void cs_gwf_compute(const cs_mesh_t *mesh, const cs_time_step_t *time_step, double dt_cur, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq)
Compute the system related to groundwater flows module.
Definition: cs_gwf.c:1114
Definition: cs_mesh.h:63
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.
Definition: cs_gwf.c:914
bool cs_gwf_is_activated(void)
Check if the groundwater flow module has been activated.
Definition: cs_gwf.c:432
void cs_gwf_set_darcian_flux_location(cs_flag_t location_flag)
Advanced setting: indicate where the darcian flux is stored cs_flag_primal_cell is the default settin...
Definition: cs_gwf.c:603
static int input(void)
void cs_gwf_update(const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *ts, bool cur2prev)
Update the groundwater system (pressure head, head in law, moisture content, darcian velocity...
Definition: cs_gwf.c:1026
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition: cs_defs.h:309
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:293
cs_gwf_tracer_t * cs_gwf_add_tracer_user(const char *eq_name, const char *var_name, cs_gwf_tracer_setup_t *setup, cs_gwf_tracer_add_terms_t *add_terms)
Add a new equation related to the groundwater flow module This equation is a particular type of unste...
Definition: cs_gwf.c:673
#define END_C_DECLS
Definition: cs_defs.h:462
unsigned short int cs_flag_t
Definition: cs_defs.h:299
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 prototype of this function is fixed...
Definition: cs_gwf.c:1225
void cs_gwf_set_gravity_vector(const cs_real_3_t gvec)
Activate the gravity and set the gravitaty vector.
Definition: cs_gwf.c:580
void cs_gwf_add_tracer_terms(void)
Add new terms if needed (such as diffusion or reaction) to tracer equations according to the settings...
Definition: cs_gwf.c:886
cs_gwf_t * cs_gwf_destroy_all(void)
Free the main structure related to groundwater flows.
Definition: cs_gwf.c:510
Definition: cs_gwf_tracer.h:116
Definition: mesh.f90:26
void() cs_gwf_tracer_add_terms_t(cs_gwf_tracer_t *tracer)
Generic function to update the terms to build in the algebraic system for a tracer equation according...
Definition: cs_gwf_tracer.h:167
cs_gwf_tracer_t * cs_gwf_add_tracer(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 unste...
Definition: cs_gwf.c:627
cs_gwf_tracer_t * cs_gwf_tracer_by_name(const char *eq_name)
Retrieve the pointer to the cs_gwf_tracer_t structure associated to the name given as parameter...
Definition: cs_gwf.c:716