MED fichier
medequivalencecf.c
Aller à la documentation de ce fichier.
1 /* This file is part of MED.
2  *
3  * COPYRIGHT (C) 1999 - 2016 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 "med_outils.h"
22 #include <string.h>
23 #include <stdlib.h>
24 
25 
26 
27 /*
28 From Fortran call of following C functions :
29 - MEDequivalenceCr
30 - MEDequivalenceCorrespondenceWr
31 - MEDnEquivalence
32 - MEDequivalenceInfo
33 - MEDequivalenceCorrespondenceSize
34 - MEDequivalenceCorrespondenceSizeInfo
35 - MEDequivalenceCorrespondenceRd
36 - MEDequivalenceComputingStepInfo
37 */
38 
39 #define nmeqfcre F77_FUNC(meqfcre,MEQFCRE)
40 #define nmeqfcow F77_FUNC(meqfcow,MEQFCOW)
41 #define nmeqfneq F77_FUNC(meqfneq,MEQFNEQ)
42 #define nmeqfeqi F77_FUNC(meqfeqi,MEQFEQI)
43 #define nmeqfcsz F77_FUNC(meqfcsz,MEQFCSZ)
44 #define nmeqfszi F77_FUNC(meqfszi,MEQFSZI)
45 #define nmeqfcsi F77_FUNC(meqfcsi,MEQFCSI)
46 #define nmeqfcor F77_FUNC(meqfcor,MEQFCOR)
47 
48 
49 #ifdef PPRO_NT
50 med_int
51 MEQFCRE(med_int *fid, char *maa, unsigned int bidon1, med_int *lon1,
52  char *eq, unsigned int bidon2, med_int *lon2, char *desc,
53  unsigned int bidon3, med_int *lon3)
54 #else
55 med_int
56  nmeqfcre(med_int *fid, char *maa, med_int *lon1, char *eq, med_int *lon2,
57  char *desc, med_int *lon3)
58 #endif
59 {
60  med_int _ret;
61  char *_fn1, *_fn2, *_fn3;
62 
63  _fn1 = _MED2cstring(maa, (int) * lon1);
64  _fn2 = _MED2cstring(eq, (int) * lon2);
65  _fn3 = _MED1cstring(desc, (int) * lon3,MED_COMMENT_SIZE);
66 
67  if (!_fn1 || !_fn2 || !_fn3)
68  return(-1);
69 
70  _ret = (med_int) MEDequivalenceCr((med_idt) *fid,
71  _fn1,
72  _fn2,
73  _fn3);
74 
75  _MEDcstringFree(_fn1);
76  _MEDcstringFree(_fn2);
77  _MEDcstringFree(_fn3);
78 
79  return(_ret);
80 }
81 
82 #ifdef PPRO_NT
83 med_int
84 MEQFCOW(med_int *fid, char *maa, unsigned int bidon1, med_int *lon1,
85  char *eq, unsigned int bidon2, med_int *lon2,
86  med_int *numdt, med_int *numit,med_int *typ_ent,med_int *typ_geo,
87  med_int *n, med_int *corr)
88 #else
89 med_int
90 nmeqfcow(med_int *fid, char *maa, med_int *lon1,
91  char *eq, med_int *lon2,
92  med_int *numdt, med_int *numit,
93  med_int *typ_ent,med_int *typ_geo,
94  med_int *n, med_int *corr)
95 #endif
96 {
97  med_int _ret;
98  char *_fn1, *_fn2;
99  med_entity_type _entype = (med_entity_type) *typ_ent;
100  med_geometry_type _geotype = (med_geometry_type) *typ_geo;
101 
102  _fn1 = _MED2cstring(maa, (int) * lon1);
103  _fn2 = _MED2cstring(eq, (int) * lon2);
104 
105  if (!_fn1 || !_fn2)
106  return(-1);
107 
109  _fn1,
110  _fn2,
111  (med_int) *numdt,
112  (med_int) *numit,
113  _entype,
114  _geotype,
115  (med_int) *n,
116  (med_int *) corr);
117 
118  _MEDcstringFree(_fn1);
119  _MEDcstringFree(_fn2);
120 
121  return(_ret);
122 }
123 
124 
125 
126 #ifdef PPRO_NT
127 med_int
128 MEQFNEQ(med_int *fid, char *maa, unsigned int bidon, med_int *lon1)
129 #else
130 med_int
131 nmeqfneq(med_int *fid, char *maa,med_int *lon1)
132 #endif
133 {
134  med_int _ret;
135  char * _fn1;
136 
137  _fn1 = _MED2cstring(maa, (int) * lon1);
138 
139  if (!_fn1)
140  return(-1);
141 
142  _ret = (med_int) MEDnEquivalence((med_idt) *fid,
143  _fn1);
144 
145  _MEDcstringFree(_fn1);
146 
147  return(_ret);
148 }
149 
150 
151 
152 
153 #ifdef PPRO_NT
154 med_int
155 MEQFEQI(med_int *fid, char *maa, unsigned int bidon1, med_int *lon1,
156  med_int *ind, char *eq, unsigned int bidon2,
157  char *des,unsigned int bidon3, med_int *nstep, med_int *ncstcor)
158 #else
159 med_int
160 nmeqfeqi(med_int *fid, char *maa,med_int *lon1,med_int *ind, char *eq,
161  char *des, med_int *nstep, med_int *ncstcor)
162 #endif
163 {
164  med_int _ret;
165  char *_fn1;
166  char _fs1[MED_COMMENT_SIZE+1]="";
167  char _fs2[MED_NAME_SIZE+1]="";
168 
169  _fn1 = _MED2cstring(maa, (int) * lon1);
170  if (! _fn1)
171  return(-1);
172 
173  _ret = (med_int) MEDequivalenceInfo((med_idt) *fid,
174  _fn1,
175  (int) *ind,
176  _fs2,
177  _fs1,
178  (med_int *) nstep,
179  (med_int *) ncstcor);
180 
181  _MEDc2fString(_fs2,eq,MED_NAME_SIZE);
183 
184  _MEDcstringFree(_fn1);
185 
186  return(_ret);
187 }
188 
189 
190 
191 #ifdef PPRO_NT
192 med_int
193 MEQFCSZ(med_int *fid, char *maa, unsigned int bidon1, med_int *lon1,
194  char *eq, unsigned int bidon2, med_int *lon2,
195  med_int *numdt, med_int *numit,
196  med_int *typ_ent, med_int *typ_geo)
197 #else
198 med_int
199 nmeqfcsz(med_int *fid, char *maa, med_int *lon1,
200  char *eq, med_int *lon2,
201  med_int *numdt, med_int *numit,
202  med_int *typ_ent, med_int *typ_geo)
203 #endif
204 {
205  med_int _ret;
206  char *_fn1, *_fn2;
207  med_entity_type _entype = (med_entity_type) *typ_ent;
208  med_geometry_type _geotype = (med_geometry_type) *typ_geo;
209  med_int _n;
210 
211  _fn1 = _MED2cstring(maa, (int) * lon1);
212  _fn2 = _MED2cstring(eq, (int) * lon2);
213 
214  if (!_fn1 || !_fn2)
215  return(-1);
216 
218  _fn1,
219  _fn2,
220  (med_int) *numdt,
221  (med_int) *numit,
222  _entype,
223  _geotype,
224  &_n);
225 
226 
227  _MEDcstringFree(_fn1);
228  _MEDcstringFree(_fn2);
229 
230  if (_ret == 0)
231  _ret = _n;
232 
233  return(_ret);
234 }
235 
236 
237 
238 #ifdef PPRO_NT
239 med_int
240 MEQFSZI(med_int *fid, char *maa, unsigned int bidon1, med_int *lon1,
241  char *eq, unsigned int bidon2, med_int *lon2,
242  med_int *numdt, med_int *numit, med_int *it,
243  med_int *typ_ent, med_int *typ_geo, med_int *n)
244 #else
245 med_int
246 nmeqfszi(med_int *fid, char *maa, med_int *lon1,
247  char *eq, med_int *lon2,
248  med_int *numdt, med_int *numit,med_int *it,
249  med_int *typ_ent, med_int *typ_geo, med_int *n)
250 #endif
251 {
252  med_int _ret;
253  char *_fn1, *_fn2;
254  med_entity_type _entype = (med_entity_type) *typ_ent;
255  med_geometry_type _geotype = (med_geometry_type) *typ_geo;
256 
257  _fn1 = _MED2cstring(maa, (int) * lon1);
258  _fn2 = _MED2cstring(eq, (int) * lon2);
259 
260  if (!_fn1 || !_fn2)
261  return(-1);
262 
264  (char *)_fn1,
265  (char *)_fn2,
266  (med_int) *numdt,
267  (med_int) *numit,
268  (med_int) *it,
269  &_entype,
270  &_geotype,
271  (med_int *) n);
272 
273  *typ_ent = (med_int) _entype;
274  *typ_geo = (med_int) _geotype;
275 
276  _MEDcstringFree(_fn1);
277  _MEDcstringFree(_fn2);
278 
279  return(_ret);
280 }
281 
282 
283 
284 #ifdef PPRO_NT
285 med_int
286 MEQFCOR(med_int *fid, char *maa, unsigned int bidon1, med_int *lon1,
287  char *eq, unsigned int bidon2, med_int *lon2,
288  med_int *numdt, med_int *numit,med_int *typ_ent,med_int *typ_geo,
289  med_int *corr)
290 #else
291 med_int
292 nmeqfcor(med_int *fid, char *maa, med_int *lon1,
293  char *eq, med_int *lon2,
294  med_int *numdt, med_int *numit,
295  med_int *typ_ent,med_int *typ_geo,
296  med_int *corr)
297 #endif
298 {
299  med_int _ret;
300  char *_fn1, *_fn2;
301  med_entity_type _entype = (med_entity_type) *typ_ent;
302  med_geometry_type _geotype = (med_geometry_type) *typ_geo;
303 
304  _fn1 = _MED2cstring(maa, (int) * lon1);
305  _fn2 = _MED2cstring(eq, (int) * lon2);
306 
307  if (!_fn1 || !_fn2)
308  return(-1);
309 
311  _fn1,
312  _fn2,
313  (med_int) *numdt,
314  (med_int) *numit,
315  _entype,
316  _geotype,
317  (med_int *) corr);
318 
319  _MEDcstringFree(_fn1);
320  _MEDcstringFree(_fn2);
321 
322  return(_ret);
323 }
324 
325 
326 #ifdef PPRO_NT
327 med_int
328 MEQFCSI(med_int *fid, char *maa, unsigned int bidon1, med_int *lon1,
329  med_int *ind, char *eq, unsigned int bidon2, med_int *lon2,
330  med_int *csit, med_int *numdt, med_int *numit, med_int *ncor)
331 #else
332 med_int
333 nmeqfcsi(med_int *fid, char *maa, med_int *lon1,
334  med_int *ind, char *eq, med_int *lon2,
335  med_int *csit, med_int *numdt, med_int *numit,
336  med_int *ncor)
337 #endif
338 {
339  med_int _ret;
340  char *_fn1;
341  char *_fn2;
342 
343  _fn1 = _MED2cstring(maa, (int) * lon1);
344  if (! _fn1)
345  return(-1);
346 
347  _fn2 = _MED2cstring(eq, (int) * lon2);
348  if (! _fn2)
349  return(-1);
350 
351 
353  _fn1,
354  _fn2,
355  (int) *ind,
356  (med_int *) numdt,
357  (med_int *) numit,
358  (med_int *) ncor);
359 
360  _MEDcstringFree(_fn1);
361  _MEDcstringFree(_fn2);
362 
363  return(_ret);
364 }
#define nmeqfcre
MEDC_EXPORT med_err _MEDcstringFree(char *chaine)
#define nmeqfszi
#define nmeqfcow
MEDC_EXPORT med_err MEDequivalenceInfo(const med_idt fid, const char *const meshname, const int equivit, char *const equivname, char *const equivdescription, med_int *const nstep, med_int *const nocstpncorrespondence)
Cette routine permet lire les informations d'une équivalence portant sur les entités d'un maillage...
MEDC_EXPORT med_err MEDequivalenceCorrespondenceRd(const med_idt fid, const char *const meshname, const char *const equivname, const med_int numdt, const med_int numit, const med_entity_type entitype, const med_geometry_type geotype, med_int *const correspondence)
Cette routine permet de lire un tableau de correspondances entre les entités d'un maillage dans une é...
#define nmeqfcsi
med_entity_type
Definition: med.h:136
#define nmeqfneq
int med_int
Definition: med.h:316
MEDC_EXPORT med_int MEDnEquivalence(const med_idt fid, const char *const meshname)
Cette routine permet de lire le nombre d'équivalence dans un fichier.
MEDC_EXPORT char * _MED1cstring(char *chaine, int longueur_reelle, int longueur_fixee)
Definition: MED1cstring.c:37
#define nmeqfcor
MEDC_EXPORT med_err MEDequivalenceCr(const med_idt fid, const char *const meshname, const char *const equivname, const char *const description)
Cette routine permet la création d'une équivalence portant sur les entités d'un maillage.
MEDC_EXPORT med_err MEDequivalenceCorrespondenceWr(const med_idt fid, const char *const meshname, const char *const equivname, const med_int numdt, const med_int numit, const med_entity_type entitype, const med_geometry_type geotype, const med_int nentity, const med_int *const correspondence)
Cette routine permet d'écrire un tableau de correspondances entre les entités d'un maillage dans une ...
#define nmeqfcsz
#define MED_COMMENT_SIZE
Definition: med.h:72
MEDC_EXPORT med_err _MEDc2fString(const char *const chainec, char *const chainef, med_int longueur_buffer77)
MEDC_EXPORT med_err MEDequivalenceCorrespondenceSize(const med_idt fid, const char *const meshname, const char *const equivname, const med_int numdt, const med_int numit, const med_entity_type entitype, const med_geometry_type geotype, med_int *const nentity)
Cette routine permet de lire le nombre de correspondances dans une équivalence pour une séquence de c...
#define nmeqfeqi
hid_t med_idt
Definition: med.h:309
#define MED_NAME_SIZE
Definition: med.h:74
MEDC_EXPORT char * _MED2cstring(char *chaine, int longueur)
Definition: MED2cstring.c:35
int med_geometry_type
Definition: med.h:179
MEDC_EXPORT med_err MEDequivalenceComputingStepInfo(const med_idt fid, const char *const meshname, const char *const equivname, const int csit, med_int *const numdt, med_int *const numit, med_int *const ncorrespondence)
Cette routine permet de lire les informations relatives à une équivalence pour une séquence de calcul...
MEDC_EXPORT med_err MEDequivalenceCorrespondenceSizeInfo(const med_idt fid, const char *const meshname, const char *const equivname, const med_int numdt, const med_int numit, const int corit, med_entity_type *const entitype, med_geometry_type *const geotype, med_int *const nentity)
Cette routine permet de lire les informations relatives à un tableau de correspondances dans une équi...