Loading...
Searching...
No Matches
Opm::Elasticity::BoundaryGrid Class Reference

A class describing a quad grid. More...

`#include <boundarygrid.hh>`

## Classes

class | Vertex
| A class describing a 2D vertex. More...
class | Quad
| A class describing a linear, quadrilateral element. More...
struct | VertexLess
| Predicate for sorting vertices. More...
struct | BoundedPredicate
| Predicate for checking if a vertex falls within a quads bounding box. More...

## Public Types

typedef Dune::FieldVector< double, 3 > | GlobalCoordinate
| A coordinate on the underlying 3D grid.
typedef Dune::FieldVector< double, 2 > | FaceCoord
| A coordinate on the quad grid.

## Public Member Functions

| BoundaryGrid ()
| Default (empty) constructor.
virtual | ~BoundaryGrid ()
| Default (empty) destructor.
void | add (const Quad &quad)
| Add a quad to the grid.
void | addToColumn (size_t col, const Quad &quad)
Quad & | operator[] (int index)
| Obtain a reference to a quad.
const Quad & | operator[] (int index) const
| Obtain a const reference to a quad.
const Quad & | getQuad (int col, int index) const
size_t | size () const
| Obtain the number of quads in the grid.
size_t | colSize (int i) const
size_t | totalNodes () const
| Return the total number of nodes on the grid when known.
bool | isFixed (int node) const
| Check if a given node is marked as fixed.
bool | find (Vertex &res, const Vertex &coord) const
| Locate the position of a vertex on the grid.

## Static Public Member Functions

static BoundaryGrid | uniform (const FaceCoord &min, const FaceCoord &max, int k1, int k2, bool dc=false)
| Establish an uniform quad grid.
static void | extract (FaceCoord &res, const GlobalCoordinate &coord, int dir)
| Helper function for extracting given 2D coordinates from a 3D coordinate.
static void | extract (Vertex &res, const Dune::FieldVector< double, 3 > &coord, int dir)
| Helper function for extracting given 2D coordinates from a 3D vector.

## Protected Member Functions

bool | bilinearSolve (double epsilon, double order, const double *A, const double *B, std::vector< double > &X, std::vector< double > &Y) const
| Solves a bi-linear set of equations in x and y.
bool | cubicSolve (double eps, double A, double B, double C, double D, std::vector< double > &X) const
| Solves the cubic equation A*x^3+B*x^2+C*x+D=0.
int | Q4inv (FaceCoord &res, const Quad &q, const FaceCoord &coord, double epsZero, double epsOut) const
| Find the local coordinates of a given point within a given quad.

## Protected Attributes

std::vector< Quad > | grid
| Our quadrilateral elements.
std::vector< std::vector< Quad > > | colGrids
std::vector< bool > | fixNodes
| Whether or not a given node is marked as fixed.
size_t | nodes
| Total number of nodes on grid.

## Friends

std::ostream & | operator<< (std::ostream &os, const BoundaryGrid &g)
| Print to a stream.

## Detailed Description

A class describing a quad grid.

## Member Function Documentation

## add()

void Opm::Elasticity::BoundaryGrid::add | ( | const Quad & | quad | ) |

Add a quad to the grid.

Parameters

  [in] | quad | The quad to add

## bilinearSolve()

bool Opm::Elasticity::BoundaryGrid::bilinearSolve | ( | double | epsilon,
|  | double | order,
|  | const double * | A,
|  | const double * | B,
|  | std::vector< double > & | X,
|  | std::vector< double > & | Y ) const

protected

Solves a bi-linear set of equations in x and y.

A1 * x*y + A2 * x + A3 * y = A4 B1 * x*y + B2 * x + B3 * y = B4

Parameters

  [in] | epsilon | The tolerance for equality checks with zero
  [in] | order | The expected order of the solution (used for unique checks)
  [in] | A | The coefficients of the first equation
  [in] | B | The coefficients of the second equation
  [out] | X | The first component of the solutions
  [out] | Y | The second component of the solutions

