Salome HOME
Join modifications from branch BR_DEBUG_3_2_0b1
[tools/medcoupling.git] / doc / MEDMEM / MEDMEM_InvokingDriverByAttachingItToAnObject.cxx
1 // Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
3 // 
4 #include "MEDMEM_Exception.hxx"
5 #include "MEDMEM_define.hxx"
6
7 #include "MEDMEM_Field.hxx"
8 #include "MEDMEM_Mesh.hxx"
9 #include "MEDMEM_Med.hxx"
10 #include "MEDMEM_MedMedDriver.hxx"
11 #include "MEDMEM_MedMeshDriver.hxx"
12
13 using namespace MEDMEM ;
14 using namespace MED_EN ;
15
16 main () {
17   
18   const char * fileName   = "pointe.med";
19   const char * fileName2  = "Field&MeshGeneratedPointe.med";
20   const char * fileName3  = "MedGeneratedPointe.med";
21   const char * fieldName  = "fieldcelldouble";
22   const char * meshName   = "maa1";
23
24   try {
25     // Test creation of drivers from the standard driver method of an object
26     {  
27       FIELD<double> * myField = new FIELD<double>();
28       MED_FIELD_RDONLY_DRIVER<double> myRdOnlyDriver(fileName,myField);
29       myRdOnlyDriver.setFieldName(fieldName);
30       myRdOnlyDriver.open(); 
31       //This test failed due to inadequate Support implementation   
32       // myRdOnlyDriver.read();
33       // try  { myRdOnlyDriver.write(); } catch  (MEDEXCEPTION& ex) 
34       //   { MESSAGE(ex.what()); }
35       MED_FIELD_WRONLY_DRIVER<double> myWrOnlyDriver(fileName2,myField);
36       myWrOnlyDriver.open(); 
37       //This test failed due to inadequate Support implementation   
38       // myWrOnlyDriver.write(); 
39       // try  myWrOnlyDriver.read(); catch  (MEDEXCEPTION& ex) 
40       //   { MESSAGE(ex.what()); }
41       myRdOnlyDriver.close();
42       myWrOnlyDriver.close();
43       delete myField;
44     }
45
46     {
47       MESH * myMesh = new MESH();
48       MED_MESH_RDONLY_DRIVER myRdOnlyDriver(fileName,myMesh);
49       myRdOnlyDriver.setMeshName(meshName);
50       myRdOnlyDriver.open(); 
51       myRdOnlyDriver.read();
52       myRdOnlyDriver.close(); 
53       // try  { myRdOnlyDriver.write(); } catch  (MEDEXCEPTION& ex)
54       //   { MESSAGE(ex.what()); }
55       MED_MESH_WRONLY_DRIVER myWrOnlyDriver(fileName2,myMesh);
56       myWrOnlyDriver.setMeshName(meshName);
57       myWrOnlyDriver.open(); 
58       myWrOnlyDriver.write(); 
59       // try  myWrOnlyDriver.read(); catch  (MEDEXCEPTION& ex)
60       //   { MESSAGE(ex.what()); }
61       // myRdOnlyDriver.close(); 
62       //While we use H5close() in the MESH/FIELD drivers, the next
63       //line will fail, because all files are previously closed !
64       myWrOnlyDriver.close();
65       delete myMesh;
66     }
67
68     {
69       MED * myMed = new MED();
70       MED_MED_RDONLY_DRIVER myRdOnlyDriver(fileName,myMed);
71       myRdOnlyDriver.open(); 
72       myRdOnlyDriver.readFileStruct();
73       myRdOnlyDriver.close(); 
74       myMed->updateSupport(); // DOIT ETRE SUPPRIMEE
75       //      myRdOnlyDriver.read();
76       // try { myRdOnlyDriver.write(); } catch  (MEDEXCEPTION& ex) 
77       //   { MESSAGE(ex.what()); }
78       //MED_MED_WRONLY_DRIVER myWrOnlyDriver(fileName3,myMed);
79       //myWrOnlyDriver.open(); 
80       //myWrOnlyDriver.write(); // Not implemented yet.
81       //myWrOnlyDriver.close();
82       delete myMed;
83     }
84
85   } catch (MEDEXCEPTION& ex){
86     cout << "MAIN BLOCK EXCEPTION" << endl;
87     MESSAGE(ex.what()) ;
88   }
89 }