00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <med.h>
00026 #define MESGERR 1
00027 #include <med_utils.h>
00028
00029 #ifdef DEF_LECT_ECR
00030 #define MODE_ACCES MED_ACC_RDWR
00031 #elif DEF_LECT_AJOUT
00032 #define MODE_ACCES MED_ACC_RDEXT
00033 #else
00034 #define MODE_ACCES MED_ACC_CREAT
00035 #endif
00036
00037 int main (int argc, char **argv)
00038
00039
00040 {
00041 med_idt fid,fid2,fid3,mid,mid2;
00042 med_int ncha, ncomp, nmaa;
00043 med_field_type type;
00044 char comp[3*MED_SNAME_SIZE+1]="",unit[3*MED_SNAME_SIZE+1]="";
00045 char nom [MED_NAME_SIZE+1] ="";
00046 char _meshname [MED_NAME_SIZE+1] ="";
00047 char _dtunit [MED_SNAME_SIZE+1]="";
00048 med_int _ncstp=0;
00049 med_bool _local;
00050 int i;
00051
00052
00053
00054
00055
00056
00057 if ((fid = MEDfileOpen("test20-0.med",MED_ACC_RDEXT)) < 0) {
00058 MESSAGE("Erreur a l'ouverture du fichier test20-0.med");
00059 return -1;
00060 }
00061 printf("On ouvre le fichier test20-0.med \n");
00062
00063
00064 if ((ncha = MEDnField(fid)) < 0) {
00065 MESSAGE("Erreur a la lecture du nombre de champs");
00066 return -1;
00067 }
00068 printf("Nombre de champs dans test20-0.med :"IFORMAT" \n",ncha);
00069
00070
00071 mid = MEDfileObjectsMount(fid,"test10.med",MED_FIELD);
00072 if (mid < 0) {
00073 MESSAGE("Echec du montage des champs de test10.med");
00074 return -1;
00075 }
00076 printf("On monte les champs du fichier test10.med dans le fichier test20-0.med \n");
00077
00078
00079 if ((ncha = MEDnField(fid)) < 0) {
00080 MESSAGE("Erreur a la lecture du nombre de champ");
00081 return -1;
00082 }
00083 printf("Nombre de champs dans test20-0.med apres montage : "IFORMAT" \n",ncha);
00084
00085
00086 for (i=1;i<=ncha;i++) {
00087
00088
00089 if ((ncomp = MEDfieldnComponent(fid,i)) < 0) {
00090 MESSAGE("Erreur a lecture du nombre de composante du champ");
00091 return -1;
00092 }
00093
00094
00095 if (MEDfieldInfo(fid,i,nom,_meshname,&_local,&type,comp,unit,_dtunit,&_ncstp) < 0) {
00096 MESSAGE("Erreur a la lecture des informations sur le champ");
00097 return -1;
00098 }
00099
00100 printf("Nom du champ : |%s| de type %d\n",nom,type);
00101 printf("Nom des composantes : |%s|\n",comp);
00102 printf("Unites des composantes : |%s| \n",unit);
00103 printf("Unites des dates : |%s| \n",_dtunit);
00104 printf("Le maillage associé est |%s|\n",_meshname);
00105
00106 }
00107
00108
00109 if (MEDfileObjectsUnmount(fid,mid,MED_FIELD) < 0) {
00110 MESSAGE("Echec du demontage de test10.med");
00111 return -1;
00112 }
00113 printf("On demonte le fichier test10.med dans test20-0.med\n");
00114
00115
00116 if ((ncha = MEDnField(fid)) < 0) {
00117 MESSAGE("Erreur a la lecture du nombre de champ");
00118 return -1;
00119 }
00120 printf("Nombre de champs dans test20-0.med apres demontage: "IFORMAT" \n",ncha);
00121
00122
00123 if (MEDfileClose(fid) < 0) {
00124 MESSAGE("Erreur lors de la fermeture du fichier");
00125 return -1;
00126 }
00127 printf("On ferme le fichier test20-0.med \n");
00128
00129
00130
00131
00132
00133
00134
00135
00136 if ((fid = MEDfileOpen("test20.med",MODE_ACCES)) < 0) {
00137 MESSAGE("Erreur a la creation du fichier test20.med");
00138 return -1;
00139 }
00140 printf("On cree le fichier test20.med \n");
00141
00142
00143 mid2 = MEDfileObjectsMount(fid,"test20-0.med",MED_MESH);
00144 if (mid2 < 0) {
00145 MESSAGE("Echec du montage de test20-0.med");
00146 return -1;
00147 }
00148 printf("On monte les maillages du fichier test20-0.med dans le fichier test20.med \n");
00149
00150
00151 nmaa = MEDnMesh(fid);
00152 if (nmaa < 0) {
00153 MESSAGE("Erreur lors de la lecture du nombre de maillage");
00154 return -1;
00155 }
00156 printf("Nombre de maillages apres montage de test20-0.med : "IFORMAT"\n",nmaa);
00157
00158
00159 mid = MEDfileObjectsMount(fid,"test10.med",MED_FIELD);
00160 if (mid < 0) {
00161 MESSAGE("Echec du montage de test10.med");
00162 return -1;
00163 }
00164 printf("On monte les champs du fichier test10.med dans le fichier test20.med \n");
00165
00166
00167 if ((ncha = MEDnField(fid)) < 0) {
00168 MESSAGE("Erreur lors de la lecture du nombre de champ");
00169 return -1;
00170 }
00171 printf("Nombre de champs dans test20.med apres montage : "IFORMAT" \n",ncha);
00172
00173
00174 if (MEDfileObjectsUnmount(fid,mid,MED_FIELD) < 0) {
00175 MESSAGE("Echec du demontage de test10.med");
00176 return -1;
00177 }
00178 printf("On demonte le fichier test10.med dans test20.med \n");
00179
00180
00181 if (MEDfileObjectsUnmount(fid,mid2,MED_MESH) < 0) {
00182 MESSAGE("Echec du demontage de test20-0.med");
00183 return -1;
00184 }
00185 printf("On demonte le fichier test20-0.med dans test20.med\n");
00186
00187
00188 if (MEDfileClose(fid) < 0) {
00189 MESSAGE("Erreur de la fermeture du fichier");
00190 return -1;
00191 }
00192 printf("On ferme le fichier test20.med \n");
00193
00194
00195
00196
00197
00198
00199
00200 if ((fid = MEDfileOpen("test20b.med",MODE_ACCES)) < 0) {
00201 MESSAGE("Erreur a la creation du fichier test20.med");
00202 return -1;
00203 }
00204 printf("On cree le fichier test20b.med \n");
00205
00206
00207 if ((fid2 = MEDfileOpen("test2-med.hdf",MED_ACC_RDONLY)) < 0) {
00208 MESSAGE("Erreur a l'ouverture du fichier test2-med.hdf");
00209 return -1;
00210 }
00211 printf("On ouvre le fichier test2-med.hdf \n");
00212
00213
00214 mid2 = MEDfileObjectsMountById(fid,fid2,"/byid2",MED_MESH);
00215 if (mid2 < 0) {
00216 MESSAGE("Echec du montage de test2-med.hdf");
00217 return -1;
00218 }
00219 printf("On monte les maillages du fichier test2-med.hdf dans le fichier test20b.med \n");
00220
00221
00222 nmaa = MEDnMesh(fid);
00223 if (nmaa < 0) {
00224 MESSAGE("Erreur lors de la lecture du nombre de maillage");
00225 return -1;
00226 }
00227 printf("Nombre de maillages apres montage de test2-med.hdf : "IFORMAT"\n",nmaa);
00228
00229
00230 if ((fid3 = MEDfileOpen("test10-med.hdf",MED_ACC_RDONLY)) < 0) {
00231 MESSAGE("Erreur a l'ouverture du fichier test10-med.hdf");
00232 return -1;
00233 }
00234 printf("On ouvre le fichier test10-med.hdf \n");
00235
00236
00237 mid = MEDfileObjectsMountById(fid,fid3,"/byid10/",MED_FIELD);
00238 if (mid < 0) {
00239 MESSAGE("Echec du montage de test10-med.hdf");
00240 return -1;
00241 }
00242 printf("On monte les champs du fichier test10-med.hdf dans le fichier test20b.med \n");
00243
00244
00245 if ((ncha = MEDnField(fid)) < 0) {
00246 MESSAGE("Erreur lors de la lecture du nombre de champ");
00247 return -1;
00248 }
00249 printf("Nombre de champs dans test20b.med apres montage : "IFORMAT" \n",ncha);
00250
00251
00252 if (MEDfileObjectsUnmount(fid,mid,MED_FIELD) < 0) {
00253 MESSAGE("Echec du demontage de test10-med.hdf");
00254 return -1;
00255 }
00256 printf("On demonte et on ferme le fichier test10-med.hdf de test20b.med \n");
00257
00258
00259 if (MEDfileObjectsUnmount(fid,mid2,MED_MESH) < 0) {
00260 MESSAGE("Echec du demontage de test2-med.hdf");
00261 return -1;
00262 }
00263 printf("On demonte et on ferme le fichier test2-med.hdf de test20b.med\n");
00264
00265
00266 if (MEDfileClose(fid) < 0) {
00267 MESSAGE("Erreur de la fermeture du fichier");
00268 return -1;
00269 }
00270 printf("On ferme le fichier test20b.med \n");
00271
00272
00273 return 0;
00274 }