7.1
general documentation
cs_domain.h
Go to the documentation of this file.
1 #ifndef __CS_DOMAIN_H__
2 #define __CS_DOMAIN_H__
3 
4 /*============================================================================
5  * Manage a computational domain
6  * - equations, settings, fields, connectivities and geometrical quantities
7  *============================================================================*/
8 
9 /*
10  This file is part of Code_Saturne, a general-purpose CFD tool.
11 
12  Copyright (C) 1998-2021 EDF S.A.
13 
14  This program is free software; you can redistribute it and/or modify it under
15  the terms of the GNU General Public License as published by the Free Software
16  Foundation; either version 2 of the License, or (at your option) any later
17  version.
18 
19  This program is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
21  FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
22  details.
23 
24  You should have received a copy of the GNU General Public License along with
25  this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
26  Street, Fifth Floor, Boston, MA 02110-1301, USA.
27 */
28 
29 /*----------------------------------------------------------------------------
30  * Standard C library headers
31  *----------------------------------------------------------------------------*/
32 
33 #include <stdbool.h>
34 
35 /*----------------------------------------------------------------------------
36  * Local headers
37  *----------------------------------------------------------------------------*/
38 
39 #include "cs_boundary.h"
40 #include "cs_cdo_connect.h"
41 #include "cs_cdo_quantities.h"
42 #include "cs_mesh.h"
43 #include "cs_mesh_quantities.h"
44 #include "cs_time_step.h"
45 #include "cs_timer.h"
46 #include "cs_xdef.h"
47 
48 /*----------------------------------------------------------------------------*/
49 
51 
52 /*============================================================================
53  * Macro definitions
54  *============================================================================*/
55 
56 /* Flag related to the activation (or not) of the CDO schemes */
57 
58 #define CS_DOMAIN_CDO_MODE_OFF -1 /* CDO schemes are not used */
59 #define CS_DOMAIN_CDO_MODE_WITH_FV 1 /* CDO and legacy FV schemes are used */
60 #define CS_DOMAIN_CDO_MODE_ONLY 2 /* CDO schemes are exclusively used */
61 
62 /*============================================================================
63  * Type definitions
64  *============================================================================*/
65 
100 typedef enum {
101 
108 
110 
112 
113 
118 typedef struct {
119 
120  /* Mode for CDO: activated, switched off... */
121 
122  int mode;
123 
124  /* Flag to know if scalar or vector equations are requested and which kind
125  of numerical schemes is requested to solve these equations */
126 
132 
134 
140 typedef struct {
141 
142  /* Code_Saturne mesh and mesh quantities structures already computed */
143 
146 
147  /* CDO structures:
148  * - cs_cdo_connect_t contains additional information about connectivity
149  * - cs_cdo_quantities_t contains additional information on mesh quantities
150  */
151 
154 
155  /* Boundary of the computational domain */
156 
159 
160  /* Time step management */
161 
163  bool is_last_iter; /* true or false */
164 
165  cs_time_step_t *time_step; /* time step descriptor */
166  cs_time_step_options_t time_options; /* time step options */
167 
168  cs_domain_stage_t stage; /* store the stage of the computation */
169 
170  /* Output options */
171 
172  int output_nt; /* Logging done every nt iterations */
173  int restart_nt; /* Restart done every nt iterations */
174  int verbosity; /* Level of details given in log */
175 
176  /* Specific context structure related to the numerical schemes */
177 
179 
180  /* Monitoring */
181 
182  cs_timer_counter_t tcp; /* Cumulated elapsed time for extra-operations
183  and post-processing */
184  cs_timer_counter_t tcs; /* Cumulated elapsed time for setup operations */
185 
186 } cs_domain_t;
187 
188 /*============================================================================
189  * Static global variables
190  *============================================================================*/
191 
192 extern cs_domain_t *cs_glob_domain; /* Pointer to main computational domain */
193 
194 /*============================================================================
195  * Static inline public function prototypes
196  *============================================================================*/
197 
198 /*----------------------------------------------------------------------------*/
204 /*----------------------------------------------------------------------------*/
205 
206 static inline void
207 cs_domain_increment_time_step(cs_domain_t *domain)
208 {
209  cs_time_step_t *ts = domain->time_step;
210 
211  /* Increment time iteration */
212  ts->nt_cur++;
213 }
214 
215 /*============================================================================
216  * Public function prototypes
217  *============================================================================*/
218 
219 /*----------------------------------------------------------------------------*/
225 /*----------------------------------------------------------------------------*/
226 
227 cs_domain_t *
228 cs_domain_create(void);
229 
230 /*----------------------------------------------------------------------------*/
236 /*----------------------------------------------------------------------------*/
237 
238 void
239 cs_domain_free(cs_domain_t **p_domain);
240 
241 /*----------------------------------------------------------------------------*/
249 /*----------------------------------------------------------------------------*/
250 
251 void
253  int mode);
254 
255 /*----------------------------------------------------------------------------*/
263 /*----------------------------------------------------------------------------*/
264 
265 int
266 cs_domain_get_cdo_mode(const cs_domain_t *domain);
267 
268 /*----------------------------------------------------------------------------*/
275 /*----------------------------------------------------------------------------*/
276 
277 void
279  cs_domain_stage_t stage);
280 
281 /*----------------------------------------------------------------------------*/
289 /*----------------------------------------------------------------------------*/
290 
292 cs_domain_get_stage(const cs_domain_t *domain);
293 
294 /*----------------------------------------------------------------------------*/
302 /*----------------------------------------------------------------------------*/
303 
304 bool
306 
307 /*----------------------------------------------------------------------------*/
316 /*----------------------------------------------------------------------------*/
317 
318 bool
319 cs_domain_needs_log(const cs_domain_t *domain,
320  bool oneplus);
321 
322 /*----------------------------------------------------------------------------*/
328 /*----------------------------------------------------------------------------*/
329 
330 void
332 
333 /*----------------------------------------------------------------------------*/
339 /*----------------------------------------------------------------------------*/
340 
341 void
342 cs_domain_cdo_log(const cs_domain_t *domain);
343 
344 /*----------------------------------------------------------------------------*/
345 
347 
348 #endif /* __CS_DOMAIN_H__ */
cs_domain_stage_t
Indicator describing at which stage is the computation.
Definition: cs_domain.h:100
time step descriptor
Definition: cs_time_step.h:64
cs_time_step_options_t time_options
Definition: cs_domain.h:166
cs_domain_stage_t stage
Definition: cs_domain.h:168
cs_time_step_t * time_step
Definition: cs_domain.h:165
bool cs_domain_needs_iteration(cs_domain_t *domain)
Check if one needs to continue iterations in time.
Definition: cs_domain.c:362
cs_domain_t * cs_domain_create(void)
Create and initialize by default a cs_domain_t structure.
Definition: cs_domain.c:167
void cs_domain_set_stage(cs_domain_t *domain, cs_domain_stage_t stage)
Set the computation stage in the domain structure.
Definition: cs_domain.c:321
cs_flag_t eb_scheme_flag
Definition: cs_domain.h:127
cs_cdo_connect_t * connect
Definition: cs_domain.h:152
void cs_domain_increment_time(cs_domain_t *domain)
Update time step after one temporal iteration.
Definition: cs_domain.c:437
#define BEGIN_C_DECLS
Definition: cs_defs.h:510
Definition: cs_domain.h:107
bool cs_domain_needs_log(const cs_domain_t *domain, bool oneplus)
Check if an output is requested according to the domain setting.
Definition: cs_domain.c:397
Definition: cs_cdo_connect.h:79
Structure storing information related to the "physical" boundaries associated with the computational ...
Definition: cs_boundary.h:155
int verbosity
Definition: cs_domain.h:174
High-level metadata for handling CDO/HHO schemes.
Definition: cs_domain.h:118
int cs_domain_get_cdo_mode(const cs_domain_t *domain)
Get the mode of activation for the CDO/HHO schemes.
Definition: cs_domain.c:301
cs_domain_cdo_context_t * cdo_context
Definition: cs_domain.h:178
Definition: cs_cdo_quantities.h:129
void cs_domain_cdo_log(const cs_domain_t *domain)
Print a welcome message indicating which mode of CDO is activated.
Definition: cs_domain.c:458
void cs_domain_free(cs_domain_t **p_domain)
Free a cs_domain_t structure.
Definition: cs_domain.c:239
int output_nt
Definition: cs_domain.h:172
cs_timer_counter_t tcs
Definition: cs_domain.h:184
void cs_domain_set_cdo_mode(cs_domain_t *domain, int mode)
Set the global variable storing the mode of activation to apply to CDO/HHO schemes.
Definition: cs_domain.c:275
Definition: cs_mesh.h:84
cs_flag_t vb_scheme_flag
Definition: cs_domain.h:129
cs_domain_t * cs_glob_domain
Definition: cs_domain.c:85
Definition: cs_domain.h:103
bool is_last_iter
Definition: cs_domain.h:163
Definition: cs_mesh_quantities.h:89
cs_cdo_quantities_t * cdo_quantities
Definition: cs_domain.h:153
cs_boundary_t * ale_boundaries
Definition: cs_domain.h:158
Definition: cs_domain.h:109
Structure storing the main features of the computational domain and pointers to the main geometrical ...
Definition: cs_domain.h:140
cs_boundary_t * boundaries
Definition: cs_domain.h:157
Definition: cs_domain.h:104
cs_domain_stage_t cs_domain_get_stage(const cs_domain_t *domain)
Retrieve the computation stage from the domain structure.
Definition: cs_domain.c:342
bool only_steady
Definition: cs_domain.h:162
cs_flag_t fb_scheme_flag
Definition: cs_domain.h:128
cs_timer_counter_t tcp
Definition: cs_domain.h:182
time step options descriptor
Definition: cs_time_step.h:92
#define END_C_DECLS
Definition: cs_defs.h:511
int nt_cur
Definition: cs_time_step.h:74
unsigned short int cs_flag_t
Definition: cs_defs.h:324
cs_flag_t hho_scheme_flag
Definition: cs_domain.h:131
Definition: cs_domain.h:105
int mode
Definition: cs_domain.h:122
cs_mesh_quantities_t * mesh_quantities
Definition: cs_domain.h:145
cs_flag_t vcb_scheme_flag
Definition: cs_domain.h:130
int restart_nt
Definition: cs_domain.h:173
Definition: cs_domain.h:106
cs_mesh_t * mesh
Definition: cs_domain.h:144
Definition: cs_timer.h:55