1 /************************************************************************* 2 * COPYRIGHT (C) 1999 - 2003 EDF R&D 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 #include <med_utils.h> 28 29 int main (int argc, char **argv) 30 { 31 med_idt fid; 32 char maa[MED_TAILLE_NOM+1] = "maillage_test19"; 33 char desc[MED_TAILLE_DESC+1]="un maillage pour test19.med"; 34 med_int mdim=2; 35 /* Donnees de tests pour MEDgro2FamCr() 36 Les noeuds/mailles sont numerotes de 1 a 5 et les 37 groupes de 1 a 3. 38 Au depart, on a : 39 - G1 : 1,2 40 - G2 : 3,4,6 41 - G3 : 1,4 42 Au retour, on foit avoir 4 familles de noeuds + 4 familles de mailles 43 + la famille 0 dans le fichier : 44 - F0 : 5 - groupes : aucun groupe par defaut (convention habituelle). 45 - F1 : 1 - groupes : G1,G3 46 - F2 : 2 - groupes : G1 47 - F3 : 3,6 - groupes : G2 48 - F4 : 4 - groupes : G2,G3 49 */ 50 med_int ngroup = 3; 51 med_int nent = 6; 52 char nom_groupes[MED_TAILLE_LNOM*3+1]; 53 /* 0 1 2 3 4 5 6 */ 54 med_int entites[7] = { 1,2, 3,4,6, 1,4}; 55 med_int index[4] = { 1, 3, 6, 8}; 56 int i; 57 char nom_famille0[MED_TAILLE_NOM+1] = "FAMILLE0"; 58 /* on fait la meme distribution pour des mailles */ 59 med_int ngeo = 3; 60 med_geometrie_element geo[3] = {MED_SEG2,MED_TRIA3,MED_TETRA4}; 61 /* MED_SEG2 : M1,M2,M3 - MED_TRI3 : M4,M5 - MED_TETRA4 : M6 */ 62 med_int index_geo[4] = {1,4,6,7}; 63 64 /* Creation du fichier test19.med */ 65 if ((fid = MEDouvrir("test19.med",MED_CREATION)) < 0) { 66 MESSAGE("Erreur a la creation du fichier test19.med"); 67 return -1; 68 } 69 printf("Creation du fichier test19.med \n"); 70 71 /* Creation du maillage */ 72 if (MEDmaaCr(fid,maa,mdim,MED_NON_STRUCTURE,desc) < 0) { 73 MESSAGE("Erreur a la creation du maillage"); 74 return -1; 75 } 76 printf("Creation du maillage \n"); 77 78 /* on teste la fonction MEDgro2fam() */ 79 /* on definit les noms des groupes */ 80 strcpy(nom_groupes,"GROUPE 1"); 81 for (i=8;i<MED_TAILLE_LNOM;i++) 82 nom_groupes[i] = ' '; 83 nom_groupes[MED_TAILLE_LNOM] = '\0'; 84 strcat(nom_groupes,"GROUPE 2"); 85 for (i=8;i<MED_TAILLE_LNOM;i++) 86 nom_groupes[MED_TAILLE_LNOM+i] = ' '; 87 nom_groupes[2*MED_TAILLE_LNOM] = '\0'; 88 strcat(nom_groupes,"GROUPE 3"); 89 for (i=8;i<MED_TAILLE_LNOM;i++) 90 nom_groupes[2*MED_TAILLE_LNOM+i] = ' '; 91 nom_groupes[3*MED_TAILLE_LNOM] = '\0'; 92 93 /* On cree la famille 0 */ 94 if (MEDfamCr(fid,maa,nom_famille0,0,NULL,NULL,NULL,0,NULL,0) < 0) { 95 MESSAGE("Erreur a la creation de la famille 0"); 96 return -1; 97 } 98 printf("Creation de la famille 0 \n"); 99 100 /* 101 * On definit et on archive les familles de noeuds dans test.19.med 102 */ 103 if (MEDgro2famCr(fid,maa,nom_groupes,index,ngroup,entites,nent, 104 MED_NOEUD,NULL,NULL,0) < 0) { 105 MESSAGE("Erreur a la creation des familles de noeuds "); 106 return -1; 107 } 108 printf("On constuit les familles de noeuds et on les stocke dans test19.med \n"); 109 110 /* 111 * On fait la meme chose pour des mailles de differents types 112 */ 113 if (MEDgro2famCr(fid,maa,nom_groupes,index,ngroup,entites,nent, 114 MED_MAILLE,geo,index_geo,ngeo) < 0) { 115 MESSAGE("Erreur a la creation des familles d'elements "); 116 return -1; 117 } 118 printf("On constuit les familles d'elements et on les stocke dans test19.med \n"); 119 120 /* Fermeture du fichier */ 121 if (MEDfermer(fid) <0) { 122 MESSAGE("Erreur a la fermeture du fichier"); 123 return -1; 124 } 125 printf("Fermeture du fichier \n"); 126 127 return 0; 128 }