2 /* Programme de test du constructeur de copies de la classe COORDINATE de MEDMEM
10 #include "MEDMEM_Exception.hxx"
11 #include "MEDMEM_Mesh.hxx"
12 #include "MEDMEM_Family.hxx"
13 #include "MEDMEM_Group.hxx"
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"
22 void affiche_tableau(const double * myArray, int nb_lignes, int nb_colonnes)
24 cout << "Nombre de lignes : " << nb_lignes << endl;
25 cout << "Nombre de colonnes : " << nb_colonnes << endl;
26 cout << "Valeurs :" << endl;
28 for (int i=0; i<nb_lignes; i++) {
29 for (int j=0; j<nb_colonnes; j++)
30 cout << myArray[j*nb_lignes+i] << " ";
34 void affiche_coordinate(COORDINATE & myCoordinate, int _numberofNodes, int _spaceDimension)
36 cout << "- Système de coordonnées : " << myCoordinate.getCoordinatesSystem() << endl;
37 cout << "- Tableau des coordonnées : " << endl;
38 // affiche_medarray(* myCoordinate.getCoordinatePtr());
39 affiche_tableau(myCoordinate.getCoordinates(MED_NO_INTERLACE),_numberofNodes,_spaceDimension);
40 //on récupère les dimensions
41 // int _spaceDimension = (int) myCoordinate.getCoordinatePtr()->getLeadingValue();
42 //int _numberofNodes = (int) myCoordinate.getCoordinatePtr()->getLengthValue();
43 cout << "- Nom des coordonnées : " << endl;
44 for (int i=1; i<=_spaceDimension; i++)
45 cout << i << " " << myCoordinate.getCoordinateName(i) << endl;
46 // cout<<myCoordinate.getCoordinatesNames()<<endl;
47 cout << "- Unité des coordonnées : " << endl;
48 for (int i=1; i<=_spaceDimension; i++)
49 cout << i << " " << myCoordinate.getCoordinateUnit(i) << endl;
50 cout << "- Indices des noeuds : " << endl;
51 // cout<<myCoordinate.getNodesNumbers()<<endl;
52 for (int i=0; i<_numberofNodes; i++)
53 cout << i << " " << myCoordinate.getNodesNumbers()[i] << endl;
57 int main (int argc, char ** argv) {
60 if ((argc !=3) && (argc != 4)) {
61 cerr << "Usage : " << argv[0]
62 << " filename meshname fieldname" << endl << endl;
66 const med_int numberofNodes = 5;
67 const med_int spaceDimension = 3;
68 const medModeSwitch mode = MED_FULL_INTERLACE;
70 //construction tableau MEDARRAY des coordonnées
71 MEDARRAY<double> * myMedArray = new MEDARRAY<double>(spaceDimension,numberofNodes,mode);
72 for (med_int i=1; i<=myMedArray->getLengthValue(); i++) {
73 for (med_int j=1; j<=myMedArray->getLeadingValue(); j++)
74 myMedArray->setIJ(i,j,(double) random());
77 //construction noms des coordonnées
78 string * myCoordinatesNames = new string[spaceDimension];
79 if (spaceDimension >= 1) myCoordinatesNames[0] = "x";
80 if (spaceDimension >= 2) myCoordinatesNames[1] = "y";
81 if (spaceDimension >= 3) myCoordinatesNames[2] = "z";
83 //construction unités des coordonnées
84 string * myCoordinatesUnits = new string[spaceDimension];
85 if (spaceDimension >= 1) myCoordinatesUnits[0] = "m";
86 if (spaceDimension >= 2) myCoordinatesUnits[1] = "m";
87 if (spaceDimension >= 3) myCoordinatesUnits[2] = "m";
89 //construction des indices des noeuds
90 int * myNodeNumber = new int[numberofNodes];
91 for (int i=0; i<numberofNodes; i++)
92 myNodeNumber[i]=numberofNodes-i-1;
94 //construction de l'objet COORDINATE
95 COORDINATE * myCoordinate = new COORDINATE();
96 myCoordinate->setCoordinates(myMedArray);
97 myCoordinate->setCoordinatesNames(myCoordinatesNames);
98 myCoordinate->setCoordinatesUnits(myCoordinatesUnits);
99 myCoordinate->setNodesNumbers(myNodeNumber);
101 // myCoordinate->setCoordinatesNames((string *)NULL);
102 // myCoordinate->setNodesNumbers((int *) NULL);
105 delete[] myCoordinatesNames ;
106 delete[] myCoordinatesUnits ;
107 delete[] myNodeNumber ;
109 affiche_coordinate(* myCoordinate,numberofNodes,spaceDimension);
110 COORDINATE * myCoordinate2 = new COORDINATE(* myCoordinate);
111 delete myCoordinate ;
113 affiche_coordinate(* myCoordinate2,numberofNodes,spaceDimension);
114 delete myCoordinate2 ;