Opm::Elasticity Namespace Reference

Classes

struct  AMG1
 An AMG. More...
 
struct  AMG2Level
 A two-level method with a coarse AMG solver. More...
 
class  ASMHandler
 Class handling finite element assembly. More...
 
class  BoundaryGrid
 A class describing a quad grid. More...
 
class  Elasticity
 Elasticity helper class. More...
 
class  ElasticityUpscale
 The main driver class. More...
 
struct  FastAMG
 A FastAMG. More...
 
class  HexGeometry
 Geometry class for general hexagons. More...
 
class  HexGeometry< 2, cdim, GridImp >
 Specialization for 2D quadrilaterals. More...
 
class  Isotropic
 Isotropic linear elastic material. More...
 
class  LagrangeCardinalFunction
 Represents a cardinal function on a line. More...
 
class  LinearShapeFunction
 Represents a linear shape function on a Q4/Q8 element. More...
 
struct  LinSolParams
 
class  Material
 This is a base class for linear elastic materials. More...
 
class  MatrixOps
 Helper class with some matrix operations. More...
 
class  MortarBlockEvaluator
 
class  MortarEvaluator
 
class  MortarSchurPre
 
class  MortarUtils
 
class  MPC
 A class for representing a general multi-point constraint equation. More...
 
struct  OperatorApplier
 Class abstracting a preconditioner or an inverse operator. More...
 
class  OrthotropicD
 Orthotropic linear elastic material with diagonal constitutive matrix. More...
 
class  OrthotropicSym
 Orthotropic linear elastic material with symmetric constitutive matrix. More...
 
class  P1ShapeFunctionSet
 Singleton handler for the set of LinearShapeFunction. More...
 
class  PNShapeFunctionSet
 
struct  Schwarz
 Overlapping Schwarz preconditioner. More...
 
class  TensorProductFunction
 Represents a tensor-product of 1D functions. More...
 
class  UzawaSolver
 

Typedefs

typedef OperatorApplier< Dune::InverseOperator< Vector, Vector > > InverseApplier
 
typedef OperatorApplier< Dune::Preconditioner< Vector, Vector > > PreApplier
 
typedef Dune::MatrixAdapter< Matrix, Vector, VectorOperator
 A linear operator. More...
 
typedef Dune::SeqSSOR< Matrix, Vector, VectorSSORSmoother
 SSOR AMG smoother. More...
 
typedef Dune::SeqJac< Matrix, Vector, VectorJACSmoother
 GJ AMG smoother. More...
 
typedef Dune::SeqILU< Matrix, Vector, VectorILUSmoother
 ILU0 AMG smoother. More...
 
typedef Dune::SeqOverlappingSchwarz< Matrix, Vector, Dune::SymmetricMultiplicativeSchwarzMode, LUSolver > SchwarzSmoother
 Schwarz + ILU0 AMG smoother. More...
 
typedef Dune::BCRSMatrix< Dune::FieldMatrix< double, 1, 1 > > Matrix
 A sparse matrix holding our operator. More...
 
typedef std::vector< std::set< int > > AdjacencyPattern
 For storing matrix adjacency/sparsity patterns. More...
 
typedef Dune::BlockVector< Dune::FieldVector< double, 1 > > Vector
 A vector holding our RHS. More...
 
typedef std::set< MPC *, MPC::LessMPCSet
 A set of MPCs. More...
 
typedef std::map< int, MPC * > MPCMap
 A mapping from dof to MPCs. More...
 

Enumerations

enum  Solver { DIRECT , ITERATIVE }
 An enumeration of available linear solver classes. More...
 
enum  Preconditioner {
  AMG , FASTAMG , SCHWARZ , TWOLEVEL ,
  UNDETERMINED
}
 
enum  MultiplierPreconditioner {
  SIMPLE , SCHUR , SCHURAMG , SCHURSCHWARZ ,
  SCHURTWOLEVEL
}
 An enumeration of the available preconditioners for multiplier block. More...
 
