MED fichier
MEDiterators.c
Aller à la documentation de ce fichier.
1/* This file is part of MED.
2 *
3 * COPYRIGHT (C) 1999 - 2020 EDF R&D, CEA/DEN
4 * MED is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * MED is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public License
15 * along with MED. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18
19#include <med.h>
20#include <med_config.h>
21#include <string.h>
22
23/*L'itération sur les */
24
35
37 "MED_UNDEF_ENTITY_TYPE",
38 "MED_CELL",
39 "MED_DESCENDING_FACE",
40 "MED_DESCENDING_EDGE",
41 "MED_NODE",
42 "MED_NODE_ELEMENT",
43 "MED_STRUCT_ELEMENT",
44 "MED_UNDEF_ENTITY_TYPE"
45};
46
47
48/* MED_N_CELL_FIXED_GEO ne prend pas en compte (MED_NODE,MED_NO_GEOTYPE)
49 sinon il faudrait ajouter un MED_NO_GEOTYPE supplémentaire avant POINT1
50 mais les NOEUDS ne sont pas des mailles et le MED_N_NODE_FIXED_GEO ==1 n'est
51 pas comptabilisé dans MED_N_CELL_FIXED_GEO.
52 Pour le codage interne Nbits itératif des types géométrique de MED_ALL_ENTITY_TYPE ,
53 il faut commencer à _it==0 contrairement aux autres type d'entités.
54*/
83
85 "MED_NO_GEOTYPE",
86 "MED_POINT1",
87 "MED_SEG2",
88 "MED_SEG3",
89 "MED_SEG4",
90 "MED_TRIA3",
91 "MED_QUAD4",
92 "MED_TRIA6",
93 "MED_TRIA7",
94 "MED_QUAD8",
95 "MED_QUAD9",
96 "MED_TETRA4",
97 "MED_PYRA5",
98 "MED_PENTA6",
99 "MED_HEXA8",
100 "MED_TETRA10",
101 "MED_OCTA12",
102 "MED_PYRA13",
103 "MED_PENTA15",
104 "MED_PENTA18",
105 "MED_HEXA20",
106 "MED_HEXA27",
107 "MED_POLYGON",
108 "MED_POLYGON2",
109 "MED_POLYHEDRON",
110 "MED_NO_GEOTYPE"
111};
112
113
126
128 "MED_NO_GEOTYPE",
129 "MED_TRIA3",
130 "MED_QUAD4",
131 "MED_TRIA6",
132 "MED_TRIA7",
133 "MED_QUAD8",
134 "MED_QUAD9",
135 "MED_POLYGON",
136 "MED_POLYGON2",
137 "MED_NO_GEOTYPE"
138};
139
147
149 "MED_NO_GEOTYPE",
150 "MED_SEG2",
151 "MED_SEG3",
152 "MED_SEG4",
153 "MED_NO_GEOTYPE"
154};
155
161
163 "MED_NO_GEOTYPE",
164 "MED_NO_GEOTYPE",
165 "MED_NO_GEOTYPE"
166};
167
168
169/* A renommer en MED_GET_GEOMETRY_TYPE_FROM_ENTITY_TYPE */
170/* cf. define dans med.h.in */
172 MED_NULL,
177 MED_GET_CELL_GEOMETRY_TYPE, /*Les éléments aux noeuds ont les mêmes types géométriques que les CELL*/
178 MED_NULL, /*pas de type géométrique prédéfini (statique) pour les éléments de structure */
180};
181
183 0,
188 MED_N_CELL_FIXED_GEO, /*Les éléments aux noeuds ont les mêmes types géométriques que les CELL*/
189 0, /*pas de type géométrique prédéfini (statique) pour les éléments de structure */
190 0
191};
192
193
194
195
197 switch( entitytype ) {
198 case MED_UNDEF_ENTITY_TYPE : return 0; break;
199 case MED_CELL : return 1; break;
200 case MED_DESCENDING_FACE : return 2; break;
201 case MED_DESCENDING_EDGE : return 3; break;
202 case MED_NODE : return 4; break;
203 case MED_NODE_ELEMENT : return 5; break;
204 case MED_STRUCT_ELEMENT : return 6; break;
205 /* case MED_UNDEF_ENTITY_TYPE : return 7; break; */
206 }
207};
208
209
211 switch( geotype ) {
212 case MED_NO_GEOTYPE : return 0; break;
213 case MED_POINT1 : return 1; break;
214 case MED_SEG2 : return 2; break;
215 case MED_SEG3 : return 3; break;
216 case MED_SEG4 : return 4; break;
217 case MED_TRIA3 : return 5; break;
218 case MED_QUAD4 : return 6; break;
219 case MED_TRIA6 : return 7; break;
220 case MED_TRIA7 : return 8; break;
221 case MED_QUAD8 : return 9; break;
222 case MED_QUAD9 : return 10; break;
223 case MED_TETRA4 : return 11; break;
224 case MED_PYRA5 : return 12; break;
225 case MED_PENTA6 : return 13; break;
226 case MED_HEXA8 : return 14; break;
227 case MED_TETRA10 : return 15; break;
228 case MED_OCTA12 : return 16; break;
229 case MED_PYRA13 : return 17; break;
230 case MED_PENTA15 : return 18; break;
231 case MED_PENTA18 : return 19; break;
232 case MED_HEXA20 : return 20; break;
233 case MED_HEXA27 : return 21; break;
234 case MED_POLYGON : return 22; break;
235 case MED_POLYGON2 : return 23; break;
236 case MED_POLYHEDRON : return 24; break;
237 /* case MED_NO_GEOTYPE : return 25; break; */
238 }
239};
240
241
243 switch( geotype ) {
244 case MED_NO_GEOTYPE : return 0; break;
245 case MED_TRIA3 : return 1; break;
246 case MED_QUAD4 : return 2; break;
247 case MED_TRIA6 : return 3; break;
248 case MED_TRIA7 : return 4; break;
249 case MED_QUAD8 : return 5; break;
250 case MED_QUAD9 : return 6; break;
251 case MED_POLYGON : return 7; break;
252 case MED_POLYGON2 : return 8; break;
253 /* case MED_NO_GEOTYPE : return 9; break; */
254 }
255};
256
258 switch( geotype ) {
259 case MED_NO_GEOTYPE : return 0; break;
260 case MED_SEG2 : return 1; break;
261 case MED_SEG3 : return 2; break;
262 case MED_SEG4 : return 3; break;
263 }
264};
265
267 switch( geotype ) {
268 case MED_NO_GEOTYPE : return 1; break;
269 }
270};
271
273 switch( entitytype ) {
274 case MED_UNDEF_ENTITY_TYPE : return 0; break;
275 case MED_CELL : return MEDgetCellGeometryTypeIt(geotype); break;
276 case MED_DESCENDING_FACE : return MEDgetFaceGeometryTypeIt(geotype); break;
277 case MED_DESCENDING_EDGE : return MEDgetEdgeGeometryTypeIt(geotype); break;
278 case MED_NODE : return MEDgetNodeGeometryTypeIt(geotype); break;
279 case MED_NODE_ELEMENT : return MEDgetCellGeometryTypeIt(geotype); break;
280 case MED_STRUCT_ELEMENT : return geotype%MED_STRUCT_GEO_INTERNAL ; break;
281 }
282};
283
284const char * const MEDgetEntityTypeName(med_entity_type entitytype) {
285 switch( entitytype ) {
286 case MED_UNDEF_ENTITY_TYPE : return "MED_UNDEF_ENTITY_TYPE"; break;
287 case MED_CELL : return "MED_CELL" ; break;
288 case MED_DESCENDING_FACE : return "MED_DESCENDING_FACE" ; break;
289 case MED_DESCENDING_EDGE : return "MED_DESCENDING_EDGE" ; break;
290 case MED_NODE : return "MED_NODE" ; break;
291 case MED_NODE_ELEMENT : return "MED_NODE_ELEMENT" ; break;
292 case MED_STRUCT_ELEMENT : return "MED_STRUCT_ELEMENT" ; break;
293 }
294}
295
296const char * const MEDgetGeometryTypeName(med_geometry_type geotype) {
297 switch( geotype ) {
298 case MED_NO_GEOTYPE : return "MED_NO_GEOTYPE"; break;
299 case MED_POINT1 : return "MED_POINT1" ; break;
300 case MED_SEG2 : return "MED_SEG2" ; break;
301 case MED_SEG3 : return "MED_SEG3" ; break;
302 case MED_SEG4 : return "MED_SEG4" ; break;
303 case MED_TRIA3 : return "MED_TRIA3" ; break;
304 case MED_QUAD4 : return "MED_QUAD4" ; break;
305 case MED_TRIA6 : return "MED_TRIA6" ; break;
306 case MED_TRIA7 : return "MED_TRIA7" ; break;
307 case MED_QUAD8 : return "MED_QUAD8" ; break;
308 case MED_QUAD9 : return "MED_QUAD9" ; break;
309 case MED_TETRA4 : return "MED_TETRA4" ; break;
310 case MED_PYRA5 : return "MED_PYRA5" ; break;
311 case MED_PENTA6 : return "MED_PENTA6" ; break;
312 case MED_HEXA8 : return "MED_HEXA8" ; break;
313 case MED_TETRA10 : return "MED_TETRA10" ; break;
314 case MED_OCTA12 : return "MED_OCTA12" ; break;
315 case MED_PYRA13 : return "MED_PYRA13" ; break;
316 case MED_PENTA15 : return "MED_PENTA15" ; break;
317 case MED_PENTA18 : return "MED_PENTA18" ; break;
318 case MED_HEXA20 : return "MED_HEXA20" ; break;
319 case MED_HEXA27 : return "MED_HEXA27" ; break;
320 case MED_POLYGON : return "MED_POLYGON" ; break;
321 case MED_POLYGON2 : return "MED_POLYGON2" ; break;
322 case MED_POLYHEDRON : return "MED_POLYHEDRON"; break;
323 default :
324 return "MED_UNKNOWN_GEOTYPE";
325 break;
326 }
327};
const char *const MEDgetGeometryTypeName(med_geometry_type geotype)
const med_geometry_type *const MED_GET_CELL_GEOMETRY_TYPE_FROM_ENTITY_TYPE[MED_N_ENTITY_TYPES+2]
const int MED_GET_N_FIXED_GEO_FOR_ENTITY_TYPE_IT[MED_N_ENTITY_TYPES+2]
int MEDgetNodeGeometryTypeIt(med_geometry_type geotype)
int MEDgetFaceGeometryTypeIt(med_geometry_type geotype)
med_geometry_type MED_GET_CELL_GEOMETRY_TYPE[MED_N_CELL_FIXED_GEO+2]
int MEDgetCellGeometryTypeIt(med_geometry_type geotype)
int MEDgetEntityGeometryTypeIt(med_entity_type entitytype, med_geometry_type geotype)
const char *const MEDgetEntityTypeName(med_entity_type entitytype)
const char * MED_GET_NODE_GEOMETRY_TYPENAME[MED_N_NODE_FIXED_GEO+2]
med_geometry_type MED_GET_EDGE_GEOMETRY_TYPE[MED_N_EDGE_FIXED_GEO+2]
int MEDgetEdgeGeometryTypeIt(med_geometry_type geotype)
med_geometry_type MED_GET_NODE_GEOMETRY_TYPE[MED_N_NODE_FIXED_GEO+2]
med_entity_type MED_GET_ENTITY_TYPE[MED_N_ENTITY_TYPES+2]
const char *const MED_GET_FACE_GEOMETRY_TYPENAME[MED_N_FACE_FIXED_GEO+2]
int MEDgetEntityTypeIt(med_entity_type entitytype)
const char * MED_GET_EDGE_GEOMETRY_TYPENAME[MED_N_EDGE_FIXED_GEO+2]
const char *const MED_GET_ENTITY_TYPENAME[MED_N_ENTITY_TYPES+2]
const char *const MED_GET_CELL_GEOMETRY_TYPENAME[MED_N_CELL_FIXED_GEO+2]
med_geometry_type MED_GET_FACE_GEOMETRY_TYPE[MED_N_FACE_FIXED_GEO+2]
#define MED_TETRA10
#define MED_PENTA15
#define MED_POLYGON2
#define MED_POLYGON
#define MED_NO_GEOTYPE
#define MED_N_NODE_FIXED_GEO
#define MED_N_ENTITY_TYPES
#define MED_N_FACE_FIXED_GEO
#define MED_PENTA18
#define MED_N_EDGE_FIXED_GEO
#define MED_N_CELL_FIXED_GEO
#define MED_STRUCT_GEO_INTERNAL
#define MED_POLYHEDRON