5 #include "MEDMEM_Exception.hxx"
6 #include "MEDMEM_define.hxx"
8 #include "MEDMEM_Med.hxx"
9 #include "MEDMEM_Mesh.hxx"
10 #include "MEDMEM_Family.hxx"
11 #include "MEDMEM_Support.hxx"
12 #include "MEDMEM_Field.hxx"
15 void usage(char * name)
17 cout << " " << name << " <input med file> <output med file> " <<endl ;
18 cout << " " << "(the two file name are mandatory)" << endl ;
22 int main (int argc, char ** argv) {
24 if (argc != 3) usage(argv[0]);
26 string filenameIN = argv[1] ;
27 string filenameOUT = argv[2] ;
29 MED * myMed = new MED() ;
30 MED_MED_DRIVER myMedDriver(filenameIN,myMed) ;
32 // we read all meshes and fields in filenameIN
37 myMedDriver.readFileStruct();
41 MESSAGE("Read all meshes :") ;
42 int NumberOfMeshes = myMed->getNumberOfMeshes() ;
43 MESSAGE("Number of meshes : "<<NumberOfMeshes) ;
44 deque<string> MeshName = myMed->getMeshNames() ;
45 map<string,MESH*> _meshes ;
46 for (int i=0; i<NumberOfMeshes; i++) {
47 _meshes[MeshName[i]]=myMed->getMesh(MeshName[i]) ;
48 _meshes[MeshName[i]]->read();
49 MESSAGE(" - Mesh "<<i+1<<", named "<<MeshName[i]<<" read !");
50 MED_MESH_WRONLY_DRIVER myMeshDriver(filenameOUT,_meshes[MeshName[i]]);
51 myMeshDriver.setMeshName(MeshName[i]);
53 myMeshDriver.write() ;
54 myMeshDriver.close() ;
57 // set support : support must be calculated with mesh information !!!
58 myMed->updateSupport() ;
61 MESSAGE("Read all fields :") ;
62 int NumberOfFields = myMed->getNumberOfFields() ;
63 MESSAGE("Number of fields : "<<NumberOfFields);
64 deque<string> FieldName = myMed->getFieldNames() ;
65 map<string,FIELD_*> _fields ;
66 for (int i=0; i<NumberOfFields; i++) {
67 deque<DT_IT_> FieldIteration = myMed->getFieldIteration(FieldName[i]) ;
68 MESSAGE(" - Field "<<i+1<<", named "<<FieldName[i]<<" :");
69 int NumberOfIteration = FieldIteration.size() ;
70 MESSAGE(" Number of iteration pair : "<<NumberOfIteration);
71 for (int j=0; j<NumberOfIteration; j++) {
72 MESSAGE(" FieldName[i] "<<FieldName[i]<<",Iteration "<< FieldIteration[j].dt<<", order number "<<FieldIteration[j].it<<" j="<<j<<",i="<<i<<" :");
73 FIELD_ * myField = myMed->getField(FieldName[i],FieldIteration[j].dt,FieldIteration[j].it) ;
75 med_type_champ type = myField->getValueType() ;
77 case MED_FR::MED_INT32: {
78 // if (type == MED_FR::MED_INT32) {
79 MESSAGE(" * Field named "<<((FIELD<int>*)myField)->getName());
80 ((FIELD<int>*)myField)->read() ;
81 MESSAGE(" * Iteration "<<FieldIteration[j].dt<<", order number "<<FieldIteration[j].it<<" read !");
82 MED_FIELD_WRONLY_DRIVER<int> myFieldDriver(filenameOUT,(FIELD<int>*)myField);
83 myFieldDriver.setFieldName(FieldName[i]);
84 myFieldDriver.open() ;
85 myFieldDriver.write() ;
86 myFieldDriver.close() ;
90 case MED_FR::MED_REEL64: {
91 // if (type == MED_FR::MED_REEL64) {
92 FIELD<double>* myField2 = (FIELD<double>*)myField ;
93 MESSAGE(" * Field named "<<myField2->getName());
95 MESSAGE(" * Iteration "<<FieldIteration[j].dt<<", order number "<<FieldIteration[j].it<<" read !");
96 MED_FIELD_WRONLY_DRIVER<double> myFieldDriver(filenameOUT,myField2);
97 myFieldDriver.setFieldName(FieldName[i]);
98 myFieldDriver.open() ;
99 myFieldDriver.write() ;
100 myFieldDriver.close() ;
105 MESSAGE(" * Iteration "<<FieldIteration[j].dt<<", order number "<<FieldIteration[j].it<<" not read : wrond type "<<type);
111 } catch (MEDEXCEPTION& ex){
115 // we write all in file filenameOUT :
118 // MED_MED_DRIVER myMedDriverOUT("/tmp/test.med",myMed) ;
119 // myMedDriverOUT.open() ;
120 // myMedDriverOUT.write() ;
121 // myMedDriverOUT.close() ;
122 // } catch (MEDEXCEPTION& ex){
123 // MESSAGE(ex.what()) ;