8.3
general documentation
cs_measures_util.h
Go to the documentation of this file.
1#ifndef __CS_MEASURES_H__
2#define __CS_MEASURES_H__
3
4/*============================================================================
5 * Field management.
6 *============================================================================*/
7
8/*
9 This file is part of code_saturne, a general-purpose CFD tool.
10
11 Copyright (C) 1998-2024 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#if defined(HAVE_MPI)
31#include <mpi.h>
32#endif
33
34/*----------------------------------------------------------------------------
35 * Local headers
36 *----------------------------------------------------------------------------*/
37
38#include "cs_defs.h"
39
40/*----------------------------------------------------------------------------*/
41
43/*----------------------------------------------------------------------------
44 * Definition of the measures set structure
45 *----------------------------------------------------------------------------*/
46
47typedef struct _cs_measures_set_t {
48
49 const char *name; /* Name */
50 int id; /* Measures set id */
51 int type; /* Measures set type flag
52 not yet used */
53 int dim; /* Measures set dimension */
54 int *comp_ids; /* index of components of measures if
55 dim > 1 */
56 cs_lnum_t nb_measures; /* Number of measures */
57 cs_lnum_t nb_measures_max; /* Dynamic reallocation parameter */
58 bool interleaved; /* Is measures set interleaved ? */
59 int *is_cressman; /* Is measure cressman interpolated?
60 0: no
61 1: yes */
62 int *is_interpol; /* Is measure taken into account for
63 interpolation ?
64 0: no
65 1: yes */
66 cs_real_t *coords; /* measures coordinates */
67 cs_real_t *measures; /* measures values */
68 cs_real_t *inf_radius; /* influence radius */
69
71
72typedef struct _cs_interpol_grid_t {
73
74 const char *name; /* Name */
75 int id; /* Grid id */
76 cs_lnum_t nb_points; /* Number of grid points */
77 bool is_connect; /* Is connectivity computed? */
78 cs_real_t *coords; /* measures coordinates */
79 cs_lnum_t *cell_connect; /* Mesh -> grid connectivity */
80 int *rank_connect; /* Rank location */
81
83
84/*----------------------------------------------------------------------------
85 * Interpolate mesh field on interpol grid structure.
86 *
87 * This function is deprecated because it take 1 value of the 3D field to
88 * the 1D grid...
89 *
90 * parameters:
91 * ig <-- pointer to the interpolation grid structure
92 * values_to_interpol <-- field on mesh (size = n_cells)
93 * interpolated_values --> interpolated values on the interpolation grid
94 * structure (size = ig->nb_point)
95 *----------------------------------------------------------------------------*/
96
97void
99 const cs_real_t *values_to_interpol,
100 cs_real_t *interpoled_values);
101
102/*----------------------------------------------------------------------------
103 * Interpolate mesh field on interpol grid structure.
104 *
105 * parameters:
106 * ig <-- pointer to the interpolation grid structure
107 * values_to_interpol <-- field on mesh (size = n_cells)
108 * interpolated_values --> interpolated values on the interpolation grid
109 * structure (size = ig->nb_point)
110 *----------------------------------------------------------------------------*/
111
112void
114 const cs_real_t *values_to_interpol,
115 cs_real_t *interpoled_values);
116
117/*----------------------------------------------------------------------------
118 * Create an interpolation grid descriptor.
119 *
120 * For measures set with a dimension greater than 1, components are interleaved.
121 *
122 * parameters:
123 * name <-- grid name
124 *
125 * returns:
126 * pointer to new interpolation grid.
127 *
128 *----------------------------------------------------------------------------*/
129
131cs_interpol_grid_create(const char *name);
132
133/*----------------------------------------------------------------------------
134 * Create interpolation grid.
135 *
136 * parameters:
137 * ig <-- pointer to an interpol grid structure
138 * nb_points <-- number of considered points
139 * coord <-- coordonates of considered points
140 *----------------------------------------------------------------------------*/
141
142void
144 const cs_lnum_t nb_points,
145 const cs_real_t *coords);
146
147/*----------------------------------------------------------------------------
148 * Create a measures set descriptor.
149 *
150 * For measures set with a dimension greater than 1, components are interleaved.
151 *
152 * parameters:
153 * name <-- measures set name
154 * type_flag <-- mask of field property and category values (not used yet)
155 * dim <-- measure set dimension (number of components)
156 * interleaved <-- if dim > 1, indicate if field is interleaved
157 *
158 * returns:
159 * pointer to new measures set.
160 *
161 *----------------------------------------------------------------------------*/
162
164cs_measures_set_create(const char *name,
165 int type_flag,
166 int dim,
167 bool interleaved);
168
169/*----------------------------------------------------------------------------
170 * (re)Allocate and fill in a measures set structure with an array of measures.
171 *
172 * parameters:
173 * ms <-- pointer to the measures set
174 * nb_measures <-- number of measures
175 * is_cressman <-- for each measure cressman interpolation is:
176 * 0: not used
177 * 1: used
178 * is_interpol <-- for the interpolation on mesh, each measure is
179 * 0: not taken into account
180 * 1: taken into account
181 * measures_coords <-- measures spaces coordonates
182 * measures <-- measures values (associated to coordinates)
183 * influence_radius <-- influence radius for interpolation (xyz interleaved)
184 *----------------------------------------------------------------------------*/
185
186void
188 const cs_lnum_t nb_measures,
189 const int *is_cressman,
190 const int *is_interpol,
191 const cs_real_t *measures_coords,
192 const cs_real_t *measures,
193 const cs_real_t *influence_radius);
194
195/*----------------------------------------------------------------------------
196 * Add new measures to an existing measures set (already declared and
197 * allocated).
198 *
199 * parameters:
200 * ms <-- pointer to the existing measures set
201 * nb_measures <-- number of new measures
202 * is_cressman <-- for each new measure cressman interpolation is:
203 * 0: not used
204 * 1: used
205 * is_interpol <-- for the interpolation on mesh, each new measure is
206 * 0: not taken into account
207 * 1: taken into account
208 * measures_coords <-- new measures spaces coordonates
209 * measures <-- new measures values (associated to coordonates)
210 * influence_radius <-- influence radius for interpolation (xyz interleaved)
211 *----------------------------------------------------------------------------*/
212
213void
215 const cs_lnum_t nb_measures,
216 const int *is_cressman,
217 const int *is_interpol,
218 const cs_real_t *measures_coords,
219 const cs_real_t *measures,
220 const cs_real_t *influence_radius);
221
222/*----------------------------------------------------------------------------
223 * Compute a Cressman interpolation on the global mesh.
224 *
225 * parameters:
226 * ms <-- pointer to the measures set structure
227 * (values to interpolate)
228 * interpolated_values --> interpolated values on the global mesh
229 * (size = n_cells or nb_faces)
230 * id_type <-- parameter:
231 * 1: interpolation on volumes
232 * 2: interpolation on boundary faces
233 *----------------------------------------------------------------------------*/
234
235void
237 cs_real_t *interpolated_values,
238 int id_type);
239
240/*----------------------------------------------------------------------------
241 * Return a pointer to a measures set based on its id.
242 *
243 * This function requires that a measures set of the given id is defined.
244 *
245 * parameters:
246 * id <-- measures set id
247 *
248 * return:
249 * pointer to the measures set structure
250 *
251 *----------------------------------------------------------------------------*/
252
255
256/*----------------------------------------------------------------------------
257 * Return a pointer to a grid based on its id.
258 *
259 * This function requires that a grid of the given id is defined.
260 *
261 * parameters:
262 * id <-- grid id
263 *
264 * return:
265 * pointer to the grid structure
266 *
267 *----------------------------------------------------------------------------*/
268
271
272/*----------------------------------------------------------------------------
273 * Return a pointer to a measure set based on its name.
274 *
275 * This function requires that a measure set of the given name is defined.
276 *
277 * parameters:
278 * name <-- measure set name
279 *
280 * return:
281 * pointer to the measures set structure
282 *----------------------------------------------------------------------------*/
283
285cs_measures_set_by_name(const char *name);
286
287/*----------------------------------------------------------------------------
288 * Return a pointer to a grid based on its name.
289 *
290 * This function requires that a grid of the given name is defined.
291 *
292 * parameters:
293 * name <-- grid name
294 *
295 * return:
296 * pointer to the grid structure
297 *----------------------------------------------------------------------------*/
298
300cs_interpol_grid_by_name(const char *name);
301
302
303/*----------------------------------------------------------------------------
304 * Destroy all defined measures sets.
305 *----------------------------------------------------------------------------*/
306
307void
309
310/*----------------------------------------------------------------------------
311 * Destroy all defined grids.
312 *----------------------------------------------------------------------------*/
313
314void
316
317
318/*============================================================================
319 * Public function definitions for Fortran API
320 *============================================================================*/
321
322/*----------------------------------------------------------------------------
323 * Define a measures set.
324 *
325 * Fortran interface; use mestcr;
326 *
327 * subroutine mestcr (name, lname, idim, ilved, imeset)
328 * *****************
329 *
330 * character* name : <-- : Measure set name
331 * integer idim : <-- : Measures set dimension
332 * integer ilved : <-- : 0: not intereaved; 1: interleaved
333 * integer imesset : --> : id of defined measures set
334 *----------------------------------------------------------------------------*/
335
336void CS_PROCF(mestcr, MESTCR)
337(
338 const char *name,
339 const int *idim,
340 const int *ilved,
341 int *imeset);
342
343/*----------------------------------------------------------------------------
344 * Define a grid.
345 *
346 * Fortran interface
347 *
348 * subroutine gridcr (name, igrid)
349 * *****************
350 *
351 * character* name : <-- : Measure set name
352 * integer igrid : --> : id of defined grid
353 *----------------------------------------------------------------------------*/
354
355void CS_PROCF(gridcr, GRIDCR)
356(
357 const char *name,
358 int *igrid);
359
360/*----------------------------------------------------------------------------
361 * (re)Allocate and map values to a measure set.
362 *
363 * Fortran interface
364 *
365 * subroutine mesmap (imeset, inbmes, meset, coords, cressm, interp)
366 * *****************
367 *
368 * integer imeset : <-- : Measures set id
369 * integer inbmes : <-- : Number of measures
370 * cs_real_t* meset : <-- : Pointer to measures values array
371 * cs_real_t* coords : <-- : Pointer to measures coordonates array
372 * integer* cressm : <-- : Pointer to Cressman interpolation flag
373 * integer* interp : <-- : Pointer to interpolation flag
374 * integer* infrad : <-- : Influence radius for interpolation
375 *----------------------------------------------------------------------------*/
376
377void CS_PROCF(mesmap, MESMAP)
378(
379 const int *imeset,
380 const int *inbmes,
381 const cs_real_t *meset,
382 const cs_real_t *coords,
383 const int *cressm,
384 const int *interp,
385 const cs_real_t *infrad
386);
387
388/*----------------------------------------------------------------------------
389 * Map a grid grid.
390 *
391 * Fortran interface
392 *
393 * subroutine gridmap (name, lname, igrid)
394 * *****************
395 *
396 * integer igrid : <-- : Measures set id
397 * integer inpts : <-- : Number of measures
398 * cs_real_t* coords : <-- : Pointer to measures coordonates array
399 *----------------------------------------------------------------------------*/
400
401void CS_PROCF(grimap, GRIMAP)
402(
403 const int *igrid,
404 const int *inpts,
405 const cs_real_t *coords
406);
407
408/*----------------------------------------------------------------------------
409 * Add values to a measure set.
410 *
411 * Fortran interface
412 *
413 * subroutine mesadd (imeset, inbmes, meset, coords, cressm, interp)
414 * *****************
415 *
416 * integer imeset : <-- : Measures set id
417 * integer inbmes : <-- : Number of measures to add
418 * cs_real_t* meset : <-- : Pointer to measures values array
419 * cs_real_t* coords : <-- : Pointer to measures coordonates array
420 * integer* cressm : <-- : Pointer to Cressman interpolation flag
421 * integer* interp : <-- : Pointer to interpolation flag
422 * integer* infrad : <-- : Influence radius for interpolation
423 *----------------------------------------------------------------------------*/
424
425void CS_PROCF(mesadd, MESADD)
426(
427 const int *imeset,
428 const int *inbmes,
429 const cs_real_t *meset,
430 const cs_real_t *coords,
431 const int *cressm,
432 const int *interp,
433 const cs_real_t *infrad
434);
435
436/*----------------------------------------------------------------------------
437 * Compute a Cressman interpolation on the global mesh.
438 *
439 * Fortran interface
440 *
441 * subroutine mscrss (imeset, type, pldval)
442 * *****************
443 *
444 * integer imeset : <-- : Measures set id
445 * integer type : <-- : Parameter:
446 * 1: interpolation on volumes
447 * 2: interpolation on boundary faces
448 * cs_real_t* pldval : --> : Interpolated values on the global mesh
449 *----------------------------------------------------------------------------*/
450
451void CS_PROCF(mscrss, MSCRSS)
452(
453 const int *imeset,
454 const int *type,
455 cs_real_t *pldval
456);
457
458/*----------------------------------------------------------------------------
459 * Interpolate calculed field on a grid.
460 *
461 * Fortran interface
462 *
463 * subroutine gripol (igrid, inval, pldval)
464 * *****************
465 *
466 * integer igrid : <-- : Measures set id
467 * cs_real_t* inval : <-- : Values to interpolate
468 * cs_real_t* pldval : --> : Interpolated values on the grid
469 *----------------------------------------------------------------------------*/
470
471void CS_PROCF(gripol, GRIPOL)
472(
473 const int *igrid,
474 const cs_real_t *inval,
475 cs_real_t *pldval
476);
477
478/*----------------------------------------------------------------------------
479 * Destroy measures sets.
480 *
481 * Fortran interface
482 *
483 * subroutine mestde (void)
484 * *****************
485 *----------------------------------------------------------------------------*/
486
487void CS_PROCF(mestde, MESTDE)(void);
488
489/*----------------------------------------------------------------------------
490 * Destroy grids.
491 *
492 * Fortran interface
493 *
494 * subroutine grides (void)
495 * *****************
496 *----------------------------------------------------------------------------*/
497
498void CS_PROCF(grides, GRIDES)(void);
499
501
502#endif /* __CS_MEASURES_H__ */
#define BEGIN_C_DECLS
Definition: cs_defs.h:542
double cs_real_t
Floating-point value.
Definition: cs_defs.h:342
#define CS_PROCF(x, y)
Definition: cs_defs.h:576
#define END_C_DECLS
Definition: cs_defs.h:543
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:335
void cs_interpol_field_on_grid(cs_interpol_grid_t *ig, const cs_real_t *values_to_interpol, cs_real_t *interpoled_values)
cs_interpol_grid_t * cs_interpol_grid_by_name(const char *name)
cs_measures_set_t * cs_measures_set_by_id(int id)
void mestcr(const char *name, const int *idim, const int *ilved, int *imeset)
Definition: cs_measures_util.cpp:907
void cs_measures_set_map_values(cs_measures_set_t *ms, const cs_lnum_t nb_measures, const int *is_cressman, const int *is_interpol, const cs_real_t *measures_coords, const cs_real_t *measures, const cs_real_t *influence_radius)
void mesadd(const int *imeset, const int *inbmes, const cs_real_t *meset, const cs_real_t *coords, const int *cressm, const int *interp, const cs_real_t *infrad)
Definition: cs_measures_util.cpp:1037
void cs_interpol_grid_init(cs_interpol_grid_t *ig, const cs_lnum_t nb_points, const cs_real_t *coords)
cs_interpol_grid_t * cs_interpol_grid_create(const char *name)
void mscrss(const int *imeset, const int *type, cs_real_t *pldval)
Definition: cs_measures_util.cpp:1075
void cs_measures_set_add_values(cs_measures_set_t *ms, const cs_lnum_t nb_measures, const int *is_cressman, const int *is_interpol, const cs_real_t *measures_coords, const cs_real_t *measures, const cs_real_t *influence_radius)
void grides(void)
Definition: cs_measures_util.cpp:1138
void gripol(const int *igrid, const cs_real_t *inval, cs_real_t *pldval)
Definition: cs_measures_util.cpp:1102
void mesmap(const int *imeset, const int *inbmes, const cs_real_t *meset, const cs_real_t *coords, const int *cressm, const int *interp, const cs_real_t *infrad)
Definition: cs_measures_util.cpp:969
void cs_cressman_interpol(cs_measures_set_t *ms, cs_real_t *interpolated_values, int id_type)
void gridcr(const char *name, int *igrid)
Definition: cs_measures_util.cpp:939
void grimap(const int *igrid, const int *inpts, const cs_real_t *coords)
Definition: cs_measures_util.cpp:1006
cs_interpol_grid_t * cs_interpol_grid_by_id(int id)
cs_measures_set_t * cs_measures_set_create(const char *name, int type_flag, int dim, bool interleaved)
cs_measures_set_t * cs_measures_set_by_name(const char *name)
void mestde(void)
Definition: cs_measures_util.cpp:1124
void cs_interpol_grids_destroy(void)
void cs_interpol_field_on_grid_deprecated(cs_interpol_grid_t *ig, const cs_real_t *values_to_interpol, cs_real_t *interpoled_values)
void cs_measures_sets_destroy(void)
integer, save igrid
grid formed by 1D profiles
Definition: atincl.f90:243
Definition: cs_measures_util.h:72
cs_real_t * coords
Definition: cs_measures_util.h:78
cs_lnum_t nb_points
Definition: cs_measures_util.h:76
int * rank_connect
Definition: cs_measures_util.h:80
bool is_connect
Definition: cs_measures_util.h:77
cs_lnum_t * cell_connect
Definition: cs_measures_util.h:79
int id
Definition: cs_measures_util.h:75
const char * name
Definition: cs_measures_util.h:74
Definition: cs_measures_util.h:47
cs_lnum_t nb_measures
Definition: cs_measures_util.h:56
int * is_cressman
Definition: cs_measures_util.h:59
cs_real_t * coords
Definition: cs_measures_util.h:66
cs_lnum_t nb_measures_max
Definition: cs_measures_util.h:57
int dim
Definition: cs_measures_util.h:53
cs_real_t * measures
Definition: cs_measures_util.h:67
int id
Definition: cs_measures_util.h:50
int * is_interpol
Definition: cs_measures_util.h:62
int * comp_ids
Definition: cs_measures_util.h:54
const char * name
Definition: cs_measures_util.h:49
cs_real_t * inf_radius
Definition: cs_measures_util.h:68
int type
Definition: cs_measures_util.h:51
bool interleaved
Definition: cs_measures_util.h:58