MED fichier
medsupportcf.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 From Fortran call of following C functions :
27 - MEDsupportMeshCr
28 - MEDnSupportMesh
29 - MEDsupportMeshInfoByName
30 - MEDsupportMeshInfo
31 - MEDsupportMeshnAxis
32 - MEDsupportMeshnAxisByName
33 */
34 
35 #define nmsmfcre F77_FUNC(msmfcre,MSMFCRE)
36 #define nmsmfnsm F77_FUNC(msmfnsm,MSMFNSM)
37 #define nmsmfsmi F77_FUNC(msmfsmi,MSMFSMI)
38 #define nmsmfsni F77_FUNC(msmfsni,MSMFSMI)
39 #define nmsmfnax F77_FUNC(msmfnax,MSMFNAX)
40 #define nmsmfnan F77_FUNC(msmfnan,MSMFNAN)
41 
42 #ifdef PPRO_NT
43 med_int
44 MSMFCRE(med_int *fid, char *mname, unsigned int bidon, med_int *mnamelen,
45  med_int * sdim, med_int * mdim,
46  char *desc, unsigned int bidon2, med_int *desclen,
47  med_int *atype, char *aname, unsigned int bidon3, med_int *anamelen,
48  char *aunit, unsigned int bidon4, med_int* aunitlen)
49 #else
50 med_int
51 nmsmfcre(med_int *fid, char *mname, med_int *mnamelen,
52  med_int * sdim, med_int * mdim,
53  char *desc, med_int *desclen,
54  med_int *atype, char *aname, med_int *anamelen,
55  char *aunit, med_int* aunitlen)
56 #endif
57 {
58  med_int _ret;
59  char *_fn1, *_fn2, *_fn4, *_fn5;
60  med_axis_type _axistype = (med_axis_type) *atype;
61 
62  _fn1 = _MED2cstring((char *) mname, (int) *mnamelen);
63  if (!_fn1)
64  return(-1);
65  _fn2 = _MED2cstring((char *) desc, (int) *desclen);
66  if (!_fn2)
67  return(-1);
68  _fn4 = _MED1cstring((char *) aname, (int) *anamelen, (int) *sdim*MED_SNAME_SIZE);
69  if (!_fn4)
70  return(-1);
71  _fn5 = _MED1cstring((char *) aunit, (int) *aunitlen, (int) *sdim*MED_SNAME_SIZE);
72  if (!_fn5)
73  return(-1);
74 
75  _ret = (med_int) MEDsupportMeshCr((const med_idt) *fid,
76  _fn1,
77  (const med_int) *sdim,
78  (const med_int) *mdim,
79  _fn2,
80  _axistype,
81  _fn4,
82  _fn5);
83 
84  _MEDcstringFree(_fn1);
85  _MEDcstringFree(_fn2);
86  _MEDcstringFree(_fn4);
87  _MEDcstringFree(_fn5);
88 
89  return _ret;
90 }
91 
92 
93 #ifdef PPRO_NT
94 med_int
95 MSMFNSM(med_int *fid)
96 #else
97 med_int
99 #endif
100 {
101  med_int _ret;
102 
103  _ret = (med_int) MEDnSupportMesh((const med_idt) *fid);
104 
105  return(_ret);
106 }
107 
108 
109 
110 #ifdef PPRO_NT
111 med_int
112 MSMFSNI(med_int *fid, char*mname, unsigned int bidon, med_int *mnamelen,
113  med_int * sdim, med_int * mdim,
114  char *desc, unsigned int bidon2,
115  med_int *atype,
116  char *aname, unsigned int bidon4,
117  char *aunit, unsigned int bidon5)
118 #else
119 med_int
120 nmsmfsni(med_int *fid, char* mname, med_int *mnamelen,
121  med_int * sdim, med_int * mdim,
122  char *desc,med_int *atype, char *aname, char *aunit)
123 #endif
124 {
125  med_int _ret;
126  char *_fn1;
127  char _fs2[MED_COMMENT_SIZE+1]="";
128  char *_fs4, *_fs5;
129  med_axis_type _atype;
130  med_int _sdim;
131 
132  _fn1 = _MED2cstring((char *) mname, (int) *mnamelen);
133  if (!_fn1)
134  return(-1);
135 
136  _sdim = MEDsupportMeshnAxisByName((const med_idt)*fid, _fn1);
137  if (_sdim < 0)
138  return (-1);
139 
140  _fs4 = (char *) malloc(sizeof(char)*MED_SNAME_SIZE*(_sdim)+1);*_fs4='\0';
141  _fs5 = (char *) malloc(sizeof(char)*MED_SNAME_SIZE*(_sdim)+1);*_fs5='\0';
142 
143  if (!(_fs4&&_fs5))
144  return (-1);
145 
146  _ret = (med_int) MEDsupportMeshInfoByName((const med_idt)*fid,
147  _fn1,
148  (med_int *) sdim,
149  (med_int *) mdim,
150  _fs2,
151  &_atype,
152  _fs4,
153  _fs5);
154 
155 
156  *atype = (med_int) _atype;
157 
158  _MEDc2fString(_fs2,desc,MED_COMMENT_SIZE);
159  _MEDc2fString(_fs4,aname,MED_SNAME_SIZE*(*sdim));
160  _MEDc2fString(_fs5,aunit,MED_SNAME_SIZE*(*sdim));
161 
162  _MEDcstringFree(_fn1);
163  free(_fs4);
164  free(_fs5);
165 
166  return _ret;
167 }
168 
169 
170 #ifdef PPRO_NT
171 med_int
172 MSMFSMI(med_int *fid, med_int *it, char*mname, unsigned int bidon,
173  med_int * sdim, med_int * mdim,
174  char *desc, unsigned int bidon2,
175  med_int *atype,
176  char *aname, unsigned int bidon4,
177  char *aunit, unsigned int bidon5)
178 #else
179 med_int
180 nmsmfsmi(med_int *fid, med_int *it, char* mname,
181  med_int * sdim, med_int * mdim,
182  char *desc,med_int *atype, char *aname, char *aunit)
183 #endif
184 {
185  med_int _ret;
186  char _fs1[MED_NAME_SIZE+1]="";
187  char _fs2[MED_COMMENT_SIZE+1]="";
188  char *_fs4, *_fs5;
189  med_axis_type _atype;
190  med_int _sdim;
191 
192  _sdim = MEDsupportMeshnAxis((const med_idt)*fid, (med_int) *it);
193  if (_sdim < 0)
194  return (-1);
195 
196  _fs4 = (char *) malloc(sizeof(char)*MED_SNAME_SIZE*(_sdim)+1);*_fs4='\0';
197  _fs5 = (char *) malloc(sizeof(char)*MED_SNAME_SIZE*(_sdim)+1);*_fs5='\0';
198 
199  if (!(_fs4&&_fs5))
200  return (-1);
201 
202  _ret = (med_int) MEDsupportMeshInfo((const med_idt)*fid,
203  (med_int) *it,
204  _fs1,
205  (med_int *) sdim,
206  (med_int *) mdim,
207  _fs2,
208  &_atype,
209  _fs4,
210  _fs5);
211 
212 
213  *atype = (med_int) _atype;
214 
215  _MEDc2fString(_fs1,mname,MED_NAME_SIZE);
216  _MEDc2fString(_fs2,desc,MED_COMMENT_SIZE);
217  _MEDc2fString(_fs4,aname,MED_SNAME_SIZE*(*sdim));
218  _MEDc2fString(_fs5,aunit,MED_SNAME_SIZE*(*sdim));
219 
220  free(_fs4);
221  free(_fs5);
222 
223  return _ret;
224 }
225 
226 
227 
228 #ifdef PPRO_NT
229 med_int
230 MSMFNAN(med_int *fid, char *mname, unsigned int bidon, med_int *mnamelen)
231 #else
232 med_int
233 nmsmfnan(med_int *fid, char *mname, med_int *mnamelen)
234 #endif
235 {
236  med_int _ret;
237  char *_fn1;
238 
239  _fn1 = _MED2cstring((char *) mname, (int) *mnamelen);
240  if (!_fn1)
241  return(-1);
242 
243  _ret = (med_int) MEDsupportMeshnAxisByName((const med_idt) *fid, (const char*) _fn1);
244 
245  _MEDcstringFree(_fn1);
246 
247  return(_ret);
248 }
249 
250 
251 
252 #ifdef PPRO_NT
253 med_int
254 MSMFNAX(med_int *fid, med_int *it)
255 #else
256 med_int
258 #endif
259 {
260  med_int _ret;
261 
262  _ret = (med_int) MEDsupportMeshnAxis((const med_idt) *fid, (const med_int) *it);
263 
264  return(_ret);
265 }
MEDC_EXPORT med_err _MEDcstringFree(char *chaine)
MEDC_EXPORT med_err MEDsupportMeshInfo(const med_idt fid, const int meshit, char *const supportmeshname, med_int *const spacedim, med_int *const meshdim, char *const description, med_axis_type *const axistype, char *const axisname, char *const axisunit)
Cette routine permet de lire les informations relatives à un maillage support dans un fichier...
MEDC_EXPORT med_int MEDsupportMeshnAxisByName(const med_idt fid, const char *const meshname)
Cette routine permet de lire dans un maillage support le nombre d'axes du repère des coordonnées des ...
#define nmsmfsni
Definition: medsupportcf.c:38
#define nmsmfnan
Definition: medsupportcf.c:40
MEDC_EXPORT med_err MEDsupportMeshInfoByName(const med_idt fid, const char *const supportmeshname, med_int *const spacedim, med_int *const meshdim, char *const description, med_axis_type *const axistype, char *const axisname, char *const axisunit)
Cette routine permet de lire les informations relatives à un maillage support en précisant son nom...
#define nmsmfsmi
Definition: medsupportcf.c:37
#define nmsmfnsm
Definition: medsupportcf.c:36
#define nmsmfnax
Definition: medsupportcf.c:39
int med_int
Definition: med.h:316
med_axis_type
Definition: med.h:238
MEDC_EXPORT char * _MED1cstring(char *chaine, int longueur_reelle, int longueur_fixee)
Definition: MED1cstring.c:37
MEDC_EXPORT med_int MEDnSupportMesh(const med_idt fid)
Cette routine permet de lire le nombre de maillages support dans un fichier.
#define MED_COMMENT_SIZE
Definition: med.h:72
#define nmsmfcre
Definition: medsupportcf.c:35
MEDC_EXPORT med_err MEDsupportMeshCr(const med_idt fid, const char *const supportmeshname, const med_int spacedim, const med_int meshdim, const char *const description, const med_axis_type axistype, const char *const axisname, const char *const axisunit)
Cette routine permet de créer un maillage support.
MEDC_EXPORT med_err _MEDc2fString(const char *const chainec, char *const chainef, med_int longueur_buffer77)
hid_t med_idt
Definition: med.h:309
#define MED_SNAME_SIZE
Definition: med.h:75
#define MED_NAME_SIZE
Definition: med.h:74
MEDC_EXPORT char * _MED2cstring(char *chaine, int longueur)
Definition: MED2cstring.c:35
MEDC_EXPORT med_int MEDsupportMeshnAxis(const med_idt fid, const int meshit)
Cette routine permet de lire dans un maillage support le nombre d'axes du repère des coordonnées des ...