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 /****************************************************************************** 21 * - Nom du fichier : test27.c 22 * 23 * - Description : creation de maillages structures (grille cartesienne | 24 * grille standard ) dans le fichier test27.med 25 * 26 *****************************************************************************/ 27 28 #include <med.h> 29 #include <med_utils.h> 30 #include <string.h> 31 32 int main (int argc, char **argv) 33 { 34 med_idt fid; 35 /* la dimension du maillage */ 36 med_int mdim,axe; 37 med_float indice[4]; 38 med_float coo[8] = {0.0,0.0,1.0,0.0,0.0,1.0,1.0,1.0}; 39 med_int nnoeuds = 4; 40 med_int structure_grille[2] = {2,2}; 41 med_int nind; 42 /* nom du maillage de longueur maxi MED_TAILLE_NOM */ 43 char maa[MED_TAILLE_NOM+1]; 44 /* composantes et unites */ 45 char comp[MED_TAILLE_PNOM+1]; 46 char unit[MED_TAILLE_PNOM+1]; 47 /* 12345678901234561234567890123456 */ 48 char comp2[2*MED_TAILLE_PNOM+1] = "X Y "; 49 char unit2[2*MED_TAILLE_PNOM+1] = "cm cm "; 50 51 /* Creation du fichier test27.med */ 52 fid = MEDouvrir("test27.med",MED_CREATION); 53 if (fid < 0) { 54 MESSAGE("Erreur a la creation du fichier test27.med"); 55 return -1; 56 } 57 printf("Creation du fichier test27.med \n"); 58 59 /* Creation d'un maillage MED_NON_STRUCTURE */ 60 if (MEDmaaCr(fid,"maillage vide",3,MED_NON_STRUCTURE,"un maillage vide") < 0) { 61 MESSAGE("Erreur a la creation du maillage MED_NON_STRUCTURE"); 62 return -1; 63 } 64 65 /* creation d'une grille cartesienne de dimension 2 */ 66 strcpy(maa,"grille_cartesienne"); 67 mdim = 2; 68 /* on commence par definir un maillage MED_STRUCTURE 69 de dimension 2 */ 70 if (MEDmaaCr(fid,maa,mdim,MED_STRUCTURE, 71 "un exemple de grille cartesienne") < 0) { 72 MESSAGE("Erreur a la creation de la grille"); 73 return -1; 74 } 75 printf("Creation d'un maillage structure MED_STRUCTURE \n"); 76 77 /* On specifie la nature du maillage structure : MED_GRILLE_CARTESIENNE */ 78 if (MEDnatureGrilleEcr(fid,maa,MED_GRILLE_CARTESIENNE) < 0) { 79 MESSAGE("Erreur a l'ecriture de la nature de la grille"); 80 return -1; 81 } 82 printf("On definit la nature du maillage structure : MED_GRILLE_CARTESIENNE \n"); 83 84 /* on definit les indices des coordonnees de la grille selon chaque dimension */ 85 /* axe des "X" */ 86 indice[0] = 1.1; 87 indice[1] = 1.2; 88 indice[2] = 1.3; 89 indice[3] = 1.4; 90 nind = 4; 91 axe = 1; 92 strcpy(comp,"X"); 93 strcpy(unit,"cm"); 94 if (MEDindicesCoordEcr(fid,maa,mdim,indice,nind,axe,comp,unit) < 0) { 95 MESSAGE("Erreur a l'ecriture de l'axe X"); 96 return -1; 97 } 98 printf("Ecriture des indices des coordonnees selon l'axe des X \n"); 99 100 /* axe des "Y" */ 101 indice[0] = 2.1; 102 indice[1] = 2.2; 103 indice[2] = 2.3; 104 indice[3] = 2.4; 105 nind = 4; 106 strcpy(comp,"Y"); 107 strcpy(unit,"cm"); 108 axe = 2; 109 if (MEDindicesCoordEcr(fid,maa,mdim,indice,nind,axe,comp,unit) < 0) { 110 MESSAGE("Erreur a l'ecriture de l'axe Y"); 111 return -1; 112 } 113 printf("Ecriture des indices des coordonnees selon l'axe des Y \n"); 114 115 /* Creation d'une grille MED_STANDARD de dimension 2 */ 116 strcpy(maa,"grille_standard"); 117 mdim = 2; 118 /* on commence par definir un maillage MED_STRUCTURE 119 de dimension 2 */ 120 if (MEDmaaCr(fid,maa,mdim,MED_STRUCTURE, 121 "un exemple de grille standard") < 0) { 122 MESSAGE("Erreur a la creation de la 2e grille"); 123 return -1; 124 } 125 printf("Creation d'un maillage structure MED_STRUCTURE \n"); 126 127 /* On specifie la nature du maillage structure : MED_GRILLE_STANDARD */ 128 if (MEDnatureGrilleEcr(fid,maa,MED_GRILLE_STANDARD) < 0) { 129 MESSAGE("Erreur a l'ecriture du type de la grille"); 130 return -1; 131 } 132 printf("On definit la nature du maillage structure : MED_GRILLE_STANDARD \n"); 133 134 /* On ecrit les coordonnees de la grille */ 135 if (MEDcoordEcr(fid,maa,mdim,coo,MED_FULL_INTERLACE,nnoeuds,MED_CART,comp2,unit2) < 0) { 136 MESSAGE("Erreur a l'ecriture des noeuds de la grille MED_GRILLE_STANDARD"); 137 return -1; 138 } 139 printf("Ecriture des coordonnees des noeuds \n"); 140 141 /* On definit la structure de la grille */ 142 if (MEDstructureCoordEcr(fid,maa,mdim,structure_grille) < 0) { 143 MESSAGE("Erreur a l'ecriture de la structure de la grille"); 144 return -1; 145 } 146 printf("Ecriture de la structure de la grille : / 2,2 / \n"); 147 148 /* On ferme le fichier */ 149 if (MEDfermer(fid) < 0) { 150 MESSAGE("Erreur a la fermeture du fichier"); 151 return -1; 152 } 153 printf("Fermeture du fichier \n"); 154 155 return 0; 156 }