Salome HOME
DCQ:prepare 2.0.0
[modules/med.git] / src / MEDMEM / test_copie_coordinate.cxx
1 using namespace std;
2 /* Programme de test du constructeur de copies de la classe COORDINATE de MEDMEM
3    jroy - 17/12/2002 */
4
5 #include <string>
6
7 #include <math.h>
8 #include <stdlib.h>
9
10 #include "MEDMEM_Exception.hxx"
11 #include "MEDMEM_Mesh.hxx"
12 #include "MEDMEM_Family.hxx"
13 #include "MEDMEM_Group.hxx"
14
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"
20 using namespace MEDMEM;
21
22
23 void affiche_tableau(const double * myArray, int nb_lignes, int nb_colonnes)
24 {
25   cout << "Nombre de lignes : " << nb_lignes << endl;
26   cout << "Nombre de colonnes : " << nb_colonnes << endl;
27   cout << "Valeurs :" << endl;
28
29   for (int i=0; i<nb_lignes; i++) {
30     for (int j=0; j<nb_colonnes; j++)
31       cout << myArray[j*nb_lignes+i] << " ";
32     cout << endl;}
33 }
34
35 void affiche_coordinate(COORDINATE & myCoordinate, int _numberofNodes, int _spaceDimension)
36 {
37   cout << "- Système de coordonnées : " << myCoordinate.getCoordinatesSystem() << endl;
38   cout << "- Tableau des coordonnées : " << endl;
39   //  affiche_medarray(* myCoordinate.getCoordinatePtr());
40   affiche_tableau(myCoordinate.getCoordinates(MED_NO_INTERLACE),_numberofNodes,_spaceDimension);
41   //on récupère les dimensions
42   //  int _spaceDimension = (int) myCoordinate.getCoordinatePtr()->getLeadingValue();
43   //int _numberofNodes = (int) myCoordinate.getCoordinatePtr()->getLengthValue();
44   cout << "- Nom des coordonnées : " << endl;
45   for (int i=1; i<=_spaceDimension; i++)
46     cout << i << "   " << myCoordinate.getCoordinateName(i) << endl;
47   //  cout<<myCoordinate.getCoordinatesNames()<<endl;
48   cout << "- Unité des coordonnées : " << endl;
49   for (int i=1; i<=_spaceDimension; i++)
50     cout << i << "   " << myCoordinate.getCoordinateUnit(i) << endl;
51   cout << "- Indices des noeuds : " << endl;
52   //  cout<<myCoordinate.getNodesNumbers()<<endl;
53   for (int i=0; i<_numberofNodes; i++)
54     cout << i << "   " << myCoordinate.getNodesNumbers()[i] << endl;
55 }
56
57
58 int main (int argc, char ** argv) {
59
60   /*
61   if ((argc !=3) && (argc != 4)) {
62     cerr << "Usage : " << argv[0] 
63          << " filename meshname fieldname" << endl << endl;
64     exit(-1);
65   }
66   */
67   const med_int numberofNodes = 5;
68   const med_int spaceDimension = 3;
69   const medModeSwitch mode = MED_FULL_INTERLACE;
70
71   //construction tableau MEDARRAY des coordonnées
72   MEDARRAY<double> * myMedArray = new MEDARRAY<double>(spaceDimension,numberofNodes,mode);
73   for (med_int i=1; i<=myMedArray->getLengthValue(); i++) {
74     for (med_int j=1; j<=myMedArray->getLeadingValue(); j++)
75       myMedArray->setIJ(i,j,(double) random());
76   };
77
78   //construction noms des coordonnées
79   string * myCoordinatesNames = new string[spaceDimension];
80   if (spaceDimension >= 1) myCoordinatesNames[0] = "x";
81   if (spaceDimension >= 2) myCoordinatesNames[1] = "y";
82   if (spaceDimension >= 3) myCoordinatesNames[2] = "z";
83
84   //construction unités des coordonnées
85   string * myCoordinatesUnits = new string[spaceDimension];
86   if (spaceDimension >= 1) myCoordinatesUnits[0] = "m";
87   if (spaceDimension >= 2) myCoordinatesUnits[1] = "m";
88   if (spaceDimension >= 3) myCoordinatesUnits[2] = "m";
89
90   //construction des indices des noeuds
91   int * myNodeNumber = new int[numberofNodes];
92   for (int i=0; i<numberofNodes; i++)
93     myNodeNumber[i]=numberofNodes-i-1;
94
95   //construction de l'objet COORDINATE
96   COORDINATE * myCoordinate = new COORDINATE();
97   myCoordinate->setCoordinates(myMedArray);
98   myCoordinate->setCoordinatesNames(myCoordinatesNames);
99   myCoordinate->setCoordinatesUnits(myCoordinatesUnits);
100   myCoordinate->setNodesNumbers(myNodeNumber);
101
102   //  myCoordinate->setCoordinatesNames((string *)NULL);
103   //  myCoordinate->setNodesNumbers((int *) NULL);
104
105   delete myMedArray ;
106   delete[] myCoordinatesNames ;
107   delete[] myCoordinatesUnits ;
108   delete[] myNodeNumber ;
109
110   affiche_coordinate(* myCoordinate,numberofNodes,spaceDimension);
111   COORDINATE * myCoordinate2 = new COORDINATE(* myCoordinate);
112   delete myCoordinate ;
113
114   affiche_coordinate(* myCoordinate2,numberofNodes,spaceDimension);
115   delete myCoordinate2 ;
116
117   return 0;
118 }