10 #include "src/legacy/Interface/Meshing/Mesh.hh" 
   11 #include "src/legacy/Interface/Meshing/ThreeDGrid.hh" 
   24     TwoDGrid(
double dX, 
double dY, 
double minX, 
double minY, 
int numberOfXCoords, 
int numberOfYCoords);
 
   26     TwoDGrid(std::vector<double> 
x, std::vector<double> 
y);
 
   29     inline double& 
x    (
const int& i) {
return _x[i-1];}
 
   30     inline double& 
y    (
const int& j) {
return _y[j-1];}
 
   31     inline const double& 
x    (
const int& i)
 const {
return _x[i-1];}
 
   32     inline const double& 
y    (
const int& j)
 const {
return _y[j-1];}
 
   33     inline int     xSize()
 const       {
return int(
_x.size());}
 
   34     inline int     ySize()
 const       {
return int(
_y.size());}
 
   36     std::vector<double> 
xVector()      {
return std::vector<double>(
_x);}
 
   37     std::vector<double> 
yVector()      {
return std::vector<double>(
_y);}
 
   39     double* 
newXArray()                {
double *
x = 
new double[
_x.size()]; 
for(
unsigned int i=0; i<
_x.size(); i++) x[i]=
_x[i]; 
return x;}
 
   40     double* 
newYArray()                {
double *
y = 
new double[
_y.size()]; 
for(
unsigned int i=0; i<
_y.size(); i++) y[i]=
_y[i]; 
return y;}
 
   48     inline void LowerBound             (
const double& 
x, 
int& xIndex, 
const double& 
y, 
int& yIndex)
 const 
   51     inline double    MinX()
            const {
return _x[0];}
 
   53     inline double    MinY()
            const {
return _y[0];}
 
   56     void    Add   (VectorMap* map); 
 
   57     void    Remove(VectorMap* map); 
 
   59     void    SetX(
int nXCoords, 
double * 
x) {
_x = std::vector<double>(
x,x+nXCoords);}
 
   60     void    SetY(
int nYCoords, 
double * 
y) {
_y = std::vector<double>(
y,y+nYCoords);}
 
   62     Mesh::Iterator 
Begin() 
const;
 
   63     Mesh::Iterator 
End()   
const;
 
   65     virtual void   Position(
const Mesh::Iterator& it, 
double * position) 
const;
 
   67     virtual void   CentrePosition(
const Mesh::Iterator& it, 
double * position) 
const;
 
   69     int            ToInteger(
const Mesh::Iterator& lhs)
 const {
return (lhs.State()[0]-1)*(
_ySize)+lhs.State()[1]-1;}
 
   75     Mesh::Iterator 
Nearest(
const double* position) 
const;
 
   80     Mesh::Iterator& 
AddEquals(Mesh::Iterator& lhs, 
int difference) 
const;
 
   81     Mesh::Iterator& 
SubEquals(Mesh::Iterator& lhs, 
int difference) 
const;
 
   82     Mesh::Iterator& 
AddEquals(Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs) 
const;
 
   83     Mesh::Iterator& 
SubEquals(Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs) 
const;
 
   84     Mesh::Iterator& 
AddOne   (Mesh::Iterator& lhs) 
const;
 
   85     Mesh::Iterator& 
SubOne   (Mesh::Iterator& lhs) 
const;
 
   87     bool IsGreater(
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs) 
const;
 
   90     std::vector<double>     
_x;
 
   91     std::vector<double>     
_y;
 
   97     friend Mesh::Iterator  
operator++(Mesh::Iterator& lhs, 
int);
 
   98     friend Mesh::Iterator  
operator--(Mesh::Iterator& lhs, 
int);
 
   99     friend Mesh::Iterator& 
operator++(Mesh::Iterator& lhs);
 
  100     friend Mesh::Iterator& 
operator--(Mesh::Iterator& lhs);
 
  101     friend Mesh::Iterator  
