1 /* Programme de test du constructeur de copies de la classe FIELD_ de MEDMEM
9 #include "MEDMEM_Exception.hxx"
10 #include "MEDMEM_Mesh.hxx"
11 #include "MEDMEM_Family.hxx"
12 #include "MEDMEM_Group.hxx"
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"
21 #include "LocalTraceCollector.hxx"
22 #endif /* ifdef _DEBUG_*/
24 using namespace MEDMEM;
25 using namespace MED_EN;
28 void affiche_field(FIELD_ * myField, const SUPPORT * mySupport)
30 cout << "Field "<< myField->getName() << " : " <<myField->getDescription() << endl ;
31 int NumberOfComponents = myField->getNumberOfComponents() ;
32 cout << "- Nombre de composantes : "<< NumberOfComponents << endl ;
33 for (int i=1; i<NumberOfComponents+1; i++) {
34 cout << " - composante "<<i<<" :"<<endl ;
35 cout << " - nom : "<<myField->getComponentName(i)<< endl;
36 cout << " - description : "<<myField->getComponentDescription(i) << endl;
37 cout << " - units : "<<myField->getMEDComponentUnit(i) << endl;
39 cout << "- iteration :" << endl ;
40 cout << " - numero : " << myField->getIterationNumber()<< endl ;
41 cout << " - ordre : " << myField->getOrderNumber()<< endl ;
42 cout << " - temps : " << myField->getTime()<< endl ;
44 cout << "- Type : " << myField->getValueType()<< endl;
46 cout << "- Valeurs :"<<endl;
47 int NumberOf = mySupport->getNumberOfElements(MED_ALL_ELEMENTS);
49 for (int i=1; i<NumberOf+1; i++) {
50 double * value = myField->getValueI(MED_FULL_INTERLACE,i) ;
51 for (int j=0; j<NumberOfComponents; j++)
52 cout << value[j]<< " ";
56 cout << "- Adresse support : " << mySupport << endl;
60 int main (int argc, char ** argv) {
62 LocalTraceCollector::instance();
63 #endif /* ifdef _DEBUG_*/
65 // int read; !! UNUSED VARIABLE !!
67 if ((argc !=3) && (argc != 4)) {
68 cerr << "Usage : " << argv[0]
69 << " filename meshname fieldname" << endl << endl;
73 string filename = argv[1] ;
74 string meshname = argv[2] ;
76 // MESH * myMesh= new MESH(MED_DRIVER,filename,meshname) ;
77 MESH * myMesh= new MESH() ;
78 myMesh->setName(meshname);
79 MED_MESH_RDONLY_DRIVER myMeshDriver(filename,myMesh) ;
80 myMeshDriver.setMeshName(meshname);
83 myMeshDriver.close() ;
85 // int drv = myMesh->addDriver(MED_DRIVER,"sortie.med",meshname);
86 // myMesh->write(drv);
91 // if (argc < 4) return 0;
95 if (argc != 4) exit(0) ;
96 // else we have a field !
98 string fieldname = argv[3];
101 // SUPPORT * mySupport = new SUPPORT(myMesh,"On_all_node",MED_NODE);
102 SUPPORT * mySupport = new SUPPORT(myMesh,"On_all_cell",MED_EN::MED_CELL);
103 FIELD<double> * myField = new FIELD<double>() ;
104 myField->setValueType(MED_EN::MED_REEL64);
106 myField->setName(fieldname);
107 myField->setSupport(mySupport);
108 MED_FIELD_RDONLY_DRIVER<double> myFieldDriver(filename,myField) ;
109 myFieldDriver.setFieldName(fieldname);
110 myFieldDriver.open() ;
113 myFieldDriver.read() ;
116 mySupport = new SUPPORT(myMesh,"On_all_node",MED_EN::MED_NODE);
117 myField->setSupport(mySupport);
119 myFieldDriver.read() ;
121 cout << "Field " << fieldname << " not found !!!" << endl ;
126 myFieldDriver.close() ;
128 FIELD_ * pt_field_ = myField;
129 affiche_field(pt_field_, mySupport);
130 FIELD_ * pt_field_2 = new FIELD_(* pt_field_);
132 affiche_field(pt_field_2, pt_field_2->getSupport());