9.0
general documentation
Loading...
Searching...
No Matches
cs_lagr_particle.h
Go to the documentation of this file.
1#ifndef __CS_LAGR_PARTICLE_H__
2#define __CS_LAGR_PARTICLE_H__
3
4/*============================================================================
5 * Lagrangian module particle model
6 *============================================================================*/
7
8/*
9 This file is part of code_saturne, a general-purpose CFD tool.
10
11 Copyright (C) 1998-2025 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#include "base/cs_defs.h"
31
32#include "assert.h"
33#include "string.h"
34
35/*----------------------------------------------------------------------------*/
36
38
39/*=============================================================================
40 * Macro definitions
41 *============================================================================*/
42
43/*=============================================================================
44 * Macro definitions
45 *============================================================================*/
46
50
52#define CS_LAGR_PART_TO_DELETE (1 << 0)
53
55#define CS_LAGR_PART_FIXED (1 << 1)
56
58#define CS_LAGR_PART_DEPOSITED (1 << 2)
59
61#define CS_LAGR_PART_ROLLING (1 << 3)
62
64#define CS_LAGR_PART_IMPOSED_MOTION (1 << 4)
65
67
69#define CS_LAGR_PART_DEPOSITION_FLAGS \
70 ( CS_LAGR_PART_TO_DELETE | CS_LAGR_PART_FIXED | CS_LAGR_PART_DEPOSITED \
71 | CS_LAGR_PART_ROLLING | CS_LAGR_PART_IMPOSED_MOTION)
72
73/*============================================================================
74 * Type definitions
75 *============================================================================*/
76
78/* ------------------------------- */
79
80typedef enum {
81
83
86
88
90
100
105
106 /* Arrays for 2nd order scheme */
107
108 CS_LAGR_TURB_STATE_1, /* turbulence characteristics of first pass */
109 CS_LAGR_PRED_VELOCITY, /* 1st step prediction for particle velocity */
110 CS_LAGR_PRED_VELOCITY_SEEN, /* 1st step prediction for relative velocity */
111 CS_LAGR_V_GAUSS, /* 1st step Gaussian variable */
112 CS_LAGR_BR_GAUSS, /* 1st step Brownian motion Gaussian variable */
113
114 /* Non-spherical particles submodel additoinal parameters */
115
123
124 /* Deposition submodel additional parameters */
125
131
132 /* Resuspension model additional parameters */
133
139
140 /* Clogging model additional parameters */
141
146
147 /* Thermal model additional parameters */
148
152
153 /* Coal combustion additional parameters */
154
158
161
164
165 /* Radiative model additional parameters */
166
168
169 /* Statistical class */
170
172
173 /* Agglomeration/fragmentation model parameters */
176
177 /* User attributes */
178
180
181 /* End of attributes */
182
184
186
188/* ------------------------------------- */
189
190typedef struct {
191
192 size_t extents; /* size (in bytes) of particle
193 structure */
194 size_t lb; /* size (in bytes) of lower
195 bounds of particle data
196 (work area before) */
197
198 int n_time_vals; /* number of time values
199 handled */
200
201 size_t size[CS_LAGR_N_ATTRIBUTES]; /* size (in bytes) of
202 attributes in particle
203 structure for a given
204 time value */
205 cs_datatype_t datatype[CS_LAGR_N_ATTRIBUTES]; /* datatype of associated
206 attributes */
207 int (*count)[CS_LAGR_N_ATTRIBUTES]; /* number of values for each
208 attribute, per associated
209 time_id */
210 ptrdiff_t (*displ)[CS_LAGR_N_ATTRIBUTES]; /* displacement (in bytes) of
211 attributes in particle data,
212 per associated time_id*/
213
214 ptrdiff_t *source_term_displ; /* displacement (in bytes) of
215 source term values
216 for second-order scheme,
217 or NULL */
218
220
221/* Particle set */
222/* ------------ */
223
251
252/*=============================================================================
253 * Global variables
254 *============================================================================*/
255
257
258extern const char *cs_lagr_attribute_name[];
259
261
263
264/*============================================================================
265 * Public function prototypes for Fortran API
266 *============================================================================*/
267
268/*============================================================================
269 * Public function prototypes
270 *============================================================================*/
271
272/*----------------------------------------------------------------------------*/
276/*----------------------------------------------------------------------------*/
277
278void
280
281/*----------------------------------------------------------------------------*/
287/*----------------------------------------------------------------------------*/
288
291
292/*----------------------------------------------------------------------------*/
296/*----------------------------------------------------------------------------*/
297
298void
300
301/*----------------------------------------------------------------------------*/
305/*----------------------------------------------------------------------------*/
306
307void
309
310/*----------------------------------------------------------------------------*/
319/*----------------------------------------------------------------------------*/
320
321void
323 cs_lnum_t src);
324
325/*----------------------------------------------------------------------------*/
344/*----------------------------------------------------------------------------*/
345
346void
348 int time_id,
350 size_t *extents,
351 size_t *size,
352 ptrdiff_t *displ,
353 cs_datatype_t *datatype,
354 int *count);
355
356/*----------------------------------------------------------------------------*/
369/*----------------------------------------------------------------------------*/
370
371int
374 cs_datatype_t datatype,
375 int stride,
376 int component_id);
377
378/*----------------------------------------------------------------------------*/
386/*----------------------------------------------------------------------------*/
387
388void
390
391/*----------------------------------------------------------------------------
392 * Return pointer to the main cs_lagr_particle_set_t structure.
393 *
394 * returns:
395 * pointer to current particle set, or NULL
396 *----------------------------------------------------------------------------*/
397
400
401/*----------------------------------------------------------------------------*/
411/*----------------------------------------------------------------------------*/
412
413inline static void *
415 cs_lnum_t particle_id,
417{
418 assert(particle_set->p_am->count[0][attr] > 0);
419
420 return (unsigned char *)particle_set->p_buffer
421 + particle_set->p_am->extents*particle_id
422 + particle_set->p_am->displ[0][attr];
423}
424
425/*----------------------------------------------------------------------------*/
436/*----------------------------------------------------------------------------*/
437
438inline static const void *
440 cs_lnum_t particle_id,
442{
443 assert(particle_set->p_am->count[0][attr] > 0);
444
445 return particle_set->p_buffer
446 + particle_set->p_am->extents*particle_id
447 + particle_set->p_am->displ[0][attr];
448}
449
450/*----------------------------------------------------------------------------*/
462/*----------------------------------------------------------------------------*/
463
464inline static void *
466 cs_lnum_t particle_id,
467 int time_id,
469{
470 assert(particle_set->p_am->count[time_id][attr] > 0);
471
472 return particle_set->p_buffer
473 + particle_set->p_am->extents*particle_id
474 + particle_set->p_am->displ[time_id][attr];
475}
476
477/*----------------------------------------------------------------------------*/
489/*----------------------------------------------------------------------------*/
490
491inline static const void *
493 cs_lnum_t particle_id,
494 int time_id,
496{
497 assert(particle_set->p_am->count[time_id][attr] > 0);
498
499 return particle_set->p_buffer
500 + particle_set->p_am->extents*particle_id
501 + particle_set->p_am->displ[time_id][attr];
502}
503
504/*----------------------------------------------------------------------------*/
514/*----------------------------------------------------------------------------*/
515
516inline static int
518 cs_lnum_t particle_id,
519 int mask)
520{
521 int flag
522 = *((const cs_lnum_t *)( particle_set->p_buffer
523 + particle_set->p_am->extents*particle_id
524 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG]));
525
526 return (flag & mask);
527}
528
529/*----------------------------------------------------------------------------*/
537/*----------------------------------------------------------------------------*/
538
539inline static void
541 cs_lnum_t particle_id,
542 int mask)
543{
544 int flag
545 = *((const cs_lnum_t *)( particle_set->p_buffer
546 + particle_set->p_am->extents*particle_id
547 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG]));
548
549 flag = flag | mask;
550
551 *((cs_lnum_t *)( particle_set->p_buffer
552 + particle_set->p_am->extents*particle_id
553 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG])) = flag;
554}
555
556/*----------------------------------------------------------------------------*/
564/*----------------------------------------------------------------------------*/
565
566inline static void
568 cs_lnum_t particle_id,
569 int mask)
570{
571 int flag
572 = *((const cs_lnum_t *)( particle_set->p_buffer
573 + particle_set->p_am->extents*particle_id
574 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG]));
575
576 flag = (flag | mask) - mask;
577
578 *((cs_lnum_t *)( particle_set->p_buffer
579 + particle_set->p_am->extents*particle_id
580 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG])) = flag;
581}
582
583/*----------------------------------------------------------------------------*/
593/*----------------------------------------------------------------------------*/
594
595inline static cs_lnum_t
597 cs_lnum_t particle_id,
599{
600 assert(particle_set->p_am->count[0][attr] > 0);
601
602 return *((const cs_lnum_t *)( particle_set->p_buffer
603 + particle_set->p_am->extents*particle_id
604 + particle_set->p_am->displ[0][attr]));
605}
606
607/*----------------------------------------------------------------------------*/
619/*----------------------------------------------------------------------------*/
620
621inline static cs_lnum_t
623 cs_lnum_t particle_id,
624 int time_id,
626{
627 assert(particle_set->p_am->count[time_id][attr] > 0);
628
629 return *((const cs_lnum_t *)( particle_set->p_buffer
630 + particle_set->p_am->extents*particle_id
631 + particle_set->p_am->displ[time_id][attr]));
632}
633
634/*----------------------------------------------------------------------------*/
643/*----------------------------------------------------------------------------*/
644
645inline static void
647 cs_lnum_t particle_id,
649 cs_lnum_t value)
650{
651 assert(particle_set->p_am->count[0][attr] > 0);
652
653 *((cs_lnum_t *)( particle_set->p_buffer
654 + particle_set->p_am->extents*particle_id
655 + particle_set->p_am->displ[0][attr])) = value;
656}
657
658/*----------------------------------------------------------------------------*/
669/*----------------------------------------------------------------------------*/
670
671inline static void
673 cs_lnum_t particle_id,
674 int time_id,
676 cs_lnum_t value)
677{
678 assert(particle_set->p_am->count[time_id][attr] > 0);
679
680 *((cs_lnum_t *)( particle_set->p_buffer
681 + particle_set->p_am->extents*particle_id
682 + particle_set->p_am->displ[time_id][attr])) = value;
683}
684
685/*----------------------------------------------------------------------------*/
695/*----------------------------------------------------------------------------*/
696
697inline static cs_gnum_t
699 cs_lnum_t particle_id,
701{
702 assert(particle_set->p_am->count[0][attr] > 0);
703
704 return *((const cs_gnum_t *)( particle_set->p_buffer
705 + particle_set->p_am->extents*particle_id
706 + particle_set->p_am->displ[0][attr]));
707}
708
709/*----------------------------------------------------------------------------*/
721/*----------------------------------------------------------------------------*/
722
723inline static cs_gnum_t
725 cs_lnum_t particle_id,
726 int time_id,
728{
729 assert(particle_set->p_am->count[time_id][attr] > 0);
730
731 return *((const cs_gnum_t *)( particle_set->p_buffer
732 + particle_set->p_am->extents*particle_id
733 + particle_set->p_am->displ[time_id][attr]));
734}
735
736/*----------------------------------------------------------------------------*/
745/*----------------------------------------------------------------------------*/
746
747inline static void
749 cs_lnum_t particle_id,
751 cs_gnum_t value)
752{
753 assert(particle_set->p_am->count[0][attr] > 0);
754
755 *((cs_gnum_t *)( particle_set->p_buffer
756 + particle_set->p_am->extents*particle_id
757 + particle_set->p_am->displ[0][attr])) = value;
758}
759
760/*----------------------------------------------------------------------------*/
771/*----------------------------------------------------------------------------*/
772
773inline static void
775 cs_lnum_t particle_id,
776 int time_id,
778 cs_gnum_t value)
779{
780 assert(particle_set->p_am->count[time_id][attr] > 0);
781
782 *((cs_gnum_t *)( particle_set->p_buffer
783 + particle_set->p_am->extents*particle_id
784 + particle_set->p_am->displ[time_id][attr])) = value;
785}
786
787/*----------------------------------------------------------------------------*/
797/*----------------------------------------------------------------------------*/
798
799inline static cs_real_t
801 cs_lnum_t particle_id,
803{
804 assert(particle_set->p_am->count[0][attr] > 0);
805
806 return *((const cs_real_t *)( particle_set->p_buffer
807 + particle_set->p_am->extents*particle_id
808 + particle_set->p_am->displ[0][attr]));
809}
810
811/*----------------------------------------------------------------------------*/
823/*----------------------------------------------------------------------------*/
824
825inline static cs_real_t
827 cs_lnum_t particle_id,
828 int time_id,
830{
831 assert(particle_set->p_am->count[time_id][attr] > 0);
832
833 return *((const cs_real_t *)( particle_set->p_buffer
834 + particle_set->p_am->extents*particle_id
835 + particle_set->p_am->displ[time_id][attr]));
836}
837
838/*----------------------------------------------------------------------------*/
847/*----------------------------------------------------------------------------*/
848
849inline static void
851 cs_lnum_t particle_id,
853 cs_real_t value)
854{
855 assert(particle_set->p_am->count[0][attr] > 0);
856
857 *((cs_real_t *)( particle_set->p_buffer
858 + particle_set->p_am->extents*particle_id
859 + particle_set->p_am->displ[0][attr])) = value;
860}
861
862/*----------------------------------------------------------------------------*/
873/*----------------------------------------------------------------------------*/
874
875inline static void
877 cs_lnum_t particle_id,
878 int time_id,
880 cs_real_t value)
881{
882 assert(particle_set->p_am->count[time_id][attr] > 0);
883
884 *((cs_real_t *)( particle_set->p_buffer
885 + particle_set->p_am->extents*particle_id
886 + particle_set->p_am->displ[time_id][attr])) = value;
887}
888
889/*----------------------------------------------------------------------------*/
900/*----------------------------------------------------------------------------*/
901
902inline static void
904 cs_lnum_t p_id)
905{
906 memset(p_set->p_buffer + p_set->p_am->extents * p_id,
907 0,
908 p_set->p_am->extents);
909}
910
911/*----------------------------------------------------------------------------*/
922/*----------------------------------------------------------------------------*/
923
924inline static cs_real_t *
926 cs_lnum_t particle_id,
928{
929 assert(particle_set->p_am->source_term_displ != NULL);
930 assert(particle_set->p_am->source_term_displ[attr] >= 0);
931
932 return (cs_real_t *)( (unsigned char *)particle_set->p_buffer
933 + particle_set->p_am->extents*particle_id
934 + particle_set->p_am->source_term_displ[attr]);
935}
936
937/*----------------------------------------------------------------------------*/
948/*----------------------------------------------------------------------------*/
949
950inline static const cs_real_t *
952 cs_lnum_t particle_id,
954{
955 assert(particle_set->p_am->source_term_displ != NULL);
956 assert(particle_set->p_am->source_term_displ[attr] >= 0);
957
958 return (const cs_real_t *)( (unsigned char *)particle_set->p_buffer
959 + particle_set->p_am->extents*particle_id
960 + particle_set->p_am->source_term_displ[attr]);
961}
962
963/*----------------------------------------------------------------------------*/
973/*----------------------------------------------------------------------------*/
974
975inline static void *
977 const cs_lagr_attribute_map_t *attr_map,
979{
980 assert(attr_map->count[0][attr] > 0);
981
982 return (unsigned char *)particle + attr_map->displ[0][attr];
983}
984
985/*----------------------------------------------------------------------------*/
995/*----------------------------------------------------------------------------*/
996
997inline static const void *
998cs_lagr_particle_attr_const(const void *particle,
999 const cs_lagr_attribute_map_t *attr_map,
1001{
1002 assert(attr_map->count[0][attr] > 0);
1003
1004 return (const unsigned char *)particle + attr_map->displ[0][attr];
1005}
1006
1007/*----------------------------------------------------------------------------*/
1018/*----------------------------------------------------------------------------*/
1019
1020inline static void *
1022 const cs_lagr_attribute_map_t *attr_map,
1023 int time_id,
1025{
1026 assert(attr_map->count[time_id][attr] > 0);
1027
1028 return (unsigned char *)particle + attr_map->displ[time_id][attr];
1029}
1030
1031/*----------------------------------------------------------------------------*/
1042/*----------------------------------------------------------------------------*/
1043
1044inline static const void *
1046 const cs_lagr_attribute_map_t *attr_map,
1047 int time_id,
1049{
1050 assert(attr_map->count[time_id][attr] > 0);
1051
1052 return (const unsigned char *)particle
1053 + attr_map->displ[time_id][attr];
1054}
1055
1056/*----------------------------------------------------------------------------*/
1066/*----------------------------------------------------------------------------*/
1067
1068inline static cs_lnum_t
1069cs_lagr_particle_get_lnum(const void *particle,
1070 const cs_lagr_attribute_map_t *attr_map,
1072{
1073 assert(attr_map->count[0][attr] > 0);
1074
1075 return *((const cs_lnum_t *)( (const unsigned char *)particle
1076 + attr_map->displ[0][attr]));
1077}
1078
1079/*----------------------------------------------------------------------------*/
1091/*----------------------------------------------------------------------------*/
1092
1093inline static cs_lnum_t
1094cs_lagr_particle_get_lnum_n(const void *particle,
1095 const cs_lagr_attribute_map_t *attr_map,
1096 int time_id,
1098{
1099 assert(attr_map->count[time_id][attr] > 0);
1100
1101 return *((const cs_lnum_t *)( (const unsigned char *)particle
1102 + attr_map->displ[time_id][attr]));
1103}
1104
1105/*----------------------------------------------------------------------------*/
1114 /*----------------------------------------------------------------------------*/
1115
1116inline static void
1118 const cs_lagr_attribute_map_t *attr_map,
1120 cs_lnum_t value)
1121{
1122 assert(attr_map->count[0][attr] > 0);
1123
1124 *((cs_lnum_t *)((unsigned char *)particle + attr_map->displ[0][attr]))
1125 = value;
1126}
1127
1128/*----------------------------------------------------------------------------*/
1139 /*----------------------------------------------------------------------------*/
1140
1141inline static void
1143 const cs_lagr_attribute_map_t *attr_map,
1144 int time_id,
1146 cs_lnum_t value)
1147{
1148 assert(attr_map->count[time_id][attr] > 0);
1149
1150 *((cs_lnum_t *)( (unsigned char *)particle
1151 + attr_map->displ[time_id][attr])) = value;
1152}
1153
1154/*----------------------------------------------------------------------------*/
1164/*----------------------------------------------------------------------------*/
1165
1166inline static cs_gnum_t
1167cs_lagr_particle_get_gnum(const void *particle,
1168 const cs_lagr_attribute_map_t *attr_map,
1170{
1171 assert(attr_map->count[0][attr] > 0);
1172
1173 return *((const cs_gnum_t *)( (const unsigned char *)particle
1174 + attr_map->displ[0][attr]));
1175}
1176
1177/*----------------------------------------------------------------------------*/
1189/*----------------------------------------------------------------------------*/
1190
1191inline static cs_gnum_t
1192cs_lagr_particle_get_gnum_n(const void *particle,
1193 const cs_lagr_attribute_map_t *attr_map,
1194 int time_id,
1196{
1197 assert(attr_map->count[time_id][attr] > 0);
1198
1199 return *((const cs_gnum_t *)( (const unsigned char *)particle
1200 + attr_map->displ[time_id][attr]));
1201}
1202
1203/*----------------------------------------------------------------------------*/
1212 /*----------------------------------------------------------------------------*/
1213
1214inline static void
1216 const cs_lagr_attribute_map_t *attr_map,
1218 cs_gnum_t value)
1219{
1220 assert(attr_map->count[0][attr] > 0);
1221
1222 *((cs_gnum_t *)((unsigned char *)particle + attr_map->displ[0][attr]))
1223 = value;
1224}
1225
1226/*----------------------------------------------------------------------------*/
1237 /*----------------------------------------------------------------------------*/
1238
1239inline static void
1241 const cs_lagr_attribute_map_t *attr_map,
1242 int time_id,
1244 cs_gnum_t value)
1245{
1246 assert(attr_map->count[time_id][attr] > 0);
1247
1248 *((cs_gnum_t *)( (unsigned char *)particle
1249 + attr_map->displ[time_id][attr])) = value;
1250}
1251
1252/*----------------------------------------------------------------------------*/
1262/*----------------------------------------------------------------------------*/
1263
1264inline static cs_real_t
1265cs_lagr_particle_get_real(const void *particle,
1266 const cs_lagr_attribute_map_t *attr_map,
1268{
1269 assert(attr_map->count[0][attr] > 0);
1270
1271 return *((const cs_real_t *)( (const unsigned char *)particle
1272 + attr_map->displ[0][attr]));
1273}
1274
1275/*----------------------------------------------------------------------------*/
1287/*----------------------------------------------------------------------------*/
1288
1289inline static cs_real_t
1290cs_lagr_particle_get_real_n(const void *particle,
1291 const cs_lagr_attribute_map_t *attr_map,
1292 int time_id,
1294{
1295 assert(attr_map->count[time_id][attr] > 0);
1296
1297 return *((const cs_real_t *)( (const unsigned char *)particle
1298 + attr_map->displ[time_id][attr]));
1299}
1300
1301/*----------------------------------------------------------------------------*/
1310 /*----------------------------------------------------------------------------*/
1311
1312inline static void
1314 const cs_lagr_attribute_map_t *attr_map,
1316 cs_real_t value)
1317{
1318 assert(attr_map->count[0][attr] > 0);
1319
1320 *((cs_real_t *)((unsigned char *)particle + attr_map->displ[0][attr]))
1321 = value;
1322}
1323
1324/*----------------------------------------------------------------------------*/
1335 /*----------------------------------------------------------------------------*/
1336
1337inline static void
1339 const cs_lagr_attribute_map_t *attr_map,
1340 int time_id,
1342 cs_real_t value)
1343{
1344 assert(attr_map->count[time_id][attr] > 0);
1345
1346 *((cs_real_t *)( (unsigned char *)particle
1347 + attr_map->displ[time_id][attr])) = value;
1348}
1349
1350/*----------------------------------------------------------------------------*/
1360/*----------------------------------------------------------------------------*/
1361
1362inline static cs_real_t *
1364 const cs_lagr_attribute_map_t *attr_map,
1366{
1367 assert(attr_map->source_term_displ != NULL);
1368 assert(attr_map->source_term_displ[attr] >= 0);
1369
1370 return (cs_real_t *)( (unsigned char *)particle
1371 + attr_map->source_term_displ[attr]);
1372}
1373
1374/*----------------------------------------------------------------------------*/
1384/*----------------------------------------------------------------------------*/
1385
1386inline static const cs_real_t *
1388 const cs_lagr_attribute_map_t *attr_map,
1390{
1391 assert(attr_map->source_term_displ != NULL);
1392 assert(attr_map->source_term_displ[attr] >= 0);
1393
1394 return (const cs_real_t *)( (unsigned char *)particle
1395 + attr_map->source_term_displ[attr]);
1396}
1397
1398/*----------------------------------------------------------------------------
1399 * Resize particle set buffers if needed.
1400 *
1401 * parameters:
1402 * n_particles <-- minumum number of particles required
1403 *
1404 *
1405 * returns:
1406 * 1 if resizing was required, 0 otherwise
1407 *----------------------------------------------------------------------------*/
1408
1409int
1410cs_lagr_particle_set_resize(cs_lnum_t n_min_particles);
1411
1412/*----------------------------------------------------------------------------
1413 * Set reallocation factor for particle sets.
1414 *
1415 * This factor determines the multiplier used for reallocations when
1416 * the particle set's buffers are too small to handle the new number of
1417 * particles.
1418 *
1419 * parameters:
1420 * f <-- reallocation size multiplier
1421 *----------------------------------------------------------------------------*/
1422
1423void
1425
1426/*----------------------------------------------------------------------------*/
1435/*----------------------------------------------------------------------------*/
1436
1437unsigned long long
1439
1440/*----------------------------------------------------------------------------*/
1449/*----------------------------------------------------------------------------*/
1450
1451void
1452cs_lagr_set_n_g_particles_max(unsigned long long n_g_particles_max);
1453
1454/*----------------------------------------------------------------------------*/
1461/*----------------------------------------------------------------------------*/
1462
1463void
1465 cs_lnum_t particle_id);
1466
1467/*----------------------------------------------------------------------------*/
1473/*----------------------------------------------------------------------------*/
1474
1475void
1477
1478/*----------------------------------------------------------------------------*/
1484/*----------------------------------------------------------------------------*/
1485
1486void
1487cs_lagr_set_n_user_variables(int n_user_variables);
1488
1489/*----------------------------------------------------------------------------*/
1490
1492
1493/*============================================================================
1494 * Public C++ templates
1495 *============================================================================*/
1496
1497#if defined(__cplusplus)
1498
1499template <typename T>
1500T *
1501cs_lagr_particles_attr_get_ptr(cs_lagr_particle_set_t *particle_set,
1502 cs_lnum_t particle_id,
1504{
1505 assert(particle_set->p_am->count[0][attr] > 0);
1506
1507 return (T *)( particle_set->p_buffer
1508 + particle_set->p_am->extents*particle_id
1509 + particle_set->p_am->displ[0][attr]);
1510}
1511
1512template <typename T>
1513const T *
1514cs_lagr_particles_attr_get_const_ptr(const cs_lagr_particle_set_t *particle_set,
1515 cs_lnum_t particle_id,
1517{
1518 assert(particle_set->p_am->count[0][attr] > 0);
1519
1520 return (const T *)( particle_set->p_buffer
1521 + particle_set->p_am->extents*particle_id
1522 + particle_set->p_am->displ[0][attr]);
1523}
1524
1525template <typename T>
1526T *
1527cs_lagr_particles_attr_n_get_ptr(cs_lagr_particle_set_t *particle_set,
1528 cs_lnum_t particle_id,
1529 int time_id,
1531{
1532 assert(particle_set->p_am->count[time_id][attr] > 0);
1533
1534 return (T *)( particle_set->p_buffer
1535 + particle_set->p_am->extents*particle_id
1536 + particle_set->p_am->displ[time_id][attr]);
1537}
1538
1539template <typename T>
1540const T *
1541cs_lagr_particles_attr_n_get_const_ptr(const cs_lagr_particle_set_t *particle_set,
1542 cs_lnum_t particle_id,
1543 int time_id,
1545{
1546 assert(particle_set->p_am->count[time_id][attr] > 0);
1547
1548 return (const T *)( particle_set->p_buffer
1549 + particle_set->p_am->extents*particle_id
1550 + particle_set->p_am->displ[time_id][attr]);
1551}
1552
1553template <typename T>
1554T
1555cs_lagr_particles_attr_get_val(const cs_lagr_particle_set_t *particle_set,
1556 cs_lnum_t particle_id,
1558{
1559 assert(particle_set->p_am->count[0][attr] > 0);
1560
1561 return *(T *)( particle_set->p_buffer
1562 + particle_set->p_am->extents*particle_id
1563 + particle_set->p_am->displ[0][attr]);
1564}
1565
1566template <typename T>
1567void
1568cs_lagr_particles_attr_set_val(cs_lagr_particle_set_t *particle_set,
1569 cs_lnum_t particle_id,
1571 T value)
1572{
1573 assert(particle_set->p_am->count[0][attr] > 0);
1574
1575 *(T *)( particle_set->p_buffer
1576 + particle_set->p_am->extents*particle_id
1577 + particle_set->p_am->displ[0][attr]) = value;
1578}
1579
1580template <typename T>
1581T
1582cs_lagr_particles_attr_n_get_val(const cs_lagr_particle_set_t *particle_set,
1583 cs_lnum_t particle_id,
1584 int time_id,
1586{
1587 assert(particle_set->p_am->count[time_id][attr] > 0);
1588
1589 return *(T *)( particle_set->p_buffer
1590 + particle_set->p_am->extents*particle_id
1591 + particle_set->p_am->displ[time_id][attr]);
1592}
1593
1594template <typename T>
1595void
1596cs_lagr_particles_attr_n_set_val(cs_lagr_particle_set_t *particle_set,
1597 cs_lnum_t particle_id,
1598 int time_id,
1600 T value)
1601{
1602 assert(particle_set->p_am->count[time_id][attr] > 0);
1603
1604 *(T *)( particle_set->p_buffer
1605 + particle_set->p_am->extents*particle_id
1606 + particle_set->p_am->displ[time_id][attr]) = value;
1607}
1608
1609template <typename T>
1610T *
1611cs_lagr_particle_attr_get_ptr(void *particle,
1612 const cs_lagr_attribute_map_t *attr_map,
1614{
1615 assert(attr_map->count[0][attr] > 0);
1616
1617 return (T *)((unsigned char *)particle + attr_map->displ[0][attr]);
1618}
1619
1620template <typename T>
1621const T *
1622cs_lagr_particle_attr_get_const_ptr(const void *particle,
1623 const cs_lagr_attribute_map_t *attr_map,
1625{
1626 assert(attr_map->count[0][attr] > 0);
1627
1628 return (const T *)( (const unsigned char *)particle
1629 + attr_map->displ[0][attr]);
1630}
1631
1632template <typename T>
1633T *
1634cs_lagr_particle_attr_n_get_ptr(void *particle,
1635 const cs_lagr_attribute_map_t *attr_map,
1636 int time_id,
1638{
1639 assert(attr_map->count[time_id][attr] > 0);
1640
1641 return (T *)((unsigned char *)particle + attr_map->displ[time_id][attr]);
1642}
1643
1644template <typename T>
1645const T *
1646cs_lagr_particle_attr_n_get_const_ptr(const void *particle,
1647 const cs_lagr_attribute_map_t *attr_map,
1648 int time_id,
1650{
1651 assert(attr_map->count[time_id][attr] > 0);
1652
1653 return (const T *)( (const unsigned char *)particle
1654 + attr_map->displ[time_id][attr]);
1655}
1656
1657template <typename T>
1658T
1659cs_lagr_particle_attr_get_val(const void *particle,
1660 const cs_lagr_attribute_map_t *attr_map,
1662{
1663 assert(attr_map->count[0][attr] > 0);
1664
1665 return *((const T *)( (const unsigned char *)particle
1666 + attr_map->displ[0][attr]));
1667}
1668
1669template <typename T>
1670void
1671cs_lagr_particle_attr_set_val(void *particle,
1672 const cs_lagr_attribute_map_t *attr_map,
1674 T value)
1675{
1676 assert(attr_map->count[0][attr] > 0);
1677
1678 *((T *)((unsigned char *)particle + attr_map->displ[0][attr]))
1679 = value;
1680}
1681
1682template <typename T>
1683T
1684cs_lagr_particle_attr_n_get_val(const void *particle,
1685 const cs_lagr_attribute_map_t *attr_map,
1686 int time_id,
1688{
1689 assert(attr_map->count[time_id][attr] > 0);
1690
1691 return *((const T *)( (const unsigned char *)particle
1692 + attr_map->displ[time_id][attr]));
1693}
1694
1695template <typename T>
1696void
1697cs_lagr_particle_attr_n_set_val(void *particle,
1698 const cs_lagr_attribute_map_t *attr_map,
1699 int time_id,
1701 T value)
1702{
1703 assert(attr_map->count[time_id][attr] > 0);
1704
1705 *((T *)( (unsigned char *)particle
1706 + attr_map->displ[time_id][attr])) = value;
1707}
1708
1709#endif
1710
1711/*----------------------------------------------------------------------------*/
1712
1713#endif /* __CS_LAGR_PARTICLE_H__ */
cs_datatype_t
Definition cs_defs.h:300
#define BEGIN_C_DECLS
Definition cs_defs.h:542
double cs_real_t
Floating-point value.
Definition cs_defs.h:342
unsigned cs_gnum_t
global mesh entity number
Definition cs_defs.h:327
#define END_C_DECLS
Definition cs_defs.h:543
int cs_lnum_t
local mesh entity id
Definition cs_defs.h:335
void cs_lagr_particle_attr_in_range(int attr)
Check if a particle attribute is in a valid range.
Definition cs_lagr_particle.cpp:1164
unsigned long long cs_lagr_get_n_g_particles_max(void)
Get global maximum number of particles.
Definition cs_lagr_particle.cpp:1250
cs_lagr_attribute_t
Definition cs_lagr_particle.h:80
@ CS_LAGR_DEPO_TIME
Definition cs_lagr_particle.h:144
@ CS_LAGR_QUATERNION
Definition cs_lagr_particle.h:118
@ CS_LAGR_FLUID_TEMPERATURE
Definition cs_lagr_particle.h:150
@ CS_LAGR_HEIGHT
Definition cs_lagr_particle.h:142
@ CS_LAGR_FOULING_INDEX
Definition cs_lagr_particle.h:130
@ CS_LAGR_COAL_DENSITY
Definition cs_lagr_particle.h:163
@ CS_LAGR_MASS
Definition cs_lagr_particle.h:93
@ CS_LAGR_PRED_VELOCITY
Definition cs_lagr_particle.h:109
@ CS_LAGR_EMISSIVITY
Definition cs_lagr_particle.h:167
@ CS_LAGR_AGGLO_CLASS_ID
Definition cs_lagr_particle.h:174
@ CS_LAGR_NEIGHBOR_FACE_ID
Definition cs_lagr_particle.h:128
@ CS_LAGR_PRED_VELOCITY_SEEN
Definition cs_lagr_particle.h:110
@ CS_LAGR_CLUSTER_NB_PART
Definition cs_lagr_particle.h:143
@ CS_LAGR_RADII
Definition cs_lagr_particle.h:119
@ CS_LAGR_ORIENTATION
Definition cs_lagr_particle.h:117
@ CS_LAGR_TR_TRUNCATE
Definition cs_lagr_particle.h:101
@ CS_LAGR_USER
Definition cs_lagr_particle.h:179
@ CS_LAGR_DISPLACEMENT_NORM
Definition cs_lagr_particle.h:138
@ CS_LAGR_COAL_MASS
Definition cs_lagr_particle.h:156
@ CS_LAGR_VELOCITY
Definition cs_lagr_particle.h:97
@ CS_LAGR_BR_GAUSS
Definition cs_lagr_particle.h:112
@ CS_LAGR_INTERF
Definition cs_lagr_particle.h:127
@ CS_LAGR_MARKO_VALUE
Definition cs_lagr_particle.h:129
@ CS_LAGR_COKE_MASS
Definition cs_lagr_particle.h:157
@ CS_LAGR_CELL_ID
Definition cs_lagr_particle.h:84
@ CS_LAGR_REBOUND_ID
Definition cs_lagr_particle.h:87
@ CS_LAGR_TAUP_AUX
Definition cs_lagr_particle.h:95
@ CS_LAGR_RESIDENCE_TIME
Definition cs_lagr_particle.h:92
@ CS_LAGR_TURB_STATE_1
Definition cs_lagr_particle.h:108
@ CS_LAGR_TEMPERATURE
Definition cs_lagr_particle.h:149
@ CS_LAGR_TR_REPOSITION
Definition cs_lagr_particle.h:102
@ CS_LAGR_CP
Definition cs_lagr_particle.h:151
@ CS_LAGR_RANDOM_VALUE
Definition cs_lagr_particle.h:89
@ CS_LAGR_SHAPE_PARAM
Definition cs_lagr_particle.h:122
@ CS_LAGR_RANK_ID
Definition cs_lagr_particle.h:85
@ CS_LAGR_COAL_ID
Definition cs_lagr_particle.h:162
@ CS_LAGR_INITIAL_DIAMETER
Definition cs_lagr_particle.h:160
@ CS_LAGR_ADHESION_FORCE
Definition cs_lagr_particle.h:136
@ CS_LAGR_STAT_WEIGHT
Definition cs_lagr_particle.h:91
@ CS_LAGR_N_SMALL_ASPERITIES
Definition cs_lagr_particle.h:135
@ CS_LAGR_N_ATTRIBUTES
Definition cs_lagr_particle.h:183
@ CS_LAGR_ADHESION_TORQUE
Definition cs_lagr_particle.h:137
@ CS_LAGR_ANGULAR_VEL
Definition cs_lagr_particle.h:120
@ CS_LAGR_VELOCITY_SEEN
Definition cs_lagr_particle.h:98
@ CS_LAGR_STAT_CLASS
Definition cs_lagr_particle.h:171
@ CS_LAGR_N_LARGE_ASPERITIES
Definition cs_lagr_particle.h:134
@ CS_LAGR_VELOCITY_SEEN_VELOCITY_COV
Definition cs_lagr_particle.h:99
@ CS_LAGR_P_FLAG
Definition cs_lagr_particle.h:82
@ CS_LAGR_SHRINKING_DIAMETER
Definition cs_lagr_particle.h:159
@ CS_LAGR_V_GAUSS
Definition cs_lagr_particle.h:111
@ CS_LAGR_SHAPE
Definition cs_lagr_particle.h:116
@ CS_LAGR_AGGLO_FRACTAL_DIM
Definition cs_lagr_particle.h:175
@ CS_LAGR_YPLUS
Definition cs_lagr_particle.h:126
@ CS_LAGR_WATER_MASS
Definition cs_lagr_particle.h:155
@ CS_LAGR_CONSOL_HEIGHT
Definition cs_lagr_particle.h:145
@ CS_LAGR_DIAMETER
Definition cs_lagr_particle.h:94
@ CS_LAGR_COORDS
Definition cs_lagr_particle.h:96
@ CS_LAGR_EULER
Definition cs_lagr_particle.h:121
static cs_gnum_t cs_lagr_particle_get_gnum_n(const void *particle, const cs_lagr_attribute_map_t *attr_map, int time_id, cs_lagr_attribute_t attr)
Get attribute value of type cs_gnum_t of a given particle at a given time.
Definition cs_lagr_particle.h:1192
static void cs_lagr_particles_set_flag(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int mask)
Set flag value with a selected mask for a given particle in a set.
Definition cs_lagr_particle.h:540
static void * cs_lagr_particle_attr(void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr)
Get pointer to current attribute data of a particle.
Definition cs_lagr_particle.h:976
static void cs_lagr_particles_set_real(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lagr_attribute_t attr, cs_real_t value)
Set attribute value of type cs_real_t of a given particle in a set.
Definition cs_lagr_particle.h:850
static void cs_lagr_particles_unset_flag(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int mask)
Unset flag value with a selected mask for a given particle in a set.
Definition cs_lagr_particle.h:567
static void cs_lagr_particle_set_lnum(void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr, cs_lnum_t value)
Set attribute value of type cs_lnum_t of a given particle.
Definition cs_lagr_particle.h:1117
void cs_lagr_particle_set_dump(const cs_lagr_particle_set_t *particles)
Dump a cs_lagr_particle_set_t structure.
Definition cs_lagr_particle.cpp:1310
static int cs_lagr_particles_get_flag(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int mask)
Get flag value with a selected mask for a given particle in a set.
Definition cs_lagr_particle.h:517
void cs_lagr_particle_attr_initialize(void)
Define particle map based on defined options.
Definition cs_lagr_particle.cpp:660
static void cs_lagr_particles_set_lnum_n(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int time_id, cs_lagr_attribute_t attr, cs_lnum_t value)
Set attribute value of type cs_lnum_t of a given particle in a set at a given time.
Definition cs_lagr_particle.h:672
void cs_lagr_particles_current_to_previous(cs_lagr_particle_set_t *particles, cs_lnum_t particle_id)
Copy current attributes to previous attributes.
Definition cs_lagr_particle.cpp:1282
static cs_gnum_t cs_lagr_particle_get_gnum(const void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr)
Get attribute value of type cs_gnum_t of a given particle in a set.
Definition cs_lagr_particle.h:1167
static const void * cs_lagr_particles_attr_const(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lagr_attribute_t attr)
Get const pointer to current attribute data of a given particle in a set.
Definition cs_lagr_particle.h:439
static void cs_lagr_particles_set_gnum(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lagr_attribute_t attr, cs_gnum_t value)
Set attribute value of type cs_gnum_t of a given particle in a set.
Definition cs_lagr_particle.h:748
static const void * cs_lagr_particle_attr_const(const void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr)
Get const pointer to current attribute data of a particle.
Definition cs_lagr_particle.h:998
cs_lagr_particle_set_t * cs_glob_lagr_particle_set
static const cs_real_t * cs_lagr_particle_source_term_const(void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr)
Get pointer to 2nd order scheme attribute source terms of a particle.
Definition cs_lagr_particle.h:1387
static cs_lnum_t cs_lagr_particles_get_lnum_n(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int time_id, cs_lagr_attribute_t attr)
Get attribute value of type cs_lnum_t of a given particle in a set at a given time.
Definition cs_lagr_particle.h:622
static cs_real_t cs_lagr_particles_get_real_n(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int time_id, cs_lagr_attribute_t attr)
Get attribute value of type cs_real_t of a given particle in a set at a given time.
Definition cs_lagr_particle.h:826
static void * cs_lagr_particles_attr(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lagr_attribute_t attr)
Get pointer to a current attribute of a given particle in a set.
Definition cs_lagr_particle.h:414
static void * cs_lagr_particle_attr_n(void *particle, const cs_lagr_attribute_map_t *attr_map, int time_id, cs_lagr_attribute_t attr)
Get pointer to attribute data of a particle at a given time.
Definition cs_lagr_particle.h:1021
void cs_lagr_set_reallocation_factor(double f)
Set reallocation factor for particle sets.
Definition cs_lagr_particle.cpp:1232
static cs_real_t cs_lagr_particle_get_real(const void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr)
Get attribute value of type cs_real_t of a given particle in a set.
Definition cs_lagr_particle.h:1265
static cs_real_t * cs_lagr_particle_source_term(void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr)
Get pointer to 2nd order scheme attribute source terms of a particle.
Definition cs_lagr_particle.h:1363
static const void * cs_lagr_particle_attr_n_const(const void *particle, const cs_lagr_attribute_map_t *attr_map, int time_id, cs_lagr_attribute_t attr)
Get const pointer to attribute data of a particle at a given time.
Definition cs_lagr_particle.h:1045
static void cs_lagr_particle_set_real(void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr, cs_real_t value)
Set attribute value of type cs_real_t of a given particle.
Definition cs_lagr_particle.h:1313
static cs_gnum_t cs_lagr_particles_get_gnum_n(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int time_id, cs_lagr_attribute_t attr)
Get attribute value of type cs_gnum_t of a given particle in a set at a given time.
Definition cs_lagr_particle.h:724
static void cs_lagr_particles_set_real_n(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int time_id, cs_lagr_attribute_t attr, cs_real_t value)
Set attribute value of type cs_real_t of a given particle in a set at a given time.
Definition cs_lagr_particle.h:876
static cs_gnum_t cs_lagr_particles_get_gnum(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lagr_attribute_t attr)
Get attribute value of type cs_gnum_t of a given particle in a set.
Definition cs_lagr_particle.h:698
cs_lagr_particle_set_t * cs_lagr_get_particle_set(void)
Return pointer to the main cs_lagr_particle_set_t structure.
Definition cs_lagr_particle.cpp:1181
static cs_lnum_t cs_lagr_particle_get_lnum_n(const void *particle, const cs_lagr_attribute_map_t *attr_map, int time_id, cs_lagr_attribute_t attr)
Get attribute value of type cs_lnum_t of a given particle at a given time.
Definition cs_lagr_particle.h:1094
static void cs_lagr_particle_set_real_n(void *particle, const cs_lagr_attribute_map_t *attr_map, int time_id, cs_lagr_attribute_t attr, cs_real_t value)
Set attribute value of type cs_real_t of a given particle at a given time.
Definition cs_lagr_particle.h:1338
static void * cs_lagr_particles_attr_n(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int time_id, cs_lagr_attribute_t attr)
Get pointer to attribute data of a given particle in a set at a given time.
Definition cs_lagr_particle.h:465
static void cs_lagr_particles_set_gnum_n(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int time_id, cs_lagr_attribute_t attr, cs_gnum_t value)
Set attribute value of type cs_gnum_t of a given particle in a set at a given time.
Definition cs_lagr_particle.h:774
static void cs_lagr_particles_set_lnum(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lagr_attribute_t attr, cs_lnum_t value)
Set attribute value of type cs_lnum_t of a given particle in a set.
Definition cs_lagr_particle.h:646
static void cs_lagr_particles_attributes_fill_zero(cs_lagr_particle_set_t *p_set, cs_lnum_t p_id)
Set attribute value of type cs_real_t of a given particle in a set at a given time.
Definition cs_lagr_particle.h:903
static cs_real_t * cs_lagr_particles_source_terms(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lagr_attribute_t attr)
Get pointer to 2nd order scheme source terms for an attribute of a given particle in a set.
Definition cs_lagr_particle.h:925
void cs_lagr_set_n_user_variables(int n_user_variables)
Set number of user particle variables.
Definition cs_lagr_particle.cpp:1338
static const cs_real_t * cs_lagr_particles_source_terms_const(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lagr_attribute_t attr)
Get const pointer to 2nd order scheme source terms an attribute of a given particle in a set.
Definition cs_lagr_particle.h:951
void cs_lagr_particle_finalize(void)
Destroy main particle set and map if they exist.
Definition cs_lagr_particle.cpp:1008
static const void * cs_lagr_particles_attr_n_const(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int time_id, cs_lagr_attribute_t attr)
Get const pointer to attribute data of a given particle in a set at a given time.
Definition cs_lagr_particle.h:492
void cs_lagr_set_n_g_particles_max(unsigned long long n_g_particles_max)
Set global maximum number of particles.
Definition cs_lagr_particle.cpp:1267
void cs_lagr_part_copy(cs_lnum_t dest, cs_lnum_t src)
Copy attributes from one particle to another.
Definition cs_lagr_particle.cpp:1027
int cs_lagr_particle_set_resize(cs_lnum_t n_min_particles)
Resize particle set buffers if needed.
Definition cs_lagr_particle.cpp:1201
void cs_lagr_particle_set_create(void)
Definition cs_lagr_particle.cpp:991
static void cs_lagr_particle_set_gnum_n(void *particle, const cs_lagr_attribute_map_t *attr_map, int time_id, cs_lagr_attribute_t attr, cs_gnum_t value)
Set attribute value of type cs_gnum_t of a given particle at a given time.
Definition cs_lagr_particle.h:1240
int cs_lagr_check_attr_query(const cs_lagr_particle_set_t *particles, cs_lagr_attribute_t attr, cs_datatype_t datatype, int stride, int component_id)
Check that query for a given particle attribute is valid.
Definition cs_lagr_particle.cpp:1099
static void cs_lagr_particle_set_lnum_n(void *particle, const cs_lagr_attribute_map_t *attr_map, int time_id, cs_lagr_attribute_t attr, cs_lnum_t value)
Set attribute value of type cs_lnum_t of a given particle at a given time.
Definition cs_lagr_particle.h:1142
static cs_real_t cs_lagr_particle_get_real_n(const void *particle, const cs_lagr_attribute_map_t *attr_map, int time_id, cs_lagr_attribute_t attr)
Get attribute value of type cs_real_t of a given particle at a given time.
Definition cs_lagr_particle.h:1290
static cs_lnum_t cs_lagr_particle_get_lnum(const void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr)
Get attribute value of type cs_lnum_t of a given particle in a set.
Definition cs_lagr_particle.h:1069
void cs_lagr_get_attr_info(const cs_lagr_particle_set_t *particles, int time_id, cs_lagr_attribute_t attr, size_t *extents, size_t *size, ptrdiff_t *displ, cs_datatype_t *datatype, int *count)
Get data extents for a given particle attribute.
Definition cs_lagr_particle.cpp:1062
static void cs_lagr_particle_set_gnum(void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr, cs_gnum_t value)
Set attribute value of type cs_gnum_t of a given particle.
Definition cs_lagr_particle.h:1215
const char * cs_lagr_attribute_name[]
const cs_lagr_attribute_map_t * cs_lagr_particle_get_attr_map(void)
Return const pointer to the main particle attribute map structure.
Definition cs_lagr_particle.cpp:978
static cs_real_t cs_lagr_particles_get_real(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lagr_attribute_t attr)
Get attribute value of type cs_real_t of a given particle in a set.
Definition cs_lagr_particle.h:800
static cs_lnum_t cs_lagr_particles_get_lnum(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lagr_attribute_t attr)
Get attribute value of type cs_lnum_t of a given particle in a set.
Definition cs_lagr_particle.h:596
Definition cs_lagr_particle.h:190
cs_datatype_t datatype[CS_LAGR_N_ATTRIBUTES]
Definition cs_lagr_particle.h:205
ptrdiff_t(* displ)[CS_LAGR_N_ATTRIBUTES]
Definition cs_lagr_particle.h:210
size_t size[CS_LAGR_N_ATTRIBUTES]
Definition cs_lagr_particle.h:201
int(* count)[CS_LAGR_N_ATTRIBUTES]
Definition cs_lagr_particle.h:207
size_t lb
Definition cs_lagr_particle.h:194
ptrdiff_t * source_term_displ
Definition cs_lagr_particle.h:214
int n_time_vals
Definition cs_lagr_particle.h:198
size_t extents
Definition cs_lagr_particle.h:192
Definition cs_lagr_particle.h:224
cs_real_t weight_merged
Definition cs_lagr_particle.h:238
cs_lnum_t n_part_merged
Definition cs_lagr_particle.h:229
cs_real_t weight
Definition cs_lagr_particle.h:235
cs_lnum_t n_particles
Definition cs_lagr_particle.h:226
cs_lnum_t n_part_new
Definition cs_lagr_particle.h:227
cs_real_t weight_out
Definition cs_lagr_particle.h:237
cs_real_t weight_failed
Definition cs_lagr_particle.h:242
cs_real_t weight_dep
Definition cs_lagr_particle.h:239
unsigned char * p_buffer
Definition cs_lagr_particle.h:248
cs_lnum_t n_failed_part
Definition cs_lagr_particle.h:233
cs_real_t weight_fou
Definition cs_lagr_particle.h:240
cs_lnum_t n_part_resusp
Definition cs_lagr_particle.h:232
cs_real_t weight_new
Definition cs_lagr_particle.h:236
cs_lnum_t n_part_out
Definition cs_lagr_particle.h:228
const cs_lagr_attribute_map_t * p_am
Definition cs_lagr_particle.h:246
cs_lnum_t n_part_fou
Definition cs_lagr_particle.h:231
cs_lnum_t n_part_dep
Definition cs_lagr_particle.h:230
cs_lnum_t n_particles_max
Definition cs_lagr_particle.h:244
cs_real_t weight_resusp
Definition cs_lagr_particle.h:241