Salome HOME
Merge from V6_main 01/04/2013
[modules/med.git] / src / MEDMEMBinTest / test_copie_group.cxx
1 // Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 #include<string>
23
24 #include <math.h>
25 #include <stdlib.h>
26
27 #include "MEDMEM_Exception.hxx"
28 #include "MEDMEM_Mesh.hxx"
29 #include "MEDMEM_Family.hxx"
30 #include "MEDMEM_Group.hxx"
31
32 #include "MEDMEM_MedMeshDriver.hxx"
33 #include "MEDMEM_MedFieldDriver.hxx"
34 #include "MEDMEM_Support.hxx"
35 #include "MEDMEM_Field.hxx"
36 #include "MEDMEM_define.hxx"
37
38 using namespace std;
39 using namespace MEDMEM;
40 using namespace MED_EN;
41
42 static void affiche_support(const SUPPORT * mySupport) 
43 {
44   cout << "  - Name : "<<mySupport->getName().c_str()<<endl ;
45   cout << "  - Description : "<<mySupport->getDescription().c_str()<<endl ;
46   cout << "  - Entity : "<<mySupport->getEntity()<<endl ;
47   cout << "  - Entities list : "<<endl ;
48   if (!(mySupport->isOnAllElements())) {
49     int NumberOfTypes = mySupport->getNumberOfTypes() ;
50     cout<<"  - NumberOfTypes : "<<NumberOfTypes<<endl;
51     const medGeometryElement * Types = mySupport->getTypes() ;
52     for (int j=0;j<NumberOfTypes;j++) {
53       cout<<"    * Type "<<Types[j]<<" : ";
54       int NumberOfElements = mySupport->getNumberOfElements(Types[j]) ;
55       const int * Number = mySupport->getNumber(Types[j]) ;
56       for (int k=0; k<NumberOfElements;k++)
57         cout << Number[k] << " ";
58       cout << endl ;
59     }
60   } else
61     cout << "    Is on all entities !"<< endl;
62 }
63
64
65 static void affiche_groupe(const GROUP * myGroup) 
66 {
67     affiche_support(myGroup);
68     int NumberOfFamillies = myGroup->getNumberOfFamilies() ;
69     cout << "  - Families ("<<NumberOfFamillies<<") :"<<endl;
70     for (int j=1;j<NumberOfFamillies+1;j++)
71       cout << "    * "<<myGroup->getFamily(j)->getName().c_str()<<endl ;
72 }
73
74 int main (int argc, char ** argv) {
75
76   if (argc <3) { // after 3, ignored !
77     cerr << "Usage : " << argv[0] 
78          << " filename meshname" << endl << endl;
79     exit(-1);
80   }
81
82   string filename = argv[1] ;
83   string meshname = argv[2] ;
84
85   MESH * myMesh= new MESH;
86   myMesh->setName(meshname);
87   MED_MESH_RDONLY_DRIVER myMeshDriver(filename,myMesh) ;
88   myMeshDriver.setMeshName(meshname);
89   myMeshDriver.open() ;
90   myMeshDriver.read() ;
91   myMeshDriver.close() ;
92
93   const GROUP * myGroup = myMesh->getGroup(MED_NODE,1);
94   cout << "Show Group :"<<endl ;
95   affiche_groupe(myGroup);
96   GROUP * myGroup2 = new GROUP(* myGroup);
97   affiche_groupe(myGroup2);
98   GROUP * myGroup3 = new GROUP(* myGroup2);
99   myGroup2->removeReference();
100   affiche_groupe(myGroup3);
101   myGroup3->removeReference();
102
103   myMesh->removeReference() ;
104
105   return 0;
106 }