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 : test20.c 21 * 22 * - Description : montage/demontage de fichiers MED 23 * 24 *****************************************************************************/ 25 26 #include <med.h> 27 #include <med_utils.h> 28 #include <stdio.h> 29 30 int main() 31 { 32 int i; 33 med_idt fid,mid,mid2; 34 med_int ncha, ncomp, nmaa; 35 med_type_champ type; 36 char comp[3*MED_TAILLE_PNOM+1],unit[3*MED_TAILLE_PNOM+1]; 37 char nom[MED_TAILLE_NOM+1]; 38 39 /* Ouverture du fichier test2.med en mode lecture et ajout */ 40 if ((fid = MEDouvrir("test2.med",MED_LECTURE_AJOUT)) < 0) { 41 MESSAGE("Erreur a l'ouverture du fichier test2.med"); 42 return -1; 43 } 44 printf("On ouvre le fichier test2.med \n"); 45 46 /* Lecture du nombre de champs */ 47 if ((ncha = MEDnChamp(fid,0)) < 0) { 48 MESSAGE("Erreur a la lecture du nombre de champs"); 49 return -1; 50 } 51 printf("Nombre de champs dans test2.med : %d \n",ncha); 52 53 /* On fait le montage dans test2.med de tous les champs de test10.med */ 54 mid = MEDmonter(fid,"test10.med",MED_CHAMP); 55 if (mid < 0) { 56 MESSAGE("Echec du montage des champs de test10.med"); 57 return -1; 58 } 59 printf("On monte les champs du fichier test10.med dans le fichier test2.med \n"); 60 61 /* Combien de champs dans le fichier "test2.med" apres le montage */ 62 if ((ncha = MEDnChamp(fid,0)) < 0) { 63 MESSAGE("Erreur a la lecture du nombre de champ"); 64 return -1; 65 } 66 printf("Nombre de champs dans test2.med apres montage : %d \n",ncha); 67 68 /* On s'assure que les champs sont bien accessibles */ 69 for (i=1;i<=ncha;i++) { 70 71 /* Combien de composantes dans le champ */ 72 if ((ncomp = MEDnChamp(fid,i)) < 0) { 73 MESSAGE("Erreur a lecture du nombre de composante du champ"); 74 return -1; 75 } 76 77 /* Lecture des infos sur le champ */ 78 if (MEDchampInfo(fid,i,nom,&type,comp,unit,ncomp) < 0) { 79 MESSAGE("Erreur a la lecture des informations sur le champ"); 80 return -1; 81 } 82 83 printf("Champ de nom [%s] de type %d et avec %d composantes \n",nom,type,ncomp); 84 } 85 86 /* On demonte le fichier */ 87 if (MEDdemonter(fid,mid,MED_CHAMP) < 0) { 88 MESSAGE("Echec du demontage de test10.med"); 89 return -1; 90 } 91 printf("On demonte le fichier test10.med dans test2.med\n"); 92 93 /* Combien de champs dans le fichier "test2.med" apres le demontage */ 94 if ((ncha = MEDnChamp(fid,0)) < 0) { 95 MESSAGE("Erreur a la lecture du nombre de champ"); 96 return -1; 97 } 98 printf("Nombre de champs dans test2.med apres demontage: %d \n",ncha); 99 100 /* On ferme le fichier test2.med */ 101 if (MEDfermer(fid) < 0) { 102 MESSAGE("Erreur lors de la fermeture du fichier"); 103 return -1; 104 } 105 printf("On ferme le fichier test2.med \n"); 106 107 /* Creation du fichier test20.med */ 108 if ((fid = MEDouvrir("test20.med",MED_CREATION)) < 0) { 109 MESSAGE("Erreur a la creation du fichier test20.med"); 110 return -1; 111 } 112 printf("On cree le fichier test20.med \n"); 113 114 /* Montage dans test20.med de tous les maillages de test2.med */ 115 mid2 = MEDmonter(fid,"test2.med",MED_MAILLAGE); 116 if (mid2 < 0) { 117 MESSAGE("Echec du montage de test2.med"); 118 return -1; 119 } 120 printf("On monte les maillages du fichier test2.med dans le fichier test20.med \n"); 121 122 /* Lecture du nombre de maillages */ 123 nmaa = MEDnMaa(fid); 124 if (nmaa < 0) { 125 MESSAGE("Erreur lors de la lecture du nombre de maillage"); 126 return -1; 127 } 128 printf("Nombre de maillages apres montage de test2.med : %d\n",nmaa); 129 130 /* Montage dans test20.med de tous les champs de test10.med */ 131 mid = MEDmonter(fid,"test10.med",MED_CHAMP); 132 if (mid < 0) { 133 MESSAGE("Echec du montage de test10.med"); 134 return -1; 135 } 136 printf("On monte les champs du fichier test10.med dans le fichier test20.med \n"); 137 138 /* Combien de champs dans le fichier "test20.med" apres le montage */ 139 if ((ncha = MEDnChamp(fid,0)) < 0) { 140 MESSAGE("Erreur lors de la lecture du nombre de champ"); 141 return -1; 142 } 143 printf("Nombre de champs dans test20.med apres montage : %d \n",ncha); 144 145 /* Demontage du fichier test10.med */ 146 if (MEDdemonter(fid,mid,MED_CHAMP) < 0) { 147 MESSAGE("Echec du demontage de test10.med"); 148 return -1; 149 } 150 printf("On demonte le fichier test10.med dans test20.med \n"); 151 152 /* Demontage du fichier test2.med */ 153 if (MEDdemonter(fid,mid2,MED_MAILLAGE) < 0) { 154 MESSAGE("Echec du demontage de test2.med"); 155 return -1; 156 } 157 printf("On demonte le fichier test2.med dans test20.med\n"); 158 159 /* Fermeture du fichier test20.med */ 160 if (MEDfermer(fid) < 0) { 161 MESSAGE("Erreur de la fermeture du fichier"); 162 return -1; 163 } 164 printf("On ferme le fichier test20.med \n"); 165 166 return 0; 167 }