enum  Smoother { SMOOTH_SSOR = 0 , SMOOTH_SCHWARZ = 1 , SMOOTH_JACOBI = 2 , SMOOTH_ILU = 4 }
 Smoother used in the AMG. More...
 
enum  Direction {
  NONE = 0 , X = 1 , Y = 2 , Z = 4 ,
  XY = 1+2 , XZ = 1+4 , YZ = 2+4 , XYZ = 1+2+4
}
 An enum for specification of global coordinate directions. More...
 

Functions

BoundaryGrid::Vertex minXminY (std::vector< BoundaryGrid::Vertex > &in)
 Find the vertex in the vector with minimum X and minimum Y. More...
 
BoundaryGrid::Vertex maxXminY (std::vector< BoundaryGrid::Vertex > &in)
 Find the vertex in the vector with maximum X and minimum Y. More...
 
BoundaryGrid::Vertex maxXmaxY (std::vector< BoundaryGrid::Vertex > &in)
 Find the vertex in the vector with maximum X and maximum Y. More...
 
BoundaryGrid::Vertex minXmaxY (std::vector< BoundaryGrid::Vertex > &in)
 Find the vertex in the vector with minimum X and maximum Y. More...
 
Dune::FieldVector< double, 3 > waveSpeeds (const Dune::FieldMatrix< double, 6, 6 > &C, double phi, double theta, double density)
 Compute the elastic wave velocities. More...
 
 IMPL_FUNC (std::vector< BoundaryGrid::Vertex >, extractFace(Direction dir, ctype coord))
 
 IMPL_FUNC (BoundaryGrid, extractMasterFace(Direction dir, ctype coord, SIDE side, bool dc))
 
master push_back (extractMasterFace(Y, min[1]))
 
master push_back (extractMasterFace(Z, min[2]))
 
slave push_back (extractFace(X, max[0]))
 
slave push_back (extractFace(Y, max[1]))
 
slave push_back (extractFace(Z, max[2]))
 
 for (LeafVertexIterator it=start;it !=itend;++it)
 
 IMPL_FUNC (void, addMPC(Direction dir, int slavenode, const BoundaryGrid::Vertex &m))
 
 IMPL_FUNC (void, periodicPlane(Direction, Direction, const std::vector< BoundaryGrid::Vertex > &slavepointgrid, const BoundaryGrid &mastergrid))
 
static std::vector< std::vector< int > > renumber (const BoundaryGrid &b, int n1, int n2, int &totalDOFs)
 Static helper to renumber a Q4 mesh to a P_1/P_N lag mesh. More...
 
 IMPL_FUNC (int, addBBlockMortar(const BoundaryGrid &b1, const BoundaryGrid &interface, int, int n1, int n2, int colofs))
 
 IMPL_FUNC (void, assembleBBlockMortar(const BoundaryGrid &b1, const BoundaryGrid &interface, int dir, int n1, int n2, int colofs, double alpha))
 
 IMPL_FUNC (void, fixPoint(Direction dir, GlobalCoordinate coord, const NodeValue &value))
 
 IMPL_FUNC (bool, isOnPlane(Direction plane, GlobalCoordinate coord, ctype value))
 
 IMPL_FUNC (void, fixLine(Direction dir, ctype x, ctype y, const NodeValue &value))
 
 IMPL_FUNC (bool, isOnLine(Direction dir, GlobalCoordinate coord, ctype x, ctype y))
 
 IMPL_FUNC (bool, isOnPoint(GlobalCoordinate coord, GlobalCoordinate point))
 
 if (loadcase > -1)
 
 if (matrix) A.getOperator()=0
 
 for (int i=0;i< 2;++i)
 
 IMPL_FUNC (template< int comp > void, averageStress(Dune::FieldVector< ctype, comp > &sigma, const Vector &uarg, int loadcase))
 
 if (file=="uniform")
 
 if (deck.hasKeyword("YOUNGMOD") &&deck.hasKeyword("POISSONMOD"))
 
