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