Salome HOME
remove a reference to the $MED_ROOT_DIR in the Makefile.in wich is useless
[modules/med.git] / src / MEDMEM / test_copie_fieldT.cxx
1 /* Programme de test du constructeur de copies de la classe FIELD_ de MEDMEM
2    jroy - 12/12/2002 */
3
4 #include<string>
5
6 #include <math.h>
7 #include <stdlib.h>
8
9 #include "MEDMEM_Exception.hxx"
10 #include "MEDMEM_Mesh.hxx"
11 #include "MEDMEM_Family.hxx"
12 #include "MEDMEM_Group.hxx"
13
14 #include "MEDMEM_MedMeshDriver.hxx"
15 #include "MEDMEM_MedFieldDriver.hxx"
16 #include "MEDMEM_Support.hxx"
17 #include "MEDMEM_Field.hxx"
18 #include "MEDMEM_define.hxx"
19
20 #ifdef _DEBUG_
21 #include "LocalTraceCollector.hxx"
22 #endif /* ifdef _DEBUG_*/
23
24 using namespace std;
25 using namespace MEDMEM;
26 using namespace MED_EN;
27
28
29 void affiche_field_(FIELD_ * myField, const SUPPORT * mySupport)
30 {
31   cout << "Field "<< myField->getName() << " : " <<myField->getDescription() <<  endl ;
32   int NumberOfComponents = myField->getNumberOfComponents() ;
33   cout << "- Nombre de composantes : "<< NumberOfComponents << endl ;
34   for (int i=1; i<NumberOfComponents+1; i++) {
35     cout << "  - composante "<<i<<" :"<<endl ;
36     cout << "      - nom         : "<<myField->getComponentName(i)<< endl;
37     cout << "      - description : "<<myField->getComponentDescription(i) << endl;
38     cout << "      - units       : "<<myField->getMEDComponentUnit(i) << endl;
39   }
40   cout << "- iteration :" << endl ;
41   cout << "    - numero : " << myField->getIterationNumber()<< endl  ;
42   cout << "    - ordre  : " << myField->getOrderNumber()<< endl  ;
43   cout << "    - temps  : " << myField->getTime()<< endl  ;
44
45   cout << "- Type : " << myField->getValueType()<< endl;
46
47   cout << "- Adresse support : " << mySupport << endl;
48 }
49
50 void affiche_fieldT(FIELD<double> * myField, const SUPPORT * mySupport)
51 {
52   affiche_field_((FIELD_ *) myField, mySupport);
53
54   cout << "- Valeurs :"<<endl;
55   int NumberOf = mySupport->getNumberOfElements(MED_ALL_ELEMENTS);
56   int NumberOfComponents = myField->getNumberOfComponents() ;
57
58   for (int i=1; i<NumberOf+1; i++) {
59     const double * value = myField->getValueI(MED_FULL_INTERLACE,i) ;
60     for (int j=0; j<NumberOfComponents; j++)
61       cout << value[j]<< " ";
62     cout<<endl;
63   }
64 }
65
66 int main (int argc, char ** argv) {
67 #ifdef _DEBUG_
68   LocalTraceCollector::instance();
69 #endif /* ifdef _DEBUG_*/
70
71   // int read; !! UNUSED VARIABLE !!
72
73   if ((argc !=3) && (argc != 4)) {
74     cerr << "Usage : " << argv[0] 
75          << " filename meshname fieldname" << endl << endl;
76     exit(-1);
77   }
78
79   string filename = argv[1] ;
80   string meshname = argv[2] ;
81
82   MESH * myMesh= new MESH() ;
83   myMesh->setName(meshname);
84   MED_MESH_RDONLY_DRIVER myMeshDriver(filename,myMesh) ;
85   myMeshDriver.setMeshName(meshname);
86   int current = myMesh->addDriver(myMeshDriver);
87   myMesh->read(current);
88
89   // read field :
90   if (argc != 4) exit(0) ;
91   // else we have a field !
92   string fieldname = argv[3];
93
94   FIELD<double> * myField ;
95   //  SUPPORT * mySupport = new SUPPORT(myMesh,"On_all_node",MED_NODE);
96   SUPPORT * mySupport = new SUPPORT(myMesh,"On_all_cell",MED_CELL);
97   try {
98     myField = new FIELD<double>(mySupport,MED_DRIVER,filename,fieldname) ;
99     myField->setValueType(MED_REEL64);
100   } catch (...) {
101     delete mySupport ;
102     mySupport = new SUPPORT(myMesh,"On_all_node",MED_NODE);
103     try {
104       myField = new FIELD<double>(mySupport,MED_DRIVER,filename,fieldname) ;
105       myField->setValueType(MED_REEL64);
106     } catch (...) {
107       cout << "Field double " << fieldname << " not found !!!" << endl ;
108       exit (-1) ;
109     }
110   }
111   
112   affiche_fieldT(myField, mySupport);
113   FIELD<double> * myField2 = new FIELD<double>(* myField);
114   delete myField;
115   affiche_fieldT(myField2, myField2->getSupport());
116   delete myField2;
117
118   delete mySupport ;
119   delete myMesh ;
120
121   return 0;
122 }