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-2016 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 
57 
68 
69  /* Arrays for 2nd order scheme */
70 
71  CS_LAGR_TURB_STATE_1, /* turbulence characteristics of first pass */
72  CS_LAGR_PRED_VELOCITY, /* 1st step prediction for particle velocity */
73  CS_LAGR_PRED_VELOCITY_SEEN, /* 1st step prediction for relative velocity */
74 
75  /* Deposition submodel additional parameters */
76 
83 
84  /* Resuspension model additional parameters */
85 
91 
92  /* Clogging model additional parameters */
93 
98 
99  /* Thermal model additional parameters */
100 
104 
105  /* Coal combustion additional parameters */
106 
110 
113 
116 
117  /* Radiative model additional parameters */
118 
120 
121  /* Statistical class */
122 
124 
125  /* User attributes */
126 
128 
129  /* End of attributes */
130 
132 
134 
136 /* ------------------------------------- */
137 
138 typedef struct {
139 
140  size_t extents; /* size (in bytes) of particle
141  structure */
142  size_t lb; /* size (in bytes) of lower
143  bounds of particle data
144  (work area before) */
145 
146  int n_time_vals; /* number of time values
147  handled */
148 
149  size_t size[CS_LAGR_N_ATTRIBUTES]; /* size (in bytes) of
150  attributes in particle
151  structure for a given
152  time value */
153  cs_datatype_t datatype[CS_LAGR_N_ATTRIBUTES]; /* datatype of associated
154  attributes */
155  int (*count)[CS_LAGR_N_ATTRIBUTES]; /* number of values for each
156  attribute, per associated
157  time_id */
158  ptrdiff_t (*displ)[CS_LAGR_N_ATTRIBUTES]; /* displacement (in bytes) of
159  attributes in particle data,
160  per associated time_id*/
161 
162  ptrdiff_t *source_term_displ; /* displacement (in bytes) of
163  source term values
164  for second-order scheme,
165  or NULL */
166 
168 
169 /* Particle set */
170 /* ------------ */
171 
172 typedef struct {
173 
174  cs_lnum_t n_particles; /* number of particle in domain */
181 
189 
191 
194  unsigned char *p_buffer;
197 
198 /*=============================================================================
199  * Global variables
200  *============================================================================*/
201 
204 extern const char *cs_lagr_attribute_name[];
205 
209 
210 /*============================================================================
211  * Public function prototypes for Fortran API
212  *============================================================================*/
213 
214 /*============================================================================
215  * Public function prototypes
216  *============================================================================*/
217 
218 /*----------------------------------------------------------------------------*/
222 /*----------------------------------------------------------------------------*/
223 
224 void
226 
227 /*----------------------------------------------------------------------------*/
233 /*----------------------------------------------------------------------------*/
234 
237 
238 /*----------------------------------------------------------------------------*/
242 /*----------------------------------------------------------------------------*/
243 
244 void
246 
247 /*----------------------------------------------------------------------------*/
251 /*----------------------------------------------------------------------------*/
252 
253 void
255 
256 /*----------------------------------------------------------------------------*/
265 /*----------------------------------------------------------------------------*/
266 
267 void
269  cs_lnum_t src);
270 
271 /*----------------------------------------------------------------------------*/
290 /*----------------------------------------------------------------------------*/
291 
292 void
294  int time_id,
295  cs_lagr_attribute_t attr,
296  size_t *extents,
297  size_t *size,
298  ptrdiff_t *displ,
299  cs_datatype_t *datatype,
300  int *count);
301 
302 /*----------------------------------------------------------------------------*/
310 /*----------------------------------------------------------------------------*/
311 
312 void
314 
315 /*----------------------------------------------------------------------------
316  * Return pointer to the main cs_lagr_particle_set_t structure.
317  *
318  * returns:
319  * pointer to current particle set, or NULL
320  *----------------------------------------------------------------------------*/
321 
324 
325 /*----------------------------------------------------------------------------*/
335 /*----------------------------------------------------------------------------*/
336 
337 inline static void *
339  cs_lnum_t particle_id,
340  cs_lagr_attribute_t attr)
341 {
342  assert(particle_set->p_am->count[0][attr] > 0);
343 
344  return (unsigned char *)particle_set->p_buffer
345  + particle_set->p_am->extents*particle_id
346  + particle_set->p_am->displ[0][attr];
347 }
348 
349 /*----------------------------------------------------------------------------*/
360 /*----------------------------------------------------------------------------*/
361 
362 inline static const void *
364  cs_lnum_t particle_id,
365  cs_lagr_attribute_t attr)
366 {
367  assert(particle_set->p_am->count[0][attr] > 0);
368 
369  return particle_set->p_buffer
370  + particle_set->p_am->extents*particle_id
371  + particle_set->p_am->displ[0][attr];
372 }
373 
374 /*----------------------------------------------------------------------------*/
386 /*----------------------------------------------------------------------------*/
387 
388 inline static void *
390  cs_lnum_t particle_id,
391  int time_id,
392  cs_lagr_attribute_t attr)
393 {
394  assert(particle_set->p_am->count[time_id][attr] > 0);
395 
396  return particle_set->p_buffer
397  + particle_set->p_am->extents*particle_id
398  + particle_set->p_am->displ[time_id][attr];
399 }
400 
401 /*----------------------------------------------------------------------------*/
413 /*----------------------------------------------------------------------------*/
414 
415 inline static const void *
417  cs_lnum_t particle_id,
418  int time_id,
419  cs_lagr_attribute_t attr)
420 {
421  assert(particle_set->p_am->count[time_id][attr] > 0);
422 
423  return particle_set->p_buffer
424  + particle_set->p_am->extents*particle_id
425  + particle_set->p_am->displ[time_id][attr];
426 }
427 
428 /*----------------------------------------------------------------------------*/
438 /*----------------------------------------------------------------------------*/
439 
440 inline static cs_lnum_t
442  cs_lnum_t particle_id,
443  cs_lagr_attribute_t attr)
444 {
445  assert(particle_set->p_am->count[0][attr] > 0);
446 
447  return *((const cs_lnum_t *)( particle_set->p_buffer
448  + particle_set->p_am->extents*particle_id
449  + particle_set->p_am->displ[0][attr]));
450 }
451 
452 /*----------------------------------------------------------------------------*/
464 /*----------------------------------------------------------------------------*/
465 
466 inline static cs_lnum_t
468  cs_lnum_t particle_id,
469  int time_id,
470  cs_lagr_attribute_t attr)
471 {
472  assert(particle_set->p_am->count[time_id][attr] > 0);
473 
474  return *((const cs_lnum_t *)( particle_set->p_buffer
475  + particle_set->p_am->extents*particle_id
476  + particle_set->p_am->displ[time_id][attr]));
477 }
478 
479 /*----------------------------------------------------------------------------*/
488 /*----------------------------------------------------------------------------*/
489 
490 inline static void
492  cs_lnum_t particle_id,
493  cs_lagr_attribute_t attr,
494  cs_lnum_t value)
495 {
496  assert(particle_set->p_am->count[0][attr] > 0);
497 
498  *((cs_lnum_t *)( particle_set->p_buffer
499  + particle_set->p_am->extents*particle_id
500  + particle_set->p_am->displ[0][attr])) = value;
501 }
502 
503 /*----------------------------------------------------------------------------*/
514 /*----------------------------------------------------------------------------*/
515 
516 inline static void
518  cs_lnum_t particle_id,
519  int time_id,
520  cs_lagr_attribute_t attr,
521  cs_lnum_t value)
522 {
523  assert(particle_set->p_am->count[time_id][attr] > 0);
524 
525  *((cs_lnum_t *)( particle_set->p_buffer
526  + particle_set->p_am->extents*particle_id
527  + particle_set->p_am->displ[time_id][attr])) = value;
528 }
529 
530 /*----------------------------------------------------------------------------*/
540 /*----------------------------------------------------------------------------*/
541 
542 inline static cs_gnum_t
544  cs_lnum_t particle_id,
545  cs_lagr_attribute_t attr)
546 {
547  assert(particle_set->p_am->count[0][attr] > 0);
548 
549  return *((const cs_gnum_t *)( particle_set->p_buffer
550  + particle_set->p_am->extents*particle_id
551  + particle_set->p_am->displ[0][attr]));
552 }
553 
554 /*----------------------------------------------------------------------------*/
566 /*----------------------------------------------------------------------------*/
567 
568 inline static cs_gnum_t
570  cs_lnum_t particle_id,
571  int time_id,
572  cs_lagr_attribute_t attr)
573 {
574  assert(particle_set->p_am->count[time_id][attr] > 0);
575 
576  return *((const cs_gnum_t *)( particle_set->p_buffer
577  + particle_set->p_am->extents*particle_id
578  + particle_set->p_am->displ[time_id][attr]));
579 }
580 
581 /*----------------------------------------------------------------------------*/
590 /*----------------------------------------------------------------------------*/
591 
592 inline static void
594  cs_lnum_t particle_id,
595  cs_lagr_attribute_t attr,
596  cs_gnum_t value)
597 {
598  assert(particle_set->p_am->count[0][attr] > 0);
599 
600  *((cs_gnum_t *)( particle_set->p_buffer
601  + particle_set->p_am->extents*particle_id
602  + particle_set->p_am->displ[0][attr])) = value;
603 }
604 
605 /*----------------------------------------------------------------------------*/
616 /*----------------------------------------------------------------------------*/
617 
618 inline static void
620  cs_lnum_t particle_id,
621  int time_id,
622  cs_lagr_attribute_t attr,
623  cs_gnum_t value)
624 {
625  assert(particle_set->p_am->count[time_id][attr] > 0);
626 
627  *((cs_gnum_t *)( particle_set->p_buffer
628  + particle_set->p_am->extents*particle_id
629  + particle_set->p_am->displ[time_id][attr])) = value;
630 }
631 
632 /*----------------------------------------------------------------------------*/
642 /*----------------------------------------------------------------------------*/
643 
644 inline static cs_real_t
646  cs_lnum_t particle_id,
647  cs_lagr_attribute_t attr)
648 {
649  assert(particle_set->p_am->count[0][attr] > 0);
650 
651  return *((const cs_real_t *)( particle_set->p_buffer
652  + particle_set->p_am->extents*particle_id
653  + particle_set->p_am->displ[0][attr]));
654 }
655 
656 /*----------------------------------------------------------------------------*/
668 /*----------------------------------------------------------------------------*/
669 
670 inline static cs_real_t
672  cs_lnum_t particle_id,
673  int time_id,
674  cs_lagr_attribute_t attr)
675 {
676  assert(particle_set->p_am->count[time_id][attr] > 0);
677 
678  return *((const cs_real_t *)( particle_set->p_buffer
679  + particle_set->p_am->extents*particle_id
680  + particle_set->p_am->displ[time_id][attr]));
681 }
682 
683 /*----------------------------------------------------------------------------*/
692 /*----------------------------------------------------------------------------*/
693 
694 inline static void
696  cs_lnum_t particle_id,
697  cs_lagr_attribute_t attr,
698  cs_real_t value)
699 {
700  assert(particle_set->p_am->count[0][attr] > 0);
701 
702  *((cs_real_t *)( particle_set->p_buffer
703  + particle_set->p_am->extents*particle_id
704  + particle_set->p_am->displ[0][attr])) = value;
705 }
706 
707 /*----------------------------------------------------------------------------*/
718 /*----------------------------------------------------------------------------*/
719 
720 inline static void
722  cs_lnum_t particle_id,
723  int time_id,
724  cs_lagr_attribute_t attr,
725  cs_real_t value)
726 {
727  assert(particle_set->p_am->count[time_id][attr] > 0);
728 
729  *((cs_real_t *)( particle_set->p_buffer
730  + particle_set->p_am->extents*particle_id
731  + particle_set->p_am->displ[time_id][attr])) = value;
732 }
733 
734 /*----------------------------------------------------------------------------*/
745 /*----------------------------------------------------------------------------*/
746 
747 inline static cs_real_t *
749  cs_lnum_t particle_id,
750  cs_lagr_attribute_t attr)
751 {
752  assert(particle_set->p_am->source_term_displ != NULL);
753  assert(particle_set->p_am->source_term_displ[attr] >= 0);
754 
755  return (cs_real_t *)( (unsigned char *)particle_set->p_buffer
756  + particle_set->p_am->extents*particle_id
757  + particle_set->p_am->source_term_displ[attr]);
758 }
759 
760 /*----------------------------------------------------------------------------*/
771 /*----------------------------------------------------------------------------*/
772 
773 inline static const cs_real_t *
775  cs_lnum_t particle_id,
776  cs_lagr_attribute_t attr)
777 {
778  assert(particle_set->p_am->source_term_displ != NULL);
779  assert(particle_set->p_am->source_term_displ[attr] >= 0);
780 
781  return (const cs_real_t *)( (unsigned char *)particle_set->p_buffer
782  + particle_set->p_am->extents*particle_id
783  + particle_set->p_am->source_term_displ[attr]);
784 }
785 
786 /*----------------------------------------------------------------------------*/
796 /*----------------------------------------------------------------------------*/
797 
798 inline static void *
799 cs_lagr_particle_attr(void *particle,
800  const cs_lagr_attribute_map_t *attr_map,
801  cs_lagr_attribute_t attr)
802 {
803  assert(attr_map->count[0][attr] > 0);
804 
805  return (unsigned char *)particle + attr_map->displ[0][attr];
806 }
807 
808 /*----------------------------------------------------------------------------*/
818 /*----------------------------------------------------------------------------*/
819 
820 inline static const void *
821 cs_lagr_particle_attr_const(const void *particle,
822  const cs_lagr_attribute_map_t *attr_map,
823  cs_lagr_attribute_t attr)
824 {
825  assert(attr_map->count[0][attr] > 0);
826 
827  return (const unsigned char *)particle + attr_map->displ[0][attr];
828 }
829 
830 /*----------------------------------------------------------------------------*/
841 /*----------------------------------------------------------------------------*/
842 
843 inline static void *
844 cs_lagr_particle_attr_n(void *particle,
845  const cs_lagr_attribute_map_t *attr_map,
846  int time_id,
847  cs_lagr_attribute_t attr)
848 {
849  assert(attr_map->count[time_id][attr] > 0);
850 
851  return (unsigned char *)particle + attr_map->displ[time_id][attr];
852 }
853 
854 /*----------------------------------------------------------------------------*/
865 /*----------------------------------------------------------------------------*/
866 
867 inline static const void *
868 cs_lagr_particle_attr_n_const(const void *particle,
869  const cs_lagr_attribute_map_t *attr_map,
870  int time_id,
871  cs_lagr_attribute_t attr)
872 {
873  assert(attr_map->count[time_id][attr] > 0);
874 
875  return (const unsigned char *)particle
876  + attr_map->displ[time_id][attr];
877 }
878 
879 /*----------------------------------------------------------------------------*/
889 /*----------------------------------------------------------------------------*/
890 
891 inline static cs_lnum_t
892 cs_lagr_particle_get_lnum(const void *particle,
893  const cs_lagr_attribute_map_t *attr_map,
894  cs_lagr_attribute_t attr)
895 {
896  assert(attr_map->count[0][attr] > 0);
897 
898  return *((const cs_lnum_t *)( (const unsigned char *)particle
899  + attr_map->displ[0][attr]));
900 }
901 
902 /*----------------------------------------------------------------------------*/
911 /*----------------------------------------------------------------------------*/
912 
913 inline static cs_lnum_t
914 cs_lagr_particle_get_cell_id(const void *particle,
915  const cs_lagr_attribute_map_t *attr_map)
916 {
917  assert(attr_map->count[0][CS_LAGR_CELL_NUM] > 0);
918 
919  const cs_lnum_t cell_num
920  = *((const cs_lnum_t *)( (const unsigned char *)particle
921  + attr_map->displ[0][CS_LAGR_CELL_NUM]));
922 
923  return CS_ABS(cell_num) - 1;
924 }
925 
926 /*----------------------------------------------------------------------------*/
934 /*----------------------------------------------------------------------------*/
935 
936 inline static void
938  cs_lnum_t particle_id,
939  cs_lnum_t cell_id)
940 {
941  cs_lagr_particles_set_lnum(particle_set, particle_id, CS_LAGR_CELL_NUM,
942  cell_id + 1);
943 }
944 
945 /*----------------------------------------------------------------------------*/
957 /*----------------------------------------------------------------------------*/
958 
959 inline static cs_lnum_t
960 cs_lagr_particle_get_lnum_n(const void *particle,
961  const cs_lagr_attribute_map_t *attr_map,
962  int time_id,
963  cs_lagr_attribute_t attr)
964 {
965  assert(attr_map->count[time_id][attr] > 0);
966 
967  return *((const cs_lnum_t *)( (const unsigned char *)particle
968  + attr_map->displ[time_id][attr]));
969 }
970 
971 /*----------------------------------------------------------------------------*/
980  /*----------------------------------------------------------------------------*/
981 
982 inline static void
984  const cs_lagr_attribute_map_t *attr_map,
985  cs_lagr_attribute_t attr,
986  cs_lnum_t value)
987 {
988  assert(attr_map->count[0][attr] > 0);
989 
990  *((cs_lnum_t *)((unsigned char *)particle + attr_map->displ[0][attr]))
991  = value;
992 }
993 
994 /*----------------------------------------------------------------------------*/
1005  /*----------------------------------------------------------------------------*/
1006 
1007 inline static void
1009  const cs_lagr_attribute_map_t *attr_map,
1010  int time_id,
1011  cs_lagr_attribute_t attr,
1012  cs_lnum_t value)
1013 {
1014  assert(attr_map->count[time_id][attr] > 0);
1015 
1016  *((cs_lnum_t *)( (unsigned char *)particle
1017  + attr_map->displ[time_id][attr])) = value;
1018 }
1019 
1020 /*----------------------------------------------------------------------------*/
1030 /*----------------------------------------------------------------------------*/
1031 
1032 inline static cs_gnum_t
1033 cs_lagr_particle_get_gnum(const void *particle,
1034  const cs_lagr_attribute_map_t *attr_map,
1035  cs_lagr_attribute_t attr)
1036 {
1037  assert(attr_map->count[0][attr] > 0);
1038 
1039  return *((const cs_gnum_t *)( (const unsigned char *)particle
1040  + attr_map->displ[0][attr]));
1041 }
1042 
1043 /*----------------------------------------------------------------------------*/
1055 /*----------------------------------------------------------------------------*/
1056 
1057 inline static cs_gnum_t
1058 cs_lagr_particle_get_gnum_n(const void *particle,
1059  const cs_lagr_attribute_map_t *attr_map,
1060  int time_id,
1061  cs_lagr_attribute_t attr)
1062 {
1063  assert(attr_map->count[time_id][attr] > 0);
1064 
1065  return *((const cs_gnum_t *)( (const unsigned char *)particle
1066  + attr_map->displ[time_id][attr]));
1067 }
1068 
1069 /*----------------------------------------------------------------------------*/
1078  /*----------------------------------------------------------------------------*/
1079 
1080 inline static void
1082  const cs_lagr_attribute_map_t *attr_map,
1083  cs_lagr_attribute_t attr,
1084  cs_gnum_t value)
1085 {
1086  assert(attr_map->count[0][attr] > 0);
1087 
1088  *((cs_gnum_t *)((unsigned char *)particle + attr_map->displ[0][attr]))
1089  = value;
1090 }
1091 
1092 /*----------------------------------------------------------------------------*/
1103  /*----------------------------------------------------------------------------*/
1104 
1105 inline static void
1107  const cs_lagr_attribute_map_t *attr_map,
1108  int time_id,
1109  cs_lagr_attribute_t attr,
1110  cs_gnum_t value)
1111 {
1112  assert(attr_map->count[time_id][attr] > 0);
1113 
1114  *((cs_gnum_t *)( (unsigned char *)particle
1115  + attr_map->displ[time_id][attr])) = value;
1116 }
1117 
1118 /*----------------------------------------------------------------------------*/
1128 /*----------------------------------------------------------------------------*/
1129 
1130 inline static cs_real_t
1131 cs_lagr_particle_get_real(const void *particle,
1132  const cs_lagr_attribute_map_t *attr_map,
1133  cs_lagr_attribute_t attr)
1134 {
1135  assert(attr_map->count[0][attr] > 0);
1136 
1137  return *((const cs_real_t *)( (const unsigned char *)particle
1138  + attr_map->displ[0][attr]));
1139 }
1140 
1141 /*----------------------------------------------------------------------------*/
1153 /*----------------------------------------------------------------------------*/
1154 
1155 inline static cs_real_t
1156 cs_lagr_particle_get_real_n(const void *particle,
1157  const cs_lagr_attribute_map_t *attr_map,
1158  int time_id,
1159  cs_lagr_attribute_t attr)
1160 {
1161  assert(attr_map->count[time_id][attr] > 0);
1162 
1163  return *((const cs_real_t *)( (const unsigned char *)particle
1164  + attr_map->displ[time_id][attr]));
1165 }
1166 
1167 /*----------------------------------------------------------------------------*/
1176  /*----------------------------------------------------------------------------*/
1177 
1178 inline static void
1180  const cs_lagr_attribute_map_t *attr_map,
1181  cs_lagr_attribute_t attr,
1182  cs_real_t value)
1183 {
1184  assert(attr_map->count[0][attr] > 0);
1185 
1186  *((cs_real_t *)((unsigned char *)particle + attr_map->displ[0][attr]))
1187  = value;
1188 }
1189 
1190 /*----------------------------------------------------------------------------*/
1201  /*----------------------------------------------------------------------------*/
1202 
1203 inline static void
1205  const cs_lagr_attribute_map_t *attr_map,
1206  int time_id,
1207  cs_lagr_attribute_t attr,
1208  cs_real_t value)
1209 {
1210  assert(attr_map->count[time_id][attr] > 0);
1211 
1212  *((cs_real_t *)( (unsigned char *)particle
1213  + attr_map->displ[time_id][attr])) = value;
1214 }
1215 
1216 /*----------------------------------------------------------------------------*/
1226 /*----------------------------------------------------------------------------*/
1227 
1228 inline static cs_real_t *
1230  const cs_lagr_attribute_map_t *attr_map,
1231  cs_lagr_attribute_t attr)
1232 {
1233  assert(attr_map->source_term_displ != NULL);
1234  assert(attr_map->source_term_displ[attr] >= 0);
1235 
1236  return (cs_real_t *)( (unsigned char *)particle
1237  + attr_map->source_term_displ[attr]);
1238 }
1239 
1240 /*----------------------------------------------------------------------------*/
1250 /*----------------------------------------------------------------------------*/
1251 
1252 inline static const cs_real_t *
1254  const cs_lagr_attribute_map_t *attr_map,
1255  cs_lagr_attribute_t attr)
1256 {
1257  assert(attr_map->source_term_displ != NULL);
1258  assert(attr_map->source_term_displ[attr] >= 0);
1259 
1260  return (const cs_real_t *)( (unsigned char *)particle
1261  + attr_map->source_term_displ[attr]);
1262 }
1263 
1264 /*----------------------------------------------------------------------------
1265  * Resize particle set buffers if needed.
1266  *
1267  * parameters:
1268  * n_particles <-- minumum number of particles required
1269  *
1270  *
1271  * returns:
1272  * 1 if resizing was required, 0 otherwise
1273  *----------------------------------------------------------------------------*/
1274 
1275 int
1276 cs_lagr_particle_set_resize(cs_lnum_t n_min_particles);
1277 
1278 /*----------------------------------------------------------------------------
1279  * Set reallocation factor for particle sets.
1280  *
1281  * This factor determines the multiplier used for reallocations when
1282  * the particle set's buffers are too small to handle the new number of
1283  * particles.
1284  *
1285  * parameters:
1286  * f <-- reallocation size multiplier
1287  *----------------------------------------------------------------------------*/
1288 
1289 void
1291 
1292 /*----------------------------------------------------------------------------
1293  * \brief Set global maximum number of particles.
1294  *
1295  * By default, the number is limited only by local cs_lnum_t and global
1296  * cs_gnum_t data representation limits.
1297  *
1298  * parameters:
1299  * n_g_particles_max <-- global maximum number of particles
1300 *----------------------------------------------------------------------------*/
1301 
1302 void
1303 cs_lagr_set_n_g_particles_max(unsigned long long n_g_particles_max);
1304 
1305 /*----------------------------------------------------------------------------*/
1312 /*----------------------------------------------------------------------------*/
1313 
1314 void
1316  cs_lnum_t particle_id);
1317 
1318 /*----------------------------------------------------------------------------*/
1324 /*----------------------------------------------------------------------------*/
1325 
1326 void
1328 
1329 /*----------------------------------------------------------------------------*/
1335 /*----------------------------------------------------------------------------*/
1336 
1337 void
1338 cs_lagr_set_n_user_variables(int n_user_variables);
1339 
1340 /*----------------------------------------------------------------------------*/
1341 
1343 
1344 #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:1033
Definition: cs_lagr_particle.h:67
cs_lnum_t n_part_out
Definition: cs_lagr_particle.h:176
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:389
void cs_lagr_particle_finalize(void)
Destroy main particle set and map if they exist.
Definition: cs_lagr_particle.c:902
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:1229
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:467
unsigned long cs_gnum_t
global mesh entity number
Definition: cs_defs.h:280
Definition: cs_lagr_particle.h:86
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:1253
cs_lnum_t n_part_fou
Definition: cs_lagr_particle.h:178
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:1204
static void cs_lagr_particle_set_cell_id(cs_lagr_particle_set_t *particle_set, cs_lnum_t particle_id, cs_lnum_t cell_id)
Set cell id of a given particle in a set.
Definition: cs_lagr_particle.h:937
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:844
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:1008
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:671
void cs_lagr_particle_attr_initialize(void)
Define particle map based on defined options.
Definition: cs_lagr_particle.c:637
Definition: cs_lagr_particle.h:94
Definition: cs_lagr_particle.h:123
#define CS_ABS(a)
Definition: cs_defs.h:411
ptrdiff_t * source_term_displ
Definition: cs_lagr_particle.h:162
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:892
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:821
Definition: cs_lagr_particle.h:96
Definition: cs_lagr_particle.h:112
cs_lnum_t n_part_resusp
Definition: cs_lagr_particle.h:179
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:363
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:1058
#define BEGIN_C_DECLS
Definition: cs_defs.h:448
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:645
Definition: cs_lagr_particle.h:109
cs_real_t weight_new
Definition: cs_lagr_particle.h:183
Definition: cs_lagr_particle.h:172
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:748
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:695
cs_real_t weight_resusp
Definition: cs_lagr_particle.h:187
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:1090
Definition: cs_lagr_particle.h:73
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:1006
cs_real_t weight_fou
Definition: cs_lagr_particle.h:186
Definition: cs_lagr_particle.h:119
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:1026
const cs_lagr_attribute_map_t * p_am
Definition: cs_lagr_particle.h:192
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:619
cs_real_t weight_failed
Definition: cs_lagr_particle.h:188
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:543
Definition: cs_lagr_particle.h:66
cs_real_t weight_dep
Definition: cs_lagr_particle.h:185
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:1106
double cs_real_t
Floating-point value.
Definition: cs_defs.h:296
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:914
Definition: cs_lagr_particle.h:54
Definition: cs_lagr_particle.h:80
unsigned char * p_buffer
Definition: cs_lagr_particle.h:194
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:517
void cs_lagr_set_reallocation_factor(double f)
Set reallocation factor for particle sets.
Definition: cs_lagr_particle.c:1057
Definition: cs_lagr_particle.h:56
ptrdiff_t(* displ)[CS_LAGR_N_ATTRIBUTES]
Definition: cs_lagr_particle.h:158
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:868
Definition: cs_lagr_particle.h:78
cs_real_t weight_out
Definition: cs_lagr_particle.h:184
Definition: cs_lagr_particle.h:102
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:799
Definition: cs_lagr_particle.h:64
Definition: cs_lagr_particle.h:114
Definition: cs_lagr_particle.h:87
Definition: cs_lagr_particle.h:81
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:989
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:721
cs_lnum_t n_part_dep
Definition: cs_lagr_particle.h:177
cs_lnum_t n_particles_max
Definition: cs_lagr_particle.h:190
Definition: cs_lagr_particle.h:72
void cs_lagr_set_n_user_variables(int n_user_variables)
Set number of user particle variables.
Definition: cs_lagr_particle.c:1146
Definition: cs_lagr_particle.h:107
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:593
Definition: cs_lagr_particle.h:103
Definition: cs_lagr_particle.h:82
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:416
Definition: cs_lagr_particle.h:115
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:1156
Definition: cs_lagr_particle.h:61
cs_lnum_t n_part_new
Definition: cs_lagr_particle.h:175
cs_lnum_t n_particles
Definition: cs_lagr_particle.h:174
cs_lnum_t n_failed_part
Definition: cs_lagr_particle.h:180
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:491
void cs_lagr_particle_set_create(void)
Definition: cs_lagr_particle.c:885
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:338
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:1179
Definition: cs_lagr_particle.h:89
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:774
Definition: cs_lagr_particle.h:111
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:292
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:1131
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:569
int n_time_vals
Definition: cs_lagr_particle.h:146
Definition: cs_lagr_particle.h:97
Definition: cs_lagr_particle.h:79
size_t lb
Definition: cs_lagr_particle.h:142
#define END_C_DECLS
Definition: cs_defs.h:449
size_t extents
Definition: cs_lagr_particle.h:140
Definition: cs_lagr_particle.h:101
Definition: cs_lagr_particle.h:108
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:872
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:1075
Definition: cs_lagr_particle.h:65
cs_real_t weight
Definition: cs_lagr_particle.h:182
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:921
Definition: cs_lagr_particle.h:127
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:441
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:1117
Definition: cs_lagr_particle.h:53
Definition: cs_lagr_particle.h:138
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:960
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:957
Definition: cs_lagr_particle.h:90
Definition: cs_lagr_particle.h:88
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:983
Definition: cs_lagr_particle.h:71
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:1081
Definition: cs_lagr_particle.h:77
Definition: cs_lagr_particle.h:58
int(* count)[CS_LAGR_N_ATTRIBUTES]
Definition: cs_lagr_particle.h:155
Definition: cs_lagr_particle.h:95
Definition: cs_lagr_particle.h:131