00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 #include "med_config.h"
00020 #include "med_outils.h"
00021 #include "med_versioned.h"
00022 #include <string.h>
00023 
00024 
00025 #include "MAJ_236_300.h"
00026 #include "MAJ_version.h"
00027 
00028 
00029 med_err MAJ_236_300_equivalence(med_idt fid,const char * const maa)
00030 {
00031   med_err ret = 0;
00032   med_int nequ=0,ncor=0,nstep=0,nocstpncor=0;
00033   med_int *cor;
00034   char equ[MED_NAME_SIZE+1]   ="";
00035   char des[MED_COMMENT_SIZE+1]="";
00036 
00037   int i,j,k;
00038 
00039   med_geometry_type *typmai = MED_GET_CELL_GEOMETRY_TYPE;
00040   med_geometry_type *typfac = MED_GET_FACE_GEOMETRY_TYPE;
00041   med_geometry_type *typare = MED_GET_EDGE_GEOMETRY_TYPE;
00042 
00043   MAJ_version_num(fid,2,3,6);
00044 
00045   
00046   if ((nequ = MEDnEquivalence(fid,maa)) < 0) {
00047     MESSAGE("Erreur a la lecture du nombre d'equivalence");
00048     return -1;
00049   }
00050 
00051 
00052   
00053   for (i = 0;i<nequ;i++) {
00054 
00055 
00056 
00057     
00058     if (MEDequivalenceInfo(fid,maa,i+1,equ,des,&nstep,&nocstpncor) < 0) {
00059       MESSAGE("Erreur a la lecture de l'equivalence d'indice");
00060       ISCRUTE_int(i+1);
00061       return -1;
00062     }
00063     fprintf(stdout,"  >>> Normalisation de l'équivalence [%s] du maillage [%s] \n",
00064             equ,maa);
00065 
00066 
00067 
00068 
00069 
00070 
00071     MAJ_version(fid);
00072     
00073     if (MEDequivalenceCr(fid,maa,equ,des) < 0) {
00074       MESSAGE("Erreur a la creation de l'equivalence");
00075       return -1;
00076     }
00077     MAJ_version_num(fid,2,3,6);
00078 
00079     
00080 
00081     
00082     if ( MEDequivalenceCorrespondenceSize(fid,maa,equ,MED_NO_DT,MED_NO_IT,MED_NODE,MED_NONE,&ncor) < 0) {
00083       MESSAGE("Erreur a la lecture du nombre de correspondance sur les noeuds");
00084       return -1;
00085     }
00086 
00087     if (ncor > 0) {
00088       cor = (med_int*) malloc(sizeof(med_int)*ncor*2);
00089       if (MEDequivalenceCorrespondenceRd(fid,maa,equ,MED_NO_DT,MED_NO_IT,
00090                                          MED_NODE,MED_NONE,cor) < 0) {
00091         MESSAGE("Erreur a la lecture des correspondances sur les noeuds");
00092         ret = -1;
00093       }
00094       if (ret == 0) {
00095 
00096 
00097 
00098 
00099         
00100         MAJ_version(fid);
00101         if (MEDequivalenceCorrespondenceWr(fid,maa,equ,MED_NO_DT,MED_NO_IT,
00102                                            MED_NODE,MED_NONE,ncor,cor) < 0) {
00103           MESSAGE("Erreur a l'ecriture du tableau des correspondances");
00104           ret = -1;
00105         }
00106         MAJ_version_num(fid,2,3,6);
00107       }
00108       free(cor);
00109     }
00110 
00111     
00112     if (ret == 0)
00113       for (j=1;j<=MED_N_CELL_FIXED_GEO;j++) {
00114 
00115         if ( MEDequivalenceCorrespondenceSize(fid,maa,equ,MED_NO_DT,MED_NO_IT,MED_CELL,typmai[j],&ncor) < 0) {
00116           MESSAGE("Erreur a la lecture du nombre de correspondance sur les mailles : ");
00117           SSCRUTE(MED_GET_CELL_GEOMETRY_TYPENAME[j]);
00118           return -1;
00119         }
00120 
00121 
00122         if (ncor > 0) {
00123           cor = (med_int*) malloc(sizeof(med_int)*ncor*2);
00124           if (MEDequivalenceCorrespondenceRd(fid,maa,equ,MED_NO_DT,MED_NO_IT,
00125                                              MED_CELL,typmai[j],cor) < 0) {
00126             MESSAGE("Erreur a la lecture des correspondances sur les mailles : ");
00127             SSCRUTE(MED_GET_CELL_GEOMETRY_TYPENAME[j]);
00128             ret = -1;
00129           }
00130           if (ret == 0) {
00131 
00132 
00133 
00134             
00135             MAJ_version(fid);
00136             if (MEDequivalenceCorrespondenceWr(fid,maa,equ,MED_NO_DT,MED_NO_IT,
00137                                                MED_CELL,typmai[j],ncor,cor) < 0) {
00138               MESSAGE("Erreur a l'ecriture du tableau des correspondances");
00139               ret = -1;
00140             }
00141             MAJ_version_num(fid,2,3,6);
00142           }
00143           free(cor);
00144         }
00145       }
00146 
00147     
00148     if (ret == 0)
00149       for (j=1;j<=MED_N_FACE_FIXED_GEO;j++) {
00150         if ( MEDequivalenceCorrespondenceSize(fid,maa,equ,MED_NO_DT,MED_NO_IT,
00151                                               MED_DESCENDING_FACE,typfac[j],&ncor) < 0) {
00152           MESSAGE("Erreur a la lecture du nombre de correspondance sur les faces : ");
00153           SSCRUTE(MED_GET_FACE_GEOMETRY_TYPENAME[j]);
00154           return -1;
00155         }
00156 
00157 
00158         if (ncor > 0) {
00159           cor = (med_int*) malloc(sizeof(med_int)*ncor*2);
00160           if (MEDequivalenceCorrespondenceRd(fid,maa,equ,MED_NO_DT,MED_NO_IT,
00161                                              MED_DESCENDING_FACE,typfac[j],cor) < 0) {
00162             MESSAGE("Erreur a la lecture des correspondances sur les faces : ");
00163             SSCRUTE(MED_GET_FACE_GEOMETRY_TYPENAME[j]);
00164             ret = -1;
00165           }
00166           if (ret == 0) {
00167             for (k=0;k<ncor;k++)
00168 
00169 
00170 
00171             
00172             MAJ_version(fid);
00173             if (MEDequivalenceCorrespondenceWr(fid,maa,equ,MED_NO_DT,MED_NO_IT,
00174                                                MED_DESCENDING_FACE,typfac[j],ncor,cor) < 0) {
00175               MESSAGE("Erreur a l'ecriture du tableau des correspondances");
00176               ret = -1;
00177             }
00178             MAJ_version_num(fid,2,3,6);
00179           }
00180           free(cor);
00181         }
00182       }
00183 
00184     
00185     if (ret == 0)
00186       for (j=1;j<=MED_N_EDGE_FIXED_GEO;j++) {
00187         if ( MEDequivalenceCorrespondenceSize(fid,maa,equ,MED_NO_DT,MED_NO_IT,
00188                                               MED_DESCENDING_EDGE,typare[j],&ncor) < 0) {
00189           MESSAGE("Erreur a la lecture du nombre de correspondance sur les aretes : ");
00190           SSCRUTE(MED_GET_EDGE_GEOMETRY_TYPENAME[j]);
00191           return -1;
00192         }
00193 
00194 
00195         if (ncor > 0) {
00196           cor = (med_int*) malloc(sizeof(med_int)*ncor*2);
00197           if (MEDequivalenceCorrespondenceRd(fid,maa,equ,MED_NO_DT,MED_NO_IT,
00198                                              MED_DESCENDING_EDGE,typare[j],cor) < 0) {
00199             MESSAGE("Erreur a la lecture des correspondances sur les faces : ");
00200             SSCRUTE(MED_GET_EDGE_GEOMETRY_TYPENAME[j]);
00201             ret = -1;
00202           }
00203           if (ret == 0) {
00204             for (k=0;k<ncor;k++)
00205 
00206 
00207 
00208             
00209             MAJ_version(fid);
00210             if (MEDequivalenceCorrespondenceWr(fid,maa,equ,MED_NO_DT,MED_NO_IT,
00211                                                MED_DESCENDING_EDGE,typare[j],ncor,cor) < 0) {
00212               MESSAGE("Erreur a l'ecriture du tableau des correspondances");
00213               ret = -1;
00214             }
00215             MAJ_version_num(fid,2,3,6);
00216           }
00217           free(cor);
00218         }
00219       }
00220 
00221   }
00222 
00223   MAJ_version(fid);
00224   return ret;
00225 }
00226 
00227 
00228 
00229