]> SALOME platform Git repositories - modules/med.git/blob - src/MEDMEM/MEDMEM_Coordinate.hxx
Salome HOME
update from the MedMemory V1.0.1
[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 class COORDINATE
26 {
27
28 protected:
29                                     /*! contains "CARTESIAN",
30                                         "CYLINDRICAL" or "SPHERICAL"*/
31   string                       _coordinateSystem;
32
33
34                                      /*! _coordinate is a MEDARRAY<double> object : \n
35                                          - spaceDimension /n
36                                          - numberOfNodes /n
37                                          - default storage mode /n
38                                          - Up to 4 "PointerOf" to an array of size spaceDimension*NumberOfNodes/n
39
40                                          Storing the object (not a pointer to this object) is more convenient for memory
41                                          management.
42                                          */
43   mutable MEDARRAY<double>            _coordinate;
44
45                                      /*! PointerOf to an array of size spaceDimension storing axes names*/
46   PointerOf<string>          _coordinateName;
47
48                                      /*! PointerOf to an array of size spaceDimension storing units */
49   PointerOf<string>          _coordinateUnit;
50
51                                      /*! PointerOf to an array of size NumberOfNodes : optional nodes numbers */
52   PointerOf<int>             _nodeNumber;
53
54
55 public :
56
57   friend class MED_MESH_RDONLY_DRIVER;
58   friend class MED_MESH_WRONLY_DRIVER;
59
60
61   COORDINATE();
62   COORDINATE(int SpaceDimension, int NumberOfNodes, medModeSwitch Mode);
63   COORDINATE(const COORDINATE & m);
64   virtual ~COORDINATE();
65
66   void setCoordinates(MEDARRAY<double> *Coordinate);
67   void setCoordinates(const medModeSwitch Mode, const double *Coordinate);
68   void setCoordinatesNames(const string * CoordinateName);
69   void setCoordinateName(const string CoordinateName, const int i);
70   void setCoordinatesUnits(const string * CoordinateUnit);
71   void setCoordinateUnit(const string CoordinateUnit, const int i);
72   void setCoordinatesSystem(const string CoordinateSystem);
73   void setNodesNumbers(const int * NodeNumber);
74
75   int             getSpaceDimension() const;
76   int             getNumberOfNodes() const;
77
78   virtual const int*      getNodesNumbers() const;
79   //const int*            getNodesNumbers() ;
80   string          getCoordinatesSystem() const;
81
82   virtual const double *  getCoordinates(medModeSwitch Mode);
83   virtual double          getCoordinate(int Number,int Axis);
84   virtual const double *  getCoordinateAxis(int Axis);
85
86   const string * getCoordinatesNames() const;
87   string   getCoordinateName(int Axis) const;
88   const string * getCoordinatesUnits() const;
89   string   getCoordinateUnit(int Axis) const;
90 };
91
92 #endif /* COORDINATE_HXX */