83 #define snprintf _snprintf
114 #define MDUMP_MAX_FILE_OPEN 200
115 #define MDUMP_MAX_FILE_OPEN_INIT {INIT2X(INIT10X(INIT10X(0))) }
137 #define MED_LECTURE_MAILLAGE_SUPPORT_UNIQUEMENT 2
138 #define MED_LECTURE_ENTETE_SEULEMENT 1
140 #define USER_MODE MED_COMPACT_STMODE
142 #define xstr(s) str(s)
145 #define MIN(a,b) ((a) < (b) ? (a) : (b))
146 #define MAX(a,b) ((a) > (b) ? (a) : (b))
148 #define MAXBANNERLEN 255
151 void affd(
const void *pva)
153 const double *pa = (
const double *) pva;
157 void affi(
const void *pva)
165 void affs(
const void *pva)
167 const char *pa = (
const char *) pva;
185 EXIT_IF(-1,
"lors de la lecture du type d'attribut à afficher.",NULL);
196 EXIT_IF(nfam < 0,
"lors de la lecture du nombre de familles",NULL);
197 fprintf(stdout,
"- Nombre de familles : "IFORMAT" \n",nfam);
206 char *attdes=NULL,*gro=NULL;
207 med_int *attval=NULL,*attide=NULL;
216 fprintf(stdout,
"\n(**************************)\n");
217 fprintf(stdout,
"(* FAMILLES DU MAILLAGE : *)\n");
218 fprintf(stdout,
"(**************************)\n");
221 for (i=0;i<nfam;i++) {
225 EXIT_IF(ngro < 0,
"lors de la lecture du nombre de groupe d'une famille",
230 EXIT_IF(natt < 0,
"lors de la lecture du nombre d'attributs d'une famille",
240 EXIT_IF(attide == NULL,NULL,NULL);
242 EXIT_IF(attval == NULL,NULL,NULL);
244 EXIT_IF(attdes == NULL,NULL,NULL);
246 EXIT_IF(gro == NULL,NULL,NULL);
249 EXIT_IF(ret < 0,
"lors de la lecture des informations d'une famille",
256 fprintf(stdout,
" - Famille de nom %s et de numero "IFORMAT" : \n",nomfam,numfam);
257 fprintf(stdout,
" - Attributs : \n");
258 for (j=0;j<natt;j++) {
261 fprintf(stdout,
" ide = "IFORMAT" - val = "IFORMAT" - des = %s\n",*(attide+j),
267 if (attide) {free(attide);attide=NULL;}
268 if (attval) {free(attval);attval=NULL;}
269 if (attdes) {free(attdes);attdes=NULL;}
272 fprintf(stdout,
" - Groupes :\n");
273 for (j=0;j<ngro;j++) {
276 fprintf(stdout,
" gro = %s\n",str2);
281 if (gro) {free(gro);gro=NULL;}
284 if (famille_0 != 1) {
285 MESSAGE(
"Erreur : La famille FAMILLE_ZERO n'a pas été trouvée, elle est obligatoire. ");
294 EXIT_IF(nequ < 0,
"lors de la lecture du nombre d'equivalences",NULL);
295 fprintf(stdout,
"- Nombre d'equivalences : "IFORMAT" \n",nequ);
315 fprintf(stdout,
"\n(******************************)\n");
316 fprintf(stdout,
"(* EQUIVALENCES DU MAILLAGE : *)\n");
317 fprintf(stdout,
"(******************************)\n");
321 for (i = 0;i<nequ;i++) {
325 EXIT_IF(ret < 0,
"lors de la lecture des informations sur une equivalence",
329 fprintf(stdout,
"- Equivalence numero : "IFORMAT" ",i+1);
330 fprintf(stdout,
"\n - Nom de l'equivalence: %s \n",equ);
331 fprintf(stdout,
"\n - Description de l'equivalence : %s \n",des);
333 fprintf(stdout,
"\n - L'equivalence est définie sur "IFORMAT" étapes de calcul\n",nstep);
336 for (_cstpit=1; _cstpit <= nstep; ++_cstpit) {
339 & _numdt, &_numit,&nocstpncor);
341 "lors de la lecture des valeurs d'étape de calcul d'une equivalence",
345 fprintf(stdout,
"\n - Etape de calcul définie sur (numdt,numit) ("IFORMAT","IFORMAT") :\n",_numdt,_numit);
352 "lors de la lecture du nombre de correspondances d'une equivalence",
354 fprintf(stdout,
"\n - Il y a "IFORMAT" correspondances sur les noeuds \n",ncor);
360 EXIT_IF(cor == NULL,NULL,NULL);
363 EXIT_IF(ret < 0,
"lors de la lecture du tableau des correspondances",
378 "lors de la lecture du nombre de correspondances dans une equivalence",
380 fprintf(stdout,
"\n - Il y a "IFORMAT" correspondances sur les mailles %s \n",ncor,
387 EXIT_IF(cor == NULL,NULL,NULL);
390 EXIT_IF(ret < 0,
"lors de la lecture du tableau des equivalences",
396 *(cor+2*k),*(cor+2*k+1));
410 "lors de la lecture du nombre de correspondances dans une equivalence",
412 fprintf(stdout,
"\n - Il y a "IFORMAT" correspondances sur les faces %s\n",ncor,
419 EXIT_IF(cor == NULL,NULL,NULL);
422 EXIT_IF(ret < 0,
"lors de la lecture du tableau des equivalences",
440 EXIT_IF(ret < 0,
"lors de la lecture du nombre de correspondances",
442 fprintf(stdout,
"\n - Il y a "IFORMAT" correspondances sur les aretes %s \n",
449 EXIT_IF(cor == NULL,NULL,NULL);
452 EXIT_IF(ret < 0,
"lors de la lecture du tableau des equivalences",
474 EXIT_IF(njnt < 0,
"lors de la lecture du nombre de joints",NULL);
475 fprintf(stdout,
"- Nombre de joints : "IFORMAT" \n",njnt);
487 med_int typ_geo_local,typ_geo_distant;
497 med_int njstep=0,ncor=0,nodtitncor=0;
502 fprintf(stdout,
"\n(******************************)\n");
503 fprintf(stdout,
"(* JOINTS DU MAILLAGE : *)\n");
504 fprintf(stdout,
"(******************************)\n");
508 for (i = 0;i<njnt;i++) {
509 fprintf(stdout,
"\n- Joint numero : "IFORMAT" ",i+1);
513 EXIT_IF(ret < 0,
"lors de la lecture des informations sur un joint",
516 fprintf(stdout,
"\n - Nom du joint: %s \n",jn);
517 fprintf(stdout,
"\n - Description du joint : %s ",des);
518 fprintf(stdout,
"\n - Domaine en regard : "IFORMAT" ",ndom);
519 fprintf(stdout,
"\n - Maillage distant : %s ",maa_dist);
521 printf(
"Nombre d'étapes de calcul : "IFORMAT" \n",njstep);
522 printf(
"Nombre de correspondance pour (NO_DT,NO_IT) : "IFORMAT" \n",nodtitncor);
525 for (csit=1; csit <= njstep; ++csit) {
528 EXIT_IF(ret < 0,
"Erreur a la lecture des valeurs (numdt,numit) dans les joints",
531 printf(
"Etape de calcul (numdt,numit) : ("IFORMAT","IFORMAT")\n",_numdt,_numit);
534 while ( corit <= ncor ) {
540 EXIT_IF(ret < 0,
"Erreur a la lecture des infos sur le nombre d'entite en regard",
543 if (typ_ent_local ==
MED_NODE) strcpy(nom_geo_ent_local,
"MED_NOEUD");
545 EXIT_IF(ret < 0,
"Erreur à l'appel de _MEDgetInternalGeometryTypeName", NULL);
546 if (typ_ent_distant ==
MED_NODE) strcpy(nom_geo_ent_distant,
"MED_NOEUD");
548 EXIT_IF(ret < 0,
"Erreur à l'appel de _MEDgetInternalGeometryTypeName", NULL);
549 fprintf(stdout,
"\n\t\t- nb de couples d'entites en regard (local,distant)=(%s,%s) : "IFORMAT" \n",
550 nom_geo_ent_local,nom_geo_ent_distant, nent);
555 typ_ent_local,typ_geo_local,typ_ent_distant,typ_geo_distant,
557 fprintf(stdout,
"\n\t\t- Erreur a la lecture des correspondances sur (%s,%s,%s,%s)",
564 *(cortab+2*k),*(cortab+2*k+1));
591 EXIT_IF(nnoe < 0,
"lors de la lecture du nombre de noeuds",NULL);
592 fprintf(stdout,
"- Nombre de noeuds : "IFORMAT" \n",nnoe);
599 const char *
const nommaa,
606 const char *
const nomcoo,
607 const char *
const unicoo,
624 EXIT_IF(coo == NULL,NULL,NULL);
628 EXIT_IF(numnoe == NULL,NULL,NULL);
630 EXIT_IF(nufano == NULL,NULL,NULL);
634 EXIT_IF(nomnoe == NULL,NULL,NULL);
642 &inonoe,nomnoe,&inunoe,numnoe,&ifano,nufano);
645 EXIT_IF(ret < 0,
"lors de la lecture des noeuds du maillage \n",NULL);
649 fprintf(stdout,
"\n(************************)\n");
650 fprintf(stdout,
"(* NOEUDS DU MAILLAGE : *)\n");
651 fprintf(stdout,
"(************************)\n\n");
654 fprintf(stdout,
"- Type de repere des coordonnees : %d \n",*rep);
655 fprintf(stdout,
"- Nom des coordonnees : \n");
656 for (i=0;i<edim;i++) {
659 fprintf(stdout,
" %s ",
str);
661 fprintf(stdout,
"\n- Unites des coordonnees : \n");
662 for (i=0;i<edim;i++) {
665 fprintf(stdout,
" %s ",
str);
667 fprintf(stdout,
"\n- Coordonnees des noeuds : ");
668 for (i=0;i<nnoe*edim;i++) {
670 fprintf(stdout,
"\n [ %5"MED_IFORMAT" ] : ", (i/edim + 1) );
672 fprintf(stdout,
"\n\n ");
673 fprintf(stdout,
" %-+9.6f ",*(coo+i));
677 fprintf(stdout,
"\n- Noms des noeuds : \n");
678 for (i=0;i<nnoe;i++) {
681 fprintf(stdout,
" %s ",
str);
685 fprintf(stdout,
"\n- Numeros des noeuds : \n");
687 fprintf(stdout,
" "IFORMAT" ",*(numnoe+i));
690 fprintf(stdout,
"\n- Numeros des familles des noeuds : \n");
691 for (i=0;i<nnoe;i++) {
693 fprintf(stdout,
" "IFORMAT" ",*(nufano+i));
695 fprintf(stdout,
" %d ",0);
697 fprintf(stdout,
"\n");
712 const char *
const nommaa,
725 EXIT_IF(nmailles < 0,
" lors de la lecture du nombre de mailles",NULL);
730 fprintf (stdout,
"- Nombre de mailles de type %s : "IFORMAT" \n",
nommai[indice],
737 const char *
const nommaa,
750 indice+1,geotypename,geotype );
752 "Erreur à la demande d'informations pour le type d'entités MED_STRUCT_ELEMENT",NULL);
758 EXIT_IF(_nmailles < 0,
" lors de la lecture du nombre de mailles",NULL);
761 fprintf (stdout,
"- Nombre de mailles de type %s : "IFORMAT" \n",geotypename, _nmailles);
767 const char *
const nommaa,
772 const char*
const geotypename,
773 const med_int *
const nmailles,
802 void *_attvalue=NULL;
803 void (*_printf)(
const void*);
807 for (i=0; i<nmodels; i++ ) {
810 &_geotype,&_elementdim,
811 _supportmeshname,&_entitytype,&_nnode,&_ncell,
812 &_geocelltype,&_nconstantatribute,&_anyprofile,&_nvariableattribute);
815 taille=_ncell*_geocelltype%100;
825 connectivite = (
med_int*) calloc(taille*nmailles[i],
sizeof(
med_int));
826 EXIT_IF(connectivite == NULL,NULL,NULL);
827 nomele = (
char*) malloc(
sizeof(
char)*
MED_SNAME_SIZE*nmailles[i]+1);
828 EXIT_IF(nomele == NULL,NULL,NULL);
830 EXIT_IF(numele == NULL,NULL,NULL);
832 EXIT_IF(nufael == NULL,NULL,NULL);
837 &inoele,nomele,&inuele,numele,&inufael,nufael );
839 EXIT_IF(_ret < 0,
"lors de la lecture des mailles",NULL);
843 fprintf(stdout,
"\n(***************************************)\n");
844 fprintf(stdout,
"(* ELEMENTS DE STRUCTURE DU MAILLAGE : *)\n");
845 fprintf(stdout,
"(***************************************)\n");
850 fprintf(stdout,
"\n- Mailles de type %s : ", &geotypename[i*(
MED_NAME_SIZE+1)]);
851 if (strcmp(&geotypename[i*(
MED_NAME_SIZE+1)],
"MED_PARTICLE") ) {
852 fprintf(stdout,
"\n - Connectivité : ");
853 for (j=0;j<nmailles[i]*taille;j++) {
855 fprintf(stdout,
"\n [ %5"MED_IFORMAT" ] : ", (j/taille +1) );
857 fprintf(stdout,
"\n");
858 fprintf(stdout,
" %9"MED_IFORMAT" ",*(connectivite+j));
863 fprintf(stdout,
"\n - Noms : \n");
864 for (j=0;j<nmailles[i];j++) {
867 fprintf(stdout,
" %s ",
str);
871 fprintf(stdout,
"\n - Numeros :\n");
872 for (j=0;j<nmailles[i];j++)
873 fprintf(stdout,
" "IFORMAT" ",*(numele+j));
875 fprintf(stdout,
"\n - Numéros de familles : \n");
876 for (j=0;j<nmailles[i];j++)
878 fprintf(stdout,
" "IFORMAT" ",*(nufael+j));
880 fprintf(stdout,
" %d ",0);
881 fprintf(stdout,
"\n");
886 for (k=0; k<_nvariableattribute; k++) {
890 _attname, &_atttype, &_nattcomp);
891 EXIT_IF(_ret < 0,
"lors de la lecture des caractéristiques de attributs variables",NULL);
895 EXIT_IF(_atttype ==
MED_ATT_UNDEF,
"à la lecture du type (valeur : MED_ATT_UNDEF) de l'attribut variable ",_attname);
898 _attvaluesize = nmailles[i]*_nattcomp*_atttypesize;
900 _attvalue = (
void *) malloc( _attvaluesize*
sizeof(
char));
905 *(geotype+i), _attname, _attvalue );
906 if (_ret < 0 ) free(_attvalue);
907 EXIT_IF(_ret < 0,
"lors de la lecture des attributs variables",NULL);
912 fprintf(stdout,
"\n - Valeurs de l'attribut |%s| pour le type géométrique |%s| : \n",_attname,
914 for (j=0;j<nmailles[i]*_nattcomp;j++) {
915 if ( ( _nattcomp > 1 ) && !(j % _nattcomp) )
916 fprintf(stdout,
"\n [ %5"MED_IFORMAT" ] : ", (j/_nattcomp +1) );
917 _printf( (
void *)( (
char *)(_attvalue) + j*_atttypesize) );
940 const med_int *
const nmailles,
960 if (nmailles[i] > 0) {
963 EXIT_IF(ret < 0,
"lors de la lecture des caractéristiques des mailles",NULL);
979 connectivite = (
med_int*) malloc(
sizeof(
med_int)*taille*nmailles[i]);
980 EXIT_IF(connectivite == NULL,NULL,NULL);
981 nomele = (
char*) malloc(
sizeof(
char)*
MED_SNAME_SIZE*nmailles[i]+1);
982 EXIT_IF(nomele == NULL,NULL,NULL);
984 EXIT_IF(numele == NULL,NULL,NULL);
986 EXIT_IF(nufael == NULL,NULL,NULL);
990 typ_con, mode_coo, connectivite,
991 &inoele,nomele,&inuele,numele,&inufael,nufael );
993 EXIT_IF(ret < 0,
"lors de la lecture des mailles",NULL);
996 fprintf(stdout,
"\n(**************************)\n");
997 fprintf(stdout,
"(* ELEMENTS DU MAILLAGE : *)\n");
998 fprintf(stdout,
"(**************************)\n");
1003 fprintf(stdout,
"\n- Mailles de type %s : ",
nommai[i]);
1004 fprintf(stdout,
"\n - Connectivité : ");
1005 for (j=0;j<nmailles[i]*taille;j++) {
1007 fprintf(stdout,
"\n [ %5"MED_IFORMAT" ] : ", (j/taille +1) );
1009 fprintf(stdout,
"\n");
1010 fprintf(stdout,
" %9"MED_IFORMAT" ",*(connectivite+j));
1014 fprintf(stdout,
"\n - Noms : \n");
1015 for (j=0;j<nmailles[i];j++) {
1018 fprintf(stdout,
" %s ",
str);
1022 fprintf(stdout,
"\n - Numeros :\n");
1023 for (j=0;j<nmailles[i];j++)
1024 fprintf(stdout,
" "IFORMAT" ",*(numele+j));
1026 fprintf(stdout,
"\n - Numéros de familles : \n");
1027 for (j=0;j<nmailles[i];j++)
1029 fprintf(stdout,
" "IFORMAT" ",*(nufael+j));
1031 fprintf(stdout,
" %d ",0);
1032 fprintf(stdout,
"\n");
1047 const char *
const nommaa,
1067 EXIT_IF(nmpolygones < 0,
"lors de la lecture du nombre de mailles polygone\n",
1069 if (nmpolygones > 0 ) nmpolygones--;
else nmpolygones=0;
1072 fprintf(stdout,
"- Nombre de mailles de type %s : "IFORMAT" \n",
1073 polytypename,nmpolygones);
1075 polytypename[0]=
'\0';
1080 const char *
const nommaa,
1112 EXIT_IF(taille < 0,
"lors de la lecture des parametres des mailles polygones",
1117 EXIT_IF(indexp == NULL,NULL,NULL);
1119 EXIT_IF(connectivite == NULL,NULL,NULL);
1121 EXIT_IF(numele == NULL,NULL,NULL);
1123 EXIT_IF(nufael == NULL,NULL,NULL);
1124 nomele = (
char *) malloc(
sizeof(
char)*
MED_SNAME_SIZE*nmpolygones+1);
1125 EXIT_IF(nomele == NULL,NULL,NULL);
1129 indexp,connectivite);
1131 EXIT_IF(ret < 0,
"lors de la lecture des connectivites des mailles polygones",
1149 fprintf(stdout,
"\n\n- Mailles de type %s : ",polytypename);
1150 for (i=0;i<nmpolygones;i++) {
1151 fprintf(stdout,
"\n >> Maille MED_POLYGONE "IFORMAT" : \n",i+1);
1152 fprintf(stdout,
"\n - Connectivité : ");
1153 ind1 = *(indexp+i)-1;
1154 ind2 = *(indexp+i+1)-1;
1155 for (j=ind1;j<ind2;j++)
1156 printf(
" "IFORMAT" ",*(connectivite+j));
1160 fprintf(stdout,
"\n - Nom : %s \n",tmp);
1163 fprintf(stdout,
"\n - Numero : "IFORMAT" \n",*(numele+i));
1166 fprintf(stdout,
"\n - Numéro de famille : "IFORMAT" \n",*(nufael+i));
1168 fprintf(stdout,
"\n - Numéro de famille : %d \n",0);
1170 polytypename[0]=
'\0';
1185 const char *
const nommaa,
1196 EXIT_IF(npolyedres < 0,
"lors de la lecture du nombre de mailles polyedre \n",
1198 if ( npolyedres > 0 ) npolyedres--;
else npolyedres=0;
1200 fprintf(stdout,
"- Nombre de mailles de type MED_POLYEDRE : "IFORMAT" \n",
1208 const char *
const nommaa,
1236 EXIT_IF(taille < 0,
"lors de la lecture des parametres des mailles polyedres",
1242 EXIT_IF(nindn < 0,
"lors de la lecture des parametres des mailles polyedres",
1248 EXIT_IF(indexf == NULL,NULL,NULL);
1250 EXIT_IF(indexn == NULL,NULL,NULL);
1252 EXIT_IF(connectivite == NULL,NULL,NULL);
1254 EXIT_IF(numele == NULL,NULL,NULL);
1256 EXIT_IF(nufael == NULL,NULL,NULL);
1257 nomele = (
char *) malloc(
sizeof(
char)*
MED_SNAME_SIZE*npolyedres+1);
1258 EXIT_IF(nomele == NULL,NULL,NULL);
1261 indexf,indexn,connectivite);
1263 "lors de la lecture de la connectivite des mailles polyedres",
1277 fprintf(stdout,
"\n\n- Mailles de type MED_POLYEDRE : ");
1278 for (i=0;i<npolyedres;i++) {
1279 fprintf(stdout,
"\n >> Maille MED_POLYEDRE "IFORMAT" : \n",i+1);
1280 fprintf(stdout,
"\n - Connectivité : \n");
1281 nfa = *(indexf+i+1) - *(indexf+i);
1283 ind1 = *(indexf+i) - 1;
1284 for (j=0;j<nfa;j++) {
1288 ind2 = *(indexn+ind1+j) - 1;
1289 nnoe = *(indexn+ind1+j+1) - *(indexn+ind1+j);
1290 fprintf(stdout,
" - Face "IFORMAT" : [ ", j+1);
1291 for (k=0;k<nnoe;k++)
1292 printf(
" "IFORMAT" ",*(connectivite+ind2+k));
1296 nfa = *(indexf+i+1) - *(indexf+i);
1299 ind1 = *(indexf+i) - 1;
1302 *(connectivite+ind1+j),*(indexn+ind1+j));
1308 fprintf(stdout,
"\n - Nom : %s \n",tmp);
1311 fprintf(stdout,
"\n - Numero : "IFORMAT" \n",*(numele+i));
1313 fprintf(stdout,
"\n - Numéro de famille : "IFORMAT" \n",*(nufael+i));
1315 fprintf(stdout,
"\n - Numéro de famille : %d \n",0);
1332 const char *
const nommaa,
1345 EXIT_IF(nfaces < 0,
"lors de la lecture du nombre de faces",NULL);
1350 fprintf (stdout,
"- Nombre de faces de type %s : "IFORMAT" \n",
1357 const char *
const nommaa,
1377 if (nfaces[i] > 0 ) {
1381 EXIT_IF(ret < 0,
"lors de la lecture des caractéristiques des mailles",NULL);
1384 connectivite = (
med_int*)malloc(
sizeof(
med_int)*taille*nfaces[i]);
1385 EXIT_IF(connectivite == NULL,NULL,NULL);
1387 EXIT_IF(nomele == NULL,NULL,NULL);
1389 EXIT_IF(numele == NULL,NULL,NULL);
1391 EXIT_IF(nufael == NULL,NULL,NULL);
1396 &inoele,nomele,&inuele,numele,&inufael,nufael );
1397 EXIT_IF(ret < 0,
"lors de la lecture des faces",NULL);
1401 fprintf(stdout,
"\n- Faces de type %s : ",
nomfac[i]);
1402 fprintf(stdout,
"\n - Connectivité : ");
1403 for (j=0;j<nfaces[i]*taille;j++) {
1405 fprintf(stdout,
"\n [ %5"MED_IFORMAT" ] : ", (j/taille+1) );
1407 fprintf(stdout,
"\n");
1408 fprintf(stdout,
" %9"MED_IFORMAT" ",*(connectivite+j));
1412 fprintf(stdout,
"\n - Noms : \n");
1413 for (j=0;j<nfaces[i];j++) {
1416 fprintf(stdout,
" %s ",
str);
1420 fprintf(stdout,
"\n - Numeros :\n");
1421 for (j=0;j<nfaces[i];j++)
1422 fprintf(stdout,
" "IFORMAT" ",*(numele+j));
1424 fprintf(stdout,
"\n - Numéros de familles : \n");
1425 for (j=0;j<nfaces[i];j++)
1427 fprintf(stdout,
" "IFORMAT" ",*(nufael+j));
1429 fprintf(stdout,
" %d ",0);
1443 const char *
const nommaa,
1454 EXIT_IF(nfpolygones < 0,
"lors de la lecture du nombre de faces polygone \n",
1456 if (nfpolygones > 0 ) nfpolygones--;
else nfpolygones=0;
1458 fprintf(stdout,
"- Nombre de faces de type MED_POLYGONE : "IFORMAT" \n",
1465 const char *
const nommaa,
1488 EXIT_IF(taille < 0,
"lors de la lecture des parametres des faces polygones",
1493 EXIT_IF(indexp == NULL,NULL,NULL);
1495 EXIT_IF(connectivite == NULL,NULL,NULL);
1497 EXIT_IF(numele == NULL,NULL,NULL);
1499 EXIT_IF(nufael == NULL,NULL,NULL);
1500 nomele = (
char *) malloc(
sizeof(
char)*
MED_SNAME_SIZE*nfpolygones+1);
1501 EXIT_IF(nomele == NULL,NULL,NULL);
1505 indexp,connectivite);
1506 EXIT_IF(ret < 0,
"lors de la lecture des connectivites des faces polygones", NULL);
1522 fprintf(stdout,
"\n\n- Faces de type MED_POLYGONE : ");
1523 for (i=0;i<nfpolygones;i++) {
1524 fprintf(stdout,
"\n >> Face MED_POLYGONE "IFORMAT" : \n",i+1);
1525 fprintf(stdout,
"\n - Connectivité : ");
1526 ind1 = *(indexp+i)-1;
1527 ind2 = *(indexp+i+1)-1;
1528 for (j=ind1;j<ind2;j++)
1529 fprintf(stdout,
" "IFORMAT" ",*(connectivite+j));
1533 fprintf(stdout,
"\n - Nom : %s \n",tmp);
1536 fprintf(stdout,
"\n - Numero : "IFORMAT" \n",*(numele+j));
1538 fprintf(stdout,
"\n - Numéro de famille : "IFORMAT" \n",*(nufael+i));
1540 fprintf(stdout,
"\n - Numéro de famille : %d \n",0);
1556 const char *
const nommaa,
1568 EXIT_IF(naretes < 0,
"lors de la lecture du nombre d'aretes",NULL);
1573 "- Nombre d'aretes de type %s : "IFORMAT" \n",
nomare[indice],naretes);
1579 const char *
const nommaa,
1583 const med_int *
const naretes,
1599 if (naretes[i] > 0) {
1602 EXIT_IF(ret < 0,
"lors de la lecture des caractéristiques des mailles",NULL);
1605 connectivite = (
med_int*)malloc(
sizeof(
med_int)*taille*naretes[i]);
1606 EXIT_IF(connectivite == NULL,NULL,NULL);
1607 nomele = (
char*)malloc(
sizeof(
char)*
MED_SNAME_SIZE*naretes[i]+1);
1608 EXIT_IF(nomele == NULL,NULL,NULL);
1610 EXIT_IF(numele == NULL,NULL,NULL);
1612 EXIT_IF(nufael == NULL,NULL,NULL);
1617 &inoele,nomele,&inuele,numele,&inufael,nufael );
1618 EXIT_IF(ret < 0,
"lors de la lecture des aretes",
1623 fprintf(stdout,
"\n- Aretes de type %s : ",
nomare[i]);
1624 fprintf(stdout,
"\n - Connectivité : ");
1625 for (j=0;j<naretes[i]*taille;j++) {
1627 fprintf(stdout,
"\n [ %5"MED_IFORMAT" ] : ", (j/taille+1) );
1629 fprintf(stdout,
"\n");
1630 fprintf(stdout,
" %9"MED_IFORMAT" ",*(connectivite+j));
1634 fprintf(stdout,
"\n - Noms : \n");
1635 for (j=0;j<naretes[i];j++) {
1638 fprintf(stdout,
" %s ",
str);
1642 fprintf(stdout,
"\n - Numeros :\n");
1643 for (j=0;j<naretes[i];j++)
1644 fprintf(stdout,
" "IFORMAT" ",*(numele+j));
1646 fprintf(stdout,
"\n - Numéros de familles : \n");
1647 for (j=0;j<naretes[i];j++)
1649 fprintf(stdout,
" "IFORMAT" ",*(nufael+j));
1651 fprintf(stdout,
" %d ",0);
1689 const char *
const nomcoo,
1690 const char *
const unicoo,
1694 char** geotypename_elst,
1695 const int lecture_en_tete_seulement)
1704 med_int nmpolygones,nmpolygones2, npolyedres, nfpolygones;
1712 med_int _nmodels=0,*_nmailles_elst = NULL;
1714 char *_geotypename_elst = NULL;
1725 "Erreur à la lecture du nombre de type géométrique pour le type d'entités MED_STRUCT_ELEMENT",NULL);
1729 _geotypename_elst = (
char *) malloc(_nmodels*
sizeof(
char)*(
MED_NAME_SIZE+1));
1731 for (i=0; i < _nmodels; i++) {
1736 *nmodels = _nmodels;
1737 *geotype_elst = _geotype_elst;
1738 *geotypename_elst = _geotypename_elst;
1794 lecture_noeuds_maillage_non_structure(fid,nommaa,numdt,numit,mdim,edim,nnoe,mode_coo,nomcoo,unicoo,rep);
1818 _geotype_elst,_geotypename_elst,_nmailles_elst,mode_coo);
1827 if (nmpolygones > 0)
1831 if (nmpolygones2 > 0)
1842 if (nfpolygones > 0)
1877 const char *
const nommaa,
1895 EXIT_IF(ret < 0,
"a la lecture du type d'une grille ",NULL);
1902 fprintf(stdout,
"- Type de grille : MED_GRILLE_CARTESIENNE \n");
1904 fprintf(stdout,
"- Type de grille : MED_GRILLE_POLAIRE \n");
1905 for (axe=1;axe<=mdim;axe++) {
1924 "lors de la lecture de la taille d'un indice d'une grille",
1926 *nnoe = nind[axe - 1] * (*nnoe);
1927 *nmai = (nind[axe - 1] - 1) * (*nmai);
1929 "- Taille de l'indice de l'axe "IFORMAT" des coordonnees : "IFORMAT" \n",
1935 fprintf(stdout,
"- Type de grille : MED_GRILLE_DESTRUCTUREE \n");
1938 EXIT_IF(*nnoe < 0,
"lors de la lecture du nombre de noeuds du maillage "
1943 EXIT_IF(structure_grille == NULL,NULL,NULL);
1947 EXIT_IF(ret < 0,
"lors de la lecture de la structure de la grille",
1949 fprintf(stdout,
"- Structure de la grille : [ ");
1950 for (j=0;j<mdim;j++) {
1951 *nmai = (*(structure_grille+j) - 1) * (*nmai);
1952 fprintf(stdout,
" "IFORMAT" ",*(structure_grille+j));
1954 fprintf(stdout,
" ] \n");
1956 free(structure_grille);
1961 EXIT_IF(-1,
"Type de grille non reconnu.",nommaa);
1965 fprintf(stdout,
"- Nombre de noeuds : "IFORMAT" \n",*nnoe);
1966 fprintf(stdout,
"- Nombre de mailles : "IFORMAT" \n",*nmai);
1973 const char *
const nommaa,
1980 const char *
const comp,
1981 const char *
const unit,
1992 char *nomnoe = NULL;
1995 fprintf(stdout,
"\n(*************************)\n");
1996 fprintf(stdout,
"(* NOEUDS DE LA GRILLE : *)\n");
1997 fprintf(stdout,
"(*************************)\n");
2004 for (axe = 1; axe<=mdim; axe++) {
2007 EXIT_IF(indices == NULL,NULL,NULL);
2011 EXIT_IF(ret < 0,
"lors de la lecture d'un tableau d'indice",
2015 for (j=0;j<nind[axe - 1];j++)
2016 fprintf(stdout,
" %f ",*(indices+j));
2026 EXIT_IF(coo == NULL,NULL,NULL);
2030 EXIT_IF(ret < 0,
"lors de la lecture des noeuds du maillage",NULL);
2032 fprintf(stdout,
"- Nom des coordonnees : \n");
2033 for (i=0;i<edim;i++) {
2036 fprintf(stdout,
" %s ",
str);
2038 fprintf(stdout,
"\n- Unites des coordonnees : \n");
2039 for (i=0;i<edim;i++) {
2042 fprintf(stdout,
" %s ",
str);
2045 fprintf(stdout,
"\n - Coordonnees des noeuds : [ ");
2046 for (j=0;j<nnoe*edim;j++)
2047 fprintf(stdout,
" %f ",*(coo+j));
2048 fprintf(stdout,
" ] \n");
2057 EXIT_IF(-1,
"Type de grille non reconnu.",nommaa);
2068 EXIT_IF(numnoe == NULL,NULL,NULL);
2070 EXIT_IF(nomnoe == NULL,NULL,NULL);
2072 EXIT_IF(nufano == NULL,NULL,NULL);
2076 if (ret < 0) ret=0;
else inufael=
MED_TRUE;
2078 EXIT_IF(ret < 0,
"lors de la lecture des numeros de familles des noeuds",
2082 fprintf(stdout,
"\n- Numeros des familles des noeuds : \n");
2083 for (i=0;i<nnoe;i++)
2085 fprintf(stdout,
" "IFORMAT" ",*(nufano+i));
2087 fprintf(stdout,
" %d ",0);
2088 fprintf(stdout,
"\n");
2094 fprintf(stdout,
"\n- Noms des noeuds : \n");
2095 for (i=0;i<nnoe;i++) {
2098 fprintf(stdout,
" %s ",
str);
2106 fprintf(stdout,
"\n- Numeros des noeuds : \n");
2107 for (i=0;i<nnoe;i++)
2108 fprintf(stdout,
" "IFORMAT" ",*(numnoe+i));
2122 const char *
const nommaa,
2132 char *nomele = NULL;
2138 fprintf(stdout,
"\n(***************************)\n");
2139 fprintf(stdout,
"(* ELEMENTS DE LA GRILLE : *)\n");
2140 fprintf(stdout,
"(***************************)\n");
2165 EXIT_IF(numele == NULL,NULL,NULL);
2167 EXIT_IF(nomele == NULL,NULL,NULL);
2169 EXIT_IF(nufael == NULL,NULL,NULL);
2174 for (i=0;i<nmai;i++)
2179 fprintf(stdout,
"\n- Numeros des familles des mailles : \n");
2180 for (i=0;i<nmai;i++)
2181 fprintf(stdout,
" "IFORMAT" ",*(nufael+i));
2182 fprintf(stdout,
"\n");
2188 fprintf(stdout,
"\n - Noms : \n");
2189 for (i=0;i<nmai;i++) {
2192 fprintf(stdout,
" %s ",
str);
2200 fprintf(stdout,
"\n - Numeros :\n");
2201 for (i=0;i<nmai;i++)
2202 fprintf(stdout,
" "IFORMAT" ",*(numele+i));
2215 const char *
const nommaa,
2221 const char *
const comp,
2222 const char *
const unit,
2223 const int lecture_en_tete_seulement)
2254 if (lecture_en_tete_seulement)
2260 lecture_noeuds_maillage_structure(fid,nommaa,numdt,numit,mdim,edim,nind,nnoe,comp,unit,type,mode_coo);
2286 const char *
const maillage,
2291 const char*
const geotypename_elst,
2292 const char *
const nomcha,
2293 const char *
const dtunit,
2296 const char *
const comp,
2297 const char *
const unit,
2302 int i,j,k,l,m,n,nb_geo=0;
2303 med_int nbpdtnor=0,pflsize,*pflval,ngauss=0,ngroup,nval;
2304 unsigned char *val = NULL;
2305 med_int numdt=0,numo=0,_nprofile;
2306 med_int meshnumdt=0,meshnumit=0;
2320 size_t _bannerlen=255;
2321 size_t _bannerlen1=0,_bannershift1=0;
2323 char * _bannerstr1=NULL;
2324 size_t _bannerlen2=0,_bannershift2=0;
2326 char * _bannerstr2=NULL;
2328 const char *
const * AFF;
2330 const char * * AFF_STRUCT = NULL;
2355 AFF_STRUCT = (
const char * *) calloc(
sizeof(
const char * ),nmodels+1);
2356 for(i=0;i<nmodels;++i) AFF_STRUCT[i+1]= &geotypename_elst[(
MED_NAME_SIZE+1)*i];
2384 for (k=1;k<=nb_geo;k++) {
2388 if (nbpdtnor < 1 )
continue;
2390 for (j=0;j<nbpdtnor;j++) {
2393 &nmesh, maa_ass, &localmesh, &meshnumdt, &meshnumit ) <0) {
2394 MESSAGE(
"Erreur a la demande d'information sur (pdt,nor) : ");
2400 for (i=0;i< nmesh;++i) {
2403 meshname,pflname,locname ) ) < 0 ) {
2404 MESSAGE(
"Erreur a la demande du nombre de profils referencés par le champ : ");
2411 for (l=0;l<_nprofile;l++) {
2415 locname, &ngauss) ) < 0 ) {
2416 MESSAGE(
"Erreur a la lecture du nombre de valeurs du champ : ");
2426 if ( ( (!strcmp(meshname,maillage)) && (meshnumdt == mnumdt) && (meshnumit == mnumit)) ||
2427 ( !strlen(maillage) )
2431 _bannerstr1 =
"(* CHAMP |%s| A L'ÉTAPE DE CALCUL (n°dt,n°it)="
2434 _bannerstr2 =
"(* SUR LE MAILLAGE |%s| A L'ÉTAPE DE CALCUL (n°dt,n°it)="
2436 snprintf(_temp1,
MAXBANNERLEN+1,_bannerstr1,nomcha,numdt,numo,0,
"");
2437 snprintf(_temp2,
MAXBANNERLEN+1,_bannerstr2,meshname,meshnumdt,meshnumit,0,
"");
2438 _bannerlen1 = strlen(_temp1);
2439 _bannerlen2 = strlen(_temp2);
2440 _bannerlen=
MAX(_bannerlen1,_bannerlen2);
2441 if (_bannerlen1>_bannerlen2) {
2442 _bannershift1 = 0; _bannershift2 = _bannerlen1-_bannerlen2;
2444 _bannershift2 = 0; _bannershift1 = _bannerlen2-_bannerlen1;
2446 fprintf(stdout,
"\n(");
2447 for (i=0;i< _bannerlen-6; i++) fprintf(stdout,
"*");
2448 fprintf(stdout,
")\n");
2449 fprintf(stdout,_bannerstr1,nomcha,numdt,numo,_bannershift1,
MED_NAME_BLANK);
2450 fprintf(stdout,_bannerstr2,meshname,meshnumdt,meshnumit,_bannershift2,
MED_NAME_BLANK);
2451 fprintf(stdout,
"(");
2452 for (i=0;i< _bannerlen-6; i++) fprintf(stdout,
"*");
2453 fprintf(stdout,
")\n");
2465 fprintf(stdout,
"- Valeur de la date du champ %f [%s] : \n",dt,dtunit);
2466 fprintf(stdout,
"- Type des composantes du champ : %d\n",typcha);
2467 fprintf(stdout,
"- Nombre de composantes par valeur : "IFORMAT"\n",ncomp);
2468 fprintf(stdout,
"- Unité des composantes : |%s|\n",unit);
2469 fprintf(stdout,
"- Nom des composantes : |%s|\n",comp);
2471 printf(
"\t- Il y a "IFORMAT" entités qui portent des valeurs en mode %i."
2472 "\n\t Chaque entite %s de type geometrique %s associes au profil |%s| a "IFORMAT" point(s) d'intégration \n",
2473 nval,
USER_MODE,AFF_ENT[(
int)entite],AFF[k],pflname,ngauss);
2479 MESSAGE(
"Erreur a la lecture de la taille du lien : ");
2483 lien = (
char *)malloc(lnsize*
sizeof(
char) + 1);
2484 EXIT_IF(lien == NULL,NULL,NULL);
2486 if (
MEDlinkRd(fid, maa_ass, lien) < 0 ) {
2487 MESSAGE(
"Erreur a la lecture du lien : ");
2491 lien[lnsize] =
'\0';
2492 printf(
"\tLe maillage |%s| est porte par un fichier distant |%s|\n",maa_ass,lien);
2506 MESSAGE(
"Erreur a la lecture du type de champ : ");
2508 EXIT_IF(NULL == NULL,NULL,NULL);
2511 val = (
unsigned char*) calloc(ncomp*nval*ngauss,medtype_size);
2512 EXIT_IF(val == NULL,NULL,NULL);
2517 (
unsigned char*) val) < 0 ) {
2518 MESSAGE(
"Erreur a la lecture des valeurs du champ : ");
2524 if ( strlen(locname) && (_nprofile > 1) )
2525 printf(
"\t- Modèle de localisation des points de Gauss de nom |%s|\n",locname);
2528 ngroup = (type_geo[k] % 100);
2536 printf(
"\t- Valeurs :\n\t");
2537 for (m=0;m<(nval*ngauss)/ngroup;m++) {
2539 for (n=0;n<ngroup*ncomp;n++)
2542 printf(
" %f ",*(((
med_double*)val)+(m*ngroup*ncomp)+n ) );
2547 printf(
" %f ",*(((
med_float32*)val)+((m*ngroup*ncomp)+n)));
2550 printf(
" %d ",*(((
med_int32*)val)+(m*ngroup*ncomp)+n));
2553 printf(
" %ld ",*(((
med_int64*)val)+(m*ngroup*ncomp)+n));
2569 printf(
"\t- Valeurs :\n\t");
2570 for (m=0;m<ncomp;m++) {
2572 for (n=0;n<(nval*ngauss);n++)
2575 printf(
" %f ",*(((
med_double*)val)+(m*nval*ngauss)+n ) );
2580 printf(
" %f ",*(((
med_float32*)val)+((m*nval*ngauss)+n)));
2583 printf(
" %d ",*(((
med_int32*)val)+(m*nval*ngauss)+n));
2586 printf(
" %ld ",*(((
med_int64*)val)+(m*nval*ngauss)+n));
2603 if ( val ) {free(val);val = NULL;}
2607 printf(
"\t- Profil : MED_NOPFL\n");
2610 MESSAGE(
"Erreur a la lecture du nombre de valeurs du profil : ");
2615 printf(
"\t- Profil : |%s| de taille "IFORMAT"\n",pflname,pflsize);
2618 EXIT_IF(pflval == NULL,NULL,NULL);
2620 MESSAGE(
"Erreur a la lecture des valeurs du profil : ");
2626 for (m=0;m<pflsize;m++) printf(
" "IFORMAT" ",*(pflval+m));
2656 const char *
const maillage,
2662 const char* geotypename_elst,
2663 const int lecture_en_tete_seulement)
2680 EXIT_IF(ncha < 0,
"lors de la lecture du nombre de champs",NULL);
2682 if ( !strlen(maillage) || lecture_en_tete_seulement ) {
2683 fprintf(stdout,
"\n(************************)\n");
2684 fprintf(stdout,
"(* CHAMPS RESULTATS : *)\n");
2685 fprintf(stdout,
"(************************)\n");
2686 fprintf(stdout,
"- Nombre de champs : "IFORMAT" \n",ncha);
2695 for (i =0;i<ncha;i++) {
2700 MESSAGE(
"Erreur à la lecture du nombre de composantes : ");
2708 EXIT_IF(comp == NULL,NULL,NULL);
2710 EXIT_IF(unit == NULL,NULL,NULL);
2713 &typcha, comp, unit, dtunit, &ncstp) < 0 ) {
2714 MESSAGE(
"Erreur à la demande d'information sur les champs : ");
2719 if ( !strlen(maillage) || lecture_en_tete_seulement ) {
2720 printf(
"\nChamp numero : |%d| \n",i+1);
2721 printf(
"Nom du champ : |%s| de type |%d|\n",nomcha,typcha);
2722 printf(
"Nom des composantes : |%s|\n",comp);
2723 printf(
"Unites des composantes : |%s| \n",unit);
2725 printf(
"Unité des dates : |%s|\n",dtunit);
2727 printf(
"Nombre d'étapes de calcul : |"IFORMAT"| \n",ncstp);
2731 if (lecture_en_tete_seulement) {
2738 lret =
getFieldsOn(fid, maillage, mnumdt, mnumit, nmodels,geotype_elst,geotypename_elst,
2739 nomcha, dtunit, typcha, ncomp, comp, unit,
MED_NODE,mode_coo, ncstp);
2742 if (lret == 0) lret =
getFieldsOn(fid, maillage, mnumdt, mnumit , nmodels,geotype_elst,geotypename_elst,
2743 nomcha, dtunit, typcha, ncomp, comp, unit,
MED_CELL,mode_coo, ncstp);
2744 else {
MESSAGE(
"Erreur à la lecture des champs aux noeuds "); ret = -1;
continue;}
2746 if (lret == 0) lret =
getFieldsOn(fid, maillage, mnumdt, mnumit , nmodels,geotype_elst,geotypename_elst,
2748 else {
MESSAGE(
"Erreur à la lecture des champs aux mailles "); ret = -1;
continue;}
2750 if (lret == 0) lret =
getFieldsOn(fid, maillage, mnumdt, mnumit , nmodels,geotype_elst,geotypename_elst,
2752 else {
MESSAGE(
"Erreur à la lecture des champs aux faces "); ret = -1;
continue;}
2754 if (lret == 0) lret =
getFieldsOn(fid, maillage, mnumdt, mnumit , nmodels,geotype_elst,geotypename_elst,
2755 nomcha, dtunit, typcha, ncomp, comp, unit,
MED_NODE_ELEMENT,mode_coo, ncstp);
2756 else {
MESSAGE(
"Erreur a la lecture des champs aux aretes "); ret = -1;
continue;}
2758 if (lret != 0) {
MESSAGE(
"Erreur a la lecture des champs aux noeuds des mailles "); ret = -1;};
2761 lret =
getFieldsOn(fid, maillage, mnumdt, mnumit , nmodels, geotype_elst,geotypename_elst,
2763 if (lret != 0) {
MESSAGE(
"Erreur a la lecture des champs aux éléments de sructure "); ret = -1;};
2785 int lecture_en_tete_seulement)
2801 EXIT_IF(n < 0,
"lors de la lecture du nombre de scalaires",NULL);
2804 fprintf(stdout,
"\n(*******************************)\n");
2805 fprintf(stdout,
"(* VARIABLES SCALAIRES : *)\n");
2806 fprintf(stdout,
"(*******************************)\n\n");
2807 fprintf(stdout,
"- Nombre de variables scalaires : "IFORMAT"\n",n);
2809 if (lecture_en_tete_seulement)
2812 for (i=1;i<=n;i++) {
2817 EXIT_IF(ret < 0,
"lors de la lecture des parametres d'un scalaire",NULL);
2818 fprintf(stdout,
"- Scalaire n°"IFORMAT" de nom %s \n",i,nom_scalaire);
2820 fprintf(stdout,
" Type flottant. \n");
2822 fprintf(stdout,
" Type entier. \n");
2823 printf(
" Description associee : [%s] \n",description);
2828 "lors de la lecture du nombre de pas de temps d'un scalaire"
2830 fprintf(stdout,
" Nombre de valeurs stockees : "IFORMAT" \n",npdt);
2832 for (j=1;j<=npdt;j++) {
2836 "lors de la lecture des parametres d'un pas de temps d'un scalaire",
2840 fprintf(stdout,
" - Aucun de pas de temps \n");
2843 " - Pas de de temps de numero "IFORMAT" de valeur %f [%s] \n",numdt,
2846 fprintf(stdout,
" - Aucun numero d'ordre \n");
2848 fprintf(stdout,
" - Numero d'ordre : "IFORMAT" \n",numo);
2852 fprintf(stdout,
" - Valeur : %f \n",valr);
2856 fprintf(stdout,
" - Valeur : "IFORMAT" \n",vali);
2858 EXIT_IF(ret < 0,
"lors de la lecture de la valeur d'un scalaire",NULL);
2878 int lecture_en_tete_seulement)
2888 EXIT_IF(npro < 0,
"lors de la lecture du nombre de profils",NULL);
2891 fprintf(stdout,
"\n(*************)\n");
2892 fprintf(stdout,
"(* PROFILS : *)\n");
2893 fprintf(stdout,
"(*************)\n");
2894 printf(
"\nNombre de profils stockes : "IFORMAT"\n\n",npro);
2897 for (i=1 ; i <= npro ; i++ ) {
2902 printf(
"\t- Profil n°%i de nom |%s| et de taille "IFORMAT"\n",i,pflname,nval);
2905 MESSAGE(
"Erreur a la lecture des valeurs du profil : ");
2911 for (j=0;j<nval;j++) printf(
" "IFORMAT" ",*(pflval+j));
2932 int lecture_en_tete_seulement)
2935 int _i =0,_j=0,_k=0, _n=0,_nvalue=0;
2948 med_int _nconstantattribute=0;
2950 med_int _nvariableattribute=0;
2961 unsigned char * _value=NULL;
2962 void (*_printf)(
const void*);
2966 EXIT_IF(_nstructelement < 0,
"lors de la lecture du nombre d'éléments de structure",NULL);
2968 if(_nstructelement) {
2969 fprintf(stdout,
"\n(*************************************)\n");
2970 fprintf(stdout,
"(* MODELES D'ELEMENTS DE STRUCTURE : *)\n");
2971 fprintf(stdout,
"(*************************************)\n");
2972 printf(
"\nNombre d'éléments de structure : "IFORMAT"\n\n",_nstructelement);
2975 for ( _i=1; _i<= _nstructelement; ++_i) {
2978 &_entitytype,&_nnode,&_ncell,&_geocelltype,&_nconstantattribute,&_anyprofile,
2979 &_nvariableattribute );
2980 EXIT_IF(_ret < 0,
"lors de la demande d'information sur les éléments de structure",NULL);
2982 fprintf(stdout,
"\nElément de structure n°%d |%s| de type géométrique n°%d et de dimension "IFORMAT"\n",
2983 _i,_elementname,_geotype,_elementdim);
2984 if ( strlen(_supportmeshname) ) {
2985 fprintf(stdout,
"\t Maillage support de nom |%s|",_supportmeshname);
2988 fprintf(stdout,
" avec "IFORMAT" maille(s) de type |%s| et",_ncell,_geocelltypename);
2991 fprintf(stdout,
" avec "IFORMAT" noeud(s)\n",_nnode);
2993 fprintf(stderr,
"\n Erreur : les noeuds doivent être définis s'il existe un maillage support\n");
2996 fprintf(stdout,
"\t Maillage support implicite sur noeud\n");
2998 fprintf(stdout,
"\t Nombre d'attribut(s) constant(s) : "IFORMAT"",_nconstantattribute);
2999 if (_anyprofile) fprintf(stdout,
", avec profil.\n");
else fprintf(stdout,
", sans profil.\n");
3001 if ( _nconstantattribute ) {
3002 for (_j=1;_j<=_nconstantattribute;++_j) {
3004 _constattname, &_constatttype, &_ncomponent,
3005 &_attentitytype, _profilename, &_profilesize );
3006 EXIT_IF(_ret < 0,
"lors de la demande d'information sur les attributs constants des éléments de structure",NULL);
3008 fprintf(stdout,
"\t\t Attribut constant de nom |%s| de type %d à "IFORMAT" composantes\n",
3009 _constattname,_constatttype,_ncomponent);
3011 if (!_profilesize) {
3012 if (_attentitytype ==
MED_NODE) _nvalue = _nnode;
else _nvalue=_ncell;
3014 _nvalue = _profilesize;
3016 _n = _ncomponent*_nvalue;
3019 _value = (
unsigned char *) malloc(_n*_atttypesize);
3023 if (_ret < 0 ) free(_value);
3024 EXIT_IF(_ret < 0,
"lors de la lecture des valeurs des attributs constants",NULL);
3028 fprintf(stdout,
"\t\t - Valeurs de l'attribut sur les d'entité |%s|",
3031 fprintf(stdout,
" avec un profil |%s| de taille "IFORMAT": ",_profilename,_profilesize);
3033 fprintf(stdout,
" sans profil : ");
3035 for (_k=0;_k<_nvalue*_ncomponent;_k++) {
3037 if ( !(_k % _ncomponent) )
3038 fprintf(stdout,
"\n [ %5"MED_IFORMAT" ] : ", (_k/_ncomponent +1) );
3039 _printf( (
void *)( (
char *)(_value) + _k*_atttypesize) );
3049 fprintf(stdout,
"\t Nombre d'attribut(s) variable(s) : "IFORMAT"\n",_nvariableattribute);
3050 if ( _nvariableattribute ) {
3051 for (_j=1;_j<=_nvariableattribute;++_j) {
3053 EXIT_IF(_ret < 0,
"lors de la lecture des valeurs des attributs variables",NULL);
3054 fprintf(stdout,
"\t\t Attribut variable de nom |%s| de type %d à "IFORMAT" composantes\n",
3055 _varattname,_varatttype,_ncomponent);
3076 int lecture_en_tete_seulement)
3085 med_int _geodim=0,_geonnodes=0;
3091 int _basisfuncit =0;
3096 int _coefficientit =0;
3101 fprintf(stdout,
"\n(********************************)\n");
3102 fprintf(stdout,
"(* FONCTIONS D'INTERPOLATION : *)\n");
3103 fprintf(stdout,
"(********************************)\n");
3104 printf(
"\nNombre de fonctions d'interpolation : "IFORMAT"\n\n",_ninterp);
3107 for ( _interpit=1; _interpit<= _ninterp; ++_interpit) {
3109 if (
MEDinterpInfo(fid,_interpit,_interpname,&_geotype,&_cellnodes,&_nbasisfunc,
3110 &_nvariable,&_maxdegree,&_nmaxcoefficient) < 0 ) {
3111 MESSAGE(
"Erreur à la demande d'information de la fonction d'interpolation n°");
3117 fprintf(stdout,
"Fonction d'interpolation n° %d |%s| sur le type géométrique |%s|\n",
3118 _interpit,_interpname, _geotypename);
3126 if ( _nbasisfunc == _geonnodes )
3127 fprintf(stdout,
"\t Les noeuds de construction sont les noeuds de la maille de référence.\n");
3129 MESSAGE(
"Erreur : le nombre de noeuds de construction "\
3130 "est différent du nombre de noeuds de la maille de référence.\n");
3142 fprintf(stdout,
"\t Il y a "IFORMAT" fonctions de base avec "IFORMAT" variables\n ",_nbasisfunc,_nvariable);
3143 fprintf(stdout,
"\t Le degré maximum des fonctions de base est "IFORMAT" et possèdent au maximum "IFORMAT" coefficients\n"
3144 ,_maxdegree,_nmaxcoefficient);
3148 _power = (
med_int*) calloc(
sizeof(
med_int),_nvariable*_nmaxcoefficient);
3150 for ( _basisfuncit=1; _basisfuncit<= _nbasisfunc; ++_basisfuncit) {
3153 if ( (_ret =
MEDinterpBaseFunctionRd( fid,_interpname,_basisfuncit,&_ncoefficient,_power,_coefficient) <0) ) {
3159 fprintf(stdout,
"\n\t Tableau de coefficients de la fonctions de base n° %d :\n\t",_basisfuncit);
3160 for ( _coefficientit=1; _coefficientit<= _ncoefficient; ++_coefficientit)
3161 fprintf(stdout,
" %4f ",_coefficient[_coefficientit]);
3163 fprintf(stdout,
"\n\t Tableau de puissances de la fonctions de base n° %d :\n\t",_basisfuncit);
3164 for ( _powerit=1; _powerit<= _nvariable*_ncoefficient; ++_powerit)
3165 fprintf(stdout,
" %4"MED_IFORMAT" ",_power[_powerit]);
3169 fprintf(stdout,
"\n");
3190 int lecture_en_tete_seulement)
3203 fprintf(stdout,
"\n(***********)\n");
3204 fprintf(stdout,
"(* LIENS : *)\n");
3205 fprintf(stdout,
"(***********)\n");
3206 printf(
"\nNombre de liens : "IFORMAT"\n\n",nln);
3209 for (i=1 ; i <= nln ; i++ ) {
3214 printf(
"\t- Lien n°%i de nom |%s| et de taille "IFORMAT"\n",i,nomlien,nval);
3216 lien = (
char * ) malloc((nval+1)*
sizeof(char));
3217 EXIT_IF(lien == NULL,NULL,NULL);
3219 if (
MEDlinkRd(fid, nomlien, lien ) < 0 ) {
3220 MESSAGE(
"Erreur a la lecture du lien : ");
3225 printf(
"\t\t|%s|\n\n",lien);
3230 printf(
"Erreur au montage du lien : |%s|\n",lien);
3256 int lecture_en_tete_seulement)
3259 med_int nloc=0,locsdim=0,ngauss=0;
3261 med_float *refcoo=NULL, *gscoo=NULL, *wg=NULL;
3278 fprintf(stdout,
"\n(********************************************)\n");
3279 fprintf(stdout,
"(* LOCALISATIONS DES POINTS D'INTEGRATION : *)\n");
3280 fprintf(stdout,
"(********************************************)\n");
3281 printf(
"\nNombre de localisations stockees : "IFORMAT"\n\n",nloc);
3284 for (i=1 ; i <= nloc ; i++ ) {
3286 geointerpname, ipointstructmeshname, &nsectionmeshcell,
3287 §iongeotype) < 0) {
3288 MESSAGE(
"Erreur a la demande d'information sur la localisation n° : ");
ISCRUTE_int(i);
3291 printf(
"\t- Loc. n°%i de nom |%s| de dimension "IFORMAT" avec "IFORMAT" pts de GAUSS \n",i,locname,locsdim,ngauss);
3303 if (strlen(ipointstructmeshname)) {
3305 MESSAGE(
"Erreur à la lecture du nom associé au sectiongeotype : ");
ISCRUTE_int(sectiongeotype);
3306 SSCRUTE(ipointstructmeshname);
3311 t1 = locnnodes*locsdim;
3312 t2 = ngauss*locsdim;
3319 MESSAGE(
"Erreur a la lecture des valeurs de la localisation : ");
3324 printf(
"\t Coordonnees de l'element de reference de type |%s| :\n\t\t",_locgeotypename);
3326 for (j=0;j<locnnodes*locsdim;j++) {
3328 fprintf(stdout,
"\n [ %5"MED_IFORMAT" ] : ", (j/locsdim + 1) );
3330 fprintf(stdout,
"\n\n ");
3331 fprintf(stdout,
" %-+9.6f ",*(refcoo+j));
3334 printf(
"\t Localisation des points de GAUSS : \n\t\t");
3336 for (j=0;j<ngauss*locsdim;j++) {
3338 fprintf(stdout,
"\n [ %5"MED_IFORMAT" ] : ", (j/locsdim + 1) );
3340 fprintf(stdout,
"\n\n ");
3341 fprintf(stdout,
" %-+9.6f ",*(gscoo+j));
3344 printf(
"\t Poids associes aux points de GAUSS :\n\t\t");
3345 for (j=0;j<t3;j++) printf(
" %f ",*(wg+j));
3348 if (strlen(ipointstructmeshname)) {
3349 printf(
"\t Maillage support de section d'élément de structure |%s|.\n",ipointstructmeshname);
3350 printf(
"\t Mailles des sections d'élément de structure de type |%s|.\n",sectiongeotypename);
3351 printf(
"\t Nombre de mailles par section d'élément de structure : "IFORMAT".\n",nsectionmeshcell);
3353 if (strlen(geointerpname)) {
3354 printf(
"\t Tranformation géométrique associée à la localisation |%s|.\n",geointerpname);
3371 med_int majeur,mineur,release;
3376 ret = (int) access(fichier,F_OK);
3377 if (ret <0) {
SSCRUTE(fichier);}
3378 EXIT_IF(ret < 0,
"Le fichier n'est pas accessible ou n'existe pas ",
3383 EXIT_IF(ret < 0,
"Impossible de déterminer la compatibilité de format. ",
3386 EXIT_IF(!hdfok,
"Le fichier n'est pas dans un format HDF compatible ", fichier);
3387 EXIT_IF(!medok,
"Le fichier n'est pas dans un format MED compatible ", fichier);
3393 majeur,mineur,release);
3398 EXIT_IF( fid < 0,
"Ouverture du du fichier ",fichier);
3401 EXIT_IF(( (majeur < 2) || ( (majeur == 2) && (mineur < 2)) ),
"Le fichier est antérieur à la version 2.2", NULL);
3417 fprintf(stdout,
"- En-tete du fichier : %s \n",fichier_en_tete);
3428 fprintf(stdout,
"(*****************)\n");
3429 fprintf(stdout,
"(* PARAMETRAGE : *)\n");
3430 fprintf(stdout,
"(*****************)\n");
3431 fprintf(stdout,
"- Mode d'affichage des coordonnées des noeuds ? \n");
3432 fprintf(stdout,
" 1. Mode entrelacé : taper 1 \n");
3433 fprintf(stdout,
" 2. Mode non entrelacé : taper 2 \n");
3436 fprintf(stdout,
" Reponse : ");
3437 if (!scanf(
"%d",&reponse)) fgets(_temp, 256, stdin) ;
3438 }
while (reponse != 1 && reponse != 2);
3444 fprintf(stdout,
"- Connectivité des éléments ? \n");
3445 fprintf(stdout,
" 1. Nodale : taper 1 \n");
3446 fprintf(stdout,
" 2. Descendante : taper 2 \n");
3449 fprintf(stdout,
" Reponse : ");
3450 if (!scanf(
"%d",&reponse)) fgets(_temp, 256, stdin) ;
3451 }
while (reponse != 1 && reponse != 2);
3467 char *
const maillage_description,
3469 char *
const dtunit,
3470 char *
const nomcoo,
3471 char *
const unicoo,
3478 fprintf(stdout,
"\n(**********************************************************)\n");
3479 fprintf(stdout,
"(* INFORMATIONS GENERALES SUR LE MAILLAGE DE CALCUL N°%2.2d: *)\n",numero);
3480 fprintf(stdout,
"(**********************************************************)\n\n");
3483 ret =
MEDmeshInfo(fid, numero,nommaa,edim,mdim,type_maillage,maillage_description,
3484 dtunit,&sortingtype,nstep,rep,nomcoo,unicoo);
3485 EXIT_IF(ret < 0,
"Lecture des informations sur le maillage",NULL);
3488 fprintf(stdout,
"- Nom du maillage : <<%s>>\n",nommaa);
3489 fprintf(stdout,
"- Dimension du maillage : "IFORMAT"\n",*mdim);
3491 fprintf(stdout,
"- La dimension de l'espace est "IFORMAT" \n",*edim);
3493 fprintf(stdout,
"- Type du maillage : MED_NON_STRUCTURE \n");
3495 fprintf(stdout,
"- Type du maillage : MED_STRUCTURE \n");
3496 fprintf(stdout,
"- Description associee au maillage : %s\n",
3497 maillage_description);
3500 fprintf(stdout,
"- Nombre d'étapes de calcul associées au maillage : "IFORMAT"\n",
3503 fprintf(stdout,
"- Unité des dates d'étapes de calcul associées au maillage : %s\n",
3509 fprintf(stdout,
"- Nom universel du maillage : %s \n",nom_universel);
3524 int main (
int argc,
char **argv)
3528 int i=0,numero=0,firstmesh=0,lastmesh=0,meshit=0;
3531 int lecture_en_tete_seulement = 0;
3532 med_int mdim=0,nmaa=0,nmaasup=0;
3547 char *
filename=NULL,*typ_con_param=NULL,*mode_coo_param=NULL;
3548 size_t _bannerlen=0;
3550 char * _bannerstr=NULL;
3558 char *_geotypename_elst = NULL;
3568 if (argc > 2 && strcmp(argv[1],
"--structure") == 0) {
3574 if ( (argc != 2) && (argc != 5) ) {
3576 fprintf(stderr,
"Utilisation mdump [--structure] monfichier.med [ NODALE|DESCENDANTE "
3577 "NO_INTERLACE|FULL_INTERLACE|LECTURE_EN_TETE_SEULEMENT N°MAILLAGE|0 pour tous ] \n");
3579 "\t--structure : Lis l'ensemble des données sans afficher les données volumineuses\n"
3580 "\tNODALE : Scrute la connectivité nodale des maillages\n"
3581 "\tDESCENDANTE : Scrute la connectivité descendante des maillages\n"
3582 "\tFULL_INTERLACE : Affiche les connectivités en mode entrelacé x1y1x2y2\n"
3583 "\tNO_INTERLACE : Affiche les connectivités en mode non entrelacé x1x2y1y2\n"
3584 "\tLECTURE_EN_TETE_SEULEMENT : Affiche uniquement les entêtes, désactive la lecture et l'affichage des données volumineuses\n"
3585 "\tN°MAILLAGE == i : Affiche le maillage n°i et ses champs associés\n"
3586 "\tN°MAILLAGE == 0 : Affiche l'ensemble des maillages et leurs champs associés\n"
3587 "\tN°MAILLAGE == -1 : Affiche l'ensemble des champs qu'ils soient associés ou non à un maillage local\n");
3589 EXIT_IF( (argc != 2) && (argc != 5),
"nombre de parametres incorrect\n",NULL);
3604 fprintf(stdout,
"\n >>>>>> DUMP DU FICHIER %s >>>>>>\n",
filename);
3613 typ_con_param=argv[2 + decalage];
3615 if (! strcmp(typ_con_param,
"NODALE")) typ_con =
MED_NODAL;
3616 if (! strcmp(typ_con_param,
"DESCENDANTE")) typ_con =
MED_DESCENDING;
3618 mode_coo_param=argv[3 + decalage];
3625 "Le paramètre d'entrelacement doit être soit "
3626 "NO_INTERLACE|FULL_INTERLACE|LECTURE_EN_TETE_SEULEMENT",NULL);
3650 fprintf(stdout,
"- Il y a "IFORMAT" maillage(s) de type local dans ce fichier \n",nmaa);
3651 fprintf(stdout,
" Lequel voulez-vous lire (0 pour tous|1|2|3|...|n) ?\n");
3653 fprintf(stdout,
" Reponse : ");
3654 if (!scanf(
"%d",&numero)) fgets(_temp, 256, stdin) ;
3655 }
while ( (numero > nmaa) || (numero < -1) );
3657 fprintf(stdout,
"- Il n'y a pas de maillage local dans ce fichier \n");
3661 numero = atoi(argv[4 + decalage]);
3662 EXIT_IF(numero > nmaa || numero < -1,
"ce numero de maillage n'existe pas", NULL);
3672 fprintf(stdout,
"\n(*****************************************************)\n");
3673 fprintf(stdout,
"(* INFORMATIONS GENERALES SUR LES MAILLAGES SUPPORT: *)\n");
3674 fprintf(stdout,
"(*****************************************************)\n");
3676 for (meshit=1;meshit <= nmaasup;++meshit) {
3680 maillage_description, &rep, nomcoo, unicoo);
3681 fprintf(stdout,
"\n(*******************************************)\n");
3682 fprintf(stdout,
"(******** Maillage support n°%2.2d/%2.2"MED_IFORMAT" : *******)\n",meshit,nmaasup);
3683 fprintf(stdout,
"(*******************************************)\n");
3685 fprintf(stdout,
"- Nom du maillage support : <<%s>>\n",nommaa);
3686 fprintf(stdout,
"- Dimension du maillage : "IFORMAT"\n",mdim);
3688 fprintf(stdout,
"- La dimension de l'espace est "IFORMAT" \n",edim);
3691 nomcoo,unicoo,&rep, &_nmodels, &_geotype_elst,&_geotypename_elst,
3735 firstmesh=numero;lastmesh=numero;
3736 }
else if (numero == 0) {
3737 firstmesh=1;lastmesh=nmaa;
3739 firstmesh = nmaa +1;
3742 for (meshit=firstmesh;meshit<=lastmesh;++meshit) {
3745 maillage_description,&nstep,dtunit,nomcoo,unicoo,&rep);
3749 fprintf(stderr,
"Warning : Ce maillage n'a aucune étape de calcul, ceci est anormal..."
3750 "\n\t Recherche des champs résultats associés à ce maillage.\n");
3753 for (; csit <= nstep; ++csit) {
3758 EXIT_IF(ret < 0,
"lors de l'appel à MEDmeshComputationStepInfo",NULL);
3766 _bannerstr =
"(* MAILLAGE DE CALCUL |%s| n°%2.2d A L'ETAPE DE CALCUL (n°dt,n°it)="
3768 snprintf(_temp,
MAXBANNERLEN+1,_bannerstr,nommaa,meshit,numdt,numit,0,
"");
3769 _bannerlen =strlen(_temp);
3770 fprintf(stdout,
"\n(");
3771 for (i=0;i< _bannerlen-6; i++) fprintf(stdout,
"*");
3772 fprintf(stdout,
")\n%s(",_temp);
3773 for (i=0;i< _bannerlen-6; i++) fprintf(stdout,
"*");
3774 fprintf(stdout,
")\n");
3784 &_nmodels,&_geotype_elst,&_geotypename_elst,
3785 lecture_en_tete_seulement);
3788 nomcoo,unicoo,lecture_en_tete_seulement);
3796 _nmodels,_geotype_elst,_geotypename_elst,
3797 lecture_en_tete_seulement);
3799 free(_geotype_elst);
3800 free(_geotypename_elst);
3811 _nmodels,_geotype_elst,_geotypename_elst,
3812 lecture_en_tete_seulement);
3814 free(_geotype_elst);
3815 free(_geotypename_elst);
3821 for (i=1;i <
FIDS.
n ; ++i)
3823 printf(
"Erreur de démontage du fichier n°%d\n",i);
3828 EXIT_IF(ret < 0,
"lors de la fermeture du fichier",argv[1 + decalage]);
3830 fprintf(stdout,
"\n >>>>>> FIN DU DUMP DU FICHIER %s >>>>>>\n",argv[1 + decalage]);
3832 return EXIT_SUCCESS;