4 #include "MEDMEM_Exception.hxx"
5 #include "MEDMEM_define.hxx"
7 #include "MEDMEM_Med.hxx"
8 #include "MEDMEM_Mesh.hxx"
9 #include "MEDMEM_Family.hxx"
10 #include "MEDMEM_Support.hxx"
11 #include "MEDMEM_Field.hxx"
13 #include "MEDMEM_GenDriver.hxx"
14 #include "MEDMEM_MedMedDriver.hxx"
15 #include "MEDMEM_MedMeshDriver.hxx"
16 #include "MEDMEM_MedFieldDriver.hxx"
19 void usage(char * name)
21 cout << " " << name << " <input med file> <output med file> " <<endl ;
22 cout << " " << "(the two file name are mandatory)" << endl ;
26 int main (int argc, char ** argv) {
28 if (argc != 3) usage(argv[0]);
30 string filenameIN = argv[1] ;
31 string filenameOUT = argv[2] ;
33 MED * myMed = new MED() ;
34 MED_MED_DRIVER myMedDriver(filenameIN,myMed) ;
36 // we read all meshes and fields in filenameIN
41 myMedDriver.readFileStruct();
45 MESSAGE("Read all meshes :") ;
46 int NumberOfMeshes = myMed->getNumberOfMeshes() ;
47 MESSAGE("Number of meshes : "<<NumberOfMeshes) ;
48 deque<string> MeshName = myMed->getMeshNames() ;
49 map<string,MESH*> _meshes ;
50 for (int i=0; i<NumberOfMeshes; i++) {
51 _meshes[MeshName[i]]=myMed->getMesh(MeshName[i]) ;
52 _meshes[MeshName[i]]->read();
53 MESSAGE(" - Mesh "<<i+1<<", named "<<MeshName[i]<<" read !");
54 MED_MESH_WRONLY_DRIVER myMeshDriver(filenameOUT,_meshes[MeshName[i]]);
55 myMeshDriver.setMeshName(MeshName[i]);
57 myMeshDriver.write() ;
58 myMeshDriver.close() ;
61 // set support : support must be calculated with mesh information !!!
62 myMed->updateSupport() ;
65 MESSAGE("Read all fields :") ;
66 int NumberOfFields = myMed->getNumberOfFields() ;
67 MESSAGE("Number of fields : "<<NumberOfFields);
68 deque<string> FieldName = myMed->getFieldNames() ;
69 map<string,FIELD_*> _fields ;
70 for (int i=0; i<NumberOfFields; i++) {
71 deque<DT_IT_> FieldIteration = myMed->getFieldIteration(FieldName[i]) ;
72 MESSAGE(" - Field "<<i+1<<", named "<<FieldName[i]<<" :");
73 int NumberOfIteration = FieldIteration.size() ;
74 MESSAGE(" Number of iteration pair : "<<NumberOfIteration);
75 for (int j=0; j<NumberOfIteration; j++) {
76 MESSAGE(" FieldName[i] "<<FieldName[i]<<",Iteration "<< FieldIteration[j].dt<<", order number "<<FieldIteration[j].it<<" j="<<j<<",i="<<i<<" :");
77 FIELD_ * myField = myMed->getField(FieldName[i],FieldIteration[j].dt,FieldIteration[j].it) ;
79 med_type_champ type = myField->getValueType() ;
81 case MED_FR::MED_INT32: {
82 // if (type == MED_FR::MED_INT32) {
83 MESSAGE(" * Field named "<<((FIELD<int>*)myField)->getName());
84 ((FIELD<int>*)myField)->read() ;
85 MESSAGE(" * Iteration "<<FieldIteration[j].dt<<", order number "<<FieldIteration[j].it<<" read !");
86 MED_FIELD_WRONLY_DRIVER<int> myFieldDriver(filenameOUT,(FIELD<int>*)myField);
87 myFieldDriver.setFieldName(FieldName[i]);
88 myFieldDriver.open() ;
89 myFieldDriver.write() ;
90 myFieldDriver.close() ;
94 case MED_FR::MED_REEL64: {
95 // if (type == MED_FR::MED_REEL64) {
96 FIELD<double>* myField2 = (FIELD<double>*)myField ;
97 MESSAGE(" * Field named "<<myField2->getName());
99 MESSAGE(" * Iteration "<<FieldIteration[j].dt<<", order number "<<FieldIteration[j].it<<" read !");
100 MED_FIELD_WRONLY_DRIVER<double> myFieldDriver(filenameOUT,myField2);
101 myFieldDriver.setFieldName(FieldName[i]);
102 myFieldDriver.open() ;
103 myFieldDriver.write() ;
104 myFieldDriver.close() ;
109 MESSAGE(" * Iteration "<<FieldIteration[j].dt<<", order number "<<FieldIteration[j].it<<" not read : wrond type "<<type);
115 } catch (MEDEXCEPTION& ex){
119 // we write all in file filenameOUT :
122 // MED_MED_DRIVER myMedDriverOUT("/tmp/test.med",myMed) ;
123 // myMedDriverOUT.open() ;
124 // myMedDriverOUT.write() ;
125 // myMedDriverOUT.close() ;
126 // } catch (MEDEXCEPTION& ex){
127 // MESSAGE(ex.what()) ;