mmgpy 0.1.0__cp312-cp312-macosx_14_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mmgpy might be problematic. Click here for more details.
- bin/mmg2d_O3 +0 -0
- bin/mmg3d_O3 +0 -0
- bin/mmgs_O3 +0 -0
- include/mmg/common/git_log_mmg.h +6 -0
- include/mmg/common/libmmgtypes.h +687 -0
- include/mmg/common/libmmgtypesf.h +762 -0
- include/mmg/common/mmg_export.h +47 -0
- include/mmg/common/mmgcmakedefines.h +46 -0
- include/mmg/common/mmgcmakedefinesf.h +29 -0
- include/mmg/common/mmgversion.h +54 -0
- include/mmg/libmmg.h +67 -0
- include/mmg/libmmgf.h +42 -0
- include/mmg/mmg2d/libmmg2d.h +2761 -0
- include/mmg/mmg2d/libmmg2df.h +3263 -0
- include/mmg/mmg2d/mmg2d_export.h +34 -0
- include/mmg/mmg3d/libmmg3d.h +3444 -0
- include/mmg/mmg3d/libmmg3df.h +4041 -0
- include/mmg/mmg3d/mmg3d_export.h +34 -0
- include/mmg/mmgs/libmmgs.h +2560 -0
- include/mmg/mmgs/libmmgsf.h +3028 -0
- include/mmg/mmgs/mmgs_export.h +34 -0
- lib/cmake/mmg/FindElas.cmake +57 -0
- lib/cmake/mmg/FindSCOTCH.cmake +373 -0
- lib/cmake/mmg/MmgTargets-release.cmake +49 -0
- lib/cmake/mmg/MmgTargets.cmake +127 -0
- lib/cmake/mmg/mmgConfig.cmake +43 -0
- lib/libmmg.5.8.0.dylib +0 -0
- lib/libmmg.5.dylib +0 -0
- lib/libmmg.dylib +0 -0
- lib/libmmg2d.5.8.0.dylib +0 -0
- lib/libmmg2d.5.dylib +0 -0
- lib/libmmg2d.dylib +0 -0
- lib/libmmg3d.5.8.0.dylib +0 -0
- lib/libmmg3d.5.dylib +0 -0
- lib/libmmg3d.dylib +0 -0
- lib/libmmgs.5.8.0.dylib +0 -0
- lib/libmmgs.5.dylib +0 -0
- lib/libmmgs.dylib +0 -0
- mmgpy/__init__.py +3 -0
- mmgpy/_mmgpy.cpython-312-darwin.so +0 -0
- mmgpy/_mmgpy.pyi +31 -0
- mmgpy/_version.py.in +4 -0
- mmgpy/libmmg2d.5.8.0.dylib +0 -0
- mmgpy/libmmg2d.5.dylib +0 -0
- mmgpy/libmmg2d.dylib +0 -0
- mmgpy/libmmg3d.5.8.0.dylib +0 -0
- mmgpy/libmmg3d.5.dylib +0 -0
- mmgpy/libmmg3d.dylib +0 -0
- mmgpy/libmmgs.5.8.0.dylib +0 -0
- mmgpy/libmmgs.5.dylib +0 -0
- mmgpy/libmmgs.dylib +0 -0
- mmgpy/py.typed +0 -0
- mmgpy-0.1.0.data/scripts/libmmg2d.5.8.0.dylib +0 -0
- mmgpy-0.1.0.data/scripts/libmmg2d.5.dylib +0 -0
- mmgpy-0.1.0.data/scripts/libmmg2d.dylib +0 -0
- mmgpy-0.1.0.data/scripts/libmmg3d.5.8.0.dylib +0 -0
- mmgpy-0.1.0.data/scripts/libmmg3d.5.dylib +0 -0
- mmgpy-0.1.0.data/scripts/libmmg3d.dylib +0 -0
- mmgpy-0.1.0.data/scripts/libmmgs.5.8.0.dylib +0 -0
- mmgpy-0.1.0.data/scripts/libmmgs.5.dylib +0 -0
- mmgpy-0.1.0.data/scripts/libmmgs.dylib +0 -0
- mmgpy-0.1.0.data/scripts/mmg2d +0 -0
- mmgpy-0.1.0.data/scripts/mmg3d +0 -0
- mmgpy-0.1.0.data/scripts/mmgs +0 -0
- mmgpy-0.1.0.dist-info/METADATA +52 -0
- mmgpy-0.1.0.dist-info/RECORD +71 -0
- mmgpy-0.1.0.dist-info/WHEEL +5 -0
- mmgpy-0.1.0.dist-info/licenses/LICENSE +19 -0
- share/man/man1/mmg2d.1.gz +0 -0
- share/man/man1/mmg3d.1.gz +0 -0
- share/man/man1/mmgs.1.gz +0 -0
|
@@ -0,0 +1,4041 @@
|
|
|
1
|
+
! /* This file is automatically generated by the"genheader.c" code
|
|
2
|
+
! ** and the "genfort.pl" script (scripts directory).
|
|
3
|
+
! ** Do not modified it by hand, it will be discarded.
|
|
4
|
+
! **
|
|
5
|
+
! ** This scripts recopy the macros of the libmmg*.h file
|
|
6
|
+
! ** and convert enumerations into macros.
|
|
7
|
+
! **
|
|
8
|
+
! ** Note: "genfort.pl" is automatically called by the "genheader.c"
|
|
9
|
+
! ** executable code.
|
|
10
|
+
! **
|
|
11
|
+
! ** See the "libmmg*.h" file for a correct displaying of the documentation.
|
|
12
|
+
! */
|
|
13
|
+
|
|
14
|
+
#include "mmg/common/libmmgtypesf.h"
|
|
15
|
+
|
|
16
|
+
! /* ===========================================================================
|
|
17
|
+
! ** This file is part of the mmg software package for the tetrahedral
|
|
18
|
+
! ** mesh modification.
|
|
19
|
+
! ** Copyright (c) Bx INP/CNRS/Inria/UBordeaux/UPMC, 2004-
|
|
20
|
+
! **
|
|
21
|
+
! ** mmg is free software: you can redistribute it and/or modify it
|
|
22
|
+
! ** under the terms of the GNU Lesser General Public License as published
|
|
23
|
+
! ** by the Free Software Foundation, either version 3 of the License, or
|
|
24
|
+
! ** (at your option) any later version.
|
|
25
|
+
! **
|
|
26
|
+
! ** mmg is distributed in the hope that it will be useful, but WITHOUT
|
|
27
|
+
! ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
28
|
+
! ** FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
|
29
|
+
! ** License for more details.
|
|
30
|
+
! **
|
|
31
|
+
! ** You should have received a copy of the GNU Lesser General Public
|
|
32
|
+
! ** License and of the GNU General Public License along with mmg (in
|
|
33
|
+
! ** files COPYING.LESSER and COPYING). If not, see
|
|
34
|
+
! ** <http://www.gnu.org/licenses/>. Please read their terms carefully and
|
|
35
|
+
! ** use this copy of the mmg distribution only if you accept them.
|
|
36
|
+
! ** ===========================================================================
|
|
37
|
+
! */
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
! /*
|
|
41
|
+
! * This file defines the C and Fortran headers of the mmg3d API, and
|
|
42
|
+
! * their Doxygen documentation.
|
|
43
|
+
! *
|
|
44
|
+
! * NOTES FOR DEVELOPERS:
|
|
45
|
+
! *
|
|
46
|
+
! * - The Fortran headers are generated from comment lines that start with '* >'.
|
|
47
|
+
! * They must match the C declarations.
|
|
48
|
+
! *
|
|
49
|
+
! * - We cannot handle enum types in the Fortran version so enums are replaced
|
|
50
|
+
! * by ints in both versions.
|
|
51
|
+
! *
|
|
52
|
+
! * - To keep the genheader program working, don't break line between an enum
|
|
53
|
+
! * name and the opening brace (it creates errors under windows)
|
|
54
|
+
! *
|
|
55
|
+
! * - Since Mmg version 5,
|
|
56
|
+
! * -- data structures and parameters that are common between mmg3d, mmg2d
|
|
57
|
+
! * and mmgs use the MMG5_ prefix;
|
|
58
|
+
! * -- API functions should have an MMG3D_, MMG2D_, or MMGS_ prefix,
|
|
59
|
+
! * depending on the library; and
|
|
60
|
+
! * -- some MMG5_ API functions exists but they are common to the
|
|
61
|
+
! * three libraries.
|
|
62
|
+
! *
|
|
63
|
+
! */
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
! /**
|
|
67
|
+
! *
|
|
68
|
+
! * \file mmg3d/libmmg3d.h
|
|
69
|
+
! * \ingroup API
|
|
70
|
+
! * \brief API headers and documentation for the mmg3d library, for volumetric meshes in 3D
|
|
71
|
+
! * \author Algiane Froehly (Inria/UBordeaux)
|
|
72
|
+
! * \version 5
|
|
73
|
+
! * \date 01 2014
|
|
74
|
+
! * \copyright GNU Lesser General Public License.
|
|
75
|
+
! *
|
|
76
|
+
! * These are the API functions for the mmg3d library. These functions allow to
|
|
77
|
+
! * load and save meshes and data defined on meshes; add, extract, or modify mesh
|
|
78
|
+
! * data; and to call the library functions that perform remeshing, level-set
|
|
79
|
+
! * discretization, and Lagrangian motion.
|
|
80
|
+
! *
|
|
81
|
+
! * Meshes are here defined in terms of vertices and three-dimensional objects:
|
|
82
|
+
! * tetrahedra and prisms. Optionally lower-dimensional entities can be present:
|
|
83
|
+
! * triangles, quadrilaterals and edges. All of these \a entities can have a
|
|
84
|
+
! * \a reference: an integer value that can serve as a group identifier. In
|
|
85
|
+
! * addition mesh entities can have \a attributes such as "ridge" or "required".
|
|
86
|
+
! *
|
|
87
|
+
! * Data defined on meshes can be for example functions that are meant for
|
|
88
|
+
! * level-set discretization, metric tensors that will govern edge lengths, and
|
|
89
|
+
! * vector fields governing lagrangian motion. These data can be scalar, vector,
|
|
90
|
+
! * or (symmetric) tensor-valued; and there can be more than one data item
|
|
91
|
+
! * associated with a mesh entity. These data are often referred to as \a
|
|
92
|
+
! * solutions.
|
|
93
|
+
! *
|
|
94
|
+
! * Three of the functions here are referred to as "programs", because they
|
|
95
|
+
! * perform the tasks for which Mmg is meant: remeshing, level-set discretization
|
|
96
|
+
! * and Lagrangian motion. The other functions merely serve to load and save data
|
|
97
|
+
! * and to perform pre- and post-processing. These programs actually behave much
|
|
98
|
+
! * like independent programs: they send diagnostic output to stdout and in rare
|
|
99
|
+
! * cases they may call the exit() function.
|
|
100
|
+
! *
|
|
101
|
+
! *
|
|
102
|
+
! * \htmlonly
|
|
103
|
+
! * <h2 class="groupheader">Examples</h2>
|
|
104
|
+
! * \endhtmlonly
|
|
105
|
+
! *
|
|
106
|
+
! * A very simple example code for mesh adaptation with automatic parsing of .mesh files
|
|
107
|
+
! * \dontinclude libexamples/mmg3d/adaptation_example0/example0_a/main.c
|
|
108
|
+
! * \skipline BEGIN_EXAMPLE
|
|
109
|
+
! * \until END_EXAMPLE
|
|
110
|
+
! *
|
|
111
|
+
! * Mesh adaptation example in which get/set functions are used to provide input to
|
|
112
|
+
! * the library and to extract the output mesh.
|
|
113
|
+
! * \include libexamples/mmg3d/adaptation_example0/example0_b/main.c
|
|
114
|
+
! *
|
|
115
|
+
! * Fortran example.
|
|
116
|
+
! * \include libexamples/mmg3d/adaptation_example0_fortran/example0_a/main.F90
|
|
117
|
+
! *
|
|
118
|
+
! * Another Fortran example.
|
|
119
|
+
! * \include libexamples/mmg3d/adaptation_example0_fortran/example0_b/main.F90
|
|
120
|
+
! *
|
|
121
|
+
! * Mesh adaptation example.
|
|
122
|
+
! * \include libexamples/mmg3d/adaptation_example1/main.c
|
|
123
|
+
! *
|
|
124
|
+
! * Another mesh adaptation example.
|
|
125
|
+
! * \include libexamples/mmg3d/adaptation_example2/main.c
|
|
126
|
+
! *
|
|
127
|
+
! * Isosurface discretization example (with metric)
|
|
128
|
+
! * \include libexamples/mmg3d/IsosurfDiscretization_lsAndMetric/main.c
|
|
129
|
+
! *
|
|
130
|
+
! * Lagrangian motion example.
|
|
131
|
+
! * \include libexamples/mmg3d/LagrangianMotion_example0/main.c
|
|
132
|
+
! */
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
#ifndef MMG3DLIB_H
|
|
136
|
+
#define MMG3DLIB_H
|
|
137
|
+
|
|
138
|
+
! #ifdef __cplusplus
|
|
139
|
+
! extern "C" {
|
|
140
|
+
! #endif
|
|
141
|
+
|
|
142
|
+
! #include "mmg/common/libmmgtypes.h"
|
|
143
|
+
! #include "mmg/mmg3d/mmg3d_export.h"
|
|
144
|
+
|
|
145
|
+
! /**
|
|
146
|
+
! * Maximum array size when storing adjacent vertices (or ball) of a vertex.
|
|
147
|
+
! */
|
|
148
|
+
|
|
149
|
+
#define MMG3D_LMAX 10240
|
|
150
|
+
|
|
151
|
+
! /**
|
|
152
|
+
! * \enum MMG3D_Param
|
|
153
|
+
! * \brief Input parameters for the mmg library.
|
|
154
|
+
! *
|
|
155
|
+
! * These are the input parameters for the mmg3d library functions. Options prefixed by
|
|
156
|
+
! * \a MMG3D_IPARAM require integer values and options prefixed by
|
|
157
|
+
! * \a MMG3D_DPARAM require real values. They can be set with the
|
|
158
|
+
! * \ref MMG3D_Set_iparameter and \ref MMG3D_Set_dparameter functions,
|
|
159
|
+
! * respectively.
|
|
160
|
+
! *
|
|
161
|
+
! */
|
|
162
|
+
|
|
163
|
+
! /*!< [-1..10] Level of verbosity */
|
|
164
|
+
#define MMG3D_IPARAM_verbose 0
|
|
165
|
+
! /*!< [n/-1] Max memory size in MB or keep the default value */
|
|
166
|
+
#define MMG3D_IPARAM_mem 1
|
|
167
|
+
! /*!< [1/0] Turn on/off debug mode */
|
|
168
|
+
#define MMG3D_IPARAM_debug 2
|
|
169
|
+
! /*!< [1/0] Turn on/off angle detection */
|
|
170
|
+
#define MMG3D_IPARAM_angle 3
|
|
171
|
+
! /*!< [1/0] Enable level-set discretization (volume and surfaces) */
|
|
172
|
+
#define MMG3D_IPARAM_iso 4
|
|
173
|
+
! /*!< [1/0] Enable level-set discretization on the surfaces only */
|
|
174
|
+
#define MMG3D_IPARAM_isosurf 5
|
|
175
|
+
! /*!< [1/0] Do not attempt to make the mesh suitable for finite-element computations */
|
|
176
|
+
#define MMG3D_IPARAM_nofem 6
|
|
177
|
+
! /*!< [1/0] Preserve triangles at interface of 2 domains with the same reference */
|
|
178
|
+
#define MMG3D_IPARAM_opnbdy 7
|
|
179
|
+
! /*!< [-1/0/1/2] Enable Lagrangian motion */
|
|
180
|
+
#define MMG3D_IPARAM_lag 8
|
|
181
|
+
! /*!< [1/0] Optimize mesh keeping its initial edge sizes */
|
|
182
|
+
#define MMG3D_IPARAM_optim 9
|
|
183
|
+
! /*!< [1/0] Strong mesh optimization for LES computations */
|
|
184
|
+
#define MMG3D_IPARAM_optimLES 10
|
|
185
|
+
! /*!< [1/0] Avoid/allow vertex insertion */
|
|
186
|
+
#define MMG3D_IPARAM_noinsert 11
|
|
187
|
+
! /*!< [1/0] Avoid/allow edge or face flipping */
|
|
188
|
+
#define MMG3D_IPARAM_noswap 12
|
|
189
|
+
! /*!< [1/0] Avoid/allow vertex relocation */
|
|
190
|
+
#define MMG3D_IPARAM_nomove 13
|
|
191
|
+
! /*!< [1/0] Avoid/allow surface modifications */
|
|
192
|
+
#define MMG3D_IPARAM_nosurf 14
|
|
193
|
+
! /*!< [0/1] Enable regularization of normals */
|
|
194
|
+
#define MMG3D_IPARAM_nreg 15
|
|
195
|
+
! /*!< [0/1] Enable boundary regularization by moving vertices */
|
|
196
|
+
#define MMG3D_IPARAM_xreg 16
|
|
197
|
+
! /*!< [n] Number of local parameters (which will be set with \ref MMG3D_Set_localParameter) */
|
|
198
|
+
#define MMG3D_IPARAM_numberOfLocalParam 17
|
|
199
|
+
! /*!< [n] Number of base references for bubble removal (requires \ref MMG3D_DPARAM_rmc) */
|
|
200
|
+
#define MMG3D_IPARAM_numberOfLSBaseReferences 18
|
|
201
|
+
! /*!< [n] Number of materials in level-set mode */
|
|
202
|
+
#define MMG3D_IPARAM_numberOfMat 19
|
|
203
|
+
! /*!< [0/n] Save only the subdomain (reference) n (0==all subdomains) */
|
|
204
|
+
#define MMG3D_IPARAM_numsubdomain 20
|
|
205
|
+
! /*!< [1/0] Turn on/off renumbering with Scotch */
|
|
206
|
+
#define MMG3D_IPARAM_renum 21
|
|
207
|
+
! /*!< [1/0] Turn on/off anisotropic metric creation when no metric is provided */
|
|
208
|
+
#define MMG3D_IPARAM_anisosize 22
|
|
209
|
+
! /*!< [n] Max number of vertices per PROctree cell (DELAUNAY) */
|
|
210
|
+
#define MMG3D_IPARAM_octree 23
|
|
211
|
+
! /*!< [0/1] Allow/avoid overwriting of sizes at required vertices (advanced usage) */
|
|
212
|
+
#define MMG3D_IPARAM_nosizreq 24
|
|
213
|
+
! /*!< [0/n] Isosurface boundary material reference */
|
|
214
|
+
#define MMG3D_IPARAM_isoref 25
|
|
215
|
+
! /*!< [val] Value for angle detection (degrees) */
|
|
216
|
+
#define MMG3D_DPARAM_angleDetection 26
|
|
217
|
+
! /*!< [val] Minimal edge length */
|
|
218
|
+
#define MMG3D_DPARAM_hmin 27
|
|
219
|
+
! /*!< [val] Maximal edge length */
|
|
220
|
+
#define MMG3D_DPARAM_hmax 28
|
|
221
|
+
! /*!< [val] Constant edge length */
|
|
222
|
+
#define MMG3D_DPARAM_hsiz 29
|
|
223
|
+
! /*!< [val] Global Hausdorff distance (on all boundaries in the mesh) */
|
|
224
|
+
#define MMG3D_DPARAM_hausd 30
|
|
225
|
+
! /*!< [val] Gradation */
|
|
226
|
+
#define MMG3D_DPARAM_hgrad 31
|
|
227
|
+
! /*!< [val] Gradation on required entites (advanced usage) */
|
|
228
|
+
#define MMG3D_DPARAM_hgradreq 32
|
|
229
|
+
! /*!< [val] Function value where the level set is to be discretized */
|
|
230
|
+
#define MMG3D_DPARAM_ls 33
|
|
231
|
+
! /*!< [val] Relaxation parameter for boundary regularization (0<val<1) */
|
|
232
|
+
#define MMG3D_DPARAM_xreg 34
|
|
233
|
+
! /*!< [-1/val] Remove small disconnected components in level-set mode */
|
|
234
|
+
#define MMG3D_DPARAM_rmc 35
|
|
235
|
+
! /*!< [n] Number of parameters */
|
|
236
|
+
#define MMG3D_PARAM_size 36
|
|
237
|
+
|
|
238
|
+
! /*--------------------------- function headers ---------------------------*/
|
|
239
|
+
! /* Initialization functions */
|
|
240
|
+
! /* init structures */
|
|
241
|
+
! /**
|
|
242
|
+
! * \brief Initialize a mesh structure and optionally the associated solution and metric structures.
|
|
243
|
+
! *
|
|
244
|
+
! * \param starter dummy argument used to initialize the variadic argument
|
|
245
|
+
! * list
|
|
246
|
+
! * \param ... variadic arguments that depend on the library function that you
|
|
247
|
+
! * want to call.
|
|
248
|
+
! *
|
|
249
|
+
! * For the MMG3D_mmg3dlib function, you need
|
|
250
|
+
! * to call the \ref MMG3D_Init_mesh function with the following arguments :
|
|
251
|
+
! * MMG3D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppMet
|
|
252
|
+
! * MMG5_ARG_ppMet, &your_metric,MMG5_ARG_end).
|
|
253
|
+
! *
|
|
254
|
+
! * For the MMG3D_mmg3dls function, you need
|
|
255
|
+
! * to call the \ref MMG3D_Init_mesh function with the following arguments :
|
|
256
|
+
! * MMG3D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppLs,
|
|
257
|
+
! * &your_level_set,MMG5_ARG_end).
|
|
258
|
+
! *
|
|
259
|
+
! * For the MMG3D_mmg3dmov function, you must call
|
|
260
|
+
! * : MMG3D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh,
|
|
261
|
+
! * MMG5_ARG_ppMet,&empty_metric,MMG5_ARG_ppDisp, &your_displacement,
|
|
262
|
+
! * MMG5_ARG_end).
|
|
263
|
+
! *
|
|
264
|
+
! * Here, \a your_mesh is a \ref MMG5_pMesh, \a your_metric \a your_level_set and
|
|
265
|
+
! * \a your_displacement are \ref MMG5_pSol.
|
|
266
|
+
! *
|
|
267
|
+
! * \return 1 on success, 0 on failure
|
|
268
|
+
! *
|
|
269
|
+
! * This function allocates and initializes MMG structures. All structures of
|
|
270
|
+
! * types MMG5_pMesh and MMG5_pSol that will be given as arguments to Mmg
|
|
271
|
+
! * functions must be initialized with this function.
|
|
272
|
+
! *
|
|
273
|
+
! * \remark No fortran interface to allow variadic arguments.
|
|
274
|
+
! *
|
|
275
|
+
! * \warning detected bugs:
|
|
276
|
+
! * - some vertices along open boundaries end up with a normal (while they should not)
|
|
277
|
+
! *
|
|
278
|
+
! */
|
|
279
|
+
|
|
280
|
+
! LIBMMG3D_EXPORT int MMG3D_Init_mesh(const int starter,...);
|
|
281
|
+
|
|
282
|
+
! /**
|
|
283
|
+
! * \param mesh pointer to the mesh structure.
|
|
284
|
+
! * \param sol pointer to the sol structure.
|
|
285
|
+
! *
|
|
286
|
+
! * \brief Initialize file names to their default values.
|
|
287
|
+
! *
|
|
288
|
+
! * This function initializes all file names to their default values.
|
|
289
|
+
! *
|
|
290
|
+
! * \remark Fortran interface:
|
|
291
|
+
! */
|
|
292
|
+
INTERFACE
|
|
293
|
+
SUBROUTINE MMG3D_INIT_FILENAMES(mesh,sol)
|
|
294
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol
|
|
295
|
+
END SUBROUTINE
|
|
296
|
+
END INTERFACE
|
|
297
|
+
! *
|
|
298
|
+
! */
|
|
299
|
+
|
|
300
|
+
! LIBMMG3D_EXPORT void MMG3D_Init_fileNames(MMG5_pMesh mesh, MMG5_pSol sol);
|
|
301
|
+
|
|
302
|
+
! /**
|
|
303
|
+
! * \brief Initialize parameters to their default values
|
|
304
|
+
! *
|
|
305
|
+
! * \param mesh pointer to the mesh structure.
|
|
306
|
+
! *
|
|
307
|
+
! * Initialization of the input parameters (stored in the Info structure).
|
|
308
|
+
! *
|
|
309
|
+
! * \remark Fortran interface:
|
|
310
|
+
! */
|
|
311
|
+
INTERFACE
|
|
312
|
+
SUBROUTINE MMG3D_INIT_PARAMETERS(mesh)
|
|
313
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
314
|
+
END SUBROUTINE
|
|
315
|
+
END INTERFACE
|
|
316
|
+
! *
|
|
317
|
+
! */
|
|
318
|
+
|
|
319
|
+
! LIBMMG3D_EXPORT void MMG3D_Init_parameters(MMG5_pMesh mesh);
|
|
320
|
+
|
|
321
|
+
! /* init file names */
|
|
322
|
+
! /**
|
|
323
|
+
! * \param mesh pointer to the mesh structure.
|
|
324
|
+
! * \param meshin input mesh name.
|
|
325
|
+
! * \return 1.
|
|
326
|
+
! *
|
|
327
|
+
! * \brief Set the name of input mesh.
|
|
328
|
+
! *
|
|
329
|
+
! * \remark Fortran interface:
|
|
330
|
+
! */
|
|
331
|
+
INTERFACE
|
|
332
|
+
SUBROUTINE MMG3D_SET_INPUTMESHNAME(mesh,meshin,strlen0,retval)
|
|
333
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
|
|
334
|
+
CHARACTER(LEN=*), INTENT(IN) :: meshin
|
|
335
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
336
|
+
INTEGER, INTENT(OUT) :: retval
|
|
337
|
+
END SUBROUTINE
|
|
338
|
+
END INTERFACE
|
|
339
|
+
! *
|
|
340
|
+
! */
|
|
341
|
+
|
|
342
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_inputMeshName(MMG5_pMesh mesh,const char* meshin);
|
|
343
|
+
|
|
344
|
+
! /**
|
|
345
|
+
! * \param mesh pointer to the mesh structure.
|
|
346
|
+
! * \param meshout name of the output mesh file.
|
|
347
|
+
! * \return 1.
|
|
348
|
+
! *
|
|
349
|
+
! * \brief Set the name of output mesh file.
|
|
350
|
+
! *
|
|
351
|
+
! * \remark Fortran interface:
|
|
352
|
+
! */
|
|
353
|
+
INTERFACE
|
|
354
|
+
SUBROUTINE MMG3D_SET_OUTPUTMESHNAME(mesh,meshout,strlen0,retval)
|
|
355
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
|
|
356
|
+
CHARACTER(LEN=*), INTENT(IN) :: meshout
|
|
357
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
358
|
+
INTEGER, INTENT(OUT) :: retval
|
|
359
|
+
END SUBROUTINE
|
|
360
|
+
END INTERFACE
|
|
361
|
+
! *
|
|
362
|
+
! */
|
|
363
|
+
|
|
364
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_outputMeshName(MMG5_pMesh mesh, const char* meshout);
|
|
365
|
+
|
|
366
|
+
! /**
|
|
367
|
+
! * \param mesh pointer to the mesh structure.
|
|
368
|
+
! * \param sol pointer to the sol structure.
|
|
369
|
+
! * \param solin name of the input solution file.
|
|
370
|
+
! * \return 1.
|
|
371
|
+
! *
|
|
372
|
+
! * \brief Set the name of input solution file.
|
|
373
|
+
! *
|
|
374
|
+
! * \remark Fortran interface:
|
|
375
|
+
! */
|
|
376
|
+
INTERFACE
|
|
377
|
+
SUBROUTINE MMG3D_SET_INPUTSOLNAME(mesh,sol,solin,strlen0,retval)
|
|
378
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
379
|
+
CHARACTER(LEN=*), INTENT(IN) :: solin
|
|
380
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
381
|
+
INTEGER, INTENT(OUT) :: retval
|
|
382
|
+
END SUBROUTINE
|
|
383
|
+
END INTERFACE
|
|
384
|
+
! *
|
|
385
|
+
! */
|
|
386
|
+
|
|
387
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_inputSolName(MMG5_pMesh mesh,MMG5_pSol sol,
|
|
388
|
+
! const char* solin);
|
|
389
|
+
|
|
390
|
+
! /**
|
|
391
|
+
! * \param mesh pointer to the mesh structure.
|
|
392
|
+
! * \param sol pointer to the sol structure.
|
|
393
|
+
! * \param solout name of the output solution file.
|
|
394
|
+
! * \return 0 if failed, 1 otherwise.
|
|
395
|
+
! *
|
|
396
|
+
! * \brief Set the name of the output solution file.
|
|
397
|
+
! *
|
|
398
|
+
! * \remark Fortran interface:
|
|
399
|
+
! */
|
|
400
|
+
INTERFACE
|
|
401
|
+
SUBROUTINE MMG3D_SET_OUTPUTSOLNAME(mesh,sol,solout,strlen0,retval)
|
|
402
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
403
|
+
CHARACTER(LEN=*), INTENT(IN) :: solout
|
|
404
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
405
|
+
INTEGER, INTENT(OUT) :: retval
|
|
406
|
+
END SUBROUTINE
|
|
407
|
+
END INTERFACE
|
|
408
|
+
! *
|
|
409
|
+
! */
|
|
410
|
+
|
|
411
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_outputSolName(MMG5_pMesh mesh,MMG5_pSol sol,
|
|
412
|
+
! const char* solout);
|
|
413
|
+
|
|
414
|
+
! /**
|
|
415
|
+
! * \param mesh pointer to the mesh structure.
|
|
416
|
+
! * \param fparamin name of the input parameter file.
|
|
417
|
+
! * \return 1.
|
|
418
|
+
! *
|
|
419
|
+
! * \brief Set the name of the input parameter file.
|
|
420
|
+
! *
|
|
421
|
+
! * \remark Fortran interface:
|
|
422
|
+
! */
|
|
423
|
+
INTERFACE
|
|
424
|
+
SUBROUTINE MMG3D_SET_INPUTPARAMNAME(mesh,fparamin,strlen0,retval)
|
|
425
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
|
|
426
|
+
CHARACTER(LEN=*), INTENT(IN) :: fparamin
|
|
427
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
428
|
+
INTEGER, INTENT(OUT) :: retval
|
|
429
|
+
END SUBROUTINE
|
|
430
|
+
END INTERFACE
|
|
431
|
+
! *
|
|
432
|
+
! */
|
|
433
|
+
|
|
434
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_inputParamName(MMG5_pMesh mesh, const char* fparamin);
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
! /* init structure sizes */
|
|
438
|
+
! /**
|
|
439
|
+
! * \brief Initialize a solution field.
|
|
440
|
+
! * \param mesh pointer to the mesh structure.
|
|
441
|
+
! * \param sol pointer to the sol structure.
|
|
442
|
+
! * \param typEntity type of entities on which the solution is defined (vertices, triangles, ...).
|
|
443
|
+
! * See \ref MMG5_entities for the defined entity types. Currently only \ref MMG5_Vertex
|
|
444
|
+
! * is supported.
|
|
445
|
+
! * \param np number of solutions.
|
|
446
|
+
! * \param typSol type of solution (scalar, vectorial, ...,
|
|
447
|
+
! * see \ref MMG5_type for possible values).
|
|
448
|
+
! * \return 0 if failed, 1 otherwise.
|
|
449
|
+
! *
|
|
450
|
+
! * Initialize a solution field: set dimension, types and number of data.
|
|
451
|
+
! * To use to initialize a metric, a level-set or a displacement field.
|
|
452
|
+
! *
|
|
453
|
+
! * \remark Fortran interface:
|
|
454
|
+
! */
|
|
455
|
+
INTERFACE
|
|
456
|
+
SUBROUTINE MMG3D_SET_SOLSIZE(mesh,sol,typEntity,np,typSol,retval)
|
|
457
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol
|
|
458
|
+
INTEGER(MMG5F_INT), INTENT(IN):: np
|
|
459
|
+
INTEGER, INTENT(IN) :: typEntity,typSol
|
|
460
|
+
INTEGER, INTENT(OUT) :: retval
|
|
461
|
+
END SUBROUTINE
|
|
462
|
+
END INTERFACE
|
|
463
|
+
! *
|
|
464
|
+
! */
|
|
465
|
+
|
|
466
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int typEntity,
|
|
467
|
+
! MMG5_int np, int typSol);
|
|
468
|
+
|
|
469
|
+
! /**
|
|
470
|
+
! * \brief Initialize an array of solution values defined at vertices
|
|
471
|
+
! * \param mesh pointer to the mesh structure.
|
|
472
|
+
! * \param sol pointer to an allocatable sol structure.
|
|
473
|
+
! * \param nsols number of solutions per entity
|
|
474
|
+
! * \param nentities number of vertices
|
|
475
|
+
! * \param typSol Array of size nsols listing the type of the solutions
|
|
476
|
+
! * (scalar, vectorial, ..., see \ref MMG5_type for possible values).
|
|
477
|
+
! * \return 0 if failed, 1 otherwise.
|
|
478
|
+
! *
|
|
479
|
+
! * Initialize a solution field defined at vertices: set dimension,
|
|
480
|
+
! * types and number of data values. (not used by Mmg itself).
|
|
481
|
+
! *
|
|
482
|
+
! * \remark Fortran interface:
|
|
483
|
+
! */
|
|
484
|
+
INTERFACE
|
|
485
|
+
SUBROUTINE MMG3D_SET_SOLSATVERTICESSIZE(mesh,sol,nsols,nentities,typSol,retval)
|
|
486
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol
|
|
487
|
+
INTEGER, INTENT(IN) :: nsols
|
|
488
|
+
INTEGER(MMG5F_INT), INTENT(IN):: nentities
|
|
489
|
+
INTEGER, INTENT(IN) :: typSol(*)
|
|
490
|
+
INTEGER, INTENT(OUT) :: retval
|
|
491
|
+
END SUBROUTINE
|
|
492
|
+
END INTERFACE
|
|
493
|
+
! *
|
|
494
|
+
! */
|
|
495
|
+
|
|
496
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol,int nsols,
|
|
497
|
+
! MMG5_int nentities, int *typSol);
|
|
498
|
+
|
|
499
|
+
! /**
|
|
500
|
+
! * \brief Set the number of vertices, tetrahedra, prisms, triangles, quadrilaterals,
|
|
501
|
+
! * and edges of a mesh.
|
|
502
|
+
! * \param mesh pointer to the mesh structure.
|
|
503
|
+
! * \param np number of vertices.
|
|
504
|
+
! * \param ne number of tetrahedra.
|
|
505
|
+
! * \param nprism number of prisms.
|
|
506
|
+
! * \param nt number of triangles.
|
|
507
|
+
! * \param nquad number of quads.
|
|
508
|
+
! * \param na number of edges.
|
|
509
|
+
! * \return 0 if failed, 1 otherwise.
|
|
510
|
+
! *
|
|
511
|
+
! * This function sets the number of vertices, tetrahedra, prisms, triangles,
|
|
512
|
+
! * quadrilaterals and edges of the mesh and allocates the associated arrays. If
|
|
513
|
+
! * called again, it will reset the whole mesh to reallocate it at the new size
|
|
514
|
+
! *
|
|
515
|
+
! * \remark Fortran interface:
|
|
516
|
+
! */
|
|
517
|
+
INTERFACE
|
|
518
|
+
SUBROUTINE MMG3D_SET_MESHSIZE(mesh,np,ne,nprism,nt,nquad,na,retval)
|
|
519
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
520
|
+
INTEGER(MMG5F_INT) :: np,ne,nprism,nt,nquad,na
|
|
521
|
+
INTEGER, INTENT(OUT) :: retval
|
|
522
|
+
END SUBROUTINE
|
|
523
|
+
END INTERFACE
|
|
524
|
+
! *
|
|
525
|
+
! */
|
|
526
|
+
|
|
527
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_meshSize(MMG5_pMesh mesh,MMG5_int np,MMG5_int ne,MMG5_int nprism,
|
|
528
|
+
! MMG5_int nt,MMG5_int nquad,MMG5_int na);
|
|
529
|
+
|
|
530
|
+
! /* init structure data */
|
|
531
|
+
! /**
|
|
532
|
+
! * \brief Set the coordinates of a single vertex.
|
|
533
|
+
! * \param mesh pointer to the mesh structure.
|
|
534
|
+
! * \param c0 coordinate of the vertex along the first dimension.
|
|
535
|
+
! * \param c1 coordinate of the vertex along the second dimension.
|
|
536
|
+
! * \param c2 coordinate of the vertex along the third dimension.
|
|
537
|
+
! * \param ref vertex reference.
|
|
538
|
+
! * \param pos position of the vertex in the mesh.
|
|
539
|
+
! * \return 1.
|
|
540
|
+
! *
|
|
541
|
+
! * This function sets the coordinates of a vertex \a c0, \a c1,\a c2 and reference \a ref
|
|
542
|
+
! * at position \a pos in mesh structure (from 1 to nb_vertices included).
|
|
543
|
+
! *
|
|
544
|
+
! * \remark Fortran interface:
|
|
545
|
+
! */
|
|
546
|
+
INTERFACE
|
|
547
|
+
SUBROUTINE MMG3D_SET_VERTEX(mesh,c0,c1,c2,ref,pos,retval)
|
|
548
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
549
|
+
REAL(KIND=8), INTENT(IN) :: c0,c1,c2
|
|
550
|
+
INTEGER(MMG5F_INT), INTENT(IN):: ref,pos
|
|
551
|
+
INTEGER, INTENT(OUT) :: retval
|
|
552
|
+
END SUBROUTINE
|
|
553
|
+
END INTERFACE
|
|
554
|
+
! *
|
|
555
|
+
! */
|
|
556
|
+
|
|
557
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_vertex(MMG5_pMesh mesh, double c0, double c1,
|
|
558
|
+
! double c2, MMG5_int ref,MMG5_int pos);
|
|
559
|
+
|
|
560
|
+
! /**
|
|
561
|
+
! * \brief Set all vertex coordinates and references in a mesh structure
|
|
562
|
+
! *
|
|
563
|
+
! * \param mesh pointer to the mesh structure.
|
|
564
|
+
! * \param vertices array of vertex coordinates in the order \f$[x_1, y_1, z_1, x_2, \ldots, z_N]\f$
|
|
565
|
+
! * where \f$N\f$ is the number of vertices in the mesh.
|
|
566
|
+
! * \param refs array of vertex references.
|
|
567
|
+
! * The reference of vertex \f$i\f$ is stored in refs[\f$i-1\f$].
|
|
568
|
+
! * \return 1.
|
|
569
|
+
! *
|
|
570
|
+
! * This function sets the coordinates and references of all vertices in a mesh
|
|
571
|
+
! * structure. The number of vertices in the mesh must have been set before.
|
|
572
|
+
! *
|
|
573
|
+
! * \remark Fortran interface: (commentated in order to allow to pass
|
|
574
|
+
! * \%val(0) instead of the refs array)
|
|
575
|
+
! *
|
|
576
|
+
! */
|
|
577
|
+
INTERFACE
|
|
578
|
+
! SUBROUTINE MMG3D_SET_VERTICES(mesh,vertices,refs,retval)
|
|
579
|
+
! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
580
|
+
! REAL(KIND=8), INTENT(IN) :: vertices(*)
|
|
581
|
+
! INTEGER(MMG5F_INT),INTENT(IN) :: refs(*)
|
|
582
|
+
! INTEGER, INTENT(OUT) :: retval
|
|
583
|
+
! END SUBROUTINE
|
|
584
|
+
END INTERFACE
|
|
585
|
+
! *
|
|
586
|
+
! */
|
|
587
|
+
|
|
588
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_vertices(MMG5_pMesh mesh, double *vertices,MMG5_int *refs);
|
|
589
|
+
|
|
590
|
+
! /**
|
|
591
|
+
! * \brief set a single tetrahedron's vertices
|
|
592
|
+
! *
|
|
593
|
+
! * \param mesh pointer to the mesh structure.
|
|
594
|
+
! * \param v0 first vertex of tetrahedron.
|
|
595
|
+
! * \param v1 second vertex of tetrahedron.
|
|
596
|
+
! * \param v2 third vertex of tetrahedron.
|
|
597
|
+
! * \param v3 fourth vertex of tetrahedron.
|
|
598
|
+
! * \param ref tetrahedron reference.
|
|
599
|
+
! * \param pos tetrahedron position in the mesh.
|
|
600
|
+
! * \return 0 if failed, 1 otherwise.
|
|
601
|
+
! *
|
|
602
|
+
! * Assign the vertices \a v0, \a v1,\a v2,\a v3 and reference
|
|
603
|
+
! * \a ref to the tetrahedron at position \a pos in the mesh structure.
|
|
604
|
+
! * \a pos ranges from 1 to nb_tetra included.
|
|
605
|
+
! *
|
|
606
|
+
! * \remark Fortran interface:
|
|
607
|
+
! */
|
|
608
|
+
INTERFACE
|
|
609
|
+
SUBROUTINE MMG3D_SET_TETRAHEDRON(mesh,v0,v1,v2,v3,ref,pos,retval)
|
|
610
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
611
|
+
INTEGER(MMG5F_INT), INTENT(IN):: v0,v1,v2,v3,pos
|
|
612
|
+
INTEGER(MMG5F_INT), INTENT(IN):: ref
|
|
613
|
+
INTEGER, INTENT(OUT) :: retval
|
|
614
|
+
END SUBROUTINE
|
|
615
|
+
END INTERFACE
|
|
616
|
+
! *
|
|
617
|
+
! */
|
|
618
|
+
|
|
619
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_tetrahedron(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1,
|
|
620
|
+
! MMG5_int v2, MMG5_int v3, MMG5_int ref, MMG5_int pos);
|
|
621
|
+
|
|
622
|
+
! /**
|
|
623
|
+
! * \brief Set the vertices and references of all tetrahedra in a mesh structure
|
|
624
|
+
! *
|
|
625
|
+
! * \param mesh pointer to the mesh structure.
|
|
626
|
+
! * \param tetra vertices of the tetras of the mesh given.
|
|
627
|
+
! * The vertices of the \f$i^{th}\f$ tetrahedron are given by
|
|
628
|
+
! * tetra[(i-1)*4] to tetra[(i-1)*4+3] included.
|
|
629
|
+
! * \param refs array of the tetrahedra references.
|
|
630
|
+
! * The references of the \f$i^{th}\f$ tetrahedron is given by refs[i-1].
|
|
631
|
+
! * \return 0 if failed, 1 otherwise.
|
|
632
|
+
! *
|
|
633
|
+
! * This function sets the vertices and references of all tetrahedra in a mesh.
|
|
634
|
+
! *
|
|
635
|
+
! * \remark Fortran interface: (commentated in
|
|
636
|
+
! * order to allow to pass \%val(0) instead of the refs array)
|
|
637
|
+
! *
|
|
638
|
+
! */
|
|
639
|
+
INTERFACE
|
|
640
|
+
! SUBROUTINE MMG3D_SET_TETRAHEDRA(mesh,tetra,refs,retval)
|
|
641
|
+
! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
642
|
+
! INTEGER(MMG5F_INT), DIMENSION(*), INTENT(IN) :: tetra
|
|
643
|
+
! INTEGER(MMG5F_INT), DIMENSION(*), INTENT(IN) :: refs
|
|
644
|
+
! INTEGER, INTENT(OUT) :: retval
|
|
645
|
+
! END SUBROUTINE
|
|
646
|
+
END INTERFACE
|
|
647
|
+
! *
|
|
648
|
+
! */
|
|
649
|
+
|
|
650
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_tetrahedra(MMG5_pMesh mesh, MMG5_int *tetra,
|
|
651
|
+
! MMG5_int *refs);
|
|
652
|
+
|
|
653
|
+
! /**
|
|
654
|
+
! * \brief Set the vertices and reference of a single prism in a mesh.
|
|
655
|
+
! *
|
|
656
|
+
! * \param mesh pointer to the mesh structure.
|
|
657
|
+
! * \param v0 first vertex of prism.
|
|
658
|
+
! * \param v1 second vertex of prism.
|
|
659
|
+
! * \param v2 third vertex of prism.
|
|
660
|
+
! * \param v3 fourth vertex of prism.
|
|
661
|
+
! * \param v4 fifth vertex of prism.
|
|
662
|
+
! * \param v5 sixth vertex of prism.
|
|
663
|
+
! * \param ref prism reference.
|
|
664
|
+
! * \param pos prism position in the mesh.
|
|
665
|
+
! * \return 0 if failed, 1 otherwise.
|
|
666
|
+
! *
|
|
667
|
+
! * This function sets the six vertices \a v0, \a v1,\a v2,\a v3,\a v4,\a v5 and reference
|
|
668
|
+
! * \a ref for the prism at position \a pos in the mesh structure (from 1 to nb_prisms included).
|
|
669
|
+
! *
|
|
670
|
+
! * \remark Fortran interface:
|
|
671
|
+
! */
|
|
672
|
+
INTERFACE
|
|
673
|
+
SUBROUTINE MMG3D_SET_PRISM(mesh,v0,v1,v2,v3,v4,v5,ref,pos,retval)
|
|
674
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
675
|
+
INTEGER(MMG5F_INT), INTENT(IN):: v0,v1,v2,v3,v4,v5,ref,pos
|
|
676
|
+
INTEGER, INTENT(OUT) :: retval
|
|
677
|
+
END SUBROUTINE
|
|
678
|
+
END INTERFACE
|
|
679
|
+
! *
|
|
680
|
+
! */
|
|
681
|
+
|
|
682
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_prism(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1,
|
|
683
|
+
! MMG5_int v2, MMG5_int v3, MMG5_int v4, MMG5_int v5, MMG5_int ref, MMG5_int pos);
|
|
684
|
+
|
|
685
|
+
! /**
|
|
686
|
+
! * \brief Set the vertices and references of all prisms in a mesh.
|
|
687
|
+
! *
|
|
688
|
+
! * \param mesh pointer to the mesh structure.
|
|
689
|
+
! * \param prisms vertices of the prisms of the mesh
|
|
690
|
+
! * Vertices of the \f$i^{th}\f$ prism are stored in prism[(i-1)*6]
|
|
691
|
+
! * to prism[(i-1)*6+5] included.
|
|
692
|
+
! * \param refs array of the prisms references.
|
|
693
|
+
! * The references of the \f$i^{th}\f$ prism is stored in refs[i-1].
|
|
694
|
+
! * \return 0 if failed, 1 otherwise.
|
|
695
|
+
! *
|
|
696
|
+
! * This function sets the vertices and references of all prisms in a mesh.
|
|
697
|
+
! *
|
|
698
|
+
! * \remark Fortran interface: (commentated in
|
|
699
|
+
! * order to allow to pass \%val(0) instead of the refs array)
|
|
700
|
+
! *
|
|
701
|
+
! */
|
|
702
|
+
INTERFACE
|
|
703
|
+
! SUBROUTINE MMG3D_SET_PRISMS(mesh,prisms,refs,retval)
|
|
704
|
+
! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
705
|
+
! INTEGER(MMG5F_INT), DIMENSION(*), INTENT(IN) :: prisms
|
|
706
|
+
! INTEGER(MMG5F_INT), DIMENSION(*), INTENT(IN) :: refs
|
|
707
|
+
! INTEGER, INTENT(OUT) :: retval
|
|
708
|
+
! END SUBROUTINE
|
|
709
|
+
END INTERFACE
|
|
710
|
+
! *
|
|
711
|
+
! */
|
|
712
|
+
|
|
713
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_prisms(MMG5_pMesh mesh, MMG5_int *prisms,
|
|
714
|
+
! MMG5_int *refs);
|
|
715
|
+
|
|
716
|
+
! /**
|
|
717
|
+
! * \brief Set the vertices and reference of a single triangle in a mesh.
|
|
718
|
+
! *
|
|
719
|
+
! * \param mesh pointer to the mesh structure.
|
|
720
|
+
! * \param v0 first vertex of triangle.
|
|
721
|
+
! * \param v1 second vertex of triangle.
|
|
722
|
+
! * \param v2 third vertex of triangle.
|
|
723
|
+
! * \param ref triangle reference.
|
|
724
|
+
! * \param pos triangle position in the mesh.
|
|
725
|
+
! * \return 0 if failed, 1 otherwise.
|
|
726
|
+
! *
|
|
727
|
+
! * This function defines a triangle of vertices \a v0, \a v1, \a v2 and reference \a ref
|
|
728
|
+
! * at position \a pos in mesh structure (from 1 to nb_triangle included).
|
|
729
|
+
! *
|
|
730
|
+
! * \remark Fortran interface:
|
|
731
|
+
! */
|
|
732
|
+
INTERFACE
|
|
733
|
+
SUBROUTINE MMG3D_SET_TRIANGLE(mesh,v0,v1,v2,ref,pos,retval)
|
|
734
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
735
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: v0,v1,v2,ref,pos
|
|
736
|
+
INTEGER, INTENT(OUT) :: retval
|
|
737
|
+
END SUBROUTINE
|
|
738
|
+
END INTERFACE
|
|
739
|
+
! *
|
|
740
|
+
! */
|
|
741
|
+
|
|
742
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_triangle(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1,
|
|
743
|
+
! MMG5_int v2, MMG5_int ref,MMG5_int pos);
|
|
744
|
+
|
|
745
|
+
! /**
|
|
746
|
+
! * \brief Set the vertices and references of all triangles in a mesh.
|
|
747
|
+
! *
|
|
748
|
+
! * \param mesh pointer to the mesh structure.
|
|
749
|
+
! * \param tria pointer to the array of the tria vertices
|
|
750
|
+
! * Vertices of the \f$i^{th}\f$ tria are stored in tria[(i-1)*3]\@3.
|
|
751
|
+
! * \param refs pointer to the array of the triangle references.
|
|
752
|
+
! * refs[i-1] is the ref of the \f$i^{th}\f$ tria.
|
|
753
|
+
! * \return 0 if failed, 1 otherwise.
|
|
754
|
+
! *
|
|
755
|
+
! * This function sets the vertices and references of all triangles in a mesh.
|
|
756
|
+
! *
|
|
757
|
+
! * \remark Fortran interface: (commentated in
|
|
758
|
+
! * order to allow to pass \%val(0) instead of the refs array)
|
|
759
|
+
! *
|
|
760
|
+
! */
|
|
761
|
+
INTERFACE
|
|
762
|
+
! SUBROUTINE MMG3D_SET_TRIANGLES(mesh,tria,refs,retval)
|
|
763
|
+
! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
764
|
+
! INTEGER(MMG5F_INT),DIMENSION(*), INTENT(IN) :: tria
|
|
765
|
+
! INTEGER(MMG5F_INT),DIMENSION(*), INTENT(IN) :: refs
|
|
766
|
+
! INTEGER, INTENT(OUT) :: retval
|
|
767
|
+
! END SUBROUTINE
|
|
768
|
+
END INTERFACE
|
|
769
|
+
! *
|
|
770
|
+
! */
|
|
771
|
+
|
|
772
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_triangles(MMG5_pMesh mesh, MMG5_int *tria, MMG5_int *refs);
|
|
773
|
+
|
|
774
|
+
! /**
|
|
775
|
+
! * \brief Set the vertices and reference of a single quadrilateral in a mesh.
|
|
776
|
+
! *
|
|
777
|
+
! * \param mesh pointer to the mesh structure.
|
|
778
|
+
! * \param v0 first vertex of quadrilateral.
|
|
779
|
+
! * \param v1 second vertex of quadrilateral.
|
|
780
|
+
! * \param v2 third vertex of quadrilateral.
|
|
781
|
+
! * \param v3 fourth vertex of quadrilateral.
|
|
782
|
+
! * \param ref quadrilateral reference.
|
|
783
|
+
! * \param pos quadrilateral position in the mesh.
|
|
784
|
+
! * \return 0 if failed, 1 otherwise.
|
|
785
|
+
! *
|
|
786
|
+
! * Set a quadrilateral of vertices \a v0, \a v1, \a v2, \a v3 and reference \a ref
|
|
787
|
+
! * at position \a pos in mesh structure (from 1 to nb_quadrangles included).
|
|
788
|
+
! *
|
|
789
|
+
! * \remark Fortran interface:
|
|
790
|
+
! */
|
|
791
|
+
INTERFACE
|
|
792
|
+
SUBROUTINE MMG3D_SET_QUADRILATERAL(mesh,v0,v1,v2,v3,ref,pos,retval)
|
|
793
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
794
|
+
INTEGER(MMG5F_INT), INTENT(IN):: v0,v1,v2,v3,ref,pos
|
|
795
|
+
INTEGER, INTENT(OUT) :: retval
|
|
796
|
+
END SUBROUTINE
|
|
797
|
+
END INTERFACE
|
|
798
|
+
! *
|
|
799
|
+
! */
|
|
800
|
+
|
|
801
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_quadrilateral(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1,
|
|
802
|
+
! MMG5_int v2, MMG5_int v3, MMG5_int ref,MMG5_int pos);
|
|
803
|
+
|
|
804
|
+
! /**
|
|
805
|
+
! * \brief Set the vertices and references of all quadrilaterals in a mesh.
|
|
806
|
+
! *
|
|
807
|
+
! * \param mesh pointer to the mesh structure.
|
|
808
|
+
! * \param quads pointer to the array of the quads vertices
|
|
809
|
+
! * Vertices of the \f$i^{th}\f$ quadra are stored in quads[(i-1)*3]\@3.
|
|
810
|
+
! * \param refs pointer to the array of the quadrilateral references.
|
|
811
|
+
! * refs[i-1] is the ref of the \f$i^{th}\f$ quadra.
|
|
812
|
+
! * \return 0 if failed, 1 otherwise.
|
|
813
|
+
! *
|
|
814
|
+
! * \remark Fortran interface: (commentated in
|
|
815
|
+
! * order to allow to pass \%val(0) instead of the refs array)
|
|
816
|
+
! *
|
|
817
|
+
! */
|
|
818
|
+
INTERFACE
|
|
819
|
+
! SUBROUTINE MMG3D_SET_QUADRILATERALS(mesh,quads,refs,retval)
|
|
820
|
+
! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
821
|
+
! INTEGER(MMG5F_INT),DIMENSION(*), INTENT(IN) :: quads
|
|
822
|
+
! INTEGER(MMG5F_INT),DIMENSION(*), INTENT(IN) :: refs
|
|
823
|
+
! INTEGER, INTENT(OUT) :: retval
|
|
824
|
+
! END SUBROUTINE
|
|
825
|
+
END INTERFACE
|
|
826
|
+
! *
|
|
827
|
+
! */
|
|
828
|
+
|
|
829
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_quadrilaterals(MMG5_pMesh mesh, MMG5_int *quads, MMG5_int *refs);
|
|
830
|
+
|
|
831
|
+
! /**
|
|
832
|
+
! * \brief Set the vertices and reference of a single edge in a mesh.
|
|
833
|
+
! *
|
|
834
|
+
! * \param mesh pointer to the mesh structure.
|
|
835
|
+
! * \param v0 first extremity of the edge.
|
|
836
|
+
! * \param v1 second extremity of the edge.
|
|
837
|
+
! * \param ref edge reference.
|
|
838
|
+
! * \param pos edge position in the mesh.
|
|
839
|
+
! * \return 0 if failed, 1 otherwise.
|
|
840
|
+
! *
|
|
841
|
+
! * Set edges of extremities \a v0, \a v1 and reference \a ref at
|
|
842
|
+
! * position \a pos in mesh structure (from 1 to nb_edges included)
|
|
843
|
+
! *
|
|
844
|
+
! * \remark Fortran interface:
|
|
845
|
+
! */
|
|
846
|
+
INTERFACE
|
|
847
|
+
SUBROUTINE MMG3D_SET_EDGE(mesh,v0,v1,ref,pos,retval)
|
|
848
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
849
|
+
INTEGER(MMG5F_INT), INTENT(IN):: v0,v1,ref,pos
|
|
850
|
+
INTEGER, INTENT(OUT) :: retval
|
|
851
|
+
END SUBROUTINE
|
|
852
|
+
END INTERFACE
|
|
853
|
+
! *
|
|
854
|
+
! */
|
|
855
|
+
|
|
856
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_edge(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int ref,MMG5_int pos);
|
|
857
|
+
|
|
858
|
+
! /**
|
|
859
|
+
! * \brief Assign the "corner" attribute to a vertex.
|
|
860
|
+
! *
|
|
861
|
+
! * \param mesh pointer to the mesh structure.
|
|
862
|
+
! * \param k vertex index.
|
|
863
|
+
! * \return 1.
|
|
864
|
+
! *
|
|
865
|
+
! * Set the "corner" attribute at vertex \a k. This affects how the vertex is
|
|
866
|
+
! * treated during remeshing.
|
|
867
|
+
! *
|
|
868
|
+
! * \remark Fortran interface:
|
|
869
|
+
! */
|
|
870
|
+
INTERFACE
|
|
871
|
+
SUBROUTINE MMG3D_SET_CORNER(mesh,k,retval)
|
|
872
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
873
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
874
|
+
INTEGER, INTENT(OUT) :: retval
|
|
875
|
+
END SUBROUTINE
|
|
876
|
+
END INTERFACE
|
|
877
|
+
! *
|
|
878
|
+
! */
|
|
879
|
+
|
|
880
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_corner(MMG5_pMesh mesh, MMG5_int k);
|
|
881
|
+
|
|
882
|
+
! /**
|
|
883
|
+
! * \brief Remove the "corner" attribute from a vertex.
|
|
884
|
+
! *
|
|
885
|
+
! * \param mesh pointer to the mesh structure.
|
|
886
|
+
! * \param k vertex index.
|
|
887
|
+
! * \return 1.
|
|
888
|
+
! *
|
|
889
|
+
! * Remove corner attribute from vertex \a k (from 1 to the number of vertices included).
|
|
890
|
+
! *
|
|
891
|
+
! * \remark Fortran interface
|
|
892
|
+
! *
|
|
893
|
+
! */
|
|
894
|
+
INTERFACE
|
|
895
|
+
SUBROUTINE MMG3D_UNSET_CORNER(mesh,k,retval)
|
|
896
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
897
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
898
|
+
INTEGER, INTENT(OUT) :: retval
|
|
899
|
+
END SUBROUTINE
|
|
900
|
+
END INTERFACE
|
|
901
|
+
! *
|
|
902
|
+
! */
|
|
903
|
+
|
|
904
|
+
! LIBMMG3D_EXPORT int MMG3D_Unset_corner(MMG5_pMesh mesh, MMG5_int k);
|
|
905
|
+
|
|
906
|
+
! /**
|
|
907
|
+
! * \brief Assign the "required" attribute to a vertex.
|
|
908
|
+
! *
|
|
909
|
+
! * \param mesh pointer to the mesh structure.
|
|
910
|
+
! * \param k vertex index.
|
|
911
|
+
! * \return 1.
|
|
912
|
+
! *
|
|
913
|
+
! * Set vertex \a k as required (\a k from 1 to nb_vertices included). This
|
|
914
|
+
! * prevents the remesher from moving the vertex.
|
|
915
|
+
! *
|
|
916
|
+
! * \remark Fortran interface:
|
|
917
|
+
! */
|
|
918
|
+
INTERFACE
|
|
919
|
+
SUBROUTINE MMG3D_SET_REQUIREDVERTEX(mesh,k,retval)
|
|
920
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
921
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
922
|
+
INTEGER, INTENT(OUT) :: retval
|
|
923
|
+
END SUBROUTINE
|
|
924
|
+
END INTERFACE
|
|
925
|
+
! *
|
|
926
|
+
! */
|
|
927
|
+
|
|
928
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_requiredVertex(MMG5_pMesh mesh, MMG5_int k);
|
|
929
|
+
|
|
930
|
+
! /**
|
|
931
|
+
! * \brief Remove required attribute from a vertex.
|
|
932
|
+
! *
|
|
933
|
+
! * \param mesh pointer to the mesh structure.
|
|
934
|
+
! * \param k vertex index.
|
|
935
|
+
! * \return 1.
|
|
936
|
+
! *
|
|
937
|
+
! * This function removes the required attribute from vertex \a k.
|
|
938
|
+
! *
|
|
939
|
+
! * \remark Fortran interface:
|
|
940
|
+
! */
|
|
941
|
+
INTERFACE
|
|
942
|
+
SUBROUTINE MMG3D_UNSET_REQUIREDVERTEX(mesh,k,retval)
|
|
943
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
944
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
945
|
+
INTEGER, INTENT(OUT) :: retval
|
|
946
|
+
END SUBROUTINE
|
|
947
|
+
END INTERFACE
|
|
948
|
+
! *
|
|
949
|
+
! */
|
|
950
|
+
|
|
951
|
+
! LIBMMG3D_EXPORT int MMG3D_Unset_requiredVertex(MMG5_pMesh mesh, MMG5_int k);
|
|
952
|
+
|
|
953
|
+
! /**
|
|
954
|
+
! * \brief Assign the "required" attribute to a tetrahedron.
|
|
955
|
+
! *
|
|
956
|
+
! * \param mesh pointer to the mesh structure.
|
|
957
|
+
! * \param k element index.
|
|
958
|
+
! * \return 1.
|
|
959
|
+
! *
|
|
960
|
+
! * Set element \a k as required (\a k from 1 to nb_tetra included).
|
|
961
|
+
! *
|
|
962
|
+
! * \remark Fortran interface:
|
|
963
|
+
! */
|
|
964
|
+
INTERFACE
|
|
965
|
+
SUBROUTINE MMG3D_SET_REQUIREDTETRAHEDRON(mesh,k,retval)
|
|
966
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
967
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
968
|
+
INTEGER, INTENT(OUT) :: retval
|
|
969
|
+
END SUBROUTINE
|
|
970
|
+
END INTERFACE
|
|
971
|
+
! *
|
|
972
|
+
! */
|
|
973
|
+
|
|
974
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_requiredTetrahedron(MMG5_pMesh mesh, MMG5_int k);
|
|
975
|
+
|
|
976
|
+
! /**
|
|
977
|
+
! * \brief Remove the "required" attribute from a tetrahedron.
|
|
978
|
+
! *
|
|
979
|
+
! * \param mesh pointer to the mesh structure.
|
|
980
|
+
! * \param k element index.
|
|
981
|
+
! * \return 1.
|
|
982
|
+
! *
|
|
983
|
+
! * Remove required attribute from element \a k (\a k from 1 to
|
|
984
|
+
! * nb_tetra included).
|
|
985
|
+
! *
|
|
986
|
+
! * \remark Fortran interface:
|
|
987
|
+
! */
|
|
988
|
+
INTERFACE
|
|
989
|
+
SUBROUTINE MMG3D_UNSET_REQUIREDTETRAHEDRON(mesh,k,retval)
|
|
990
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
991
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
992
|
+
INTEGER, INTENT(OUT) :: retval
|
|
993
|
+
END SUBROUTINE
|
|
994
|
+
END INTERFACE
|
|
995
|
+
! *
|
|
996
|
+
! */
|
|
997
|
+
|
|
998
|
+
! LIBMMG3D_EXPORT int MMG3D_Unset_requiredTetrahedron(MMG5_pMesh mesh, MMG5_int k);
|
|
999
|
+
|
|
1000
|
+
! /**
|
|
1001
|
+
! * \brief Assign the "required" attribute to multiple tetrahedra.
|
|
1002
|
+
! *
|
|
1003
|
+
! * \param mesh pointer to the mesh structure.
|
|
1004
|
+
! * \param reqIdx array of the indices of the required elements.
|
|
1005
|
+
! * \param nreq number of required elements
|
|
1006
|
+
! * \return 1.
|
|
1007
|
+
! *
|
|
1008
|
+
! * Determine which tetrahedra have the "required" attribute.
|
|
1009
|
+
! *
|
|
1010
|
+
! * \remark Fortran interface:
|
|
1011
|
+
! */
|
|
1012
|
+
INTERFACE
|
|
1013
|
+
SUBROUTINE MMG3D_SET_REQUIREDTETRAHEDRA(mesh,reqIdx,nreq,retval)
|
|
1014
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1015
|
+
INTEGER(MMG5F_INT), DIMENSION(*),INTENT(IN) :: reqIdx
|
|
1016
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: nreq
|
|
1017
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1018
|
+
END SUBROUTINE
|
|
1019
|
+
END INTERFACE
|
|
1020
|
+
! *
|
|
1021
|
+
! */
|
|
1022
|
+
|
|
1023
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_requiredTetrahedra(MMG5_pMesh mesh, MMG5_int *reqIdx, MMG5_int nreq);
|
|
1024
|
+
|
|
1025
|
+
! /**
|
|
1026
|
+
! * \brief Remove the "required" attribute from multiple tetrahedra.
|
|
1027
|
+
! *
|
|
1028
|
+
! * \param mesh pointer to the mesh structure.
|
|
1029
|
+
! * \param reqIdx array of the indices of the required elements.
|
|
1030
|
+
! * \param nreq number of required elements
|
|
1031
|
+
! * \return 1.
|
|
1032
|
+
! *
|
|
1033
|
+
! * Remove required attribute from a list of Tetra whose indices are contained in
|
|
1034
|
+
! * array \a reqIdx.
|
|
1035
|
+
! *
|
|
1036
|
+
! * \remark Fortran interface:
|
|
1037
|
+
! */
|
|
1038
|
+
INTERFACE
|
|
1039
|
+
SUBROUTINE MMG3D_UNSET_REQUIREDTETRAHEDRA(mesh,reqIdx,nreq,retval)
|
|
1040
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1041
|
+
INTEGER(MMG5F_INT), DIMENSION(*),INTENT(IN) :: reqIdx
|
|
1042
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: nreq
|
|
1043
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1044
|
+
END SUBROUTINE
|
|
1045
|
+
END INTERFACE
|
|
1046
|
+
! *
|
|
1047
|
+
! */
|
|
1048
|
+
|
|
1049
|
+
! LIBMMG3D_EXPORT int MMG3D_Unset_requiredTetrahedra(MMG5_pMesh mesh, MMG5_int *reqIdx, MMG5_int nreq);
|
|
1050
|
+
|
|
1051
|
+
! /**
|
|
1052
|
+
! * \brief Assign the "required" attribute to a single triangle.
|
|
1053
|
+
! *
|
|
1054
|
+
! * \param mesh pointer to the mesh structure.
|
|
1055
|
+
! * \param k triangle index.
|
|
1056
|
+
! * \return 1.
|
|
1057
|
+
! *
|
|
1058
|
+
! * Set triangle \a k as required (\a k from 1 to nb_tria included).
|
|
1059
|
+
! *
|
|
1060
|
+
! * \remark Fortran interface:
|
|
1061
|
+
! */
|
|
1062
|
+
INTERFACE
|
|
1063
|
+
SUBROUTINE MMG3D_SET_REQUIREDTRIANGLE(mesh,k,retval)
|
|
1064
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1065
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
1066
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1067
|
+
END SUBROUTINE
|
|
1068
|
+
END INTERFACE
|
|
1069
|
+
! *
|
|
1070
|
+
! */
|
|
1071
|
+
|
|
1072
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_requiredTriangle(MMG5_pMesh mesh, MMG5_int k);
|
|
1073
|
+
|
|
1074
|
+
! /**
|
|
1075
|
+
! * \brief Remove the "required" attribute from a single triangle.
|
|
1076
|
+
! *
|
|
1077
|
+
! * \param mesh pointer to the mesh structure.
|
|
1078
|
+
! * \param k triangle index.
|
|
1079
|
+
! * \return 1.
|
|
1080
|
+
! *
|
|
1081
|
+
! * Remove required attribute from triangle \a k.
|
|
1082
|
+
! *
|
|
1083
|
+
! * \remark Fortran interface:
|
|
1084
|
+
! */
|
|
1085
|
+
INTERFACE
|
|
1086
|
+
SUBROUTINE MMG3D_UNSET_REQUIREDTRIANGLE(mesh,k,retval)
|
|
1087
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1088
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
1089
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1090
|
+
END SUBROUTINE
|
|
1091
|
+
END INTERFACE
|
|
1092
|
+
! *
|
|
1093
|
+
! */
|
|
1094
|
+
|
|
1095
|
+
! LIBMMG3D_EXPORT int MMG3D_Unset_requiredTriangle(MMG5_pMesh mesh, MMG5_int k);
|
|
1096
|
+
|
|
1097
|
+
! /**
|
|
1098
|
+
! * \brief Assign the "required" attribute to multiple triangles.
|
|
1099
|
+
! *
|
|
1100
|
+
! * \param mesh pointer to the mesh structure.
|
|
1101
|
+
! * \param reqIdx array of the indices of the required triangles.
|
|
1102
|
+
! * \param nreq number of required triangles
|
|
1103
|
+
! * \return 1.
|
|
1104
|
+
! *
|
|
1105
|
+
! * \remark Fortran interface:
|
|
1106
|
+
! */
|
|
1107
|
+
INTERFACE
|
|
1108
|
+
SUBROUTINE MMG3D_SET_REQUIREDTRIANGLES(mesh,reqIdx,nreq,retval)
|
|
1109
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1110
|
+
INTEGER(MMG5F_INT), DIMENSION(*),INTENT(IN) :: reqIdx
|
|
1111
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: nreq
|
|
1112
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1113
|
+
END SUBROUTINE
|
|
1114
|
+
END INTERFACE
|
|
1115
|
+
! *
|
|
1116
|
+
! */
|
|
1117
|
+
|
|
1118
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_requiredTriangles(MMG5_pMesh mesh, MMG5_int *reqIdx, MMG5_int nreq);
|
|
1119
|
+
|
|
1120
|
+
! /**
|
|
1121
|
+
! * \brief Remove the "required" attribute from multiple triangles.
|
|
1122
|
+
! *
|
|
1123
|
+
! * \param mesh pointer to the mesh structure.
|
|
1124
|
+
! * \param reqIdx array of the indices of the required trias.
|
|
1125
|
+
! * \param nreq number of required trias
|
|
1126
|
+
! * \return 1.
|
|
1127
|
+
! *
|
|
1128
|
+
! * \remark Fortran interface:
|
|
1129
|
+
! */
|
|
1130
|
+
INTERFACE
|
|
1131
|
+
SUBROUTINE MMG3D_UNSET_REQUIREDTRIANGLES(mesh,reqIdx,nreq,retval)
|
|
1132
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1133
|
+
INTEGER(MMG5F_INT), DIMENSION(*),INTENT(IN) :: reqIdx
|
|
1134
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: nreq
|
|
1135
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1136
|
+
END SUBROUTINE
|
|
1137
|
+
END INTERFACE
|
|
1138
|
+
! *
|
|
1139
|
+
! */
|
|
1140
|
+
|
|
1141
|
+
! LIBMMG3D_EXPORT int MMG3D_Unset_requiredTriangles(MMG5_pMesh mesh, MMG5_int *reqIdx, MMG5_int nreq);
|
|
1142
|
+
|
|
1143
|
+
! /**
|
|
1144
|
+
! * \brief Assign the "parallel" attribute to a single triangle.
|
|
1145
|
+
! *
|
|
1146
|
+
! * \param mesh pointer to the mesh structure.
|
|
1147
|
+
! * \param k triangle index.
|
|
1148
|
+
! * \return 1.
|
|
1149
|
+
! *
|
|
1150
|
+
! * Set triangle \a k as parallel (triangle at the interface between two
|
|
1151
|
+
! * processors, ie, this triangle is required). (\a k from 1 to nb_tria included).
|
|
1152
|
+
! *
|
|
1153
|
+
! * \remark Fortran interface:
|
|
1154
|
+
! */
|
|
1155
|
+
INTERFACE
|
|
1156
|
+
SUBROUTINE MMG3D_SET_PARALLELTRIANGLE(mesh,k,retval)
|
|
1157
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1158
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
1159
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1160
|
+
END SUBROUTINE
|
|
1161
|
+
END INTERFACE
|
|
1162
|
+
! *
|
|
1163
|
+
! */
|
|
1164
|
+
|
|
1165
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_parallelTriangle(MMG5_pMesh mesh, MMG5_int k);
|
|
1166
|
+
|
|
1167
|
+
! /**
|
|
1168
|
+
! * \brief Remove the "parallel" attribute from a single triangle.
|
|
1169
|
+
! *
|
|
1170
|
+
! * \param mesh pointer to the mesh structure.
|
|
1171
|
+
! * \param k triangle index.
|
|
1172
|
+
! * \return 1.
|
|
1173
|
+
! *
|
|
1174
|
+
! * Remove parallel attribute from triangle \a k (i.e. triangles aren't preserved
|
|
1175
|
+
! * anymore). (\a k from 1 to nb_tria included).
|
|
1176
|
+
! *
|
|
1177
|
+
! * \remark Fortran interface:
|
|
1178
|
+
! */
|
|
1179
|
+
INTERFACE
|
|
1180
|
+
SUBROUTINE MMG3D_UNSET_PARALLELTRIANGLE(mesh,k,retval)
|
|
1181
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1182
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
1183
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1184
|
+
END SUBROUTINE
|
|
1185
|
+
END INTERFACE
|
|
1186
|
+
! *
|
|
1187
|
+
! */
|
|
1188
|
+
|
|
1189
|
+
! LIBMMG3D_EXPORT int MMG3D_Unset_parallelTriangle(MMG5_pMesh mesh, MMG5_int k);
|
|
1190
|
+
|
|
1191
|
+
! /**
|
|
1192
|
+
! * \brief Assign the "parallel" attribute to multiple triangles.
|
|
1193
|
+
! *
|
|
1194
|
+
! * \param mesh pointer to the mesh structure
|
|
1195
|
+
! * \param parIdx array of indices of triangles
|
|
1196
|
+
! * \param npar number of triangles
|
|
1197
|
+
! * \return 1.
|
|
1198
|
+
! *
|
|
1199
|
+
! * Set the parallel triangles (triangles at the interface between processors, i.e.
|
|
1200
|
+
! * these triangles are required).
|
|
1201
|
+
! *
|
|
1202
|
+
! * \remark Fortran interface:
|
|
1203
|
+
! */
|
|
1204
|
+
INTERFACE
|
|
1205
|
+
SUBROUTINE MMG3D_SET_PARALLELTRIANGLES(mesh,parIdx,npar,retval)
|
|
1206
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1207
|
+
INTEGER(MMG5F_INT), DIMENSION(*),INTENT(IN) :: parIdx
|
|
1208
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: npar
|
|
1209
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1210
|
+
END SUBROUTINE
|
|
1211
|
+
END INTERFACE
|
|
1212
|
+
! *
|
|
1213
|
+
! */
|
|
1214
|
+
|
|
1215
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_parallelTriangles(MMG5_pMesh mesh, MMG5_int *parIdx, MMG5_int npar);
|
|
1216
|
+
|
|
1217
|
+
! /**
|
|
1218
|
+
! * \brief Remove the "parallel" attribute from multiple triangles.
|
|
1219
|
+
! *
|
|
1220
|
+
! * \param mesh pointer to the mesh structure.
|
|
1221
|
+
! * \param parIdx array of the indices of triangles
|
|
1222
|
+
! * \param npar number of triangles
|
|
1223
|
+
! * \return 1.
|
|
1224
|
+
! *
|
|
1225
|
+
! * Remove parallel attributes from triangles (i.e.
|
|
1226
|
+
! * triangles aren't preserved anymore).
|
|
1227
|
+
! *
|
|
1228
|
+
! * \remark Fortran interface:
|
|
1229
|
+
! */
|
|
1230
|
+
INTERFACE
|
|
1231
|
+
SUBROUTINE MMG3D_UNSET_PARALLELTRIANGLES(mesh,parIdx,npar,retval)
|
|
1232
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1233
|
+
INTEGER(MMG5F_INT), DIMENSION(*),INTENT(IN) :: parIdx
|
|
1234
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: npar
|
|
1235
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1236
|
+
END SUBROUTINE
|
|
1237
|
+
END INTERFACE
|
|
1238
|
+
! *
|
|
1239
|
+
! */
|
|
1240
|
+
|
|
1241
|
+
! LIBMMG3D_EXPORT int MMG3D_Unset_parallelTriangles(MMG5_pMesh mesh, MMG5_int *parIdx, MMG5_int npar);
|
|
1242
|
+
|
|
1243
|
+
! /**
|
|
1244
|
+
! * \brief Assign the "ridge" attribute to a single edge.
|
|
1245
|
+
! *
|
|
1246
|
+
! * \param mesh pointer to the mesh structure.
|
|
1247
|
+
! * \param k edge index.
|
|
1248
|
+
! * \return 1.
|
|
1249
|
+
! *
|
|
1250
|
+
! * Set the "ridge" attribute at edge \a k. This affects how the remesher treats
|
|
1251
|
+
! * the edge and the adjacent triangles or tetrahedra.
|
|
1252
|
+
! *
|
|
1253
|
+
! * \remark Fortran interface:
|
|
1254
|
+
! */
|
|
1255
|
+
INTERFACE
|
|
1256
|
+
SUBROUTINE MMG3D_SET_RIDGE(mesh,k,retval)
|
|
1257
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1258
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
1259
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1260
|
+
END SUBROUTINE
|
|
1261
|
+
END INTERFACE
|
|
1262
|
+
! *
|
|
1263
|
+
! */
|
|
1264
|
+
|
|
1265
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_ridge(MMG5_pMesh mesh, MMG5_int k);
|
|
1266
|
+
|
|
1267
|
+
! /**
|
|
1268
|
+
! * \brief Remove the "ridge" attribute from a single edge.
|
|
1269
|
+
! *
|
|
1270
|
+
! * \param mesh pointer to the mesh structure.
|
|
1271
|
+
! * \param k edge index.
|
|
1272
|
+
! * \return 1.
|
|
1273
|
+
! *
|
|
1274
|
+
! * Remove ridge attribute at edge \a k.
|
|
1275
|
+
! *
|
|
1276
|
+
! * \remark Fortran interface:
|
|
1277
|
+
! */
|
|
1278
|
+
INTERFACE
|
|
1279
|
+
SUBROUTINE MMG3D_UNSET_RIDGE(mesh,k,retval)
|
|
1280
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1281
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
1282
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1283
|
+
END SUBROUTINE
|
|
1284
|
+
END INTERFACE
|
|
1285
|
+
! *
|
|
1286
|
+
! */
|
|
1287
|
+
|
|
1288
|
+
! LIBMMG3D_EXPORT int MMG3D_Unset_ridge(MMG5_pMesh mesh, MMG5_int k);
|
|
1289
|
+
|
|
1290
|
+
! /**
|
|
1291
|
+
! * \brief Assign the "required" attribute to a single edge.
|
|
1292
|
+
! *
|
|
1293
|
+
! * \param mesh pointer to the mesh structure.
|
|
1294
|
+
! * \param k edge index.
|
|
1295
|
+
! * \return 1.
|
|
1296
|
+
! *
|
|
1297
|
+
! * Set edge \a k as required.
|
|
1298
|
+
! *
|
|
1299
|
+
! * \remark Fortran interface:
|
|
1300
|
+
! */
|
|
1301
|
+
INTERFACE
|
|
1302
|
+
SUBROUTINE MMG3D_SET_REQUIREDEDGE(mesh,k,retval)
|
|
1303
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1304
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
1305
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1306
|
+
END SUBROUTINE
|
|
1307
|
+
END INTERFACE
|
|
1308
|
+
! *
|
|
1309
|
+
! */
|
|
1310
|
+
|
|
1311
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_requiredEdge(MMG5_pMesh mesh, MMG5_int k);
|
|
1312
|
+
|
|
1313
|
+
! /**
|
|
1314
|
+
! * \brief Remove the "required" attribute from a single edge.
|
|
1315
|
+
! *
|
|
1316
|
+
! * \param mesh pointer to the mesh structure.
|
|
1317
|
+
! * \param k edge index.
|
|
1318
|
+
! * \return 1.
|
|
1319
|
+
! *
|
|
1320
|
+
! * Remove required attribute from edge \a k.
|
|
1321
|
+
! *
|
|
1322
|
+
! * \remark Fortran interface:
|
|
1323
|
+
! */
|
|
1324
|
+
INTERFACE
|
|
1325
|
+
SUBROUTINE MMG3D_UNSET_REQUIREDEDGE(mesh,k,retval)
|
|
1326
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1327
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
1328
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1329
|
+
END SUBROUTINE
|
|
1330
|
+
END INTERFACE
|
|
1331
|
+
! *
|
|
1332
|
+
! */
|
|
1333
|
+
|
|
1334
|
+
! LIBMMG3D_EXPORT int MMG3D_Unset_requiredEdge(MMG5_pMesh mesh, MMG5_int k);
|
|
1335
|
+
|
|
1336
|
+
! /**
|
|
1337
|
+
! * \brief Set the normal orientation at a single vertex.
|
|
1338
|
+
! *
|
|
1339
|
+
! * \param mesh pointer to the mesh structure.
|
|
1340
|
+
! * \param k vertex index
|
|
1341
|
+
! * \param n0 x componant of the normal at vertex \a k.
|
|
1342
|
+
! * \param n1 y componant of the normal at vertex \a k.
|
|
1343
|
+
! * \param n2 z componant of the normal at vertex \a k.
|
|
1344
|
+
! *
|
|
1345
|
+
! * \return 1 if success.
|
|
1346
|
+
! *
|
|
1347
|
+
! * Set normal (n0,n1,n2) at vertex \a k.
|
|
1348
|
+
! *
|
|
1349
|
+
! * \remark Fortran interface:
|
|
1350
|
+
! */
|
|
1351
|
+
INTERFACE
|
|
1352
|
+
SUBROUTINE MMG3D_SET_NORMALATVERTEX(mesh,k,n0,n1,n2,retval)
|
|
1353
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1354
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
1355
|
+
REAL(KIND=8), INTENT(IN) :: n0,n1,n2
|
|
1356
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1357
|
+
END SUBROUTINE
|
|
1358
|
+
END INTERFACE
|
|
1359
|
+
! *
|
|
1360
|
+
! */
|
|
1361
|
+
|
|
1362
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_normalAtVertex(MMG5_pMesh mesh, MMG5_int k, double n0, double n1,
|
|
1363
|
+
! double n2) ;
|
|
1364
|
+
|
|
1365
|
+
! /**
|
|
1366
|
+
! * \brief Set a single element of a scalar solution structure.
|
|
1367
|
+
! *
|
|
1368
|
+
! * \param met pointer to the sol structure.
|
|
1369
|
+
! * \param s solution scalar value.
|
|
1370
|
+
! * \param pos position of the solution in the mesh.
|
|
1371
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1372
|
+
! *
|
|
1373
|
+
! * Set scalar value \a s at position \a pos in solution structure
|
|
1374
|
+
! * (pos from 1 to nb_vertices included).
|
|
1375
|
+
! *
|
|
1376
|
+
! * \remark Fortran interface:
|
|
1377
|
+
! */
|
|
1378
|
+
INTERFACE
|
|
1379
|
+
SUBROUTINE MMG3D_SET_SCALARSOL(met,s,pos,retval)
|
|
1380
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: met
|
|
1381
|
+
REAL(KIND=8), INTENT(IN) :: s
|
|
1382
|
+
INTEGER(MMG5F_INT), INTENT(IN):: pos
|
|
1383
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1384
|
+
END SUBROUTINE
|
|
1385
|
+
END INTERFACE
|
|
1386
|
+
! *
|
|
1387
|
+
! */
|
|
1388
|
+
|
|
1389
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_scalarSol(MMG5_pSol met, double s,MMG5_int pos);
|
|
1390
|
+
|
|
1391
|
+
! /**
|
|
1392
|
+
! * \brief Set the values of all elements of a scalar solution structure.
|
|
1393
|
+
! *
|
|
1394
|
+
! * \param met pointer to the sol structure.
|
|
1395
|
+
! * \param s array of the scalar solutions values.
|
|
1396
|
+
! * s[i-1] is the solution at vertex i.
|
|
1397
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1398
|
+
! *
|
|
1399
|
+
! * Set scalar solutions at mesh vertices.
|
|
1400
|
+
! *
|
|
1401
|
+
! * \remark Fortran interface:
|
|
1402
|
+
! */
|
|
1403
|
+
INTERFACE
|
|
1404
|
+
SUBROUTINE MMG3D_SET_SCALARSOLS(met,s,retval)
|
|
1405
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: met
|
|
1406
|
+
REAL(KIND=8),DIMENSION(*), INTENT(IN) :: s
|
|
1407
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1408
|
+
END SUBROUTINE
|
|
1409
|
+
END INTERFACE
|
|
1410
|
+
! *
|
|
1411
|
+
! */
|
|
1412
|
+
|
|
1413
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_scalarSols(MMG5_pSol met, double *s);
|
|
1414
|
+
|
|
1415
|
+
! /**
|
|
1416
|
+
! * \brief Set a single element of a vector solution structure.
|
|
1417
|
+
! *
|
|
1418
|
+
! * \param met pointer to the sol structure.
|
|
1419
|
+
! * \param vx x value of the vectorial solution.
|
|
1420
|
+
! * \param vy y value of the vectorial solution.
|
|
1421
|
+
! * \param vz z value of the vectorial solution.
|
|
1422
|
+
! * \param pos position of the solution in the mesh (begin to 1).
|
|
1423
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1424
|
+
! *
|
|
1425
|
+
! * Set vectorial value \f$(v_x,v_y,v_z)\f$ at position \a pos in solution
|
|
1426
|
+
! * structure. (pos from 1 to nb_vertices included).
|
|
1427
|
+
! *
|
|
1428
|
+
! * \remark Fortran interface:
|
|
1429
|
+
! */
|
|
1430
|
+
INTERFACE
|
|
1431
|
+
SUBROUTINE MMG3D_SET_VECTORSOL(met,vx,vy,vz,pos,retval)
|
|
1432
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: met
|
|
1433
|
+
REAL(KIND=8), INTENT(IN) :: vx,vy,vz
|
|
1434
|
+
INTEGER(MMG5F_INT), INTENT(IN):: pos
|
|
1435
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1436
|
+
END SUBROUTINE
|
|
1437
|
+
END INTERFACE
|
|
1438
|
+
! *
|
|
1439
|
+
! */
|
|
1440
|
+
|
|
1441
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_vectorSol(MMG5_pSol met, double vx,double vy, double vz,
|
|
1442
|
+
! MMG5_int pos);
|
|
1443
|
+
|
|
1444
|
+
! /**
|
|
1445
|
+
! * \brief Set all elements of a vector solution structure.
|
|
1446
|
+
! *
|
|
1447
|
+
! * \param met pointer to the sol structure.
|
|
1448
|
+
! * \param sols array of the vectorial solutions
|
|
1449
|
+
! * sols[3*(i-1)]\@3 is the solution at vertex i
|
|
1450
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1451
|
+
! *
|
|
1452
|
+
! * Set vectorial solutions at mesh vertices
|
|
1453
|
+
! *
|
|
1454
|
+
! * \remark Fortran interface:
|
|
1455
|
+
! */
|
|
1456
|
+
INTERFACE
|
|
1457
|
+
SUBROUTINE MMG3D_SET_VECTORSOLS(met,sols,retval)
|
|
1458
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: met
|
|
1459
|
+
REAL(KIND=8),DIMENSION(*), INTENT(IN) :: sols
|
|
1460
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1461
|
+
END SUBROUTINE
|
|
1462
|
+
END INTERFACE
|
|
1463
|
+
! *
|
|
1464
|
+
! */
|
|
1465
|
+
|
|
1466
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_vectorSols(MMG5_pSol met, double *sols);
|
|
1467
|
+
|
|
1468
|
+
! /**
|
|
1469
|
+
! * \brief Set a single element of a tensor solution structure.
|
|
1470
|
+
! *
|
|
1471
|
+
! * \param met pointer to the sol structure.
|
|
1472
|
+
! * \param m11 value of the tensorial solution at position (1,1) in the tensor
|
|
1473
|
+
! * \param m12 value of the tensorial solution at position (1,2) in the tensor
|
|
1474
|
+
! * \param m13 value of the tensorial solution at position (1,3) in the tensor
|
|
1475
|
+
! * \param m22 value of the tensorial solution at position (2,2) in the tensor
|
|
1476
|
+
! * \param m23 value of the tensorial solution at position (2,3) in the tensor
|
|
1477
|
+
! * \param m33 value of the tensorial solution at position (3,3) in the tensor
|
|
1478
|
+
! * \param pos position of the solution in the mesh (begin to 1).
|
|
1479
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1480
|
+
! *
|
|
1481
|
+
! * Set tensorial values at position \a pos in solution
|
|
1482
|
+
! * structure. (pos from 1 to nb_vertices included).
|
|
1483
|
+
! *
|
|
1484
|
+
! * \remark Fortran interface:
|
|
1485
|
+
! */
|
|
1486
|
+
INTERFACE
|
|
1487
|
+
SUBROUTINE MMG3D_SET_TENSORSOL(met,m11,m12,m13,m22,m23,m33,pos,retval)
|
|
1488
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: met
|
|
1489
|
+
REAL(KIND=8), INTENT(IN) :: m11,m12,m13,m22,m23,m33
|
|
1490
|
+
INTEGER(MMG5F_INT), INTENT(IN):: pos
|
|
1491
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1492
|
+
END SUBROUTINE
|
|
1493
|
+
END INTERFACE
|
|
1494
|
+
! *
|
|
1495
|
+
! */
|
|
1496
|
+
|
|
1497
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_tensorSol(MMG5_pSol met, double m11,double m12, double m13,
|
|
1498
|
+
! double m22,double m23, double m33, MMG5_int pos);
|
|
1499
|
+
|
|
1500
|
+
! /**
|
|
1501
|
+
! * \brief Set all elements of a tensor solution structure.
|
|
1502
|
+
! *
|
|
1503
|
+
! * \param met pointer to the sol structure.
|
|
1504
|
+
! * \param sols array of the tensorial solutions.
|
|
1505
|
+
! * sols[6*(i-1)]\@6 is the solution at vertex i
|
|
1506
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1507
|
+
! *
|
|
1508
|
+
! * Set tensorial values by array.
|
|
1509
|
+
! *
|
|
1510
|
+
! * \remark Fortran interface:
|
|
1511
|
+
! */
|
|
1512
|
+
INTERFACE
|
|
1513
|
+
SUBROUTINE MMG3D_SET_TENSORSOLS(met,sols,retval)
|
|
1514
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: met
|
|
1515
|
+
REAL(KIND=8),DIMENSION(*), INTENT(IN) :: sols
|
|
1516
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1517
|
+
END SUBROUTINE
|
|
1518
|
+
END INTERFACE
|
|
1519
|
+
! *
|
|
1520
|
+
! */
|
|
1521
|
+
|
|
1522
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_tensorSols(MMG5_pSol met, double *sols);
|
|
1523
|
+
|
|
1524
|
+
! /**
|
|
1525
|
+
! * \brief Set a single element of one out of multiple solution fields that are defined on vertices.
|
|
1526
|
+
! *
|
|
1527
|
+
! * \param sol pointer to the array of solutions
|
|
1528
|
+
! * \param i position of the solution field that we want to set.
|
|
1529
|
+
! * \param s solution(s) at mesh vertex \a pos.
|
|
1530
|
+
! * \param pos index of the vertex on which we set the solution.
|
|
1531
|
+
! *
|
|
1532
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1533
|
+
! *
|
|
1534
|
+
! * Set values of the solution at the ith field of the solution array and at
|
|
1535
|
+
! * position \a pos (\a pos from 1 to \a nb_vertices included and \a i from 1 to \a
|
|
1536
|
+
! * nb_sols).
|
|
1537
|
+
! *
|
|
1538
|
+
! * \remark Fortran interface:
|
|
1539
|
+
! */
|
|
1540
|
+
INTERFACE
|
|
1541
|
+
SUBROUTINE MMG3D_SET_ITHSOL_INSOLSATVERTICES(sol,i,s,pos,retval)
|
|
1542
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: sol
|
|
1543
|
+
INTEGER, INTENT(IN) :: i
|
|
1544
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: pos
|
|
1545
|
+
REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s
|
|
1546
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1547
|
+
END SUBROUTINE
|
|
1548
|
+
END INTERFACE
|
|
1549
|
+
! *
|
|
1550
|
+
! */
|
|
1551
|
+
|
|
1552
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_ithSol_inSolsAtVertices(MMG5_pSol sol,int i, double* s,MMG5_int pos);
|
|
1553
|
+
|
|
1554
|
+
! /**
|
|
1555
|
+
! * \brief Set all elements of one out of multiple solution fields that are defined on vertices.
|
|
1556
|
+
! *
|
|
1557
|
+
! * \param sol pointer to the array of solutions
|
|
1558
|
+
! * \param i position of the solution field that we want to set.
|
|
1559
|
+
! * \param s array of the solutions at mesh vertices. The solution at vertex \a k
|
|
1560
|
+
! * is given by s[k-1] for a scalar sol, s[3*(k-1)]\@3 for a vectorial solution
|
|
1561
|
+
! * and s[6*(k-1)]\@6 for a tensor solution.
|
|
1562
|
+
! *
|
|
1563
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1564
|
+
! *
|
|
1565
|
+
! * Set values of the ith field of the solution array by array (\a i from 1 to \a
|
|
1566
|
+
! * nb_sols).
|
|
1567
|
+
! *
|
|
1568
|
+
! * \remark Fortran interface:
|
|
1569
|
+
! */
|
|
1570
|
+
INTERFACE
|
|
1571
|
+
SUBROUTINE MMG3D_SET_ITHSOLS_INSOLSATVERTICES(sol,i,s,retval)
|
|
1572
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: sol
|
|
1573
|
+
INTEGER, INTENT(IN) :: i
|
|
1574
|
+
REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s
|
|
1575
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1576
|
+
END SUBROUTINE
|
|
1577
|
+
END INTERFACE
|
|
1578
|
+
! *
|
|
1579
|
+
! */
|
|
1580
|
+
|
|
1581
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_ithSols_inSolsAtVertices(MMG5_pSol sol,int i, double* s);
|
|
1582
|
+
|
|
1583
|
+
! /**
|
|
1584
|
+
! * \brief Finish providing mesh data without using the API functions.
|
|
1585
|
+
! *
|
|
1586
|
+
! * \param mesh pointer to the mesh structure.
|
|
1587
|
+
! *
|
|
1588
|
+
! * To mark as ended a mesh given without using the API functions (for example,
|
|
1589
|
+
! * mesh given by mesh->point[i] = 0 ...). This function performs verifications,
|
|
1590
|
+
! * e.g. to make sure that all tetrahedra are consistently oriented.
|
|
1591
|
+
! *
|
|
1592
|
+
! * \remark Fortran interface:
|
|
1593
|
+
! */
|
|
1594
|
+
INTERFACE
|
|
1595
|
+
SUBROUTINE MMG3D_SET_HANDGIVENMESH(mesh)
|
|
1596
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1597
|
+
END SUBROUTINE
|
|
1598
|
+
END INTERFACE
|
|
1599
|
+
! *
|
|
1600
|
+
! */
|
|
1601
|
+
|
|
1602
|
+
! LIBMMG3D_EXPORT void MMG3D_Set_handGivenMesh(MMG5_pMesh mesh);
|
|
1603
|
+
|
|
1604
|
+
! /* check init */
|
|
1605
|
+
! /**
|
|
1606
|
+
! * \brief Check if the number of given entities match with mesh and sol size
|
|
1607
|
+
! *
|
|
1608
|
+
! * \param mesh pointer to the mesh structure.
|
|
1609
|
+
! * \param met pointer to the sol structure.
|
|
1610
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1611
|
+
! *
|
|
1612
|
+
! * Check if the number of given entities match with mesh and sol size
|
|
1613
|
+
! * (not mandatory) and check mesh datas.
|
|
1614
|
+
! *
|
|
1615
|
+
! * \remark Fortran interface:
|
|
1616
|
+
! */
|
|
1617
|
+
INTERFACE
|
|
1618
|
+
SUBROUTINE MMG3D_CHK_MESHDATA(mesh,met,retval)
|
|
1619
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,met
|
|
1620
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1621
|
+
END SUBROUTINE
|
|
1622
|
+
END INTERFACE
|
|
1623
|
+
! *
|
|
1624
|
+
! */
|
|
1625
|
+
|
|
1626
|
+
! LIBMMG3D_EXPORT int MMG3D_Chk_meshData(MMG5_pMesh mesh, MMG5_pSol met);
|
|
1627
|
+
|
|
1628
|
+
! /* functions to set parameters
|
|
1629
|
+
! *
|
|
1630
|
+
! * NOTE iparam and dparam are int rather than enum MMG3D_Param because
|
|
1631
|
+
! * genheader cannot handle enums in function arguments; i.e. the Fortran
|
|
1632
|
+
! * API will break.
|
|
1633
|
+
! */
|
|
1634
|
+
|
|
1635
|
+
|
|
1636
|
+
! /**
|
|
1637
|
+
! * \brief set an integer parameter of the remesher
|
|
1638
|
+
! *
|
|
1639
|
+
! * \param mesh pointer to the mesh structure.
|
|
1640
|
+
! * \param sol pointer to the sol structure (unused).
|
|
1641
|
+
! * \param iparam integer parameter to set (see \ref MMG3D_Param for a
|
|
1642
|
+
! * list of parameters that can be set).
|
|
1643
|
+
! * \param val value for the parameter.
|
|
1644
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1645
|
+
! *
|
|
1646
|
+
! * This function sets the integer parameter \a iparam to value \a val.
|
|
1647
|
+
! *
|
|
1648
|
+
! * \remark Fortran interface:
|
|
1649
|
+
! */
|
|
1650
|
+
INTERFACE
|
|
1651
|
+
SUBROUTINE MMG3D_SET_IPARAMETER(mesh,sol,iparam,val,retval)
|
|
1652
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1653
|
+
MMG5_DATA_PTR_T :: sol
|
|
1654
|
+
INTEGER, INTENT(IN) :: iparam
|
|
1655
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: val
|
|
1656
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1657
|
+
END SUBROUTINE
|
|
1658
|
+
END INTERFACE
|
|
1659
|
+
! *
|
|
1660
|
+
! */
|
|
1661
|
+
|
|
1662
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_iparameter(MMG5_pMesh mesh,MMG5_pSol sol, int iparam,
|
|
1663
|
+
! MMG5_int val);
|
|
1664
|
+
|
|
1665
|
+
! /**
|
|
1666
|
+
! * \brief set a real-valued parameter of the remesher
|
|
1667
|
+
! *
|
|
1668
|
+
! * \param mesh pointer to the mesh structure.
|
|
1669
|
+
! * \param sol pointer to the sol structure (unused).
|
|
1670
|
+
! * \param dparam double parameter to set (see \ref MMG3D_Param for a
|
|
1671
|
+
! * list of parameters that can be set).
|
|
1672
|
+
! * \param val value of the parameter.
|
|
1673
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1674
|
+
! *
|
|
1675
|
+
! * This function sets the double parameter \a dparam to value \a val.
|
|
1676
|
+
! *
|
|
1677
|
+
! * \remark Fortran interface:
|
|
1678
|
+
! */
|
|
1679
|
+
INTERFACE
|
|
1680
|
+
SUBROUTINE MMG3D_SET_DPARAMETER(mesh,sol,dparam,val,retval)
|
|
1681
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1682
|
+
MMG5_DATA_PTR_T :: sol
|
|
1683
|
+
INTEGER, INTENT(IN) :: dparam
|
|
1684
|
+
REAL(KIND=8), INTENT(IN) :: val
|
|
1685
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1686
|
+
END SUBROUTINE
|
|
1687
|
+
END INTERFACE
|
|
1688
|
+
! *
|
|
1689
|
+
! */
|
|
1690
|
+
|
|
1691
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_dparameter(MMG5_pMesh mesh,MMG5_pSol sol, int dparam,
|
|
1692
|
+
! double val);
|
|
1693
|
+
! /**
|
|
1694
|
+
! * \brief set a local parameter
|
|
1695
|
+
! *
|
|
1696
|
+
! * \param mesh pointer to the mesh structure
|
|
1697
|
+
! * \param sol pointer to the sol structure
|
|
1698
|
+
! * \param typ type of entity (triangle, edge,...)
|
|
1699
|
+
! * \param ref reference of the entity
|
|
1700
|
+
! * \param hmin minimal edge size
|
|
1701
|
+
! * \param hmax maximal edge size
|
|
1702
|
+
! * \param hausd Hausdorff distance
|
|
1703
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1704
|
+
! *
|
|
1705
|
+
! * Set local parameters: set the Hausdorff distance, minimum edge length, and
|
|
1706
|
+
! * maximum edge length for all entities of type \a typ and reference \a ref.
|
|
1707
|
+
! *
|
|
1708
|
+
! * \remark Fortran interface:
|
|
1709
|
+
! */
|
|
1710
|
+
INTERFACE
|
|
1711
|
+
SUBROUTINE MMG3D_SET_LOCALPARAMETER(mesh,sol,typ,ref,&
|
|
1712
|
+
hmin,hmax,hausd,retval)
|
|
1713
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol
|
|
1714
|
+
INTEGER, INTENT(IN) :: typ
|
|
1715
|
+
INTEGER(MMG5F_INT), INTENT(IN):: ref
|
|
1716
|
+
REAL(KIND=8), INTENT(IN) :: hmin,hmax,hausd
|
|
1717
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1718
|
+
END SUBROUTINE
|
|
1719
|
+
END INTERFACE
|
|
1720
|
+
! *
|
|
1721
|
+
! */
|
|
1722
|
+
|
|
1723
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_localParameter(MMG5_pMesh mesh, MMG5_pSol sol, int typ,
|
|
1724
|
+
! MMG5_int ref,double hmin,double hmax,double hausd);
|
|
1725
|
+
|
|
1726
|
+
! /**
|
|
1727
|
+
! * \brief Set the reference mapping for the elements of reference
|
|
1728
|
+
! * \a ref in level-set discretization mode.
|
|
1729
|
+
! *
|
|
1730
|
+
! * \param mesh pointer to the mesh structure
|
|
1731
|
+
! * \param sol pointer to the sol structure
|
|
1732
|
+
! * \param ref input tetrahedron reference
|
|
1733
|
+
! * \param split MMG5_MMAT_NoSplit if the entity must not be splitted, MMG5_MMAT_Split otherwise
|
|
1734
|
+
! * \param rmin reference for the negative side after LS discretization
|
|
1735
|
+
! * \param rplus reference for the positive side after LS discretization
|
|
1736
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1737
|
+
! *
|
|
1738
|
+
! * \remark Fortran interface:
|
|
1739
|
+
! */
|
|
1740
|
+
INTERFACE
|
|
1741
|
+
SUBROUTINE MMG3D_SET_MULTIMAT(mesh,sol,ref,split,rmin,rplus,retval)
|
|
1742
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol
|
|
1743
|
+
INTEGER, INTENT(IN) :: split
|
|
1744
|
+
INTEGER(MMG5F_INT), INTENT(IN):: ref,rmin,rplus
|
|
1745
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1746
|
+
END SUBROUTINE
|
|
1747
|
+
END INTERFACE
|
|
1748
|
+
! *
|
|
1749
|
+
! * With this function you can determine which references will be given to the
|
|
1750
|
+
! * tetrahedra on both sides of the level set, after discretization. Negative and
|
|
1751
|
+
! * positive here refer to volumes where the function is smaller or larger,
|
|
1752
|
+
! * respectively, than the isovalue of the level set.
|
|
1753
|
+
! */
|
|
1754
|
+
|
|
1755
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_multiMat(MMG5_pMesh mesh, MMG5_pSol sol,MMG5_int ref,int split,
|
|
1756
|
+
! MMG5_int rmin, MMG5_int rplus);
|
|
1757
|
+
|
|
1758
|
+
! /**
|
|
1759
|
+
! * \brief Set a new level-set base reference.
|
|
1760
|
+
! *
|
|
1761
|
+
! * \param mesh pointer to the mesh structure.
|
|
1762
|
+
! * \param sol pointer to the sol structure.
|
|
1763
|
+
! * \param br new level-set base reference.
|
|
1764
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1765
|
+
! *
|
|
1766
|
+
! * Set a new level-set base reference of ref \a br in LS discretization
|
|
1767
|
+
! * mode. Base references are boundary conditions to which implicit domains can
|
|
1768
|
+
! * be attached. All implicit volumes that are not attached to listed base
|
|
1769
|
+
! * references are deleted as spurious volumes by the \a rmc option.
|
|
1770
|
+
! *
|
|
1771
|
+
! * \remark Fortran interface:
|
|
1772
|
+
! */
|
|
1773
|
+
INTERFACE
|
|
1774
|
+
SUBROUTINE MMG3D_SET_LSBASEREFERENCE(mesh,sol,br,retval)
|
|
1775
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol
|
|
1776
|
+
INTEGER(MMG5F_INT) :: br
|
|
1777
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1778
|
+
END SUBROUTINE
|
|
1779
|
+
END INTERFACE
|
|
1780
|
+
! *
|
|
1781
|
+
! */
|
|
1782
|
+
|
|
1783
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_lsBaseReference(MMG5_pMesh mesh, MMG5_pSol sol,MMG5_int br);
|
|
1784
|
+
|
|
1785
|
+
|
|
1786
|
+
! /** recover data */
|
|
1787
|
+
! /**
|
|
1788
|
+
! * \brief Get the number of vertices, tetrahedra, prisms, triangles,
|
|
1789
|
+
! * quadrilaterals and edges of the mesh.
|
|
1790
|
+
! *
|
|
1791
|
+
! * \param mesh pointer to the mesh structure.
|
|
1792
|
+
! * \param np pointer to the number of vertices.
|
|
1793
|
+
! * \param ne pointer to the number of tetrahedra.
|
|
1794
|
+
! * \param nprism pointer to the number of prisms.
|
|
1795
|
+
! * \param nt pointer to the number of triangles.
|
|
1796
|
+
! * \param nquad pointer to the number of quads.
|
|
1797
|
+
! * \param na pointer to the number of edges.
|
|
1798
|
+
! * \return 1.
|
|
1799
|
+
! *
|
|
1800
|
+
! * \remark Fortran interface:
|
|
1801
|
+
! */
|
|
1802
|
+
INTERFACE
|
|
1803
|
+
SUBROUTINE MMG3D_GET_MESHSIZE(mesh,np,ne,nprism,nt,nquad,na,retval)
|
|
1804
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1805
|
+
INTEGER(MMG5F_INT) :: np,ne,nprism,nt,nquad,na
|
|
1806
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1807
|
+
END SUBROUTINE
|
|
1808
|
+
END INTERFACE
|
|
1809
|
+
! *
|
|
1810
|
+
! */
|
|
1811
|
+
|
|
1812
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_meshSize(MMG5_pMesh mesh, MMG5_int* np, MMG5_int* ne,MMG5_int *nprism, MMG5_int* nt,
|
|
1813
|
+
! MMG5_int* nquad, MMG5_int* na);
|
|
1814
|
+
|
|
1815
|
+
! /**
|
|
1816
|
+
! * \brief Get the number of elements, dimension, and type of a solution structure.
|
|
1817
|
+
! *
|
|
1818
|
+
! * \param mesh pointer to the mesh structure.
|
|
1819
|
+
! * \param sol pointer to the sol structure.
|
|
1820
|
+
! * \param typEntity pointer to the type of entities to which solutions
|
|
1821
|
+
! * are applied (see \ref MMG5_entities for possible values)
|
|
1822
|
+
! * \param np pointer to the number of solutions.
|
|
1823
|
+
! * \param typSol pointer to the type of the solutions
|
|
1824
|
+
! * (scalar, vectorial, ..., see \ref MMG5_type for possible values)
|
|
1825
|
+
! * \return 1.
|
|
1826
|
+
! *
|
|
1827
|
+
! * \remark Fortran interface:
|
|
1828
|
+
! */
|
|
1829
|
+
INTERFACE
|
|
1830
|
+
SUBROUTINE MMG3D_GET_SOLSIZE(mesh,sol,typEntity,np,typSol,retval)
|
|
1831
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol
|
|
1832
|
+
INTEGER :: typEntity,typSol
|
|
1833
|
+
INTEGER(MMG5F_INT) :: np
|
|
1834
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1835
|
+
END SUBROUTINE
|
|
1836
|
+
END INTERFACE
|
|
1837
|
+
! *
|
|
1838
|
+
! */
|
|
1839
|
+
|
|
1840
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int* typEntity,
|
|
1841
|
+
! MMG5_int* np,int* typSol);
|
|
1842
|
+
|
|
1843
|
+
! /**
|
|
1844
|
+
! * \brief Get the number of elements, type, and dimensions of several solutions defined on vertices.
|
|
1845
|
+
! *
|
|
1846
|
+
! * \param mesh pointer to the mesh structure.
|
|
1847
|
+
! * \param sol pointer to an array of sol structure.
|
|
1848
|
+
! * \param nsols pointer to the number of solutions per entity.
|
|
1849
|
+
! * \param nentities pointer to the number of solutions.
|
|
1850
|
+
! * \param typSol array of size MMG5_NSOLS_MAX to store type of each solution
|
|
1851
|
+
! * (scalar, vectorial, ..., see \ref MMG5_type for possible values).
|
|
1852
|
+
! *
|
|
1853
|
+
! * \return 1.
|
|
1854
|
+
! *
|
|
1855
|
+
! * \remark Fortran interface:
|
|
1856
|
+
! */
|
|
1857
|
+
INTERFACE
|
|
1858
|
+
SUBROUTINE MMG3D_GET_SOLSATVERTICESSIZE(mesh,sol,nsols,nentities,typSol,retval)
|
|
1859
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol
|
|
1860
|
+
INTEGER :: nsols
|
|
1861
|
+
INTEGER(MMG5F_INT) :: nentities
|
|
1862
|
+
INTEGER :: typSol(*)
|
|
1863
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1864
|
+
END SUBROUTINE
|
|
1865
|
+
END INTERFACE
|
|
1866
|
+
! *
|
|
1867
|
+
! */
|
|
1868
|
+
|
|
1869
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol* sol,int *nsols,
|
|
1870
|
+
! MMG5_int* nentities,int* typSol);
|
|
1871
|
+
|
|
1872
|
+
! /**
|
|
1873
|
+
! * \brief Get the coordinates \a c0, \a c1,\a c2 and reference \a ref of the
|
|
1874
|
+
! * next vertex of \a mesh.
|
|
1875
|
+
! *
|
|
1876
|
+
! * \param mesh pointer to the mesh structure.
|
|
1877
|
+
! * \param c0 pointer to the coordinate of the vertex along the first
|
|
1878
|
+
! * dimension.
|
|
1879
|
+
! * \param c1 pointer to the coordinate of the vertex along the second
|
|
1880
|
+
! * dimension.
|
|
1881
|
+
! * \param c2 pointer to the coordinate of the vertex along the third
|
|
1882
|
+
! * dimension.
|
|
1883
|
+
! * \param ref pointer to the vertex reference.
|
|
1884
|
+
! * \param isCorner pointer to the flag saying if vertex is corner.
|
|
1885
|
+
! * \param isRequired pointer to the flag saying if vertex is required.
|
|
1886
|
+
! * \return 1.
|
|
1887
|
+
! *
|
|
1888
|
+
! * This function retrieves the coordinates \a c0, \a c1,\a c2 and reference \a
|
|
1889
|
+
! * ref of the next vertex of a mesh. It is meant to be used in a loop over all
|
|
1890
|
+
! * vertices. When this function has been called as many times as there are
|
|
1891
|
+
! * vertices, the internal loop counter will be reset. To obtain data for a
|
|
1892
|
+
! * specific vertex, the \ref MMG3D_GetByIdx_vertex function can be used instead.
|
|
1893
|
+
! *
|
|
1894
|
+
! * \remark Fortran interface:
|
|
1895
|
+
! */
|
|
1896
|
+
INTERFACE
|
|
1897
|
+
SUBROUTINE MMG3D_GET_VERTEX(mesh,c0,c1,c2,ref,isCorner,isRequired, &
|
|
1898
|
+
retval)
|
|
1899
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1900
|
+
REAL(KIND=8), INTENT(OUT) :: c0,c1,c2
|
|
1901
|
+
INTEGER(MMG5F_INT) :: ref
|
|
1902
|
+
INTEGER :: isCorner,isRequired
|
|
1903
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1904
|
+
END SUBROUTINE
|
|
1905
|
+
END INTERFACE
|
|
1906
|
+
! *
|
|
1907
|
+
! */
|
|
1908
|
+
|
|
1909
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_vertex(MMG5_pMesh mesh, double* c0, double* c1, double* c2,
|
|
1910
|
+
! MMG5_int* ref,int* isCorner, int* isRequired);
|
|
1911
|
+
|
|
1912
|
+
! /**
|
|
1913
|
+
! * \brief Get the coordinates and reference of a specific vertex in the mesh.
|
|
1914
|
+
! *
|
|
1915
|
+
! * \param mesh pointer to the mesh structure.
|
|
1916
|
+
! * \param c0 pointer to the coordinate of the vertex along the first dimension.
|
|
1917
|
+
! * \param c1 pointer to the coordinate of the vertex along the second dimension.
|
|
1918
|
+
! * \param c2 pointer to the coordinate of the vertex along the third dimension.
|
|
1919
|
+
! * \param ref pointer to the vertex reference.
|
|
1920
|
+
! * \param isCorner pointer to the flag saying if vertex is corner.
|
|
1921
|
+
! * \param isRequired pointer to the flag saying if vertex is required.
|
|
1922
|
+
! * \param idx index of vertex to get.
|
|
1923
|
+
! * \return 1.
|
|
1924
|
+
! *
|
|
1925
|
+
! * Get coordinates \a c0, \a c1, \a c2 and reference \a ref of
|
|
1926
|
+
! * vertex \a idx of mesh.
|
|
1927
|
+
! *
|
|
1928
|
+
! * \remark Fortran interface:
|
|
1929
|
+
! */
|
|
1930
|
+
INTERFACE
|
|
1931
|
+
SUBROUTINE MMG3D_GETBYIDX_VERTEX(mesh,c0,c1,c2,ref,isCorner,isRequired,idx,retval)
|
|
1932
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1933
|
+
REAL(KIND=8), INTENT(OUT) :: c0,c1,c2
|
|
1934
|
+
INTEGER(MMG5F_INT) :: ref,idx
|
|
1935
|
+
INTEGER :: isCorner,isRequired
|
|
1936
|
+
INTEGER, INTENT(OUT) :: retval
|
|
1937
|
+
END SUBROUTINE
|
|
1938
|
+
END INTERFACE
|
|
1939
|
+
! *
|
|
1940
|
+
! */
|
|
1941
|
+
|
|
1942
|
+
! LIBMMG3D_EXPORT int MMG3D_GetByIdx_vertex(MMG5_pMesh mesh, double* c0, double* c1, double* c2, MMG5_int* ref,
|
|
1943
|
+
! int* isCorner, int* isRequired,MMG5_int idx);
|
|
1944
|
+
|
|
1945
|
+
! /**
|
|
1946
|
+
! * \brief Get the coordinates and references of all vertices in the mesh.
|
|
1947
|
+
! *
|
|
1948
|
+
! * \param mesh pointer to the mesh structure.
|
|
1949
|
+
! * \param vertices pointer to the array of coordinates.
|
|
1950
|
+
! * The coordinates of the \f$i^{th}\f$ vertex are stored in
|
|
1951
|
+
! * vertices[(i-1)*3]\@3.
|
|
1952
|
+
! * \param refs pointer to the array of the vertex references.
|
|
1953
|
+
! * The ref of the \f$i^th\f$ vertex is stored in refs[i-1].
|
|
1954
|
+
! * \param areCorners pointer to the array of the flags saying if
|
|
1955
|
+
! * vertices are corners.
|
|
1956
|
+
! * areCorners[i-1]=1 if the \f$i^{th}\f$ vertex is corner.
|
|
1957
|
+
! * \param areRequired pointer to the array of flags saying if vertices
|
|
1958
|
+
! * are required. areRequired[i-1]=1 if the \f$i^{th}\f$ vertex is required.
|
|
1959
|
+
! * \return 1.
|
|
1960
|
+
! *
|
|
1961
|
+
! * \remark Fortran interface: (commentated in order to allow to pass \%val(0)
|
|
1962
|
+
! * instead of the refs, areCorners or areRequired arrays)
|
|
1963
|
+
! *
|
|
1964
|
+
! */
|
|
1965
|
+
INTERFACE
|
|
1966
|
+
! SUBROUTINE MMG3D_GET_VERTICES(mesh,vertices,refs,areCorners,&
|
|
1967
|
+
! areRequired,retval)
|
|
1968
|
+
! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
1969
|
+
! REAL(KIND=8),DIMENSION(*), INTENT(OUT) :: vertices
|
|
1970
|
+
! INTEGER(MMG5F_INT), DIMENSION(*) :: refs
|
|
1971
|
+
! INTEGER, DIMENSION(*) :: areCorners,areRequired
|
|
1972
|
+
! INTEGER, INTENT(OUT) :: retval
|
|
1973
|
+
! END SUBROUTINE
|
|
1974
|
+
END INTERFACE
|
|
1975
|
+
! *
|
|
1976
|
+
! */
|
|
1977
|
+
|
|
1978
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_vertices(MMG5_pMesh mesh, double* vertices, MMG5_int* refs,
|
|
1979
|
+
! int* areCorners, int* areRequired);
|
|
1980
|
+
|
|
1981
|
+
! /**
|
|
1982
|
+
! * \brief Get the vertices and reference of the next tetrahedron in the mesh.
|
|
1983
|
+
! *
|
|
1984
|
+
! * \param mesh pointer to the mesh structure.
|
|
1985
|
+
! * \param v0 pointer to the first vertex of tetrahedron.
|
|
1986
|
+
! * \param v1 pointer to the second vertex of tetrahedron.
|
|
1987
|
+
! * \param v2 pointer to the third vertex of tetrahedron.
|
|
1988
|
+
! * \param v3 pointer to the fourth vertex of tetrahedron.
|
|
1989
|
+
! * \param ref pointer to the tetrahedron reference.
|
|
1990
|
+
! * \param isRequired pointer to the flag saying if tetrahedron is
|
|
1991
|
+
! * required.
|
|
1992
|
+
! * \return 0 if failed, 1 otherwise.
|
|
1993
|
+
! *
|
|
1994
|
+
! * This function retrieves the vertices \a v0, \a v1, \a v2, \a v3 and reference
|
|
1995
|
+
! * \a ref of the next tetrahedron of \a mesh. It is meant to be called in a loop
|
|
1996
|
+
! * over all tetrahedra. When it has been called as many times as there are
|
|
1997
|
+
! * tetrahedra, the internal loop counter will be reset.
|
|
1998
|
+
! *
|
|
1999
|
+
! * \remark Fortran interface:
|
|
2000
|
+
! */
|
|
2001
|
+
INTERFACE
|
|
2002
|
+
SUBROUTINE MMG3D_GET_TETRAHEDRON(mesh,v0,v1,v2,v3,ref,isRequired,&
|
|
2003
|
+
retval)
|
|
2004
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2005
|
+
INTEGER(MMG5F_INT), INTENT(OUT):: v0,v1,v2,v3
|
|
2006
|
+
INTEGER(MMG5F_INT) :: ref
|
|
2007
|
+
INTEGER :: isRequired
|
|
2008
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2009
|
+
END SUBROUTINE
|
|
2010
|
+
END INTERFACE
|
|
2011
|
+
! *
|
|
2012
|
+
! */
|
|
2013
|
+
|
|
2014
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_tetrahedron(MMG5_pMesh mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2,
|
|
2015
|
+
! MMG5_int* v3,MMG5_int* ref, int* isRequired);
|
|
2016
|
+
|
|
2017
|
+
! /**
|
|
2018
|
+
! * \brief Get the vertices and reference of all tetrahedra in the mesh.
|
|
2019
|
+
! *
|
|
2020
|
+
! * \param mesh pointer to the mesh structure.
|
|
2021
|
+
! * \param tetra pointer to the array where the vertices are to be stored.
|
|
2022
|
+
! * Vertices of the \f$i^{th}\f$ tetra are stored in tetra[(i-1)*4] to tetra[(i-1)*4+3]
|
|
2023
|
+
! * \param refs pointer to the array of the tetrahedron references.
|
|
2024
|
+
! * References of the \f$i^{th}\f$ tetra is stored in refs[i-1].
|
|
2025
|
+
! * \param areRequired pointer to the array of the flags saying if the
|
|
2026
|
+
! * tetrahedra are required. areRequired[i-1]=1 if the \f$i^{th}\f$ tetrahedron
|
|
2027
|
+
! * is required.
|
|
2028
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2029
|
+
! *
|
|
2030
|
+
! * \remark Fortran interface: (commentated in order to allow to pass \%val(0)
|
|
2031
|
+
! * instead of the refs, areCorners or areRequired arrays)
|
|
2032
|
+
! *
|
|
2033
|
+
! */
|
|
2034
|
+
INTERFACE
|
|
2035
|
+
! SUBROUTINE MMG3D_GET_TETRAHEDRA(mesh,tetra,refs,areRequired,&
|
|
2036
|
+
! retval)
|
|
2037
|
+
! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2038
|
+
! INTEGER(MMG5F_INT), DIMENSION(*),INTENT(OUT) :: tetra
|
|
2039
|
+
! INTEGER(MMG5F_INT), DIMENSION(*) :: refs
|
|
2040
|
+
! INTEGER, DIMENSION(*) :: areRequired
|
|
2041
|
+
! INTEGER, INTENT(OUT) :: retval
|
|
2042
|
+
! END SUBROUTINE
|
|
2043
|
+
END INTERFACE
|
|
2044
|
+
! *
|
|
2045
|
+
! */
|
|
2046
|
+
|
|
2047
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_tetrahedra(MMG5_pMesh mesh, MMG5_int* tetra,MMG5_int* refs,
|
|
2048
|
+
! int* areRequired);
|
|
2049
|
+
|
|
2050
|
+
! /**
|
|
2051
|
+
! * \brief Get the vertices and reference of the next prism in the mesh.
|
|
2052
|
+
! *
|
|
2053
|
+
! * \param mesh pointer to the mesh structure.
|
|
2054
|
+
! * \param v0 pointer to the first vertex of prism.
|
|
2055
|
+
! * \param v1 pointer to the second vertex of prism.
|
|
2056
|
+
! * \param v2 pointer to the third vertex of prism.
|
|
2057
|
+
! * \param v3 pointer to the fourth vertex of prism.
|
|
2058
|
+
! * \param v4 pointer to the fifth vertex of prism.
|
|
2059
|
+
! * \param v5 pointer to the sixth vertex of prism.
|
|
2060
|
+
! * \param ref pointer to the prism reference.
|
|
2061
|
+
! * \param isRequired pointer to the flag saying if prism is
|
|
2062
|
+
! * required.
|
|
2063
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2064
|
+
! *
|
|
2065
|
+
! * This function retrieves the vertices \a v0, \a v1, \a v2, \a v3, \a v4, \a v5
|
|
2066
|
+
! * and reference \a ref of the next prism of \a mesh. It is meant to be called
|
|
2067
|
+
! * in a loop over all prisms. When it has been called as many times as there are
|
|
2068
|
+
! * prisms, the internal loop counter will be reset.
|
|
2069
|
+
! *
|
|
2070
|
+
! * \remark Fortran interface:
|
|
2071
|
+
! */
|
|
2072
|
+
INTERFACE
|
|
2073
|
+
SUBROUTINE MMG3D_GET_PRISM(mesh,v0,v1,v2,v3,v4,v5,ref,isRequired,&
|
|
2074
|
+
retval)
|
|
2075
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2076
|
+
INTEGER(MMG5F_INT), INTENT(OUT) :: v0,v1,v2,v3,v4,v5
|
|
2077
|
+
INTEGER(MMG5F_INT) :: ref
|
|
2078
|
+
INTEGER :: isRequired
|
|
2079
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2080
|
+
END SUBROUTINE
|
|
2081
|
+
END INTERFACE
|
|
2082
|
+
! *
|
|
2083
|
+
! */
|
|
2084
|
+
|
|
2085
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_prism(MMG5_pMesh mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2,
|
|
2086
|
+
! MMG5_int* v3,MMG5_int* v4,MMG5_int* v5,MMG5_int* ref, int* isRequired);
|
|
2087
|
+
|
|
2088
|
+
! /**
|
|
2089
|
+
! * \brief Get the vertices and references of all prisms in the mesh.
|
|
2090
|
+
! *
|
|
2091
|
+
! * \param mesh pointer to the mesh structure.
|
|
2092
|
+
! * \param prisms pointer to the array where the vertices are to be stored
|
|
2093
|
+
! * Vertices of the \f$i^{th}\f$ prism are stored in prisms[(i-1)*6] to prisms[(i-1)*6+5].
|
|
2094
|
+
! * \param refs pointer to the array of the prism references.
|
|
2095
|
+
! * The reference of the \f$i^{th}\f$ prism is stored in refs[i-1].
|
|
2096
|
+
! * \param areRequired pointer to the array of the flags saying if the
|
|
2097
|
+
! * prisms are required. areRequired[i-1]=1 if the \f$i^{th}\f$ prism
|
|
2098
|
+
! * is required.
|
|
2099
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2100
|
+
! *
|
|
2101
|
+
! * \remark Fortran interface: (commentated in order to allow to pass \%val(0)
|
|
2102
|
+
! * instead of the refs, areCorners or areRequired arrays)
|
|
2103
|
+
! *
|
|
2104
|
+
! */
|
|
2105
|
+
INTERFACE
|
|
2106
|
+
! SUBROUTINE MMG3D_GET_PRISMS(mesh,prisms,refs,areRequired,&
|
|
2107
|
+
! retval)
|
|
2108
|
+
! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2109
|
+
! INTEGER(MMG5F_INT), DIMENSION(*),INTENT(OUT) :: prisms
|
|
2110
|
+
! INTEGER(MMG5F_INT), DIMENSION(*) :: refs
|
|
2111
|
+
! INTEGER, DIMENSION(*) :: areRequired
|
|
2112
|
+
! INTEGER, INTENT(OUT) :: retval
|
|
2113
|
+
! END SUBROUTINE
|
|
2114
|
+
END INTERFACE
|
|
2115
|
+
! *
|
|
2116
|
+
! */
|
|
2117
|
+
|
|
2118
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_prisms(MMG5_pMesh mesh, MMG5_int* prisms,MMG5_int* refs,
|
|
2119
|
+
! int* areRequired);
|
|
2120
|
+
|
|
2121
|
+
! /**
|
|
2122
|
+
! * \brief Get the vertices and reference of the next triangle in the mesh.
|
|
2123
|
+
! *
|
|
2124
|
+
! * \param mesh pointer to the mesh structure.
|
|
2125
|
+
! * \param v0 pointer to the first vertex of triangle.
|
|
2126
|
+
! * \param v1 pointer to the second vertex of triangle.
|
|
2127
|
+
! * \param v2 pointer to the third vertex of triangle.
|
|
2128
|
+
! * \param ref pointer to the triangle reference.
|
|
2129
|
+
! * \param isRequired pointer to the flag saying if triangle is required.
|
|
2130
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2131
|
+
! *
|
|
2132
|
+
! * This function retrieves the vertices \a v0, \a v1, \a v2, and reference \a
|
|
2133
|
+
! * ref of the next triangle of \a mesh. It is meant to be called in a loop over
|
|
2134
|
+
! * all triangles. When it has been called as many times as there are triangles,
|
|
2135
|
+
! * the internal loop counter will be reset.
|
|
2136
|
+
! *
|
|
2137
|
+
! * \remark Fortran interface:
|
|
2138
|
+
! */
|
|
2139
|
+
INTERFACE
|
|
2140
|
+
SUBROUTINE MMG3D_GET_TRIANGLE(mesh,v0,v1,v2,ref,isRequired,retval)
|
|
2141
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2142
|
+
INTEGER(MMG5F_INT), INTENT(OUT) :: v0,v1,v2
|
|
2143
|
+
INTEGER(MMG5F_INT) :: ref
|
|
2144
|
+
INTEGER :: isRequired
|
|
2145
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2146
|
+
END SUBROUTINE
|
|
2147
|
+
END INTERFACE
|
|
2148
|
+
! *
|
|
2149
|
+
! */
|
|
2150
|
+
|
|
2151
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_triangle(MMG5_pMesh mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2, MMG5_int* ref,
|
|
2152
|
+
! int* isRequired);
|
|
2153
|
+
|
|
2154
|
+
! /**
|
|
2155
|
+
! * \brief Get the vertices and references of all triangles in the mesh.
|
|
2156
|
+
! *
|
|
2157
|
+
! * \param mesh pointer to the mesh structure.
|
|
2158
|
+
! * \param tria pointer to the array where the vertices are to be stored
|
|
2159
|
+
! * Vertices of the \f$i^{th}\f$ triangle are stored in tria[(i-1)*3] to tria[(i-1)*3+2].
|
|
2160
|
+
! * \param refs pointer to the array where the references are to be stored.
|
|
2161
|
+
! * refs[i-1] is the reference of the \f$i^{th}\f$ triangle.
|
|
2162
|
+
! * \param areRequired pointer to array of the flags saying if triangles
|
|
2163
|
+
! * are required. areRequired[i-1]=1 if the \f$i^{th}\f$ tria
|
|
2164
|
+
! * is required.
|
|
2165
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2166
|
+
! *
|
|
2167
|
+
! * \remark Fortran interface: (Commentated in order to allow to pass \%val(0)
|
|
2168
|
+
! * instead of the refs or areRequired arrays)
|
|
2169
|
+
! *
|
|
2170
|
+
! */
|
|
2171
|
+
INTERFACE
|
|
2172
|
+
! SUBROUTINE MMG3D_GET_TRIANGLES(mesh,tria,refs,areRequired,retval)
|
|
2173
|
+
! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2174
|
+
! INTEGER(MMG5F_INT), DIMENSION(*),INTENT(OUT) :: tria
|
|
2175
|
+
! INTEGER(MMG5F_INT), DIMENSION(*) :: refs
|
|
2176
|
+
! INTEGER, DIMENSION(*) :: areRequired
|
|
2177
|
+
! INTEGER, INTENT(OUT) :: retval
|
|
2178
|
+
! END SUBROUTINE
|
|
2179
|
+
END INTERFACE
|
|
2180
|
+
! *
|
|
2181
|
+
! */
|
|
2182
|
+
|
|
2183
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_triangles(MMG5_pMesh mesh, MMG5_int* tria, MMG5_int* refs,
|
|
2184
|
+
! int* areRequired);
|
|
2185
|
+
|
|
2186
|
+
! /**
|
|
2187
|
+
! * \brief Get the vertices and reference of the next quadrilateral of the mesh.
|
|
2188
|
+
! *
|
|
2189
|
+
! * \param mesh pointer to the mesh structure.
|
|
2190
|
+
! * \param v0 pointer to the first vertex of quadrilateral.
|
|
2191
|
+
! * \param v1 pointer to the second vertex of quadrilateral.
|
|
2192
|
+
! * \param v2 pointer to the third vertex of quadrilateral.
|
|
2193
|
+
! * \param v3 pointer to the fourth vertex of quadrilateral.
|
|
2194
|
+
! * \param ref pointer to the quadrilateral reference.
|
|
2195
|
+
! * \param isRequired pointer to the flag saying if quadrilateral is required.
|
|
2196
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2197
|
+
! *
|
|
2198
|
+
! * Get the vertices \a v0,\a v1,\a v2,\a v3 and reference \a ref of the next
|
|
2199
|
+
! * quadrilateral of mesh. This function is meant to be called in a loop over all
|
|
2200
|
+
! * quadrilaterals. When it has been called as many times as there are
|
|
2201
|
+
! * quadrilaterals, the internal loop counter will be reset.
|
|
2202
|
+
! *
|
|
2203
|
+
! * \remark Fortran interface:
|
|
2204
|
+
! */
|
|
2205
|
+
INTERFACE
|
|
2206
|
+
SUBROUTINE MMG3D_GET_QUADRILATERAL(mesh,v0,v1,v2,v3,ref,isRequired,retval)
|
|
2207
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2208
|
+
INTEGER(MMG5F_INT), INTENT(OUT) :: v0,v1,v2,v3,ref
|
|
2209
|
+
INTEGER :: isRequired
|
|
2210
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2211
|
+
END SUBROUTINE
|
|
2212
|
+
END INTERFACE
|
|
2213
|
+
! *
|
|
2214
|
+
! */
|
|
2215
|
+
|
|
2216
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_quadrilateral(MMG5_pMesh mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2,MMG5_int* v3,
|
|
2217
|
+
! MMG5_int* ref, int* isRequired);
|
|
2218
|
+
|
|
2219
|
+
! /**
|
|
2220
|
+
! * \brief Get the vertices and references of all quadrilaterals of the mesh.
|
|
2221
|
+
! *
|
|
2222
|
+
! * \param mesh pointer to the mesh structure.
|
|
2223
|
+
! * \param quads pointer to the array where the vertices will be stored.
|
|
2224
|
+
! * Vertices of the \f$i^{th}\f$ quadrilateral are stored in quads[(i-1)*4] to quads[(i-1)*4+3].
|
|
2225
|
+
! * \param refs pointer to the array of the quadrilaterals references.
|
|
2226
|
+
! * refs[i-1] is the ref of the \f$i^{th}\f$ quadrilateral.
|
|
2227
|
+
! * \param areRequired pointer to array of the flags saying if quadrilaterals
|
|
2228
|
+
! * are required. areRequired[i-1]=1 if the \f$i^{th}\f$ quadrilateral
|
|
2229
|
+
! * is required.
|
|
2230
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2231
|
+
! *
|
|
2232
|
+
! * \remark Fortran interface: (Commentated in order to allow to pass \%val(0)
|
|
2233
|
+
! * instead of the refs or areRequired arrays)
|
|
2234
|
+
! *
|
|
2235
|
+
! */
|
|
2236
|
+
INTERFACE
|
|
2237
|
+
! SUBROUTINE MMG3D_GET_QUADRILATERALS(mesh,quads,refs,areRequired,retval)
|
|
2238
|
+
! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2239
|
+
! INTEGER(MMG5F_INT), DIMENSION(*),INTENT(OUT) :: quads
|
|
2240
|
+
! INTEGER(MMG5F_INT), DIMENSION(*) :: refs
|
|
2241
|
+
! INTEGER, DIMENSION(*) :: areRequired
|
|
2242
|
+
! INTEGER, INTENT(OUT) :: retval
|
|
2243
|
+
! END SUBROUTINE
|
|
2244
|
+
END INTERFACE
|
|
2245
|
+
! *
|
|
2246
|
+
! */
|
|
2247
|
+
|
|
2248
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_quadrilaterals(MMG5_pMesh mesh, MMG5_int* quads, MMG5_int* refs,
|
|
2249
|
+
! int* areRequired);
|
|
2250
|
+
|
|
2251
|
+
! /**
|
|
2252
|
+
! * \brief Get the vertices and reference of the next edge in the mesh.
|
|
2253
|
+
! *
|
|
2254
|
+
! * \param mesh pointer to the mesh structure.
|
|
2255
|
+
! * \param e0 pointer to the first extremity of the edge.
|
|
2256
|
+
! * \param e1 pointer to the second extremity of the edge.
|
|
2257
|
+
! * \param ref pointer to the edge reference.
|
|
2258
|
+
! * \param isRidge pointer to the flag saying if the edge is ridge.
|
|
2259
|
+
! * \param isRequired pointer to the flag saying if the edge is required.
|
|
2260
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2261
|
+
! *
|
|
2262
|
+
! * This function retrieves the extremities \a e0, \a e1 and reference \a ref of
|
|
2263
|
+
! * next edge of \a mesh. It is meant to be called in a loop over all edges. When
|
|
2264
|
+
! * it has been called as many times as there are edges in the mesh, the internal
|
|
2265
|
+
! * edge counter will be reset.
|
|
2266
|
+
! *
|
|
2267
|
+
! * \remark Fortran interface:
|
|
2268
|
+
! */
|
|
2269
|
+
INTERFACE
|
|
2270
|
+
SUBROUTINE MMG3D_GET_EDGE(mesh,e0,e1,ref,isRidge,isRequired,retval)
|
|
2271
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2272
|
+
INTEGER(MMG5F_INT), INTENT(OUT) :: e0,e1
|
|
2273
|
+
INTEGER(MMG5F_INT) :: ref
|
|
2274
|
+
INTEGER :: isRidge,isRequired
|
|
2275
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2276
|
+
END SUBROUTINE
|
|
2277
|
+
END INTERFACE
|
|
2278
|
+
! *
|
|
2279
|
+
! */
|
|
2280
|
+
|
|
2281
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_edge(MMG5_pMesh mesh, MMG5_int* e0, MMG5_int* e1, MMG5_int* ref,
|
|
2282
|
+
! int* isRidge, int* isRequired);
|
|
2283
|
+
|
|
2284
|
+
! /**
|
|
2285
|
+
! * \brief Set the vertices and references of all edges in a mesh.
|
|
2286
|
+
! *
|
|
2287
|
+
! * \param mesh pointer to the mesh structure.
|
|
2288
|
+
! * \param edges pointer to the array of edges.
|
|
2289
|
+
! * The vertices of the \f$i^{th}\f$ edge should be given in edges[(i-1)*2] and edges[(i-1)*2+1].
|
|
2290
|
+
! * \param refs edges references. refs[i-1] is the ref of the \f$i^{th}\f$ edge.
|
|
2291
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2292
|
+
! *
|
|
2293
|
+
! * \remark Fortran interface:
|
|
2294
|
+
! */
|
|
2295
|
+
INTERFACE
|
|
2296
|
+
SUBROUTINE MMG3D_SET_EDGES(mesh,edges,refs,retval)
|
|
2297
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2298
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: edges(*)
|
|
2299
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: refs(*)
|
|
2300
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2301
|
+
END SUBROUTINE
|
|
2302
|
+
END INTERFACE
|
|
2303
|
+
! *
|
|
2304
|
+
! */
|
|
2305
|
+
|
|
2306
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_edges(MMG5_pMesh mesh, MMG5_int *edges, MMG5_int* refs);
|
|
2307
|
+
|
|
2308
|
+
! /**
|
|
2309
|
+
! * \brief Get the vertices and references of all edges in a mesh.
|
|
2310
|
+
! *
|
|
2311
|
+
! * \param mesh pointer to the mesh structure.
|
|
2312
|
+
! * \param edges pointer to the array of edges.
|
|
2313
|
+
! * The vertices of the \f$i^{th}\f$ edge are stored in edges[(i-1)*2] and edges[(i-1)*2+1].
|
|
2314
|
+
! * \param refs edges references. refs[i-1] is the ref of the \f$i^{th}\f$ edge.
|
|
2315
|
+
! * \param areRidges 1 if the edge is a ridge, 0 otherwise.
|
|
2316
|
+
! * \param areRequired 1 if the edge is required, 0 otherwise.
|
|
2317
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2318
|
+
! *
|
|
2319
|
+
! * \remark Fortran interface:
|
|
2320
|
+
! */
|
|
2321
|
+
INTERFACE
|
|
2322
|
+
SUBROUTINE MMG3D_GET_EDGES(mesh,edges,refs,areRidges,areRequired,retval)
|
|
2323
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2324
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: edges(*)
|
|
2325
|
+
INTEGER(MMG5F_INT), INTENT(OUT):: refs(*)
|
|
2326
|
+
INTEGER, INTENT(OUT) :: areRequired(*),areRidges(*)
|
|
2327
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2328
|
+
END SUBROUTINE
|
|
2329
|
+
END INTERFACE
|
|
2330
|
+
! *
|
|
2331
|
+
! */
|
|
2332
|
+
|
|
2333
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_edges(MMG5_pMesh mesh,MMG5_int *edges,MMG5_int* refs,
|
|
2334
|
+
! int *areRidges,int *areRequired);
|
|
2335
|
+
|
|
2336
|
+
! /**
|
|
2337
|
+
! * \brief Get the normal orientation at a single mesh vertex.
|
|
2338
|
+
! *
|
|
2339
|
+
! * \param mesh pointer to the mesh structure.
|
|
2340
|
+
! * \param k vertex index
|
|
2341
|
+
! * \param n0 x componant of the normal at vertex \a k.
|
|
2342
|
+
! * \param n1 y componant of the normal at vertex \a k.
|
|
2343
|
+
! * \param n2 z componant of the normal at vertex \a k.
|
|
2344
|
+
! *
|
|
2345
|
+
! * \return 1 if success.
|
|
2346
|
+
! *
|
|
2347
|
+
! * This function retrieves the normal (n0,n1,n2) at vertex \a k.
|
|
2348
|
+
! *
|
|
2349
|
+
! * \remark Fortran interface:
|
|
2350
|
+
! */
|
|
2351
|
+
INTERFACE
|
|
2352
|
+
SUBROUTINE MMG3D_GET_NORMALATVERTEX(mesh,k,n0,n1,n2,retval)
|
|
2353
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2354
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
2355
|
+
REAL(KIND=8) :: n0,n1,n2
|
|
2356
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2357
|
+
END SUBROUTINE
|
|
2358
|
+
END INTERFACE
|
|
2359
|
+
! *
|
|
2360
|
+
! */
|
|
2361
|
+
|
|
2362
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_normalAtVertex(MMG5_pMesh mesh, MMG5_int k, double *n0, double *n1,
|
|
2363
|
+
! double *n2) ;
|
|
2364
|
+
|
|
2365
|
+
! /**
|
|
2366
|
+
! * \brief Get the quality measure of a single tetrahedron in the mesh.
|
|
2367
|
+
! *
|
|
2368
|
+
! * \param mesh pointer to the mesh structure.
|
|
2369
|
+
! * \param met pointer to the metric structure (may be NULL for an isotropic metric).
|
|
2370
|
+
! * \param k index of the tetrahedron for which we want to get the quality (from 1 to
|
|
2371
|
+
! * the number of tetrahedra included)
|
|
2372
|
+
! * \return the computed quality or 0 in case of failure.
|
|
2373
|
+
! *
|
|
2374
|
+
! * This function returns the quality measure of tetrahedron \a k. Quality values
|
|
2375
|
+
! * range from 0 (degenerate) to 1 (best attainable). The function returns 0
|
|
2376
|
+
! * if the tetrahedron is flat or has a negative volume, and also if \a k is out
|
|
2377
|
+
! * of range. In the latter case it will also print a diagnostic message to
|
|
2378
|
+
! * standard output.
|
|
2379
|
+
! *
|
|
2380
|
+
! * \remark Fortran interface:
|
|
2381
|
+
! */
|
|
2382
|
+
INTERFACE
|
|
2383
|
+
SUBROUTINE MMG3D_GET_TETRAHEDRONQUALITY(mesh,met,k,retval)
|
|
2384
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,met
|
|
2385
|
+
INTEGER(MMG5F_INT), INTENT(IN):: k
|
|
2386
|
+
REAL(KIND=8), INTENT(OUT) :: retval
|
|
2387
|
+
END SUBROUTINE
|
|
2388
|
+
END INTERFACE
|
|
2389
|
+
! *
|
|
2390
|
+
! */
|
|
2391
|
+
|
|
2392
|
+
! LIBMMG3D_EXPORT double MMG3D_Get_tetrahedronQuality(MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k);
|
|
2393
|
+
|
|
2394
|
+
! /**
|
|
2395
|
+
! * \brief Get the next element of a scalar solution structure defined at vertices.
|
|
2396
|
+
! *
|
|
2397
|
+
! * \param met pointer to the sol structure.
|
|
2398
|
+
! * \param s pointer to the scalar solution value.
|
|
2399
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2400
|
+
! *
|
|
2401
|
+
! * This function retrieves the solution \a s of the next vertex of \a mesh. It
|
|
2402
|
+
! * is meant to be called in a loop over all vertices. When it has been called as
|
|
2403
|
+
! * many times as there are vertices in the mesh, the internal loop counter will
|
|
2404
|
+
! * be reset.
|
|
2405
|
+
! *
|
|
2406
|
+
! * \remark Fortran interface:
|
|
2407
|
+
! */
|
|
2408
|
+
INTERFACE
|
|
2409
|
+
SUBROUTINE MMG3D_GET_SCALARSOL(met,s,retval)
|
|
2410
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: met
|
|
2411
|
+
REAL(KIND=8), INTENT(OUT) :: s
|
|
2412
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2413
|
+
END SUBROUTINE
|
|
2414
|
+
END INTERFACE
|
|
2415
|
+
! *
|
|
2416
|
+
! */
|
|
2417
|
+
|
|
2418
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_scalarSol(MMG5_pSol met, double* s);
|
|
2419
|
+
|
|
2420
|
+
! /**
|
|
2421
|
+
! * \brief Get all elements of a scalar solution structure defined at vertices.
|
|
2422
|
+
! *
|
|
2423
|
+
! * \param met pointer to the sol structure.
|
|
2424
|
+
! * \param s array of the scalar solutions at mesh vertices.
|
|
2425
|
+
! * The solution at vertex i will be stored in s[i-1].
|
|
2426
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2427
|
+
! *
|
|
2428
|
+
! * \remark Fortran interface:
|
|
2429
|
+
! */
|
|
2430
|
+
INTERFACE
|
|
2431
|
+
SUBROUTINE MMG3D_GET_SCALARSOLS(met,s,retval)
|
|
2432
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: met
|
|
2433
|
+
REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s
|
|
2434
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2435
|
+
END SUBROUTINE
|
|
2436
|
+
END INTERFACE
|
|
2437
|
+
! *
|
|
2438
|
+
! */
|
|
2439
|
+
|
|
2440
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_scalarSols(MMG5_pSol met, double* s);
|
|
2441
|
+
|
|
2442
|
+
! /**
|
|
2443
|
+
! * \brief Get the next element of a vector solution structure.
|
|
2444
|
+
! *
|
|
2445
|
+
! * \param met pointer to the sol structure.
|
|
2446
|
+
! * \param vx x value of the vectorial solution.
|
|
2447
|
+
! * \param vy y value of the vectorial solution.
|
|
2448
|
+
! * \param vz z value of the vectorial solution.
|
|
2449
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2450
|
+
! *
|
|
2451
|
+
! * This function retrieves the next vector-valued element \f$(v_x,v_y,vz)\f$ of
|
|
2452
|
+
! * the solution. It is meant to be called in a loop over all elements. When it
|
|
2453
|
+
! * has been called as many times as there are elements in the solution, the
|
|
2454
|
+
! * internal loop counter will be reset.
|
|
2455
|
+
! *
|
|
2456
|
+
! * \remark Fortran interface:
|
|
2457
|
+
! */
|
|
2458
|
+
INTERFACE
|
|
2459
|
+
SUBROUTINE MMG3D_GET_VECTORSOL(met,vx,vy,vz,retval)
|
|
2460
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: met
|
|
2461
|
+
REAL(KIND=8), INTENT(OUT) :: vx,vy,vz
|
|
2462
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2463
|
+
END SUBROUTINE
|
|
2464
|
+
END INTERFACE
|
|
2465
|
+
! *
|
|
2466
|
+
! */
|
|
2467
|
+
|
|
2468
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_vectorSol(MMG5_pSol met, double* vx, double* vy, double* vz);
|
|
2469
|
+
|
|
2470
|
+
! /**
|
|
2471
|
+
! * \brief Get all elements of a vector solution structure.
|
|
2472
|
+
! *
|
|
2473
|
+
! * \param met pointer to the sol structure.
|
|
2474
|
+
! * \param sols array of the solutions at mesh vertices. sols[3*(i-1)]\@3 is
|
|
2475
|
+
! * the solution at vertex i.
|
|
2476
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2477
|
+
! *
|
|
2478
|
+
! * Get vectorial solutions at mesh vertices
|
|
2479
|
+
! *
|
|
2480
|
+
! * \remark Fortran interface:
|
|
2481
|
+
! */
|
|
2482
|
+
INTERFACE
|
|
2483
|
+
SUBROUTINE MMG3D_GET_VECTORSOLS(met,sols,retval)
|
|
2484
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: met
|
|
2485
|
+
REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: sols
|
|
2486
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2487
|
+
END SUBROUTINE
|
|
2488
|
+
END INTERFACE
|
|
2489
|
+
! *
|
|
2490
|
+
! */
|
|
2491
|
+
|
|
2492
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_vectorSols(MMG5_pSol met, double* sols);
|
|
2493
|
+
|
|
2494
|
+
! /**
|
|
2495
|
+
! * \brief Get the next element of a tensor solution structure.
|
|
2496
|
+
! *
|
|
2497
|
+
! * \param met pointer to the sol structure.
|
|
2498
|
+
! * \param m11 pointer to the position (1,1) in the solution tensor.
|
|
2499
|
+
! * \param m12 pointer to the position (1,2) in the solution tensor.
|
|
2500
|
+
! * \param m13 pointer to the position (1,3) in the solution tensor.
|
|
2501
|
+
! * \param m22 pointer to the position (2,2) in the solution tensor.
|
|
2502
|
+
! * \param m23 pointer to the position (2,3) in the solution tensor.
|
|
2503
|
+
! * \param m33 pointer to the position (3,3) in the solution tensor.
|
|
2504
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2505
|
+
! *
|
|
2506
|
+
! * This function retrieves the next element
|
|
2507
|
+
! * \f$(m_{11},m_{12},m_{13},m_{22},m_{23},m_{33})\f$ of a tensor-valued solution
|
|
2508
|
+
! * field. It is meant to be called in a loop over all vertices. When it has
|
|
2509
|
+
! * been called as many times as there are elements in the solution, the internal
|
|
2510
|
+
! * loop counter will be reset.
|
|
2511
|
+
! *
|
|
2512
|
+
! * \remark Fortran interface:
|
|
2513
|
+
! */
|
|
2514
|
+
INTERFACE
|
|
2515
|
+
SUBROUTINE MMG3D_GET_TENSORSOL(met,m11,m12,m13,m22,m23,m33,retval)
|
|
2516
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: met
|
|
2517
|
+
REAL(KIND=8), INTENT(OUT) :: m11,m12,m13,m22,m23,m33
|
|
2518
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2519
|
+
END SUBROUTINE
|
|
2520
|
+
END INTERFACE
|
|
2521
|
+
! *
|
|
2522
|
+
! */
|
|
2523
|
+
|
|
2524
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_tensorSol(MMG5_pSol met, double *m11,double *m12, double *m13,
|
|
2525
|
+
! double *m22,double *m23, double *m33);
|
|
2526
|
+
|
|
2527
|
+
! /**
|
|
2528
|
+
! * \brief Get all elements of a tensor solution field.
|
|
2529
|
+
! *
|
|
2530
|
+
! * \param met pointer to the sol structure.
|
|
2531
|
+
! * \param sols array of the solutions at mesh vertices.
|
|
2532
|
+
! * The solution at vertex \a i will be stored in sols[6*(i-1)] to sols[6*(i-1)+5].
|
|
2533
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2534
|
+
! *
|
|
2535
|
+
! * \remark Fortran interface:
|
|
2536
|
+
! */
|
|
2537
|
+
INTERFACE
|
|
2538
|
+
SUBROUTINE MMG3D_GET_TENSORSOLS(met,sols,retval)
|
|
2539
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: met
|
|
2540
|
+
REAL(KIND=8), DIMENSION(*), INTENT(OUT) :: sols
|
|
2541
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2542
|
+
END SUBROUTINE
|
|
2543
|
+
END INTERFACE
|
|
2544
|
+
! *
|
|
2545
|
+
! */
|
|
2546
|
+
|
|
2547
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_tensorSols(MMG5_pSol met, double *sols);
|
|
2548
|
+
|
|
2549
|
+
! /**
|
|
2550
|
+
! * \brief Get one out of several solutions at a specific vertex.
|
|
2551
|
+
! *
|
|
2552
|
+
! * \param sol pointer to the array of solutions
|
|
2553
|
+
! * \param i position of the solution field that we want to get.
|
|
2554
|
+
! * \param s solution(s) at mesh vertex \a pos. The required size
|
|
2555
|
+
! * of this array depends on the type of solution.
|
|
2556
|
+
! * \param pos index of the vertex on which we get the solution.
|
|
2557
|
+
! *
|
|
2558
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2559
|
+
! *
|
|
2560
|
+
! * Get values of the ith field of the solution array at vertex \a pos.
|
|
2561
|
+
! * (pos from 1 to nb_vertices included and \a i from 1 to \a nb_sols).
|
|
2562
|
+
! * The type of solution is inferred from \a sol.
|
|
2563
|
+
! *
|
|
2564
|
+
! * \remark Fortran interface:
|
|
2565
|
+
! */
|
|
2566
|
+
INTERFACE
|
|
2567
|
+
SUBROUTINE MMG3D_GET_ITHSOL_INSOLSATVERTICES(sol,i,s,pos,retval)
|
|
2568
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: sol
|
|
2569
|
+
INTEGER, INTENT(IN) :: i
|
|
2570
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: pos
|
|
2571
|
+
REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s
|
|
2572
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2573
|
+
END SUBROUTINE
|
|
2574
|
+
END INTERFACE
|
|
2575
|
+
! *
|
|
2576
|
+
! */
|
|
2577
|
+
|
|
2578
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_ithSol_inSolsAtVertices(MMG5_pSol sol,int i, double* s,MMG5_int pos);
|
|
2579
|
+
|
|
2580
|
+
! /**
|
|
2581
|
+
! * \brief Get one out of several solutions at all vertices in the mesh.
|
|
2582
|
+
! *
|
|
2583
|
+
! * \param sol pointer to the array of solutions
|
|
2584
|
+
! * \param i position of the solution field that we want to get.
|
|
2585
|
+
! * \param s array of the solutions at mesh vertices. The solution at vertex \a k
|
|
2586
|
+
! * is given by s[k-1] for a scalar sol, s[3*(k-1)]\@3 for a vectorial solution
|
|
2587
|
+
! * and s[6*(k-1)]\@6 for a tensor solution.
|
|
2588
|
+
! *
|
|
2589
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2590
|
+
! *
|
|
2591
|
+
! * This function retrieves the values of the solution at the ith field of the
|
|
2592
|
+
! * solution array (\a i from 1 to \a nb_sols).
|
|
2593
|
+
! *
|
|
2594
|
+
! * \remark Fortran interface:
|
|
2595
|
+
! */
|
|
2596
|
+
INTERFACE
|
|
2597
|
+
SUBROUTINE MMG3D_GET_ITHSOLS_INSOLSATVERTICES(sol,i,s,retval)
|
|
2598
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: sol
|
|
2599
|
+
INTEGER, INTENT(IN) :: i
|
|
2600
|
+
REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s
|
|
2601
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2602
|
+
END SUBROUTINE
|
|
2603
|
+
END INTERFACE
|
|
2604
|
+
! *
|
|
2605
|
+
! */
|
|
2606
|
+
|
|
2607
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_ithSols_inSolsAtVertices(MMG5_pSol sol,int i, double* s);
|
|
2608
|
+
|
|
2609
|
+
! /**
|
|
2610
|
+
! * \brief Get the value of an integer parameter of the remesher.
|
|
2611
|
+
! *
|
|
2612
|
+
! * \param mesh pointer to the mesh structure.
|
|
2613
|
+
! * \param iparam integer parameter to get (see \ref MMG3D_Param for a
|
|
2614
|
+
! * list of parameters that can be set).
|
|
2615
|
+
! * \return The value of integer parameter.
|
|
2616
|
+
! *
|
|
2617
|
+
! * Get the value of integer parameter \a iparam.
|
|
2618
|
+
! *
|
|
2619
|
+
! * \remark Fortran interface:
|
|
2620
|
+
! */
|
|
2621
|
+
INTERFACE
|
|
2622
|
+
SUBROUTINE MMG3D_GET_IPARAMETER(mesh,iparam,retval)
|
|
2623
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2624
|
+
INTEGER(MMG5F_INT), INTENT(IN):: iparam
|
|
2625
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2626
|
+
END SUBROUTINE
|
|
2627
|
+
END INTERFACE
|
|
2628
|
+
! *
|
|
2629
|
+
! */
|
|
2630
|
+
|
|
2631
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_iparameter(MMG5_pMesh mesh, MMG5_int iparam);
|
|
2632
|
+
|
|
2633
|
+
! /**
|
|
2634
|
+
! * \brief Add a tetrahedron to the mesh.
|
|
2635
|
+
! *
|
|
2636
|
+
! * \param mesh pointer to the mesh structure.
|
|
2637
|
+
! * \param v0 first vertex of tetrahedron.
|
|
2638
|
+
! * \param v1 second vertex of tetrahedron.
|
|
2639
|
+
! * \param v2 third vertex of tetrahedron.
|
|
2640
|
+
! * \param v3 fourth vertex of tetrahedron.
|
|
2641
|
+
! * \param ref tetrahedron reference.
|
|
2642
|
+
! *
|
|
2643
|
+
! * This function adds a tetrahedron with vertices \a v0, \a v1, \a v2, \a v3 and reference
|
|
2644
|
+
! * \a ref at the first available position of the mesh.
|
|
2645
|
+
! *
|
|
2646
|
+
! * \return 0 if unable to create the tetrahedron, the unit-offset index of the new tet if it
|
|
2647
|
+
! * has strictly positive volume, a negative index if it has a zero or negative volume.
|
|
2648
|
+
! *
|
|
2649
|
+
! * \remark Fortran interface:
|
|
2650
|
+
! */
|
|
2651
|
+
INTERFACE
|
|
2652
|
+
SUBROUTINE MMG3D_ADD_TETRAHEDRON(mesh,v0,v1,v2,v3,ref,retval)
|
|
2653
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2654
|
+
INTEGER(MMG5F_INT), INTENT(IN):: v0,v1,v2,v3,ref
|
|
2655
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2656
|
+
END SUBROUTINE
|
|
2657
|
+
END INTERFACE
|
|
2658
|
+
! *
|
|
2659
|
+
! */
|
|
2660
|
+
|
|
2661
|
+
! LIBMMG3D_EXPORT int MMG3D_Add_tetrahedron(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1,
|
|
2662
|
+
! MMG5_int v2, MMG5_int v3, MMG5_int ref);
|
|
2663
|
+
|
|
2664
|
+
! /**
|
|
2665
|
+
! * \brief Add a vertex to the mesh.
|
|
2666
|
+
! *
|
|
2667
|
+
! * \param mesh pointer to the mesh structure.
|
|
2668
|
+
! * \param c0 x coor of the new vertex
|
|
2669
|
+
! * \param c1 y coor of the new vertex
|
|
2670
|
+
! * \param c2 z coor of the new vertex
|
|
2671
|
+
! * \param ref vertex reference.
|
|
2672
|
+
! *
|
|
2673
|
+
! * \return 0 if unable to create the vertex, the index of the new vertex
|
|
2674
|
+
! * otherwise.
|
|
2675
|
+
! *
|
|
2676
|
+
! * This function adds a vertex with coordinates \a c0 \a c1 \a c2 and reference
|
|
2677
|
+
! * \a ref at the first available position of the mesh.
|
|
2678
|
+
! *
|
|
2679
|
+
! * \remark Fortran interface:
|
|
2680
|
+
! */
|
|
2681
|
+
INTERFACE
|
|
2682
|
+
SUBROUTINE MMG3D_ADD_VERTEX(mesh,c0,c1,c2,ref,retval)
|
|
2683
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
2684
|
+
REAL(KIND=8), INTENT(IN) :: c0,c1,c2
|
|
2685
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: ref
|
|
2686
|
+
INTEGER(MMG5F_INT), INTENT(OUT) :: retval
|
|
2687
|
+
END SUBROUTINE
|
|
2688
|
+
END INTERFACE
|
|
2689
|
+
! *
|
|
2690
|
+
! */
|
|
2691
|
+
|
|
2692
|
+
! LIBMMG3D_EXPORT MMG5_int MMG3D_Add_vertex(MMG5_pMesh mesh, double c0, double c1,
|
|
2693
|
+
! double c2, MMG5_int ref);
|
|
2694
|
+
|
|
2695
|
+
! /* input/output functions */
|
|
2696
|
+
! /**
|
|
2697
|
+
! * \brief Load a mesh (in .mesh/.mesb format) from file.
|
|
2698
|
+
! *
|
|
2699
|
+
! * \param mesh pointer to the mesh structure.
|
|
2700
|
+
! * \param filename name of the file.
|
|
2701
|
+
! *
|
|
2702
|
+
! * \return 0 if file is not found, -1 if fail for another reason (insufficient memory, file
|
|
2703
|
+
! * format...), 1 if success.
|
|
2704
|
+
! *
|
|
2705
|
+
! * Read mesh data.
|
|
2706
|
+
! *
|
|
2707
|
+
! * \remark Fortran interface:
|
|
2708
|
+
! */
|
|
2709
|
+
INTERFACE
|
|
2710
|
+
SUBROUTINE MMG3D_LOADMESH(mesh,filename,strlen0,retval)
|
|
2711
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
|
|
2712
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
2713
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
2714
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2715
|
+
END SUBROUTINE
|
|
2716
|
+
END INTERFACE
|
|
2717
|
+
! *
|
|
2718
|
+
! */
|
|
2719
|
+
|
|
2720
|
+
! LIBMMG3D_EXPORT int MMG3D_loadMesh(MMG5_pMesh mesh,const char *filename);
|
|
2721
|
+
|
|
2722
|
+
! /**
|
|
2723
|
+
! * \brief Load a mesh and possibly a solution in .msh format from file.
|
|
2724
|
+
! *
|
|
2725
|
+
! * \param mesh pointer to the mesh structure.
|
|
2726
|
+
! * \param sol pointer to the solution structure.
|
|
2727
|
+
! * \param filename name of file.
|
|
2728
|
+
! *
|
|
2729
|
+
! * \return 0 if file is not found, -1 if fail for another reason (insufficient memory, file
|
|
2730
|
+
! * format...), 1 if success.
|
|
2731
|
+
! *
|
|
2732
|
+
! * This function reads a mesh and 0 or 1 data fields in MSH file format (.msh
|
|
2733
|
+
! * extension). We read only low-order vertices, edges, triangles, quadrangles,
|
|
2734
|
+
! * tetrahedra and prisms.
|
|
2735
|
+
! *
|
|
2736
|
+
! * \remark Fortran interface:
|
|
2737
|
+
! */
|
|
2738
|
+
INTERFACE
|
|
2739
|
+
SUBROUTINE MMG3D_LOADMSHMESH(mesh,sol,filename,strlen0,retval)
|
|
2740
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
2741
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
2742
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
2743
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2744
|
+
END SUBROUTINE
|
|
2745
|
+
END INTERFACE
|
|
2746
|
+
! *
|
|
2747
|
+
! */
|
|
2748
|
+
|
|
2749
|
+
! LIBMMG3D_EXPORT int MMG3D_loadMshMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
|
|
2750
|
+
|
|
2751
|
+
! /**
|
|
2752
|
+
! * \brief Load a mesh and possibly a solution in VTU (VTK) format from file.
|
|
2753
|
+
! *
|
|
2754
|
+
! * \param mesh pointer to the mesh structure.
|
|
2755
|
+
! * \param met pointer to the metric structure or the NULL pointer.
|
|
2756
|
+
! * \param sol pointer to the level-set structure or the NULL pointer.
|
|
2757
|
+
! * \param filename name of file.
|
|
2758
|
+
! *
|
|
2759
|
+
! * \return 0 if file is not found, -1 if fail for another reason (insufficient memory, file
|
|
2760
|
+
! * format...), 1 if success.
|
|
2761
|
+
! *
|
|
2762
|
+
! * This function reads a mesh and 0 or 1 data field in VTU (VTK) file format (.vtu
|
|
2763
|
+
! * extension). We read only low-order vertices, edges, tria, quadra, tetra and
|
|
2764
|
+
! * prisms. Point and cell references must be stored in PointData or CellData
|
|
2765
|
+
! * whose names contain the "medit:ref" keyword.
|
|
2766
|
+
! *
|
|
2767
|
+
! * \remark Fortran interface:
|
|
2768
|
+
! */
|
|
2769
|
+
INTERFACE
|
|
2770
|
+
SUBROUTINE MMG3D_LOADVTUMESH(mesh,met,sol,filename,strlen0,retval)
|
|
2771
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met,sol
|
|
2772
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
2773
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
2774
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2775
|
+
END SUBROUTINE
|
|
2776
|
+
END INTERFACE
|
|
2777
|
+
! *
|
|
2778
|
+
! */
|
|
2779
|
+
|
|
2780
|
+
! LIBMMG3D_EXPORT int MMG3D_loadVtuMesh(MMG5_pMesh mesh,MMG5_pSol met,MMG5_pSol sol,const char *filename);
|
|
2781
|
+
|
|
2782
|
+
! /**
|
|
2783
|
+
! * \brief Load a mesh and multiple solutions in VTU (VTK) format from file.
|
|
2784
|
+
! *
|
|
2785
|
+
! * \param mesh pointer to the mesh structure.
|
|
2786
|
+
! * \param sol pointer to the solution structure.
|
|
2787
|
+
! * \param filename name of file.
|
|
2788
|
+
! *
|
|
2789
|
+
! * \return 0 if file is not found, -1 if fail for another reason (insufficient memory, file
|
|
2790
|
+
! * format...), 1 if success.
|
|
2791
|
+
! *
|
|
2792
|
+
! * This functionreads a mesh and a list of data in VTU file format (.vtu extension). We read
|
|
2793
|
+
! * only low-order vertices, edges, tria, quadra, tetra and prisms. Point and cell
|
|
2794
|
+
! * references must be stored in PointData or CellData whose names contains the
|
|
2795
|
+
! * "medit:ref" keyword.
|
|
2796
|
+
! *
|
|
2797
|
+
! * \remark Fortran interface:
|
|
2798
|
+
! */
|
|
2799
|
+
INTERFACE
|
|
2800
|
+
SUBROUTINE MMG3D_LOADVTUMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)
|
|
2801
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
2802
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
2803
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
2804
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2805
|
+
END SUBROUTINE
|
|
2806
|
+
END INTERFACE
|
|
2807
|
+
! *
|
|
2808
|
+
! */
|
|
2809
|
+
|
|
2810
|
+
! LIBMMG3D_EXPORT int MMG3D_loadVtuMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
|
|
2811
|
+
|
|
2812
|
+
! /**
|
|
2813
|
+
! * \brief Load a mesh and possibly a solution from a file in VTK format.
|
|
2814
|
+
! *
|
|
2815
|
+
! * \param mesh pointer to the mesh structure.
|
|
2816
|
+
! * \param met pointer to the metric structure or the NULL pointer.
|
|
2817
|
+
! * \param sol pointer to the level-set structure or the NULL pointer.
|
|
2818
|
+
! * \param filename name of file.
|
|
2819
|
+
! *
|
|
2820
|
+
! * \return 0 if file is not found, -1 if fail for another reason (insufficient memory, file
|
|
2821
|
+
! * format...), 1 if success.
|
|
2822
|
+
! *
|
|
2823
|
+
! * This function reads a mesh and 0 or 1 data fields in VTK file format (.vtu extension). We read
|
|
2824
|
+
! * only low-order vertices, edges, tria, quadra, tetra and prisms. Point and cell
|
|
2825
|
+
! * references must be stored in PointData or CellData whose names contain the
|
|
2826
|
+
! * "medit:ref" keyword.
|
|
2827
|
+
! *
|
|
2828
|
+
! * \remark Fortran interface:
|
|
2829
|
+
! */
|
|
2830
|
+
INTERFACE
|
|
2831
|
+
SUBROUTINE MMG3D_LOADVTKMESH(mesh,met,sol,filename,strlen0,retval)
|
|
2832
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met,sol
|
|
2833
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
2834
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
2835
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2836
|
+
END SUBROUTINE
|
|
2837
|
+
END INTERFACE
|
|
2838
|
+
! *
|
|
2839
|
+
! */
|
|
2840
|
+
|
|
2841
|
+
! LIBMMG3D_EXPORT int MMG3D_loadVtkMesh(MMG5_pMesh mesh,MMG5_pSol met,MMG5_pSol sol,const char *filename);
|
|
2842
|
+
|
|
2843
|
+
! /**
|
|
2844
|
+
! * \brief Load a mesh and multiple solutions from a file in VTK format.
|
|
2845
|
+
! *
|
|
2846
|
+
! * \param mesh pointer to the mesh structure.
|
|
2847
|
+
! * \param sol pointer to the solution structure.
|
|
2848
|
+
! * \param filename name of file.
|
|
2849
|
+
! *
|
|
2850
|
+
! * \return 0 if file is not found, -1 if fail for another reason (insufficient memory, file
|
|
2851
|
+
! * format...), 1 if success.
|
|
2852
|
+
! *
|
|
2853
|
+
! * Read mesh and a list of data in VTK file format (.vtu extension). We read
|
|
2854
|
+
! * only low-order vertices, edges, tria, quadra, tetra and prisms. Point and cell
|
|
2855
|
+
! * references must be stored in PointData or CellData whose names contains the
|
|
2856
|
+
! * "medit:ref" keyword.
|
|
2857
|
+
! *
|
|
2858
|
+
! * \remark Fortran interface:
|
|
2859
|
+
! */
|
|
2860
|
+
INTERFACE
|
|
2861
|
+
SUBROUTINE MMG3D_LOADVTKMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)
|
|
2862
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
2863
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
2864
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
2865
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2866
|
+
END SUBROUTINE
|
|
2867
|
+
END INTERFACE
|
|
2868
|
+
! *
|
|
2869
|
+
! */
|
|
2870
|
+
|
|
2871
|
+
! LIBMMG3D_EXPORT int MMG3D_loadVtkMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
|
|
2872
|
+
|
|
2873
|
+
! /**
|
|
2874
|
+
! * \brief Load a mesh and all data from a file in MSH format.
|
|
2875
|
+
! *
|
|
2876
|
+
! * \param mesh pointer to the mesh structure.
|
|
2877
|
+
! * \param sol pointer to a list of solution structures.
|
|
2878
|
+
! * \param filename name of file.
|
|
2879
|
+
! *
|
|
2880
|
+
! * \return 0 if file is not found, -1 if fail for another reason (insufficient memory, file
|
|
2881
|
+
! * format...), 1 if success.
|
|
2882
|
+
! *
|
|
2883
|
+
! * Read mesh and a list of data in MSH file format (.msh extension). We read only
|
|
2884
|
+
! * low-order vertices, edges, tria, quadra, tetra and prisms.
|
|
2885
|
+
! *
|
|
2886
|
+
! * \remark Fortran interface:
|
|
2887
|
+
! */
|
|
2888
|
+
INTERFACE
|
|
2889
|
+
SUBROUTINE MMG3D_LOADMSHMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)
|
|
2890
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
2891
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
2892
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
2893
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2894
|
+
END SUBROUTINE
|
|
2895
|
+
END INTERFACE
|
|
2896
|
+
! *
|
|
2897
|
+
! */
|
|
2898
|
+
|
|
2899
|
+
! LIBMMG3D_EXPORT int MMG3D_loadMshMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
|
|
2900
|
+
|
|
2901
|
+
! /**
|
|
2902
|
+
! * \brief Read mesh data in a format determined by the filename extension.
|
|
2903
|
+
! *
|
|
2904
|
+
! * \param mesh pointer to the mesh structure.
|
|
2905
|
+
! * \param met pointer to the metric structure or the NULL pointer.
|
|
2906
|
+
! * \param sol pointer to the level-set structure or the NULL pointer.
|
|
2907
|
+
! * \param filename name of file.
|
|
2908
|
+
! *
|
|
2909
|
+
! * \return 0 if file is not found, -1 if fail for another reason (insufficient memory, file
|
|
2910
|
+
! * format...), 1 if success.
|
|
2911
|
+
! *
|
|
2912
|
+
! * \remark Fortran interface:
|
|
2913
|
+
! */
|
|
2914
|
+
INTERFACE
|
|
2915
|
+
SUBROUTINE MMG3D_LOADGENERICMESH(mesh,met,sol,filename,strlen0,retval)
|
|
2916
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met,sol
|
|
2917
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
2918
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
2919
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2920
|
+
END SUBROUTINE
|
|
2921
|
+
END INTERFACE
|
|
2922
|
+
! *
|
|
2923
|
+
! */
|
|
2924
|
+
|
|
2925
|
+
! LIBMMG3D_EXPORT int MMG3D_loadGenericMesh(MMG5_pMesh mesh,MMG5_pSol met,MMG5_pSol sol,const char *filename);
|
|
2926
|
+
|
|
2927
|
+
! /**
|
|
2928
|
+
! * \brief Save a mesh in .mesh/.meshb format.
|
|
2929
|
+
! *
|
|
2930
|
+
! * \param mesh pointer to the mesh structure.
|
|
2931
|
+
! * \param filename pointer to the name of file.
|
|
2932
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2933
|
+
! *
|
|
2934
|
+
! * \remark Fortran interface:
|
|
2935
|
+
! */
|
|
2936
|
+
INTERFACE
|
|
2937
|
+
SUBROUTINE MMG3D_SAVEMESH(mesh,filename,strlen0,retval)
|
|
2938
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
|
|
2939
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
2940
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
2941
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2942
|
+
END SUBROUTINE
|
|
2943
|
+
END INTERFACE
|
|
2944
|
+
! *
|
|
2945
|
+
! */
|
|
2946
|
+
|
|
2947
|
+
! LIBMMG3D_EXPORT int MMG3D_saveMesh(MMG5_pMesh mesh, const char *filename);
|
|
2948
|
+
|
|
2949
|
+
! /**
|
|
2950
|
+
! * \brief Save a mesh in MSH format, ascii or binary depending on the filename extension.
|
|
2951
|
+
! *
|
|
2952
|
+
! * \param mesh pointer to the mesh structure.
|
|
2953
|
+
! * \param sol pointer to the solution structure.
|
|
2954
|
+
! * \param filename name of file.
|
|
2955
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2956
|
+
! *
|
|
2957
|
+
! * Write mesh and 0 or 1 data in MSH file format (.msh extension). Write binary
|
|
2958
|
+
! * file for .mshb extension and ASCII for .msh one.
|
|
2959
|
+
! *
|
|
2960
|
+
! * \remark Fortran interface:
|
|
2961
|
+
! */
|
|
2962
|
+
INTERFACE
|
|
2963
|
+
SUBROUTINE MMG3D_SAVEMSHMESH(mesh,sol,filename,strlen0,retval)
|
|
2964
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
2965
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
2966
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
2967
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2968
|
+
END SUBROUTINE
|
|
2969
|
+
END INTERFACE
|
|
2970
|
+
! *
|
|
2971
|
+
! */
|
|
2972
|
+
|
|
2973
|
+
! LIBMMG3D_EXPORT int MMG3D_saveMshMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
|
|
2974
|
+
|
|
2975
|
+
! /**
|
|
2976
|
+
! * \brief Save a mesh and data in MSH format, ascii or binary depending on the filename extension.
|
|
2977
|
+
! *
|
|
2978
|
+
! * \param mesh pointer to the mesh structure.
|
|
2979
|
+
! * \param sol pointer to the solution structure.
|
|
2980
|
+
! * \param filename name of file.
|
|
2981
|
+
! * \return 0 if failed, 1 otherwise.
|
|
2982
|
+
! *
|
|
2983
|
+
! * Write mesh and a list of data fields (that are considered as solutions and
|
|
2984
|
+
! * not metrics, thus, we do nothing over the ridge vertices) in MSH file format
|
|
2985
|
+
! * (.msh extension). Save file in ASCII format for .msh extension, in binary
|
|
2986
|
+
! * format for .mshb one.
|
|
2987
|
+
! *
|
|
2988
|
+
! * \remark Fortran interface:
|
|
2989
|
+
! */
|
|
2990
|
+
INTERFACE
|
|
2991
|
+
SUBROUTINE MMG3D_SAVEMSHMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)
|
|
2992
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
2993
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
2994
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
2995
|
+
INTEGER, INTENT(OUT) :: retval
|
|
2996
|
+
END SUBROUTINE
|
|
2997
|
+
END INTERFACE
|
|
2998
|
+
! *
|
|
2999
|
+
! */
|
|
3000
|
+
|
|
3001
|
+
! LIBMMG3D_EXPORT int MMG3D_saveMshMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
|
|
3002
|
+
|
|
3003
|
+
! /**
|
|
3004
|
+
! * \brief Save a mesh and optionally one solution in VTK format.
|
|
3005
|
+
! *
|
|
3006
|
+
! * \param mesh pointer to the mesh structure.
|
|
3007
|
+
! * \param sol pointer to the solution structure.
|
|
3008
|
+
! * \param filename name of file.
|
|
3009
|
+
! * \return 0 if failed, 1 otherwise.
|
|
3010
|
+
! *
|
|
3011
|
+
! * Write mesh and 0 or 1 data in Vtk file format (.vtk extension).
|
|
3012
|
+
! *
|
|
3013
|
+
! * \remark Fortran interface:
|
|
3014
|
+
! */
|
|
3015
|
+
INTERFACE
|
|
3016
|
+
SUBROUTINE MMG3D_SAVEVTKMESH(mesh,sol,filename,strlen0,retval)
|
|
3017
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
3018
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
3019
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
3020
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3021
|
+
END SUBROUTINE
|
|
3022
|
+
END INTERFACE
|
|
3023
|
+
! *
|
|
3024
|
+
! */
|
|
3025
|
+
|
|
3026
|
+
! LIBMMG3D_EXPORT int MMG3D_saveVtkMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
|
|
3027
|
+
|
|
3028
|
+
! /**
|
|
3029
|
+
! * \brief Save a mesh and multiple data fields in VTK format.
|
|
3030
|
+
! *
|
|
3031
|
+
! * \param mesh pointer to the mesh structure.
|
|
3032
|
+
! * \param sol pointer to the solution structure.
|
|
3033
|
+
! * \param filename name of file.
|
|
3034
|
+
! * \return 0 if failed, 1 otherwise.
|
|
3035
|
+
! *
|
|
3036
|
+
! * Write mesh and a list of data fields in Vtk file format (.vtk extension).
|
|
3037
|
+
! *
|
|
3038
|
+
! * \remark Fortran interface:
|
|
3039
|
+
! */
|
|
3040
|
+
INTERFACE
|
|
3041
|
+
SUBROUTINE MMG3D_SAVEVTKMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)
|
|
3042
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
3043
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
3044
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
3045
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3046
|
+
END SUBROUTINE
|
|
3047
|
+
END INTERFACE
|
|
3048
|
+
! *
|
|
3049
|
+
! */
|
|
3050
|
+
|
|
3051
|
+
! LIBMMG3D_EXPORT int MMG3D_saveVtkMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
|
|
3052
|
+
|
|
3053
|
+
! /**
|
|
3054
|
+
! * \brief Save a mesh and optionally one data field in VTU format.
|
|
3055
|
+
! *
|
|
3056
|
+
! * \param mesh pointer to the mesh structure.
|
|
3057
|
+
! * \param sol pointer to the solution structure.
|
|
3058
|
+
! * \param filename name of file.
|
|
3059
|
+
! * \return 0 if failed, 1 otherwise.
|
|
3060
|
+
! *
|
|
3061
|
+
! * Write mesh and 0 or 1 data in vtu Vtk file format (.vtu extension).
|
|
3062
|
+
! *
|
|
3063
|
+
! * \remark Fortran interface:
|
|
3064
|
+
! */
|
|
3065
|
+
INTERFACE
|
|
3066
|
+
SUBROUTINE MMG3D_SAVEVTUMESH(mesh,sol,filename,strlen0,retval)
|
|
3067
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
3068
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
3069
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
3070
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3071
|
+
END SUBROUTINE
|
|
3072
|
+
END INTERFACE
|
|
3073
|
+
! *
|
|
3074
|
+
! */
|
|
3075
|
+
|
|
3076
|
+
! LIBMMG3D_EXPORT int MMG3D_saveVtuMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
|
|
3077
|
+
|
|
3078
|
+
! /**
|
|
3079
|
+
! * \brief Save a mesh and multiple data fields in VTU format.
|
|
3080
|
+
! *
|
|
3081
|
+
! * \param mesh pointer to the mesh structure.
|
|
3082
|
+
! * \param sol pointer to the solution structure.
|
|
3083
|
+
! * \param filename name of file.
|
|
3084
|
+
! * \return 0 if failed, 1 otherwise.
|
|
3085
|
+
! *
|
|
3086
|
+
! * Write mesh and a list of data fields in vtu Vtk file format (.vtu extension).
|
|
3087
|
+
! *
|
|
3088
|
+
! * \remark Fortran interface:
|
|
3089
|
+
! */
|
|
3090
|
+
INTERFACE
|
|
3091
|
+
SUBROUTINE MMG3D_SAVEVTUMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)
|
|
3092
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
3093
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
3094
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
3095
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3096
|
+
END SUBROUTINE
|
|
3097
|
+
END INTERFACE
|
|
3098
|
+
! *
|
|
3099
|
+
! */
|
|
3100
|
+
|
|
3101
|
+
! LIBMMG3D_EXPORT int MMG3D_saveVtuMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
|
|
3102
|
+
|
|
3103
|
+
! /**
|
|
3104
|
+
! * \brief Save data in Tetgen's Triangle format.
|
|
3105
|
+
! *
|
|
3106
|
+
! * \param mesh pointer to the mesh structure.
|
|
3107
|
+
! * \param filename name of the readed file.
|
|
3108
|
+
! * \return 0 or -1 if fail, 1 otherwise.
|
|
3109
|
+
! *
|
|
3110
|
+
! * Save mesh data in Triangle (or equivalent to Tetgen in 3D) file format.
|
|
3111
|
+
! *
|
|
3112
|
+
! * \remark Fortran interface:
|
|
3113
|
+
! */
|
|
3114
|
+
INTERFACE
|
|
3115
|
+
SUBROUTINE MMG3D_SAVETETGENMESH(mesh,filename,strlen0,retval)
|
|
3116
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
|
|
3117
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
3118
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
3119
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3120
|
+
END SUBROUTINE
|
|
3121
|
+
END INTERFACE
|
|
3122
|
+
! *
|
|
3123
|
+
! */
|
|
3124
|
+
|
|
3125
|
+
! LIBMMG3D_EXPORT int MMG3D_saveTetgenMesh(MMG5_pMesh ,const char *);
|
|
3126
|
+
|
|
3127
|
+
! /**
|
|
3128
|
+
! * \brief Save mesh data in a file whose format depends on the filename extension.
|
|
3129
|
+
! *
|
|
3130
|
+
! * \param mesh pointer to the mesh structure.
|
|
3131
|
+
! * \param filename name of file.
|
|
3132
|
+
! * \return 0 if failed, 1 otherwise.
|
|
3133
|
+
! *
|
|
3134
|
+
! * \remark Fortran interface:
|
|
3135
|
+
! */
|
|
3136
|
+
INTERFACE
|
|
3137
|
+
SUBROUTINE MMG3D_SAVEGENERICMESH(mesh,sol,filename,strlen0,retval)
|
|
3138
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
3139
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
3140
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
3141
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3142
|
+
END SUBROUTINE
|
|
3143
|
+
END INTERFACE
|
|
3144
|
+
! *
|
|
3145
|
+
! */
|
|
3146
|
+
|
|
3147
|
+
! LIBMMG3D_EXPORT int MMG3D_saveGenericMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
|
|
3148
|
+
|
|
3149
|
+
! /**
|
|
3150
|
+
! * \brief Load a metric field (or other solution).
|
|
3151
|
+
! *
|
|
3152
|
+
! * \param mesh pointer to the mesh structure.
|
|
3153
|
+
! * \param met pointer to the sol structure.
|
|
3154
|
+
! * \param filename name of file.
|
|
3155
|
+
! *
|
|
3156
|
+
! * \return 0 if file is not found, -1 if fail for another reason (insufficient
|
|
3157
|
+
! * memory, file format...), 1 if successful.
|
|
3158
|
+
! *
|
|
3159
|
+
! * Load metric field. The solution file must contains only 1 solution: the
|
|
3160
|
+
! * metric
|
|
3161
|
+
! *
|
|
3162
|
+
! * \remark Fortran interface:
|
|
3163
|
+
! */
|
|
3164
|
+
INTERFACE
|
|
3165
|
+
SUBROUTINE MMG3D_LOADSOL(mesh,met,filename,strlen0,retval)
|
|
3166
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met
|
|
3167
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
3168
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
3169
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3170
|
+
END SUBROUTINE
|
|
3171
|
+
END INTERFACE
|
|
3172
|
+
! *
|
|
3173
|
+
! */
|
|
3174
|
+
|
|
3175
|
+
! LIBMMG3D_EXPORT int MMG3D_loadSol(MMG5_pMesh mesh,MMG5_pSol met, const char *filename);
|
|
3176
|
+
|
|
3177
|
+
! /**
|
|
3178
|
+
! * \brief Load one or more solutions in a solution file in medit file format.
|
|
3179
|
+
! *
|
|
3180
|
+
! * \param mesh pointer to the mesh structure.
|
|
3181
|
+
! * \param sol pointer to the solutions array
|
|
3182
|
+
! * \param filename name of file.
|
|
3183
|
+
! *
|
|
3184
|
+
! * \return 0 if file is not found, -1 if fail for another reason (insufficient
|
|
3185
|
+
! * memory, file format...), 1 if successful.
|
|
3186
|
+
! *
|
|
3187
|
+
! * \remark Fortran interface:
|
|
3188
|
+
! */
|
|
3189
|
+
INTERFACE
|
|
3190
|
+
SUBROUTINE MMG3D_LOADALLSOLS(mesh,sol,filename,strlen0,retval)
|
|
3191
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
3192
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
3193
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
3194
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3195
|
+
END SUBROUTINE
|
|
3196
|
+
END INTERFACE
|
|
3197
|
+
! *
|
|
3198
|
+
! */
|
|
3199
|
+
|
|
3200
|
+
! LIBMMG3D_EXPORT int MMG3D_loadAllSols(MMG5_pMesh mesh,MMG5_pSol *sol, const char* filename);
|
|
3201
|
+
|
|
3202
|
+
! /**
|
|
3203
|
+
! * \brief Write isotropic or anisotropic metric.
|
|
3204
|
+
! *
|
|
3205
|
+
! * \param mesh pointer to the mesh structure.
|
|
3206
|
+
! * \param met pointer to the sol structure.
|
|
3207
|
+
! * \param filename name of file.
|
|
3208
|
+
! * \return 0 if failed, 1 otherwise.
|
|
3209
|
+
! *
|
|
3210
|
+
! * \remark Fortran interface:
|
|
3211
|
+
! */
|
|
3212
|
+
INTERFACE
|
|
3213
|
+
SUBROUTINE MMG3D_SAVESOL(mesh,met,filename,strlen0,retval)
|
|
3214
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met
|
|
3215
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
3216
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
3217
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3218
|
+
END SUBROUTINE
|
|
3219
|
+
END INTERFACE
|
|
3220
|
+
! *
|
|
3221
|
+
! */
|
|
3222
|
+
|
|
3223
|
+
! LIBMMG3D_EXPORT int MMG3D_saveSol(MMG5_pMesh mesh,MMG5_pSol met, const char *filename);
|
|
3224
|
+
|
|
3225
|
+
! /**
|
|
3226
|
+
! * \brief Save 1 or more solutions in medit solution file format
|
|
3227
|
+
! *
|
|
3228
|
+
! * \param mesh pointer to the mesh structure.
|
|
3229
|
+
! * \param sol pointer to the solutions array
|
|
3230
|
+
! * \param filename name of the solution file.
|
|
3231
|
+
! * \return 0 or -1 if fail, 1 otherwise.
|
|
3232
|
+
! *
|
|
3233
|
+
! * \remark Fortran interface:
|
|
3234
|
+
! */
|
|
3235
|
+
INTERFACE
|
|
3236
|
+
SUBROUTINE MMG3D_SAVEALLSOLS(mesh,sol,filename,strlen0,retval)
|
|
3237
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
3238
|
+
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
3239
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
3240
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3241
|
+
END SUBROUTINE
|
|
3242
|
+
END INTERFACE
|
|
3243
|
+
! *
|
|
3244
|
+
! */
|
|
3245
|
+
|
|
3246
|
+
! LIBMMG3D_EXPORT int MMG3D_saveAllSols(MMG5_pMesh mesh,MMG5_pSol *sol ,const char *filename);
|
|
3247
|
+
|
|
3248
|
+
! /**
|
|
3249
|
+
! * \brief Deallocate an array of solution fields
|
|
3250
|
+
! *
|
|
3251
|
+
! * \param mesh pointer to the mesh structure.
|
|
3252
|
+
! * \param sol pointer to an array of solution structure (that stores solution fields).
|
|
3253
|
+
! * \return 1
|
|
3254
|
+
! *
|
|
3255
|
+
! * \remark Fortran interface:
|
|
3256
|
+
! */
|
|
3257
|
+
INTERFACE
|
|
3258
|
+
SUBROUTINE MMG3D_Free_allSols(mesh,sol,retval)
|
|
3259
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol
|
|
3260
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3261
|
+
END SUBROUTINE
|
|
3262
|
+
END INTERFACE
|
|
3263
|
+
! *
|
|
3264
|
+
! */
|
|
3265
|
+
|
|
3266
|
+
! LIBMMG3D_EXPORT int MMG3D_Free_allSols(MMG5_pMesh mesh,MMG5_pSol *sol);
|
|
3267
|
+
|
|
3268
|
+
! /* deallocations */
|
|
3269
|
+
! /**
|
|
3270
|
+
! * \brief Deallocations before return.
|
|
3271
|
+
! *
|
|
3272
|
+
! * \param starter dummy argument used to initialize the variadic argument
|
|
3273
|
+
! * list.
|
|
3274
|
+
! * \param ... variadic arguments that depend on the library function that you
|
|
3275
|
+
! * have call.
|
|
3276
|
+
! *
|
|
3277
|
+
! * For the MMG3D_mmg3dlib function, you need
|
|
3278
|
+
! * to call the \ref MMG3D_Init_mesh function with the following arguments :
|
|
3279
|
+
! * MMG3D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh,
|
|
3280
|
+
! * MMG5_ARG_ppMet,&your_metric,MMG5_ARG_end).
|
|
3281
|
+
! *
|
|
3282
|
+
! * For the MMG3D_mmg3dls function, you need
|
|
3283
|
+
! * to call the \ref MMG3D_Init_mesh function with the following arguments :
|
|
3284
|
+
! * MMG3D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppLs,
|
|
3285
|
+
! * &your_level_set,MMG5_ARG_end).
|
|
3286
|
+
! *
|
|
3287
|
+
! * For the MMG3D_mmg3dmov function, you must call
|
|
3288
|
+
! * : MMG3D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh,
|
|
3289
|
+
! * MMG5_ARG_ppMet,&empty_metric,MMG5_ARG_ppDisp, &your_displacement,
|
|
3290
|
+
! * MMG5_ARG_end).
|
|
3291
|
+
! *
|
|
3292
|
+
! * \return 1 if success, 0 if fail
|
|
3293
|
+
! *
|
|
3294
|
+
! * \remark we pass the structures by reference in order to have argument
|
|
3295
|
+
! * compatibility between the library call from a Fortran code and a C code.
|
|
3296
|
+
! *
|
|
3297
|
+
! * \remark no Fortran interface to allow variadic args.
|
|
3298
|
+
! *
|
|
3299
|
+
! */
|
|
3300
|
+
|
|
3301
|
+
! LIBMMG3D_EXPORT int MMG3D_Free_all(const int starter,...);
|
|
3302
|
+
|
|
3303
|
+
! /**
|
|
3304
|
+
! * \brief Structure deallocations before return.
|
|
3305
|
+
! *
|
|
3306
|
+
! * \param starter dummy argument used to initialize the variadic argument
|
|
3307
|
+
! * list.
|
|
3308
|
+
! * \param ... variadic arguments that depend on the library function that you
|
|
3309
|
+
! * have call.
|
|
3310
|
+
! *
|
|
3311
|
+
! * For the MMG3D_mmg3dlib function, you need
|
|
3312
|
+
! * to call the \ref MMG3D_Init_mesh function with the following arguments :
|
|
3313
|
+
! * MMG3D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh,
|
|
3314
|
+
! * MMG5_ARG_ppMet,&your_metric,MMG5_ARG_end).
|
|
3315
|
+
! *
|
|
3316
|
+
! * For the MMG3D_mmg3dls function, you need
|
|
3317
|
+
! * to call the \ref MMG3D_Init_mesh function with the following arguments :
|
|
3318
|
+
! * MMG3D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppLs,
|
|
3319
|
+
! * &your_level_set,MMG5_ARG_end).
|
|
3320
|
+
! *
|
|
3321
|
+
! * For the \ref MMG3D_mmg3dmov function, you must call
|
|
3322
|
+
! * : MMG3D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh,
|
|
3323
|
+
! * MMG5_ARG_ppMet,&empty_metric,MMG5_ARG_ppDisp, &your_displacement,
|
|
3324
|
+
! * MMG5_ARG_end).
|
|
3325
|
+
! *
|
|
3326
|
+
! * \return 0 if fail, 1 if success
|
|
3327
|
+
! *
|
|
3328
|
+
! * \remark we pass the structures by reference in order to have argument
|
|
3329
|
+
! * compatibility between the library call from a Fortran code and a C code.
|
|
3330
|
+
! *
|
|
3331
|
+
! * \remark No fortran interface to allow variadic arguments.
|
|
3332
|
+
! *
|
|
3333
|
+
! * \remark no Fortran interface to allow variadic args.
|
|
3334
|
+
! *
|
|
3335
|
+
! */
|
|
3336
|
+
|
|
3337
|
+
! LIBMMG3D_EXPORT int MMG3D_Free_structures(const int starter,...);
|
|
3338
|
+
|
|
3339
|
+
! /**
|
|
3340
|
+
! * \brief Structure deallocations before return.
|
|
3341
|
+
! *
|
|
3342
|
+
! * \param starter dummy argument used to initialize the variadic argument
|
|
3343
|
+
! * list.
|
|
3344
|
+
! * \param ... variadic arguments that depend on the library function that you
|
|
3345
|
+
! * have call.
|
|
3346
|
+
! *
|
|
3347
|
+
! * For the MMG3D_mmg3dlib function, you need
|
|
3348
|
+
! * to call the \ref MMG3D_Init_mesh function with the following arguments :
|
|
3349
|
+
! * MMG3D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh,
|
|
3350
|
+
! * MMG5_ARG_ppMet,&your_metric,MMG5_ARG_end).
|
|
3351
|
+
! *
|
|
3352
|
+
! * For the MMG3D_mmg3dls function, you need
|
|
3353
|
+
! * to call the \ref MMG3D_Init_mesh function with the following arguments :
|
|
3354
|
+
! * MMG3D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppLs,
|
|
3355
|
+
! * &your_level_set,MMG5_ARG_end).
|
|
3356
|
+
! *
|
|
3357
|
+
! * For the \ref MMG3D_mmg3dmov function, you must call
|
|
3358
|
+
! * : MMG3D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh,
|
|
3359
|
+
! * MMG5_ARG_ppMet,&empty_metric,MMG5_ARG_ppDisp, &your_displacement,
|
|
3360
|
+
! * MMG5_ARG_end).
|
|
3361
|
+
! *
|
|
3362
|
+
! * \return 0 if fail, 1 if success
|
|
3363
|
+
! *
|
|
3364
|
+
! * \remark we pass the structures by reference in order to have argument
|
|
3365
|
+
! * compatibility between the library call from a Fortran code and a C code.
|
|
3366
|
+
! *
|
|
3367
|
+
! * \remark No fortran interface to allow variadic arguments.
|
|
3368
|
+
! *
|
|
3369
|
+
! */
|
|
3370
|
+
|
|
3371
|
+
! LIBMMG3D_EXPORT int MMG3D_Free_names(const int starter,...);
|
|
3372
|
+
|
|
3373
|
+
! /* library */
|
|
3374
|
+
! /**
|
|
3375
|
+
! * \brief Main "program" for the mesh adaptation library.
|
|
3376
|
+
! *
|
|
3377
|
+
! * \param mesh pointer to the mesh structure.
|
|
3378
|
+
! * \param met pointer to the sol (metric) structure.
|
|
3379
|
+
! * \return \ref MMG5_SUCCESS if success, \ref MMG5_LOWFAILURE if fail but a
|
|
3380
|
+
! * conform mesh is saved or \ref MMG5_STRONGFAILURE if fail and we can't save
|
|
3381
|
+
! * the mesh.
|
|
3382
|
+
! *
|
|
3383
|
+
! * \remark Fortran interface:
|
|
3384
|
+
! */
|
|
3385
|
+
INTERFACE
|
|
3386
|
+
SUBROUTINE MMG3D_MMG3DLIB(mesh,met,retval)
|
|
3387
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met
|
|
3388
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3389
|
+
END SUBROUTINE
|
|
3390
|
+
END INTERFACE
|
|
3391
|
+
! *
|
|
3392
|
+
! */
|
|
3393
|
+
|
|
3394
|
+
! LIBMMG3D_EXPORT int MMG3D_mmg3dlib(MMG5_pMesh mesh, MMG5_pSol met );
|
|
3395
|
+
|
|
3396
|
+
! /**
|
|
3397
|
+
! * \brief Main "program" for the level-set discretization library.
|
|
3398
|
+
! *
|
|
3399
|
+
! * \param mesh pointer to the mesh structure.
|
|
3400
|
+
! * \param sol pointer to the sol (level-set) structure.
|
|
3401
|
+
! * \param met pointer to a sol structure (metric), optional.
|
|
3402
|
+
! * \return \ref MMG5_SUCCESS if success, \ref MMG5_LOWFAILURE if fail but a
|
|
3403
|
+
! * conform mesh is saved or \ref MMG5_STRONGFAILURE if fail and we can't save
|
|
3404
|
+
! * the mesh.
|
|
3405
|
+
! *
|
|
3406
|
+
! * Main program for the level-set discretization library. If a metric \a met is
|
|
3407
|
+
! * provided, use it to adapt the mesh.
|
|
3408
|
+
! *
|
|
3409
|
+
! * \remark Fortran interface:
|
|
3410
|
+
! */
|
|
3411
|
+
INTERFACE
|
|
3412
|
+
SUBROUTINE MMG3D_MMG3DLS(mesh,sol,met,retval)
|
|
3413
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
3414
|
+
MMG5_DATA_PTR_T :: met
|
|
3415
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3416
|
+
END SUBROUTINE
|
|
3417
|
+
END INTERFACE
|
|
3418
|
+
! *
|
|
3419
|
+
! */
|
|
3420
|
+
|
|
3421
|
+
! LIBMMG3D_EXPORT int MMG3D_mmg3dls(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pSol met );
|
|
3422
|
+
|
|
3423
|
+
! /**
|
|
3424
|
+
! * \brief Main program for the rigid-body movement library.
|
|
3425
|
+
! *
|
|
3426
|
+
! * \param mesh pointer to the mesh structure.
|
|
3427
|
+
! * \param met pointer to the sol (output metric) structure.
|
|
3428
|
+
! * \param disp pointer to a sol (displacement for the lagrangian motion
|
|
3429
|
+
! * mode) structure.
|
|
3430
|
+
! * \return \ref MMG5_SUCCESS if success, \ref MMG5_LOWFAILURE if fail but a
|
|
3431
|
+
! * conform mesh is saved or \ref MMG5_STRONGFAILURE if fail and we can't save
|
|
3432
|
+
! * the mesh.
|
|
3433
|
+
! *
|
|
3434
|
+
! * \remark Fortran interface:
|
|
3435
|
+
! */
|
|
3436
|
+
INTERFACE
|
|
3437
|
+
SUBROUTINE MMG3D_MMG3DMOV(mesh,met,disp,retval)
|
|
3438
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met,disp
|
|
3439
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3440
|
+
END SUBROUTINE
|
|
3441
|
+
END INTERFACE
|
|
3442
|
+
! *
|
|
3443
|
+
! */
|
|
3444
|
+
|
|
3445
|
+
! LIBMMG3D_EXPORT int MMG3D_mmg3dmov(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pSol disp );
|
|
3446
|
+
|
|
3447
|
+
! /** Tools for the library */
|
|
3448
|
+
! /**
|
|
3449
|
+
! * \brief Print the default parameters values.
|
|
3450
|
+
! *
|
|
3451
|
+
! * \param mesh pointer to the mesh structure.
|
|
3452
|
+
! * \return 0 if fail, 1 if success.
|
|
3453
|
+
! *
|
|
3454
|
+
! * \remark Fortran interface:
|
|
3455
|
+
! */
|
|
3456
|
+
INTERFACE
|
|
3457
|
+
SUBROUTINE MMG3D_DEFAULTVALUES(mesh,retval)
|
|
3458
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
|
|
3459
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3460
|
+
END SUBROUTINE
|
|
3461
|
+
END INTERFACE
|
|
3462
|
+
! *
|
|
3463
|
+
! */
|
|
3464
|
+
|
|
3465
|
+
! LIBMMG3D_EXPORT int MMG3D_defaultValues(MMG5_pMesh mesh);
|
|
3466
|
+
|
|
3467
|
+
! /**
|
|
3468
|
+
! * \brief Store command-line arguments.
|
|
3469
|
+
! *
|
|
3470
|
+
! * \param argc number of command line arguments.
|
|
3471
|
+
! * \param argv command line arguments.
|
|
3472
|
+
! * \param mesh pointer to the mesh structure.
|
|
3473
|
+
! * \param met pointer to a metric
|
|
3474
|
+
! * \param sol pointer to a level-set or displacement
|
|
3475
|
+
! * \return 1 if we want to run Mmg after, 0 if not or if fail.
|
|
3476
|
+
! *
|
|
3477
|
+
! * \remark no matching fortran function.
|
|
3478
|
+
! *
|
|
3479
|
+
! */
|
|
3480
|
+
|
|
3481
|
+
! LIBMMG3D_EXPORT int MMG3D_parsar(int argc,char *argv[],MMG5_pMesh mesh,MMG5_pSol met,MMG5_pSol sol);
|
|
3482
|
+
|
|
3483
|
+
! /**
|
|
3484
|
+
! * \brief Read a file containing Local parameters (.mmg3d extension)
|
|
3485
|
+
! *
|
|
3486
|
+
! * \param mesh pointer to the mesh structure.
|
|
3487
|
+
! * \param met pointer to the sol structure.
|
|
3488
|
+
! * \return 1.
|
|
3489
|
+
! *
|
|
3490
|
+
! * Read local parameters file. This file must have the same name as
|
|
3491
|
+
! * the mesh with the \a .mmg3d extension or must be named \a
|
|
3492
|
+
! * DEFAULT.mmg3d.
|
|
3493
|
+
! *
|
|
3494
|
+
! * \remark Fortran interface:
|
|
3495
|
+
! */
|
|
3496
|
+
INTERFACE
|
|
3497
|
+
SUBROUTINE MMG3D_PARSOP(mesh,met,retval)
|
|
3498
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met
|
|
3499
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3500
|
+
END SUBROUTINE
|
|
3501
|
+
END INTERFACE
|
|
3502
|
+
! *
|
|
3503
|
+
! */
|
|
3504
|
+
|
|
3505
|
+
! LIBMMG3D_EXPORT int MMG3D_parsop(MMG5_pMesh mesh,MMG5_pSol met);
|
|
3506
|
+
|
|
3507
|
+
! /**
|
|
3508
|
+
! * \brief Print help for mmg3d options.
|
|
3509
|
+
! *
|
|
3510
|
+
! * \param prog pointer to the program name.
|
|
3511
|
+
! * \param return 1 if success, 0 if fail.
|
|
3512
|
+
! *
|
|
3513
|
+
! * \remark Fortran interface:
|
|
3514
|
+
! */
|
|
3515
|
+
INTERFACE
|
|
3516
|
+
SUBROUTINE MMG3D_USAGE(prog,strlen0,retval)
|
|
3517
|
+
CHARACTER(LEN=*), INTENT(IN) :: prog
|
|
3518
|
+
INTEGER, INTENT(IN) :: strlen0
|
|
3519
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3520
|
+
END SUBROUTINE
|
|
3521
|
+
END INTERFACE
|
|
3522
|
+
! *
|
|
3523
|
+
! */
|
|
3524
|
+
|
|
3525
|
+
! LIBMMG3D_EXPORT int MMG3D_usage(char *prog);
|
|
3526
|
+
|
|
3527
|
+
! /**
|
|
3528
|
+
! * \brief Store the info structure in the mesh structure.
|
|
3529
|
+
! *
|
|
3530
|
+
! * \param mesh pointer to the mesh structure.
|
|
3531
|
+
! * \param info pointer to the info structure.
|
|
3532
|
+
! * \return 1.
|
|
3533
|
+
! *
|
|
3534
|
+
! * \remark Fortran interface:
|
|
3535
|
+
! */
|
|
3536
|
+
INTERFACE
|
|
3537
|
+
SUBROUTINE MMG3D_STOCKOPTIONS(mesh,info,retval)
|
|
3538
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,info
|
|
3539
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3540
|
+
END SUBROUTINE
|
|
3541
|
+
END INTERFACE
|
|
3542
|
+
! *
|
|
3543
|
+
! */
|
|
3544
|
+
|
|
3545
|
+
! LIBMMG3D_EXPORT int MMG3D_stockOptions(MMG5_pMesh mesh, MMG5_Info *info);
|
|
3546
|
+
|
|
3547
|
+
! /**
|
|
3548
|
+
! * \brief Recover the info structure stored in the mesh structure.
|
|
3549
|
+
! *
|
|
3550
|
+
! * \param mesh pointer to the mesh structure.
|
|
3551
|
+
! * \param info pointer to the info structure.
|
|
3552
|
+
! *
|
|
3553
|
+
! * \remark Fortran interface:
|
|
3554
|
+
! */
|
|
3555
|
+
INTERFACE
|
|
3556
|
+
SUBROUTINE MMG3D_DESTOCKOPTIONS(mesh,info)
|
|
3557
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,info
|
|
3558
|
+
END SUBROUTINE
|
|
3559
|
+
END INTERFACE
|
|
3560
|
+
! *
|
|
3561
|
+
! */
|
|
3562
|
+
|
|
3563
|
+
! LIBMMG3D_EXPORT void MMG3D_destockOptions(MMG5_pMesh mesh, MMG5_Info *info);
|
|
3564
|
+
|
|
3565
|
+
! /** Checks */
|
|
3566
|
+
! /**
|
|
3567
|
+
! * \brief Search invalid elements (in term of quality or edge length) in a mesh.
|
|
3568
|
+
! *
|
|
3569
|
+
! * \param mesh pointer to the mesh structure.
|
|
3570
|
+
! * \param met pointer to the sol structure (metric).
|
|
3571
|
+
! * \param sol pointer to the sol structure (ls or displacement).
|
|
3572
|
+
! * \param critmin minimum quality for elements.
|
|
3573
|
+
! * \param lmin minimum edge length.
|
|
3574
|
+
! * \param lmax maximum ede length.
|
|
3575
|
+
! * \param eltab array of invalid elements.
|
|
3576
|
+
! * \param metRidTyp Type of storage of ridges metrics: 0 for classic storage
|
|
3577
|
+
! * (before the MMG5_defsiz call), 1 for special storage (after this call).
|
|
3578
|
+
! *
|
|
3579
|
+
! * \remark Fortran interface:
|
|
3580
|
+
! */
|
|
3581
|
+
INTERFACE
|
|
3582
|
+
SUBROUTINE MMG3D_MMG3DCHECK(mesh,met,sol,critmin,lmin,lmax,eltab,&
|
|
3583
|
+
metridtyp,retval)
|
|
3584
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met,sol
|
|
3585
|
+
REAL(KIND=8), INTENT(IN) :: critmin,lmin,lmax
|
|
3586
|
+
INTEGER(MMG5F_INT),DIMENSION(*), INTENT(OUT) :: eltab
|
|
3587
|
+
INTEGER, INTENT(IN) :: metridtyp
|
|
3588
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3589
|
+
END SUBROUTINE
|
|
3590
|
+
END INTERFACE
|
|
3591
|
+
! *
|
|
3592
|
+
! */
|
|
3593
|
+
|
|
3594
|
+
! LIBMMG3D_EXPORT int MMG3D_mmg3dcheck(MMG5_pMesh mesh,MMG5_pSol met,MMG5_pSol sol,double critmin,
|
|
3595
|
+
! double lmin, double lmax, MMG5_int *eltab,int8_t metRidTyp);
|
|
3596
|
+
|
|
3597
|
+
! /**
|
|
3598
|
+
! * \brief List bad elements.
|
|
3599
|
+
! *
|
|
3600
|
+
! * \param mesh pointer to the mesh structure.
|
|
3601
|
+
! * \param met pointer to the sol structure.
|
|
3602
|
+
! * \param critmin minimum quality for elements.
|
|
3603
|
+
! * \param eltab pointer to the array of invalid elements.
|
|
3604
|
+
! * \param metRidTyp Type of storage of ridges metrics: 0 for classic storage
|
|
3605
|
+
! * (before the MMG5_defsiz call), 1 for special storage (after this call).
|
|
3606
|
+
! *
|
|
3607
|
+
! * Store elements which have worse quality than \a critmin in \a eltab,
|
|
3608
|
+
! * \a eltab is allocated and could contain \a mesh->ne elements.
|
|
3609
|
+
! *
|
|
3610
|
+
! * \remark Fortran interface:
|
|
3611
|
+
! */
|
|
3612
|
+
INTERFACE
|
|
3613
|
+
SUBROUTINE MMG3D_SEARCHQUA(mesh,met,critmin,eltab,metridtyp)
|
|
3614
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met
|
|
3615
|
+
REAL(KIND=8), INTENT(IN) :: critmin
|
|
3616
|
+
INTEGER(MMG5F_INT),DIMENSION(*), INTENT(OUT) :: eltab
|
|
3617
|
+
INTEGER, INTENT(IN) :: metridtyp
|
|
3618
|
+
END SUBROUTINE
|
|
3619
|
+
END INTERFACE
|
|
3620
|
+
! *
|
|
3621
|
+
! */
|
|
3622
|
+
|
|
3623
|
+
! LIBMMG3D_EXPORT void MMG3D_searchqua(MMG5_pMesh mesh, MMG5_pSol met, double critmin,
|
|
3624
|
+
! MMG5_int *eltab,int8_t metRidTyp);
|
|
3625
|
+
|
|
3626
|
+
! /**
|
|
3627
|
+
! * \brief List edges that are too short or too long.
|
|
3628
|
+
! *
|
|
3629
|
+
! * \param mesh pointer to the mesh structure.
|
|
3630
|
+
! * \param met pointer to the sol structure.
|
|
3631
|
+
! * \param lmin minimum edge length.
|
|
3632
|
+
! * \param lmax maximum ede length.
|
|
3633
|
+
! * \param eltab array of invalid elements.
|
|
3634
|
+
! * \param metRidTyp Type of storage of ridges metrics: 0 for classic storage
|
|
3635
|
+
! * (before the MMG5_defsiz call), 1 for special storage (after this call).
|
|
3636
|
+
! *
|
|
3637
|
+
! * \return 1 if success, 0 otherwise.
|
|
3638
|
+
! *
|
|
3639
|
+
! * Store in \a eltab elements which have edge lengths shorter than \a lmin
|
|
3640
|
+
! * or longer than \a lmax, \a eltab is allocated and could contain
|
|
3641
|
+
! * \a mesh->ne elements.
|
|
3642
|
+
! *
|
|
3643
|
+
! * \remark Fortran interface:
|
|
3644
|
+
! */
|
|
3645
|
+
INTERFACE
|
|
3646
|
+
SUBROUTINE MMG3D_SEARCHLEN(mesh,met,lmin,lmax,eltab,metridtyp,retval)
|
|
3647
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met
|
|
3648
|
+
REAL(KIND=8), INTENT(IN) :: lmin,lmax
|
|
3649
|
+
INTEGER(MMG5F_INT),DIMENSION(*), INTENT(OUT) :: eltab
|
|
3650
|
+
INTEGER, INTENT(IN) :: metridtyp
|
|
3651
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3652
|
+
END SUBROUTINE
|
|
3653
|
+
END INTERFACE
|
|
3654
|
+
! *
|
|
3655
|
+
! *
|
|
3656
|
+
! */
|
|
3657
|
+
|
|
3658
|
+
! LIBMMG3D_EXPORT int MMG3D_searchlen(MMG5_pMesh mesh, MMG5_pSol met, double lmin,
|
|
3659
|
+
! double lmax,MMG5_int *eltab,int8_t metRidTyp);
|
|
3660
|
+
|
|
3661
|
+
! /** Utils */
|
|
3662
|
+
! /**
|
|
3663
|
+
! * \brief Return adjacent elements of a tetrahedron.
|
|
3664
|
+
! *
|
|
3665
|
+
! * \param mesh pointer to the mesh structure.
|
|
3666
|
+
! * \param kel tetrahedron index.
|
|
3667
|
+
! * \param listet pointer to the array of the 4 tetra adjacent to \a kel.
|
|
3668
|
+
! * (the index is 0 if there is no adjacent)
|
|
3669
|
+
! * \return 1.
|
|
3670
|
+
! *
|
|
3671
|
+
! * Find the indices of the 4 adjacent elements of tetrahedron \a
|
|
3672
|
+
! * kel. \f$listet[i] = 0\f$ if the \f$i^{th}\f$ face has no adjacent element
|
|
3673
|
+
! * (so we are on a boundary face).
|
|
3674
|
+
! *
|
|
3675
|
+
! * \remark Fortran interface:
|
|
3676
|
+
! */
|
|
3677
|
+
INTERFACE
|
|
3678
|
+
SUBROUTINE MMG3D_GET_ADJATET(mesh,kel,listet,retval)
|
|
3679
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
|
|
3680
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: kel
|
|
3681
|
+
INTEGER(MMG5F_INT), DIMENSION(4), INTENT(OUT) :: listet
|
|
3682
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3683
|
+
END SUBROUTINE
|
|
3684
|
+
END INTERFACE
|
|
3685
|
+
! *
|
|
3686
|
+
! */
|
|
3687
|
+
|
|
3688
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_adjaTet(MMG5_pMesh mesh,MMG5_int kel, MMG5_int listet[4]);
|
|
3689
|
+
|
|
3690
|
+
! /**
|
|
3691
|
+
! * \brief Compute the length of an edge according to the size prescription.
|
|
3692
|
+
! *
|
|
3693
|
+
! * \param ca pointer to the coordinates of the first edge's extremity.
|
|
3694
|
+
! * \param cb pointer to the coordinates of the second edge's extremity.
|
|
3695
|
+
! * \param ma pointer to the metric associated to the first edge's
|
|
3696
|
+
! * extremity.
|
|
3697
|
+
! * \param mb pointer to the metric associated to the second edge's
|
|
3698
|
+
! * extremity.
|
|
3699
|
+
! * \return edge length.
|
|
3700
|
+
! *
|
|
3701
|
+
! * Compute the length of edge \f$[ca,cb]\f$ (with \a ca and \a cb
|
|
3702
|
+
! * coordinates of edge endpoints) according to the size
|
|
3703
|
+
! * prescription.
|
|
3704
|
+
! *
|
|
3705
|
+
! * \remark Fortran interface:
|
|
3706
|
+
! */
|
|
3707
|
+
INTERFACE
|
|
3708
|
+
SUBROUTINE MMG3D_LENEDGCOOR(ca,cb,sa,sb,retval)
|
|
3709
|
+
REAL(KIND=8), INTENT(IN) :: ca,cb,sa,sb
|
|
3710
|
+
REAL(KIND=8), INTENT(OUT) :: retval
|
|
3711
|
+
END SUBROUTINE
|
|
3712
|
+
END INTERFACE
|
|
3713
|
+
! *
|
|
3714
|
+
! */
|
|
3715
|
+
|
|
3716
|
+
! LIBMMG3D_EXPORT extern double (*MMG3D_lenedgCoor)(double *ca,double *cb,double *sa,double *sb);
|
|
3717
|
+
|
|
3718
|
+
! /**
|
|
3719
|
+
! * \brief Create array of adjacency.
|
|
3720
|
+
! *
|
|
3721
|
+
! * \param mesh pointer to the mesh structure.
|
|
3722
|
+
! * \param pack we pack the mesh at function begining if \f$pack=1\f$.
|
|
3723
|
+
! * \return 0 if failed, 1 otherwise.
|
|
3724
|
+
! *
|
|
3725
|
+
! * Create array of adjacency. Set pack variable to 0 for a compact
|
|
3726
|
+
! * mesh and to 1 for a mesh that need to be packed.
|
|
3727
|
+
! *
|
|
3728
|
+
! * \remark Fortran interface:
|
|
3729
|
+
! */
|
|
3730
|
+
INTERFACE
|
|
3731
|
+
SUBROUTINE MMG3D_HASHTETRA(mesh,pack,retval)
|
|
3732
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
|
|
3733
|
+
INTEGER, INTENT(IN) :: pack
|
|
3734
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3735
|
+
END SUBROUTINE
|
|
3736
|
+
END INTERFACE
|
|
3737
|
+
! *
|
|
3738
|
+
! */
|
|
3739
|
+
|
|
3740
|
+
! LIBMMG3D_EXPORT int MMG3D_hashTetra(MMG5_pMesh mesh, int pack);
|
|
3741
|
+
|
|
3742
|
+
! /**
|
|
3743
|
+
! * \brief Compute isotropic size map according to the mean of the length of the
|
|
3744
|
+
! * edges passing through a vertex.
|
|
3745
|
+
! *
|
|
3746
|
+
! * \param mesh pointer to the mesh structure
|
|
3747
|
+
! * \param met pointer to the sol structure
|
|
3748
|
+
! * \return 1 if success
|
|
3749
|
+
! *
|
|
3750
|
+
! * \remark Fortran interface:
|
|
3751
|
+
! */
|
|
3752
|
+
INTERFACE
|
|
3753
|
+
SUBROUTINE MMG3D_DOSOL(mesh,met,retval)
|
|
3754
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met
|
|
3755
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3756
|
+
END SUBROUTINE
|
|
3757
|
+
END INTERFACE
|
|
3758
|
+
! *
|
|
3759
|
+
! */
|
|
3760
|
+
|
|
3761
|
+
! LIBMMG3D_EXPORT extern int (*MMG3D_doSol)(MMG5_pMesh mesh,MMG5_pSol met);
|
|
3762
|
+
|
|
3763
|
+
! /**
|
|
3764
|
+
! * \brief Compute a constant size map according to the hsiz, hmin and hmax parameters.
|
|
3765
|
+
! *
|
|
3766
|
+
! * \param mesh pointer to the mesh structure
|
|
3767
|
+
! * \param met pointer to the sol structure
|
|
3768
|
+
! * \return 1 if success
|
|
3769
|
+
! *
|
|
3770
|
+
! * This function computes a constant size map according to mesh->info.hsiz,
|
|
3771
|
+
! * mesh->info.hmin and mesh->info.hmax. It updates these 3 values if not
|
|
3772
|
+
! * compatible.
|
|
3773
|
+
! *
|
|
3774
|
+
! * \remark Fortran interface:
|
|
3775
|
+
! */
|
|
3776
|
+
INTERFACE
|
|
3777
|
+
SUBROUTINE MMG3D_SET_CONSTANTSIZE(mesh,met,retval)
|
|
3778
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met
|
|
3779
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3780
|
+
END SUBROUTINE
|
|
3781
|
+
END INTERFACE
|
|
3782
|
+
! *
|
|
3783
|
+
! */
|
|
3784
|
+
|
|
3785
|
+
! LIBMMG3D_EXPORT int MMG3D_Set_constantSize(MMG5_pMesh mesh,MMG5_pSol met);
|
|
3786
|
+
|
|
3787
|
+
! /**
|
|
3788
|
+
! * \brief Swap the m22 and m23 values of the metric.
|
|
3789
|
+
! *
|
|
3790
|
+
! * \param mesh pointer to the mesh structure
|
|
3791
|
+
! * \param met pointer to the sol structure
|
|
3792
|
+
! * \return 1 if success
|
|
3793
|
+
! *
|
|
3794
|
+
! * Switch the m22 and m23 value of the metric to allow to pass from the API
|
|
3795
|
+
! * storage to the medit storage.
|
|
3796
|
+
! *
|
|
3797
|
+
! * \remark Fortran interface:
|
|
3798
|
+
! */
|
|
3799
|
+
INTERFACE
|
|
3800
|
+
SUBROUTINE MMG3D_SWITCH_METRICSTORAGE(mesh,met,retval)
|
|
3801
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met
|
|
3802
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3803
|
+
END SUBROUTINE
|
|
3804
|
+
END INTERFACE
|
|
3805
|
+
! *
|
|
3806
|
+
! */
|
|
3807
|
+
|
|
3808
|
+
! LIBMMG3D_EXPORT int MMG3D_switch_metricStorage(MMG5_pMesh mesh, MMG5_pSol met);
|
|
3809
|
+
|
|
3810
|
+
|
|
3811
|
+
! /** To associate function pointers without calling MMG3D_mmg3dlib */
|
|
3812
|
+
! /**
|
|
3813
|
+
! * \brief Set function pointers for caltet, lenedg, lenedgCoor defsiz, gradsiz...
|
|
3814
|
+
! * depending if the metric that was read is anisotropic or isotropic
|
|
3815
|
+
! *
|
|
3816
|
+
! * \param mesh pointer to the mesh structure (unused).
|
|
3817
|
+
! * \param met pointer to the sol structure (unused).
|
|
3818
|
+
! *
|
|
3819
|
+
! * \remark Fortran interface:
|
|
3820
|
+
! */
|
|
3821
|
+
INTERFACE
|
|
3822
|
+
SUBROUTINE MMG3D_SETFUNC(mesh,met)
|
|
3823
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met
|
|
3824
|
+
END SUBROUTINE
|
|
3825
|
+
END INTERFACE
|
|
3826
|
+
! *
|
|
3827
|
+
! */
|
|
3828
|
+
|
|
3829
|
+
! LIBMMG3D_EXPORT void MMG3D_setfunc(MMG5_pMesh mesh,MMG5_pSol met);
|
|
3830
|
+
|
|
3831
|
+
! /**
|
|
3832
|
+
! * \brief Get the number of non-boundary triangles.
|
|
3833
|
+
! *
|
|
3834
|
+
! * \param mesh pointer to the mesh structure.
|
|
3835
|
+
! * \param nb_tria pointer to the number of non-boundary triangles.
|
|
3836
|
+
! * \return 0 if failed, 1 otherwise.
|
|
3837
|
+
! *
|
|
3838
|
+
! * Get the number of non-boundary triangles (for DG methods for example).
|
|
3839
|
+
! * A triangle is
|
|
3840
|
+
! * boundary if it is located at the interface of 2 domains with different
|
|
3841
|
+
! * references or if it belongs to one tetra only.
|
|
3842
|
+
! * Append these triangles to the list of triangles.
|
|
3843
|
+
! *
|
|
3844
|
+
! * \warning reallocates the triangle array and appends the internal triangles.
|
|
3845
|
+
! * This may modify the behaviour of other functions.
|
|
3846
|
+
! *
|
|
3847
|
+
! * \remark Fortran interface:
|
|
3848
|
+
! */
|
|
3849
|
+
INTERFACE
|
|
3850
|
+
SUBROUTINE MMG3D_GET_NUMBEROFNONBDYTRIANGLESS(mesh,nb_tria,retval)
|
|
3851
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
3852
|
+
INTEGER(MMG5F_INT), INTENT(OUT) :: nb_tria
|
|
3853
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3854
|
+
END SUBROUTINE
|
|
3855
|
+
END INTERFACE
|
|
3856
|
+
! *
|
|
3857
|
+
! */
|
|
3858
|
+
|
|
3859
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_numberOfNonBdyTriangles(MMG5_pMesh mesh, MMG5_int* nb_tria);
|
|
3860
|
+
|
|
3861
|
+
! /**
|
|
3862
|
+
! * \brief Get vertices and reference of a non-boundary triangle.
|
|
3863
|
+
! *
|
|
3864
|
+
! * \param mesh pointer to the mesh structure.
|
|
3865
|
+
! * \param v0 pointer to the firts vertex of the triangle
|
|
3866
|
+
! * \param v1 pointer to the second vertex of the triangle.
|
|
3867
|
+
! * \param v2 pointer to the third vertex of the triangle.
|
|
3868
|
+
! * \param ref pointer to the triangle reference.
|
|
3869
|
+
! * \param idx index of the non-boundary triangle to get (between 1 and nb_tria)
|
|
3870
|
+
! * \return 0 if failed, 1 otherwise.
|
|
3871
|
+
! *
|
|
3872
|
+
! * Get vertices and reference \a ref of the idx^th non-boundary
|
|
3873
|
+
! * triangle (for DG methods for example). A tria is boundary if it is located at
|
|
3874
|
+
! * the interface of 2 domains with different references or if it belongs to one
|
|
3875
|
+
! * tetra only.
|
|
3876
|
+
! *
|
|
3877
|
+
! * \remark Fortran interface:
|
|
3878
|
+
! */
|
|
3879
|
+
INTERFACE
|
|
3880
|
+
SUBROUTINE MMG3D_GET_NONBDYTRIANGLE(mesh,v0,v1,v2,ref,idx,retval)
|
|
3881
|
+
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
|
|
3882
|
+
INTEGER(MMG5F_INT), INTENT(OUT):: v0,v1,v2
|
|
3883
|
+
INTEGER(MMG5F_INT) :: ref
|
|
3884
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: idx
|
|
3885
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3886
|
+
END SUBROUTINE
|
|
3887
|
+
END INTERFACE
|
|
3888
|
+
! *
|
|
3889
|
+
! */
|
|
3890
|
+
|
|
3891
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_nonBdyTriangle(MMG5_pMesh mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2, MMG5_int* ref, MMG5_int idx);
|
|
3892
|
+
|
|
3893
|
+
! /**
|
|
3894
|
+
! * \brief Get a tetrahedron given one of its triangles and the index by which it
|
|
3895
|
+
! * refers to this triangle (DEPRECATED).
|
|
3896
|
+
! *
|
|
3897
|
+
! * \param mesh pointer to the mesh structure.
|
|
3898
|
+
! * \param ktri index of the boundary triangle.
|
|
3899
|
+
! * \param ktet pointer to an integer that will contains the tetra index.
|
|
3900
|
+
! * \param iface pointer to the triangle in \a ktet.
|
|
3901
|
+
! *
|
|
3902
|
+
! * \return 0 if fail, 1 otherwise
|
|
3903
|
+
! *
|
|
3904
|
+
! * Fill \a ktet by the index of a tetrahedron to which belongs a boundary triangle
|
|
3905
|
+
! * and \a iface by the index of the triangle in the tetra.
|
|
3906
|
+
! *
|
|
3907
|
+
! * \warning will be deprecated in release 5.5
|
|
3908
|
+
! *
|
|
3909
|
+
! * \remark Fortran interface:
|
|
3910
|
+
! */
|
|
3911
|
+
INTERFACE
|
|
3912
|
+
SUBROUTINE MMG3D_GET_TETFROMTRIA(mesh,ktri,ktet,iface,retval)
|
|
3913
|
+
MMG5_DATA_PTR_T, INTENT(IN) :: mesh
|
|
3914
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: ktri
|
|
3915
|
+
INTEGER(MMG5F_INT), INTENT(OUT) :: ktet
|
|
3916
|
+
INTEGER, INTENT(OUT) :: iface
|
|
3917
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3918
|
+
END SUBROUTINE
|
|
3919
|
+
END INTERFACE
|
|
3920
|
+
! *
|
|
3921
|
+
! */
|
|
3922
|
+
|
|
3923
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_tetFromTria(MMG5_pMesh mesh, MMG5_int ktri, MMG5_int *ktet, int *iface);
|
|
3924
|
+
|
|
3925
|
+
! /**
|
|
3926
|
+
! * \brief Get two tetrahedra given a triangle and face indices.
|
|
3927
|
+
! *
|
|
3928
|
+
! * \param mesh pointer to the mesh structure.
|
|
3929
|
+
! * \param ktri index of the boundary triangle.
|
|
3930
|
+
! * \param ktet array of size 2 that will contain the indices of the tetra
|
|
3931
|
+
! * (filled by the function).
|
|
3932
|
+
! * \param iface pointer to an array of size 2 that will contains the indices
|
|
3933
|
+
! * of the faces of the tetras \a ktet[i] that corresponds to the boundary tria
|
|
3934
|
+
! * \a ktri.
|
|
3935
|
+
! *
|
|
3936
|
+
! * \return 0 if fail, 1 otherwise
|
|
3937
|
+
! *
|
|
3938
|
+
! * Fill \a ktet by the indices of the tetrahedra that have a boundary triangle
|
|
3939
|
+
! * and \a iface by the indices of the faces of the tetras that correspond to the
|
|
3940
|
+
! * triangle. Fill ktet[1] and iface[1] by 0 if the triangle belongs to 1 tetrahedron only.
|
|
3941
|
+
! *
|
|
3942
|
+
! * \remark Fortran interface:
|
|
3943
|
+
! */
|
|
3944
|
+
INTERFACE
|
|
3945
|
+
SUBROUTINE MMG3D_GET_TETSFROMTRIA(mesh,ktri,ktet,iface,retval)
|
|
3946
|
+
MMG5_DATA_PTR_T, INTENT(IN) :: mesh
|
|
3947
|
+
INTEGER(MMG5F_INT), INTENT(IN) :: ktri
|
|
3948
|
+
INTEGER(MMG5F_INT), DIMENSION(2), INTENT(OUT):: ktet
|
|
3949
|
+
INTEGER, DIMENSION(2), INTENT(OUT) :: iface
|
|
3950
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3951
|
+
END SUBROUTINE
|
|
3952
|
+
END INTERFACE
|
|
3953
|
+
! *
|
|
3954
|
+
! */
|
|
3955
|
+
|
|
3956
|
+
! LIBMMG3D_EXPORT int MMG3D_Get_tetsFromTria(MMG5_pMesh mesh, MMG5_int ktri, MMG5_int ktet[2], int iface[2]);
|
|
3957
|
+
|
|
3958
|
+
! /**
|
|
3959
|
+
! * \brief Compute the real eigenvalues and eigenvectors of a symmetric matrix
|
|
3960
|
+
! *
|
|
3961
|
+
! * \param m upper part of a symmetric matrix diagonalizable in |R
|
|
3962
|
+
! * \param lambda array of the metric eigenvalues
|
|
3963
|
+
! * \param vp array of the metric eigenvectors
|
|
3964
|
+
! *
|
|
3965
|
+
! * \return the order of the eigenvalues
|
|
3966
|
+
! *
|
|
3967
|
+
! * Compute the real eigenvalues and eigenvectors of a symmetric matrix m whose
|
|
3968
|
+
! * upper part is provided (m11, m12, m13, m22, m23, m33 in this order).
|
|
3969
|
+
! *
|
|
3970
|
+
! * lambda[0] is the eigenvalue associated to the eigenvector ( v[0][0], v[0,1], v[0,2] )
|
|
3971
|
+
! * in C and to the eigenvector v(1,:) in fortran
|
|
3972
|
+
! *
|
|
3973
|
+
! * lambda[1] is the eigenvalue associated to the eigenvector ( v[1][0], v[1,1], v[1,2] )
|
|
3974
|
+
! * in C and to the eigenvector v(2,:) in fortran
|
|
3975
|
+
! *
|
|
3976
|
+
! * lambda[2] is the eigenvalue associated to the eigenvector ( v[2][0], v[2,1], v[2,2] )
|
|
3977
|
+
! * in C and to the eigenvector v(3,:) in fortran
|
|
3978
|
+
! *
|
|
3979
|
+
! * \remark Fortran interface:
|
|
3980
|
+
! */
|
|
3981
|
+
INTERFACE
|
|
3982
|
+
SUBROUTINE MMG3D_COMPUTE_EIGENV(m,lambda,vp,retval)
|
|
3983
|
+
REAL(KIND=8), INTENT(IN) :: m(*)
|
|
3984
|
+
REAL(KIND=8), INTENT(OUT) :: lambda(*),vp(*)
|
|
3985
|
+
INTEGER, INTENT(OUT) :: retval
|
|
3986
|
+
END SUBROUTINE
|
|
3987
|
+
END INTERFACE
|
|
3988
|
+
! *
|
|
3989
|
+
! */
|
|
3990
|
+
|
|
3991
|
+
! LIBMMG3D_EXPORT int MMG3D_Compute_eigenv(double m[6],double lambda[3],double vp[3][3]);
|
|
3992
|
+
|
|
3993
|
+
! /**
|
|
3994
|
+
! * \brief Clean data (triangles and edges) linked to isosurface.
|
|
3995
|
+
! *
|
|
3996
|
+
! * \param mesh pointer to the mesh structure
|
|
3997
|
+
! *
|
|
3998
|
+
! * \return 1 if successful, 0 otherwise.
|
|
3999
|
+
! *
|
|
4000
|
+
! * \remark Fortran interface:
|
|
4001
|
+
! */
|
|
4002
|
+
INTERFACE
|
|
4003
|
+
SUBROUTINE MMG3D_CLEAN_ISOSURF(mesh,retval)
|
|
4004
|
+
MMG5_DATA_PTR_T, INTENT(IN) :: mesh
|
|
4005
|
+
INTEGER, INTENT(OUT) :: retval
|
|
4006
|
+
END SUBROUTINE
|
|
4007
|
+
END INTERFACE
|
|
4008
|
+
! *
|
|
4009
|
+
! */
|
|
4010
|
+
|
|
4011
|
+
! LIBMMG3D_EXPORT int MMG3D_Clean_isoSurf(MMG5_pMesh mesh);
|
|
4012
|
+
|
|
4013
|
+
! /**
|
|
4014
|
+
! * \brief Free the solution structure of a given mesh.
|
|
4015
|
+
! *
|
|
4016
|
+
! * \param mesh pointer to the mesh structure
|
|
4017
|
+
! * \param sol pointer to the solution structure
|
|
4018
|
+
! *
|
|
4019
|
+
! * \remark Fortran interface:
|
|
4020
|
+
! */
|
|
4021
|
+
INTERFACE
|
|
4022
|
+
SUBROUTINE MMG3D_FREE_SOLUTIONS(mesh,sol)
|
|
4023
|
+
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
|
|
4024
|
+
END SUBROUTINE
|
|
4025
|
+
END INTERFACE
|
|
4026
|
+
! *
|
|
4027
|
+
! */
|
|
4028
|
+
|
|
4029
|
+
! LIBMMG3D_EXPORT void MMG3D_Free_solutions(MMG5_pMesh mesh,MMG5_pSol sol);
|
|
4030
|
+
|
|
4031
|
+
|
|
4032
|
+
! /**
|
|
4033
|
+
! * Set common pointer functions between mmgs and mmg3d to the matching mmg3d
|
|
4034
|
+
! * functions.
|
|
4035
|
+
! */
|
|
4036
|
+
! LIBMMG3D_EXPORT void MMG3D_Set_commonFunc(void);
|
|
4037
|
+
! #ifdef __cplusplus
|
|
4038
|
+
! }
|
|
4039
|
+
! #endif
|
|
4040
|
+
|
|
4041
|
+
#endif
|