9.2
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-2026 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 * Macro definitions
37 *============================================================================*/
38
39/*=============================================================================
40 * Macro definitions
41 *============================================================================*/
42
48#define CS_LAGR_PART_TO_DELETE (1 << 0)
49
51#define CS_LAGR_PART_FIXED (1 << 1)
52
54#define CS_LAGR_PART_DEPOSITED (1 << 2)
55
57#define CS_LAGR_PART_ROLLING (1 << 3)
58
60#define CS_LAGR_PART_IMPOSED_MOTION (1 << 4)
61
65#define CS_LAGR_PART_DEPOSITION_FLAGS \
66 ( CS_LAGR_PART_TO_DELETE | CS_LAGR_PART_FIXED | CS_LAGR_PART_DEPOSITED \
67 | CS_LAGR_PART_ROLLING | CS_LAGR_PART_IMPOSED_MOTION)
68
69/*============================================================================
70 * Type definitions
71 *============================================================================*/
72
74/* ------------------------------- */
75
76typedef enum {
77
102 /* Arrays for 2nd order scheme */
103
104 CS_LAGR_TURB_STATE_1, /* turbulence characteristics of first pass */
105 CS_LAGR_BROWN_STATE_1, /* Brownian characteristics of first pass */
106 CS_LAGR_PRED_VELOCITY, /* 1st step prediction for particle velocity */
107 CS_LAGR_PRED_VELOCITY_SEEN, /* 1st step prediction for relative velocity */
108 CS_LAGR_V_GAUSS, /* 1st step Gaussian variable */
109 CS_LAGR_BR_GAUSS, /* 1st step Brownian motion Gaussian variable */
110
111 /* Non-spherical particles submodel additoinal parameters */
112
121 /* Deposition submodel additional parameters */
122
128
129 /* Resuspension model additional parameters */
130
136
137 /* Clogging model additional parameters */
138
143
144 /* Thermal model additional parameters */
145
149
150 /* Coal combustion additional parameters */
151
155
158
161
162 /* Radiative model additional parameters */
163
165
166 /* Statistical class */
167
169
170 /* Agglomeration/fragmentation model parameters */
173
175 /* User attributes */
176
178
179 /* End of attributes */
180
182
184
186/* ------------------------------------- */
187
189
190 size_t extents; /* size (in bytes) of particle
191 structure */
192 size_t lb; /* size (in bytes) of lower
193 bounds of particle data
194 (work area before) */
195
196 int n_time_vals; /* number of time values
197 handled */
198
199
200 size_t size[CS_LAGR_N_ATTRIBUTES]; /* size (in bytes) of
201 attributes in particle
202 structure for a given
203 time value */
204 cs_datatype_t datatype[CS_LAGR_N_ATTRIBUTES]; /* datatype of associated
205 attributes */
206 int (*count)[CS_LAGR_N_ATTRIBUTES]; /* number of values for each
207 attribute, per associated
208 time_id */
209 ptrdiff_t (*displ)[CS_LAGR_N_ATTRIBUTES]; /* displacement (in bytes) of
210 attributes in particle data,
211 per associated time_id*/
212
213 ptrdiff_t *source_term_displ; /* displacement (in bytes) of
214 source term values
215 for second-order scheme,
216 or NULL */
217
218#if defined(__cplusplus)
219
220 /*--------------------------------------------------------------------------*/
224 /*--------------------------------------------------------------------------*/
225
228
229 /*--------------------------------------------------------------------------*/
233 /*--------------------------------------------------------------------------*/
234
237 (
238 cs_lnum_t attr_keys[CS_LAGR_N_ATTRIBUTES][3]
239 );
240
241 /*--------------------------------------------------------------------------*/
245 /*--------------------------------------------------------------------------*/
246
249 (
250 const cs_lagr_attribute_map_t& other
251 );
252
253 /*--------------------------------------------------------------------------*/
257 /*--------------------------------------------------------------------------*/
258
261 (
263 );
264
265 /*--------------------------------------------------------------------------*/
269 /*--------------------------------------------------------------------------*/
270
273
274 /*--------------------------------------------------------------------------*/
278 /*--------------------------------------------------------------------------*/
279
282
283 /* Define particle set as a friend which can access private members */
285private:
286
287 /*--------------------------------------------------------------------------*/
291 /*--------------------------------------------------------------------------*/
292
294 void
295 swap_members_
296 (
299 );
300
301 /*--------------------------------------------------------------------------*/
305 /*--------------------------------------------------------------------------*/
306
308 void
309 private_to_public_();
310
311 /* Private members */
312
313 cs_array_2d<int> _count;
315 cs_array<ptrdiff_t> _source_term_displ;
316
317#endif
319
320
321/* Particle set */
322/* ------------ */
323
325
326 cs_lnum_t n_particles; /* number of particle in domain */
329 cs_lnum_t n_part_merged; /* number of merged particles */
334
343
345
348 unsigned char *p_buffer;
350#if defined(__cplusplus)
351
352 /*--------------------------------------------------------------------------*/
356 /*--------------------------------------------------------------------------*/
357
359
360 /*--------------------------------------------------------------------------*/
364 /*--------------------------------------------------------------------------*/
365
367 (
368 cs_lnum_t n_part_max,
369 const cs_lagr_attribute_map_t *map
370 );
371
372 /*--------------------------------------------------------------------------*/
376 /*--------------------------------------------------------------------------*/
377
379 (
380 const cs_lagr_particle_set_t& other
381 );
382
383 /*--------------------------------------------------------------------------*/
387 /*--------------------------------------------------------------------------*/
388
391 (
393 );
394
395 /*--------------------------------------------------------------------------*/
399 /*--------------------------------------------------------------------------*/
400
402
403 /*--------------------------------------------------------------------------*/
407 /*--------------------------------------------------------------------------*/
408
411
412 /*--------------------------------------------------------------------------*/
416 /*--------------------------------------------------------------------------*/
417
419 int
420 resize
421 (
422 const cs_lnum_t n_particles_max_min
423 );
424
425 /*--------------------------------------------------------------------------*/
433 /*--------------------------------------------------------------------------*/
434
435 template <typename T>
437 inline
438 T&
440 (
441 cs_lnum_t particle_id,
443 )
444 {
445 assert(_p_am._count(0,attr) > 0);
446 return get_ptr_<T>(particle_id, 0, attr)[0];
447 }
448
449 /*--------------------------------------------------------------------------*/
458 /*--------------------------------------------------------------------------*/
459
460 template <typename T>
462 inline
463 T&
465 (
466 cs_lnum_t particle_id,
468 ) const
469 {
470 assert(_p_am._count(0,attr) > 0);
471 return get_ptr_<T>(particle_id, 0, attr)[0];
472 }
473
474 /*--------------------------------------------------------------------------*/
482 /*--------------------------------------------------------------------------*/
483
484 template <typename T>
486 inline
487 T&
489 (
490 cs_lnum_t particle_id,
491 int time_id,
493 )
494 {
495 assert(_p_am._count(time_id,attr) > 0);
496 return get_ptr_<T>(particle_id, time_id, attr)[0];
497 }
498
499 /*--------------------------------------------------------------------------*/
508 /*--------------------------------------------------------------------------*/
509
510 template <typename T>
512 inline
513 T&
515 (
516 cs_lnum_t p_id,
517 int time_id,
519 ) const
520 {
521 assert(_p_am._count(time_id,attr) > 0);
522 return get_ptr_<T>(p_id, time_id, attr)[0];
523 }
524
525 /*--------------------------------------------------------------------------*/
533 /*--------------------------------------------------------------------------*/
534
535 template <typename T>
537 inline
538 T *
540 (
541 cs_lnum_t p_id,
543 )
544 {
545 assert(_p_am._count(0,attr) > 0);
546
547 return reinterpret_cast<T*>( _p_buffer.data()
548 + _p_am.extents * p_id
549 + _p_am._displ(0, attr));
550
551
552 }
553
554 /*--------------------------------------------------------------------------*/
562 /*--------------------------------------------------------------------------*/
563
564 template <typename T>
566 inline
567 const T *
569 (
570 cs_lnum_t p_id,
572 )
573 {
574 assert(_p_am._count(0,attr) > 0);
575
576 return reinterpret_cast<const T*>( _p_buffer.data()
577 + _p_am.extents * p_id
578 + _p_am._displ(0, attr));
579 }
580
581 /*--------------------------------------------------------------------------*/
589 /*--------------------------------------------------------------------------*/
590
591 template <typename T>
593 inline
594 T *
596 (
597 cs_lnum_t p_id,
598 int time_id,
600 )
601 {
602 assert(_p_am._count(time_id, attr) > 0);
603
604 return reinterpret_cast<T*>( _p_buffer.data()
605 + _p_am.extents * p_id
606 + _p_am._displ(time_id, attr));
607
608 }
609
610 /*--------------------------------------------------------------------------*/
618 /*--------------------------------------------------------------------------*/
619
620 template <typename T>
622 inline
623 const T *
625 (
626 cs_lnum_t p_id,
627 int time_id,
629 )
630 {
631 assert(_p_am._count(time_id, attr) > 0);
632
633 return reinterpret_cast<const T*>( _p_buffer.data()
634 + _p_am.extents * p_id
635 + _p_am._displ(time_id, attr));
636
637 }
638
639 /*--------------------------------------------------------------------------*/
645 /*--------------------------------------------------------------------------*/
646
648 inline
649 int
651 (
652 cs_lnum_t p_id,
653 int mask
654 )
655 {
656 int flag = get_const_ptr_<cs_lnum_t>(p_id, 0, CS_LAGR_P_FLAG)[0];
657
658 return (flag & mask);
659 }
660
661 /*--------------------------------------------------------------------------*/
665 /*--------------------------------------------------------------------------*/
666
668 inline
669 void
671 (
672 cs_lnum_t p_id,
673 int mask
674 )
675 {
676 int flag = get_const_ptr_<cs_lnum_t>(p_id, 0, CS_LAGR_P_FLAG)[0];
677 flag = flag | mask;
678 get_ptr_<cs_lnum_t>(p_id, 0, CS_LAGR_P_FLAG)[0] = flag;
679 }
680
681 /*--------------------------------------------------------------------------*/
685 /*--------------------------------------------------------------------------*/
686
688 inline
689 void
691 (
692 cs_lnum_t p_id,
693 int mask
694 )
695 {
696 int flag = get_const_ptr_<cs_lnum_t>(p_id, 0, CS_LAGR_P_FLAG)[0];
697 flag = (flag | mask) - mask;
698 get_ptr_<cs_lnum_t>(p_id, 0, CS_LAGR_P_FLAG)[0] = flag;
699 }
700
701 /*----------------------------------------------------------------------------*/
711 /*----------------------------------------------------------------------------*/
712
714 inline
715 cs_real_t *
717 (
718 cs_lnum_t p_id,
720 )
721 {
722 assert(_p_am._source_term_displ(attr) >= 0);
723
724 return (cs_real_t *)( _p_buffer.data()
725 + _p_am.extents*p_id
726 + _p_am._source_term_displ(attr));
727 }
728
729 /*----------------------------------------------------------------------------*/
739 /*----------------------------------------------------------------------------*/
740
742 inline
743 const cs_real_t *
745 (
746 cs_lnum_t p_id,
748 )
749 {
750 assert(_p_am._source_term_displ(attr) >= 0);
751
752 return (const cs_real_t *)( _p_buffer.data()
753 + _p_am.extents*p_id
754 + _p_am._source_term_displ(attr));
755 }
756
757 /*--------------------------------------------------------------------------*/
758 /* Aliases to templated methods for shorter names used in code */
759 /*--------------------------------------------------------------------------*/
760
761 template<typename... Args>
762 inline auto
763 attr_real(Args&&... args) ->
764 decltype(attr<cs_real_t>(std::forward<Args>(args)...))
765 {
766 return attr<cs_real_t>(std::forward<Args>(args)...);
767 }
768
769 template<typename... Args>
770 inline auto
771 attr_lnum(Args&&... args) ->
772 decltype(attr<cs_lnum_t>(std::forward<Args>(args)...))
773 {
774 return attr<cs_lnum_t>(std::forward<Args>(args)...);
775 }
776
777 template<typename... Args>
778 inline auto
779 attr_gnum(Args&&... args) ->
780 decltype(attr<cs_gnum_t>(std::forward<Args>(args)...))
781 {
782 return attr<cs_gnum_t>(std::forward<Args>(args)...);
783 }
784
785 template<typename... Args>
786 inline auto
787 attr_n_real(Args&&... args) ->
788 decltype(attr_n<cs_real_t>(std::forward<Args>(args)...))
789 {
790 return attr_n<cs_real_t>(std::forward<Args>(args)...);
791 }
792
793 template<typename... Args>
794 inline auto
795 attr_n_lnum(Args&&... args) ->
796 decltype(attr_n<cs_lnum_t>(std::forward<Args>(args)...))
797 {
798 return attr_n<cs_lnum_t>(std::forward<Args>(args)...);
799 }
800
801 template<typename... Args>
802 inline auto
803 attr_n_gnum(Args&&... args) ->
804 decltype(attr_n<cs_gnum_t>(std::forward<Args>(args)...))
805 {
806 return attr_n<cs_gnum_t>(std::forward<Args>(args)...);
807 }
808
809 template<typename... Args>
810 inline auto
811 attr_real_ptr(Args&&... args) ->
812 decltype(attr_get_ptr<cs_real_t>(std::forward<Args>(args)...))
813 {
814 return attr_get_ptr<cs_real_t>(std::forward<Args>(args)...);
815 }
816
817 template<typename... Args>
818 inline auto
819 attr_lnum_ptr(Args&&... args) ->
820 decltype(attr_get_ptr<cs_lnum_t>(std::forward<Args>(args)...))
821 {
822 return attr_get_ptr<cs_lnum_t>(std::forward<Args>(args)...);
823 }
824
825 template<typename... Args>
826 inline auto
827 attr_gnum_ptr(Args&&... args) ->
828 decltype(attr_get_ptr<cs_gnum_t>(std::forward<Args>(args)...))
829 {
830 return attr_get_ptr<cs_gnum_t>(std::forward<Args>(args)...);
831 }
832
833 template<typename... Args>
834 inline auto
835 attr_real_const_ptr(Args&&... args) ->
836 decltype(attr_get_const_ptr<cs_real_t>(std::forward<Args>(args)...))
837 {
838 return attr_get_const_ptr<cs_real_t>(std::forward<Args>(args)...);
839 }
840
841 template<typename... Args>
842 inline auto
843 attr_lnum_const_ptr(Args&&... args) ->
844 decltype(attr_get_const_ptr<cs_lnum_t>(std::forward<Args>(args)...))
845 {
846 return attr_get_const_ptr<cs_lnum_t>(std::forward<Args>(args)...);
847 }
848
849 template<typename... Args>
850 inline auto
851 attr_gnum_const_ptr(Args&&... args) ->
852 decltype(attr_get_const_ptr<cs_gnum_t>(std::forward<Args>(args)...))
853 {
854 return attr_get_const_ptr<cs_gnum_t>(std::forward<Args>(args)...);
855 }
856
857 template<typename... Args>
858 inline auto
859 attr_n_real_ptr(Args&&... args) ->
860 decltype(attr_n_get_ptr<cs_real_t>(std::forward<Args>(args)...))
861 {
862 return attr_n_get_ptr<cs_real_t>(std::forward<Args>(args)...);
863 }
864
865 template<typename... Args>
866 inline auto
867 attr_n_lnum_ptr(Args&&... args) ->
868 decltype(attr_n_get_ptr<cs_lnum_t>(std::forward<Args>(args)...))
869 {
870 return attr_n_get_ptr<cs_lnum_t>(std::forward<Args>(args)...);
871 }
872
873 template<typename... Args>
874 inline auto
875 attr_n_gnum_ptr(Args&&... args) ->
876 decltype(attr_n_get_ptr<cs_gnum_t>(std::forward<Args>(args)...))
877 {
878 return attr_n_get_ptr<cs_gnum_t>(std::forward<Args>(args)...);
879 }
880
881 template<typename... Args>
882 inline auto
883 attr_n_real_const_ptr(Args&&... args) ->
884 decltype(attr_n_get_const_ptr<cs_real_t>(std::forward<Args>(args)...))
885 {
886 return attr_n_get_const_ptr<cs_real_t>(std::forward<Args>(args)...);
887 }
888
889 template<typename... Args>
890 inline auto
891 attr_n_lnum_const_ptr(Args&&... args) ->
892 decltype(attr_n_get_const_ptr<cs_lnum_t>(std::forward<Args>(args)...))
893 {
894 return attr_n_get_const_ptr<cs_lnum_t>(std::forward<Args>(args)...);
895 }
896
897 template<typename... Args>
898 inline auto
899 attr_n_gnum_const_ptr(Args&&... args) ->
900 decltype(attr_n_get_const_ptr<cs_gnum_t>(std::forward<Args>(args)...))
901 {
902 return attr_n_get_const_ptr<cs_gnum_t>(std::forward<Args>(args)...);
903 }
904
905private:
906
907 /*--------------------------------------------------------------------------*/
911 /*--------------------------------------------------------------------------*/
912
914 void
915 swap_members_
916 (
919 );
920
921 /*--------------------------------------------------------------------------*/
925 /*--------------------------------------------------------------------------*/
926
928 void
929 private_to_public_();
930
931 /*--------------------------------------------------------------------------*/
940 /*--------------------------------------------------------------------------*/
941
942 template <typename T>
944 inline
945 T *
946 get_ptr_
947 (
948 cs_lnum_t p_id,
949 int time_id,
951 )
952 {
953 return reinterpret_cast<T*>( _p_buffer.data()
954 + _p_am.extents * p_id
955 + _p_am._displ(time_id, attr));
956 }
957
958 /*--------------------------------------------------------------------------*/
967 /*--------------------------------------------------------------------------*/
968
969 template <typename T>
971 inline
972 const T *
973 get_const_ptr_
974 (
975 cs_lnum_t p_id,
976 int time_id,
978 )
979 {
980 return reinterpret_cast<const T*>( _p_buffer.data()
981 + _p_am.extents * p_id
982 + _p_am._displ(time_id, attr));
983 }
984
985 /* Private members */
986
987 cs_array<unsigned char> _p_buffer;
989
990#endif
992
993/*=============================================================================
994 * Global variables
995 *============================================================================*/
996
999extern const char *cs_lagr_attribute_name[];
1000
1004
1005/*============================================================================
1006 * Public function prototypes for Fortran API
1007 *============================================================================*/
1008
1009/*============================================================================
1010 * Public function prototypes
1011 *============================================================================*/
1012
1013/*----------------------------------------------------------------------------*/
1017/*----------------------------------------------------------------------------*/
1018
1019void
1021
1022/*----------------------------------------------------------------------------*/
1028/*----------------------------------------------------------------------------*/
1029
1032
1033/*----------------------------------------------------------------------------*/
1037/*----------------------------------------------------------------------------*/
1038
1039void
1041
1042/*----------------------------------------------------------------------------*/
1046/*----------------------------------------------------------------------------*/
1047
1048void
1050
1051/*----------------------------------------------------------------------------*/
1060/*----------------------------------------------------------------------------*/
1061
1062void
1064 cs_lnum_t src);
1065
1066/*----------------------------------------------------------------------------*/
1085/*----------------------------------------------------------------------------*/
1086
1087void
1089 int time_id,
1091 size_t *extents,
1092 size_t *size,
1093 ptrdiff_t *displ,
1094 cs_datatype_t *datatype,
1095 int *count);
1096
1097/*----------------------------------------------------------------------------*/
1110/*----------------------------------------------------------------------------*/
1111
1112int
1115 cs_datatype_t datatype,
1116 int stride,
1117 int component_id);
1118
1119/*----------------------------------------------------------------------------*/
1127/*----------------------------------------------------------------------------*/
1128
1129void
1131
1132/*----------------------------------------------------------------------------
1133 * Return pointer to the main cs_lagr_particle_set_t structure.
1134 *
1135 * returns:
1136 * pointer to current particle set, or NULL
1137 *----------------------------------------------------------------------------*/
1138
1141
1142/*----------------------------------------------------------------------------
1143 * Return reference to the main cs_lagr_particle_set_t structure.
1144 *
1145 * returns:
1146 * reference to current particle set, or NULL
1147 *----------------------------------------------------------------------------*/
1148
1149#if defined(__cplusplus)
1152
1153/*----------------------------------------------------------------------------*/
1163/*----------------------------------------------------------------------------*/
1164
1165inline static void *
1167 cs_lnum_t particle_id,
1169{
1170 assert(particle_set->p_am->count[0][attr] > 0);
1171
1172 return (unsigned char *)particle_set->p_buffer
1173 + particle_set->p_am->extents*particle_id
1174 + particle_set->p_am->displ[0][attr];
1175}
1176
1177/*----------------------------------------------------------------------------*/
1188/*----------------------------------------------------------------------------*/
1189
1190inline static const void *
1192 cs_lnum_t particle_id,
1194{
1195 assert(particle_set->p_am->count[0][attr] > 0);
1196
1197 return particle_set->p_buffer
1198 + particle_set->p_am->extents*particle_id
1199 + particle_set->p_am->displ[0][attr];
1200}
1201
1202/*----------------------------------------------------------------------------*/
1214/*----------------------------------------------------------------------------*/
1215
1216inline static void *
1218 cs_lnum_t particle_id,
1219 int time_id,
1221{
1222 assert(particle_set->p_am->count[time_id][attr] > 0);
1223
1224 return particle_set->p_buffer
1225 + particle_set->p_am->extents*particle_id
1226 + particle_set->p_am->displ[time_id][attr];
1227}
1228
1229/*----------------------------------------------------------------------------*/
1241/*----------------------------------------------------------------------------*/
1242
1243inline static const void *
1245 cs_lnum_t particle_id,
1246 int time_id,
1248{
1249 assert(particle_set->p_am->count[time_id][attr] > 0);
1250
1251 return particle_set->p_buffer
1252 + particle_set->p_am->extents*particle_id
1253 + particle_set->p_am->displ[time_id][attr];
1254}
1255
1256/*----------------------------------------------------------------------------*/
1266/*----------------------------------------------------------------------------*/
1267
1268inline static int
1270 cs_lnum_t particle_id,
1271 int mask)
1272{
1273 int flag
1274 = *((const cs_lnum_t *)( particle_set->p_buffer
1275 + particle_set->p_am->extents*particle_id
1276 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG]));
1277
1278 return (flag & mask);
1279}
1280
1281/*----------------------------------------------------------------------------*/
1289/*----------------------------------------------------------------------------*/
1290
1291inline static void
1293 cs_lnum_t particle_id,
1294 int mask)
1295{
1296 int flag
1297 = *((const cs_lnum_t *)( particle_set->p_buffer
1298 + particle_set->p_am->extents*particle_id
1299 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG]));
1300
1301 flag = flag | mask;
1302
1303 *((cs_lnum_t *)( particle_set->p_buffer
1304 + particle_set->p_am->extents*particle_id
1305 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG])) = flag;
1306}
1307
1308/*----------------------------------------------------------------------------*/
1316/*----------------------------------------------------------------------------*/
1317
1318inline static void
1320 cs_lnum_t particle_id,
1321 int mask)
1322{
1323 int flag
1324 = *((const cs_lnum_t *)( particle_set->p_buffer
1325 + particle_set->p_am->extents*particle_id
1326 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG]));
1327
1328 flag = (flag | mask) - mask;
1329
1330 *((cs_lnum_t *)( particle_set->p_buffer
1331 + particle_set->p_am->extents*particle_id
1332 + particle_set->p_am->displ[0][CS_LAGR_P_FLAG])) = flag;
1333}
1334
1335/*----------------------------------------------------------------------------*/
1345/*----------------------------------------------------------------------------*/
1346
1347inline static cs_lnum_t
1349 cs_lnum_t particle_id,
1351{
1352 assert(particle_set->p_am->count[0][attr] > 0);
1353
1354 return *((const cs_lnum_t *)( particle_set->p_buffer
1355 + particle_set->p_am->extents*particle_id
1356 + particle_set->p_am->displ[0][attr]));
1357}
1358
1359/*----------------------------------------------------------------------------*/
1371/*----------------------------------------------------------------------------*/
1372
1373inline static cs_lnum_t
1375 cs_lnum_t particle_id,
1376 int time_id,
1378{
1379 assert(particle_set->p_am->count[time_id][attr] > 0);
1380
1381 return *((const cs_lnum_t *)( particle_set->p_buffer
1382 + particle_set->p_am->extents*particle_id
1383 + particle_set->p_am->displ[time_id][attr]));
1384}
1385
1386/*----------------------------------------------------------------------------*/
1395/*----------------------------------------------------------------------------*/
1396
1397inline static void
1399 cs_lnum_t particle_id,
1401 cs_lnum_t value)
1402{
1403 assert(particle_set->p_am->count[0][attr] > 0);
1404
1405 *((cs_lnum_t *)( particle_set->p_buffer
1406 + particle_set->p_am->extents*particle_id
1407 + particle_set->p_am->displ[0][attr])) = value;
1408}
1409
1410/*----------------------------------------------------------------------------*/
1421/*----------------------------------------------------------------------------*/
1422
1423inline static void
1425 cs_lnum_t particle_id,
1426 int time_id,
1428 cs_lnum_t value)
1429{
1430 assert(particle_set->p_am->count[time_id][attr] > 0);
1431
1432 *((cs_lnum_t *)( particle_set->p_buffer
1433 + particle_set->p_am->extents*particle_id
1434 + particle_set->p_am->displ[time_id][attr])) = value;
1435}
1436
1437/*----------------------------------------------------------------------------*/
1447/*----------------------------------------------------------------------------*/
1448
1449inline static cs_gnum_t
1451 cs_lnum_t particle_id,
1453{
1454 assert(particle_set->p_am->count[0][attr] > 0);
1455
1456 return *((const cs_gnum_t *)( particle_set->p_buffer
1457 + particle_set->p_am->extents*particle_id
1458 + particle_set->p_am->displ[0][attr]));
1459}
1460
1461/*----------------------------------------------------------------------------*/
1473/*----------------------------------------------------------------------------*/
1474
1475inline static cs_gnum_t
1477 cs_lnum_t particle_id,
1478 int time_id,
1480{
1481 assert(particle_set->p_am->count[time_id][attr] > 0);
1482
1483 return *((const cs_gnum_t *)( particle_set->p_buffer
1484 + particle_set->p_am->extents*particle_id
1485 + particle_set->p_am->displ[time_id][attr]));
1486}
1487
1488/*----------------------------------------------------------------------------*/
1497/*----------------------------------------------------------------------------*/
1498
1499inline static void
1501 cs_lnum_t particle_id,
1503 cs_gnum_t value)
1504{
1505 assert(particle_set->p_am->count[0][attr] > 0);
1506
1507 *((cs_gnum_t *)( particle_set->p_buffer
1508 + particle_set->p_am->extents*particle_id
1509 + particle_set->p_am->displ[0][attr])) = value;
1510}
1511
1512/*----------------------------------------------------------------------------*/
1523/*----------------------------------------------------------------------------*/
1524
1525inline static void
1527 cs_lnum_t particle_id,
1528 int time_id,
1530 cs_gnum_t value)
1531{
1532 assert(particle_set->p_am->count[time_id][attr] > 0);
1533
1534 *((cs_gnum_t *)( particle_set->p_buffer
1535 + particle_set->p_am->extents*particle_id
1536 + particle_set->p_am->displ[time_id][attr])) = value;
1537}
1538
1539/*----------------------------------------------------------------------------*/
1549/*----------------------------------------------------------------------------*/
1550
1551inline static cs_real_t
1553 cs_lnum_t particle_id,
1555{
1556 assert(particle_set->p_am->count[0][attr] > 0);
1557
1558 return *((const cs_real_t *)( particle_set->p_buffer
1559 + particle_set->p_am->extents*particle_id
1560 + particle_set->p_am->displ[0][attr]));
1561}
1562
1563/*----------------------------------------------------------------------------*/
1575/*----------------------------------------------------------------------------*/
1576
1577inline static cs_real_t
1579 cs_lnum_t particle_id,
1580 int time_id,
1582{
1583 assert(particle_set->p_am->count[time_id][attr] > 0);
1584
1585 return *((const cs_real_t *)( particle_set->p_buffer
1586 + particle_set->p_am->extents*particle_id
1587 + particle_set->p_am->displ[time_id][attr]));
1588}
1589
1590/*----------------------------------------------------------------------------*/
1599/*----------------------------------------------------------------------------*/
1600
1601inline static void
1603 cs_lnum_t particle_id,
1605 cs_real_t value)
1606{
1607 assert(particle_set->p_am->count[0][attr] > 0);
1608
1609 *((cs_real_t *)( particle_set->p_buffer
1610 + particle_set->p_am->extents*particle_id
1611 + particle_set->p_am->displ[0][attr])) = value;
1612}
1613
1614/*----------------------------------------------------------------------------*/
1625/*----------------------------------------------------------------------------*/
1626
1627inline static void
1629 cs_lnum_t particle_id,
1630 int time_id,
1632 cs_real_t value)
1633{
1634 assert(particle_set->p_am->count[time_id][attr] > 0);
1635
1636 *((cs_real_t *)( particle_set->p_buffer
1637 + particle_set->p_am->extents*particle_id
1638 + particle_set->p_am->displ[time_id][attr])) = value;
1639}
1640
1641/*----------------------------------------------------------------------------*/
1652/*----------------------------------------------------------------------------*/
1653
1654inline static void
1656 cs_lnum_t p_id)
1657{
1658 memset(p_set->p_buffer + p_set->p_am->extents * p_id,
1659 0,
1660 p_set->p_am->extents);
1661}
1662
1663/*----------------------------------------------------------------------------*/
1664/*----------------------------------------------------------------------------
1665 * Set reallocation factor for particle sets.
1666 *
1667 * This factor determines the multiplier used for reallocations when
1668 * the particle set's buffers are too small to handle the new number of
1669 * particles.
1670 *
1671 * parameters:
1672 * f <-- reallocation size multiplier
1673 *----------------------------------------------------------------------------*/
1674
1675void
1677
1678/*----------------------------------------------------------------------------*/
1687/*----------------------------------------------------------------------------*/
1688
1689unsigned long long
1691
1692/*----------------------------------------------------------------------------*/
1701/*----------------------------------------------------------------------------*/
1702
1703void
1704cs_lagr_set_n_g_particles_max(unsigned long long n_g_particles_max);
1705
1706/*----------------------------------------------------------------------------*/
1713/*----------------------------------------------------------------------------*/
1714
1715void
1717 cs_lnum_t p_id);
1718
1719/*----------------------------------------------------------------------------*/
1725/*----------------------------------------------------------------------------*/
1726
1727void
1729
1730/*----------------------------------------------------------------------------*/
1736/*----------------------------------------------------------------------------*/
1737
1738void
1739cs_lagr_set_n_user_variables(int n_user_variables);
1740
1741/*----------------------------------------------------------------------------*/
1742
1743/*============================================================================
1744 * Public C++ templates
1745 *============================================================================*/
1746
1747template <typename T>
1748T *
1750 cs_lnum_t particle_id,
1752{
1753 assert(particle_set->p_am->count[0][attr] > 0);
1754
1755 return (T *)( particle_set->p_buffer
1756 + particle_set->p_am->extents*particle_id
1757 + particle_set->p_am->displ[0][attr]);
1758}
1759
1760template <typename T>
1761const T *
1763 cs_lnum_t particle_id,
1765{
1766 assert(particle_set->p_am->count[0][attr] > 0);
1767
1768 return (const T *)( particle_set->p_buffer
1769 + particle_set->p_am->extents*particle_id
1770 + particle_set->p_am->displ[0][attr]);
1771}
1772
1773template <typename T>
1774T *
1776 cs_lnum_t particle_id,
1777 int time_id,
1779{
1780 assert(particle_set->p_am->count[time_id][attr] > 0);
1781
1782 return (T *)( particle_set->p_buffer
1783 + particle_set->p_am->extents*particle_id
1784 + particle_set->p_am->displ[time_id][attr]);
1785}
1786
1787template <typename T>
1788const T *
1790 cs_lnum_t particle_id,
1791 int time_id,
1793{
1794 assert(particle_set->p_am->count[time_id][attr] > 0);
1795
1796 return (const T *)( particle_set->p_buffer
1797 + particle_set->p_am->extents*particle_id
1798 + particle_set->p_am->displ[time_id][attr]);
1799}
1800
1801template <typename T>
1802T
1804 cs_lnum_t particle_id,
1806{
1807 assert(particle_set->p_am->count[0][attr] > 0);
1808
1809 return *(T *)( particle_set->p_buffer
1810 + particle_set->p_am->extents*particle_id
1811 + particle_set->p_am->displ[0][attr]);
1812}
1813
1814template <typename T>
1815void
1817 cs_lnum_t particle_id,
1819 T value)
1820{
1821 assert(particle_set->p_am->count[0][attr] > 0);
1822
1823 *(T *)( particle_set->p_buffer
1824 + particle_set->p_am->extents*particle_id
1825 + particle_set->p_am->displ[0][attr]) = value;
1826}
1827
1828template <typename T>
1829T
1831 cs_lnum_t particle_id,
1832 int time_id,
1834{
1835 assert(particle_set->p_am->count[time_id][attr] > 0);
1836
1837 return *(T *)( particle_set->p_buffer
1838 + particle_set->p_am->extents*particle_id
1839 + particle_set->p_am->displ[time_id][attr]);
1840}
1841
1842template <typename T>
1843void
1845 cs_lnum_t particle_id,
1846 int time_id,
1848 T value)
1849{
1850 assert(particle_set->p_am->count[time_id][attr] > 0);
1851
1852 *(T *)( particle_set->p_buffer
1853 + particle_set->p_am->extents*particle_id
1854 + particle_set->p_am->displ[time_id][attr]) = value;
1855}
1856
1857#endif
1858
1859/*----------------------------------------------------------------------------*/
1860
1861#endif /* CS_LAGR_PARTICLE_H */
Define a templated array class (owner of data)
Definition: cs_array.h:1118
cs_datatype_t
Definition: cs_defs.h:290
#define CS_F_HOST_DEVICE
Definition: cs_defs.h:555
double cs_real_t
Floating-point value.
Definition: cs_defs.h:332
unsigned cs_gnum_t
global mesh entity number
Definition: cs_defs.h:317
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:325
#define CS_F_HOST
Definition: cs_defs.h:553
void cs_lagr_particle_attr_in_range(int attr)
Check if a particle attribute is in a valid range.
Definition: cs_lagr_particle.cpp:879
unsigned long long cs_lagr_get_n_g_particles_max(void)
Get global maximum number of particles.
Definition: cs_lagr_particle.cpp:938
cs_lagr_attribute_t
Definition: cs_lagr_particle.h:76
@ CS_LAGR_DEPO_TIME
Definition: cs_lagr_particle.h:141
@ CS_LAGR_QUATERNION
Definition: cs_lagr_particle.h:115
@ CS_LAGR_HEIGHT
Definition: cs_lagr_particle.h:139
@ CS_LAGR_FOULING_INDEX
Definition: cs_lagr_particle.h:127
@ CS_LAGR_COAL_DENSITY
Definition: cs_lagr_particle.h:160
@ CS_LAGR_MASS
Definition: cs_lagr_particle.h:89
@ CS_LAGR_PRED_VELOCITY
Definition: cs_lagr_particle.h:106
@ CS_LAGR_EMISSIVITY
Definition: cs_lagr_particle.h:164
@ CS_LAGR_AGGLO_CLASS_ID
Definition: cs_lagr_particle.h:171
@ CS_LAGR_NEIGHBOR_FACE_ID
Definition: cs_lagr_particle.h:125
@ CS_LAGR_PRED_VELOCITY_SEEN
Definition: cs_lagr_particle.h:107
@ CS_LAGR_CLUSTER_NB_PART
Definition: cs_lagr_particle.h:140
@ CS_LAGR_RADII
Definition: cs_lagr_particle.h:116
@ CS_LAGR_ORIENTATION
Definition: cs_lagr_particle.h:114
@ CS_LAGR_TR_TRUNCATE
Definition: cs_lagr_particle.h:97
@ CS_LAGR_USER
Definition: cs_lagr_particle.h:177
@ CS_LAGR_DISPLACEMENT_NORM
Definition: cs_lagr_particle.h:135
@ CS_LAGR_COAL_MASS
Definition: cs_lagr_particle.h:153
@ CS_LAGR_VELOCITY
Definition: cs_lagr_particle.h:93
@ CS_LAGR_BR_GAUSS
Definition: cs_lagr_particle.h:109
@ CS_LAGR_INTERF
Definition: cs_lagr_particle.h:124
@ CS_LAGR_MARKO_VALUE
Definition: cs_lagr_particle.h:126
@ CS_LAGR_COKE_MASS
Definition: cs_lagr_particle.h:154
@ CS_LAGR_CELL_ID
Definition: cs_lagr_particle.h:80
@ CS_LAGR_REBOUND_ID
Definition: cs_lagr_particle.h:83
@ CS_LAGR_TAUP_AUX
Definition: cs_lagr_particle.h:91
@ CS_LAGR_RESIDENCE_TIME
Definition: cs_lagr_particle.h:88
@ CS_LAGR_REMAINING_INTEG_TIME
Definition: cs_lagr_particle.h:174
@ CS_LAGR_TURB_STATE_1
Definition: cs_lagr_particle.h:104
@ CS_LAGR_TEMPERATURE
Definition: cs_lagr_particle.h:146
@ CS_LAGR_TR_REPOSITION
Definition: cs_lagr_particle.h:98
@ CS_LAGR_CP
Definition: cs_lagr_particle.h:148
@ CS_LAGR_RANDOM_VALUE
Definition: cs_lagr_particle.h:85
@ CS_LAGR_SHAPE_PARAM
Definition: cs_lagr_particle.h:119
@ CS_LAGR_RANK_ID
Definition: cs_lagr_particle.h:81
@ CS_LAGR_COAL_ID
Definition: cs_lagr_particle.h:159
@ CS_LAGR_INITIAL_DIAMETER
Definition: cs_lagr_particle.h:157
@ CS_LAGR_ADHESION_FORCE
Definition: cs_lagr_particle.h:133
@ CS_LAGR_STAT_WEIGHT
Definition: cs_lagr_particle.h:87
@ CS_LAGR_N_SMALL_ASPERITIES
Definition: cs_lagr_particle.h:132
@ CS_LAGR_N_ATTRIBUTES
Definition: cs_lagr_particle.h:181
@ CS_LAGR_ADHESION_TORQUE
Definition: cs_lagr_particle.h:134
@ CS_LAGR_BROWN_STATE_1
Definition: cs_lagr_particle.h:105
@ CS_LAGR_ANGULAR_VEL
Definition: cs_lagr_particle.h:117
@ CS_LAGR_VELOCITY_SEEN
Definition: cs_lagr_particle.h:94
@ CS_LAGR_STAT_CLASS
Definition: cs_lagr_particle.h:168
@ CS_LAGR_N_LARGE_ASPERITIES
Definition: cs_lagr_particle.h:131
@ CS_LAGR_VELOCITY_SEEN_VELOCITY_COV
Definition: cs_lagr_particle.h:95
@ CS_LAGR_P_FLAG
Definition: cs_lagr_particle.h:78
@ CS_LAGR_SHRINKING_DIAMETER
Definition: cs_lagr_particle.h:156
@ CS_LAGR_TEMPERATURE_SEEN
Definition: cs_lagr_particle.h:147
@ CS_LAGR_V_GAUSS
Definition: cs_lagr_particle.h:108
@ CS_LAGR_SHAPE
Definition: cs_lagr_particle.h:113
@ CS_LAGR_AGGLO_FRACTAL_DIM
Definition: cs_lagr_particle.h:172
@ CS_LAGR_YPLUS
Definition: cs_lagr_particle.h:123
@ CS_LAGR_WATER_MASS
Definition: cs_lagr_particle.h:152
@ CS_LAGR_CONSOL_HEIGHT
Definition: cs_lagr_particle.h:142
@ CS_LAGR_DIAMETER
Definition: cs_lagr_particle.h:90
@ CS_LAGR_COORDS
Definition: cs_lagr_particle.h:92
@ CS_LAGR_EULER
Definition: cs_lagr_particle.h:118
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:1749
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:1292
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:1830
void cs_lagr_particle_set_dump(const cs_lagr_particle_set_t *p_set)
Dump a cs_lagr_particle_set_t structure.
Definition: cs_lagr_particle.cpp:998
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:1602
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:1319
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:1269
void cs_lagr_particle_attr_initialize(void)
Define particle map based on defined options.
Definition: cs_lagr_particle.cpp:364
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:1424
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:1775
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:1789
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:1191
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:1500
cs_lagr_particle_set_t * cs_glob_lagr_particle_set
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:1374
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:1578
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:1166
void cs_lagr_set_reallocation_factor(double f)
Set reallocation factor for particle sets.
Definition: cs_lagr_particle.cpp:920
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:1476
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:1628
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:1450
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:896
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:1803
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:1762
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:1217
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:1526
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:1398
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:1655
void cs_lagr_set_n_user_variables(int n_user_variables)
Set number of user particle variables.
Definition: cs_lagr_particle.cpp:1026
void cs_lagr_particles_current_to_previous(cs_lagr_particle_set_t &p_set, cs_lnum_t p_id)
Copy current attributes to previous attributes.
Definition: cs_lagr_particle.cpp:970
void cs_lagr_particle_finalize(void)
Destroy main particle set and map if they exist.
Definition: cs_lagr_particle.cpp:724
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:1244
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:955
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:742
void cs_lagr_particle_set_create(void)
Definition: cs_lagr_particle.cpp:707
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:814
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:777
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:1844
cs_lagr_particle_set_t & cs_lagr_get_particle_set_ref(void)
Definition: cs_lagr_particle.cpp:902
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:694
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:1552
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:1348
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:1816
Definition: cs_lagr_particle.h:188
cs_datatype_t datatype[CS_LAGR_N_ATTRIBUTES]
Definition: cs_lagr_particle.h:204
ptrdiff_t(* displ)[CS_LAGR_N_ATTRIBUTES]
Definition: cs_lagr_particle.h:209
CS_F_HOST_DEVICE cs_lagr_attribute_map_t()
Default constructor.
Definition: cs_lagr_particle.cpp:1040
size_t size[CS_LAGR_N_ATTRIBUTES]
Definition: cs_lagr_particle.h:200
int(* count)[CS_LAGR_N_ATTRIBUTES]
Definition: cs_lagr_particle.h:206
CS_F_HOST_DEVICE ~cs_lagr_attribute_map_t()
Default destructor.
Definition: cs_lagr_particle.cpp:1262
size_t lb
Definition: cs_lagr_particle.h:192
ptrdiff_t * source_term_displ
Definition: cs_lagr_particle.h:213
int n_time_vals
Definition: cs_lagr_particle.h:196
CS_F_HOST_DEVICE cs_lagr_attribute_map_t & operator=(cs_lagr_attribute_map_t other)
Assignment operator.
Definition: cs_lagr_particle.cpp:1305
size_t extents
Definition: cs_lagr_particle.h:190
Definition: cs_lagr_particle.h:324
CS_F_HOST_DEVICE cs_lagr_particle_set_t & operator=(cs_lagr_particle_set_t other)
Assignment operator.
Definition: cs_lagr_particle.cpp:1549
auto attr_real_const_ptr(Args &&... args) -> decltype(attr_get_const_ptr< cs_real_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:835
auto attr_n_real(Args &&... args) -> decltype(attr_n< cs_real_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:787
CS_F_HOST_DEVICE cs_real_t * source_terms(cs_lnum_t p_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:717
auto attr_real(Args &&... args) -> decltype(attr< cs_real_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:763
cs_real_t weight_merged
Definition: cs_lagr_particle.h:338
auto attr_n_lnum_ptr(Args &&... args) -> decltype(attr_n_get_ptr< cs_lnum_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:867
CS_F_HOST_DEVICE T & attr(cs_lnum_t particle_id, cs_lagr_attribute_t attr)
Access attribute based on particle id and a given type.
Definition: cs_lagr_particle.h:440
auto attr_n_real_ptr(Args &&... args) -> decltype(attr_n_get_ptr< cs_real_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:859
CS_F_HOST_DEVICE void unset_flag(cs_lnum_t p_id, int mask)
Unset a flag for a given particle.
Definition: cs_lagr_particle.h:691
CS_F_HOST_DEVICE const cs_real_t * source_terms_const(cs_lnum_t p_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:745
cs_lnum_t n_part_merged
Definition: cs_lagr_particle.h:329
CS_F_HOST_DEVICE T * attr_n_get_ptr(cs_lnum_t p_id, int time_id, cs_lagr_attribute_t attr)
Get a pointer to attribute values.
Definition: cs_lagr_particle.h:596
CS_F_HOST_DEVICE T & attr_n(cs_lnum_t particle_id, int time_id, cs_lagr_attribute_t attr)
Access attribute based on particle id, time id and a given type.
Definition: cs_lagr_particle.h:489
CS_F_HOST_DEVICE T & attr(cs_lnum_t particle_id, cs_lagr_attribute_t attr) const
Access attribute based on particle id and a given type from a const particle set.
Definition: cs_lagr_particle.h:465
CS_F_HOST int resize(const cs_lnum_t n_particles_max_min)
Resize particles set.
Definition: cs_lagr_particle.cpp:1508
auto attr_n_gnum_const_ptr(Args &&... args) -> decltype(attr_n_get_const_ptr< cs_gnum_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:899
auto attr_n_gnum(Args &&... args) -> decltype(attr_n< cs_gnum_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:803
cs_real_t weight
Definition: cs_lagr_particle.h:335
CS_F_HOST_DEVICE T & attr_n(cs_lnum_t p_id, int time_id, cs_lagr_attribute_t attr) const
Access attribute based on particle id, time id and a given type for a const particle set.
Definition: cs_lagr_particle.h:515
cs_lagr_particle_set_t()
Default constructor.
Definition: cs_lagr_particle.cpp:1336
auto attr_n_lnum(Args &&... args) -> decltype(attr_n< cs_lnum_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:795
cs_lnum_t n_particles
Definition: cs_lagr_particle.h:326
cs_lnum_t n_part_new
Definition: cs_lagr_particle.h:327
auto attr_n_lnum_const_ptr(Args &&... args) -> decltype(attr_n_get_const_ptr< cs_lnum_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:891
cs_real_t weight_out
Definition: cs_lagr_particle.h:337
CS_F_HOST_DEVICE int flag(cs_lnum_t p_id, int mask)
Check if a flag is set for a given particle based on a mask.
Definition: cs_lagr_particle.h:651
cs_real_t weight_failed
Definition: cs_lagr_particle.h:342
cs_real_t weight_dep
Definition: cs_lagr_particle.h:339
unsigned char * p_buffer
Definition: cs_lagr_particle.h:348
cs_lnum_t n_failed_part
Definition: cs_lagr_particle.h:333
CS_F_HOST_DEVICE const T * attr_get_const_ptr(cs_lnum_t p_id, cs_lagr_attribute_t attr)
Get a const pointer to attribute values.
Definition: cs_lagr_particle.h:569
auto attr_real_ptr(Args &&... args) -> decltype(attr_get_ptr< cs_real_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:811
cs_real_t weight_fou
Definition: cs_lagr_particle.h:340
auto attr_lnum(Args &&... args) -> decltype(attr< cs_lnum_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:771
CS_F_HOST_DEVICE const T * attr_n_get_const_ptr(cs_lnum_t p_id, int time_id, cs_lagr_attribute_t attr)
Get a const pointer to attribute values.
Definition: cs_lagr_particle.h:625
cs_lnum_t n_part_resusp
Definition: cs_lagr_particle.h:332
auto attr_n_real_const_ptr(Args &&... args) -> decltype(attr_n_get_const_ptr< cs_real_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:883
cs_real_t weight_new
Definition: cs_lagr_particle.h:336
auto attr_lnum_ptr(Args &&... args) -> decltype(attr_get_ptr< cs_lnum_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:819
auto attr_gnum_const_ptr(Args &&... args) -> decltype(attr_get_const_ptr< cs_gnum_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:851
auto attr_gnum_ptr(Args &&... args) -> decltype(attr_get_ptr< cs_gnum_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:827
auto attr_lnum_const_ptr(Args &&... args) -> decltype(attr_get_const_ptr< cs_lnum_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:843
cs_lnum_t n_part_out
Definition: cs_lagr_particle.h:328
const cs_lagr_attribute_map_t * p_am
Definition: cs_lagr_particle.h:346
cs_lnum_t n_part_fou
Definition: cs_lagr_particle.h:331
~cs_lagr_particle_set_t()
Default destructor.
Definition: cs_lagr_particle.cpp:1454
auto attr_n_gnum_ptr(Args &&... args) -> decltype(attr_n_get_ptr< cs_gnum_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:875
cs_lnum_t n_part_dep
Definition: cs_lagr_particle.h:330
cs_lnum_t n_particles_max
Definition: cs_lagr_particle.h:344
auto attr_gnum(Args &&... args) -> decltype(attr< cs_gnum_t >(std::forward< Args >(args)...))
Definition: cs_lagr_particle.h:779
cs_real_t weight_resusp
Definition: cs_lagr_particle.h:341
CS_F_HOST_DEVICE T * attr_get_ptr(cs_lnum_t p_id, cs_lagr_attribute_t attr)
Get a pointer to attribute values.
Definition: cs_lagr_particle.h:540
CS_F_HOST_DEVICE void set_flag(cs_lnum_t p_id, int mask)
Set flag for a given particle.
Definition: cs_lagr_particle.h:671