Salome HOME
Merge from BR_V5_DEV 16Feb09
[modules/med.git] / src / MEDWrapper / V2_1 / Core / MEDpasdetempsInfo.cxx
1 /*************************************************************************
2 * COPYRIGHT (C) 1999 - 2002  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 #include "med.hxx"
20 #include "med_outils.hxx"
21
22 #include <cstring>
23
24 /* Le nom de cette fonction n'est pas très bien choisie */
25
26 namespace med_2_1{
27
28 med_err 
29 MEDpasdetempsInfo(med_idt fid,char *champ
30                   ,med_entite_maillage type_ent, med_geometrie_element type_geo,
31                   int indice, char *maa, med_int * ngauss, med_int * numdt, char * dt_unit, med_float * dt, 
32                   med_int * numo)
33 {
34
35   med_err ret=0;
36   med_idt gid;
37   char chemin[(MED_TAILLE_CHA+MED_TAILLE_NOM+1)+(2*MED_TAILLE_NOM_ENTITE+2)+2*MED_MAX_PARA+1];
38   int num;
39   char nomdatagroup1[2*MED_TAILLE_NOM_ENTITE+2],nomdatagroup2[2*MED_MAX_PARA+1];
40   char tmp1         [MED_TAILLE_NOM_ENTITE+1];
41
42   /*
43    * On inhibe le gestionnaire d'erreur HDF 5
44    */
45   _MEDmodeErreurVerrouiller();
46
47   /*
48    * On recupere le nom du datagroup <numdtt>.<numoo>
49    */
50   strcpy(chemin,MED_CHA);
51   strcat(chemin,champ);
52   strcat(chemin,"/");
53
54   if ((ret = _MEDnomEntite(nomdatagroup1,type_ent)) < 0)
55     return -1;
56   if ((type_ent != MED_NOEUD))
57     {
58       if ((ret = _MEDnomGeometrie(tmp1,type_geo)) < 0)
59         return -1;
60       strcat(nomdatagroup1,".");
61       strcat(nomdatagroup1,tmp1);
62     }
63   strcat(chemin,nomdatagroup1);
64   strcat(chemin,"/");
65
66   num = indice - 1;
67   if ((ret = _MEDobjetIdentifier(fid,chemin,num,nomdatagroup2)) < 0)
68     return -1;
69   strcat(chemin,nomdatagroup2);
70   if ((gid = _MEDdatagroupOuvrir(fid,chemin)) < 0)
71     return -1;
72
73   /*
74    * La liste des attributs
75    */
76  if ((ret = _MEDattrStringLire(gid,MED_NOM_MAI,MED_TAILLE_NOM,maa)) < 0)
77     return -1;
78   
79  if ((ret = _MEDattrEntierLire(gid,MED_NOM_NDT,(med_int*) numdt)) < 0)
80    return -1;
81
82  if ((ret = _MEDattrFloatLire(gid,MED_NOM_PDT,(med_float*) dt)) < 0)
83    return -1;
84
85  if ((ret = _MEDattrStringLire(gid,MED_NOM_UNI,MED_TAILLE_PNOM,dt_unit)) < 0)
86    return -1;
87  
88  if ((ret = _MEDattrEntierLire(gid,MED_NOM_NOR,(med_int*) numo)) < 0)
89    return -1;
90
91  if ( (ret = _MEDattrEntierLire(gid,MED_NOM_NGA,ngauss)) < 0 )
92    return -1;
93
94
95  if ((ret = _MEDdatagroupFermer(gid)) < 0)
96    return -1;
97  
98   return 0; 
99 }
100
101 }