1 /************************************************************************* 2 * COPYRIGHT (C) 1999 - 2007 EDF R&D, CEA/DEN 3 * THIS LIBRARY IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY 4 * IT UNDER THE TERMS OF THE GNU LESSER GENERAL PUBLIC LICENSE 5 * AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION; 6 * EITHER VERSION 2.1 OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION. 7 * 8 * THIS LIBRARY IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 9 * WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF 10 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU 11 * LESSER GENERAL PUBLIC LICENSE FOR MORE DETAILS. 12 * 13 * YOU SHOULD HAVE RECEIVED A COPY OF THE GNU LESSER GENERAL PUBLIC LICENSE 14 * ALONG WITH THIS LIBRARY; IF NOT, WRITE TO THE FREE SOFTWARE FOUNDATION, 15 * INC., 59 TEMPLE PLACE, SUITE 330, BOSTON, MA 02111-1307 USA 16 * 17 *************************************************************************/ 18 19 /****************************************************************************** 20 * - Nom du fichier : test19.c 21 * 22 * - Description : conversion groupes => famille 23 * 24 *****************************************************************************/ 25 26 #include <med.h> 27 #define MESGERR 28 #include <med_utils.h> 29 30 #ifdef DEF_LECT_ECR 31 #define MODE_ACCES MED_LECTURE_ECRITURE 32 #elif DEF_LECT_AJOUT 33 #define MODE_ACCES MED_LECTURE_AJOUT 34 #else 35 #define MODE_ACCES MED_CREATION 36 #endif 37 38 int main (int argc, char **argv) 39 40 41 { 42 med_idt fid; 43 char maa[MED_TAILLE_NOM+1] = "maillage_test19"; 44 char desc[MED_TAILLE_DESC+1]="un maillage pour test19.med"; 45 med_int mdim=2; 46 /* Donnees de tests pour MEDgro2FamCr() 47 Les noeuds/mailles sont numerotes de 1 a 5 et les 48 groupes de 1 a 3. 49 Au depart, on a : 50 - G1 : 1,2 51 - G2 : 3,4,6 52 - G3 : 1,4 53 Au retour, on foit avoir 4 familles de noeuds + 4 familles de mailles 54 + la famille 0 dans le fichier : 55 - F0 : 5 - groupes : aucun groupe par defaut (convention habituelle). 56 - F1 : 1 - groupes : G1,G3 57 - F2 : 2 - groupes : G1 58 - F3 : 3,6 - groupes : G2 59 - F4 : 4 - groupes : G2,G3 60 */ 61 med_int ngroup = 3; 62 med_int nent = 6; 63 char nom_groupes[MED_TAILLE_LNOM*3+1]; 64 /* 0 1 2 3 4 5 6 */ 65 med_int entites[7] = { 1,2, 3,4,6, 1,4}; 66 med_int index[4] = { 1, 3, 6, 8}; 67 int i; 68 char nom_famille0[MED_TAILLE_NOM+1] = "FAMILLE0"; 69 /* on fait la meme distribution pour des mailles */ 70 med_int ngeo = 3; 71 med_geometrie_element geo[3] = {MED_SEG2,MED_TRIA3,MED_TETRA4}; 72 /* MED_SEG2 : M1,M2,M3 - MED_TRI3 : M4,M5 - MED_TETRA4 : M6 */ 73 med_int index_geo[4] = {1,4,6,7}; 74 75 /* Creation du fichier test19.med */ 76 if ((fid = MEDouvrir("test19.med",MODE_ACCES)) < 0) { 77 MESSAGE("Erreur a la creation du fichier test19.med"); 78 return -1; 79 } 80 printf("Creation du fichier test19.med \n"); 81 82 /* Creation du maillage */ 83 if (MEDmaaCr(fid,maa,mdim,MED_NON_STRUCTURE,desc) < 0) { 84 MESSAGE("Erreur a la creation du maillage"); 85 return -1; 86 } 87 printf("Creation du maillage \n"); 88 89 /* on teste la fonction MEDgro2fam() */ 90 /* on definit les noms des groupes */ 91 strcpy(nom_groupes,"GROUPE 1"); 92 for (i=8;i<MED_TAILLE_LNOM;i++) 93 nom_groupes[i] = ' '; 94 nom_groupes[MED_TAILLE_LNOM] = '\0'; 95 strcat(nom_groupes,"GROUPE 2"); 96 for (i=8;i<MED_TAILLE_LNOM;i++) 97 nom_groupes[MED_TAILLE_LNOM+i] = ' '; 98 nom_groupes[2*MED_TAILLE_LNOM] = '\0'; 99 strcat(nom_groupes,"GROUPE 3"); 100 for (i=8;i<MED_TAILLE_LNOM;i++) 101 nom_groupes[2*MED_TAILLE_LNOM+i] = ' '; 102 nom_groupes[3*MED_TAILLE_LNOM] = '\0'; 103 104 /* On cree la famille 0 */ 105 if (MEDfamCr(fid,maa,nom_famille0,0,NULL,NULL,NULL,0,NULL,0) < 0) { 106 MESSAGE("Erreur a la creation de la famille 0"); 107 return -1; 108 } 109 printf("Creation de la famille 0 \n"); 110 111 /* 112 * On definit et on archive les familles de noeuds dans test.19.med 113 */ 114 if (MEDgro2famCr(fid,maa,nom_groupes,index,ngroup,entites,nent, 115 MED_NOEUD,NULL,NULL,0) < 0) { 116 MESSAGE("Erreur a la creation des familles de noeuds "); 117 return -1; 118 } 119 printf("On constuit les familles de noeuds et on les stocke dans test19.med \n"); 120 121 /* 122 * On fait la meme chose pour des mailles de differents types 123 */ 124 if (MEDgro2famCr(fid,maa,nom_groupes,index,ngroup,entites,nent, 125 MED_MAILLE,geo,index_geo,ngeo) < 0) { 126 MESSAGE("Erreur a la creation des familles d'elements "); 127 return -1; 128 } 129 printf("On constuit les familles d'elements et on les stocke dans test19.med \n"); 130 131 /* Fermeture du fichier */ 132 if (MEDfermer(fid) <0) { 133 MESSAGE("Erreur a la fermeture du fichier"); 134 return -1; 135 } 136 printf("Fermeture du fichier \n"); 137 138 return 0; 139 }