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