programmer's 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-2018 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 "cs_defs.h"
31 
32 #include "cs_interface.h"
33 
34 #include "assert.h"
35 
36 /*----------------------------------------------------------------------------*/
37 
39 
40 /*=============================================================================
41  * Macro definitions
42  *============================================================================*/
43 
44 /*============================================================================
45  * Type definitions
46  *============================================================================*/
47 
49 /* ------------------------------- */
50 
51 typedef enum {
52 
68 
74  /* Arrays for 2nd order scheme */
75 
76  CS_LAGR_TURB_STATE_1, /* turbulence characteristics of first pass */
77  CS_LAGR_PRED_VELOCITY, /* 1st step prediction for particle velocity */
78  CS_LAGR_PRED_VELOCITY_SEEN, /* 1st step prediction for relative velocity */
79  CS_LAGR_V_GAUSS, /* 1st step Gaussian variable */
80  CS_LAGR_BR_GAUSS, /* 1st step Brownian motion Gaussian variable */
81 
82  /* Deposition submodel additional parameters */
83 
90 
91  /* Resuspension model additional parameters */
92 
98 
99  /* Clogging model additional parameters */
100 
105 
106  /* Thermal model additional parameters */
107 
111 
112  /* Coal combustion additional parameters */
113 
117 
120 
123 
124  /* Radiative model additional parameters */
125 
127 
128  /* Statistical class */
129 
131 
132  /* User attributes */
133 
135 
136  /* End of attributes */
137 
139 
141 
143 /* ------------------------------------- */
144 
145 typedef struct {
146 
147  size_t extents; /* size (in bytes) of particle
148  structure */
149  size_t lb; /* size (in bytes) of lower
150  bounds of particle data
151  (work area before) */
152 
153  int n_time_vals; /* number of time values
154  handled */
155 
156  size_t size[CS_LAGR_N_ATTRIBUTES]; /* size (in bytes) of
157  attributes in particle
158  structure for a given
159  time value */
160  cs_datatype_t datatype[CS_LAGR_N_ATTRIBUTES]; /* datatype of associated
161  attributes */
162  int (*count)[CS_LAGR_N_ATTRIBUTES]; /* number of values for each
163  attribute, per associated
164  time_id */
165  ptrdiff_t (*displ)[CS_LAGR_N_ATTRIBUTES]; /* displacement (in bytes) of
166  attributes in particle data,
167  per associated time_id*/
168 
169  ptrdiff_t *source_term_displ; /* displacement (in bytes) of
170  source term values
171  for second-order scheme,
172  or NULL */
173 
175 
176 /* Particle set */
177 /* ------------ */
178 
179 typedef struct {
180 
181  cs_lnum_t n_particles; /* number of particle in domain */
188 
196 
198 
201  unsigned char *p_buffer;
204 
205 /*=============================================================================
206  * Global variables
207  *============================================================================*/
208 
211 extern const char *cs_lagr_attribute_name[];
212 
216 
217 /*============================================================================
218  * Public function prototypes for Fortran API
219  *============================================================================*/
220 
221 /*============================================================================
222  * Public function prototypes
223  *============================================================================*/
224 
225 /*----------------------------------------------------------------------------*/
229 /*----------------------------------------------------------------------------*/
230 
231 void
233 
234 /*----------------------------------------------------------------------------*/
240 /*----------------------------------------------------------------------------*/
241 
244 
245 /*----------------------------------------------------------------------------*/
249 /*----------------------------------------------------------------------------*/
250 
251 void
253 
254 /*----------------------------------------------------------------------------*/
258 /*----------------------------------------------------------------------------*/
259 
260 void
262 
263 /*----------------------------------------------------------------------------*/
272 /*----------------------------------------------------------------------------*/
273 
274 void
276  cs_lnum_t src);
277 
278 /*----------------------------------------------------------------------------*/
297 /*----------------------------------------------------------------------------*/
298 
299 void
301  int time_id,
302  cs_lagr_attribute_t attr,
303  size_t *extents,
304  size_t *size,
305  ptrdiff_t *displ,
306  cs_datatype_t *datatype,
307  int *count);
308 
309 /*----------------------------------------------------------------------------*/
322 /*----------------------------------------------------------------------------*/
323 
324 int
326  cs_lagr_attribute_t attr,
327  cs_datatype_t datatype,
328  int stride,
329  int component_id);
330 
331 /*----------------------------------------------------------------------------*/
339 /*----------------------------------------------------------------------------*/
340 
341 void
343 
344 /*----------------------------------------------------------------------------
345  * Return pointer to the main cs_lagr_particle_set_t structure.
346  *
347  * returns:
348  * pointer to current particle set, or NULL
349  *----------------------------------------------------------------------------*/
350 
353 
354 /*----------------------------------------------------------------------------*/
364 /*----------------------------------------------------------------------------*/
365 
366 inline static void *
368  cs_lnum_t particle_id,
369  cs_lagr_attribute_t attr)
370 {
371  assert(particle_set->p_am->count[0][attr] > 0);
372 
373  return (unsigned char *)particle_set->p_buffer
374  + particle_set->p_am->extents*particle_id
375  + particle_set->p_am->displ[0][attr];
376 }
377 
378 /*----------------------------------------------------------------------------*/
389 /*----------------------------------------------------------------------------*/
390 
391 inline static const void *
393  cs_lnum_t particle_id,
394  cs_lagr_attribute_t attr)
395 {
396  assert(particle_set->p_am->count[0][attr] > 0);
397 
398  return particle_set->p_buffer
399  + particle_set->p_am->extents*particle_id
400  + particle_set->p_am->displ[0][attr];
401 }
402 
403 /*----------------------------------------------------------------------------*/
415 /*----------------------------------------------------------------------------*/
416 
417 inline static void *
419  cs_lnum_t particle_id,
420  int time_id,
421  cs_lagr_attribute_t attr)
422 {
423  assert(particle_set->p_am->count[time_id][attr] > 0);
424 
425  return particle_set->p_buffer
426  + particle_set->p_am->extents*particle_id
427  + particle_set->p_am->displ[time_id][attr];
428 }
429 
430 /*----------------------------------------------------------------------------*/
442 /*----------------------------------------------------------------------------*/
443 
444 inline static const void *
446  cs_lnum_t particle_id,
447  int time_id,
448  cs_lagr_attribute_t attr)
449 {
450  assert(particle_set->p_am->count[time_id][attr] > 0);
451 
452  return particle_set->p_buffer
453  + particle_set->p_am->extents*particle_id
454  + particle_set->p_am->displ[time_id][attr];
455 }
456 
457 /*----------------------------------------------------------------------------*/
467 /*----------------------------------------------------------------------------*/
468 
469 inline static cs_lnum_t
471  cs_lnum_t particle_id,
472  cs_lagr_attribute_t attr)
473 {
474  assert(particle_set->p_am->count[0][attr] > 0);
475 
476  return *((const cs_lnum_t *)( particle_set->p_buffer
477  + particle_set->p_am->extents*particle_id
478  + particle_set->p_am->displ[0][attr]));
479 }
480 
481 /*----------------------------------------------------------------------------*/
493 /*----------------------------------------------------------------------------*/
494 
495 inline static cs_lnum_t
497  cs_lnum_t particle_id,
498  int time_id,
499  cs_lagr_attribute_t attr)
500 {
501  assert(particle_set->p_am->count[time_id][attr] > 0);
502 
503  return *((const cs_lnum_t *)( particle_set->p_buffer
504  + particle_set->p_am->extents*particle_id
505  + particle_set->p_am->displ[time_id][attr]));
506 }
507 
508 /*----------------------------------------------------------------------------*/
517 /*----------------------------------------------------------------------------*/
518 
519 inline static void
521  cs_lnum_t particle_id,
522  cs_lagr_attribute_t attr,
523  cs_lnum_t value)
524 {
525  assert(particle_set->p_am->count[0][attr] > 0);
526 
527  *((cs_lnum_t *)( particle_set->p_buffer
528  + particle_set->p_am->extents*particle_id
529  + particle_set->p_am->displ[0][attr])) = value;
530 }
531 
532 /*----------------------------------------------------------------------------*/
543 /*----------------------------------------------------------------------------*/
544 
545 inline static void
547  cs_lnum_t particle_id,
548  int time_id,
549  cs_lagr_attribute_t attr,
550  cs_lnum_t value)
551 {
552  assert(particle_set->p_am->count[time_id][attr] > 0);
553 
554  *((cs_lnum_t *)( particle_set->p_buffer
555  + particle_set->p_am->extents*particle_id
556  + particle_set->p_am->displ[time_id][attr])) = value;
557 }
558 
559 /*----------------------------------------------------------------------------*/
569 /*----------------------------------------------------------------------------*/
570 
571 inline static cs_gnum_t
573  cs_lnum_t particle_id,
574  cs_lagr_attribute_t attr)
575 {
576  assert(particle_set->p_am->count[0][attr] > 0);
577 
578  return *((const cs_gnum_t *)( particle_set->p_buffer
579  + particle_set->p_am->extents*particle_id
580  + particle_set->p_am->displ[0][attr]));
581 }
582 
583 /*----------------------------------------------------------------------------*/
595 /*----------------------------------------------------------------------------*/
596 
597 inline static cs_gnum_t
599  cs_lnum_t particle_id,
600  int time_id,
601  cs_lagr_attribute_t attr)
602 {
603  assert(particle_set->p_am->count[time_id][attr] > 0);
604 
605  return *((const cs_gnum_t *)( particle_set->p_buffer
606  + particle_set->p_am->extents*particle_id
607  + particle_set->p_am->displ[time_id][attr]));
608 }
609 
610 /*----------------------------------------------------------------------------*/
619 /*----------------------------------------------------------------------------*/
620 
621 inline static void
623  cs_lnum_t particle_id,
624  cs_lagr_attribute_t attr,
625  cs_gnum_t value)
626 {
627  assert(particle_set->p_am->count[0][attr] > 0);
628 
629  *((cs_gnum_t *)( particle_set->p_buffer
630  + particle_set->p_am->extents*particle_id
631  + particle_set->p_am->displ[0][attr])) = value;
632 }
633 
634 /*----------------------------------------------------------------------------*/
645 /*----------------------------------------------------------------------------*/
646 
647 inline static void
649  cs_lnum_t particle_id,
650  int time_id,
651  cs_lagr_attribute_t attr,
652  cs_gnum_t value)
653 {
654  assert(particle_set->p_am->count[time_id][attr] > 0);
655 
656  *((cs_gnum_t *)( particle_set->p_buffer
657  + particle_set->p_am->extents*particle_id
658  + particle_set->p_am->displ[time_id][attr])) = value;
659 }
660 
661 /*----------------------------------------------------------------------------*/
671 /*----------------------------------------------------------------------------*/
672 
673 inline static cs_real_t
675  cs_lnum_t particle_id,
676  cs_lagr_attribute_t attr)
677 {
678  assert(particle_set->p_am->count[0][attr] > 0);
679 
680  return *((const cs_real_t *)( particle_set->p_buffer
681  + particle_set->p_am->extents*particle_id
682  + particle_set->p_am->displ[0][attr]));
683 }
684 
685 /*----------------------------------------------------------------------------*/
697 /*----------------------------------------------------------------------------*/
698 
699 inline static cs_real_t
701  cs_lnum_t particle_id,
702  int time_id,
703  cs_lagr_attribute_t attr)
704 {
705  assert(particle_set->p_am->count[time_id][attr] > 0);
706 
707  return *((const cs_real_t *)( particle_set->p_buffer
708  + particle_set->p_am->extents*particle_id
709  + particle_set->p_am->displ[time_id][attr]));
710 }
711 
712 /*----------------------------------------------------------------------------*/
721 /*----------------------------------------------------------------------------*/
722 
723 inline static void
725  cs_lnum_t particle_id,
726  cs_lagr_attribute_t attr,
727  cs_real_t value)
728 {
729  assert(particle_set->p_am->count[0][attr] > 0);
730 
731  *((cs_real_t *)( particle_set->p_buffer
732  + particle_set->p_am->extents*particle_id
733  + particle_set->p_am->displ[0][attr])) = value;
734 }
735 
736 /*----------------------------------------------------------------------------*/
747 /*----------------------------------------------------------------------------*/
748 
749 inline static void
751  cs_lnum_t particle_id,
752  int time_id,
753  cs_lagr_attribute_t attr,
754  cs_real_t value)
755 {
756  assert(particle_set->p_am->count[time_id][attr] > 0);
757 
758  *((cs_real_t *)( particle_set->p_buffer
759  + particle_set->p_am->extents*particle_id
760  + particle_set->p_am->displ[time_id][attr])) = value;
761 }
762 
763 /*----------------------------------------------------------------------------*/
774 /*----------------------------------------------------------------------------*/
775 
776 inline static cs_real_t *
778  cs_lnum_t particle_id,
779  cs_lagr_attribute_t attr)
780 {
781  assert(particle_set->p_am->source_term_displ != NULL);
782  assert(particle_set->p_am->source_term_displ[attr] >= 0);
783 
784  return (cs_real_t *)( (unsigned char *)particle_set->p_buffer
785  + particle_set->p_am->extents*particle_id
786  + particle_set->p_am->source_term_displ[attr]);
787 }
788 
789 /*----------------------------------------------------------------------------*/
800 /*----------------------------------------------------------------------------*/
801 
802 inline static const cs_real_t *
804  cs_lnum_t particle_id,
805  cs_lagr_attribute_t attr)
806 {
807  assert(particle_set->p_am->source_term_displ != NULL);
808  assert(particle_set->p_am->source_term_displ[attr] >= 0);
809 
810  return (const cs_real_t *)( (unsigned char *)particle_set->p_buffer
811  + particle_set->p_am->extents*particle_id
812  + particle_set->p_am->source_term_displ[attr]);
813 }
814 
815 /*----------------------------------------------------------------------------*/
825 /*----------------------------------------------------------------------------*/
826 
827 inline static void *
828 cs_lagr_particle_attr(void *particle,
829  const cs_lagr_attribute_map_t *attr_map,
830  cs_lagr_attribute_t attr)
831 {
832  assert(attr_map->count[0][attr] > 0);
833 
834  return (unsigned char *)particle + attr_map->displ[0][attr];
835 }
836 
837 /*----------------------------------------------------------------------------*/
847 /*----------------------------------------------------------------------------*/
848 
849 inline static const void *
850 cs_lagr_particle_attr_const(const void *particle,
851  const cs_lagr_attribute_map_t *attr_map,
852  cs_lagr_attribute_t attr)
853 {
854  assert(attr_map->count[0][attr] > 0);
855 
856  return (const unsigned char *)particle + attr_map->displ[0][attr];
857 }
858 
859 /*----------------------------------------------------------------------------*/
870 /*----------------------------------------------------------------------------*/
871 
872 inline static void *
873 cs_lagr_particle_attr_n(void *particle,
874  const cs_lagr_attribute_map_t *attr_map,
875  int time_id,
876  cs_lagr_attribute_t attr)
877 {
878  assert(attr_map->count[time_id][attr] > 0);
879 
880  return (unsigned char *)particle + attr_map->displ[time_id][attr];
881 }
882 
883 /*----------------------------------------------------------------------------*/
894 /*----------------------------------------------------------------------------*/
895 
896 inline static const void *
897 cs_lagr_particle_attr_n_const(const void *particle,
898  const cs_lagr_attribute_map_t *attr_map,
899  int time_id,
900  cs_lagr_attribute_t attr)
901 {
902  assert(attr_map->count[time_id][attr] > 0);
903 
904  return (const unsigned char *)particle
905  + attr_map->displ[time_id][attr];
906 }
907 
908 /*----------------------------------------------------------------------------*/
918 /*----------------------------------------------------------------------------*/
919 
920 inline static cs_lnum_t
921 cs_lagr_particle_get_lnum(const void *particle,
922  const cs_lagr_attribute_map_t *attr_map,
923  cs_lagr_attribute_t attr)
924 {
925  assert(attr_map->count[0][attr] > 0);
926 
927  return *((const cs_lnum_t *)( (const unsigned char *)particle
928  + attr_map->displ[0][attr]));
929 }
930 
931 /*----------------------------------------------------------------------------*/
940 /*----------------------------------------------------------------------------*/
941 
942 inline static cs_lnum_t
943 cs_lagr_particle_get_cell_id(const void *particle,
944  const cs_lagr_attribute_map_t *attr_map)
945 {
946  assert(attr_map->count[0][CS_LAGR_CELL_NUM] > 0);
947 
948  const cs_lnum_t cell_num
949  = *((const cs_lnum_t *)( (const unsigned char *)particle
950  + attr_map->displ[0][CS_LAGR_CELL_NUM]));
951 
952  return CS_ABS(cell_num) - 1;
953 }
954 
955 /*----------------------------------------------------------------------------*/
963 /*----------------------------------------------------------------------------*/
964 
965 inline static void
967  const cs_lagr_attribute_map_t *attr_map,
968  cs_lnum_t cell_id)
969 {
970  assert(attr_map->count[0][CS_LAGR_CELL_NUM] > 0);
971 
972  *((cs_lnum_t *)( (unsigned char *)particle
973  + attr_map->displ[0][CS_LAGR_CELL_NUM]))
974  = cell_id + 1;
975 }
976 
977 /*----------------------------------------------------------------------------*/
989 /*----------------------------------------------------------------------------*/
990 
991 inline static cs_lnum_t
992 cs_lagr_particle_get_lnum_n(const void *particle,
993  const cs_lagr_attribute_map_t *attr_map,
994  int time_id,
995  cs_lagr_attribute_t attr)
996 {
997  assert(attr_map->count[time_id][attr] > 0);
998 
999  return *((const cs_lnum_t *)( (const unsigned char *)particle
1000  + attr_map->displ[time_id][attr]));
1001 }
1002 
1003 /*----------------------------------------------------------------------------*/
1012  /*----------------------------------------------------------------------------*/
1013 
1014 inline static void
1016  const cs_lagr_attribute_map_t *attr_map,
1017  cs_lagr_attribute_t attr,
1018  cs_lnum_t value)
1019 {
1020  assert(attr_map->count[0][attr] > 0);
1021 
1022  *((cs_lnum_t *)((unsigned char *)particle + attr_map->displ[0][attr]))
1023  = value;
1024 }
1025 
1026 /*----------------------------------------------------------------------------*/
1037  /*----------------------------------------------------------------------------*/
1038 
1039 inline static void
1041  const cs_lagr_attribute_map_t *attr_map,
1042  int time_id,
1043  cs_lagr_attribute_t attr,
1044  cs_lnum_t value)
1045 {
1046  assert(attr_map->count[time_id][attr] > 0);
1047 
1048  *((cs_lnum_t *)( (unsigned char *)particle
1049  + attr_map->displ[time_id][attr])) = value;
1050 }
1051 
1052 /*----------------------------------------------------------------------------*/
1062 /*----------------------------------------------------------------------------*/
1063 
1064 inline static cs_gnum_t
1065 cs_lagr_particle_get_gnum(const void *particle,
1066  const cs_lagr_attribute_map_t *attr_map,
1067  cs_lagr_attribute_t attr)
1068 {
1069  assert(attr_map->count[0][attr] > 0);
1070 
1071  return *((const cs_gnum_t *)( (const unsigned char *)particle
1072  + attr_map->displ[0][attr]));
1073 }
1074 
1075 /*----------------------------------------------------------------------------*/
1087 /*----------------------------------------------------------------------------*/
1088 
1089 inline static cs_gnum_t
1090 cs_lagr_particle_get_gnum_n(const void *particle,
1091  const cs_lagr_attribute_map_t *attr_map,
1092  int time_id,
1093  cs_lagr_attribute_t attr)
1094 {
1095  assert(attr_map->count[time_id][attr] > 0);
1096 
1097  return *((const cs_gnum_t *)( (const unsigned char *)particle
1098  + attr_map->displ[time_id][attr]));
1099 }
1100 
1101 /*----------------------------------------------------------------------------*/
1110  /*----------------------------------------------------------------------------*/
1111 
1112 inline static void
1114  const cs_lagr_attribute_map_t *attr_map,
1115  cs_lagr_attribute_t attr,
1116  cs_gnum_t value)
1117 {
1118  assert(attr_map->count[0][attr] > 0);
1119 
1120  *((cs_gnum_t *)((unsigned char *)particle + attr_map->displ[0][attr]))
1121  = value;
1122 }
1123 
1124 /*----------------------------------------------------------------------------*/
1135  /*----------------------------------------------------------------------------*/
1136 
1137 inline static void
1139  const cs_lagr_attribute_map_t *attr_map,
1140  int time_id,
1141  cs_lagr_attribute_t attr,
1142  cs_gnum_t value)
1143 {
1144  assert(attr_map->count[time_id][attr] > 0);
1145 
1146  *((cs_gnum_t *)( (unsigned char *)particle
1147  + attr_map->displ[time_id][attr])) = value;
1148 }
1149 
1150 /*----------------------------------------------------------------------------*/
1160 /*----------------------------------------------------------------------------*/
1161 
1162 inline static cs_real_t
1163 cs_lagr_particle_get_real(const void *particle,
1164  const cs_lagr_attribute_map_t *attr_map,
1165  cs_lagr_attribute_t attr)
1166 {
1167  assert(attr_map->count[0][attr] > 0);
1168 
1169  return *((const cs_real_t *)( (const unsigned char *)particle
1170  + attr_map->displ[0][attr]));
1171 }
1172 
1173 /*----------------------------------------------------------------------------*/
1185 /*----------------------------------------------------------------------------*/
1186 
1187 inline static cs_real_t
1188 cs_lagr_particle_get_real_n(const void *particle,
1189  const cs_lagr_attribute_map_t *attr_map,
1190  int time_id,
1191  cs_lagr_attribute_t attr)
1192 {
1193  assert(attr_map->count[time_id][attr] > 0);
1194 
1195  return *((const cs_real_t *)( (const unsigned char *)particle
1196  + attr_map->displ[time_id][attr]));
1197 }
1198 
1199 /*----------------------------------------------------------------------------*/
1208  /*----------------------------------------------------------------------------*/
1209 
1210 inline static void
1212  const cs_lagr_attribute_map_t *attr_map,
1213  cs_lagr_attribute_t attr,
1214  cs_real_t value)
1215 {
1216  assert(attr_map->count[0][attr] > 0);
1217 
1218  *((cs_real_t *)((unsigned char *)particle + attr_map->displ[0][attr]))
1219  = value;
1220 }
1221 
1222 /*----------------------------------------------------------------------------*/
1233  /*----------------------------------------------------------------------------*/
1234 
1235 inline static void
1237  const cs_lagr_attribute_map_t *attr_map,
1238  int time_id,
1239  cs_lagr_attribute_t attr,
1240  cs_real_t value)
1241 {
1242  assert(attr_map->count[time_id][attr] > 0);
1243 
1244  *((cs_real_t *)( (unsigned char *)particle
1245  + attr_map->displ[time_id][attr])) = value;
1246 }
1247 
1248 /*----------------------------------------------------------------------------*/
1258 /*----------------------------------------------------------------------------*/
1259 
1260 inline static cs_real_t *
1262  const cs_lagr_attribute_map_t *attr_map,
1263  cs_lagr_attribute_t attr)
1264 {
1265  assert(attr_map->source_term_displ != NULL);
1266  assert(attr_map->source_term_displ[attr] >= 0);
1267 
1268  return (cs_real_t *)( (unsigned char *)particle
1269  + attr_map->source_term_displ[attr]);
1270 }
1271 
1272 /*----------------------------------------------------------------------------*/
1282 /*----------------------------------------------------------------------------*/
1283 
1284 inline static const cs_real_t *
1286  const cs_lagr_attribute_map_t *attr_map,
1287  cs_lagr_attribute_t attr)
1288 {
1289  assert(attr_map->source_term_displ != NULL);
1290  assert(attr_map->source_term_displ[attr] >= 0);
1291 
1292  return (const cs_real_t *)( (unsigned char *)particle
1293  + attr_map->source_term_displ[attr]);
1294 }
1295 
1296 /*----------------------------------------------------------------------------
1297  * Resize particle set buffers if needed.
1298  *
1299  * parameters:
1300  * n_particles <-- minumum number of particles required
1301  *
1302  *
1303  * returns:
1304  * 1 if resizing was required, 0 otherwise
1305  *----------------------------------------------------------------------------*/
1306 
1307 int
1308 cs_lagr_particle_set_resize(cs_lnum_t n_min_particles);
1309 
1310 /*----------------------------------------------------------------------------
1311  * Set reallocation factor for particle sets.
1312  *
1313  * This factor determines the multiplier used for reallocations when
1314  * the particle set's buffers are too small to handle the new number of
1315  * particles.
1316  *
1317  * parameters:
1318  * f <-- reallocation size multiplier
1319  *----------------------------------------------------------------------------*/
1320 
1321 void
1323 
1324 /*----------------------------------------------------------------------------*/
1333 /*----------------------------------------------------------------------------*/
1334 
1335 unsigned long long
1337 
1338 /*----------------------------------------------------------------------------*/
1347 /*----------------------------------------------------------------------------*/
1348 
1349 void
1350 cs_lagr_set_n_g_particles_max(unsigned long long n_g_particles_max);
1351 
1352 /*----------------------------------------------------------------------------*/
1359 /*----------------------------------------------------------------------------*/
1360 
1361 void
1363  cs_lnum_t particle_id);
1364 
1365 /*----------------------------------------------------------------------------*/
1371 /*----------------------------------------------------------------------------*/
1372 
1373 void
1375 
1376 /*----------------------------------------------------------------------------*/
1382 /*----------------------------------------------------------------------------*/
1383 
1384 void
1385 cs_lagr_set_n_user_variables(int n_user_variables);
1386 
1387 /*----------------------------------------------------------------------------*/
1388 
1390 
1391 #endif /* __CS_LAGR_PARTICLE_H__ */
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:1065
Definition: cs_lagr_particle.h:67
cs_lnum_t n_part_out
Definition: cs_lagr_particle.h:183
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:418
void cs_lagr_particle_finalize(void)
Destroy main particle set and map if they exist.
Definition: cs_lagr_particle.c:921
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:1261
cs_datatype_t
Definition: cs_defs.h:255
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:496
unsigned long cs_gnum_t
global mesh entity number
Definition: cs_defs.h:281
Definition: cs_lagr_particle.h:93
cs_lagr_particle_set_t * cs_glob_lagr_particle_set
static const cs_real_t * cs_lagr_particle_source_term_const(void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lagr_attribute_t attr)
Get pointer to 2nd order scheme attribute source terms of a particle.
Definition: cs_lagr_particle.h:1285
static void cs_lagr_particle_set_cell_id(void *particle, const cs_lagr_attribute_map_t *attr_map, cs_lnum_t cell_id)
Set cell id of a given particle in a set.
Definition: cs_lagr_particle.h:966
cs_lnum_t n_part_fou
Definition: cs_lagr_particle.h:185
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:1236
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:873
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:1040
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:700
void cs_lagr_particle_attr_initialize(void)
Define particle map based on defined options.
Definition: cs_lagr_particle.c:638
Definition: cs_lagr_particle.h:101
Definition: cs_lagr_particle.h:130
#define CS_ABS(a)
Definition: cs_defs.h:415
ptrdiff_t * source_term_displ
Definition: cs_lagr_particle.h:169
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:921
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:850
Definition: cs_lagr_particle.h:103
Definition: cs_lagr_particle.h:119
cs_lnum_t n_part_resusp
Definition: cs_lagr_particle.h:186
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:392
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:1090
Definition: cs_lagr_particle.h:70
#define BEGIN_C_DECLS
Definition: cs_defs.h:453
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:674
Definition: cs_lagr_particle.h:116
cs_real_t weight_new
Definition: cs_lagr_particle.h:190
Definition: cs_lagr_particle.h:179
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:777
cs_lagr_attribute_t
Definition: cs_lagr_particle.h:51
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:724
cs_real_t weight_resusp
Definition: cs_lagr_particle.h:194
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.c:1195
Definition: cs_lagr_particle.h:78
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.c:1094
cs_real_t weight_fou
Definition: cs_lagr_particle.h:193
Definition: cs_lagr_particle.h:126
Definition: cs_lagr_particle.h:69
Definition: cs_lagr_particle.h:60
int cs_lagr_particle_set_resize(cs_lnum_t n_min_particles)
Resize particle set buffers if needed.
Definition: cs_lagr_particle.c:1114
const cs_lagr_attribute_map_t * p_am
Definition: cs_lagr_particle.h:199
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:648
cs_real_t weight_failed
Definition: cs_lagr_particle.h:195
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:572
Definition: cs_lagr_particle.h:66
Definition: cs_lagr_particle.h:56
cs_real_t weight_dep
Definition: cs_lagr_particle.h:192
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:1138
double cs_real_t
Floating-point value.
Definition: cs_defs.h:297
static cs_lnum_t cs_lagr_particle_get_cell_id(const void *particle, const cs_lagr_attribute_map_t *attr_map)
Get cell id of a given particle in a set.
Definition: cs_lagr_particle.h:943
Definition: cs_lagr_particle.h:54
Definition: cs_lagr_particle.h:87
unsigned char * p_buffer
Definition: cs_lagr_particle.h:201
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:546
void cs_lagr_set_reallocation_factor(double f)
Set reallocation factor for particle sets.
Definition: cs_lagr_particle.c:1145
ptrdiff_t(* displ)[CS_LAGR_N_ATTRIBUTES]
Definition: cs_lagr_particle.h:165
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:897
Definition: cs_lagr_particle.h:85
cs_real_t weight_out
Definition: cs_lagr_particle.h:191
Definition: cs_lagr_particle.h:109
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:828
Definition: cs_lagr_particle.h:64
Definition: cs_lagr_particle.h:121
Definition: cs_lagr_particle.h:94
Definition: cs_lagr_particle.h:88
const char * cs_lagr_attribute_name[]
void cs_lagr_particle_attr_in_range(int attr)
Check if a particle attribute is in a valid range.
Definition: cs_lagr_particle.c:1077
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:750
cs_lnum_t n_part_dep
Definition: cs_lagr_particle.h:184
cs_lnum_t n_particles_max
Definition: cs_lagr_particle.h:197
Definition: cs_lagr_particle.h:77
void cs_lagr_set_n_user_variables(int n_user_variables)
Set number of user particle variables.
Definition: cs_lagr_particle.c:1251
Definition: cs_lagr_particle.h:114
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:622
Definition: cs_lagr_particle.h:110
Definition: cs_lagr_particle.h:89
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:445
Definition: cs_lagr_particle.h:122
Definition: cs_lagr_particle.h:79
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:1188
Definition: cs_lagr_particle.h:61
cs_lnum_t n_part_new
Definition: cs_lagr_particle.h:182
cs_lnum_t n_particles
Definition: cs_lagr_particle.h:181
cs_lnum_t n_failed_part
Definition: cs_lagr_particle.h:187
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:520
void cs_lagr_particle_set_create(void)
Definition: cs_lagr_particle.c:904
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:367
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:1211
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.c:1012
Definition: cs_lagr_particle.h:96
Definition: cs_lagr_particle.h:63
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:803
unsigned long long cs_lagr_get_n_g_particles_max(void)
Get global maximum number of particles.
Definition: cs_lagr_particle.c:1163
Definition: cs_lagr_particle.h:118
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:293
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:1163
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:598
int n_time_vals
Definition: cs_lagr_particle.h:153
Definition: cs_lagr_particle.h:80
Definition: cs_lagr_particle.h:104
Definition: cs_lagr_particle.h:86
size_t lb
Definition: cs_lagr_particle.h:149
#define END_C_DECLS
Definition: cs_defs.h:454
size_t extents
Definition: cs_lagr_particle.h:147
Definition: cs_lagr_particle.h:108
Definition: cs_lagr_particle.h:115
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.c:891
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.c:1180
Definition: cs_lagr_particle.h:65
cs_real_t weight
Definition: cs_lagr_particle.h:189
void cs_lagr_part_copy(cs_lnum_t dest, cs_lnum_t src)
Copy attributes from one particle to another.
Definition: cs_lagr_particle.c:940
Definition: cs_lagr_particle.h:134
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:470
Definition: cs_lagr_particle.h:62
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.c:1222
Definition: cs_lagr_particle.h:53
Definition: cs_lagr_particle.h:145
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:992
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.c:975
Definition: cs_lagr_particle.h:97
Definition: cs_lagr_particle.h:95
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:1015
Definition: cs_lagr_particle.h:76
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:1113
Definition: cs_lagr_particle.h:84
Definition: cs_lagr_particle.h:58
int(* count)[CS_LAGR_N_ATTRIBUTES]
Definition: cs_lagr_particle.h:162
Definition: cs_lagr_particle.h:102
Definition: cs_lagr_particle.h:138