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_*/
25 using namespace MEDMEM;
26 using namespace MED_EN;
29 void affiche_field_(FIELD_ * myField, const SUPPORT * mySupport)
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;
40 cout << "- iteration :" << endl ;
41 cout << " - numero : " << myField->getIterationNumber()<< endl ;
42 cout << " - ordre : " << myField->getOrderNumber()<< endl ;
43 cout << " - temps : " << myField->getTime()<< endl ;
45 cout << "- Type : " << myField->getValueType()<< endl;
47 cout << "- Adresse support : " << mySupport << endl;
50 void affiche_fieldT(FIELD<double> * myField, const SUPPORT * mySupport)
52 affiche_field_((FIELD_ *) myField, mySupport);
54 cout << "- Valeurs :"<<endl;
55 int NumberOf = mySupport->getNumberOfElements(MED_ALL_ELEMENTS);
56 int NumberOfComponents = myField->getNumberOfComponents() ;
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]<< " ";
66 int main (int argc, char ** argv) {
68 LocalTraceCollector::instance();
69 #endif /* ifdef _DEBUG_*/
71 // int read; !! UNUSED VARIABLE !!
73 if ((argc !=3) && (argc != 4)) {
74 cerr << "Usage : " << argv[0]
75 << " filename meshname fieldname" << endl << endl;
79 string filename = argv[1] ;
80 string meshname = argv[2] ;
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);
90 if (argc != 4) exit(0) ;
91 // else we have a field !
92 string fieldname = argv[3];
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);
98 myField = new FIELD<double>(mySupport,MED_DRIVER,filename,fieldname) ;
99 myField->setValueType(MED_REEL64);
102 mySupport = new SUPPORT(myMesh,"On_all_node",MED_NODE);
104 myField = new FIELD<double>(mySupport,MED_DRIVER,filename,fieldname) ;
105 myField->setValueType(MED_REEL64);
107 cout << "Field double " << fieldname << " not found !!!" << endl ;
112 affiche_fieldT(myField, mySupport);
113 FIELD<double> * myField2 = new FIELD<double>(* myField);
115 affiche_fieldT(myField2, myField2->getSupport());