Salome HOME
Version ok de MED avec MEDGUI.
[modules/med.git] / src / MEDMEM / MEDMEM_Group.cxx
1 /*
2  File Group.cxx
3  $Header$
4 */
5 #include <list>
6
7 #include "MEDMEM_Group.hxx"
8 #include "MEDMEM_Family.hxx"
9
10 GROUP::GROUP():_numberOfFamilies(0),_family() 
11 {
12   MESSAGE("GROUP()");
13 };
14
15 GROUP::~GROUP() 
16 {
17   MESSAGE("~GROUP()");
18 };
19   
20 GROUP & GROUP::operator=(const GROUP &group) 
21 {
22   MESSAGE("GROUP::operator=");
23   _numberOfFamilies = group._numberOfFamilies ;
24   _family           = group._family ;
25   return *this;
26 };
27
28 GROUP::GROUP(const string & name, const list<FAMILY*> & families)
29 {
30   const char * LOC = "GROUP( const string & , const list<FAMILY*> & ) : " ;
31   
32   BEGIN_OF(LOC);
33
34   MESSAGE(LOC<<name);
35   _name = name ;
36   // description : none !
37   // first FAMILY to set all !
38   FAMILY * myFamily = families.front() ;
39   _mesh =  myFamily->getMesh() ;
40   _entity = myFamily->getEntity() ;
41   _numberOfGeometricType = myFamily->getNumberOfTypes() ;
42   _geometricType = new medGeometryElement[_numberOfGeometricType];
43   //_geometricTypeNumber = new int[_numberOfGeometricType] ;
44   _numberOfGaussPoint = new int[_numberOfGeometricType] ;
45   _numberOfEntities = new int[_numberOfGeometricType] ;
46   medGeometryElement * geometricType = myFamily->getTypes() ;
47   //int * geometricTypeNumber = myFamily->getGeometricTypeNumber() ;
48   int * numberOfGaussPoint = myFamily->getNumberOfGaussPoint() ;
49   for (int i=0 ; i<_numberOfGeometricType; i++) {
50     _geometricType[i]= geometricType[i] ;
51     // _geometricTypeNumber[i] = geometricTypeNumber[i] ;
52     _numberOfGaussPoint[i] = numberOfGaussPoint[i] ;
53     _numberOfEntities[i]=myFamily->getNumberOfElements(geometricType[i]);
54   }
55   _isOnAllElts = false ;
56   _totalNumberOfEntities = myFamily->getNumberOfElements(MED_ALL_ELEMENTS) ;
57   _number = new MEDSKYLINEARRAY(*myFamily->getnumber()) ;
58
59   _numberOfFamilies = families.size();
60   _family.resize(_numberOfFamilies) ;
61   list<FAMILY*>::const_iterator li ;
62   int it = 0 ;
63   for (li=families.begin();li!=families.end();li++) {
64     blending(*li);
65     _family[it] = (*li) ;
66     it++ ;
67   }
68
69   END_OF(LOC);
70 };
71
72 void GROUP::init(const list<FAMILY*> & families)
73 {
74   const char * LOC = "GROUP::init( const list<FAMILY*> & ) : " ;
75   
76   BEGIN_OF(LOC);
77   
78   FAMILY * myFamily = families.front() ;
79   _mesh =  myFamily->getMesh() ;
80   _entity = myFamily->getEntity() ;
81   _numberOfGeometricType = myFamily->getNumberOfTypes() ;
82   _geometricType = new medGeometryElement[_numberOfGeometricType];
83   //_geometricTypeNumber = new int[_numberOfGeometricType] ;
84   _numberOfGaussPoint = new int[_numberOfGeometricType] ;
85   _numberOfEntities = new int[_numberOfGeometricType] ;
86   medGeometryElement * geometricType = myFamily->getTypes() ;
87   //int * geometricTypeNumber = myFamily->getGeometricTypeNumber() ;
88   int * numberOfGaussPoint = myFamily->getNumberOfGaussPoint() ;
89   for (int i=0 ; i<_numberOfGeometricType; i++) {
90     _geometricType[i]= geometricType[i] ;
91     // _geometricTypeNumber[i] = geometricTypeNumber[i] ;
92     _numberOfGaussPoint[i] = numberOfGaussPoint[i] ;
93     _numberOfEntities[i]=myFamily->getNumberOfElements(geometricType[i]);
94   }
95   _isOnAllElts = false ;
96   _totalNumberOfEntities = myFamily->getNumberOfElements(MED_ALL_ELEMENTS) ;
97   _number = new MEDSKYLINEARRAY(*myFamily->getnumber()) ;
98   
99   _numberOfFamilies = families.size();
100   _family.resize(_numberOfFamilies) ;
101   list<FAMILY*>::const_iterator liIni = families.begin() ;
102   _family[0]=(*liIni);
103   liIni++;
104   list<FAMILY*>::const_iterator li ;
105   int it = 1 ;
106   for (li=liIni;li!=families.end();li++) {
107     blending(*li);
108     _family[it] = (*li) ;
109     it++ ;
110   }
111   
112   END_OF(LOC);
113 };
114