# intercf.c

Aller à la documentation de ce fichier.

    00001 /*  This file is part of MED.
    00002  *
    00003  *  COPYRIGHT (C) 1999 - 2011  EDF R&D, CEA/DEN
    00004  *  MED is free software: you can redistribute it and/or modify
    00005  *  it under the terms of the GNU Lesser General Public License as published by
    00006  *  the Free Software Foundation, either version 3 of the License, or
    00007  *  (at your option) any later version.
    00008  *
    00009  *  MED is distributed in the hope that it will be useful,
    00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
    00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00012  *  GNU Lesser General Public License for more details.
    00013  *
    00014  *  You should have received a copy of the GNU Lesser General Public License
    00015  *  along with MED.  If not, see <http://www.gnu.org/licenses/>.
    00016  */
    00017
    00018
    00019 #include <med.h>
    00020 #include "med_config.h"
    00021 #include "med_outils.h"
    00022 #include <stdlib.h>
    00023 #include <string.h>
    00024
    00025 #define nedfnent F77_FUNC(edfnent,EDFNENT)
    00026 #define nedfnoel F77_FUNC(edfnoel,EDFNOEL)
    00027 #define nedfnoee F77_FUNC(edfnoee,EDFNOEE)
    00028 #define nedfelee F77_FUNC(edfelee,EDFELEE)
    00029 #define nedfelel F77_FUNC(edfelel,EDFELEL)
    00030 #define nedfg2fc F77_FUNC(edfg2fc,EDFG2FC)
    00031
    00032
    00033 #ifdef PPRO_NT
    00034 med_int
    00035 __stdcall EDFNENT(med_int *fid,char *maa, unsigned int bidon1,
    00036                   med_int *lon1, med_int *typ_ent,
    00037                   med_int *typ_con)
    00038 #else
    00039 med_int
    00040 nedfnent(med_int *fid,char *maa, med_int *lon1, med_int *typ_ent,
    00041          med_int *typ_con)
    00042 #endif
    00043 {
    00044   char *fn1;
    00045   med_int ret;
    00046
    00047   fn1 = _MED2cstring((char *)maa,(int) *lon1);
    00048
    00049   if (! fn1)
    00050     return -1;
    00051
    00052   ret = (med_int) MEDnEntites((med_idt)*fid, (char*)fn1,
    00053                               (med_entite_maillage) *typ_ent,
    00054                               (med_connectivite) *typ_con);
    00055
    00056   _MEDcstringFree(fn1);
    00057
    00058   return (ret);
    00059
    00060 }
    00061
    00062 #ifdef PPRO_NT
    00063 med_int
    00064 __stdcall EDFNOEL(med_int *fid,char *maa,unsigned int bidon1,
    00065                   med_int *lon1, med_int *mdim, med_float *coo,
    00066                   med_int *modcoo,
    00067                   med_int *rep, char *nomcoo, unsigned int bidon2,
    00068                   char *unicoo, unsigned int bidon3,
    00069                   char *nom, unsigned int bidon4,
    00070                   med_int *inom,
    00071                   med_int *num, med_int *inum, med_int *fam, med_int *nnoe)
    00072 #else
    00073 med_int
    00074 nedfnoel(med_int *fid,char *maa,med_int *lon1,med_int *mdim,med_float *coo,
    00075          med_int *modcoo,
    00076          med_int *rep,char *nomcoo,char *unicoo,char *nom,med_int *inom,
    00077          med_int *num,med_int *inum,med_int *fam,med_int *nnoe)
    00078 #endif
    00079 {
    00080   med_int ret;
    00081   char *fn1;
    00082   char *fs1,*fs2,*fs3;
    00083   med_booleen _inom=MED_FAUX,_inum=MED_FAUX;
    00084
    00085   fn1 = _MED2cstring((char *)maa,(int) *lon1);
    00086   fs1 = (char *) malloc(sizeof(char)*MED_TAILLE_PNOM*(*mdim)+1);
    00087   fs2 = (char *) malloc(sizeof(char)*MED_TAILLE_PNOM*(*mdim)+1);
    00088   fs3 = (char *) malloc(sizeof(char)*MED_TAILLE_PNOM*(*nnoe)+1);
    00089
    00090   if (!(fn1&&fs1&&fs2&&fs3))
    00091      return -1;
    00092
    00093   ret = (med_int) MEDnoeudsLire((med_idt)*fid,(char*)fn1,(med_int)*mdim,
    00094                                 (med_float *)coo,(med_mode_switch)*modcoo,
    00095                                 (med_repere*)rep,(char*)fs1,
    00096                                 (char*)fs2,(char*)fs3,
    00097                                 (med_booleen*)&_inom,(med_int*)num,(med_booleen*)&_inum,
    00098                                 (med_int*)fam,(med_int)*nnoe);
    00099
    00100   strncpy(nomcoo,fs1,MED_TAILLE_PNOM*(*mdim));
    00101   strncpy(unicoo,fs2,MED_TAILLE_PNOM*(*mdim));
    00102   strncpy(nom   ,fs3,MED_TAILLE_PNOM*(*nnoe));
    00103   _MEDfstring(nomcoo,MED_TAILLE_PNOM*(*mdim));
    00104   _MEDfstring(unicoo,MED_TAILLE_PNOM*(*mdim));
    00105   _MEDfstring(nom   ,MED_TAILLE_PNOM*(*nnoe));
    00106   *inom=_inom;
    00107   *inum=_inum;
    00108
    00109   _MEDcstringFree(fn1);
    00110   free(fs1);
    00111   free(fs2);
    00112   free(fs3);
    00113
    00114   return ret;
    00115 }
    00116
    00117 #ifdef PPRO_NT
    00118 med_int
    00119 __stdcall EDFNOEE(med_int *fid, char *maa, unsigned int bidon1,
    00120                   med_int *lon1, med_int *mdim, med_float *coo,
    00121                   med_int *modcoo,
    00122                   med_int *rep, char *nomcoo, unsigned int bidon2,
    00123                   med_int *lon2, char *unicoo, unsigned int bidon3,
    00124                   med_int *lon3,
    00125                   char *nom, unsigned int bidon4, med_int *lon4,
    00126                   med_int *inom,med_int *num,med_int *inum,
    00127                   med_int *fam,med_int *nnoe)
    00128 #else
    00129 med_int
    00130 nedfnoee(med_int *fid,char *maa,med_int *lon1,med_int *mdim,med_float *coo,
    00131          med_int *modcoo,
    00132          med_int *rep,char *nomcoo,med_int *lon2,char *unicoo,med_int *lon3,
    00133          char *nom,med_int *lon4,med_int *inom,med_int *num,med_int *inum,
    00134          med_int *fam,med_int *nnoe)
    00135 #endif
    00136 {
    00137   med_int ret;
    00138   char *fn1,*fn2,*fn3,*fn4;
    00139   med_booleen _inom=(med_booleen) *inom,_inum=(med_booleen)*inum;
    00140
    00141   fn1 = _MED2cstring((char*)maa,(int)*lon1);
    00142   fn2 = _MED1cstring((char*)nomcoo,(int)*lon2,(int)*mdim*MED_TAILLE_PNOM);
    00143   fn3 = _MED1cstring((char*)unicoo,(int)*lon3,(int)*mdim*MED_TAILLE_PNOM);
    00144   fn4 = _MED1cstring((char*)nom,(int)*lon4,(int)*nnoe*MED_TAILLE_PNOM);
    00145
    00146   if (!(fn1&&fn2&&fn3&&fn4))
    00147      return -1;
    00148
    00149   ret = (med_int) MEDnoeudsEcr((med_idt)*fid,(char*)fn1,(med_int)*mdim,
    00150                                (med_float *)coo,(med_mode_switch)*modcoo,
    00151                                (med_repere)*rep,(char*)fn2,
    00152                                (char*)fn3,(char*)fn4,(med_booleen)_inom,
    00153                                (med_int*)num,(med_booleen)_inum,
    00154                                (med_int*)fam,(med_int)*nnoe);
    00155
    00156   _MEDcstringFree(fn1);
    00157   _MEDcstringFree(fn2);
    00158   _MEDcstringFree(fn3);
    00159   _MEDcstringFree(fn4);
    00160
    00161   return ret;
    00162 }
    00163
    00164
    00165 #ifdef PPRO_NT
    00166 med_int
    00167 __stdcall EDFELEE(med_int *fid, char *maa, unsigned int bidon1,
    00168                   med_int*lon1, med_int*mdim, med_int*conn,med_int *mode_switch,
    00169                   char*nom, unsigned int bidon2, med_int*lon2, med_int*inom,
    00170                   med_int *num, med_int*inum, med_int*fam, med_int*nele,
    00171                   med_int*typent,
    00172                   med_int*typgeo,med_int*typcon)
    00173 #else
    00174 med_int
    00175 nedfelee(med_int *fid,char *maa,med_int*lon1,med_int*mdim,med_int*conn,med_int *mode_switch,
    00176          char*nom,med_int*lon2,med_int*inom,
    00177          med_int *num,med_int*inum,med_int*fam,med_int*nele,med_int*typent,
    00178          med_int*typgeo,med_int*typcon)
    00179 #endif
    00180 {
    00181   med_int ret;
    00182   char *fn1,*fn2;
    00183   med_booleen _inom=(med_booleen) *inom,_inum=(med_booleen)*inum;
    00184
    00185   fn1 = _MED2cstring((char*)maa,(int)*lon1);
    00186   fn2 = _MED1cstring((char*)nom,(int)*lon2,*nele*MED_TAILLE_PNOM);
    00187
    00188   if (!(fn1&&fn2))
    00189      return -1;
    00190
    00191   ret = (med_int) MEDelementsEcr((med_idt)*fid,(char*)fn1,(med_int)*mdim,
    00192                                  (med_int*)conn,(med_mode_switch) *mode_switch,
    00193                                  (char*)fn2,(med_booleen)_inom,
    00194                                  (med_int*)num,(med_booleen)_inum,
    00195                                  (med_int*)fam,(med_int)*nele,
    00196                                  (med_entite_maillage)*typent,
    00197                                  (med_geometrie_element)*typgeo,
    00198                                  (med_connectivite)*typcon);
    00199
    00200   _MEDcstringFree(fn1);
    00201   _MEDcstringFree(fn2);
    00202
    00203   return ret;
    00204 }
    00205
    00206 #ifdef PPRO_NT
    00207 med_int
    00208 __stdcall EDFELEL(med_int *fid,char *maa, unsigned int bidon1,
    00209                   med_int*lon1, med_int*mdim, med_int*conn,med_int *mode_switch,
    00210                   char*nom, unsigned int bidon2, med_int*inom,
    00211                   med_int *num, med_int*inum, med_int*fam, med_int*nele,
    00212                   med_int*typent, med_int*typgeo,med_int*typcon)
    00213 #else
    00214 med_int
    00215 nedfelel(med_int *fid,char *maa,med_int*lon1,med_int*mdim,med_int*conn,
    00216          med_int *mode_switch,
    00217          char*nom,med_int*inom,
    00218          med_int *num,med_int*inum,med_int*fam,med_int*nele,med_int*typent,
    00219          med_int*typgeo,med_int*typcon)
    00220 #endif
    00221 {
    00222   med_int ret;
    00223   char *fn1,*fs1;
    00224   med_booleen _inom=MED_FAUX,_inum=MED_FAUX;
    00225
    00226   fn1 = _MED2cstring((char*)maa,(int)*lon1);
    00227   fs1 = (char *) malloc(sizeof(char)*MED_TAILLE_PNOM*(*nele)+1);
    00228
    00229   if (!(fn1&&fs1))
    00230      return -1;
    00231
    00232   ret = (med_int) MEDelementsLire((med_idt)*fid,(char*)fn1,(med_int)*mdim,
    00233                                  (med_int*)conn,(med_mode_switch) *mode_switch,
    00234                                  (char*)fs1,(med_booleen*)&_inom,
    00235                                  (med_int*)num,(med_booleen*)&_inum,
    00236                                  (med_int*)fam,(med_int)*nele,
    00237                                  (med_entite_maillage)*typent,
    00238                                  (med_geometrie_element)*typgeo,
    00239                                  (med_connectivite)*typcon);
    00240
    00241   strncpy(nom,fs1,MED_TAILLE_PNOM*(*nele));
    00242   _MEDfstring(nom,MED_TAILLE_PNOM*(*nele));
    00243   *inom=_inom;
    00244   *inum=_inum;
    00245
    00246   _MEDcstringFree(fn1);
    00247   free(fs1);
    00248
    00249   return ret;
    00250 }
    00251
    00252
    00253 #ifdef PPRO_NT
    00254 med_int
    00255 __stdcall EDFG2FC(med_int *fid, char *maa, unsigned int bidon1,med_int *lon1,
    00256                   char *groupes, unsigned int bidon2,med_int *lon2,
    00257                   med_int *index, med_int *ngroup,med_int *entites,
    00258                   med_int *nent, med_int *type_ent,med_int *type_geo,
    00259                   med_int *indexgeo, med_int *ngeo)
    00260 #else
    00261 med_int
    00262 nedfg2fc(med_int *fid, char *maa,med_int *lon1,
    00263          char *groupes,med_int *lon2,
    00264          med_int *index, med_int *ngroup,med_int *entites,
    00265          med_int *nent, med_int *type_ent,med_int *type_geo,
    00266          med_int *indexgeo, med_int *ngeo)
    00267 #endif
    00268 {
    00269   med_int ret,i;
    00270   char *fn1,*fn2;
    00271   med_geometrie_element *types = (med_geometrie_element *) malloc (*ngeo*sizeof(med_geometrie_element));
    00272
    00273   fn1 = _MED2cstring((char*)maa,(int)*lon1);
    00274   fn2 = _MED1cstring((char*)groupes,(int)*lon2,(int)*ngroup*MED_TAILLE_LNOM);
    00275
    00276   if (!(fn1&&fn2))
    00277      return -1;
    00278
    00279   for (i=0;i<*ngeo;i++)
    00280     *(types+i) = (med_geometrie_element) *(type_geo+i);
    00281
    00282   ret = (med_int) MEDgro2famCr((med_idt)*fid,(char*)fn1,
    00283                                (char*)fn2,(med_int*)index,
    00284                                (med_int)*ngroup,(med_int *)entites,
    00285                                (med_int) *nent,
    00286                                (med_entite_maillage)*type_ent,
    00287                                (med_geometrie_element *)types,
    00288                                (med_int *)indexgeo,(med_int) *ngeo);
    00289
    00290   _MEDcstringFree(fn1);
    00291   _MEDcstringFree(fn2);
    00292   free(types);
    00293
    00294   return ret;
    00295 }