#include <string>
+#include "MEDMEM_PointerOf.hxx"
#include "MEDMEM_Exception.hxx"
#include "MEDMEM_define.hxx"
-//using namespace MED_EN;
#include "MEDMEM_Array.hxx"
-class COORDINATE {
+/*!
+ This class contains coordinates of the nodes ./n
+ It could also store useful optional information about nodes
+ as node numbers and about axes as names or units. /n
+ spaceDimension and numberOfNodes can be found in _coordinate object.
+*/
+
+namespace MEDMEM {
+class COORDINATE
+{
protected:
/*! contains "CARTESIAN",
"CYLINDRICAL" or "SPHERICAL"*/
- string _coordinateSystem;
+ string _coordinateSystem;
+
+
+ /*! _coordinate is a MEDARRAY<double> object : \n
+ - spaceDimension /n
+ - numberOfNodes /n
+ - default storage mode /n
+ - Up to 4 "PointerOf" to an array of size spaceDimension*NumberOfNodes/n
+
+ Storing the object (not a pointer to this object) is more convenient for memory
+ management.
+ */
+ mutable MEDARRAY<double> _coordinate;
+
+ /*! PointerOf to an array of size spaceDimension storing axes names*/
+ PointerOf<string> _coordinateName;
- // all in _coordinate object !!!
- // int _spaceDimension;
- // int _numberOfNodes;
+ /*! PointerOf to an array of size spaceDimension storing units */
+ PointerOf<string> _coordinateUnit;
+
+ /*! PointerOf to an array of size NumberOfNodes : optional nodes numbers */
+ PointerOf<int> _nodeNumber;
- /*! array of size spaceDimension*NumberOfNodes */
- MEDARRAY<double>* _coordinate;
- /*! array of size spaceDimension */
- string * _coordinateName;
- /*! array of size spaceDimension */
- string * _coordinateUnit;
- /*! array of size NumberOfNodes : optionnal nodes numbers */
- int * _nodeNumber;
public :
COORDINATE();
- COORDINATE(medModeSwitch Mode,int SpaceDimension, int NumberOfNodes);
- ~COORDINATE();
+ COORDINATE(int SpaceDimension, int NumberOfNodes, medModeSwitch Mode);
+ COORDINATE(const COORDINATE & m);
+ virtual ~COORDINATE();
void setCoordinates(MEDARRAY<double> *Coordinate);
- void setCoordinatesNames(string * CoordinateName);
- void setCoordinatesUnits(string * CoordinateUnit);
- void setNodesNumbers(int * NodeNumber);
-
- int* getNodesNumbers() const;
+ void setCoordinates(const medModeSwitch Mode, const double *Coordinate);
+ void setCoordinatesNames(const string * CoordinateName);
+ void setCoordinateName(const string CoordinateName, const int i);
+ void setCoordinatesUnits(const string * CoordinateUnit);
+ void setCoordinateUnit(const string CoordinateUnit, const int i);
+ void setCoordinatesSystem(const string CoordinateSystem);
+ void setNodesNumbers(const int * NodeNumber);
+
+ int getSpaceDimension() const;
+ int getNumberOfNodes() const;
+
+ virtual const int* getNodesNumbers() const;
+ //const int* getNodesNumbers() ;
string getCoordinatesSystem() const;
- const double * getCoordinates(medModeSwitch Mode);
- double getCoordinate(int Number,int Axis);
- // return coordinate of node number Number, on axis Axis (1: X, 2: Y, 3: Z)
- const double * getCoordinateAxis(int Axis);
- // return all nodes coordinates from axis Axis
- string * getCoordinatesNames();
- string getCoordinateName(int Axis);
- string * getCoordinatesUnits();
- string getCoordinateUnit(int Axis);
+
+ virtual const double * getCoordinates(medModeSwitch Mode);
+ virtual double getCoordinate(int Number,int Axis);
+ virtual const double * getCoordinateAxis(int Axis);
+
+ const string * getCoordinatesNames() const;
+ string getCoordinateName(int Axis) const;
+ const string * getCoordinatesUnits() const;
+ string getCoordinateUnit(int Axis) const;
+};
};
#endif /* COORDINATE_HXX */