]> SALOME platform Git repositories - modules/med.git/blob - src/MEDMEM/test_copie_coordinate.cxx
Salome HOME
adding some castem mesh file to test the GIBI driver of Med Memory.
[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
21
22 void affiche_tableau(const double * myArray, int nb_lignes, int nb_colonnes)
23 {
24   cout << "Nombre de lignes : " << nb_lignes << endl;
25   cout << "Nombre de colonnes : " << nb_colonnes << endl;
26   cout << "Valeurs :" << endl;
27
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] << " ";
31     cout << endl;}
32 }
33
34 void affiche_coordinate(COORDINATE & myCoordinate, int _numberofNodes, int _spaceDimension)
35 {
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;
54 }
55
56
57 int main (int argc, char ** argv) {
58
59   /*
60   if ((argc !=3) && (argc != 4)) {
61     cerr << "Usage : " << argv[0] 
62          << " filename meshname fieldname" << endl << endl;
63     exit(-1);
64   }
65   */
66   const med_int numberofNodes = 5;
67   const med_int spaceDimension = 3;
68   const medModeSwitch mode = MED_FULL_INTERLACE;
69
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());
75   };
76
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";
82
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";
88
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;
93
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);
100
101   //  myCoordinate->setCoordinatesNames((string *)NULL);
102   //  myCoordinate->setNodesNumbers((int *) NULL);
103
104   delete myMedArray ;
105   delete[] myCoordinatesNames ;
106   delete[] myCoordinatesUnits ;
107   delete[] myNodeNumber ;
108
109   affiche_coordinate(* myCoordinate,numberofNodes,spaceDimension);
110   COORDINATE * myCoordinate2 = new COORDINATE(* myCoordinate);
111   delete myCoordinate ;
112
113   affiche_coordinate(* myCoordinate2,numberofNodes,spaceDimension);
114   delete myCoordinate2 ;
115
116   return 0;
117 }