8.1
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-2023 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 
47 typedef 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 
72 typedef 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 
97 void
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 
112 void
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 
131 cs_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 
142 void
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 
164 cs_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 
186 void
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 
213 void
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 
235 void
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 
285 cs_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 
300 cs_interpol_grid_by_name(const char *name);
301 
302 
303 /*----------------------------------------------------------------------------
304  * Destroy all defined measures sets.
305  *----------------------------------------------------------------------------*/
306 
307 void
309 
310 /*----------------------------------------------------------------------------
311  * Destroy all defined grids.
312  *----------------------------------------------------------------------------*/
313 
314 void
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 
336 void 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 
355 void 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 
377 void 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 
401 void 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 
425 void 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 
451 void 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 
471 void 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 
487 void CS_PROCF(mestde, MESTDE)(void);
488 
489 /*----------------------------------------------------------------------------
490  * Destroy grids.
491  *
492  * Fortran interface
493  *
494  * subroutine grides (void)
495  * *****************
496  *----------------------------------------------------------------------------*/
497 
498 void CS_PROCF(grides, GRIDES)(void);
499 
501 
502 #endif /* __CS_MEASURES_H__ */
#define BEGIN_C_DECLS
Definition: cs_defs.h:514
double cs_real_t
Floating-point value.
Definition: cs_defs.h:319
#define CS_PROCF(x, y)
Definition: cs_defs.h:528
#define END_C_DECLS
Definition: cs_defs.h:515
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:313
void cs_interpol_field_on_grid(cs_interpol_grid_t *ig, const cs_real_t *values_to_interpol, cs_real_t *interpoled_values)
void mestcr(const char *name, const int *idim, const int *ilved, int *imeset)
Definition: cs_measures_util.c: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)
cs_interpol_grid_t * cs_interpol_grid_create(const char *name)
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.c: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_by_id(int id)
cs_measures_set_t * cs_measures_set_by_id(int id)
void mscrss(const int *imeset, const int *type, cs_real_t *pldval)
Definition: cs_measures_util.c: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.c:1138
cs_measures_set_t * cs_measures_set_by_name(const char *name)
void gripol(const int *igrid, const cs_real_t *inval, cs_real_t *pldval)
Definition: cs_measures_util.c: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.c:969
void cs_cressman_interpol(cs_measures_set_t *ms, cs_real_t *interpolated_values, int id_type)
cs_interpol_grid_t * cs_interpol_grid_by_name(const char *name)
void gridcr(const char *name, int *igrid)
Definition: cs_measures_util.c:939
void grimap(const int *igrid, const int *inpts, const cs_real_t *coords)
Definition: cs_measures_util.c:1006
cs_measures_set_t * cs_measures_set_create(const char *name, int type_flag, int dim, bool interleaved)
void mestde(void)
Definition: cs_measures_util.c: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:263
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