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