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