programmer's documentation
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
src
lagr
cs_lagr_tracking.h
Go to the documentation of this file.
1
/*============================================================================
2
*
3
* This file is part of the Code_Saturne Kernel, element of the
4
* Code_Saturne CFD tool.
5
*
6
* Copyright (C) 1998-2008 EDF S.A., France
7
*
8
* contact: saturne-support@edf.fr
9
*
10
* The Code_Saturne Kernel is free software; you can redistribute it
11
* and/or modify it under the terms of the GNU General Public License
12
* as published by the Free Software Foundation; either version 2 of
13
* the License, or (at your option) any later version.
14
*
15
* The Code_Saturne Kernel is distributed in the hope that it will be
16
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
17
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the GNU General Public License
21
* along with the Code_Saturne Kernel; if not, write to the
22
* Free Software Foundation, Inc.,
23
* 51 Franklin St, Fifth Floor,
24
* Boston, MA 02110-1301 USA
25
*
26
*============================================================================*/
27
28
#ifndef __CS_LAGR_TRACKING_H__
29
#define __CS_LAGR_TRACKING_H__
30
31
/*============================================================================
32
* Functions and types for the Lagrangian module
33
*============================================================================*/
34
35
/*----------------------------------------------------------------------------
36
* Local headers
37
*----------------------------------------------------------------------------*/
38
39
#include "
cs_defs.h
"
40
41
/*----------------------------------------------------------------------------*/
42
43
BEGIN_C_DECLS
44
45
/*=============================================================================
46
* Macro definitions
47
*============================================================================*/
48
49
#define CS_LAGR_N_LAYERS 5
50
51
/*============================================================================
52
* Type definitions
53
*============================================================================*/
54
55
typedef
enum
{
56
57
CS_LAGR_CUR_CELL_NUM
,
/* current local cell number */
58
CS_LAGR_LAST_FACE_NUM
,
59
60
CS_LAGR_SWITCH_ORDER_1
,
61
CS_LAGR_STATE
,
/* < 0 : - number of the boundary face where
62
the particle is kept
63
0 : particle has to be destroyed
64
1 : particle has to be synchronized
65
2 : particle treated. End of displacement */
66
67
CS_LAGR_PREV_ID
,
/* id in particle set of the previous particle */
68
CS_LAGR_NEXT_ID
,
/* id in particle set of the next particle */
69
70
CS_LAGR_RANDOM_VALUE
,
/* random value associated with the particle */
71
72
CS_LAGR_STAT_WEIGHT
,
73
CS_LAGR_RESIDENCE_TIME
,
74
CS_LAGR_MASS
,
75
CS_LAGR_DIAMETER
,
76
CS_LAGR_TAUP_AUX
,
77
CS_LAGR_COORDS
,
78
CS_LAGR_VELOCITY
,
79
CS_LAGR_VELOCITY_SEEN
,
80
81
/* Deposition submodel additional parameters */
82
83
CS_LAGR_YPLUS
,
84
CS_LAGR_INTERF
,
85
CS_LAGR_NEIGHBOR_FACE_ID
,
86
CS_LAGR_MARKO_VALUE
,
87
CS_LAGR_DEPOSITION_FLAG
,
88
89
/* Resuspension model additional parameters */
90
91
CS_LAGR_N_LARGE_ASPERITIES
,
92
CS_LAGR_N_SMALL_ASPERITIES
,
93
CS_LAGR_ADHESION_FORCE
,
94
CS_LAGR_ADHESION_TORQUE
,
95
CS_LAGR_DISPLACEMENT_NORM
,
96
97
/* Thermal model additional parameters */
98
99
CS_LAGR_TEMPERATURE
,
100
CS_LAGR_FLUID_TEMPERATURE
,
101
CS_LAGR_CP
,
102
103
/* Coal combustion additional parameters */
104
105
CS_LAGR_WATER_MASS
,
106
CS_LAGR_COAL_MASS
,
107
CS_LAGR_COKE_MASS
,
108
109
CS_LAGR_SHRINKING_DIAMETER
,
110
CS_LAGR_INITIAL_DIAMETER
,
111
112
CS_LAGR_COAL_NUM
,
113
CS_LAGR_COAL_DENSITY
,
114
115
/* Radiative model additional parameters */
116
117
CS_LAGR_EMISSIVITY
,
118
119
/* End of attributes */
120
121
CS_LAGR_N_ATTRIBUTES
122
123
}
cs_lagr_attribute_t
;
124
125
/* Base particle description */
126
/* ------------------------- */
127
128
typedef
struct
{
129
130
cs_lnum_t
cur_cell_num
;
/* current local cell number */
131
cs_lnum_t
last_face_num
;
132
133
int
switch_order_1
;
134
cs_lnum_t
state
;
/* < 0 : - number of the boundary face where
135
the particle is kept
136
0 : particle has to be destroyed
137
1 : particle has to be synchronized
138
2 : particle treated. End of displacement */
139
140
cs_lnum_t
prev_id
;
/* id in particle set of the previous particle */
141
cs_lnum_t
next_id
;
/* id in particle set of the next particle */
142
143
cs_real_t
random_value
;
/* random value associated with the particle */
144
145
cs_real_t
stat_weight
;
146
cs_real_t
residence_time
;
147
cs_real_t
mass
;
148
cs_real_t
diameter
;
149
cs_real_t
taup_aux
;
150
cs_real_t
coord[3];
151
cs_real_t
velocity[3];
152
cs_real_t
velocity_seen[3];
153
154
/* Deposition submodel additional parameters */
155
156
cs_real_t
yplus
;
157
cs_real_t
interf
;
158
cs_lnum_t
close_face_id
;
159
cs_lnum_t
marko_val
;
160
cs_lnum_t
depo
;
/* jdepo */
161
162
/* Resuspension model additional parameters */
163
164
cs_lnum_t
nb_large_asperities
;
/* jnbasg */
165
cs_lnum_t
nb_small_asperities
;
/* jnbasg */
166
cs_real_t
adhesion_force
;
/* jfadh */
167
cs_real_t
adhesion_torque
;
/* jmfadh */
168
cs_real_t
displacement_norm
;
/* jndisp */
169
170
/* Thermal model additional parameters */
171
172
cs_real_t
temp[
CS_LAGR_N_LAYERS
];
/* jhp */
173
cs_real_t
fluid_temp
;
/* jtf */
174
cs_real_t
cp
;
/* jcp */
175
176
/* Coal combustion additional parameters */
177
178
cs_real_t
water_mass
;
/* jmwat */
179
cs_real_t
coal_mass[
CS_LAGR_N_LAYERS
];
/* jmch */
180
cs_real_t
coke_mass[
CS_LAGR_N_LAYERS
];
/* jmck */
181
182
cs_real_t
shrinking_diam
;
/* jrdck */
183
cs_real_t
initial_diam
;
/* jrd0p */
184
185
cs_lnum_t
coal_number
;
/* jinch */
186
cs_real_t
coal_density[
CS_LAGR_N_LAYERS
];
/* jrhock */
187
188
/* Radiative model additional parameters */
189
190
cs_real_t
emissivity
;
/* jreps */
191
192
}
cs_lagr_particle_t
;
193
194
/* Particle description for user-defined variables */
195
/* ----------------------------------------------- */
196
197
typedef
struct
{
/* User-defined variables. Max. 10 */
198
199
cs_lnum_t
stat_class
;
/* Only if NBCLST > 0 */
200
cs_real_t
aux[10];
201
202
}
cs_lagr_aux_particle_t
;
203
204
/* Particle set */
205
/* ------------ */
206
207
typedef
struct
{
208
209
cs_lnum_t
n_particles
;
210
cs_lnum_t
n_part_out
;
211
cs_lnum_t
n_part_dep
;
212
cs_lnum_t
n_part_fou
;
213
cs_lnum_t
n_failed_part
;
214
215
cs_real_t
weight
;
216
cs_real_t
weight_out
;
217
cs_real_t
weight_dep
;
218
cs_real_t
weight_fou
;
219
cs_real_t
weight_failed
;
220
221
cs_lnum_t
n_particles_max
;
222
223
cs_lnum_t
first_used_id
;
224
cs_lnum_t
first_free_id
;
225
226
cs_lagr_particle_t
*
particles
;
/* Main particle description */
227
228
cs_lagr_aux_particle_t
*
aux_desc
;
/* Additional description for study
229
with user-defined variables */
230
}
cs_lagr_particle_set_t
;
231
232
/*=============================================================================
233
* Global variables
234
*============================================================================*/
235
236
extern
const
char
*
cs_lagr_attribute_name
[];
237
238
/*============================================================================
239
* Public function prototypes for Fortran API
240
*============================================================================*/
241
242
/*----------------------------------------------------------------------------
243
* Allocate cs_lagr_particle_set_t structure and initialize useful buffers
244
* and indexes
245
*
246
* parameters:
247
* n_particles_max <-- local max. number of particles
248
* iphyla <-- kind of physics used for the lagrangian approach
249
* nvls <-- number of user-defined variables
250
* nbclst <-- number of stat. class to study sub-set of particles
251
* ...
252
*----------------------------------------------------------------------------*/
253
254
void
255
CS_PROCF
(
lagbeg
, LAGBEG)(
const
cs_int_t
*n_particles_max,
256
const
cs_int_t
*nlayer,
257
const
cs_int_t
*iphyla,
258
const
cs_int_t
*idepst,
259
const
cs_int_t
*ireent,
260
const
cs_int_t
*iclogst,
261
const
cs_int_t
*nvls,
262
const
cs_int_t
*nbclst,
263
cs_lnum_t
icocel[],
264
cs_lnum_t
itycel[],
265
const
cs_lnum_t
*jisor,
266
const
cs_lnum_t
*jrval,
267
const
cs_lnum_t
*jrpoi,
268
const
cs_lnum_t
*jrtsp,
269
const
cs_lnum_t
*jdp,
270
const
cs_lnum_t
*jmp,
271
const
cs_lnum_t
*jxp,
272
const
cs_lnum_t
*jyp,
273
const
cs_lnum_t
*jzp,
274
const
cs_lnum_t
*jup,
275
const
cs_lnum_t
*jvp,
276
const
cs_lnum_t
*jwp,
277
const
cs_lnum_t
*juf,
278
const
cs_lnum_t
*jvf,
279
const
cs_lnum_t
*jwf,
280
const
cs_lnum_t
*jtaux,
281
const
cs_lnum_t
*jryplu,
282
const
cs_lnum_t
*jrinpf,
283
const
cs_lnum_t
*jdfac,
284
const
cs_lnum_t
*jimark,
285
const
cs_lnum_t
*jtp,
286
const
cs_lnum_t
jhp[],
287
const
cs_lnum_t
*jtf,
288
const
cs_lnum_t
*jmwat,
289
const
cs_lnum_t
jmch[],
290
const
cs_lnum_t
jmck[],
291
const
cs_lnum_t
*jcp,
292
const
cs_lnum_t
*jrdck,
293
const
cs_lnum_t
*jrd0p,
294
const
cs_lnum_t
*jinch,
295
const
cs_lnum_t
jrhock[],
296
const
cs_lnum_t
*jreps,
297
const
cs_lnum_t
*jdepo,
298
const
cs_lnum_t
*jnbasg,
299
const
cs_lnum_t
*jnbasp,
300
const
cs_lnum_t
*jfadh,
301
const
cs_lnum_t
*jmfadh,
302
const
cs_lnum_t
*jndisp);
303
304
/*----------------------------------------------------------------------------
305
* Get variables and parameters associated to each particles and keep it in
306
* a new structure
307
*
308
* parameters:
309
* nbpmax <-- n_particles max.
310
* nbpart --> number of current particles
311
* ...
312
*----------------------------------------------------------------------------*/
313
314
void
315
CS_PROCF
(
prtget
, PRTGET)(
const
cs_int_t
*nbpmax,
316
const
cs_int_t
*nbpart,
317
const
cs_real_t
ettp[],
318
const
cs_real_t
ettpa[],
319
const
cs_int_t
itepa[],
320
const
cs_real_t
tepa[],
321
const
cs_int_t
ibord[],
322
const
cs_int_t
indep[]);
323
324
/*----------------------------------------------------------------------------
325
* Put variables and parameters associated to each particles into FORTRAN
326
* arrays.
327
*
328
* parameters:
329
* nbpmax <-- n_particles max.
330
* nbpart --> number of current particles
331
* dnbpar --> particle total weight
332
* nbpout --> number of outgoing particles
333
* dnbpou --> outgoing particle total weight
334
* nbperr --> number of failed particles
335
* dnbper --> failed particles total weight
336
* nbpdep --> number of depositing particles
337
* dnbdep --> depositing particles total weight
338
* npencr --> number of fouled particles (coal)
339
* dnpenc --> fouled particles (coal) total weight
340
* ...
341
*----------------------------------------------------------------------------*/
342
343
void
344
CS_PROCF
(
prtput
, PRTPUT)(
const
cs_int_t
*nbpmax,
345
cs_int_t
*nbpart,
346
cs_real_t
*dnbpar,
347
cs_int_t
*nbpout,
348
cs_real_t
*dnbpou,
349
cs_int_t
*nbperr,
350
cs_real_t
*dnbper,
351
cs_int_t
*nbpdep,
352
cs_real_t
*dnbdep,
353
cs_int_t
*npencr,
354
cs_real_t
*dnpenc,
355
cs_real_t
ettp[],
356
cs_real_t
ettpa[],
357
cs_int_t
itepa[],
358
cs_real_t
tepa[],
359
cs_int_t
ibord[]);
360
361
/*----------------------------------------------------------------------------
362
* Get variables and parameters associated to each particles and keep it in
363
* a new structure
364
*
365
* parameters:
366
* ...
367
*----------------------------------------------------------------------------*/
368
369
void
370
CS_PROCF
(
getbdy
, GETBDY)(
const
cs_int_t
*nflagm,
371
const
cs_int_t
*nfrlag,
372
const
cs_int_t
*injcon,
373
const
cs_int_t
ilflag[],
374
const
cs_int_t
iusncl[],
375
const
cs_int_t
iusclb[],
376
const
cs_int_t
iusmoy[],
377
const
cs_real_t
deblag[],
378
const
cs_int_t
ifrlag[]);
379
380
/*----------------------------------------------------------------------------
381
* Displacement of particles.
382
*
383
* parameters:
384
* p_n_particles <-> pointer to the number of particles
385
* scheme_order <-- current order of the scheme used for Lagragian
386
*----------------------------------------------------------------------------*/
387
388
void
389
CS_PROCF
(
dplprt
, DPLPRT)(
cs_int_t
*p_n_particles,
390
cs_real_t
*p_parts_weight,
391
cs_int_t
*p_scheme_order,
392
cs_real_t
boundary_stat[],
393
const
cs_int_t
*iensi3,
394
const
cs_int_t
*inbr,
395
const
cs_int_t
*inbrbd,
396
const
cs_int_t
*iflm,
397
const
cs_int_t
*iflmbd,
398
const
cs_int_t
*iang,
399
const
cs_int_t
*iangbd,
400
const
cs_int_t
*ivit,
401
const
cs_int_t
*ivitbd,
402
const
cs_int_t
*iencnd,
403
const
cs_int_t
*iencma,
404
const
cs_int_t
*iencdi,
405
const
cs_int_t
*iencck,
406
const
cs_int_t
*iencnbbd,
407
const
cs_int_t
*iencmabd,
408
const
cs_int_t
*iencdibd,
409
const
cs_int_t
*iencckbd,
410
const
cs_int_t
*inclg,
411
const
cs_int_t
*iscovc,
412
const
cs_int_t
*nusbor,
413
cs_int_t
iusb[],
414
cs_real_t
visc_length[],
415
cs_real_t
dlgeo[],
416
cs_real_t
rtp[],
417
const
cs_int_t
*iu,
418
const
cs_int_t
*iv,
419
const
cs_int_t
*iw,
420
cs_real_t
energt[],
421
const
cs_real_t
tprenc[],
422
const
cs_real_t
visref[],
423
const
cs_real_t
enc1[],
424
const
cs_real_t
enc2[],
425
const
cs_real_t
*tkelvi);
426
427
/*----------------------------------------------------------------------------
428
* Update C structures metadata after particle computations.
429
*
430
* This metadata is overwritten and rebuilt at each time step, so
431
* it is useful only for a possible postprocessing step.
432
*
433
* The matching data is copied separately, as it may not need to be
434
* updated at each time step.
435
*
436
* parameters:
437
* nbpmax <-- n_particles max.
438
* nbpart <-- number of current particles
439
* dnbpar <-- particle total weight
440
* nbpout <-- number of outgoing particles
441
* dnbpou <-- outgoing particle total weight
442
* nbperr <-- number of failed particles
443
* dnbper <-- failed particles total weight
444
* nbpdep <-- number of depositing particles
445
* dnbdep <-- depositing particles total weight
446
* npencr <-- number of fouled particles (coal)
447
* dnpenc <-- fouled particles (coal) total weight
448
* ...
449
*----------------------------------------------------------------------------*/
450
451
void
452
CS_PROCF
(
ucdprt
, UCDPRT)(
const
cs_lnum_t
*nbpmax,
453
const
cs_lnum_t
*nbpart,
454
const
cs_real_t
*dnbpar,
455
const
cs_int_t
*nbpout,
456
const
cs_real_t
*dnbpou,
457
const
cs_int_t
*nbperr,
458
const
cs_real_t
*dnbper,
459
const
cs_int_t
*nbpdep,
460
const
cs_real_t
*dnbdep,
461
const
cs_int_t
*npencr,
462
const
cs_real_t
*dnpenc,
463
const
cs_real_t
ettp[],
464
const
cs_real_t
ettpa[],
465
const
cs_lnum_t
itepa[],
466
const
cs_real_t
tepa[],
467
const
cs_lnum_t
ibord[],
468
const
cs_lnum_t
indep[]);
469
470
/*============================================================================
471
* Public function prototypes
472
*============================================================================*/
473
474
/*----------------------------------------------------------------------------
475
* Get data access information for a given particle attribute.
476
*
477
* For attributes not currently present, the displacement and data
478
* size should be -1 and 0 respectively.
479
*
480
* parameters:
481
* attr <-- particle attribute
482
* extents --> size (in bytes) of particle structure, or NULL
483
* size --> size (in bytes) of attribute in particle structure, or NULL
484
* displ --> displacement (in bytes) in particle structure, or NULL
485
* datatype --> associated datatype, or NULL
486
* count --> associated elements count, or NULL
487
*----------------------------------------------------------------------------*/
488
489
void
490
cs_lagr_get_attr_info
(
cs_lagr_attribute_t
attr,
491
size_t
*extents,
492
size_t
*size,
493
ptrdiff_t *displ,
494
cs_datatype_t
*datatype,
495
int
*count);
496
497
/*----------------------------------------------------------------------------
498
* Return pointers to the main cs_lagr_particle_set_t structures.
499
*
500
* parameters:
501
* current_set --> pointer to current particle set, or NULL
502
* previous_set --> pointer to previous particle set, or NULL
503
*----------------------------------------------------------------------------*/
504
505
void
506
cs_lagr_get_particle_sets
(
cs_lagr_particle_set_t
**current_set,
507
cs_lagr_particle_set_t
**previous_set);
508
509
/*----------------------------------------------------------------------------
510
* Delete cs_lagr_particle_set_t structure and delete other useful buffers.
511
*----------------------------------------------------------------------------*/
512
513
void
514
cs_lagr_destroy
(
void
);
515
516
/*----------------------------------------------------------------------------*/
517
518
END_C_DECLS
519
520
#endif
/* __CS_LAGR_TRACKING_H__ */
Generated on Thu Feb 27 2014 19:21:34 by
1.8.3.1