1 #ifndef MED_MESH_DRIVER_HXX
2 #define MED_MESH_DRIVER_HXX
6 #include "MEDMEM_define.hxx"
7 #include "MEDMEM_GenDriver.hxx"
9 #include "MEDMEM_STRING.hxx"
10 #include "MEDMEM_Exception.hxx"
11 #include "utilities.h"
18 class MED_MESH_DRIVER : public GENDRIVER
23 MED_FR::med_idt _medIdt;
24 string _meshName; // const ?
25 int _meshNum; // INUTILE ?
30 static const MED_FR::med_geometrie_element all_cell_type[MED_NBR_GEOMETRIE_MAILLE];
32 static const char * const all_cell_type_tab [MED_NBR_GEOMETRIE_MAILLE];
34 MED_MESH_DRIVER():GENDRIVER(),
35 _ptrMesh(( MESH *)MED_NULL),_medIdt(MED_INVALID),
36 _meshName(""),_meshNum(MED_INVALID)
39 MED_MESH_DRIVER(const string & fileName, MESH * ptrMesh, med_mode_acces accessMode):
40 GENDRIVER(fileName,accessMode),
41 _ptrMesh(ptrMesh),_medIdt(MED_INVALID),
42 _meshName(""),_meshNum(MED_INVALID)
47 BEGIN_OF("MED_MESH_DRIVER::open()");
48 _medIdt = MED_FR::MEDouvrir( (const_cast <char *> (_fileName.c_str())),(MED_FR::med_mode_acces) _accessMode);
49 MESSAGE("MED_MESH_DRIVER::open() _medIdt : "<< _medIdt );
50 if (_medIdt > 0) _status=MED_OPENED; else {
51 MESSAGE(" MED_MESH__DRIVER::open() : MEDouvrir : _medIdt= " << _medIdt );
52 _status = MED_INVALID;
54 END_OF("MED_MESH_DRIVER::open()");
58 const char * LOC = "MED_MESH_DRIVER::close() " ;
61 if ( _status == MED_OPENED) {
62 err=MED_FR::MEDfermer(_medIdt);
65 throw MEDEXCEPTION( LOCALIZED(STRING(LOC)
66 <<" Error when closing file !"
69 MESSAGE(LOC <<": _medIdt= " << _medIdt );
70 MESSAGE(LOC<<": MEDfermer : err = " << err );
72 _medIdt = MED_INVALID;
77 virtual void write( void ) const = 0 ;
78 virtual void read ( void ) = 0 ;
80 void setMeshName(const string & meshName) ;
81 string getMeshName() const ;
85 class MED_MESH_RDONLY_DRIVER : public virtual MED_MESH_DRIVER
90 MED_MESH_RDONLY_DRIVER():MED_MESH_DRIVER() {};
92 MED_MESH_RDONLY_DRIVER(const string & fileName, MESH * ptrMesh):
93 MED_MESH_DRIVER(fileName,ptrMesh,MED_RDONLY) {
94 MESSAGE("MED_MESH_RDONLY_DRIVER::MED_MESH_RDONLY_DRIVER(const string & fileName, MESH * ptrMesh) has been created");
97 ~MED_MESH_RDONLY_DRIVER() {
98 MESSAGE("MED_MESH_RDONLY_DRIVER::~MED_MESH_RDONLY_DRIVER() has been destroyed");
101 // CREER UNE METHODE POUR LIRE LA LISTE DES MAILLAGES .....
103 int getCONNECTIVITY();
105 void write( void ) const ;
109 int getNodalConnectivity(CONNECTIVITY * Connectivity) ;
110 int getDescendingConnectivity(CONNECTIVITY * Connectivity) ;
111 int getNodesFamiliesNumber() ;
112 int getCellsFamiliesNumber(int** Arrays, CONNECTIVITY* Connectivity) ;
113 void updateFamily() ;
114 void buildAllGroups(vector<GROUP*> & Groups, vector<FAMILY*> & Families) ;
118 class MED_MESH_WRONLY_DRIVER : public virtual MED_MESH_DRIVER {
122 MED_MESH_WRONLY_DRIVER():MED_MESH_DRIVER() {}
124 MED_MESH_WRONLY_DRIVER(const string & fileName, MESH * ptrMesh):
125 MED_MESH_DRIVER(fileName,ptrMesh,MED_WRONLY)
127 MESSAGE("MED_MESH_WRONLY_DRIVER::MED_MESH_WRONLY_DRIVER(const string & fileName, MESH * ptrMesh) has been created");
130 ~MED_MESH_WRONLY_DRIVER() {
131 MESSAGE("MED_MESH_WRONLY_DRIVER::MED_MESH_WRONLY_DRIVER(const string & fileName, MESH * ptrMesh) has been destroyed");
134 void write( void ) const ;
137 int writeCoordinates () const;
138 int writeConnectivities (medEntityMesh entity) const;
139 int writeFamilyNumbers () const;
140 int writeFamilies (vector<FAMILY*> & families) const;
144 class MED_MESH_RDWR_DRIVER : public MED_MESH_RDONLY_DRIVER, public MED_MESH_WRONLY_DRIVER {
148 MED_MESH_RDWR_DRIVER():MED_MESH_DRIVER() {}
150 MED_MESH_RDWR_DRIVER(const string & fileName, MESH * ptrMesh):
151 MED_MESH_DRIVER(fileName,ptrMesh,MED_RDWR)
153 MESSAGE("MED_MESH_RDWR_DRIVER::MED_MESH_RDWR_DRIVER(const string & fileName, MESH * ptrMesh) has been created");
156 ~MED_MESH_RDWR_DRIVER() {
157 MESSAGE("MED_MESH_RDWR_DRIVER::MED_MESH_RDWR_DRIVER(const string & fileName, MESH * ptrMesh) has been destroyed");
160 void write(void) const ;
165 #endif /* MED_MESH_DRIVER_HXX */