else if (deck.hasKeyword("LAMEMOD") &&deck.hasKeyword("SHEARMOD"))
 
else if (deck.hasKeyword("BULKMOD") &&deck.hasKeyword("SHEARMOD"))
 
else if (deck.hasKeyword("PERMX") &&deck.hasKeyword("PORO"))
 
 exit (1)
 
 if (deck.hasKeyword("SATNUM")) satnum
 
 if (deck.hasKeyword("RHO")) rho
 
 if (Escale > 0)
 
 if (satnum.empty())
 
 if (upscaledRho > 0)
 
 IMPL_FUNC (void, loadMaterialsFromRocklist(const std::string &file, const std::string &rocklist))
 
 determineSideFaces (min, max)
 
static std::cout<< "Xslave "<< slave[0].size()<< " "<< "Yslave "<< slave[1].size()<< " "<< "Zslave "<< slave[2].size()<< std::endl;std::cout<< "Xmaster "<< master[0].size()<< " "<< "Ymaster "<< master[1].size()<< " "<< "Zmaster "<< master[2].size()<< std::endl;periodicPlane(X, XYZ, slave[0], master[0]);periodicPlane(Y, XYZ, slave[1], master[1]);periodicPlane(Z, XYZ, slave[2], master[2]);}IMPL_FUNC(void, periodicBCsMortar(const double *min, const double *max, int n1, int n2, int p1, int p2)){ fixCorners(min, max);std::cout<< "\textracting nodes on top face..."<< std::endl;slave.push_back(extractFace(Z, max[2]));std::cout<< "\treconstructing bottom face..."<< std::endl;BoundaryGrid bottom=extractMasterFace(Z, min[2]);std::cout<< "\testablishing couplings on top/bottom..."<< std::endl;periodicPlane(Z, XYZ, slave[0], bottom);std::cout<< "\tinitializing matrix..."<< std::endl;A.initForAssembly();std::cout<< "\treconstructing left face..."<< std::endl;master.push_back(extractMasterFace(X, min[0], LEFT, true));std::cout<< "\treconstructing right face..."<< std::endl;master.push_back(extractMasterFace(X, max[0], RIGHT, true));std::cout<< "\treconstructing front face..."<< std::endl;master.push_back(extractMasterFace(Y, min[1], LEFT, true));std::cout<< "\treconstructing back face..."<< std::endl;master.push_back(extractMasterFace(Y, max[1], RIGHT, true));std::cout<< "\testablished YZ multiplier grid with "<< n2<< "x1"<< " elements"<< std::endl;BoundaryGrid::FaceCoord fmin, fmax;fmin[0]=min[1];fmin[1]=min[2];fmax[0]=max[1];fmax[1]=max[2];BoundaryGrid lambdax=BoundaryGrid::uniform(fmin, fmax, n2, 1, true);fmin[0]=min[0];fmin[1]=min[2];fmax[0]=max[0];fmax[1]=max[2];std::cout<< "\testablished XZ multiplier grid with "<< n1<< "x1"<< " elements"<< std::endl;BoundaryGrid lambday=BoundaryGrid::uniform(fmin, fmax, n1, 1, true);addBBlockMortar(master[0], lambdax, 0, 1, p2, 0);int eqns=addBBlockMortar(master[1], lambdax, 0, 1, p2, 0);addBBlockMortar(master[2], lambday, 1, 1, p1, eqns);int eqns2=addBBlockMortar(master[3], lambday, 1, 1, p1, eqns);MatrixOps::fromAdjacency(B, Bpatt, A.getEqns(), eqns+eqns2);Bpatt.clear();std::cout<< "\tassembling YZ mortar matrix..."<< std::endl;assembleBBlockMortar(master[0], lambdax, 0, 1, p2, 0);assembleBBlockMortar(master[1], lambdax, 0, 1, p2, 0, -1.0);std::cout<< "\tassembling XZ mortar matrix..."<< std::endl;assembleBBlockMortar(master[2], lambday, 1, 1, p1, eqns);assembleBBlockMortar(master[3], lambday, 1, 1, p1, eqns, -1.0);master.clear();slave.clear();} template< class M, class A > void applyMortarBlock (int i, const Matrix &B, M &T, A &upre)
 
 if (params.type==ITERATIVE)
 
