Les objets du modèle de données MED comme les champs et les maillages peuvent être répartis dans des fichiers différents. Il est parfois utile par exemple lorsqu'on lit un champ, d'avoir accès au maillage associé au champ. La routine MEDfileObjectsMount / mfiomn permet de monter le contenu d'un fichier MED pour un type d'objet donné (exemples : champ, maillage) dans le fichier MED courant. Une fois le montage effectué, l'accès aux données montées est transparent. Lorsque l'accès aux données montées n'est plus utile, il est nécessaire de démonter le fichier avec la routine MEDfileObjectsUnmount / mfioun.
#define MESGERR 1
#ifdef DEF_LECT_ECR
#define MODE_ACCES MED_ACC_RDWR
#elif DEF_LECT_AJOUT
#define MODE_ACCES MED_ACC_RDEXT
#else
#define MODE_ACCES MED_ACC_CREAT
#endif
int main (
int argc,
char **argv)
{
int i;
MESSAGE(
"Erreur a l'ouverture du fichier test20-0.med");
return -1;
}
printf("On ouvre le fichier test20-0.med \n");
MESSAGE(
"Erreur a la lecture du nombre de champs");
return -1;
}
printf(
"Nombre de champs dans test20-0.med :"IFORMAT" \n",ncha);
if (mid < 0) {
MESSAGE(
"Echec du montage des champs de test10.med");
return -1;
}
printf("On monte les champs du fichier test10.med dans le fichier test20-0.med \n");
MESSAGE(
"Erreur a la lecture du nombre de champ");
return -1;
}
printf(
"Nombre de champs dans test20-0.med apres montage : "IFORMAT" \n",ncha);
for (i=1;i<=ncha;i++) {
MESSAGE(
"Erreur a lecture du nombre de composante du champ");
return -1;
}
if (
MEDfieldInfo(fid,i,nom,_meshname,&_local,&type,comp,unit,_dtunit,&_ncstp) < 0) {
MESSAGE(
"Erreur a la lecture des informations sur le champ");
return -1;
}
printf("Nom du champ : |%s| de type %d\n",nom,type);
printf("Nom des composantes : |%s|\n",comp);
printf("Unites des composantes : |%s| \n",unit);
printf("Unites des dates : |%s| \n",_dtunit);
printf("Le maillage associé est |%s|\n",_meshname);
}
MESSAGE(
"Echec du demontage de test10.med");
return -1;
}
printf("On demonte le fichier test10.med dans test20-0.med\n");
MESSAGE(
"Erreur a la lecture du nombre de champ");
return -1;
}
printf(
"Nombre de champs dans test20-0.med apres demontage: "IFORMAT" \n",ncha);
MESSAGE(
"Erreur lors de la fermeture du fichier");
return -1;
}
printf("On ferme le fichier test20-0.med \n");
MESSAGE(
"Erreur a la creation du fichier test20.med");
return -1;
}
printf("On cree le fichier test20.med \n");
if (mid2 < 0) {
MESSAGE(
"Echec du montage de test20-0.med");
return -1;
}
printf("On monte les maillages du fichier test20-0.med dans le fichier test20.med \n");
if (nmaa < 0) {
MESSAGE(
"Erreur lors de la lecture du nombre de maillage");
return -1;
}
printf(
"Nombre de maillages apres montage de test20-0.med : "IFORMAT"\n",nmaa);
if (mid < 0) {
MESSAGE(
"Echec du montage de test10.med");
return -1;
}
printf("On monte les champs du fichier test10.med dans le fichier test20.med \n");
MESSAGE(
"Erreur lors de la lecture du nombre de champ");
return -1;
}
printf(
"Nombre de champs dans test20.med apres montage : "IFORMAT" \n",ncha);
MESSAGE(
"Echec du demontage de test10.med");
return -1;
}
printf("On demonte le fichier test10.med dans test20.med \n");
MESSAGE(
"Echec du demontage de test20-0.med");
return -1;
}
printf("On demonte le fichier test20-0.med du test20.med\n");
MESSAGE(
"Erreur de la fermeture du fichier");
return -1;
}
printf("On ferme le fichier test20.med \n");
MESSAGE(
"Erreur a la creation du fichier test20.med");
return -1;
}
printf("On cree le fichier test20b.med \n");
MESSAGE(
"Erreur a l'ouverture du fichier test2-med.hdf");
return -1;
}
printf("On ouvre le fichier test2-med.hdf \n");
if (mid2 < 0) {
MESSAGE(
"Echec du montage de test2-med.hdf");
return -1;
}
printf("On monte les maillages du fichier test2-med.hdf dans le fichier test20b.med \n");
if (nmaa < 0) {
MESSAGE(
"Erreur lors de la lecture du nombre de maillage");
return -1;
}
printf(
"Nombre de maillages apres montage de test2-med.hdf : "IFORMAT"\n",nmaa);
MESSAGE(
"Erreur a l'ouverture du fichier test10-med.hdf");
return -1;
}
printf("On ouvre le fichier test10-med.hdf \n");
if (mid < 0) {
MESSAGE(
"Echec du montage de test10-med.hdf");
return -1;
}
printf("On monte les champs du fichier test10-med.hdf dans le fichier test20b.med \n");
MESSAGE(
"Erreur lors de la lecture du nombre de champ");
return -1;
}
printf(
"Nombre de champs dans test20b.med apres montage : "IFORMAT" \n",ncha);
MESSAGE(
"Echec du demontage de test10-med.hdf");
return -1;
}
printf("On demonte et on ferme le fichier test10-med.hdf de test20b.med \n");
MESSAGE(
"Echec du demontage de test2-med.hdf");
return -1;
}
printf("On demonte et on ferme le fichier test2-med.hdf de test20b.med\n");
MESSAGE(
"Erreur de la fermeture du fichier");
return -1;
}
printf("On ferme le fichier test20b.med \n");
return 0;
}