1 // Copyright (C) 2007-2008 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
22 #include "MEDMEM_TypeMeshDriver.hxx"
23 #include "MEDMEM_DriversDef.hxx"
25 #include "MEDMEM_Family.hxx"
26 #include "MEDMEM_Group.hxx"
27 #include "MEDMEM_Coordinate.hxx"
28 #include "MEDMEM_Connectivity.hxx"
29 #include "MEDMEM_Mesh.hxx"
30 #include "MEDMEM_CellModel.hxx"
33 using namespace MEDMEM;
35 // Every memory allocation made in the MedDriver members function are desallocated in the Mesh destructor
37 TYPE_MESH_DRIVER::TYPE_MESH_DRIVER():
39 _ptrMesh(( MESH *)MED_NULL),
40 // A VOIR _medIdt(MED_INVALID),
45 TYPE_MESH_DRIVER::TYPE_MESH_DRIVER(const std::string & fileName,
47 MED_EN::med_mode_acces accessMode):
48 GENDRIVER(fileName,accessMode),
50 // A VOIR _medIdt(MED_INVALID),
55 TYPE_MESH_DRIVER::TYPE_MESH_DRIVER(const TYPE_MESH_DRIVER & driver):
57 _ptrMesh(driver._ptrMesh),
58 // A VOIR _medIdt(MED_INVALID),
59 _meshName(driver._meshName)
63 TYPE_MESH_DRIVER::~TYPE_MESH_DRIVER()
67 void TYPE_MESH_DRIVER::open()
70 const char * LOC = "TYPE_MESH_DRIVER::open()" ;
74 // _status = MED_OPENED;
76 // _medIdt = MED_INVALID;
77 // _status = MED_CLOSED;
78 // throw MEDEXCEPTION(LOCALIZED(STRING(LOC)<<" Could not open file "<<_fileName<<" in mode "<<_accessMode));
84 void TYPE_MESH_DRIVER::close()
87 const char * LOC = "TYPE_MESH_DRIVER::close() " ;
91 // if ( _status == MED_OPENED) {
92 // err=MED_FR::MEDfermer(_medIdt);
93 // H5close(); // If we call H5close() all the files are closed.
95 // throw MEDEXCEPTION( LOCALIZED(STRING(LOC)
96 // <<" Error when closing file !"
99 // _status = MED_CLOSED;
100 // _medIdt = MED_INVALID;
106 void TYPE_MESH_DRIVER::setMeshName(const string & meshName) { _meshName = meshName; };
107 string TYPE_MESH_DRIVER::getMeshName() const { return _meshName; };
110 //---------------------------------- RDONLY PART -------------------------------------------------------------
112 TYPE_MESH_RDONLY_DRIVER::TYPE_MESH_RDONLY_DRIVER(): TYPE_MESH_DRIVER()
116 TYPE_MESH_RDONLY_DRIVER::TYPE_MESH_RDONLY_DRIVER(const string & fileName,
118 TYPE_MESH_DRIVER(fileName,ptrMesh,MED_RDONLY)
120 MESSAGE_MED("TYPE_MESH_RDONLY_DRIVER::TYPE_MESH_RDONLY_DRIVER(const string & fileName, MESH * ptrMesh) has been created");
123 TYPE_MESH_RDONLY_DRIVER::TYPE_MESH_RDONLY_DRIVER(const TYPE_MESH_RDONLY_DRIVER & driver):
124 TYPE_MESH_DRIVER(driver)
128 TYPE_MESH_RDONLY_DRIVER::~TYPE_MESH_RDONLY_DRIVER()
130 //MESSAGE_MED("TYPE_MESH_RDONLY_DRIVER::~TYPE_MESH_RDONLY_DRIVER() has been destroyed");
133 GENDRIVER * TYPE_MESH_RDONLY_DRIVER::copy(void) const
135 return new TYPE_MESH_RDONLY_DRIVER(*this);
138 void TYPE_MESH_RDONLY_DRIVER::read(void)
141 const char * LOC = "TYPE_MESH_RDONLY_DRIVER::read() : " ;
144 if (_status!=MED_OPENED)
145 throw MEDEXCEPTION(LOCALIZED(STRING(LOC) << "The _idt of file " << _fileName << " is : " << " (the file is not opened)." )) ;
147 _ptrMesh->_name = _meshName;
153 void TYPE_MESH_RDONLY_DRIVER::write( void ) const
156 throw MEDEXCEPTION("TYPE_MESH_RDONLY_DRIVER::write : Can't write with a RDONLY driver !");
160 /*--------------------- WRONLY PART -------------------------------*/
162 TYPE_MESH_WRONLY_DRIVER::TYPE_MESH_WRONLY_DRIVER():TYPE_MESH_DRIVER()
166 TYPE_MESH_WRONLY_DRIVER::TYPE_MESH_WRONLY_DRIVER(const string & fileName,
168 TYPE_MESH_DRIVER(fileName,ptrMesh,MED_WRONLY)
170 MESSAGE_MED("TYPE_MESH_WRONLY_DRIVER::TYPE_MESH_WRONLY_DRIVER(const string & fileName, MESH * ptrMesh) has been created");
173 TYPE_MESH_WRONLY_DRIVER::TYPE_MESH_WRONLY_DRIVER(const TYPE_MESH_WRONLY_DRIVER & driver):
174 TYPE_MESH_DRIVER(driver)
178 TYPE_MESH_WRONLY_DRIVER::~TYPE_MESH_WRONLY_DRIVER()
180 //MESSAGE_MED("TYPE_MESH_WRONLY_DRIVER::TYPE_MESH_WRONLY_DRIVER(const string & fileName, MESH * ptrMesh) has been destroyed");
183 GENDRIVER * TYPE_MESH_WRONLY_DRIVER::copy(void) const
185 return new TYPE_MESH_WRONLY_DRIVER(*this);
188 void TYPE_MESH_WRONLY_DRIVER::read (void)
191 throw MEDEXCEPTION("TYPE_MESH_WRONLY_DRIVER::read : Can't read with a WRONLY driver !");
194 void TYPE_MESH_WRONLY_DRIVER::write(void) const
197 const char * LOC = "void TYPE_MESH_WRONLY_DRIVER::write(void) const : ";
200 throw MEDEXCEPTION(LOCALIZED(STRING(LOC)<< "Write Driver isn\'t implemented"));
207 /*--------------------- RDWR PART -------------------------------*/
209 TYPE_MESH_RDWR_DRIVER::TYPE_MESH_RDWR_DRIVER():TYPE_MESH_DRIVER()
213 TYPE_MESH_RDWR_DRIVER::TYPE_MESH_RDWR_DRIVER(const string & fileName,
215 TYPE_MESH_DRIVER(fileName,ptrMesh,MED_RDWR)
217 MESSAGE_MED("TYPE_MESH_RDWR_DRIVER::TYPE_MESH_RDWR_DRIVER(const string & fileName, MESH * ptrMesh) has been created");
220 TYPE_MESH_RDWR_DRIVER::TYPE_MESH_RDWR_DRIVER(const TYPE_MESH_RDWR_DRIVER & driver):
221 TYPE_MESH_RDONLY_DRIVER::TYPE_MESH_DRIVER(driver)
225 TYPE_MESH_RDWR_DRIVER::~TYPE_MESH_RDWR_DRIVER() {
226 //MESSAGE_MED("TYPE_MESH_RDWR_DRIVER::TYPE_MESH_RDWR_DRIVER(const string & fileName, MESH * ptrMesh) has been destroyed");
229 GENDRIVER * TYPE_MESH_RDWR_DRIVER::copy(void) const
231 return new TYPE_MESH_RDWR_DRIVER(*this);
234 void TYPE_MESH_RDWR_DRIVER::write(void) const
237 TYPE_MESH_WRONLY_DRIVER::write();
239 void TYPE_MESH_RDWR_DRIVER::read (void)
242 TYPE_MESH_RDONLY_DRIVER::read();