programmer's documentation
cs_parameters.h
Go to the documentation of this file.
1 #ifndef __CS_PARAMETERS_H__
2 #define __CS_PARAMETERS_H__
3 
4 /*============================================================================
5  * General parameters management.
6  *============================================================================*/
7 
8 /*
9  This file is part of Code_Saturne, a general-purpose CFD tool.
10 
11  Copyright (C) 1998-2015 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_defs.h"
35 #include "cs_field.h"
36 
37 /*----------------------------------------------------------------------------*/
38 
40 
41 /*=============================================================================
42  * Macro definitions
43  *============================================================================*/
44 
45 /*============================================================================
46  * Type definitions
47  *============================================================================*/
48 
49 /*----------------------------------------------------------------------------
50  * Structure of variable calculation options
51  *----------------------------------------------------------------------------*/
52 
53 typedef struct {
54  int iwarni;
55  int iconv;
56  int istat;
57  int idiff;
58  int idifft;
59  int idften;
60  int iswdyn;
61  int ischcv;
62  int ibdtso;
63  int isstpc;
64  int nswrgr;
65  int nswrsm;
66  int imrgra;
67  int imligr;
68  int ircflu;
69  int iwgrec; /* gradient calculation
70  - 0: standard (default)
71  - 1: weighted (could be used with imvisf = 1) */
72  double thetav;
73  double blencv;
74  double epsilo;
75  double epsrsm;
76  double epsrgr;
77  double climgr;
78  double extrag;
79  double relaxv;
81 
82 /*----------------------------------------------------------------------------
83  * Structure of the solving info
84  *----------------------------------------------------------------------------*/
85 
86 typedef struct {
87  int n_it;
88  double rhs_norm;
89  double res_norm;
90  double derive;
91  double l2residual;
93 
94 /*----------------------------------------------------------------------------
95  * Structure of condensation modelling physical properties
96  *----------------------------------------------------------------------------*/
97 
98 typedef struct {
99  double mol_mas;
100  double cp;
101  double vol_dif;
102  double mu_a;
103  double mu_b;
104  double lambda_a;
105  double lambda_b;
106  double muref; /* ref. viscosity for Sutherland law */
107  double lamref; /* ref. thermal conductivity for Sutherland law */
108  double trefmu; /* ref. temperature for viscosity in Sutherland law */
109  double treflam; /* ref. temperature for conductivity Sutherland law */
110  double smu; /* Sutherland temperature for viscosity */
111  double slam; /* Sutherland temperature for conductivity */
113 
114 /*----------------------------------------------------------------------------
115  * Boundary condition types
116  *----------------------------------------------------------------------------*/
117 
118 enum {
119  CS_INDEF = 1,
120  CS_INLET = 2,
125  CS_ESICF = 7,
126  CS_SSPCF = 8,
127  CS_SOPCF = 9,
128  CS_EPHCF = 10,
129  CS_EQHCF = 11,
134 };
135 
136 /*----------------------------------------------------------------------------
137  * Space discretisation options descriptor
138  *----------------------------------------------------------------------------*/
139 
140 typedef struct {
141 
142  int imvisf; /* face viscosity field interpolation
143  - 1: harmonic
144  - 0: arithmetic (default) */
145 
146  int imrgra; /* type of gradient reconstruction
147  - 0: iterative process
148  - 1: standard least square method
149  - 2: least square method with extended
150  neighborhood
151  - 3: least square method with reduced extended
152  neighborhood
153  - 4: iterative precess initialized by the least
154  square method */
155 
156  double anomax; /* non orthogonality angle of the faces, in radians.
157  For larger angle values, cells with one node
158  on the wall are kept in the extended support of
159  the neighboring cells. */
160 
161  int iflxmw; /* method to compute interior mass flux due to ALE
162  mesh velocity
163  - 1: based on cell center mesh velocity
164  - 0: based on nodes displacement */
165 
167 
168 /*----------------------------------------------------------------------------
169  * PISO descriptor
170  *----------------------------------------------------------------------------*/
171 
172 typedef struct {
173 
174  int nterup; /* number of interations on the pressure-velocity
175  coupling on Navier-Stokes */
176 
177  double epsup; /* relative precision for the convergence test of
178  the iterative process on pressure-velocity
179  coupling */
180 
181  double xnrmu; /* norm of the increment
182  \f$ \vect{u}^{k+1} - \vect{u}^k \f$
183  of the iterative process on pressure-velocity
184  coupling */
185 
186  double xnrmu0; /* norm of \f$ \vect{u}^0 \f$ */
187 
188 } cs_piso_t;
189 
190 /*============================================================================
191  * Static global variables
192  *============================================================================*/
193 
194 /* Pointer to space discretisation options structure */
195 
196 extern const cs_space_disc_t *cs_glob_space_disc;
197 
198 /* Pointer to PISO structure */
199 
200 extern const cs_piso_t *cs_glob_piso;
201 
202 /*=============================================================================
203  * Public function prototypes
204  *============================================================================*/
205 
206 /*----------------------------------------------------------------------------
207  * Provide acces to cs_glob_piso
208  *
209  * needed to initialize structure with GUI
210  *----------------------------------------------------------------------------*/
211 
212 cs_piso_t *
213 cs_get_glob_piso(void);
214 
215 /*----------------------------------------------------------------------------
216  * Define general field keys.
217  *
218  * A recommended practice for different submodules would be to use
219  * "cs_<module>_key_init() functions to define keys specific to those modules.
220  *----------------------------------------------------------------------------*/
221 
222 void
224 
225 /*----------------------------------------------------------------------------
226  * Define field key for condensation.
227  *
228  * Note: this should be moved in the future to a condensation-specific file.
229  *----------------------------------------------------------------------------*/
230 
231 void
233 
234 /*----------------------------------------------------------------------------
235  * Read general restart info.
236  *
237  * This updates the previous time step info.
238  *----------------------------------------------------------------------------*/
239 
240 void
242 
243 /*----------------------------------------------------------------------------
244  * Define a user variable.
245  *
246  * Solved variables are always defined on cells.
247  *
248  * parameters:
249  * name <-- name of variable and associated field
250  * dim <-- variable dimension
251  *----------------------------------------------------------------------------*/
252 
253 void
254 cs_parameters_add_variable(const char *name,
255  int dim);
256 
257 /*----------------------------------------------------------------------------
258  * Define a user variable which is a variance of another variable.
259  *
260  * Only variances of thermal or user-defined variables are currently handled.
261  *
262  * parameters:
263  * name <-- name of variance and associated field
264  * variable_name <-- name of associated variable
265  *----------------------------------------------------------------------------*/
266 
267 void
268 cs_parameters_add_variable_variance(const char *name,
269  const char *variable_name);
270 
271 /*----------------------------------------------------------------------------
272  * Define a user property.
273  *
274  * parameters:
275  * name <-- name of property and associated field
276  * dim <-- property dimension
277  * location_id <-- id of associated mesh location
278  *----------------------------------------------------------------------------*/
279 
280 void
281 cs_parameters_add_property(const char *name,
282  int dim,
283  int location_id);
284 
285 /*----------------------------------------------------------------------------
286  * Return the number of defined user variables not added yet.
287  *
288  * This number is reset to 0 when cs_parameters_create_added_variables()
289  * is called.
290  *
291  * returns:
292  * number of defined user variables
293  *----------------------------------------------------------------------------*/
294 
295 int
297 
298 /*----------------------------------------------------------------------------
299  * Return the number of defined user properties not added yet.
300  *
301  * This number is reset to 0 when cs_parameters_create_added_properties()
302  * is called.
303  *
304  * returns:
305  * number of defined user properties
306  *----------------------------------------------------------------------------*/
307 
308 int
310 
311 /*----------------------------------------------------------------------------
312  * Create previously added user variables.
313  *----------------------------------------------------------------------------*/
314 
315 void
317 
318 /*----------------------------------------------------------------------------
319  * Create previously added user properties.
320  *----------------------------------------------------------------------------*/
321 
322 void
324 
325 /*----------------------------------------------------------------------------
326  * Define a boundary values field for a variable field.
327  *
328  * parameters:
329  * f <-- pointer to field structure
330  *
331  * returns:
332  * pointer to boundary values field, or NULL if not applicable
333  *----------------------------------------------------------------------------*/
334 
335 cs_field_t *
337 
338 /*----------------------------------------------------------------------------*/
349 /*----------------------------------------------------------------------------*/
350 
351 cs_field_t *
353 
354 /*----------------------------------------------------------------------------*/
355 
357 
358 #endif /* __CS_PARAMETERS_H__ */
cs_field_t * cs_parameters_add_boundary_values(cs_field_t *f)
Define a boundary values field for a variable field.
Definition: cs_parameters.c:738
Definition: cs_parameters.h:86
double mol_mas
Definition: cs_parameters.h:99
int nswrsm
Definition: cs_parameters.h:65
double epsilo
Definition: cs_parameters.h:74
double slam
Definition: cs_parameters.h:111
int idiff
Definition: cs_parameters.h:57
int imrgra
Definition: cs_parameters.h:146
const cs_space_disc_t * cs_glob_space_disc
void cs_parameters_create_added_variables(void)
Create previously added user variables.
Definition: cs_parameters.c:618
int iflxmw
Definition: cs_parameters.h:161
Field descriptor.
Definition: cs_field.h:99
int nterup
Definition: cs_parameters.h:174
double lambda_a
Definition: cs_parameters.h:104
double smu
Definition: cs_parameters.h:110
double lambda_b
Definition: cs_parameters.h:105
int iswdyn
Definition: cs_parameters.h:60
int istat
Definition: cs_parameters.h:56
Definition: cs_parameters.h:119
Definition: cs_parameters.h:128
void cs_parameters_add_variable(const char *name, int dim)
Define a user variable.
Definition: cs_parameters.c:494
void cs_parameters_read_restart_info(void)
Read general restart info.
Definition: cs_parameters.c:472
#define BEGIN_C_DECLS
Definition: cs_defs.h:429
double anomax
Definition: cs_parameters.h:156
Definition: cs_parameters.h:120
void cs_parameters_add_variable_variance(const char *name, const char *variable_name)
Define a user variable which is a variance of another variable.
Definition: cs_parameters.c:530
double trefmu
Definition: cs_parameters.h:108
double thetav
Definition: cs_parameters.h:72
void cs_parameters_add_property(const char *name, int dim, int location_id)
Define a user property.
Definition: cs_parameters.c:562
int ircflu
Definition: cs_parameters.h:68
double extrag
Definition: cs_parameters.h:78
double cp
Definition: cs_parameters.h:100
double blencv
Definition: cs_parameters.h:73
void cs_parameters_create_added_properties(void)
Create previously added user properties.
Definition: cs_parameters.c:693
int imrgra
Definition: cs_parameters.h:66
Definition: cs_parameters.h:121
Definition: cs_parameters.h:132
Definition: cs_parameters.h:98
Definition: cs_parameters.h:125
Definition: cs_parameters.h:123
int idften
Definition: cs_parameters.h:59
int iwgrec
Definition: cs_parameters.h:69
int iconv
Definition: cs_parameters.h:55
Definition: cs_parameters.h:127
int iwarni
Definition: cs_parameters.h:54
int idifft
Definition: cs_parameters.h:58
Definition: cs_parameters.h:130
double epsup
Definition: cs_parameters.h:177
Definition: cs_parameters.h:122
int cs_parameters_n_added_variables(void)
Return the number of defined user variables not added yet.
Definition: cs_parameters.c:592
double vol_dif
Definition: cs_parameters.h:101
cs_piso_t * cs_get_glob_piso(void)
Definition: cs_parameters.c:377
double epsrsm
Definition: cs_parameters.h:75
void cs_parameters_define_field_key_gas_mix(void)
Define field key for condensation.
Definition: cs_parameters.c:452
double xnrmu
Definition: cs_parameters.h:181
double climgr
Definition: cs_parameters.h:77
const cs_piso_t * cs_glob_piso
int ibdtso
Definition: cs_parameters.h:62
double mu_a
Definition: cs_parameters.h:102
int n_it
Definition: cs_parameters.h:87
double l2residual
Definition: cs_parameters.h:91
int imligr
Definition: cs_parameters.h:67
Definition: cs_parameters.h:126
PISO options descriptor.
Definition: cs_parameters.h:172
Definition: cs_parameters.h:53
#define END_C_DECLS
Definition: cs_defs.h:430
Definition: cs_parameters.h:129
Definition: cs_parameters.h:124
Space discretisation options descriptor.
Definition: cs_parameters.h:140
double relaxv
Definition: cs_parameters.h:79
int cs_parameters_n_added_properties(void)
Return the number of defined user properties not added yet.
Definition: cs_parameters.c:606
double lamref
Definition: cs_parameters.h:107
double muref
Definition: cs_parameters.h:106
int ischcv
Definition: cs_parameters.h:61
double rhs_norm
Definition: cs_parameters.h:88
void cs_parameters_define_field_keys(void)
Define general field keys.
Definition: cs_parameters.c:392
int nswrgr
Definition: cs_parameters.h:64
Definition: cs_parameters.h:131
Definition: cs_parameters.h:133
int imvisf
Definition: cs_parameters.h:142
double xnrmu0
Definition: cs_parameters.h:186
double treflam
Definition: cs_parameters.h:109
double derive
Definition: cs_parameters.h:90
double mu_b
Definition: cs_parameters.h:103
cs_field_t * cs_parameters_add_boundary_temperature(void)
Define a boundary values field for temperature, if applicable.
Definition: cs_parameters.c:844
double epsrgr
Definition: cs_parameters.h:76
int isstpc
Definition: cs_parameters.h:63
double res_norm
Definition: cs_parameters.h:89