operator- (
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  102     friend Mesh::Iterator  
operator+ (
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  103     friend Mesh::Iterator& 
operator-=(Mesh::Iterator& lhs,       
const Mesh::Iterator& rhs);
 
  104     friend Mesh::Iterator& 
operator+=(Mesh::Iterator& lhs,       
const Mesh::Iterator& rhs);
 
  105     friend Mesh::Iterator  
operator- (
const Mesh::Iterator&, 
const int&);
 
  106     friend Mesh::Iterator  
operator+ (
const Mesh::Iterator&, 
const int&);
 
  107     friend Mesh::Iterator& 
operator-=(Mesh::Iterator&,       
const int&);
 
  108     friend Mesh::Iterator& 
operator+=(Mesh::Iterator&,       
const int&);
 
  110     friend bool operator==(
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  111     friend bool operator!=(
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  112     friend bool operator>=(
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  113     friend bool operator<=(
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  114     friend bool operator< (
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  115     friend bool operator> (
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  130     NDGrid(
int nDimensions, 
int* 
size, 
double* spacing, 
double* 
min);
 
  131     NDGrid(std::vector<int> 
size, std::vector<const double *> gridCoordinates);
 
  132     NDGrid(std::vector< std::vector<double> > gridCoordinates);
 
  136     inline double&       
coord    ( 
const int& index, 
const int& dimension)       {
return _coord[dimension][index-1];}
 
  137     inline const double& 
coord    ( 
const int& index, 
const int& dimension)
 const {
return _coord[dimension][index-1];}
 
  138     inline int           size     ( 
const int& dimension )
 const                  {
return _coord[dimension].size();}
 
  144     inline void    coordLowerBound (
const double& x, 
const int& dimension, 
int& xIndex)
       const 
  147         else xIndex = std::lower_bound(
_coord[dimension].begin(), 
_coord[dimension].end(), x)-
_coord[dimension].begin()-1;
 
  150     inline void    LowerBound      (
const std::vector<double>& pos, std::vector<int>& xIndex)
 const 
  151     {xIndex = std::vector<int>(pos.size()); 
for(
unsigned int i=0; i<pos.size(); i++) 
coordLowerBound(pos[i], i, xIndex[i]);}
 
  152     inline double  Min             (
const int& dimension)
 const {
return _coord[dimension][0];}
 
  153     inline double  Max             (
const int& dimension)
 const {
return _coord[dimension][
_coord[dimension].size()-1];}
 
  155     void           SetCoord        ( 
int dimension, 
int nCoords, 
double * x) {
_coord[dimension] = std::vector<double>(x, x+nCoords);}
 
  157     Mesh::Iterator 
Begin()
 const  {
return Mesh::Iterator(std::vector<int>(
_coord.size(), 1), 
this);}
 
  158     Mesh::Iterator 
End()
   const  {std::vector<int> end(
_coord.size(), 1); end[0] = 
_coord[0].size()+1; 
return Mesh::Iterator(end, 
this);}
 
  160     void           Position(
const Mesh::Iterator& it, 
double * position)
 const {
for(
unsigned int i=0; i<it.State().size(); i++) position[i] = 
_coord[i][it[i]-1];}
 
  166     int            ToInteger         (
const Mesh::Iterator& lhs) 
const;
 
  167     Mesh::Iterator 
Nearest           (
const double* position)          
const;
 
  172     virtual Mesh::Iterator& 
AddEquals(Mesh::Iterator& lhs, 
int difference) 
const;
 
  173     virtual Mesh::Iterator& 
SubEquals(Mesh::Iterator& lhs, 
int difference) 
const;
 
  174     virtual Mesh::Iterator& 
AddEquals(Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs) 
const;
 
  175     virtual Mesh::Iterator& 
SubEquals(Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs) 
const;
 
  176     virtual Mesh::Iterator& 
AddOne   (Mesh::Iterator& lhs) 
const;
 
  177     virtual Mesh::Iterator& 
SubOne   (Mesh::Iterator& lhs) 
const;
 
  179     virtual bool IsGreater(
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs) 
const;
 
  182     std::vector< std::vector<double> > 
_coord;
 
  186     friend Mesh::Iterator  
operator++(Mesh::Iterator& lhs, 
int);
 
  187     friend Mesh::Iterator  
operator--(Mesh::Iterator& lhs, 
int);
 
  188     friend Mesh::Iterator& 
operator++(Mesh::Iterator& lhs);
 
  189     friend Mesh::Iterator& 
operator--(Mesh::Iterator& lhs);
 
  190     friend Mesh::Iterator  
operator- (
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  191     friend Mesh::Iterator  
operator+ (
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  192     friend Mesh::Iterator& 
operator-=(Mesh::Iterator& lhs,       
const Mesh::Iterator& rhs);
 
  193     friend Mesh::Iterator& 
operator+=(Mesh::Iterator& lhs,       
const Mesh::Iterator& rhs);
 
  195     friend bool operator==(
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  196     friend bool operator!=(
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  197     friend bool operator>=(
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  198     friend bool operator<=(
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  199     friend bool operator< (
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
  200     friend bool operator> (
const Mesh::Iterator& lhs, 
const Mesh::Iterator& rhs);
 
friend bool operator>=(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
double Max(const int &dimension) const 
int PositionDimension() const 
virtual Mesh::Iterator & SubOne(Mesh::Iterator &lhs) const 
friend Mesh::Iterator operator--(Mesh::Iterator &lhs, int)
std::vector< VectorMap * > _maps
void SetConstantSpacing()
void LowerBound(const std::vector< double > &pos, std::vector< int > &xIndex) const 
friend bool operator!=(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
bool IsGreater(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs) const 
friend Mesh::Iterator operator--(Mesh::Iterator &lhs, int)
friend bool operator<=(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
friend bool operator!=(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
void SetX(int nXCoords, double *x)
std::vector< double > xVector()
friend Mesh::Iterator operator-(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
friend Mesh::Iterator operator+(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
void SetConstantSpacing(bool spacing)
void SetCoord(int dimension, int nCoords, double *x)
friend bool operator>(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
void SetY(int nYCoords, double *y)
friend bool operator<(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
friend Mesh::Iterator operator++(Mesh::Iterator &lhs, int)
friend Mesh::Iterator operator+(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
virtual bool IsGreater(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs) const 
virtual void Position(const Mesh::Iterator &it, double *position) const 
std::vector< std::vector< double > > _coord
friend bool operator==(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
Mesh::Iterator & SubEquals(Mesh::Iterator &lhs, int difference) const 
std::vector< double > coordVector(const int &dimension) const 
virtual void CentrePosition(const Mesh::Iterator &it, double *position) const 
Mesh::Iterator End() const 
friend bool operator==(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
void yLowerBound(const double &y, int &yIndex) const 
virtual Mesh::Iterator & AddEquals(Mesh::Iterator &lhs, int difference) const 
virtual Mesh::Iterator & AddOne(Mesh::Iterator &lhs) const 
const double & y(const int &j) const 
void SetConstantSpacing(bool spacing)
void LowerBound(const double &x, int &xIndex, const double &y, int &yIndex) const 
virtual Mesh::Iterator & SubEquals(Mesh::Iterator &lhs, int difference) const 
NDGrid()
////// NDGrid /////// 
Mesh::Iterator Nearest(const double *position) const 
const double & coord(const int &index, const int &dimension) const 
friend bool operator>=(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
friend Mesh::Iterator & operator+=(Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
Mesh::Iterator & SubOne(Mesh::Iterator &lhs) const 
void Position(const Mesh::Iterator &it, double *position) const 
friend Mesh::Iterator & operator-=(Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
Mesh::Iterator Nearest(const double *position) const 
std::vector< double > yVector()
bool GetConstantSpacing() const 
friend Mesh::Iterator operator-(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
Mesh::Iterator & AddOne(Mesh::Iterator &lhs) const 
int size(const int &dimension) const 
void coordLowerBound(const double &x, const int &dimension, int &xIndex) const 
void SetConstantSpacing()
void Remove(VectorMap *map)
const double & x(const int &i) const 
int ToInteger(const Mesh::Iterator &lhs) const 
Mesh::Iterator Begin() const 
std::vector< VectorMap * > _maps
int ToInteger(const Mesh::Iterator &lhs) const 
friend Mesh::Iterator operator++(Mesh::Iterator &lhs, int)
Mesh::Iterator Begin() const 
friend Mesh::Iterator & operator+=(Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
Mesh::Iterator End() const 
int PositionDimension() const 
friend bool operator<=(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
friend bool operator<(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
bool GetConstantSpacing() const 
T::PETE_Expr_t::PETE_Return_t min(const PETE_Expr< T > &expr, NDIndex< D > &loc)
friend Mesh::Iterator & operator-=(Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
void xLowerBound(const double &x, int &xIndex) const 
PETE_TUTree< FnFloor, typename T::PETE_Expr_t > floor(const PETE_Expr< T > &l)
friend bool operator>(const Mesh::Iterator &lhs, const Mesh::Iterator &rhs)
Mesh::Iterator & AddEquals(Mesh::Iterator &lhs, int difference) const 
double * newCoordArray(const int &dimension) const 
double Min(const int &dimension) const 
double & coord(const int &index, const int &dimension)