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 ostream & operator<<(ostream &os, GROUP &myGroup)
31 os << (SUPPORT) myGroup;
33 int numberoffamilies = myGroup.getNumberOfFamilies();
34 os << " - Families ("<<numberoffamilies<<") :"<<endl;
35 for (int j=1;j<numberoffamilies+1;j++)
36 os << " * "<<myGroup.getFamily(j)->getName().c_str()<<endl ;
41 GROUP::GROUP(const string & name, const list<FAMILY*> & families) throw (MEDEXCEPTION)
43 const char * LOC = "GROUP( const string & , const list<FAMILY*> & ) : " ;
49 int numberOfFamilies = families.size();
51 // description : none !
52 // first FAMILY to set all !
53 FAMILY * myFamily = families.front() ;
54 _mesh = myFamily->getMesh() ;
55 _entity = myFamily->getEntity() ;
56 bool isOnAllElts = myFamily->isOnAllElements() ;
59 SCRUTE(numberOfFamilies);
62 if ((numberOfFamilies==1)&(isOnAllElts))
64 _numberOfFamilies = numberOfFamilies;
65 _isOnAllElts = isOnAllElts ;
66 _family.resize(_numberOfFamilies) ;
67 _family[0] = myFamily;
71 else if ((!(numberOfFamilies==1))&(isOnAllElts))
72 throw MEDEXCEPTION(LOCALIZED(STRING(LOC) << "building of a GROUP object from several FAMILY, and one of them is on all entities" )) ;
74 _numberOfGeometricType = myFamily->getNumberOfTypes() ;
75 _geometricType = new medGeometryElement[_numberOfGeometricType];
76 //_geometricTypeNumber = new int[_numberOfGeometricType] ;
77 _numberOfGaussPoint = new int[_numberOfGeometricType] ;
78 _numberOfElements = new int[_numberOfGeometricType] ;
79 const medGeometryElement * geometricType = myFamily->getTypes() ;
80 //int * geometricTypeNumber = myFamily->getGeometricTypeNumber() ;
81 const int * numberOfGaussPoint = myFamily->getNumberOfGaussPoint() ;
83 SCRUTE(_numberOfGeometricType);
85 for (int i=0 ; i<_numberOfGeometricType; i++) {
86 _geometricType[i]= geometricType[i] ;
87 // _geometricTypeNumber[i] = geometricTypeNumber[i] ;
88 _numberOfGaussPoint[i] = numberOfGaussPoint[i] ;
89 _numberOfElements[i]=myFamily->getNumberOfElements(geometricType[i]);
90 MESSAGE(LOC << " Type : " << _geometricType[i] << " number of element(s) " << _numberOfElements[i]);
92 _isOnAllElts = false ;
93 //_totalNumberOfEntities = myFamily->getNumberOfElements(MED_ALL_ELEMENTS) ;
94 _number = new MEDSKYLINEARRAY(*myFamily->getnumber()) ;
96 _numberOfFamilies = families.size();
97 _family.resize(_numberOfFamilies) ;
98 list<FAMILY*>::const_iterator li ;
100 MESSAGE(LOC<<"Printing of the object GROUP built right before the blending"<< (SUPPORT) *this);
104 for (li=families.begin();li!=families.end();li++) {
106 _family[it] = (*li) ;
110 MESSAGE(LOC<<"Printing of the object GROUP built "<< *this);
115 GROUP::GROUP(const GROUP & m):SUPPORT(m)
117 _numberOfFamilies = m._numberOfFamilies;
121 // void GROUP::init(const list<FAMILY*> & families)
123 // const char * LOC = "GROUP::init( const list<FAMILY*> & ) : " ;
127 // FAMILY * myFamily = families.front() ;
128 // _mesh = myFamily->getMesh() ;
130 // _isOnAllElts = myFamily->isOnAllElements() ;
134 // SCRUTE(_isOnAllElts);
136 // _entity = myFamily->getEntity() ;
138 // SCRUTE(_mesh->getNumberOfTypes(_entity));
140 // _numberOfGeometricType = myFamily->getNumberOfTypes() ;
141 // _geometricType = new medGeometryElement[_numberOfGeometricType];
142 // //_geometricTypeNumber = new int[_numberOfGeometricType] ;
143 // _numberOfGaussPoint = new int[_numberOfGeometricType] ;
144 // _numberOfElements = new int[_numberOfGeometricType] ;
145 // medGeometryElement * geometricType = myFamily->getTypes() ;
146 // //int * geometricTypeNumber = myFamily->getGeometricTypeNumber() ;
147 // int * numberOfGaussPoint = myFamily->getNumberOfGaussPoint() ;
148 // for (int i=0 ; i<_numberOfGeometricType; i++) {
149 // _geometricType[i]= geometricType[i] ;
150 // // _geometricTypeNumber[i] = geometricTypeNumber[i] ;
151 // _numberOfGaussPoint[i] = numberOfGaussPoint[i] ;
152 // _numberOfElements[i]=myFamily->getNumberOfElements(geometricType[i]);
154 // _isOnAllElts = false ;
155 // _totalNumberOfEntities = myFamily->getNumberOfElements(MED_ALL_ELEMENTS) ;
156 // _number = new MEDSKYLINEARRAY(*myFamily->getnumber()) ;
158 // _numberOfFamilies = families.size();
159 // _family.resize(_numberOfFamilies) ;
160 // list<FAMILY*>::const_iterator liIni = families.begin() ;
161 // _family[0]=(*liIni);
163 // list<FAMILY*>::const_iterator li ;
165 // for (li=liIni;li!=families.end();li++) {
167 // _family[it] = (*li) ;