9.2
general documentation
cs_medcoupling_intersector.h
Go to the documentation of this file.
1#ifndef CS_MEDCOUPLING_INTERSECTOR_HXX
2#define CS_MEDCOUPLING_INTERSECTOR_HXX
3
4/*============================================================================
5 * Interpolation using MEDCoupling Intersector.
6 *============================================================================*/
7
8/*
9 This file is part of code_saturne, a general-purpose CFD tool.
10
11 Copyright (C) 1998-2026 EDF S.A.
12
13 This program is free software; you can redistribute it and/or modify it under
14 the terms of the GNU General Public License as published by the Free Software
15 Foundation; either version 2 of the License, or (at your option) any later
16 version.
17
18 This program is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
20 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
21 details.
22
23 You should have received a copy of the GNU General Public License along with
24 this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
25 Street, Fifth Floor, Boston, MA 02110-1301, USA.
26*/
27
28/*----------------------------------------------------------------------------*/
29
30/*----------------------------------------------------------------------------
31 * Local headers
32 *----------------------------------------------------------------------------*/
33
34#include "base/cs_defs.h"
35#include "fvm/fvm_writer.h"
36
37/*============================================================================
38 * Type definitions
39 *============================================================================*/
40
41typedef enum {
42
49
50typedef enum {
51
56
58
59/*============================================================================
60 * Structure definitions
61 *============================================================================*/
62
63typedef struct _cs_medcoupling_intersector_t cs_medcoupling_intersector_t;
64
65/*============================================================================
66 * Structure definitions
67 *============================================================================*/
68
69/*----------------------------------------------------------------------------*/
79/*----------------------------------------------------------------------------*/
80
81void
83 const char *medfile_path,
84 const char *interp_method,
85 const char *select_criteria);
86
87/*----------------------------------------------------------------------------*/
97/*----------------------------------------------------------------------------*/
98
99void
101 const char *medfile_path,
102 const char *interp_method,
103 const char *select_criteria);
104
105/*----------------------------------------------------------------------------*/
115/*----------------------------------------------------------------------------*/
116
117void
119 const char *medfile_path,
120 const char *interp_method,
121 const char *select_criteria);
122
123/*----------------------------------------------------------------------------*/
129/*----------------------------------------------------------------------------*/
130
131void
132cs_medcoupling_intersector_destroy(cs_medcoupling_intersector_t *mi);
133
134/*----------------------------------------------------------------------------*/
138/*----------------------------------------------------------------------------*/
139
140void
142
143/*----------------------------------------------------------------------------*/
151/*----------------------------------------------------------------------------*/
152
153cs_medcoupling_intersector_t *
155
156/*----------------------------------------------------------------------------*/
164/*----------------------------------------------------------------------------*/
165
166cs_medcoupling_intersector_t *
167cs_medcoupling_intersector_by_name(const char *name);
168
169/*----------------------------------------------------------------------------*/
178/*----------------------------------------------------------------------------*/
179
180cs_real_t *
181cs_medcoupling_intersect_volumes(cs_medcoupling_intersector_t *mi);
182
183/*----------------------------------------------------------------------------*/
192/*----------------------------------------------------------------------------*/
193
194cs_real_t *
195cs_medcoupling_intersect_surfaces(cs_medcoupling_intersector_t *mi);
196
197/*----------------------------------------------------------------------------*/
206/*----------------------------------------------------------------------------*/
207
208cs_real_t *
209cs_medcoupling_intersect_volume_and_surfaces(cs_medcoupling_intersector_t *mi);
210
211/*----------------------------------------------------------------------------*/
218/*----------------------------------------------------------------------------*/
219
220void
221cs_medcoupling_intersector_translate(cs_medcoupling_intersector_t *mi,
222 cs_real_t translation[3]);
223
224/*----------------------------------------------------------------------------*/
234/*----------------------------------------------------------------------------*/
235
236void
237cs_medcoupling_intersector_rotate(cs_medcoupling_intersector_t *mi,
238 cs_real_t invariant[3],
239 cs_real_t axis[3],
240 cs_real_t angle);
241
242/*----------------------------------------------------------------------------*/
250/*----------------------------------------------------------------------------*/
251
252void
253cs_medcoupling_intersector_scale_auto(cs_medcoupling_intersector_t *mi,
254 cs_real_t factor);
255
256/*----------------------------------------------------------------------------*/
264/*----------------------------------------------------------------------------*/
265
266void
267cs_medcoupling_intersector_transform_from_init(cs_medcoupling_intersector_t *mi,
268 cs_real_t matrix[3][4]);
269
270/*----------------------------------------------------------------------------*/
277/*----------------------------------------------------------------------------*/
278
279void
280cs_medcoupling_intersector_dump_mesh(cs_medcoupling_intersector_t *mi,
281 const char *prefix);
282
283/*----------------------------------------------------------------------------*/
289/*----------------------------------------------------------------------------*/
290
291void
292cs_medcoupling_intersector_print_mesh_info(cs_medcoupling_intersector_t *mi);
293
294/*----------------------------------------------------------------------------*/
298/*----------------------------------------------------------------------------*/
299
300int
302
303/*----------------------------------------------------------------------------*/
310/*----------------------------------------------------------------------------*/
311
312void
313cs_mi_post_init_writer(const char *case_name,
314 const char *dir_name,
315 const char *fmt_name,
316 const char *fmt_opts,
317 fvm_writer_time_dep_t time_dep,
318 bool output_at_start,
319 bool output_at_end,
320 int frequency_n,
321 double frequency_t);
322
323/*----------------------------------------------------------------------------*/
329/*----------------------------------------------------------------------------*/
330
331void
332cs_mi_post_add_mesh(cs_medcoupling_intersector_t *mi);
333
334/*----------------------------------------------------------------------------*/
335
336#endif /* CS_MEDCOUPLING_INTERSECTOR_HXX */
double cs_real_t
Floating-point value.
Definition: cs_defs.h:332
void cs_medcoupling_intersector_rotate(cs_medcoupling_intersector_t *mi, cs_real_t invariant[3], cs_real_t axis[3], cs_real_t angle)
rotate the mesh
Definition: cs_medcoupling_intersector.cxx:1223
void cs_medcoupling_intersector_translate(cs_medcoupling_intersector_t *mi, cs_real_t translation[3])
translate the mesh using a given vector
Definition: cs_medcoupling_intersector.cxx:1163
void cs_medcoupling_intersector_add_vol(const char *name, const char *medfile_path, const char *interp_method, const char *select_criteria)
Add a volume MEDCoupling intersector.
Definition: cs_medcoupling_intersector.cxx:843
void cs_medcoupling_intersector_add_surf(const char *name, const char *medfile_path, const char *interp_method, const char *select_criteria)
Add a surface MEDCoupling intersector.
Definition: cs_medcoupling_intersector.cxx:879
cs_medcoupling_intersector_t * cs_medcoupling_intersector_by_id(int id)
Get a MEDCoupling intersector using its id.
Definition: cs_medcoupling_intersector.cxx:989
void cs_medcoupling_intersector_print_mesh_info(cs_medcoupling_intersector_t *mi)
print mesh information to log file.
Definition: cs_medcoupling_intersector.cxx:1432
void cs_medcoupling_intersector_dump_mesh(cs_medcoupling_intersector_t *mi, const char *prefix)
translate the mesh using a given vector
Definition: cs_medcoupling_intersector.cxx:1409
void cs_medcoupling_intersector_destroy(cs_medcoupling_intersector_t *mi)
Destroy a given MEDCoupling intersector.
Definition: cs_medcoupling_intersector.cxx:947
void cs_mi_post_init_writer(const char *case_name, const char *dir_name, const char *fmt_name, const char *fmt_opts, fvm_writer_time_dep_t time_dep, bool output_at_start, bool output_at_end, int frequency_n, double frequency_t)
Create a new writer that will contains the boundary MED mesh added.
Definition: cs_medcoupling_intersector.cxx:1468
void cs_medcoupling_intersector_scale_auto(cs_medcoupling_intersector_t *mi, cs_real_t factor)
Scale a mesh using a factor based on the current mesh center position.
Definition: cs_medcoupling_intersector.cxx:1272
void cs_medcoupling_intersector_destroy_all(void)
Free all allocated intersectors.
Definition: cs_medcoupling_intersector.cxx:968
void cs_medcoupling_intersector_transform_from_init(cs_medcoupling_intersector_t *mi, cs_real_t matrix[3][4])
Transform a mesh, but takes as input the initial position of the mesh.
Definition: cs_medcoupling_intersector.cxx:1360
cs_real_t * cs_medcoupling_intersect_volume_and_surfaces(cs_medcoupling_intersector_t *mi)
Compute the intersection surfaces between the source mesh and code mesh.
Definition: cs_medcoupling_intersector.cxx:1122
int cs_mi_post_get_writer_id(void)
Return writer id used for medcoupling meshes, 0 means unused.
Definition: cs_medcoupling_intersector.cxx:1453
cs_medcoupling_intersector_t * cs_medcoupling_intersector_by_name(const char *name)
Get a MEDCoupling intersector by name.
Definition: cs_medcoupling_intersector.cxx:1010
cs_real_t * cs_medcoupling_intersect_volumes(cs_medcoupling_intersector_t *mi)
Compute the intersection volumes between the source mesh and code mesh.
Definition: cs_medcoupling_intersector.cxx:1038
cs_medcpl_mesh_type_t
Definition: cs_medcoupling_intersector.h:50
@ CS_MEDCPL_MESH_FROM_FILE
Definition: cs_medcoupling_intersector.h:52
@ CS_MEDCPL_MESH_FROM_PRIMITIVE
Definition: cs_medcoupling_intersector.h:53
@ CS_MEDCPL_MESH_UKNOWN
Definition: cs_medcoupling_intersector.h:55
@ CS_MEDCPL_N_MESH_TYPES
Definition: cs_medcoupling_intersector.h:54
void cs_medcoupling_intersector_add_vol_surf(const char *name, const char *medfile_path, const char *interp_method, const char *select_criteria)
Add a surface in volume MEDCoupling intersector.
Definition: cs_medcoupling_intersector.cxx:915
cs_medcpl_intersect_type_t
Definition: cs_medcoupling_intersector.h:41
@ CS_MEDCPL_INTERSECT_VOL_SURF
Definition: cs_medcoupling_intersector.h:45
@ CS_MEDCPL_INTERSECT_VOL
Definition: cs_medcoupling_intersector.h:44
@ CS_MEDCPL_INTERSECT_UKNOWN
Definition: cs_medcoupling_intersector.h:47
@ CS_MEDCPL_INTERSECT_SURF
Definition: cs_medcoupling_intersector.h:43
@ CS_MEDCPL_N_INTERSECT_TYPES
Definition: cs_medcoupling_intersector.h:46
void cs_mi_post_add_mesh(cs_medcoupling_intersector_t *mi)
Associate a Medcoupling mesh to the default writer.
Definition: cs_medcoupling_intersector.cxx:1511
cs_real_t * cs_medcoupling_intersect_surfaces(cs_medcoupling_intersector_t *mi)
Compute the intersection surfaces between the source mesh and code mesh.
Definition: cs_medcoupling_intersector.cxx:1079
fvm_writer_time_dep_t
Definition: fvm_writer.h:57