## cubicSolve()

bool Opm::Elasticity::BoundaryGrid::cubicSolve | ( | double | eps,
|  | double | A,
|  | double | B,
|  | double | C,
|  | double | D,
|  | std::vector< double > & | X ) const

protected

Solves the cubic equation A*x^3+B*x^2+C*x+D=0.

Parameters

  [in] | eps | The tolerance for equality checks with zero
  [in] | A | Equation coefficient
  [in] | B | Equation coefficient
  [in] | C | Equation coefficient
  [in] | D | Equation coefficient
  [out] | X | The obtained solutions

## extract() [1/2]

void Opm::Elasticity::BoundaryGrid::extract | ( | FaceCoord & | res,
|  | const GlobalCoordinate & | coord,
|  | int | dir )

static

Helper function for extracting given 2D coordinates from a 3D coordinate.

Parameters

  [in] | coord | The 3D coordinates of the vertex
  [in] | dir | The direction to ignore
  [out] | res | The resulting coordinates

## extract() [2/2]

void Opm::Elasticity::BoundaryGrid::extract | ( | Vertex & | res,
|  | const Dune::FieldVector< double, 3 > & | coord,
|  | int | dir )

static

Helper function for extracting given 2D coordinates from a 3D vector.

Parameters

  [in] | coord | The 3D coordinates of the vertex
  [in] | dir | The direction to ignore
  [out] | res | The resulting coordinates

## find()

bool Opm::Elasticity::BoundaryGrid::find | ( | Vertex & | res,
|  | const Vertex & | coord ) const

Locate the position of a vertex on the grid.

Parameters

  [in] | coord | The coordinate of the vertex
  [out] | res | The resulting coordinates

## isFixed()

bool Opm::Elasticity::BoundaryGrid::isFixed | ( | int | node | ) | const

inline

Check if a given node is marked as fixed.

Parameters

  [in] | node | The requested node

Returns
  Whether or not the node is marked as fixed

## operator[]() [1/2]

Quad & Opm::Elasticity::BoundaryGrid::operator[] | ( | int | index | ) |

inline

Obtain a reference to a quad.

Parameters

  [in] | index | The index of the requested quad

Returns
  A reference to the requested quad

## operator[]() [2/2]

const Quad & Opm::Elasticity::BoundaryGrid::operator[] | ( | int | index | ) | const

inline

Obtain a const reference to a quad.

Parameters

  [in] | index | The index of the requested quad

Returns
  A const reference to the requested quad

## Q4inv()

int Opm::Elasticity::BoundaryGrid::Q4inv | ( | FaceCoord & | res,
|  | const Quad & | q,
|  | const FaceCoord & | coord,
|  | double | epsZero,
|  | double | epsOut ) const

protected

Find the local coordinates of a given point within a given quad.

Parameters

  [in] | q | The quad to search within
  [in] | coord | The coordinates to search for
  [in] | epsZero | The tolerance for equality checks with zero
  [in] | epsOut | The tolerance check for outside checks
  [out] | res | The obtained result

## totalNodes()

size_t Opm::Elasticity::BoundaryGrid::totalNodes | ( |  | ) | const

inline

Return the total number of nodes on the grid when known.

See also
  uniform

## uniform()

BoundaryGrid Opm::Elasticity::BoundaryGrid::uniform | ( | const FaceCoord & | min,
|  | const FaceCoord & | max,
|  | int | k1,
|  | int | k2,
|  | bool | dc = false )

static

Establish an uniform quad grid.

Parameters

  [in] | min | Lower left corner
  [in] | max | Upper right corner
  [in] | k1 | Number of elements in the first direction
  [in] | k2 | Number of elements in the second direction
  [in] | dc | If true, order quads according to dune conventions

Returns
  A quad grid spanning the given area. Nodes are numbered

The documentation for this class was generated from the following files:

- opm/elasticity/boundarygrid.hh
- opm/elasticity/boundarygrid.cpp