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