1 #ifndef OPM_VERTEQ_NAV_HPP_INCLUDED
2 #define OPM_VERTEQ_NAV_HPP_INCLUDED
7 #ifndef OPM_GRID_HEADER_INCLUDED
8 #include <opm/core/grid.h>
56 int i()
const {
return m_i; }
57 int j()
const {
return m_j; }
80 int k()
const {
return m_k; }
89 template <
typename Dim >
struct Side;
115 template <
typename Dim>
friend struct Side;
117 friend std::ostream&
operator << (std::ostream& os,
const Dir& d);
175 template <
typename Dim>
224 template <
typename T>
225 friend std::ostream& operator << (std::ostream& os, const Side<T>& s);
305 Cart2D (
int ni_,
int nj_) : ni (ni_), nj (nj_) { }
326 return coord.
j() * ni + coord.
i();
331 const std::div_t strip = std::div (cart_ndx, ni);
332 const int i = strip.rem;
333 const int j = strip.quot;
342 return (ni + 1) * (nj + 1);
346 return (coord.
j() + corn.
j().
val) * (ni + 1) + (coord.
i() + corn.
i().
val);
357 return (ni + 1) * nj + ni * (nj + 1);
366 const int dirv = side.
dir().
val;
368 const int idir = idim ? dirv : 0;
369 const int jdir = idim ? 0 : dirv;
379 return (coord.
j() + jdir) * (2 * ni + 1) + (idim *
ni) + (coord.
i() + idir);
399 : ni (g.cartdims [0])
400 , nj (g.cartdims [1])
401 , nk (g.cartdims [2]) { }
414 coord_t
coord (
const elem_t& cart_ndx)
const {
416 const div_t strip = div (cart_ndx, ni);
417 const int i = strip.rem;
418 const div_t plane = div (strip.quot, nj);
419 const int j = plane.rem;
420 const int k = plane.quot;
425 #endif // OPM_VERTEQ_NAV_HPP_INCLUDED
int j() const
Definition: nav.hpp:57
Coord2D(int i_, int j_)
Definition: nav.hpp:54
static const int COUNT
Number of possible directions.
Definition: nav.hpp:100
const int m_i
Definition: nav.hpp:67
bool operator==(const Dim2D &rhs) const
Definition: nav.hpp:136
Side(const Side &rhs)
Definition: nav.hpp:178
const Dir m_i
Definition: nav.hpp:254
Corn2D(const Corn2D &rhs)
Definition: nav.hpp:248
static const int COUNT
Definition: nav.hpp:155
const int m_k
Definition: nav.hpp:83
static const Dim3D Z
Definition: nav.hpp:152
const Dir m_j
Definition: nav.hpp:255
Dim2D orthogonal() const
Orthogonal dimension to this one.
Definition: nav.hpp:139
Dim2D(int i)
Definition: nav.hpp:142
static const int NO_ELEM
Value used to indicate that a reference is not to a valid element.
Definition: nav.hpp:315
Dir opposite() const
Opposite direction to this one.
Definition: nav.hpp:109
int facetag() const
Definition: nav.hpp:187
const int val
Definition: nav.hpp:133
Side(Dim dim_, Dir dir_)
Definition: nav.hpp:177
static const int COUNT
Definition: nav.hpp:202
std::ostream & operator<<(std::ostream &os, const Side2D &s)
Dim2D(const Dim2D &rhs)
Definition: nav.hpp:135
Type-safe enumeration of axis dimensions in 3D.
Definition: nav.hpp:150
bool operator==(const Dim2D &rhs) const
Definition: nav.hpp:158
Type-safe enumeration of axis dimensions.
Definition: nav.hpp:125
static const Dim2D X
Definition: nav.hpp:127
Corn3D(Dir i_, Dir j_, Dir k_)
Definition: nav.hpp:263
const int nk
Definition: nav.hpp:395
static const int COUNT
Definition: nav.hpp:131
const int nj
Definition: nav.hpp:394
static Side< Dim > from_tag(int tag)
int num_faces() const
Definition: nav.hpp:353
const Dir m_k
Definition: nav.hpp:290
Cart2D project() const
Project grid into a surface.
Definition: nav.hpp:404
Dir j() const
Definition: nav.hpp:251
Dir dir() const
Definition: nav.hpp:197
int elem_t
Definition: nav.hpp:310
Cart2D(int ni_, int nj_)
Definition: nav.hpp:305
static const Side ALL[]
Definition: nav.hpp:222
friend std::ostream & operator<<(std::ostream &s, const Coord2D &c)
face_t face_ndx(const coord_t &coord, const Side2D &side)
Definition: nav.hpp:364
Corn3D pivot(Dim3D dim, Dir dir)
Definition: nav.hpp:274
Coord3D coord_t
Definition: nav.hpp:410
static const Dim2D Y
Definition: nav.hpp:128
Type-safe enumeration of axis directions.
Definition: nav.hpp:92
Index tuple in three-dimensional cornerpoint grid.
Definition: nav.hpp:74
coord_t coord(const elem_t &cart_ndx) const
Deconstruct Cartesian index into coordinates.
Definition: nav.hpp:414
friend std::ostream & operator<<(std::ostream &s, const Coord3D &c)
int i() const
Definition: nav.hpp:56
int num_elems() const
Number of (possible) elements in the grid.
Definition: nav.hpp:320
bool operator==(const Dir &rhs) const
Definition: nav.hpp:106
static const Dir INC
Towards the end of the axis with greater numbers.
Definition: nav.hpp:97
Dir i() const
Definition: nav.hpp:250
Dim dim() const
Definition: nav.hpp:196
int elem_t
Definition: nav.hpp:411
const Dim m_dim
Definition: nav.hpp:218
Dir(int i)
Private constructor to avoid initialization outside domain.
Definition: nav.hpp:113
bool operator==(const Corn3D &rhs) const
Definition: nav.hpp:285
friend std::ostream & operator<<(std::ostream &os, const Dim2D &d)
static const int COUNT
Definition: nav.hpp:121
static const Side * end()
Definition: nav.hpp:208
const int ni
Definition: nav.hpp:393
bool operator==(const Coord2D &rhs) const
Definition: nav.hpp:62
friend std::ostream & operator<<(std::ostream &os, const Dir &d)
Corn2D(Dir i_, Dir j_)
Definition: nav.hpp:247
Dir k() const
Definition: nav.hpp:280
Dim3D(const Dim2D &rhs)
Definition: nav.hpp:161
Side< Dim3D > Side3D
Definition: nav.hpp:230
static const Dir DEC
Towards the end of the axis with lesser numbers.
Definition: nav.hpp:94
Cart3D(const UnstructuredGrid &g)
Initialize POD from an existing (3D) grid.
Definition: nav.hpp:398
Dim3D(const Dim3D &rhs)
Definition: nav.hpp:157
node_t node_ndx(const coord_t &coord, const Corn2D &corn)
Definition: nav.hpp:345
const Dir m_dir
Definition: nav.hpp:219
Dim3D(int i)
Definition: nav.hpp:164
Corn3D(const Corn3D &rhs)
Definition: nav.hpp:264
const int m_j
Definition: nav.hpp:68
const int val
Integer representation suitable for indexing in array.
Definition: nav.hpp:103
bool operator==(const Side< Dim > &rhs) const
Definition: nav.hpp:213
static const int NO_FACE
Definition: nav.hpp:316
static const int NO_NODE
Definition: nav.hpp:317
elem_t cart_ndx(const coord_t &coord) const
Cartesian (flattened) index for a coordinate.
Definition: nav.hpp:325
int k() const
Definition: nav.hpp:80
int num_nodes() const
Definition: nav.hpp:341
static const Side * begin()
Definition: nav.hpp:207
coord_t coord(const elem_t &cart_ndx) const
Cartesian coordinate for a (flattened) index.
Definition: nav.hpp:330
Side< Dim2D > Side2D
Definition: nav.hpp:229
const int nj
Definition: nav.hpp:302
Coord3D(int i_, int j_, int k_)
Definition: nav.hpp:75
Dir(const Dir &rhs)
Definition: nav.hpp:105
Coord2D coord_t
Definition: nav.hpp:309
friend std::ostream & operator<<(std::ostream &os, const Corn3D &c)
int face_t
Definition: nav.hpp:312
const int ni
Definition: nav.hpp:301
int node_t
Definition: nav.hpp:311