1 // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
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.
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.
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
18 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #include "MEDMEM_EnsightMeshDriver.hxx"
26 #include "MEDMEM_define.hxx"
27 #include "MEDMEM_Family.hxx"
28 #include "MEDMEM_Group.hxx"
29 #include "MEDMEM_Coordinate.hxx"
30 #include "MEDMEM_Connectivity.hxx"
31 #include "MEDMEM_Mesh.hxx"
32 #include "MEDMEM_CellModel.hxx"
33 #include "MEDMEM_Grid.hxx"
35 #include "MEDMEM_Meshing.hxx"
36 #include "MEDMEM_MedMeshDriver.hxx"
39 using namespace MEDMEM;
40 using namespace MED_EN;
44 ENSIGHT_MESH_DRIVER::ENSIGHT_MESH_DRIVER(): GENDRIVER(),
45 _ptrMesh((MESH *)MED_NULL)
49 ENSIGHT_MESH_DRIVER::ENSIGHT_MESH_DRIVER(const string & fileName,
51 GENDRIVER(fileName,MED_EN::MED_RDWR), _ptrMesh(ptrMesh)
55 ENSIGHT_MESH_DRIVER::ENSIGHT_MESH_DRIVER(const string & fileName,
57 MED_EN::med_mode_acces accessMode):
58 GENDRIVER(fileName,accessMode), _ptrMesh(ptrMesh)
62 ENSIGHT_MESH_DRIVER::ENSIGHT_MESH_DRIVER(const ENSIGHT_MESH_DRIVER & driver):
64 _ptrMesh(driver._ptrMesh),
65 _meshName(driver._meshName)
69 ENSIGHT_MESH_DRIVER::~ENSIGHT_MESH_DRIVER()
71 MESSAGE("ENSIGHT_MESH_DRIVER::~ENSIGHT_MESH_DRIVER() has been destroyed");
74 void ENSIGHT_MESH_DRIVER::setMeshName(const string & meshName) { _meshName = meshName; };
76 string ENSIGHT_MESH_DRIVER::getMeshName() const { return _meshName; };
78 void ENSIGHT_MESH_DRIVER::open() {
82 void ENSIGHT_MESH_DRIVER::close() {
86 ENSIGHT_MESH_WRONLY_DRIVER::ENSIGHT_MESH_WRONLY_DRIVER() : ENSIGHT_MESH_DRIVER()
88 _ensightFile = new ofstream();
91 ENSIGHT_MESH_WRONLY_DRIVER::ENSIGHT_MESH_WRONLY_DRIVER(const string & fileName, MESH * ptrMesh) : ENSIGHT_MESH_DRIVER(fileName,ptrMesh)
93 _ensightFile = new ofstream();
96 ENSIGHT_MESH_WRONLY_DRIVER::ENSIGHT_MESH_WRONLY_DRIVER(const ENSIGHT_MESH_WRONLY_DRIVER & driver) : ENSIGHT_MESH_DRIVER(driver),_support(driver._support)
98 _ensightFile = new ofstream();
101 ENSIGHT_MESH_WRONLY_DRIVER::~ENSIGHT_MESH_WRONLY_DRIVER()
103 delete _ensightFile ;
106 GENDRIVER * ENSIGHT_MESH_WRONLY_DRIVER::copy() const
108 return new ENSIGHT_MESH_WRONLY_DRIVER(*this) ;
111 void ENSIGHT_MESH_WRONLY_DRIVER::openConst() const
113 const char * LOC = "ENSIGHT_MESH_WRONLY_DRIVER::open()" ;
117 if ( _fileName == "" )
118 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
119 << "_fileName is |\"\"|, please set a correct fileName before calling open()"
123 if (!(*_ensightFile).is_open())
124 (*_ensightFile).open(_fileName.c_str()) ;
126 if (!(*_ensightFile))
127 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC) << "Could not open main Ensight file "
134 void ENSIGHT_MESH_WRONLY_DRIVER::closeConst() const {
136 const char * LOC = "ENSIGHT_MESH_WRONLY_DRIVER::close() : ";
139 (*_ensightFile).close();
141 if (!(*_ensightFile))
142 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC) << "Could not close main Ensight file "
148 void ENSIGHT_MESH_WRONLY_DRIVER::read() throw (MEDEXCEPTION) {
149 throw MEDEXCEPTION("ENSIGHT_MESH_WRONLY_DRIVER::read : Can't read with a WRONLY driver !");
152 void ENSIGHT_MESH_WRONLY_DRIVER::write() const throw (MEDEXCEPTION)
155 const char * LOC = "ENSIGHT_MESH_WRONLY_DRIVER::write() : ";
158 // Well we must open ensight file first, because there are
159 // no other driver than MESH for ENSIGHT that do it !
162 // Ensight case organization requires a main file (filename.case) which defines organization
163 // We also need a geom file (filemane.geo) to store the meshs
164 // We also need a data file (filemane.data) to store the fields
166 string MeshName = _ptrMesh->getName() ;
167 // In fact, we must take care of all supports
168 // We restrict Field on all nodes or cells
170 cout << "-> creating the Ensight case file " << _fileName << endl ;
171 (*_ensightFile) << "FORMAT" << endl ;
172 (*_ensightFile) << "type: ensight" << endl ;
173 (*_ensightFile) << endl ;
174 (*_ensightFile) << "GEOMETRY" << endl ;
175 int len = _fileName.size() ;
176 string prefix = _fileName.substr(0,len-5); // extraction de .case
177 string ensight_geomf = prefix + ".geom" ;
178 string basen = getBaseName((char*)ensight_geomf.c_str());
179 (*_ensightFile) << "# Mesh detected with name = " << MeshName << endl ;
180 (*_ensightFile) << "model: " << basen << endl ;
181 (*_ensightFile) << endl ;
183 ofstream ensightGeomFile(ensight_geomf.c_str(),ios::out);
184 cout << "-> creating the Ensight geometry file " << ensight_geomf << endl ;
186 // ------------ create the Ensight file associated to this meshe
187 ensightGeomFile << "Ensight Geometry File : " << endl
188 << "Meshing from MedMemory" << endl ;
189 // ensightGeomFile << "node id given " << endl ;
190 // ensightGeomFile << "element id given " << endl ;
191 ensightGeomFile << "node id assign " << endl ;
192 ensightGeomFile << "element id assign " << endl ;
193 ensightGeomFile << "coordinates" << endl ;
194 // put points (all point are in 3D, so if we are in 1D or 2D, we complete by zero !
195 int SpaceDimension = _ptrMesh->getSpaceDimension() ;
196 int NumberOfNodes = _ptrMesh->getNumberOfNodes() ;
197 ensightGeomFile << NumberOfNodes << endl ;
198 const double *coordinate = _ptrMesh->getCoordinates(MED_FULL_INTERLACE) ;
199 ensightGeomFile.setf(ios::scientific);
200 ensightGeomFile.precision(5);
201 for (int i=0;i<NumberOfNodes;i++) {
202 // ensightGeomFile << setw(8) << i+1 ;
203 for (int j=0;j<SpaceDimension;j++)
204 ensightGeomFile << setw(12) << coordinate[i*SpaceDimension+j] ;
205 if (SpaceDimension==1)
206 ensightGeomFile << "0 0" ;
207 if (SpaceDimension==2)
208 ensightGeomFile << "0" ;
209 ensightGeomFile << endl ;
212 // we put connectivity
213 // how many cells and how many value in connectivity :
214 int cells_types_count = _ptrMesh->getNumberOfTypes(MED_CELL) ;
215 const CELLMODEL * cells_type =_ptrMesh->getCellsTypes(MED_CELL) ;
216 ensightGeomFile << "part 1 " << endl ;
217 ensightGeomFile << "elements are following " << endl ;
219 // we put connectivity
220 for (int i=0;i<cells_types_count;i++) {
221 int numberOfCell = _ptrMesh->getNumberOfElements(MED_CELL,cells_type[i].getType()) ;
222 int *filter = (int*) NULL ;
223 switch (cells_type[i].getType())
226 ensightGeomFile << "point" << endl ;
227 ensightGeomFile << setw(8) << numberOfCell << endl ;
228 filter = new int[1] ;
233 ensightGeomFile << "bar2" << endl ;
234 ensightGeomFile << setw(8) << numberOfCell << endl ;
235 filter = new int[2] ;
241 filter = new int[3] ;
248 ensightGeomFile << "tria3" << endl ;
249 ensightGeomFile << setw(8) << numberOfCell << endl ;
250 filter = new int[3] ;
257 ensightGeomFile << "quad4" << endl ;
258 ensightGeomFile << setw(8) << numberOfCell << endl ;
259 filter = new int[4] ;
267 ensightGeomFile << "tria6" << endl ;
268 ensightGeomFile << setw(8) << numberOfCell << endl ;
269 filter = new int[6] ;
279 ensightGeomFile << "quad8" << endl ;
280 ensightGeomFile << setw(8) << numberOfCell << endl ;
281 filter = new int[8] ;
293 ensightGeomFile << "tetra4" << endl ;
294 ensightGeomFile << setw(8) << numberOfCell << endl ;
295 filter = new int[4] ;
298 filter[2] = 3 ; // 3td element in med are 4th in vtk (array begin at 0 !)
299 filter[3] = 2 ; // 4th element in med are 3rd in vtk (array begin at 0 !)
303 ensightGeomFile << "pyramid5" << endl ;
304 ensightGeomFile << setw(8) << numberOfCell << endl ;
305 filter = new int[5] ;
307 filter[1] = 3 ; // 2nd element in med are 4th in vtk (array begin at 0 !)
309 filter[3] = 1 ; // 4th element in med are 2nd in vtk (array begin at 0 !)
314 ensightGeomFile << "penta6" << endl ;
315 ensightGeomFile << setw(8) << numberOfCell << endl ;
316 filter = new int[6] ;
326 ensightGeomFile << "hexa8" << endl ;
327 ensightGeomFile << setw(8) << numberOfCell << endl ;
328 filter = new int[8] ;
340 ensightGeomFile << "tetra10" << endl ;
341 ensightGeomFile << setw(8) << numberOfCell << endl ;
342 filter = new int[10] ;
356 ensightGeomFile << "pyramid13" << endl ;
357 ensightGeomFile << setw(8) << numberOfCell << endl ;
361 ensightGeomFile << "penta15" << endl ;
362 ensightGeomFile << setw(8) << numberOfCell << endl ;
366 ensightGeomFile << "hexa20" << endl ;
367 ensightGeomFile << setw(8) << numberOfCell << endl ;
375 throw MEDEXCEPTION(LOCALIZED(STRING(LOC)<<": MED element type not supported yet : " << cells_type[i].getName() ) ) ;
376 int nodes_cell = cells_type[i].getNumberOfNodes();
377 const int * connectivityArray = _ptrMesh->getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,cells_type[i].getType());
378 for (int j=0;j<numberOfCell;j++) {
379 for (int k=0;k<nodes_cell;k++)
380 ensightGeomFile << setw(8) << connectivityArray[j*nodes_cell+filter[k]] ;
381 ensightGeomFile << endl ;
387 for(int i=0;i<(int)_support.size();i++){
388 // we put connectivity
389 // how many cells and how many value in connectivity :
390 int nbTypes = _support[i]->getNumberOfTypes() ;
391 const medGeometryElement * geo_type = _support[i]->getTypes() ;
393 ensightGeomFile << "part " << i+2 << endl;
394 ensightGeomFile << "connectivities description" << endl;
397 // we put connectivity
398 for (int i=0;i<nbTypes;i++) {
400 int numberOfCell = _support[i]->getNumberOfElements(geo_type[i]) ;
401 int *filter = (int*) NULL ; // index in ensight connectivity
402 switch (geo_type[i]){
405 ensightGeomFile << "point" << endl ;
406 ensightGeomFile << setw(8) << numberOfCell << endl ;
407 filter = new int[1] ;
413 ensightGeomFile << "bar2" << endl ;
414 ensightGeomFile << setw(8) << numberOfCell << endl ;
415 filter = new int[2] ;
422 ensightGeomFile << "bar3" << endl ;
423 ensightGeomFile << setw(8) << numberOfCell << endl ;
424 filter = new int[3] ;
432 ensightGeomFile << "tria3" << endl ;
433 ensightGeomFile << setw(8) << numberOfCell << endl ;
434 filter = new int[3] ;
442 ensightGeomFile << "quad4" << endl ;
443 ensightGeomFile << setw(8) << numberOfCell << endl ;
444 filter = new int[4] ;
453 ensightGeomFile << "tria6" << endl ;
454 ensightGeomFile << setw(8) << numberOfCell << endl ;
455 filter = new int[6] ;
466 ensightGeomFile << "quad8" << endl ;
467 ensightGeomFile << setw(8) << numberOfCell << endl ;
468 filter = new int[8] ;
481 ensightGeomFile << "tetra4" << endl ;
482 ensightGeomFile << setw(8) << numberOfCell << endl ;
483 filter = new int[4] ;
486 filter[2] = 3 ; // 3td element in med are 4th in ensight (array begin at 0 !)
487 filter[3] = 2 ; // 4th element in med are 3rd in ensight (array begin at 0 !)
492 ensightGeomFile << "pyramid5" << endl ;
493 ensightGeomFile << setw(8) << numberOfCell << endl ;
494 filter = new int[5] ;
496 filter[1] = 3 ; // 2nd element in med are 4th in ensight (array begin at 0 !)
498 filter[3] = 1 ; // 4th element in med are 2nd in ensight (array begin at 0 !)
504 ensightGeomFile << "penta6" << endl ;
505 ensightGeomFile << setw(8) << numberOfCell << endl ;
506 filter = new int[6] ;
517 ensightGeomFile << "hexa8" << endl ;
518 ensightGeomFile << setw(8) << numberOfCell << endl ;
519 filter = new int[8] ;
532 ensightGeomFile << "tetra10" << endl ;
533 ensightGeomFile << setw(8) << numberOfCell << endl ;
534 filter = new int[10] ;
549 ensightGeomFile << "pyramid13" << endl ;
550 ensightGeomFile << setw(8) << numberOfCell << endl ;
555 ensightGeomFile << "penta15" << endl ;
556 ensightGeomFile << setw(8) << numberOfCell << endl ;
561 ensightGeomFile << "hexa20" << endl ;
562 ensightGeomFile << setw(8) << numberOfCell << endl ;
570 throw MEDEXCEPTION(LOCALIZED(STRING(LOC)<<": MED element type not supported yet : " << cells_type[i].getName() ) ) ;
572 const int * connectivityArray = _ptrMesh->getConnectivity(MED_FULL_INTERLACE,MED_NODAL,_support[i]->getEntity(),geo_type[i]);
573 const int *type = _support[i]->getNumber(geo_type[i]);
575 for (int j=0;j<numberOfCell;j++) {
576 for (int k=0;k<nodes_cell;k++){
577 ensightGeomFile << setw(8) << connectivityArray[(type[j]-1)*nodes_cell+filter[k]];
579 ensightGeomFile << endl ;
588 ensightGeomFile << endl ;
594 void ENSIGHT_MESH_WRONLY_DRIVER::addSupport(SUPPORT *sup)
596 _support.push_back(sup);
599 // void ENSIGHT_MESH_WRONLY_DRIVER::writeSupport(SUPPORT * mySupport) const {
600 // const char * LOC = "ENSIGHT_MESH_WRONLY_DRIVER::writeSupport(SUPPORT *) : " ;
602 // MESSAGE(LOC << "Not yet implemented, acting on the object " << *mySupport);
606 ENSIGHT_MESH_RDONLY_DRIVER::ENSIGHT_MESH_RDONLY_DRIVER() : ENSIGHT_MESH_DRIVER()
608 _ensightFile = new ifstream();
611 ENSIGHT_MESH_RDONLY_DRIVER::ENSIGHT_MESH_RDONLY_DRIVER(const string & fileName, MESH * ptrMesh) : ENSIGHT_MESH_DRIVER(fileName,ptrMesh)
613 _ensightFile = new ifstream();
616 ENSIGHT_MESH_RDONLY_DRIVER::ENSIGHT_MESH_RDONLY_DRIVER(const ENSIGHT_MESH_RDONLY_DRIVER & driver) : ENSIGHT_MESH_DRIVER(driver)
618 _ensightFile = new ifstream();
621 ENSIGHT_MESH_RDONLY_DRIVER::~ENSIGHT_MESH_RDONLY_DRIVER()
623 delete _ensightFile ;
626 GENDRIVER * ENSIGHT_MESH_RDONLY_DRIVER::copy() const
628 return new ENSIGHT_MESH_RDONLY_DRIVER(*this) ;
631 void ENSIGHT_MESH_RDONLY_DRIVER::openConst() const {
633 const char * LOC ="ENSIGHT_MESH_RDONLY_DRIVER::open() : ";
637 if ( _fileName == "" )
638 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC)
639 << "_fileName is |\"\"|, please set a correct fileName before calling open()"
643 if (!(*_ensightFile).is_open())
644 (*_ensightFile).open(_fileName.c_str()) ;
646 if (!(*_ensightFile))
647 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC) << "Could not open main Ensight file "
653 void ENSIGHT_MESH_RDONLY_DRIVER::closeConst() const {
655 const char * LOC = "ENSIGHT_MESH_RDONLY_DRIVER::close() : ";
658 (*_ensightFile).close();
660 if (!(*_ensightFile))
661 throw MED_EXCEPTION ( LOCALIZED( STRING(LOC) << "Could not close main Ensight file "
667 void ENSIGHT_MESH_RDONLY_DRIVER::write() const throw (MEDEXCEPTION) {
668 throw MEDEXCEPTION("ENSIGHT_MESH_RDONLY_DRIVER::write : Can't write with a RDONLY driver !");
671 void ENSIGHT_MESH_RDONLY_DRIVER::read() {
673 const char * LOC = "ENSIGHT_MESH_RDONLY_DRIVER::read() : " ;
678 string type_Ensight[15] = {
679 "point" , "bar2", "bar3" , "tria3" , "tria6" , "quad4" , "quad8" , "tetra4" , "tetra10" , "pyramid5" ,
680 "pyramid13" , "hexa8" , "hexa20" , "penta6" , "penta15" };
681 int nb_edge[15] = { 1,2,3,3,6,4,8,4,10,5,13,8,20,6,15 };
683 vector<string> type_read ;
684 vector<int> nbcell_read ;
685 vector< vector <int> > total_conn ;
688 //int number_of_geom ;
689 string geom_namefile ;
690 string field_namefile ;
698 int SpaceDimension = 3 ;
701 int NumberOfTypes = 0 ;
705 string mesh_read_name = "EnsightMesh"; // defaut name for the mesh
707 // recuperation des arguments du fichier ensight case
708 // --------------------------------------------------
710 // In this release, the following options are available :
711 // For GEOMETRY -> model:
713 cout << "****************** READ **************** starting " << endl ;
715 ifstream ensightCaseFile(_fileName.c_str(),ios::in);
716 cout << "Ensight case file name to read " << _fileName << endl ;
717 string diren = getDirName((char*)_fileName.c_str());
719 if (ensightCaseFile.is_open() )
721 while ( ensightCaseFile >> mot_lu )
723 if ( mot_lu == "GEOMETRY" ) {
724 cout << "geometry detected" << endl ;
725 while ( ensightCaseFile >> mot_lu ){
726 if ( mot_lu == "model:" ) {
727 // ensightCaseFile >> number_of_geom ;
728 // cout << "number of geometries " << number_of_geom << endl ;
729 ensightCaseFile >> mot_lu ;
730 geom_namefile = mot_lu;
731 cout << "name of geometry file : " << geom_namefile << endl ;
740 cout << "Error : requested file " << ensightCaseFile << " not found " << endl;
741 exit( EXIT_FAILURE );
744 // chargement des noeuds et connectivites necessaires depuis le fichier ensight geom
745 // ---------------------------------------------------------------------------------
747 _ptrMesh->_name = mesh_read_name ;
749 string cgeom_namefile;
750 if( diren.length() > 0 )
751 cgeom_namefile = diren + '/' + geom_namefile;
753 cgeom_namefile = geom_namefile;
754 cout << "-> Entering into the geometry file " << geom_namefile << endl ;
755 ifstream ensightGeomFile(cgeom_namefile.c_str(),ios::in);
756 if (ensightGeomFile.is_open() )
758 while ( ensightGeomFile >> mot_lu ){
759 if ( mot_lu == "given" ) geom_given=1 ;
760 if ( mot_lu == "coordinates" ) {
761 //---------------- Nodes part --------------------------------------------------
762 ensightGeomFile >> NumberOfNodes ;
763 cout << "-> loading " << NumberOfNodes << " coordinates " << endl ;
764 int NumberOfCoordinates = NumberOfNodes*SpaceDimension ;
765 double* Coordinates = new double[NumberOfCoordinates];
767 //cout << "-> geom given " << geom_given << endl ;
768 for ( int i=0 ; i < NumberOfNodes ; i++) {
769 if( geom_given) ensightGeomFile >> setw(8) >> num_coordinate ;
770 ensightGeomFile >> setw(12) >> Coordinates[iCoord] ;
771 ensightGeomFile >> setw(12) >> Coordinates[iCoord+1] ;
772 ensightGeomFile >> setw(12) >> Coordinates[iCoord+2] ;
773 // cout << "coordinate read " << num_coordinate << " : x = " << Coordinates[iCoord] << " y = " << Coordinates[iCoord+1] << " z = " << Coordinates[iCoord+2] << endl ;
776 _ptrMesh->_spaceDimension = SpaceDimension;
777 _ptrMesh->_numberOfNodes = NumberOfNodes;
778 _ptrMesh->_coordinate = new COORDINATE(SpaceDimension,NumberOfNodes,MED_EN::MED_FULL_INTERLACE);
779 _ptrMesh->_coordinate->setCoordinates(MED_EN::MED_FULL_INTERLACE,Coordinates);
780 _ptrMesh->_coordinate->setCoordinatesSystem("CARTESIAN");
781 delete [] Coordinates;
783 else if ( mot_lu == "part" ) {
784 //---------------- Connectivities part --------------------------------------------
785 while ( ensightGeomFile >> mot_lu ){
786 for ( int j = 0 ; j < 15 ; j++){
787 if( mot_lu == type_Ensight[j] ) {
789 iType=NumberOfTypes-1 ;
790 total_conn.resize(NumberOfTypes) ;
791 type_read.push_back(mot_lu) ;
792 ensightGeomFile >> number_of_cell ;
793 nbcell_read.push_back(number_of_cell) ;
794 total_conn[iType].resize(nb_edge[j]*number_of_cell);
795 cout << "-> loading " << number_of_cell << " cells connectivities of type " << type_Ensight[j] << " (" << nb_edge[j]*number_of_cell << ") values " << endl ;
796 for ( int k=0 ; k < nb_edge[j]*number_of_cell ; k++ ) {
797 ensightGeomFile >> setw(8) >> conn ;
798 total_conn[iType][k]=conn ;
799 // cout << " connectivitie " << k << " read = " << total_conn[iType][k] << endl ;
807 // for compilation on WNT
809 medGeometryElement classicalTypesCell[NumberOfTypes];
810 int nbOfClassicalTypesCell[NumberOfTypes];
811 #else // massive with zero size can't exist on Win32
812 medGeometryElement* classicalTypesCell = new medGeometryElement(NumberOfTypes);
813 int* nbOfClassicalTypesCell = new int(NumberOfTypes);
816 for (int k=0 ; k<NumberOfTypes ; k++){
817 for (int j=0 ; j<15 ; j++)
818 if(type_read[k] == type_Ensight[j] ){
821 case 1 : {classicalTypesCell[ind] = MED_EN::MED_POINT1 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
822 case 2 : {classicalTypesCell[ind] = MED_EN::MED_SEG2 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
823 case 3 : {classicalTypesCell[ind] = MED_EN::MED_SEG3 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
824 case 4 : {classicalTypesCell[ind] = MED_EN::MED_TRIA3 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
825 case 5 : {classicalTypesCell[ind] = MED_EN::MED_TRIA6 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
826 case 6 : {classicalTypesCell[ind] = MED_EN::MED_QUAD4 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
827 case 7 : {classicalTypesCell[ind] = MED_EN::MED_QUAD8 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
828 case 8 : {classicalTypesCell[ind] = MED_EN::MED_TETRA4 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
829 case 9 : {classicalTypesCell[ind] = MED_EN::MED_TETRA10 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
830 case 10 : {classicalTypesCell[ind] = MED_EN::MED_PYRA5 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
831 case 11 : {classicalTypesCell[ind] = MED_EN::MED_PYRA13 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
832 case 12 : {classicalTypesCell[ind] = MED_EN::MED_HEXA8 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
833 case 13 : {classicalTypesCell[ind] = MED_EN::MED_HEXA20 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
834 case 14 : {classicalTypesCell[ind] = MED_EN::MED_PENTA6 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
835 case 15 : {classicalTypesCell[ind] = MED_EN::MED_PENTA15 ; nbOfClassicalTypesCell[ind] = nbcell_read[k] ; ind++ ; break ;}
841 _ptrMesh->_connectivity = new CONNECTIVITY(NumberOfTypes,MED_EN::MED_CELL);
842 _ptrMesh->_connectivity->setGeometricTypes(classicalTypesCell,MED_EN::MED_CELL);
843 int * Count = new int[NumberOfTypes+1] ;
845 for (int i=0; i<NumberOfTypes; i++)
846 Count[i+1]=Count[i]+nbOfClassicalTypesCell[i] ;
847 _ptrMesh->_connectivity->setCount(Count,MED_EN::MED_CELL) ;
851 for (int k=0 ; k<NumberOfTypes ; k++){
852 for (int j=0 ; j<15 ; j++)
853 if(type_read[k] == type_Ensight[j] && j>6 ) MeshDimension = 3 ;
855 _ptrMesh->_meshDimension = MeshDimension;
856 _ptrMesh->_connectivity->setEntityDimension(MeshDimension);
858 for (int k = 0 ; k < NumberOfTypes ; k++) {
859 int nb_connectivities = total_conn[k].size();
860 int *connectivities = new int[nb_connectivities];
861 for (int itab=0 ; itab < nb_connectivities ; itab++) connectivities[itab]=total_conn[k][itab] ;
862 for (int j=0 ; j<15 ; j++) {
863 if( type_read[k] == type_Ensight[j] ) {
866 case 1 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_POINT1) ; break ;}
867 case 2 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_SEG2) ; break ;}
868 case 3 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_SEG3) ; break ;}
869 case 4 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_TRIA3) ; break ;}
870 case 5 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_TRIA6) ; break ;}
871 case 6 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_QUAD4) ; break ;}
872 case 7 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_QUAD8) ; break ;}
873 case 8 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_TETRA4) ; break ;}
874 case 9 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_TETRA10) ; break ;}
875 case 10 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_PYRA5) ; break ;}
876 case 11 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_PYRA13) ; break ;}
877 case 12 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_HEXA8) ; break ;}
878 case 13 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_HEXA20) ; break ;}
879 case 14 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_PENTA6) ; break ;}
880 case 15 : {_ptrMesh->_connectivity->setNodal(connectivities,MED_EN::MED_CELL,MED_EN::MED_PENTA15) ; break ;}
885 delete [] connectivities;
888 // cout << "Impression de _ptrmesh dans EnsightMeshDriver: " << endl;
889 // cout << *_ptrMesh ;