MED fichier
c/test2.c
/* This file is part of MED.
*
* COPYRIGHT (C) 1999 - 2023 EDF R&D, CEA/DEN
* MED is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* MED is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with MED. If not, see <http://www.gnu.org/licenses/>.
*/
/******************************************************************************
* - Nom du fichier : test2.c
*
* - Description : exemples de creation de maillages MED.
*
*****************************************************************************/
#include <med.h>
#define MESGERR 1
#include <med_utils.h>
#include <string.h>
#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)
{
med_err ret=0;
med_idt fid=0;
char des[MED_COMMENT_SIZE+1]="";
med_bool fileexist=MED_FALSE, accessok=MED_FALSE;
char axisname[3*MED_SNAME_SIZE+1]="";
char axisunit[3*MED_SNAME_SIZE+1]="";
int cstp = 0;
strcat(axisname,"x ");
strcat(axisname,"y ");
strcat(axisname,"z ");
strcat(axisunit,"cm ");
strcat(axisunit,"cm ");
strcat(axisunit,"cm ");
/* Verification de la conformite du format med du fichier test1.med */
MEDfileExist( "test1.med", MED_ACC_RDONLY, &fileexist, &accessok );
if (!fileexist) {
MESSAGE("Le fichier test1.med n'existe pas.");
}
if (!accessok) {
MESSAGE("Le fichier test1.med ne peut pas être ouvert selon le mode d'accès demandé .");
}
/* Verification de la conformite du format med du fichier test1.med */
ret = MEDfileCompatibility("test1.med",&hdfok,&medok);
if (!hdfok) {
MESSAGE("Format HDF non conforme ou fichier inexistant");
return -1;
}
if (!medok) {
MESSAGE("Format MED non conforme ou fichier inexistant");
return -1;
}
/* Ouverture en mode de lecture du fichier "test1.med" */
fid = MEDfileOpen("test1.med",MED_ACC_RDONLY);
if (fid < 0) {
MESSAGE("Erreur a l'ouverture du fichier test1.med en mode MED_LECTURE");
return -1;
}
/* Affiche de l'en-tete du fichier */
ret = MEDfileCommentRd(fid, des);
if (ret == 0)
printf("En-tete du fichier test1.med : %s\n",des);
else {
MESSAGE("Erreur a la lecture de l'en-tete du fichier test1.med");
ret = -1;
}
/* Fermeture du fichier test1.med */
ret = MEDfileClose(fid);
if (ret < 0) {
MESSAGE("Erreur a la fermeture du fichier test1.med");
return -1;
}
/* Verification de la conformite du format med du fichier test2.med */
MEDfileExist( "test2.med", MODE_ACCES, &fileexist, &accessok );
if (!fileexist) {
MESSAGE("Le fichier test2.med n'existe pas.");
}
if (!accessok) {
MESSAGE("Le fichier test2.med ne peut pas être ouvert selon le mode d'accès demandé .");
}
/* Ouverture en mode creation du fichier test2.med */
fid = MEDfileOpen("test2.med",MODE_ACCES);
if (fid < 0) {
MESSAGE("Erreur a la creation du fichier test2.med");
return -1;
}
/* Creation du maillage "maa1" de type MED_UNSTRUCTURED_MESH
et de dimension 3 */
if (MEDmeshCr(fid,"maa1",3,3,MED_UNSTRUCTURED_MESH,
"un premier maillage","s",MED_SORT_DTIT,
MED_CARTESIAN,axisname,axisunit) < 0) {
MESSAGE("Erreur a la creation du maillage maa1");
ret = -1;
}
/* Ecriture du nom universel pour "maa1" */
if (MEDmeshUniversalNameWr(fid,"maa1") < 0) {
MESSAGE("Erreur a la creation du nom universel de maa1");
ret = -1;
}
/* Creation du maillage "maa2" de type MED_UNSTRUCTURED_MESH
et de dimension 2 dans un espace de dimension 3*/
if (MEDmeshCr(fid,"maa2",3,2,MED_UNSTRUCTURED_MESH,
"un second maillage","s",MED_SORT_DTIT,
MED_CARTESIAN,axisname,axisunit) < 0) {
MESSAGE("Erreur a la creation du maillage maa2");
ret = -1;
}
cstp = 1;
MED_NO_DT,MED_NO_IT,0) < 0) {
fprintf(stderr,"Erreur à la création de l'étape de calcul n°%d du maillage maa2\n",cstp);
/* ret = -1; */
}
cstp++;
1,3,1.1) < 0) {
fprintf(stderr,"Erreur à la création de l'étape de calcul n°%d du maillage maa2\n",cstp);
/* ret = -1; */
}
cstp++;
0,0,1.1) < 0) {
fprintf(stderr,"Erreur à la création de l'étape de calcul n°%d du maillage maa2\n",cstp);
/* ret = -1; */
}
cstp++;
0,-1,1.1) < 0) {
fprintf(stderr,"Erreur à la création de l'étape de calcul n°%d du maillage maa2\n",cstp);
/* ret = -1; */
}
cstp++;
-1,20,1.1) < 0) {
fprintf(stderr,"Erreur à la création de l'étape de calcul n°%d du maillage maa2\n",cstp);
/* ret = -1; */
}
cstp++;
fprintf(stderr,"Erreur attendue : \n");
20,-1,1.1) < 0) {
fprintf(stderr,"Erreur à la création de l'étape de calcul n°%d du maillage maa2\n",cstp);
/* ret = -1; */
}
cstp++;
fprintf(stderr,"Erreur attendue : \n");
if ( MEDmeshComputationStepCr(fid,"maa2",0,0,
20,-1,1.1) < 0) {
fprintf(stderr,"Erreur à la création de l'étape de calcul n°%d du maillage maa2\n",cstp);
/* ret = -1; */
}
cstp++;
if ( MEDmeshComputationStepCr(fid,"maa2",20,-1,
20,-1,1.1) < 0) {
fprintf(stderr,"Erreur à la création de l'étape de calcul n°%d du maillage maa2\n",cstp);
/* ret = -1; */
}
cstp++;
fprintf(stderr,"Erreur attendue car l'étape a été crée précedement: \n");
if ( MEDmeshComputationStepCr(fid,"maa2",1,3,
20,-1,1.1) < 0) {
fprintf(stderr,"Erreur à la création de l'étape de calcul n°%d du maillage maa2\n",cstp);
/* ret = -1; */
}
cstp++;
if ( MEDmeshComputationStepCr(fid,"maa2",20,-1,
20,10,1.1) < 0) {
fprintf(stderr,"Erreur à la création de l'étape de calcul n°%d du maillage maa2\n",cstp);
/* ret = -1; */
}
cstp++;
fprintf(stderr,"Erreur attendue car cette étape ne se place pas en dernière position : \n");
if ( MEDmeshComputationStepCr(fid,"maa2",20,5,
20,5,1.1) < 0) {
fprintf(stderr,"Erreur à la création de l'étape de calcul n°%d du maillage maa2\n",cstp);
/* ret = -1; */
}
cstp++;
fprintf(stderr,"Erreur attendue car la création de cette étape chevauche la (20,10) : \n");
if ( MEDmeshComputationStepCr(fid,"maa2",20,-1,
20,20,1.1) < 0) {
fprintf(stderr,"Erreur à la création de l'étape de calcul n°%d du maillage maa2\n",cstp);
/* ret = -1; */
}
/* Creation du maillage "maa3" de type MED_UNSTRUCTURED_MESH
et de dimension 1 un espace de dimension 3*/
if (MEDmeshCr(fid,"maa3",3,1,MED_UNSTRUCTURED_MESH,
"un troisieme maillage","s",MED_SORT_DTIT,
MED_CARTESIAN,axisname,axisunit) < 0) {
MESSAGE("Erreur a la creation du maillage maa3");
ret = -1;
}
/* Fermeture du fichier */
if ( MEDfileClose(fid) < 0) {
MESSAGE("Erreur a la fermeture du fichier");
return -1;
}
return ret;
}
MED_ACC_RDONLY
Definition: med.h:122
MED_COMMENT_SIZE
#define MED_COMMENT_SIZE
Definition: med.h:81
MEDmeshComputationStepCr
MEDC_EXPORT med_err MEDmeshComputationStepCr(const med_idt fid, const char *const meshname, const med_int numdt1, const med_int numit1, const med_int numdt2, const med_int numit2, const med_float dt2)
Cette routine permet de créer une nouvelle étape de calcul dans un maillage.
Definition: MEDmeshComputationStepCr.c:40
MED_UNSTRUCTURED_MESH
Definition: med.h:133
MEDfileCommentRd
MEDC_EXPORT med_err MEDfileCommentRd(const med_idt fid, char *const comment)
Lecture d'un descripteur dans un fichier MED.
Definition: MEDfileCommentRd.c:33
MED_SNAME_SIZE
#define MED_SNAME_SIZE
Definition: med.h:84
MEDfileExist
MEDC_EXPORT med_err MEDfileExist(const char *const filename, const med_access_mode accessmode, med_bool *const fileexist, med_bool *const accessok)
Interroge l'existence d'un fichier de nom filename et la possibilité de l'ouvrir selon le mode d'accè...
Definition: MEDfileExist.c:51
med_idt
hid_t med_idt
Definition: med.h:333
MED_FALSE
Definition: med.h:262
med_err
herr_t med_err
Definition: med.h:334
MESSAGE
#define MESSAGE(chaine)
Definition: med_utils.h:324
MED_SORT_DTIT
Definition: med.h:311
med_bool
med_bool
Definition: med.h:262
MEDmeshUniversalNameWr
MEDC_EXPORT med_err MEDmeshUniversalNameWr(const med_idt fid, const char *const meshname)
Cette routine permet l'écriture du nom universel d'un maillage.
Definition: MEDmeshUniversalNameWr.c:63
MED_NO_DT
#define MED_NO_DT
Definition: med.h:322
MEDfileClose
MEDC_EXPORT med_err MEDfileClose(med_idt fid)
Fermeture d'un fichier MED.
Definition: MEDfileClose.c:30
MODE_ACCES
#define MODE_ACCES
Definition: 3.0.8/test10.c:34
MEDmeshCr
MEDC_EXPORT med_err MEDmeshCr(const med_idt fid, const char *const meshname, const med_int spacedim, const med_int meshdim, const med_mesh_type meshtype, const char *const description, const char *const dtunit, const med_sorting_type sortingtype, const med_axis_type axistype, const char *const axisname, const char *const axisunit)
Cette routine permet de créer un maillage dans un fichier.
Definition: MEDmeshCr.c:45
MED_CARTESIAN
Definition: med.h:260
med_utils.h
med.h
MED_NO_IT
#define MED_NO_IT
Definition: med.h:323
MEDfileCompatibility
MEDC_EXPORT med_err MEDfileCompatibility(const char *const filename, med_bool *const hdfok, med_bool *const medok)
Vérification de la compatibilité d'un fichier avec HDF et MED.
Definition: MEDfileCompatibility.c:34
MEDfileOpen
MEDC_EXPORT med_idt MEDfileOpen(const char *const filename, const med_access_mode accessmode)
Ouverture d'un fichier MED.
Definition: MEDfileOpen.c:42
main
int main(int argc, char **argv)
Definition: 3.0.8/test10.c:50