9.1
general documentation
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
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
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
106 /* Arrays for 2nd order scheme */
107
108 CS_LAGR_TURB_STATE_1, /* turbulence characteristics of first pass */
109 CS_LAGR_BROWN_STATE_1, /* Brownian characteristics of first pass */
110 CS_LAGR_PRED_VELOCITY, /* 1st step prediction for particle velocity */
111 CS_LAGR_PRED_VELOCITY_SEEN, /* 1st step prediction for relative velocity */
112 CS_LAGR_V_GAUSS, /* 1st step Gaussian variable */
113 CS_LAGR_BR_GAUSS, /* 1st step Brownian motion Gaussian variable */
114
115 /* Non-spherical particles submodel additoinal parameters */
116
125 /* Deposition submodel additional parameters */
126
132
133 /* Resuspension model additional parameters */
134
140
141 /* Clogging model additional parameters */
142
147
148 /* Thermal model additional parameters */
149
153
154 /* Coal combustion additional parameters */
155
159
162
165
166 /* Radiative model additional parameters */
167
169
170 /* Statistical class */
171
173
174 /* Agglomeration/fragmentation model parameters */
177
179 /* User attributes */
180
182
183 /* End of attributes */
184
186
188
190/* ------------------------------------- */
191
192typedef struct {
193
194 size_t extents; /* size (in bytes) of particle
195 structure */
196 size_t lb; /* size (in bytes) of lower
197 bounds of particle data
198 (work area before) */
199
200 int n_time_vals; /* number of time values
201 handled */
202
203 size_t size[CS_LAGR_N_ATTRIBUTES]; /* size (in bytes) of
204 attributes in particle
205 structure for a given
206 time value */
207 cs_datatype_t datatype[CS_LAGR_N_ATTRIBUTES]; /* datatype of associated
208 attributes */
209 int (*count)[CS_LAGR_N_ATTRIBUTES]; /* number of values for each
210 attribute, per associated
211 time_id */
212 ptrdiff_t (*displ)[CS_LAGR_N_ATTRIBUTES]; /* displacement (in bytes) of
213 attributes in particle data,
214 per associated time_id*/
215
216 ptrdiff_t *source_term_displ; /* displacement (in bytes) of
217 source term values
218 for second-order scheme,
219 or NULL */
220
222
223/* Particle set */
224/* ------------ */
225
226typedef struct {
227
228 cs_lnum_t n_particles; /* number of particle in domain */
231 cs_lnum_t n_part_merged; /* number of merged particles */
236
245
247
250 unsigned char *p_buffer;
253
254/*=============================================================================
255 * Global variables
256 *============================================================================*/
257
260extern const char *cs_lagr_attribute_name[];
261
265
266/*============================================================================
267 * Public function prototypes for Fortran API
268 *============================================================================*/
269
270/*============================================================================
271 * Public function prototypes
272 *============================================================================*/
273
274/*----------------------------------------------------------------------------*/
278/*----------------------------------------------------------------------------*/
279
280void
282
283/*----------------------------------------------------------------------------*/
289/*----------------------------------------------------------------------------*/
290
293
294/*----------------------------------------------------------------------------*/
298/*----------------------------------------------------------------------------*/
299
300void
302
303/*----------------------------------------------------------------------------*/
307/*----------------------------------------------------------------------------*/
308
309void
311
312/*----------------------------------------------------------------------------*/
321/*----------------------------------------------------------------------------*/
322
323void
325 cs_lnum_t src);
326
327/*----------------------------------------------------------------------------*/
346/*----------------------------------------------------------------------------*/
347
348void
350 int time_id,
352 size_t *extents,
353 size_t *size,
354 ptrdiff_t *displ,
355 cs_datatype_t *datatype,
356 int *count);
357
358/*----------------------------------------------------------------------------*/
371/*----------------------------------------------------------------------------*/
372
373int
376 cs_datatype_t datatype,
377 int stride,
378 int component_id);
379
380/*----------------------------------------------------------------------------*/
388/*----------------------------------------------------------------------------*/
389
390void
392
393/*----------------------------------------------------------------------------
394 * Return pointer to the main cs_lagr_particle_set_t structure.
395 *
396 * returns:
397 * pointer to current particle set, or NULL
398 *----------------------------------------------------------------------------*/
399
402
403/*----------------------------------------------------------------------------*/
413/*----------------------------------------------------------------------------*/
414
415inline static void *
417 cs_lnum_t particle_id,
419{
420 assert(particle_set->p_am->count[0][attr] > 0);
421
422 return (unsigned char *)particle_set->p_buffer
423 + particle_set->p_am->extents*particle_id
424 + particle_set->p_am->displ[0][attr];
425}
426
427/*----------------------------------------------------------------------------*/
438/*----------------------------------------------------------------------------*/
439
440inline static const void *
442 cs_lnum_t particle_id,
444{
445 assert(particle_set->p_am->count[0][attr] > 0);
446
447 return particle_set->p_buffer
448 + particle_set->p_am->extents*particle_id
449 + particle_set->p_am->displ[0][attr];
450}
451
452/*----------------------------------------------------------------------------*/
464/*----------------------------------------------------------------------------*/
465
466inline static void *
468 cs_lnum_t particle_id,
469 int time_id,
471{
472 assert(particle_set->p_am->count[time_id][attr] > 0);
473
474 return particle_set->p_buffer
475 + particle_set->p_am->extents*particle_id
476 + particle_set->p_am->displ[time_id][attr];
477}
478
479/*----------------------------------------------------------------------------*/
491/*----------------------------------------------------------------------------*/
492
493inline static const void *
495 cs_lnum_t particle_id,
496 int time_id,
498{
499 assert(particle_set->p_am->count[time_id][attr] > 0);
500
501 return particle_set->p_buffer
502 + particle_set->p_am->extents*particle_id
503 + particle_set->p_am->displ[time_id][attr];
504}
505
506/*----------------------------------------------------------------------------*/
516/*----------------------------------------------------------------------------*/
517
518inline static int
520 cs_lnum_t particle_id,
521 int mask)
522{
523 int flag
524 = *((const cs_lnum_t *)( particle_set->p_buffer
525 + particle_set->p_am->extents*particle_id
526 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG]));
527
528 return (flag & mask);
529}
530
531/*----------------------------------------------------------------------------*/
539/*----------------------------------------------------------------------------*/
540
541inline static void
543 cs_lnum_t particle_id,
544 int mask)
545{
546 int flag
547 = *((const cs_lnum_t *)( particle_set->p_buffer
548 + particle_set->p_am->extents*particle_id
549 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG]));
550
551 flag = flag | mask;
552
553 *((cs_lnum_t *)( particle_set->p_buffer
554 + particle_set->p_am->extents*particle_id
555 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG])) = flag;
556}
557
558/*----------------------------------------------------------------------------*/
566/*----------------------------------------------------------------------------*/
567
568inline static void
570 cs_lnum_t particle_id,
571 int mask)
572{
573 int flag
574 = *((const cs_lnum_t *)( particle_set->p_buffer
575 + particle_set->p_am->extents*particle_id
576 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG]));
577
578 flag = (flag | mask) - mask;
579
580 *((cs_lnum_t *)( particle_set->p_buffer
581 + particle_set->p_am->extents*particle_id
582 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG])) = flag;
583}
584
585/*----------------------------------------------------------------------------*/
595/*----------------------------------------------------------------------------*/
596
597inline static cs_lnum_t
599 cs_lnum_t particle_id,
601{
602 assert(particle_set->p_am->count[0][attr] > 0);
603
604 return *((const cs_lnum_t *)( particle_set->p_buffer
605 + particle_set->p_am->extents*particle_id
606 + particle_set->p_am->displ[0][attr]));
607}
608
609/*----------------------------------------------------------------------------*/
621/*----------------------------------------------------------------------------*/
622
623inline static cs_lnum_t
625 cs_lnum_t particle_id,
626 int time_id,
628{
629 assert(particle_set->p_am->count[time_id][attr] > 0);
630
631 return *((const cs_lnum_t *)( particle_set->p_buffer
632 + particle_set->p_am->extents*particle_id
633 + particle_set->p_am->displ[time_id][attr]));
634}
635
636/*----------------------------------------------------------------------------*/
645/*----------------------------------------------------------------------------*/
646
647inline static void
649 cs_lnum_t particle_id,
651 cs_lnum_t value)
652{
653 assert(particle_set->p_am->count[0][attr] > 0);
654
655 *((cs_lnum_t *)( particle_set->p_buffer
656 + particle_set->p_am->extents*particle_id
657 + particle_set->p_am->displ[0][attr])) = value;
658}
659
660/*----------------------------------------------------------------------------*/
671/*----------------------------------------------------------------------------*/
672
673inline static void
675 cs_lnum_t particle_id,
676 int time_id,
678 cs_lnum_t value)
679{
680 assert(particle_set->p_am->count[time_id][attr] > 0);
681
682 *((cs_lnum_t *)( particle_set->p_buffer
683 + particle_set->p_am->extents*particle_id
684 + particle_set->p_am->displ[time_id][attr])) = value;
685}
686
687/*----------------------------------------------------------------------------*/
697/*----------------------------------------------------------------------------*/
698
699inline static cs_gnum_t
701 cs_lnum_t particle_id,
703{
704 assert(particle_set->p_am->count[0][attr] > 0);
705
706 return *((const cs_gnum_t *)( particle_set->p_buffer
707 + particle_set->p_am->extents*particle_id
708 + particle_set->p_am->displ[0][attr]));
709}
710
711/*----------------------------------------------------------------------------*/
723/*----------------------------------------------------------------------------*/
724
725inline static cs_gnum_t
727 cs_lnum_t particle_id,
728 int time_id,
730{
731 assert(particle_set->p_am->count[time_id][attr] > 0);
732
733 return *((const cs_gnum_t *)( particle_set->p_buffer
734 + particle_set->p_am->extents*particle_id
735 + particle_set->p_am->displ[time_id][attr]));
736}
737
738/*----------------------------------------------------------------------------*/
747/*----------------------------------------------------------------------------*/
748
749inline static void
751 cs_lnum_t particle_id,
753 cs_gnum_t value)
754{
755 assert(particle_set->p_am->count[0][attr] > 0);
756
757 *((cs_gnum_t *)( particle_set->p_buffer
758 + particle_set->p_am->extents*particle_id
759 + particle_set->p_am->displ[0][attr])) = value;
760}
761
762/*----------------------------------------------------------------------------*/
773/*----------------------------------------------------------------------------*/
774
775inline static void
777 cs_lnum_t particle_id,
778 int time_id,
780 cs_gnum_t value)
781{
782 assert(particle_set->p_am->count[time_id][attr] > 0);
783
784 *((cs_gnum_t *)( particle_set->p_buffer
785 + particle_set->p_am->extents*particle_id
786 + particle_set->p_am->displ[time_id][attr])) = value;
787}
788
789/*----------------------------------------------------------------------------*/
799/*----------------------------------------------------------------------------*/
800
801inline static cs_real_t
803 cs_lnum_t particle_id,
805{
806 assert(particle_set->p_am->count[0][attr] > 0);
807
808 return *((const cs_real_t *)( particle_set->p_buffer
809 + particle_set->p_am->extents*particle_id
810 + particle_set->p_am->displ[0][attr]));
811}
812
813/*----------------------------------------------------------------------------*/
825/*----------------------------------------------------------------------------*/
826
827inline static cs_real_t
829 cs_lnum_t particle_id,
830 int time_id,
832{
833 assert(particle_set->p_am->count[time_id][attr] > 0);
834
835 return *((const cs_real_t *)( particle_set->p_buffer
836 + particle_set->p_am->extents*particle_id
837 + particle_set->p_am->displ[time_id][attr]));
838}
839
840/*----------------------------------------------------------------------------*/
849/*----------------------------------------------------------------------------*/
850
851inline static void
853 cs_lnum_t particle_id,
855 cs_real_t value)
856{
857 assert(particle_set->p_am->count[0][attr] > 0);
858
859 *((cs_real_t *)( particle_set->p_buffer
860 + particle_set->p_am->extents*particle_id
861 + particle_set->p_am->displ[0][attr])) = value;
862}
863
864/*----------------------------------------------------------------------------*/
875/*----------------------------------------------------------------------------*/
876
877inline static void
879 cs_lnum_t particle_id,
880 int time_id,
882 cs_real_t value)
883{
884 assert(particle_set->p_am->count[time_id][attr] > 0);
885
886 *((cs_real_t *)( particle_set->p_buffer
887 + particle_set->p_am->extents*particle_id
888 + particle_set->p_am->displ[time_id][attr])) = value;
889}
890
891/*----------------------------------------------------------------------------*/
902/*----------------------------------------------------------------------------*/
903
904inline static void
906 cs_lnum_t p_id)
907{
908 memset(p_set->p_buffer + p_set->p_am->extents * p_id,
909 0,
910 p_set->p_am->extents);
911}
912
913/*----------------------------------------------------------------------------*/
924/*----------------------------------------------------------------------------*/
925
926inline static cs_real_t *
928 cs_lnum_t particle_id,
930{
931 assert(particle_set->p_am->source_term_displ != NULL);
932 assert(particle_set->p_am->source_term_displ[attr] >= 0);
933
934 return (cs_real_t *)( (unsigned char *)particle_set->p_buffer
935 + particle_set->p_am->extents*particle_id
936 + particle_set->p_am->source_term_displ[attr]);
937}
938
939/*----------------------------------------------------------------------------*/
950/*----------------------------------------------------------------------------*/
951
952inline static const cs_real_t *
954 cs_lnum_t particle_id,
956{
957 assert(particle_set->p_am->source_term_displ != NULL);
958 assert(particle_set->p_am->source_term_displ[attr] >= 0);
959
960 return (const cs_real_t *)( (unsigned char *)particle_set->p_buffer
961 + particle_set->p_am->extents*particle_id
962 + particle_set->p_am->source_term_displ[attr]);
963}
964
965/*----------------------------------------------------------------------------*/
975/*----------------------------------------------------------------------------*/
976
977inline static void *
979 const cs_lagr_attribute_map_t *attr_map,
981{
982 assert(attr_map->count[0][attr] > 0);
983
984 return (unsigned char *)particle + attr_map->displ[0][attr];
985}
986
987/*----------------------------------------------------------------------------*/
997/*----------------------------------------------------------------------------*/
998
999inline static const void *
1000cs_lagr_particle_attr_const(const void *particle,
1001 const cs_lagr_attribute_map_t *attr_map,
1003{
1004 assert(attr_map->count[0][attr] > 0);
1005
1006 return (const unsigned char *)particle + attr_map->displ[0][attr];
1007}
1008
1009/*----------------------------------------------------------------------------*/
1020/*----------------------------------------------------------------------------*/
1021
1022inline static void *
1024 const cs_lagr_attribute_map_t *attr_map,
1025 int time_id,
1027{
1028 assert(attr_map->count[time_id][attr] > 0);
1029
1030 return (unsigned char *)particle + attr_map->displ[time_id][attr];
1031}
1032
1033/*----------------------------------------------------------------------------*/
1044/*----------------------------------------------------------------------------*/
1045
1046inline static const void *
1048 const cs_lagr_attribute_map_t *attr_map,
1049 int time_id,
1051{
1052 assert(attr_map->count[time_id][attr] > 0);
1053
1054 return (const unsigned char *)particle
1055 + attr_map->displ[time_id][attr];
1056}
1057
1058/*----------------------------------------------------------------------------*/
1068/*----------------------------------------------------------------------------*/
1069
1070inline static cs_lnum_t
1071cs_lagr_particle_get_lnum(const void *particle,
1072 const cs_lagr_attribute_map_t *attr_map,
1074{
1075 assert(attr_map->count[0][attr] > 0);
1076
1077 return *((const cs_lnum_t *)( (const unsigned char *)particle
1078 + attr_map->displ[0][attr]));
1079}
1080
1081/*----------------------------------------------------------------------------*/
1093/*----------------------------------------------------------------------------*/
1094
1095inline static cs_lnum_t
1096cs_lagr_particle_get_lnum_n(const void *particle,
1097 const cs_lagr_attribute_map_t *attr_map,
1098 int time_id,
1100{
1101 assert(attr_map->count[time_id][attr] > 0);
1102
1103 return *((const cs_lnum_t *)( (const unsigned char *)particle
1104 + attr_map->displ[time_id][attr]));
1105}
1106
1107/*----------------------------------------------------------------------------*/
1116 /*----------------------------------------------------------------------------*/
1117
1118inline static void
1120 const cs_lagr_attribute_map_t *attr_map,
1122 cs_lnum_t value)
1123{
1124 assert(attr_map->count[0][attr] > 0);
1125
1126 *((cs_lnum_t *)((unsigned char *)particle + attr_map->displ[0][attr]))
1127 = value;
1128}
1129
1130/*----------------------------------------------------------------------------*/
1141 /*----------------------------------------------------------------------------*/
1142
1143inline static void
1145 const cs_lagr_attribute_map_t *attr_map,
1146 int time_id,
1148 cs_lnum_t value)
1149{
1150 assert(attr_map->count[time_id][attr] > 0);
1151
1152 *((cs_lnum_t *)( (unsigned char *)particle
1153 + attr_map->displ[time_id][attr])) = value;
1154}
1155
1156/*----------------------------------------------------------------------------*/
1166/*----------------------------------------------------------------------------*/
1167
1168inline static cs_gnum_t
1169cs_lagr_particle_get_gnum(const void *particle,
1170 const cs_lagr_attribute_map_t *attr_map,
1172{
1173 assert(attr_map->count[0][attr] > 0);
1174
1175 return *((const cs_gnum_t *)( (const unsigned char *)particle
1176 + attr_map->displ[0][attr]));
1177}
1178
1179/*----------------------------------------------------------------------------*/
1191/*----------------------------------------------------------------------------*/
1192
1193inline static cs_gnum_t
1194cs_lagr_particle_get_gnum_n(const void *particle,
1195 const cs_lagr_attribute_map_t *attr_map,
1196 int time_id,
1198{
1199 assert(attr_map->count[time_id][attr] > 0);
1200
1201 return *((const cs_gnum_t *)( (const unsigned char *)particle
1202 + attr_map->displ[time_id][attr]));
1203}
1204
1205/*----------------------------------------------------------------------------*/
1214 /*----------------------------------------------------------------------------*/
1215
1216inline static void
1218 const cs_lagr_attribute_map_t *attr_map,
1220 cs_gnum_t value)
1221{
1222 assert(attr_map->count[0][attr] > 0);
1223
1224 *((cs_gnum_t *)((unsigned char *)particle + attr_map->displ[0][attr]))
1225 = value;
1226}
1227
1228/*----------------------------------------------------------------------------*/
1239 /*----------------------------------------------------------------------------*/
1240
1241inline static void
1243 const cs_lagr_attribute_map_t *attr_map,
1244 int time_id,
1246 cs_gnum_t value)
1247{
1248 assert(attr_map->count[time_id][attr] > 0);
1249
1250 *((cs_gnum_t *)( (unsigned char *)particle
1251 + attr_map->displ[time_id][attr])) = value;
1252}
1253
1254/*----------------------------------------------------------------------------*/
1264/*----------------------------------------------------------------------------*/
1265
1266inline static cs_real_t
1267cs_lagr_particle_get_real(const void *particle,
1268 const cs_lagr_attribute_map_t *attr_map,
1270{
1271 assert(attr_map->count[0][attr] > 0);
1272
1273 return *((const cs_real_t *)( (const unsigned char *)particle
1274 + attr_map->displ[0][attr]));
1275}
1276
1277/*----------------------------------------------------------------------------*/
1289/*----------------------------------------------------------------------------*/
1290
1291inline static cs_real_t
1292cs_lagr_particle_get_real_n(const void *particle,
1293 const cs_lagr_attribute_map_t *attr_map,
1294 int time_id,
1296{
1297 assert(attr_map->count[time_id][attr] > 0);
1298
1299 return *((const cs_real_t *)( (const unsigned char *)particle
1300 + attr_map->displ[time_id][attr]));
1301}
1302
1303/*----------------------------------------------------------------------------*/
1312 /*----------------------------------------------------------------------------*/
1313
1314inline static void
1316 const cs_lagr_attribute_map_t *attr_map,
1318 cs_real_t value)
1319{
1320 assert(attr_map->count[0][attr] > 0);
1321
1322 *((cs_real_t *)((unsigned char *)particle + attr_map->displ[0][attr]))
1323 = value;
1324}
1325
1326/*----------------------------------------------------------------------------*/
1337 /*----------------------------------------------------------------------------*/
1338
1339inline static void
1341 const cs_lagr_attribute_map_t *attr_map,
1342 int time_id,
1344 cs_real_t value)
1345{
1346 assert(attr_map->count[time_id][attr] > 0);
1347
1348 *((cs_real_t *)( (unsigned char *)particle
1349 + attr_map->displ[time_id][attr])) = value;
1350}
1351
1352/*----------------------------------------------------------------------------*/
1362/*----------------------------------------------------------------------------*/
1363
1364inline static cs_real_t *
1366 const cs_lagr_attribute_map_t *attr_map,
1368{
1369 assert(attr_map->source_term_displ != NULL);
1370 assert(attr_map->source_term_displ[attr] >= 0);
1371
1372 return (cs_real_t *)( (unsigned char *)particle
1373 + attr_map->source_term_displ[attr]);
1374}
1375
1376/*----------------------------------------------------------------------------*/
1386/*----------------------------------------------------------------------------*/
1387
1388inline static const cs_real_t *
1390 const cs_lagr_attribute_map_t *attr_map,
1392{
1393 assert(attr_map->source_term_displ != NULL);
1394 assert(attr_map->source_term_displ[attr] >= 0);
1395
1396 return (const cs_real_t *)( (unsigned char *)particle
1397 + attr_map->source_term_displ[attr]);
1398}
1399
1400/*----------------------------------------------------------------------------
1401 * Resize particle set buffers if needed.
1402 *
1403 * parameters:
1404 * n_particles <-- minumum number of particles required
1405 *
1406 *
1407 * returns:
1408 * 1 if resizing was required, 0 otherwise
1409 *----------------------------------------------------------------------------*/
1410
1411int
1412cs_lagr_particle_set_resize(cs_lnum_t n_min_particles);
1413
1414/*----------------------------------------------------------------------------
1415 * Set reallocation factor for particle sets.
1416 *
1417 * This factor determines the multiplier used for reallocations when
1418 * the particle set's buffers are too small to handle the new number of
1419 * particles.
1420 *
1421 * parameters:
1422 * f <-- reallocation size multiplier
1423 *----------------------------------------------------------------------------*/
1424
1425void
1427
1428/*----------------------------------------------------------------------------*/
1437/*----------------------------------------------------------------------------*/
1438
1439unsigned long long
1441
1442/*----------------------------------------------------------------------------*/
1451/*----------------------------------------------------------------------------*/
1452
1453void
1454cs_lagr_set_n_g_particles_max(unsigned long long n_g_particles_max);
1455
1456/*----------------------------------------------------------------------------*/
1463/*----------------------------------------------------------------------------*/
1464
1465void
1467 cs_lnum_t particle_id);
1468
1469/*----------------------------------------------------------------------------*/
1475/*----------------------------------------------------------------------------*/
1476
1477void
1479
1480/*----------------------------------------------------------------------------*/
1486/*----------------------------------------------------------------------------*/
1487
1488void
1489cs_lagr_set_n_user_variables(int n_user_variables);
1490
1491/*----------------------------------------------------------------------------*/
1492
1494
1495/*============================================================================
1496 * Public C++ templates
1497 *============================================================================*/
1498
1499#if defined(__cplusplus)
1500
1501template <typename T>
1502T *
1504 cs_lnum_t particle_id,
1506{
1507 assert(particle_set->p_am->count[0][attr] > 0);
1508
1509 return (T *)( particle_set->p_buffer
1510 + particle_set->p_am->extents*particle_id
1511 + particle_set->p_am->displ[0][attr]);
1512}
1513
1514template <typename T>
1515const T *
1517 cs_lnum_t particle_id,
1519{
1520 assert(particle_set->p_am->count[0][attr] > 0);
1521
1522 return (const T *)( particle_set->p_buffer
1523 + particle_set->p_am->extents*particle_id
1524 + particle_set->p_am->displ[0][attr]);
1525}
1526
1527template <typename T>
1528T *
1530 cs_lnum_t particle_id,
1531 int time_id,
1533{
1534 assert(particle_set->p_am->count[time_id][attr] > 0);
1535
1536 return (T *)( particle_set->p_buffer
1537 + particle_set->p_am->extents*particle_id
1538 + particle_set->p_am->displ[time_id][attr]);
1539}
1540
1541template <typename T>
1542const T *
1544 cs_lnum_t particle_id,
1545 int time_id,
1547{
1548 assert(particle_set->p_am->count[time_id][attr] > 0);
1549
1550 return (const T *)( particle_set->p_buffer
1551 + particle_set->p_am->extents*particle_id
1552 + particle_set->p_am->displ[time_id][attr]);
1553}
1554
1555template <typename T>
1556T
1558 cs_lnum_t particle_id,
1560{
1561 assert(particle_set->p_am->count[0][attr] > 0);
1562
1563 return *(T *)( particle_set->p_buffer
1564 + particle_set->p_am->extents*particle_id
1565 + particle_set->p_am->displ[0][attr]);
1566}
1567
1568template <typename T>
1569void
1571 cs_lnum_t particle_id,
1573 T value)
1574{
1575 assert(particle_set->p_am->count[0][attr] > 0);
1576
1577 *(T *)( particle_set->p_buffer
1578 + particle_set->p_am->extents*particle_id
1579 + particle_set->p_am->displ[0][attr]) = value;
1580}
1581
1582template <typename T>
1583T
1585 cs_lnum_t particle_id,
1586 int time_id,
1588{
1589 assert(particle_set->p_am->count[time_id][attr] > 0);
1590
1591 return *(T *)( particle_set->p_buffer
1592 + particle_set->p_am->extents*particle_id
1593 + particle_set->p_am->displ[time_id][attr]);
1594}
1595
1596template <typename T>
1597void
1599 cs_lnum_t particle_id,
1600 int time_id,
1602 T value)
1603{
1604 assert(particle_set->p_am->count[time_id][attr] > 0);
1605
1606 *(T *)( particle_set->p_buffer
1607 + particle_set->p_am->extents*particle_id
1608 + particle_set->p_am->displ[time_id][attr]) = value;
1609}
1610
1611template <typename T>
1612T *
1614 const cs_lagr_attribute_map_t *attr_map,
1616{
1617 assert(attr_map->count[0][attr] > 0);
1618
1619 return (T *)((unsigned char *)particle + attr_map->displ[0][attr]);
1620}
1621
1622template <typename T>
1623const T *
1625 const cs_lagr_attribute_map_t *attr_map,
1627{
1628 assert(attr_map->count[0][attr] > 0);
1629
1630 return (const T *)( (const unsigned char *)particle
1631 + attr_map->displ[0][attr]);
1632}
1633
1634template <typename T>
1635T *
1637 const cs_lagr_attribute_map_t *attr_map,
1638 int time_id,
1640{
1641 assert(attr_map->count[time_id][attr] > 0);
1642
1643 return (T *)((unsigned char *)particle + attr_map->displ[time_id][attr]);
1644}
1645
1646template <typename T>
1647const T *
1649 const cs_lagr_attribute_map_t *attr_map,
1650 int time_id,
1652{
1653 assert(attr_map->count[time_id][attr] > 0);
1654
1655 return (const T *)( (const unsigned char *)particle
1656 + attr_map->displ[time_id][attr]);
1657}
1658
1659template <typename T>
1660T
1662 const cs_lagr_attribute_map_t *attr_map,
1664{
1665 assert(attr_map->count[0][attr] > 0);
1666
1667 return *((const T *)( (const unsigned char *)particle
1668 + attr_map->displ[0][attr]));
1669}
1670
1671template <typename T>
1672void
1674 const cs_lagr_attribute_map_t *attr_map,
1676 T value)
1677{
1678 assert(attr_map->count[0][attr] > 0);
1679
1680 *((T *)((unsigned char *)particle + attr_map->displ[0][attr]))
1681 = value;
1682}
1683
1684template <typename T>
1685T
1687 const cs_lagr_attribute_map_t *attr_map,
1688 int time_id,
1690{
1691 assert(attr_map->count[time_id][attr] > 0);
1692
1693 return *((const T *)( (const unsigned char *)particle
1694 + attr_map->displ[time_id][attr]));
1695}
1696
1697template <typename T>
1698void
1700 const cs_lagr_attribute_map_t *attr_map,
1701 int time_id,
1703 T value)
1704{
1705 assert(attr_map->count[time_id][attr] > 0);
1706
1707 *((T *)( (unsigned char *)particle
1708 + attr_map->displ[time_id][attr])) = value;
1709}
1710
1711#endif
1712
1713/*----------------------------------------------------------------------------*/
1714
1715#endif /* __CS_LAGR_PARTICLE_H__ */
cs_datatype_t
Definition: cs_defs.h:315
#define BEGIN_C_DECLS
Definition: cs_defs.h:554
double cs_real_t
Floating-point value.
Definition: cs_defs.h:357
unsigned cs_gnum_t
global mesh entity number
Definition: cs_defs.h:342
#define END_C_DECLS
Definition: cs_defs.h:555
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:350
void cs_lagr_particle_attr_in_range(int attr)
Check if a particle attribute is in a valid range.
Definition: cs_lagr_particle.cpp:1174
unsigned long long cs_lagr_get_n_g_particles_max(void)
Get global maximum number of particles.
Definition: cs_lagr_particle.cpp:1260
cs_lagr_attribute_t
Definition: cs_lagr_particle.h:80
@ CS_LAGR_DEPO_TIME
Definition: cs_lagr_particle.h:145
@ CS_LAGR_QUATERNION
Definition: cs_lagr_particle.h:119
@ CS_LAGR_HEIGHT
Definition: cs_lagr_particle.h:143
@ CS_LAGR_FOULING_INDEX
Definition: cs_lagr_particle.h:131
@ CS_LAGR_COAL_DENSITY
Definition: cs_lagr_particle.h:164
@ CS_LAGR_MASS
Definition: cs_lagr_particle.h:93
@ CS_LAGR_PRED_VELOCITY
Definition: cs_lagr_particle.h:110
@ CS_LAGR_EMISSIVITY
Definition: cs_lagr_particle.h:168
@ CS_LAGR_AGGLO_CLASS_ID
Definition: cs_lagr_particle.h:175
@ CS_LAGR_NEIGHBOR_FACE_ID
Definition: cs_lagr_particle.h:129
@ CS_LAGR_PRED_VELOCITY_SEEN
Definition: cs_lagr_particle.h:111
@ CS_LAGR_CLUSTER_NB_PART
Definition: cs_lagr_particle.h:144
@ CS_LAGR_RADII
Definition: cs_lagr_particle.h:120
@ CS_LAGR_ORIENTATION
Definition: cs_lagr_particle.h:118
@ CS_LAGR_TR_TRUNCATE
Definition: cs_lagr_particle.h:101
@ CS_LAGR_USER
Definition: cs_lagr_particle.h:181
@ CS_LAGR_DISPLACEMENT_NORM
Definition: cs_lagr_particle.h:139
@ CS_LAGR_COAL_MASS
Definition: cs_lagr_particle.h:157
@ CS_LAGR_VELOCITY
Definition: cs_lagr_particle.h:97
@ CS_LAGR_BR_GAUSS
Definition: cs_lagr_particle.h:113
@ CS_LAGR_INTERF
Definition: cs_lagr_particle.h:128
@ CS_LAGR_MARKO_VALUE
Definition: cs_lagr_particle.h:130
@ CS_LAGR_COKE_MASS
Definition: cs_lagr_particle.h:158
@ 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_REMAINING_INTEG_TIME
Definition: cs_lagr_particle.h:178
@ CS_LAGR_TURB_STATE_1
Definition: cs_lagr_particle.h:108
@ CS_LAGR_TEMPERATURE
Definition: cs_lagr_particle.h:150
@ CS_LAGR_TR_REPOSITION
Definition: cs_lagr_particle.h:102
@ CS_LAGR_CP
Definition: cs_lagr_particle.h:152
@ CS_LAGR_RANDOM_VALUE
Definition: cs_lagr_particle.h:89
@ CS_LAGR_SHAPE_PARAM
Definition: cs_lagr_particle.h:123
@ CS_LAGR_RANK_ID
Definition: cs_lagr_particle.h:85
@ CS_LAGR_COAL_ID
Definition: cs_lagr_particle.h:163
@ CS_LAGR_INITIAL_DIAMETER
Definition: cs_lagr_particle.h:161
@ CS_LAGR_ADHESION_FORCE
Definition: cs_lagr_particle.h:137
@ CS_LAGR_STAT_WEIGHT
Definition: cs_lagr_particle.h:91
@ CS_LAGR_N_SMALL_ASPERITIES
Definition: cs_lagr_particle.h:136
@ CS_LAGR_N_ATTRIBUTES
Definition: cs_lagr_particle.h:185
@ CS_LAGR_ADHESION_TORQUE
Definition: cs_lagr_particle.h:138
@ CS_LAGR_BROWN_STATE_1
Definition: cs_lagr_particle.h:109
@ CS_LAGR_ANGULAR_VEL
Definition: cs_lagr_particle.h:121
@ CS_LAGR_VELOCITY_SEEN
Definition: cs_lagr_particle.h:98
@ CS_LAGR_STAT_CLASS
Definition: cs_lagr_particle.h:172
@ CS_LAGR_N_LARGE_ASPERITIES
Definition: cs_lagr_particle.h:135
@ 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:160
@ CS_LAGR_TEMPERATURE_SEEN
Definition: cs_lagr_particle.h:151
@ CS_LAGR_V_GAUSS
Definition: cs_lagr_particle.h:112
@ CS_LAGR_SHAPE
Definition: cs_lagr_particle.h:117
@ CS_LAGR_AGGLO_FRACTAL_DIM
Definition: cs_lagr_particle.h:176
@ CS_LAGR_YPLUS
Definition: cs_lagr_particle.h:127
@ CS_LAGR_WATER_MASS
Definition: cs_lagr_particle.h:156
@ CS_LAGR_CONSOL_HEIGHT
Definition: cs_lagr_particle.h:146
@ 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:122
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:1194
T * cs_lagr_particles_attr_get_ptr(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lagr_attribute_t attr)
Definition: cs_lagr_particle.h:1503
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:542
T cs_lagr_particles_attr_n_get_val(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int time_id, cs_lagr_attribute_t attr)
Definition: cs_lagr_particle.h:1584
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:978
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:852
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:569
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:1119
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:1320
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:519
void cs_lagr_particle_attr_initialize(void)
Define particle map based on defined options.
Definition: cs_lagr_particle.cpp:664
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:674
const T * cs_lagr_particle_attr_get_const_ptr(const void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr)
Definition: cs_lagr_particle.h:1624
T * cs_lagr_particle_attr_get_ptr(void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr)
Definition: cs_lagr_particle.h:1613
T * cs_lagr_particles_attr_n_get_ptr(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int time_id, cs_lagr_attribute_t attr)
Definition: cs_lagr_particle.h:1529
const T * cs_lagr_particles_attr_n_get_const_ptr(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int time_id, cs_lagr_attribute_t attr)
Definition: cs_lagr_particle.h:1543
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:1292
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:1169
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:441
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:750
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:1000
cs_lagr_particle_set_t * cs_glob_lagr_particle_set
const T * cs_lagr_particle_attr_n_get_const_ptr(const void *particle, const cs_lagr_attribute_map_t *attr_map, int time_id, cs_lagr_attribute_t attr)
Definition: cs_lagr_particle.h:1648
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:1389
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:624
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:828
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:416
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:1023
void cs_lagr_set_reallocation_factor(double f)
Set reallocation factor for particle sets.
Definition: cs_lagr_particle.cpp:1242
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:1267
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:1365
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:1047
T cs_lagr_particle_attr_get_val(const void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr)
Definition: cs_lagr_particle.h:1661
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:1315
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:726
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:878
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:700
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:1191
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:1096
T cs_lagr_particles_attr_get_val(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lagr_attribute_t attr)
Definition: cs_lagr_particle.h:1557
const T * cs_lagr_particles_attr_get_const_ptr(const cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lagr_attribute_t attr)
Definition: cs_lagr_particle.h:1516
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:1340
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:467
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:776
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:648
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:905
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:927
T * cs_lagr_particle_attr_n_get_ptr(void *particle, const cs_lagr_attribute_map_t *attr_map, int time_id, cs_lagr_attribute_t attr)
Definition: cs_lagr_particle.h:1636
void cs_lagr_set_n_user_variables(int n_user_variables)
Set number of user particle variables.
Definition: cs_lagr_particle.cpp:1348
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:953
void cs_lagr_particle_attr_n_set_val(void *particle, const cs_lagr_attribute_map_t *attr_map, int time_id, cs_lagr_attribute_t attr, T value)
Definition: cs_lagr_particle.h:1699
void cs_lagr_particle_finalize(void)
Destroy main particle set and map if they exist.
Definition: cs_lagr_particle.cpp:1018
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:494
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:1277
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:1037
int cs_lagr_particle_set_resize(cs_lnum_t n_min_particles)
Resize particle set buffers if needed.
Definition: cs_lagr_particle.cpp:1211
void cs_lagr_particle_set_create(void)
Definition: cs_lagr_particle.cpp:1001
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:1242
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:1109
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:1144
T cs_lagr_particle_attr_n_get_val(const void *particle, const cs_lagr_attribute_map_t *attr_map, int time_id, cs_lagr_attribute_t attr)
Definition: cs_lagr_particle.h:1686
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:1292
void cs_lagr_particle_attr_set_val(void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr, T value)
Definition: cs_lagr_particle.h:1673
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:1071
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:1072
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:1217
void cs_lagr_particles_attr_n_set_val(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, int time_id, cs_lagr_attribute_t attr, T value)
Definition: cs_lagr_particle.h:1598
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:988
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:802
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:598
void cs_lagr_particles_attr_set_val(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lagr_attribute_t attr, T value)
Definition: cs_lagr_particle.h:1570
Definition: cs_lagr_particle.h:192
ptrdiff_t(* displ)[CS_LAGR_N_ATTRIBUTES]
Definition: cs_lagr_particle.h:212
int(* count)[CS_LAGR_N_ATTRIBUTES]
Definition: cs_lagr_particle.h:209
size_t lb
Definition: cs_lagr_particle.h:196
ptrdiff_t * source_term_displ
Definition: cs_lagr_particle.h:216
int n_time_vals
Definition: cs_lagr_particle.h:200
size_t extents
Definition: cs_lagr_particle.h:194
Definition: cs_lagr_particle.h:226
cs_real_t weight_merged
Definition: cs_lagr_particle.h:240
cs_lnum_t n_part_merged
Definition: cs_lagr_particle.h:231
cs_real_t weight
Definition: cs_lagr_particle.h:237
cs_lnum_t n_particles
Definition: cs_lagr_particle.h:228
cs_lnum_t n_part_new
Definition: cs_lagr_particle.h:229
cs_real_t weight_out
Definition: cs_lagr_particle.h:239
cs_real_t weight_failed
Definition: cs_lagr_particle.h:244
cs_real_t weight_dep
Definition: cs_lagr_particle.h:241
unsigned char * p_buffer
Definition: cs_lagr_particle.h:250
cs_lnum_t n_failed_part
Definition: cs_lagr_particle.h:235
cs_real_t weight_fou
Definition: cs_lagr_particle.h:242
cs_lnum_t n_part_resusp
Definition: cs_lagr_particle.h:234
cs_real_t weight_new
Definition: cs_lagr_particle.h:238
cs_lnum_t n_part_out
Definition: cs_lagr_particle.h:230
const cs_lagr_attribute_map_t * p_am
Definition: cs_lagr_particle.h:248
cs_lnum_t n_part_fou
Definition: cs_lagr_particle.h:233
cs_lnum_t n_part_dep
Definition: cs_lagr_particle.h:232
cs_lnum_t n_particles_max
Definition: cs_lagr_particle.h:246
cs_real_t weight_resusp
Definition: cs_lagr_particle.h:243