8 #include "MEDMEM_Group.hxx"
9 #include "MEDMEM_Family.hxx"
11 GROUP::GROUP():_numberOfFamilies(0),_family()
21 GROUP & GROUP::operator=(const GROUP &group)
23 MESSAGE("GROUP::operator=");
24 _numberOfFamilies = group._numberOfFamilies ;
25 _family = group._family ;
29 GROUP::GROUP(const string & name, const list<FAMILY*> & families) throw (MEDEXCEPTION)
31 const char * LOC = "GROUP( const string & , const list<FAMILY*> & ) : " ;
37 int numberOfFamilies = families.size();
39 // description : none !
40 // first FAMILY to set all !
41 FAMILY * myFamily = families.front() ;
42 _mesh = myFamily->getMesh() ;
43 _entity = myFamily->getEntity() ;
44 bool isOnAllElts = myFamily->isOnAllElements() ;
45 if ((numberOfFamilies==1)&(isOnAllElts))
47 _numberOfFamilies = numberOfFamilies;
48 _isOnAllElts = false ;
49 _family.resize(_numberOfFamilies) ;
50 _family[0] = myFamily;
53 else if ((!(numberOfFamilies==1))&(isOnAllElts))
54 throw MEDEXCEPTION(LOCALIZED(STRING(LOC) << "building of a GROUP object from several FAMILY, and one of them is on all entities" )) ;
56 _numberOfGeometricType = myFamily->getNumberOfTypes() ;
57 _geometricType = new medGeometryElement[_numberOfGeometricType];
58 //_geometricTypeNumber = new int[_numberOfGeometricType] ;
59 _numberOfGaussPoint = new int[_numberOfGeometricType] ;
60 _numberOfEntities = new int[_numberOfGeometricType] ;
61 medGeometryElement * geometricType = myFamily->getTypes() ;
62 //int * geometricTypeNumber = myFamily->getGeometricTypeNumber() ;
63 int * numberOfGaussPoint = myFamily->getNumberOfGaussPoint() ;
64 for (int i=0 ; i<_numberOfGeometricType; i++) {
65 _geometricType[i]= geometricType[i] ;
66 // _geometricTypeNumber[i] = geometricTypeNumber[i] ;
67 _numberOfGaussPoint[i] = numberOfGaussPoint[i] ;
68 _numberOfEntities[i]=myFamily->getNumberOfElements(geometricType[i]);
70 _isOnAllElts = false ;
71 _totalNumberOfEntities = myFamily->getNumberOfElements(MED_ALL_ELEMENTS) ;
72 _number = new MEDSKYLINEARRAY(*myFamily->getnumber()) ;
74 _numberOfFamilies = families.size();
75 _family.resize(_numberOfFamilies) ;
76 list<FAMILY*>::const_iterator li ;
78 for (li=families.begin();li!=families.end();li++) {
87 GROUP::GROUP(GROUP & m):SUPPORT(m)
89 _numberOfFamilies = m._numberOfFamilies;
93 // void GROUP::init(const list<FAMILY*> & families)
95 // const char * LOC = "GROUP::init( const list<FAMILY*> & ) : " ;
99 // FAMILY * myFamily = families.front() ;
100 // _mesh = myFamily->getMesh() ;
102 // _isOnAllElts = myFamily->isOnAllElements() ;
106 // SCRUTE(_isOnAllElts);
108 // _entity = myFamily->getEntity() ;
110 // SCRUTE(_mesh->getNumberOfTypes(_entity));
112 // _numberOfGeometricType = myFamily->getNumberOfTypes() ;
113 // _geometricType = new medGeometryElement[_numberOfGeometricType];
114 // //_geometricTypeNumber = new int[_numberOfGeometricType] ;
115 // _numberOfGaussPoint = new int[_numberOfGeometricType] ;
116 // _numberOfEntities = new int[_numberOfGeometricType] ;
117 // medGeometryElement * geometricType = myFamily->getTypes() ;
118 // //int * geometricTypeNumber = myFamily->getGeometricTypeNumber() ;
119 // int * numberOfGaussPoint = myFamily->getNumberOfGaussPoint() ;
120 // for (int i=0 ; i<_numberOfGeometricType; i++) {
121 // _geometricType[i]= geometricType[i] ;
122 // // _geometricTypeNumber[i] = geometricTypeNumber[i] ;
123 // _numberOfGaussPoint[i] = numberOfGaussPoint[i] ;
124 // _numberOfEntities[i]=myFamily->getNumberOfElements(geometricType[i]);
126 // _isOnAllElts = false ;
127 // _totalNumberOfEntities = myFamily->getNumberOfElements(MED_ALL_ELEMENTS) ;
128 // _number = new MEDSKYLINEARRAY(*myFamily->getnumber()) ;
130 // _numberOfFamilies = families.size();
131 // _family.resize(_numberOfFamilies) ;
132 // list<FAMILY*>::const_iterator liIni = families.begin() ;
133 // _family[0]=(*liIni);
135 // list<FAMILY*>::const_iterator li ;
137 // for (li=liIni;li!=families.end();li++) {
139 // _family[it] = (*li) ;