]> SALOME platform Git repositories - modules/med.git/blob - src/MEDMEM/test_copie_field_.cxx
Salome HOME
update after merging trhe branches CEA_V3_0_x, OCC_V3_1_0_a1_x, and the main
[modules/med.git] / src / MEDMEM / test_copie_field_.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 using namespace MEDMEM;
21 using namespace MED_EN;
22
23
24 void affiche_field(FIELD_ * myField, const SUPPORT * mySupport)
25 {
26   cout << "Field "<< myField->getName() << " : " <<myField->getDescription() <<  endl ;
27   int NumberOfComponents = myField->getNumberOfComponents() ;
28   cout << "- Nombre de composantes : "<< NumberOfComponents << endl ;
29   for (int i=1; i<NumberOfComponents+1; i++) {
30     cout << "  - composante "<<i<<" :"<<endl ;
31     cout << "      - nom         : "<<myField->getComponentName(i)<< endl;
32     cout << "      - description : "<<myField->getComponentDescription(i) << endl;
33     cout << "      - units       : "<<myField->getMEDComponentUnit(i) << endl;
34   }
35   cout << "- iteration :" << endl ;
36   cout << "    - numero : " << myField->getIterationNumber()<< endl  ;
37   cout << "    - ordre  : " << myField->getOrderNumber()<< endl  ;
38   cout << "    - temps  : " << myField->getTime()<< endl  ;
39
40   cout << "- Type : " << myField->getValueType()<< endl;
41   /*
42   cout << "- Valeurs :"<<endl;
43   int NumberOf = mySupport->getNumberOfElements(MED_ALL_ELEMENTS);
44
45   for (int i=1; i<NumberOf+1; i++) {
46     double * value = myField->getValueI(MED_FULL_INTERLACE,i) ;
47     for (int j=0; j<NumberOfComponents; j++)
48       cout << value[j]<< " ";
49     cout<<endl;
50   }
51   */
52   cout << "- Adresse support : " << mySupport << endl;
53 }
54
55
56 int main (int argc, char ** argv) {
57   // int read; !! UNUSED VARIABLE !!
58
59   if ((argc !=3) && (argc != 4)) {
60     cerr << "Usage : " << argv[0] 
61          << " filename meshname fieldname" << endl << endl;
62     exit(-1);
63   }
64
65   string filename = argv[1] ;
66   string meshname = argv[2] ;
67
68   //  MESH * myMesh= new MESH(MED_DRIVER,filename,meshname) ;
69   MESH * myMesh= new MESH() ;
70   myMesh->setName(meshname);
71   MED_MESH_RDONLY_DRIVER myMeshDriver(filename,myMesh) ;
72   myMeshDriver.setMeshName(meshname);
73   myMeshDriver.open() ;
74   myMeshDriver.read() ;
75   myMeshDriver.close() ;
76
77   //    int drv = myMesh->addDriver(MED_DRIVER,"sortie.med",meshname);
78   //    myMesh->write(drv); 
79
80
81   
82
83   // if (argc < 4) return 0;
84
85   // read field :
86
87   if (argc != 4) exit(0) ;
88   // else we have a field !
89
90   string fieldname = argv[3];
91
92
93   //  SUPPORT * mySupport = new SUPPORT(myMesh,"On_all_node",MED_NODE);
94   SUPPORT * mySupport = new SUPPORT(myMesh,"On_all_cell",MED_EN::MED_CELL);
95   FIELD<double> * myField = new FIELD<double>() ;
96   myField->setValueType(MED_EN::MED_REEL64);
97
98   myField->setName(fieldname);
99   myField->setSupport(mySupport);
100   MED_FIELD_RDONLY_DRIVER<double> myFieldDriver(filename,myField) ;
101   myFieldDriver.setFieldName(fieldname);
102   myFieldDriver.open() ;
103
104   try {
105     myFieldDriver.read() ;
106   } catch (...) {
107     delete mySupport ;
108     mySupport = new SUPPORT(myMesh,"On_all_node",MED_EN::MED_NODE);
109     myField->setSupport(mySupport);
110     try {
111       myFieldDriver.read() ;
112     } catch (...) {
113       cout << "Field " << fieldname << " not found !!!" << endl ;
114       exit (-1) ;
115     }
116   }
117   
118   myFieldDriver.close() ;
119
120   FIELD_ * pt_field_ = myField;
121   affiche_field(pt_field_, mySupport);
122   FIELD_ * pt_field_2 = new FIELD_(* pt_field_);
123   delete myField;
124   affiche_field(pt_field_2, pt_field_2->getSupport());
125   
126   delete pt_field_2 ;
127
128   delete mySupport ;
129   delete myMesh ;
130
131   return 0;
132 }