1 // Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
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.
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.
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
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 #include "MEDMEM_TypeMeshDriver.hxx"
24 #include "MEDMEM_DriversDef.hxx"
26 #include "MEDMEM_Family.hxx"
27 #include "MEDMEM_Group.hxx"
28 #include "MEDMEM_Coordinate.hxx"
29 #include "MEDMEM_Connectivity.hxx"
30 #include "MEDMEM_Mesh.hxx"
31 #include "MEDMEM_CellModel.hxx"
34 using namespace MEDMEM;
36 // Every memory allocation made in the MedDriver members function are desallocated in the Mesh destructor
38 TYPE_MESH_DRIVER::TYPE_MESH_DRIVER():
40 _ptrMesh(( MESH *)MED_NULL),
41 // A VOIR _medIdt(MED_INVALID),
46 TYPE_MESH_DRIVER::TYPE_MESH_DRIVER(const std::string & fileName,
48 MED_EN::med_mode_acces accessMode):
49 GENDRIVER(fileName,accessMode),
51 // A VOIR _medIdt(MED_INVALID),
56 TYPE_MESH_DRIVER::TYPE_MESH_DRIVER(const TYPE_MESH_DRIVER & driver):
58 _ptrMesh(driver._ptrMesh),
59 // A VOIR _medIdt(MED_INVALID),
60 _meshName(driver._meshName)
64 TYPE_MESH_DRIVER::~TYPE_MESH_DRIVER()
68 void TYPE_MESH_DRIVER::open()
71 const char * LOC = "TYPE_MESH_DRIVER::open()" ;
75 // _status = MED_OPENED;
77 // _medIdt = MED_INVALID;
78 // _status = MED_CLOSED;
79 // throw MEDEXCEPTION(LOCALIZED(STRING(LOC)<<" Could not open file "<<_fileName<<" in mode "<<_accessMode));
85 void TYPE_MESH_DRIVER::close()
88 const char * LOC = "TYPE_MESH_DRIVER::close() " ;
92 // if ( _status == MED_OPENED) {
93 // err=MED_FR::MEDfermer(_medIdt);
94 // H5close(); // If we call H5close() all the files are closed.
96 // throw MEDEXCEPTION( LOCALIZED(STRING(LOC)
97 // <<" Error when closing file !"
100 // _status = MED_CLOSED;
101 // _medIdt = MED_INVALID;
107 void TYPE_MESH_DRIVER::setMeshName(const string & meshName) { _meshName = meshName; };
108 string TYPE_MESH_DRIVER::getMeshName() const { return _meshName; };
111 //---------------------------------- RDONLY PART -------------------------------------------------------------
113 TYPE_MESH_RDONLY_DRIVER::TYPE_MESH_RDONLY_DRIVER(): TYPE_MESH_DRIVER()
117 TYPE_MESH_RDONLY_DRIVER::TYPE_MESH_RDONLY_DRIVER(const string & fileName,
119 TYPE_MESH_DRIVER(fileName,ptrMesh,MED_RDONLY)
121 MESSAGE_MED("TYPE_MESH_RDONLY_DRIVER::TYPE_MESH_RDONLY_DRIVER(const string & fileName, MESH * ptrMesh) has been created");
124 TYPE_MESH_RDONLY_DRIVER::TYPE_MESH_RDONLY_DRIVER(const TYPE_MESH_RDONLY_DRIVER & driver):
125 TYPE_MESH_DRIVER(driver)
129 TYPE_MESH_RDONLY_DRIVER::~TYPE_MESH_RDONLY_DRIVER()
131 //MESSAGE_MED("TYPE_MESH_RDONLY_DRIVER::~TYPE_MESH_RDONLY_DRIVER() has been destroyed");
134 GENDRIVER * TYPE_MESH_RDONLY_DRIVER::copy(void) const
136 return new TYPE_MESH_RDONLY_DRIVER(*this);
139 void TYPE_MESH_RDONLY_DRIVER::read(void)
142 const char * LOC = "TYPE_MESH_RDONLY_DRIVER::read() : " ;
145 if (_status!=MED_OPENED)
146 throw MEDEXCEPTION(LOCALIZED(STRING(LOC) << "The _idt of file " << _fileName << " is : " << " (the file is not opened)." )) ;
148 _ptrMesh->_name = _meshName;
154 void TYPE_MESH_RDONLY_DRIVER::write( void ) const
157 throw MEDEXCEPTION("TYPE_MESH_RDONLY_DRIVER::write : Can't write with a RDONLY driver !");
161 /*--------------------- WRONLY PART -------------------------------*/
163 TYPE_MESH_WRONLY_DRIVER::TYPE_MESH_WRONLY_DRIVER():TYPE_MESH_DRIVER()
167 TYPE_MESH_WRONLY_DRIVER::TYPE_MESH_WRONLY_DRIVER(const string & fileName,
169 TYPE_MESH_DRIVER(fileName,ptrMesh,MED_WRONLY)
171 MESSAGE_MED("TYPE_MESH_WRONLY_DRIVER::TYPE_MESH_WRONLY_DRIVER(const string & fileName, MESH * ptrMesh) has been created");
174 TYPE_MESH_WRONLY_DRIVER::TYPE_MESH_WRONLY_DRIVER(const TYPE_MESH_WRONLY_DRIVER & driver):
175 TYPE_MESH_DRIVER(driver)
179 TYPE_MESH_WRONLY_DRIVER::~TYPE_MESH_WRONLY_DRIVER()
181 //MESSAGE_MED("TYPE_MESH_WRONLY_DRIVER::TYPE_MESH_WRONLY_DRIVER(const string & fileName, MESH * ptrMesh) has been destroyed");
184 GENDRIVER * TYPE_MESH_WRONLY_DRIVER::copy(void) const
186 return new TYPE_MESH_WRONLY_DRIVER(*this);
189 void TYPE_MESH_WRONLY_DRIVER::read (void)
192 throw MEDEXCEPTION("TYPE_MESH_WRONLY_DRIVER::read : Can't read with a WRONLY driver !");
195 void TYPE_MESH_WRONLY_DRIVER::write(void) const
198 const char * LOC = "void TYPE_MESH_WRONLY_DRIVER::write(void) const : ";
201 throw MEDEXCEPTION(LOCALIZED(STRING(LOC)<< "Write Driver isn\'t implemented"));
208 /*--------------------- RDWR PART -------------------------------*/
210 TYPE_MESH_RDWR_DRIVER::TYPE_MESH_RDWR_DRIVER():TYPE_MESH_DRIVER()
214 TYPE_MESH_RDWR_DRIVER::TYPE_MESH_RDWR_DRIVER(const string & fileName,
216 TYPE_MESH_DRIVER(fileName,ptrMesh,MED_RDWR)
218 MESSAGE_MED("TYPE_MESH_RDWR_DRIVER::TYPE_MESH_RDWR_DRIVER(const string & fileName, MESH * ptrMesh) has been created");
221 TYPE_MESH_RDWR_DRIVER::TYPE_MESH_RDWR_DRIVER(const TYPE_MESH_RDWR_DRIVER & driver):
222 TYPE_MESH_RDONLY_DRIVER::TYPE_MESH_DRIVER(driver)
226 TYPE_MESH_RDWR_DRIVER::~TYPE_MESH_RDWR_DRIVER() {
227 //MESSAGE_MED("TYPE_MESH_RDWR_DRIVER::TYPE_MESH_RDWR_DRIVER(const string & fileName, MESH * ptrMesh) has been destroyed");
230 GENDRIVER * TYPE_MESH_RDWR_DRIVER::copy(void) const
232 return new TYPE_MESH_RDWR_DRIVER(*this);
235 void TYPE_MESH_RDWR_DRIVER::write(void) const
238 TYPE_MESH_WRONLY_DRIVER::write();
240 void TYPE_MESH_RDWR_DRIVER::read (void)
243 TYPE_MESH_RDONLY_DRIVER::read();