8.1
general documentation
cs_field_pointer.h
Go to the documentation of this file.
1 #ifndef __CS_FIELD_POINTER_H__
2 #define __CS_FIELD_POINTER_H__
3 
4 /*============================================================================
5  * Field pointers and ids for standard and model fields
6  *============================================================================*/
7 
8 /*
9  This file is part of code_saturne, a general-purpose CFD tool.
10 
11  Copyright (C) 1998-2023 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 /* Macro used for scoping of field pointer enums */
46 
47 #define CS_ENUMF_(e) CS_FIELD_POINTER_ ## e
48 
49 /* Macro used to return a field pointer by its enumerated value */
50 
51 #define CS_F_(e) cs_glob_field_pointers[CS_FIELD_POINTER_ ## e].f
52 
53 #define CS_FI_(e, i) cs_glob_field_pointers[CS_FIELD_POINTER_ ## e].p[i]
54 
55 /*============================================================================
56  * Type definitions
57  *============================================================================*/
58 
61 typedef enum {
62 
63  /* Base variables and properties */
64 
77  CS_ENUMF_(alp_bl),
81  CS_ENUMF_(nusa),
113  /* Specific physics variables and properties */
114 
198  /* Cooling tower fields */
208  /* NCFD fields */
248  /* Added variables (scalars) */
251  /* User-defined arrays */
253 
254  /* End of attributes */
255 
257 
259 
265 };
266 
267 /*============================================================================
268  * Global variables
269  *============================================================================*/
270 
271 /* Pointers */
272 
274 
275 /*=============================================================================
276  * Public function prototypes
277  *============================================================================*/
278 
279 /*----------------------------------------------------------------------------
280  * Ensure field pointer array is initialized.
281  *----------------------------------------------------------------------------*/
282 
283 void
285 
286 /*----------------------------------------------------------------------------
287  * Free all field pointer data.
288  *----------------------------------------------------------------------------*/
289 
290 void
292 
293 /*----------------------------------------------------------------------------
294  * Map a simple field to an enumerated pointer.
295  *
296  * The associated field pointer may then be retreived using \ref CS_F_(e).
297  *
298  * parameters:
299  * e <-- field enumerator value
300  * f <-- pointer to field structure
301  *----------------------------------------------------------------------------*/
302 
303 void
305  cs_field_t *f);
306 
307 /*----------------------------------------------------------------------------
308  * Map a field to an (enumerated pointer, index) couple.
309  *
310  * This sort of mapping may be used for sets of fields whose size
311  * is not known in advance.
312  *
313  * The associated field pointer may then be retreived using \ref CS_F_(e, i).
314  *
315  * parameters:
316  * e <-- field enumerator value
317  * index <-- field enumerator index
318  * f <-- pointer to field structure
319  *----------------------------------------------------------------------------*/
320 
321 void
323  int index,
324  cs_field_t *f);
325 
326 /*----------------------------------------------------------------------------
327  * Map base fields to enumerated pointers.
328  *----------------------------------------------------------------------------*/
329 
330 void
332 
333 /*----------------------------------------------------------------------------
334  * Map some boundary fields to enumerated pointers.
335  *----------------------------------------------------------------------------*/
336 
337 void
339 
340 /*----------------------------------------------------------------------------
341  * Map base fields to enumerated pointers for atmospheric models
342  *
343  * parameters:
344  * n_chem_species <-- number of chemical species
345  * species_f_if <-- field id for each chemical species
346  *----------------------------------------------------------------------------*/
347 
348 void
349 cs_field_pointer_map_atmospheric(int n_chem_species,
350  const int species_f_id[]);
351 
352 /*----------------------------------------------------------------------------
353  * Map base fields to enumerated pointers for atmospheric models
354  *
355  * parameters:
356  * n_coals <-- number of coals
357  * n_classes <-- number of coal classes
358  *----------------------------------------------------------------------------*/
359 
360 void
362  int n_classes);
363 
364 /*----------------------------------------------------------------------------*
365  * Map base fields to enumerated pointers for compressible model
366  *----------------------------------------------------------------------------*/
367 
368 void
370 
371 /*----------------------------------------------------------------------------*
372  * Map base fields to enumerated pointers for gas mix model
373  *----------------------------------------------------------------------------*/
374 
375 void
377 
378 /*----------------------------------------------------------------------------
379  * Map base fields to enumerated pointers for gas combustion.
380  *----------------------------------------------------------------------------*/
381 
382 void
384 
385 /*----------------------------------------------------------------------------*/
386 /*
387  * Map base fields to enumerated pointers for groundwater flows
388  *----------------------------------------------------------------------------*/
389 
390 void
392 
393 /*----------------------------------------------------------------------------*/
394 
396 
397 #endif /* __CS_FIELD_POINTER_H__ */
#define BEGIN_C_DECLS
Definition: cs_defs.h:514
#define END_C_DECLS
Definition: cs_defs.h:515
void cs_field_pointer_map_indexed(cs_field_pointer_id_t e, int index, cs_field_t *f)
Map a field to an (enumerated pointer, index) couple.
Definition: cs_field_pointer.c:232
void cs_field_pointer_map_boundary(void)
Map some boundary fields to enumerated pointers.
Definition: cs_field_pointer.c:347
void cs_field_pointer_map_atmospheric(int n_chem_species, const int species_f_id[])
Map base fields to enumerated pointers for atmospheric models.
Definition: cs_field_pointer.c:366
void cs_field_pointer_map_gas_combustion(void)
Map base fields to enumerated pointers for gas combustion.
Definition: cs_field_pointer.c:510
void cs_field_pointer_ensure_init(void)
Ensure field pointer array is initialized.
Definition: cs_field_pointer.c:173
#define CS_ENUMF_(e)
Macro used for scoping of field pointer enums.
Definition: cs_field_pointer.h:47
void cs_field_pointer_map_coal_combustion(int n_coals, int n_classes)
Map base fields to enumerated pointers for coal combustion.
Definition: cs_field_pointer.c:393
cs_field_pointer_id_t
Definition: cs_field_pointer.h:61
@ t
Definition: cs_field_pointer.h:92
@ mass_f
Definition: cs_field_pointer.h:120
@ vel_mean
Definition: cs_field_pointer.h:240
@ user
Definition: cs_field_pointer.h:252
@ head
Definition: cs_field_pointer.h:196
@ volume_f
Definition: cs_field_pointer.h:119
@ alp_bl
Definition: cs_field_pointer.h:77
@ drift_vel
Definition: cs_field_pointer.h:238
@ npm
Definition: cs_field_pointer.h:131
@ qfpzx
Definition: cs_field_pointer.h:218
@ ynh3
Definition: cs_field_pointer.h:155
@ f1m
Definition: cs_field_pointer.h:143
@ h_l
Definition: cs_field_pointer.h:202
@ p
Definition: cs_field_pointer.h:67
@ ym_w
Definition: cs_field_pointer.h:200
@ f4m
Definition: cs_field_pointer.h:145
@ d32
Definition: cs_field_pointer.h:224
@ xlam
Definition: cs_field_pointer.h:182
@ coyfp
Definition: cs_field_pointer.h:136
@ energy_f
Definition: cs_field_pointer.h:121
@ mol_mass
Definition: cs_field_pointer.h:194
@ elefl
Definition: cs_field_pointer.h:169
@ rad_energy
Definition: cs_field_pointer.h:171
@ gamma
Definition: cs_field_pointer.h:221
@ yfm
Definition: cs_field_pointer.h:134
@ qfpxx
Definition: cs_field_pointer.h:212
@ f2m
Definition: cs_field_pointer.h:144
@ qfp
Definition: cs_field_pointer.h:211
@ elast
Definition: cs_field_pointer.h:245
@ nusa
Definition: cs_field_pointer.h:81
@ thermal_diff_l
Definition: cs_field_pointer.h:205
@ k
Definition: cs_field_pointer.h:70
@ tau12_t
Definition: cs_field_pointer.h:231
@ pot_t
Definition: cs_field_pointer.h:123
@ h_tot
Definition: cs_field_pointer.h:95
@ vel_rel
Definition: cs_field_pointer.h:241
@ emissivity
Definition: cs_field_pointer.h:184
@ mu
Definition: cs_field_pointer.h:103
@ rad_ck_up
Definition: cs_field_pointer.h:190
@ yno
Definition: cs_field_pointer.h:154
@ qfpzy
Definition: cs_field_pointer.h:219
@ eps
Definition: cs_field_pointer.h:71
@ radsc
Definition: cs_field_pointer.h:163
@ xch
Definition: cs_field_pointer.h:139
@ xwt
Definition: cs_field_pointer.h:141
@ ntdrp
Definition: cs_field_pointer.h:124
@ rad_est
Definition: cs_field_pointer.h:174
@ add_var
Definition: cs_field_pointer.h:249
@ c_alpha
Definition: cs_field_pointer.h:246
@ cv
Definition: cs_field_pointer.h:101
@ magfl
Definition: cs_field_pointer.h:168
@ fp2m
Definition: cs_field_pointer.h:128
@ lift
Definition: cs_field_pointer.h:232
@ hybrid_blend
Definition: cs_field_pointer.h:84
@ f8m
Definition: cs_field_pointer.h:149
@ t_poro
Definition: cs_field_pointer.h:111
@ curre
Definition: cs_field_pointer.h:165
@ joulp
Definition: cs_field_pointer.h:162
@ qfpyz
Definition: cs_field_pointer.h:217
@ qinci
Definition: cs_field_pointer.h:180
@ t_kelvin
Definition: cs_field_pointer.h:115
@ ygfm
Definition: cs_field_pointer.h:132
@ dt_dp
Definition: cs_field_pointer.h:242
@ disp_t
Definition: cs_field_pointer.h:233
@ curim
Definition: cs_field_pointer.h:166
@ surf_tens
Definition: cs_field_pointer.h:234
@ potva
Definition: cs_field_pointer.h:160
@ drho_dp
Definition: cs_field_pointer.h:229
@ ycoel
Definition: cs_field_pointer.h:161
@ vel
Definition: cs_field_pointer.h:68
@ wlubr
Definition: cs_field_pointer.h:227
@ cp
Definition: cs_field_pointer.h:100
@ poti
Definition: cs_field_pointer.h:159
@ xck
Definition: cs_field_pointer.h:140
@ humid
Definition: cs_field_pointer.h:199
@ qinsp
Definition: cs_field_pointer.h:181
@ qfpxy
Definition: cs_field_pointer.h:213
@ h
Definition: cs_field_pointer.h:91
@ drho_dh
Definition: cs_field_pointer.h:230
@ f9m
Definition: cs_field_pointer.h:150
@ qp
Definition: cs_field_pointer.h:210
@ e_tot
Definition: cs_field_pointer.h:94
@ th_diff_t
Definition: cs_field_pointer.h:228
@ rad_ck_down
Definition: cs_field_pointer.h:191
@ pack_zone_id
Definition: cs_field_pointer.h:206
@ poro
Definition: cs_field_pointer.h:109
@ rad_cak
Definition: cs_field_pointer.h:178
@ np
Definition: cs_field_pointer.h:138
@ yco2
Definition: cs_field_pointer.h:152
@ fj
Definition: cs_field_pointer.h:237
@ f7m
Definition: cs_field_pointer.h:148
@ vism
Definition: cs_field_pointer.h:117
@ rad_abs
Definition: cs_field_pointer.h:176
@ rad_emi
Definition: cs_field_pointer.h:177
@ rad_ist
Definition: cs_field_pointer.h:175
@ fdown
Definition: cs_field_pointer.h:189
@ omg
Definition: cs_field_pointer.h:80
@ f5m
Definition: cs_field_pointer.h:146
@ fsm
Definition: cs_field_pointer.h:130
@ fnet
Definition: cs_field_pointer.h:185
@ rho
Definition: cs_field_pointer.h:97
@ f6m
Definition: cs_field_pointer.h:147
@ drag
Definition: cs_field_pointer.h:225
@ yplus
Definition: cs_field_pointer.h:239
@ sl_corr
Definition: cs_field_pointer.h:235
@ epa
Definition: cs_field_pointer.h:183
@ coldiff
Definition: cs_field_pointer.h:244
@ rij
Definition: cs_field_pointer.h:73
@ yf_ncond
Definition: cs_field_pointer.h:209
@ yfp2m
Definition: cs_field_pointer.h:135
@ potr
Definition: cs_field_pointer.h:158
@ h2
Definition: cs_field_pointer.h:142
@ fi
Definition: cs_field_pointer.h:236
@ laplf
Definition: cs_field_pointer.h:167
@ yhcn
Definition: cs_field_pointer.h:153
@ rho_b
Definition: cs_field_pointer.h:98
@ hconv
Definition: cs_field_pointer.h:187
@ elech
Definition: cs_field_pointer.h:164
@ kindiff
Definition: cs_field_pointer.h:243
@ thermal_diff_h
Definition: cs_field_pointer.h:204
@ x2
Definition: cs_field_pointer.h:223
@ phi
Definition: cs_field_pointer.h:75
@ fup
Definition: cs_field_pointer.h:188
@ dt
Definition: cs_field_pointer.h:65
@ if_poro
Definition: cs_field_pointer.h:110
@ t_l
Definition: cs_field_pointer.h:201
@ CS_FIELD_N_POINTERS
Definition: cs_field_pointer.h:256
@ f_bar
Definition: cs_field_pointer.h:76
@ y_l_pack
Definition: cs_field_pointer.h:203
@ t_b
Definition: cs_field_pointer.h:93
@ chemistry
Definition: cs_field_pointer.h:125
@ mu_t
Definition: cs_field_pointer.h:104
@ rad_q
Definition: cs_field_pointer.h:172
@ void_f
Definition: cs_field_pointer.h:88
@ ad_mass
Definition: cs_field_pointer.h:226
@ fvp2m
Definition: cs_field_pointer.h:151
@ vol_f
Definition: cs_field_pointer.h:89
@ lambda
Definition: cs_field_pointer.h:106
@ qfpxz
Definition: cs_field_pointer.h:214
@ fm
Definition: cs_field_pointer.h:127
@ th_diff
Definition: cs_field_pointer.h:107
@ qfpyy
Definition: cs_field_pointer.h:216
@ qfpzz
Definition: cs_field_pointer.h:220
@ ia
Definition: cs_field_pointer.h:222
@ fconv
Definition: cs_field_pointer.h:186
@ mesh_u
Definition: cs_field_pointer.h:86
@ qfpyx
Definition: cs_field_pointer.h:215
@ hox
Definition: cs_field_pointer.h:156
void cs_field_pointer_destroy_all(void)
Free all field pointer data.
Definition: cs_field_pointer.c:186
void cs_field_pointer_map_base(void)
Map base fields to enumerated pointers.
Definition: cs_field_pointer.c:277
struct cs_field_pointer_array_t * cs_glob_field_pointers
Definition: cs_field_pointer.c:130
void cs_field_pointer_map_compressible(void)
Map base fields to enumerated pointers for compressible model.
Definition: cs_field_pointer.c:460
void cs_field_pointer_map_gas_mix(void)
Map base fields to enumerated pointers for gas mix model.
Definition: cs_field_pointer.c:497
void cs_field_pointer_map(cs_field_pointer_id_t e, cs_field_t *f)
Map a simple field to an enumerated pointer.
Definition: cs_field_pointer.c:210
void cs_field_pointer_map_groundwater(void)
Map base fields to enumerated pointers for groundwater flows.
Definition: cs_field_pointer.c:544
Definition: cs_field_pointer.h:262
cs_field_t * f
Definition: cs_field_pointer.h:263
cs_field_t ** p
Definition: cs_field_pointer.h:264
Field descriptor.
Definition: cs_field.h:131