programmer's documentation
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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 
55 #define CS_GWF_GRAVITATION (1 << 0)
56 
58 #define CS_GWF_RICHARDS_UNSTEADY (1 << 1)
59 
61 #define CS_GWF_SOIL_PROPERTY_UNSTEADY (1 << 2)
62 
65 #define CS_GWF_SOIL_ALL_SATURATED (1 << 3)
66 
69 /*============================================================================
70  * Type definitions
71  *============================================================================*/
72 
73 typedef struct _gwf_t cs_gwf_t;
74 
75 /*============================================================================
76  * Public function prototypes
77  *============================================================================*/
78 
79 /*----------------------------------------------------------------------------*/
85 /*----------------------------------------------------------------------------*/
86 
87 bool
89 
90 /*----------------------------------------------------------------------------*/
99 /*----------------------------------------------------------------------------*/
100 
101 cs_gwf_t *
103  cs_flag_t flag);
104 
105 /*----------------------------------------------------------------------------*/
111 /*----------------------------------------------------------------------------*/
112 
113 cs_gwf_t *
114 cs_gwf_destroy_all(void);
115 
116 /*----------------------------------------------------------------------------*/
120 /*----------------------------------------------------------------------------*/
121 
122 void
123 cs_gwf_log_setup(void);
124 
125 /*----------------------------------------------------------------------------*/
131 /*----------------------------------------------------------------------------*/
132 
133 void
135 
136 /*----------------------------------------------------------------------------*/
144 /*----------------------------------------------------------------------------*/
145 
146 void
148 
149 /*----------------------------------------------------------------------------*/
161 /*----------------------------------------------------------------------------*/
162 
164 cs_gwf_add_tracer(const char *eq_name,
165  const char *var_name);
166 
167 /*----------------------------------------------------------------------------*/
182 /*----------------------------------------------------------------------------*/
183 
185 cs_gwf_add_tracer_user(const char *eq_name,
186  const char *var_name,
187  cs_gwf_tracer_setup_t *setup,
188  cs_gwf_tracer_add_terms_t *add_terms);
189 
190 /*----------------------------------------------------------------------------*/
199 /*----------------------------------------------------------------------------*/
200 
202 cs_gwf_tracer_by_name(const char *eq_name);
203 
204 /*----------------------------------------------------------------------------*/
210 /*----------------------------------------------------------------------------*/
211 
212 void
213 cs_gwf_init_setup(void);
214 
215 /*----------------------------------------------------------------------------*/
220 /*----------------------------------------------------------------------------*/
221 
222 void
224 
225 /*----------------------------------------------------------------------------*/
232 /*----------------------------------------------------------------------------*/
233 
234 void
236  const cs_cdo_quantities_t *quant);
237 
238 /*----------------------------------------------------------------------------*/
249 /*----------------------------------------------------------------------------*/
250 
251 void
253  const cs_cdo_connect_t *connect,
254  const cs_cdo_quantities_t *quant,
255  const cs_time_step_t *ts,
256  bool cur2prev);
257 
258 /*----------------------------------------------------------------------------*/
268 /*----------------------------------------------------------------------------*/
269 
270 void
272  const cs_time_step_t *time_step,
273  double dt_cur,
274  const cs_cdo_connect_t *connect,
275  const cs_cdo_quantities_t *cdoq);
276 
277 /*----------------------------------------------------------------------------*/
299 /*----------------------------------------------------------------------------*/
300 
301 void
302 cs_gwf_extra_post(void *input,
303  int mesh_id,
304  int cat_id,
305  int ent_flag[5],
306  cs_lnum_t n_cells,
307  cs_lnum_t n_i_faces,
308  cs_lnum_t n_b_faces,
309  const cs_lnum_t cell_ids[],
310  const cs_lnum_t i_face_ids[],
311  const cs_lnum_t b_face_ids[],
312  const cs_time_step_t *time_step);
313 
314 /*----------------------------------------------------------------------------*/
315 
317 
318 #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:733
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:154
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:533
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:444
cs_property_type_t
Definition: cs_property.h:52
#define BEGIN_C_DECLS
Definition: cs_defs.h:453
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:168
Definition: cs_cdo_connect.h:55
Definition: cs_cdo_quantities.h:89
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:1108
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:908
bool cs_gwf_is_activated(void)
Check if the groundwater flow module has been activated.
Definition: cs_gwf.c:424
void cs_gwf_set_darcian_flux_location(cs_flag_t location_flag)
Advanced setting: indicate where the darcian flux is stored cs_cdo_primal_cell is the default setting...
Definition: cs_gwf.c:593
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:1020
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:663
#define END_C_DECLS
Definition: cs_defs.h:454
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:1219
void cs_gwf_set_gravity_vector(const cs_real_3_t gvec)
Activate the gravity and set the gravitaty vector.
Definition: cs_gwf.c:570
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:880
cs_gwf_t * cs_gwf_destroy_all(void)
Free the main structure related to groundwater flows.
Definition: cs_gwf.c:500
Definition: cs_gwf_tracer.h:117
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:617
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:705