]> SALOME platform Git repositories - modules/med.git/blob - src/MEDMEM/MEDMEM_Coordinate.hxx
Salome HOME
correct small problem from the version in the MedFileV2_2 branch.
[modules/med.git] / src / MEDMEM / MEDMEM_Coordinate.hxx
1 /*
2  File Coordinate.hxx
3  $Header$
4 */
5
6 #ifndef COORDINATE_HXX
7 #define COORDINATE_HXX
8
9 #include <string>
10
11 #include "MEDMEM_PointerOf.hxx"
12 #include "MEDMEM_Exception.hxx"
13 #include "MEDMEM_define.hxx"
14
15
16 #include "MEDMEM_Array.hxx"
17
18 /*!
19     This class contains coordinates of the nodes ./n
20     It could also store useful optional information about nodes
21     as  node numbers and about axes as names or units. /n
22     spaceDimension and  numberOfNodes can be found in _coordinate object.
23 */
24
25 namespace MEDMEM {
26 class COORDINATE
27 {
28
29 protected:
30                                     /*! contains "CARTESIAN",
31                                         "CYLINDRICAL" or "SPHERICAL"*/
32   string                       _coordinateSystem;
33
34
35                                      /*! _coordinate is a MEDARRAY<double> object : \n
36                                          - spaceDimension /n
37                                          - numberOfNodes /n
38                                          - default storage mode /n
39                                          - Up to 4 "PointerOf" to an array of size spaceDimension*NumberOfNodes/n
40
41                                          Storing the object (not a pointer to this object) is more convenient for memory
42                                          management.
43                                          */
44   mutable MEDARRAY<double>            _coordinate;
45
46                                      /*! PointerOf to an array of size spaceDimension storing axes names*/
47   PointerOf<string>          _coordinateName;
48
49                                      /*! PointerOf to an array of size spaceDimension storing units */
50   PointerOf<string>          _coordinateUnit;
51
52                                      /*! PointerOf to an array of size NumberOfNodes : optional nodes numbers */
53   PointerOf<int>             _nodeNumber;
54
55
56 public :
57
58   friend class MED_MESH_RDONLY_DRIVER;
59   friend class MED_MESH_WRONLY_DRIVER;
60
61
62   COORDINATE();
63   COORDINATE(int SpaceDimension, int NumberOfNodes, medModeSwitch Mode);
64   COORDINATE(const COORDINATE & m);
65   virtual ~COORDINATE();
66
67   void setCoordinates(MEDARRAY<double> *Coordinate);
68   void setCoordinates(const medModeSwitch Mode, const double *Coordinate);
69   void setCoordinatesNames(const string * CoordinateName);
70   void setCoordinateName(const string CoordinateName, const int i);
71   void setCoordinatesUnits(const string * CoordinateUnit);
72   void setCoordinateUnit(const string CoordinateUnit, const int i);
73   void setCoordinatesSystem(const string CoordinateSystem);
74   void setNodesNumbers(const int * NodeNumber);
75
76   int             getSpaceDimension() const;
77   int             getNumberOfNodes() const;
78
79   virtual const int*      getNodesNumbers() const;
80   //const int*            getNodesNumbers() ;
81   string          getCoordinatesSystem() const;
82
83   virtual const double *  getCoordinates(medModeSwitch Mode);
84   virtual double          getCoordinate(int Number,int Axis);
85   virtual const double *  getCoordinateAxis(int Axis);
86
87   const string * getCoordinatesNames() const;
88   string   getCoordinateName(int Axis) const;
89   const string * getCoordinatesUnits() const;
90   string   getCoordinateUnit(int Axis) const;
91 };
92 };
93
94 #endif /* COORDINATE_HXX */