std::cerr<< "No direct solver available"<< std::endl;exit(1);siz=A.getOperator().N();} for(int i=0;i< 6;++i) b[i].resize(siz);}{ try { Dune::InverseOperatorResult r;u[loadcase].resize(b[loadcase].size());u[loadcase]=0;int solver=0;tsolver[solver]-> apply (u[loadcase], b[loadcase], r)
 

Variables

 min [0] = min[1] = min[2] = 1e5
 
const LeafVertexIterator itend = gv.leafGridView().template end<dim>()
 
LeafVertexIterator start = gv.leafGridView().template begin<dim>()
 
static const int bfunc = 4+(dim-2)*4
 
Dune::FieldVector< ctype, comp > eps0 = 0
 
MaterialMap cache
 
std::vector< double > Emod
 
std::vector< double > Poiss
 
std::vector< int > satnum
 
std::vector< double > rho
 
 upscaledRho = -1
 
 else
 
auto deck = parser.parseFile(file)
 
std::vector< int > cells = gv.globalCell()
 
int j =0
 
std::map< Material *, double > volume
 
std::cout<< "Number of materials: "<< cache.size()<< std::endl;double totalvolume=0;for(std::map< Material *, double >::iterator it=volume.begin();it !=volume.end();++it) totalvolume+=it-> second
 
int numsolvers = 1
 

Typedef Documentation

◆ AdjacencyPattern

typedef std::vector< std::set<int> > Opm::Elasticity::AdjacencyPattern

For storing matrix adjacency/sparsity patterns.

◆ ILUSmoother

ILU0 AMG smoother.

◆ InverseApplier

typedef OperatorApplier<Dune::InverseOperator<Vector, Vector> > Opm::Elasticity::InverseApplier

◆ JACSmoother

GJ AMG smoother.

◆ Matrix

typedef Dune::BCRSMatrix<Dune::FieldMatrix<double,1,1> > Opm::Elasticity::Matrix

A sparse matrix holding our operator.

◆ MPCMap

typedef std::map<int,MPC*> Opm::Elasticity::MPCMap

A mapping from dof to MPCs.

◆ MPCSet

A set of MPCs.

◆ Operator

typedef Dune::MatrixAdapter<Matrix,Vector,Vector> Opm::Elasticity::Operator

A linear operator.

◆ PreApplier

typedef OperatorApplier<Dune::Preconditioner<Vector, Vector> > Opm::Elasticity::PreApplier

◆ SchwarzSmoother

typedef Dune::SeqOverlappingSchwarz<Matrix,Vector, Dune::SymmetricMultiplicativeSchwarzMode, LUSolver> Opm::Elasticity::SchwarzSmoother

Schwarz + ILU0 AMG smoother.

◆ SSORSmoother

SSOR AMG smoother.

◆ Vector

typedef Dune::BlockVector<Dune::FieldVector<double,1> > Opm::Elasticity::Vector

A vector holding our RHS.

Enumeration Type Documentation

◆ Direction

An enum for specification of global coordinate directions.

Enumerator
NONE 
XY 
XZ 
YZ 
XYZ 

◆ MultiplierPreconditioner

An enumeration of the available preconditioners for multiplier block.

Enumerator
SIMPLE 

diagonal approximation of A

SCHUR 

schur + primary preconditioner

SCHURAMG 

schur + amg

SCHURSCHWARZ 

schur + schwarz+lu

SCHURTWOLEVEL 

schur + twolevel

◆ Preconditioner

Enumerator
AMG 
FASTAMG 
SCHWARZ 
TWOLEVEL 
UNDETERMINED 

◆ Smoother

Smoother used in the AMG.

Enumerator
SMOOTH_SSOR 
SMOOTH_SCHWARZ 
SMOOTH_JACOBI 
SMOOTH_ILU 

◆ Solver

An enumeration of available linear solver classes.

Enumerator
DIRECT 
ITERATIVE 

Function Documentation

◆ apply()

std::cerr<< "No direct solver available"<< std::endl; exit(1); siz=A.getOperator().N(); } for(int i=0;i< 6;++i) b[i].resize(siz);}{ try { Dune::InverseOperatorResult r; u[loadcase].resize(b[loadcase].size()); u[loadcase]=0; int solver=0; tsolver[solver]-> Opm::Elasticity::apply ( [loadcase],
[loadcase],
 
)

◆ applyMortarBlock()

static std::cout<< "Xslave "<< slave[0].size()<< " "<< "Yslave "<< slave[1].size()<< " "<< "Zslave "<< slave[2].size()<< std::endl; std::cout<< "Xmaster "<< master[0].size()<< " "<< "Ymaster "<< master[1].size()<< " "<< "Zmaster "<< master[2].size()<< std::endl; periodicPlane(X, XYZ, slave[0], master[0]); periodicPlane(Y, XYZ, slave[1], master[1]); periodicPlane(Z, XYZ, slave[2], master[2]);}IMPL_FUNC(void, periodicBCsMortar(const double *min, const double *max, int n1, int n2, int p1, int p2)){ fixCorners(min, max); std::cout<< "\textracting nodes on top face..."<< std::endl; slave.push_back(extractFace(Z, max[2])); std::cout<< "\treconstructing bottom face..."<< std::endl; BoundaryGrid bottom=extractMasterFace(Z, min[2]); std::cout<< "\testablishing couplings on top/bottom..."<< std::endl; periodicPlane(Z, XYZ, slave[0], bottom); std::cout<< "\tinitializing matrix..."<< std::endl; A.initForAssembly(); std::cout<< "\treconstructing left face..."<< std::endl; master.push_back(extractMasterFace(X, min[0], LEFT, true)); std::cout<< "\treconstructing right face..."<< std::endl; master.push_back(extractMasterFace(X, max[0], RIGHT, true)); std::cout<< "\treconstructing front face..."<< std::endl; master.push_back(extractMasterFace(Y, min[1], LEFT, true)); std::cout<< "\treconstructing back face..."<< std::endl; master.push_back(extractMasterFace(Y, max[1], RIGHT, true)); std::cout<< "\testablished YZ multiplier grid with "<< n2<< "x1"<< " elements"<< std::endl; BoundaryGrid::FaceCoord fmin, fmax; fmin[0]=min[1];fmin[1]=min[2]; fmax[0]=max[1];fmax[1]=max[2]; BoundaryGrid lambdax=BoundaryGrid::uniform(fmin, fmax, n2, 1, true); fmin[0]=min[0];fmin[1]=min[2]; fmax[0]=max[0];fmax[1]=max[2]; std::cout<< "\testablished XZ multiplier grid with "<< n1<< "x1"<< " elements"<< std::endl; BoundaryGrid lambday=BoundaryGrid::uniform(fmin, fmax, n1, 1, true); addBBlockMortar(master[0], lambdax, 0, 1, p2, 0); int eqns=addBBlockMortar(master[1], lambdax, 0, 1, p2, 0); addBBlockMortar(master[2], lambday, 1, 1, p1, eqns); int eqns2=addBBlockMortar(master[3], lambday, 1, 1, p1, eqns); MatrixOps::fromAdjacency(B, Bpatt, A.getEqns(), eqns+eqns2); Bpatt.clear(); std::cout<< "\tassembling YZ mortar matrix..."<< std::endl; assembleBBlockMortar(master[0], lambdax, 0, 1, p2, 0); assembleBBlockMortar(master[1], lambdax, 0, 1, p2, 0, -1.0); std::cout<< "\tassembling XZ mortar matrix..."<< std::endl; assembleBBlockMortar(master[2], lambday, 1, 1, p1, eqns); assembleBBlockMortar(master[3], lambday, 1, 1, p1, eqns, -1.0); master.clear(); slave.clear();} template< class M, class A > void Opm::Elasticity::applyMortarBlock ( int  i,
const Matrix B,
M &  T,
A &  upre 
)
static

◆ determineSideFaces()

Opm::Elasticity::determineSideFaces ( min  ,
max   
)

◆ exit()

Opm::Elasticity::exit ( )

Referenced by if(), and IMPL_FUNC().

◆ for() [1/2]

Opm::Elasticity::for ( )
Initial value:
{
ctype c[8][3] = {{min[0],min[1],min[2]},
{max[0],min[1],min[2]},
{min[0],max[1],min[2]},
{max[0],max[1],min[2]},
{min[0],min[1],max[2]},
{max[0],min[1],max[2]},
{min[0],max[1],max[2]},
{max[0],max[1],max[2]}}
min[0]
Definition: elasticity_upscale_impl.hpp:146

References eps0, and j.

◆ for() [2/2]

Opm::Elasticity::for ( LeafVertexIterator  it = start; it != itend; ++it)

References min.

◆ if() [1/13]

else Opm::Elasticity::if ( deck.  hasKeyword"BULKMOD") &&deck.hasKeyword("SHEARMOD")

◆ if() [2/13]

else Opm::Elasticity::if ( deck.  hasKeyword"LAMEMOD") &&deck.hasKeyword("SHEARMOD")

◆ if() [3/13]

else Opm::Elasticity::if ( deck.  hasKeyword"PERMX") &&deck.hasKeyword("PORO")

◆ if() [4/13]

Opm::Elasticity::if ( deck.  hasKeyword"RHO")

◆ if() [5/13]

Opm::Elasticity::if ( deck.  hasKeyword"SATNUM")

◆ if() [6/13]

Opm::Elasticity::if ( deck.  hasKeyword"YOUNGMOD") &&deck.hasKeyword("POISSONMOD")

References deck, Emod, exit(), and Poiss.

◆ if() [7/13]

Opm::Elasticity::if ( Escale  ,
 
)

References Emod.

◆ if() [8/13]

Opm::Elasticity::if ( file  = = "uniform")

References cells, Emod, and Poiss.

◆ if() [9/13]

Opm::Elasticity::if ( loadcase  ,
1 
)

References eps0.

◆ if() [10/13]

Opm::Elasticity::if ( matrix  )
pure virtual

◆ if() [11/13]

◆ if() [12/13]

Opm::Elasticity::if ( satnum.  empty())

References cache, and volume.

◆ if() [13/13]

Opm::Elasticity::if ( upscaledRho  ,
 
)

References upscaledRho.

◆ IMPL_FUNC() [1/13]

Opm::Elasticity::IMPL_FUNC ( bool  ,
isOnLine(Direction dir, GlobalCoordinate coord, ctype x, ctype y)   
)

References Z.

◆ IMPL_FUNC() [2/13]

Opm::Elasticity::IMPL_FUNC ( bool  ,
isOnPlane(Direction plane, GlobalCoordinate coord, ctype value)   
)

References Z.

◆ IMPL_FUNC() [3/13]

Opm::Elasticity::IMPL_FUNC ( bool  ,
isOnPoint(GlobalCoordinate coord, GlobalCoordinate point)   
)

◆ IMPL_FUNC() [4/13]

◆ IMPL_FUNC() [5/13]

◆ IMPL_FUNC() [6/13]

Opm::Elasticity::IMPL_FUNC ( std::vector< BoundaryGrid::Vertex ,
extractFace(Direction dir, ctype coord)   
)

◆ IMPL_FUNC() [7/13]

Opm::Elasticity::IMPL_FUNC ( template< int comp > void  ,
averageStress(Dune::FieldVector< ctype, comp > &sigma, const Vector &uarg, int loadcase)   
)

References bfunc, eps0, itend, and volume.

◆ IMPL_FUNC() [8/13]

◆ IMPL_FUNC() [9/13]

◆ IMPL_FUNC() [10/13]

Opm::Elasticity::IMPL_FUNC ( void  ,
fixLine(Direction dir, ctype x, ctype y, const NodeValue &value)   
)

References itend, and XYZ.

◆ IMPL_FUNC() [11/13]

Opm::Elasticity::IMPL_FUNC ( void  ,
fixPoint(Direction dir, GlobalCoordinate coord, const NodeValue &value)   
)

References itend.

◆ IMPL_FUNC() [12/13]

Opm::Elasticity::IMPL_FUNC ( void  ,
loadMaterialsFromRocklist(const std::string &file, const std::string &rocklist)   
)

◆ IMPL_FUNC() [13/13]

Opm::Elasticity::IMPL_FUNC ( void  ,
periodicPlane(Direction, Direction, const std::vector< BoundaryGrid::Vertex > &slavepointgrid, const BoundaryGrid &mastergrid)   
)

◆ maxXmaxY()

BoundaryGrid::Vertex Opm::Elasticity::maxXmaxY ( std::vector< BoundaryGrid::Vertex > &  in)

Find the vertex in the vector with maximum X and maximum Y.

Returns
The requested vertex

Referenced by IMPL_FUNC().

◆ maxXminY()

BoundaryGrid::Vertex Opm::Elasticity::maxXminY ( std::vector< BoundaryGrid::Vertex > &  in)

Find the vertex in the vector with maximum X and minimum Y.

Returns
The requested vertex

Referenced by IMPL_FUNC().

◆ minXmaxY()

BoundaryGrid::Vertex Opm::Elasticity::minXmaxY ( std::vector< BoundaryGrid::Vertex > &  in)

Find the vertex in the vector with minimum X and maximum Y.

Returns
The requested vertex

Referenced by IMPL_FUNC().

◆ minXminY()

BoundaryGrid::Vertex Opm::Elasticity::minXminY ( std::vector< BoundaryGrid::Vertex > &  in)

Find the vertex in the vector with minimum X and minimum Y.

Returns
The requested vertex

Referenced by IMPL_FUNC().

◆ push_back() [1/5]

slave Opm::Elasticity::push_back ( extractFace(X, max[0])  )

◆ push_back() [2/5]

slave Opm::Elasticity::push_back ( extractFace(Y, max[1])  )

◆ push_back() [3/5]

slave Opm::Elasticity::push_back ( extractFace(Z, max[2])  )

◆ push_back() [4/5]

master Opm::Elasticity::push_back ( extractMasterFace(Y, min[1])  )

◆ push_back() [5/5]

master Opm::Elasticity::push_back ( extractMasterFace(Z, min[2])  )

◆ renumber()

static std::vector< std::vector< int > > Opm::Elasticity::renumber ( const BoundaryGrid b,
int  n1,
int  n2,
int &  totalDOFs 
)
static

Static helper to renumber a Q4 mesh to a P_1/P_N lag mesh.

Parameters
[in]bThe boundary grid describing the Q4 mesh
[in]n1Number of DOFS in the first direction for each element
[in]n2Number of DOFS in the first direction for each element
[out]totalDOFsThe total number of free DOFs

References push_back(), Opm::Elasticity::BoundaryGrid::size(), and start.

Referenced by IMPL_FUNC().

◆ waveSpeeds()

Dune::FieldVector< double, 3 > Opm::Elasticity::waveSpeeds ( const Dune::FieldMatrix< double, 6, 6 > &  C,
double  phi,
double  theta,
double  density 
)

Compute the elastic wave velocities.

C The elastic tensor

phi dip angle

theta Azimuth angle

density Density of material

References j.

Variable Documentation

◆ bfunc

const int Opm::Elasticity::bfunc = 4+(dim-2)*4
static

Referenced by IMPL_FUNC().

◆ cache

MaterialMap Opm::Elasticity::cache
Initial value:
{
typedef std::map<std::pair<double,double>,
std::shared_ptr<Material> > MaterialMap

Referenced by if(), and IMPL_FUNC().

◆ cells

std::vector<int> Opm::Elasticity::cells = gv.globalCell()

Referenced by if(), and IMPL_FUNC().

◆ deck

◆ else

Opm::Elasticity::else
Initial value:
{
Opm::Parser parser

◆ Emod

std::vector<double> Opm::Elasticity::Emod

◆ eps0

Opm::Elasticity::eps0 = 0

◆ itend

const LeafVertexIterator Opm::Elasticity::itend = gv.leafGridView().template end<dim>()

◆ j

int Opm::Elasticity::j =0

Referenced by Opm::Elasticity::ASMHandler< GridType >::addDOF(), applyMortarBlock(), Opm::ImplicitTransportDefault::MatrixBlockAssembler< ISTLTypeDetails::ScalarBCRSMatrix >::assembleBlock(), Opm::ReservoirPropertyCommon< dim, RPImpl, RockType >::assignPermeability(), Opm::Rock< dim >::assignPermeability(), Opm::MimeticIPAnisoRelpermEvaluator< GridInterface, RockInterface >::buildStaticContrib(), Opm::MimeticIPEvaluator< GridInterface, RockInterface >::buildStaticContrib(), Opm::CornerPointChopper::chop(), Opm::MimeticIPEvaluator< GridInterface, RockInterface >::evaluate(), Opm::Elasticity::LagrangeCardinalFunction< ctype, rtype >::evaluateGradient(), Opm::Elasticity::LinearShapeFunction< ctype, rtype, dim >::evaluateGradient(), Opm::Elasticity::ASMHandler< GridType >::expandSolution(), for(), Opm::Elasticity::Elasticity< GridType >::getBmatrix(), Opm::Elasticity::Elasticity< GridType >::getStiffnessMatrix(), Opm::Elasticity::HexGeometry< 2, cdim, GridImp >::global(), IMPL_FUNC(), Opm::Elasticity::HexGeometry< 2, cdim, GridImp >::jacobianTransposed(), Opm::Elasticity::ASMHandler< GridType >::nodeAdjacency(), Opm::Elasticity::PNShapeFunctionSet< dim >::PNShapeFunctionSet(), Opm::readControl(), Opm::Elasticity::ASMHandler< GridType >::resolveMPCChain(), Opm::ReservoirPropertyCommon< dim, ReservoirPropertyCapillary< dim >, RockJfunc >::swcr(), Opm::symmetricUpdate(), Opm::SteadyStateUpscalerManager< Traits >::upscale(), Opm::SteadyStateUpscalerManagerImplicit< Upscaler >::upscale(), waveSpeeds(), and Opm::writeControl().

◆ min

◆ numsolvers

int Opm::Elasticity::numsolvers = 1

Referenced by if().

◆ Poiss

std::vector<double> Opm::Elasticity::Poiss

Referenced by if().

◆ rho

◆ satnum

std::vector<int> Opm::Elasticity::satnum

◆ second

std::cout<< "Number of materials: " << cache.size() << std::endl; double totalvolume=0; for (std::map<Material*,double>::iterator it = volume.begin(); it != volume.end(); ++it) totalvolume += it-> Opm::Elasticity::second

◆ start

◆ upscaledRho

Opm::Elasticity::upscaledRho = -1

Referenced by if().

◆ volume

std::map<Material*,double> Opm::Elasticity::volume

Referenced by if(), and IMPL_FUNC().