]> SALOME platform Git repositories - modules/med.git/blob - src/MEDMEM/tests/readEntete.cxx
Salome HOME
update from the MedMemory V1.0.1
[modules/med.git] / src / MEDMEM / tests / readEntete.cxx
1 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
3 // 
4 //  This library is free software; you can redistribute it and/or 
5 //  modify it under the terms of the GNU Lesser General Public 
6 //  License as published by the Free Software Foundation; either 
7 //  version 2.1 of the License. 
8 // 
9 //  This library is distributed in the hope that it will be useful, 
10 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
11 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
12 //  Lesser General Public License for more details. 
13 // 
14 //  You should have received a copy of the GNU Lesser General Public 
15 //  License along with this library; if not, write to the Free Software 
16 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
17 // 
18 //  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
19 //
20 //
21 //
22 //  File   : readEntete.cxx
23 //  Module : MED
24
25 using namespace std;
26 #include<string>
27 #include "MEDMEM_Exception.hxx"
28 #include "MEDMEM_define.hxx"
29 #include "MEDMEM_Mesh.hxx"
30 #include "MEDMEM_DriversDef.hxx"
31
32 void usage(char * name)
33 {
34   cout << "    " << name <<" <file name>"<< " <mesh name> " << " <interlace mode>" << endl;
35   cout << "    " << "displays all Nodes Coordinates in mdump mode" << endl;
36   cout << endl;
37   cout << "    " << "mesh name is mandatory. Try mdump if necessary" << endl;
38   cout << "    " << "values for interlace mode are  : " << endl;
39   cout << "    " << "MED_FULL_INTERLACE (default value) or MED_NO_INTERLACE" << endl;
40   exit(-1);
41 }
42
43 int main (int argc, char ** argv) {
44   
45   if (argc < 3) usage(argv[0]);
46   if (argc > 4) usage(argv[0]);
47
48   string fileName = argv[1];
49   string meshName = argv[2];
50
51   medModeSwitch Mode = MED_FULL_INTERLACE;
52   if (argc==4)
53   {
54         string comp=argv[3];
55         if ( comp == "MED_NO_INTERLACE" ) Mode = MED_NO_INTERLACE;
56         else if ( comp != "MED_FULL_INTERLACE") usage(argv[0]);
57   }
58
59
60   MESH * myMesh= new MESH() ;
61   myMesh->setName(meshName);
62   MED_MESH_RDONLY_DRIVER myMeshDriver(fileName,myMesh);
63   try
64   {
65        myMeshDriver.setMeshName(meshName);
66        myMeshDriver.open();
67   }
68   catch (const exception & ex)
69   {
70          MESSAGE("Catch Exception : ");
71          SCRUTE(ex.what());
72   };
73   MESSAGE("Open done");
74
75   try
76   {
77        myMeshDriver.read();
78   }
79   catch (const exception & ex)
80   {
81          MESSAGE("Catch Exception : ");
82          SCRUTE(ex.what());
83   };
84   MESSAGE("Read done");
85   
86   int SpaceDimension = myMesh->getSpaceDimension();
87   int MeshDimension  = myMesh->getMeshDimension();
88   int NumberOfNodes  = myMesh->getNumberOfNodes();
89
90   cout << "(****************************)" << endl;
91   cout << "(* INFORMATIONS GENERALES : *)" << endl;
92   cout << "(****************************)" << endl;
93
94   string chainevide(MED_TAILLE_PNOM+2,' ');
95   cout << "- Nom du maillage : <<"    << meshName       << ">>" << endl;
96   cout << "- Dimension d'espace : "<< SpaceDimension <<  endl;
97   cout << "- Dimension du maillage : "<< MeshDimension <<  endl;
98   cout << "- Pas de nom universel "   << endl ;
99   cout << "- Nombre de noeuds : "     << NumberOfNodes  << " " << endl;
100
101   int NumberOfTypes           = myMesh->getNumberOfTypes(MED_CELL);
102   const medGeometryElement  * Types = myMesh->getTypes(MED_CELL);
103   
104   cout << "- Nombre de Type de mailles : " << NumberOfTypes << endl;
105
106   if (NumberOfTypes > 0)
107     {
108       cout << "  Types : ";
109       for (int itype=0; itype<NumberOfTypes; itype++) cout << Types[itype] << " ";
110       cout << endl;
111     }
112
113   const list<MED_FR::med_geometrie_element> currentEntity = MED_FR::meshEntities[(MED_FR::med_entite_maillage)MED_CELL];
114   list<MED_FR::med_geometrie_element>::const_iterator currentGeometry;
115   for (currentGeometry  = currentEntity.begin();
116        currentGeometry != currentEntity.end(); 
117        currentGeometry++) 
118   {
119         cout << "- Nombre de mailles de type "; 
120         cout << MED_FR::geoNames[(MED_FR::med_geometrie_element)(*currentGeometry)] << " : ";
121         cout << myMesh->getNumberOfElements(MED_CELL,(MED_EN::medGeometryElement)(*currentGeometry));
122         cout << " " << endl;
123   }
124
125   NumberOfTypes = myMesh->getNumberOfTypes(MED_FACE);
126   Types = myMesh->getTypes(MED_FACE);
127   
128   cout << "- Nombre de Type de faces : " << NumberOfTypes << endl;
129
130   if (NumberOfTypes > 0)
131     {
132       cout << "  Types : ";
133       for (int itype=0; itype<NumberOfTypes; itype++) cout << Types[itype] << " ";
134       cout << endl;
135     }
136
137   const list<MED_FR::med_geometrie_element> currentEntity2 = MED_FR::meshEntities[(MED_FR::med_entite_maillage)MED_FACE];
138   for (currentGeometry  = currentEntity2.begin();
139        currentGeometry != currentEntity2.end(); 
140        currentGeometry++) 
141   {
142         cout << "- Nombre de faces de type "; 
143         cout << MED_FR::geoNames[(MED_FR::med_geometrie_element)(*currentGeometry)] << " : ";
144         cout << myMesh->getNumberOfElements(MED_FACE,(MED_EN::medGeometryElement)(*currentGeometry));
145         cout << " " << endl;
146   }
147
148   NumberOfTypes = myMesh->getNumberOfTypes(MED_EDGE);
149   Types = myMesh->getTypes(MED_EDGE);
150   
151   cout << "- Nombre de Type de aretes : " << NumberOfTypes << endl;
152
153   if (NumberOfTypes > 0)
154     {
155       cout << "  Types : ";
156       for (int itype=0; itype<NumberOfTypes; itype++) cout << Types[itype] << " ";
157       cout << endl;
158     }
159
160   const list<MED_FR::med_geometrie_element> currentEntity3 = MED_FR::meshEntities[(MED_FR::med_entite_maillage)MED_EDGE];
161   for (currentGeometry  = currentEntity3.begin();
162        currentGeometry != currentEntity3.end(); 
163        currentGeometry++) 
164   {
165         cout << "- Nombre d'aretes de type "; 
166         cout << MED_FR::geoNames[(MED_FR::med_geometrie_element)(*currentGeometry)] << " : ";
167         cout << myMesh->getNumberOfElements(MED_EDGE,(MED_EN::medGeometryElement)(*currentGeometry));
168         cout << " " << endl;
169   }
170
171   delete myMesh;
172 }