MFEM  v4.3.0
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
mfem::Geometry Class Reference

#include <geom.hpp>

Classes

struct  Constants
 
struct  Constants< Geometry::CUBE >
 
struct  Constants< Geometry::POINT >
 
struct  Constants< Geometry::PRISM >
 
struct  Constants< Geometry::SEGMENT >
 
struct  Constants< Geometry::SQUARE >
 
struct  Constants< Geometry::TETRAHEDRON >
 
struct  Constants< Geometry::TRIANGLE >
 

Public Types

enum  Type {
  INVALID = -1, POINT = 0, SEGMENT, TRIANGLE,
  SQUARE, TETRAHEDRON, CUBE, PRISM,
  NUM_GEOMETRIES
}
 

Public Member Functions

 Geometry ()
 
 ~Geometry ()
 
const IntegrationRuleGetVertices (int GeomType)
 Return an IntegrationRule consisting of all vertices of the given Geometry::Type, GeomType. More...
 
const IntegrationPointGetCenter (int GeomType)
 Return the center of the given Geometry::Type, GeomType. More...
 
const DenseMatrixGetGeomToPerfGeomJac (int GeomType) const
 
DenseMatrixGetPerfGeomToGeomJac (int GeomType)
 
void GetPerfPointMat (int GeomType, DenseMatrix &pm)
 
void JacToPerfJac (int GeomType, const DenseMatrix &J, DenseMatrix &PJ) const
 
int NumBdr (int GeomType)
 Return the number of boundary "faces" of a given Geometry::Type. More...
 

Static Public Member Functions

static void GetRandomPoint (int GeomType, IntegrationPoint &ip)
 Get a random point in the reference element specified by GeomType. More...
 
static bool CheckPoint (int GeomType, const IntegrationPoint &ip)
 Check if the given point is inside the given reference element. More...
 
static bool CheckPoint (int GeomType, const IntegrationPoint &ip, double eps)
 Check if the given point is inside the given reference element. Overload for fuzzy tolerance. More...
 
static bool ProjectPoint (int GeomType, const IntegrationPoint &beg, IntegrationPoint &end)
 Project a point end, onto the given Geometry::Type, GeomType. More...
 
static bool ProjectPoint (int GeomType, IntegrationPoint &ip)
 Project a point ip, onto the given Geometry::Type, GeomType. More...
 
static bool IsTensorProduct (Type geom)
 
static Type TensorProductGeometry (int dim)
 

Static Public Attributes

static const int NumGeom = NUM_GEOMETRIES
 
static const int MaxDim = 3
 
static const int NumBdrArray [NumGeom] = { 0, 2, 3, 4, 4, 6, 5 }
 
static const char * Name [NumGeom]
 
static const double Volume [NumGeom]
 
static const int Dimension [NumGeom] = { 0, 1, 2, 2, 3, 3, 3 }
 
static const int DimStart [MaxDim+2]
 
static const int NumVerts [NumGeom] = { 1, 2, 3, 4, 4, 8, 6 }
 
static const int NumEdges [NumGeom] = { 0, 1, 3, 4, 6, 12, 9 }
 
static const int NumFaces [NumGeom] = { 0, 0, 1, 1, 4, 6, 5 }
 

Detailed Description

Types of domains for integration rules and reference finite elements: Geometry::POINT - a point Geometry::SEGMENT - the interval [0,1] Geometry::TRIANGLE - triangle with vertices (0,0), (1,0), (0,1) Geometry::SQUARE - the unit square (0,1)x(0,1) Geometry::TETRAHEDRON - w/ vert. (0,0,0),(1,0,0),(0,1,0),(0,0,1) Geometry::CUBE - the unit cube Geometry::PRISM - w/ vert. (0,0,0),(1,0,0),(0,1,0),(0,0,1),(1,0,1),(0,1,1)

Definition at line 31 of file geom.hpp.

Member Enumeration Documentation

Enumerator
INVALID 
POINT 
SEGMENT 
TRIANGLE 
SQUARE 
TETRAHEDRON 
CUBE 
PRISM 
NUM_GEOMETRIES 

Definition at line 34 of file geom.hpp.

Constructor & Destructor Documentation

mfem::Geometry::Geometry ( )

Definition at line 24 of file geom.cpp.

mfem::Geometry::~Geometry ( )

Definition at line 215 of file geom.cpp.

Member Function Documentation

bool mfem::Geometry::CheckPoint ( int  GeomType,
const IntegrationPoint ip 
)
static

Check if the given point is inside the given reference element.

Definition at line 345 of file geom.cpp.

bool mfem::Geometry::CheckPoint ( int  GeomType,
const IntegrationPoint ip,
double  eps 
)
static

Check if the given point is inside the given reference element. Overload for fuzzy tolerance.

Definition at line 380 of file geom.cpp.

const IntegrationPoint& mfem::Geometry::GetCenter ( int  GeomType)
inline

Return the center of the given Geometry::Type, GeomType.

Definition at line 70 of file geom.hpp.

const DenseMatrix& mfem::Geometry::GetGeomToPerfGeomJac ( int  GeomType) const
inline

Definition at line 97 of file geom.hpp.

DenseMatrix* mfem::Geometry::GetPerfGeomToGeomJac ( int  GeomType)
inline

Definition at line 99 of file geom.hpp.

void mfem::Geometry::GetPerfPointMat ( int  GeomType,
DenseMatrix pm 
)

Definition at line 661 of file geom.cpp.

void mfem::Geometry::GetRandomPoint ( int  GeomType,
IntegrationPoint ip 
)
static

Get a random point in the reference element specified by GeomType.

This method uses the function rand() for random number generation.

Definition at line 244 of file geom.cpp.

const IntegrationRule * mfem::Geometry::GetVertices ( int  GeomType)

Return an IntegrationRule consisting of all vertices of the given Geometry::Type, GeomType.

Definition at line 225 of file geom.cpp.

static bool mfem::Geometry::IsTensorProduct ( Type  geom)
inlinestatic

Returns true if the given geom is of tensor-product type (i.e. if geom is a segment, quadrilateral, or hexahedron), returns false otherwise.

Definition at line 107 of file geom.hpp.

void mfem::Geometry::JacToPerfJac ( int  GeomType,
const DenseMatrix J,
DenseMatrix PJ 
) const

Definition at line 734 of file geom.cpp.

int mfem::Geometry::NumBdr ( int  GeomType)
inline

Return the number of boundary "faces" of a given Geometry::Type.

Definition at line 125 of file geom.hpp.

bool mfem::Geometry::ProjectPoint ( int  GeomType,
const IntegrationPoint beg,
IntegrationPoint end 
)
static

Project a point end, onto the given Geometry::Type, GeomType.

Check if the end point is inside the reference element, if not overwrite it with the point on the boundary that lies on the line segment between beg and end (beg must be inside the element). Return true if end is inside the element, and false otherwise.

Definition at line 508 of file geom.cpp.

bool mfem::Geometry::ProjectPoint ( int  GeomType,
IntegrationPoint ip 
)
static

Project a point ip, onto the given Geometry::Type, GeomType.

If ip is outside the element, replace it with the point on the boundary that is closest to the original ip and return false; otherwise, return true without changing ip.

Definition at line 565 of file geom.cpp.

static Type mfem::Geometry::TensorProductGeometry ( int  dim)
inlinestatic

Returns the Geometry::Type corresponding to a tensor-product of the given dimension.

Definition at line 112 of file geom.hpp.

Member Data Documentation

const int mfem::Geometry::Dimension = { 0, 1, 2, 2, 3, 3, 3 }
static

Definition at line 46 of file geom.hpp.

const int mfem::Geometry::DimStart
static
Initial value:

Definition at line 47 of file geom.hpp.

const int mfem::Geometry::MaxDim = 3
static

Definition at line 42 of file geom.hpp.

const char * mfem::Geometry::Name
static
Initial value:
=
{ "Point", "Segment", "Triangle", "Square", "Tetrahedron", "Cube", "Prism" }

Definition at line 44 of file geom.hpp.

const int mfem::Geometry::NumBdrArray = { 0, 2, 3, 4, 4, 6, 5 }
static

Definition at line 43 of file geom.hpp.

const int mfem::Geometry::NumEdges = { 0, 1, 3, 4, 6, 12, 9 }
static

Definition at line 49 of file geom.hpp.

const int mfem::Geometry::NumFaces = { 0, 0, 1, 1, 4, 6, 5 }
static

Definition at line 50 of file geom.hpp.

const int mfem::Geometry::NumGeom = NUM_GEOMETRIES
static

Definition at line 41 of file geom.hpp.

const int mfem::Geometry::NumVerts = { 1, 2, 3, 4, 4, 8, 6 }
static

Definition at line 48 of file geom.hpp.

const double mfem::Geometry::Volume
static
Initial value:
=
{ 1.0, 1.0, 0.5, 1.0, 1./6, 1.0, 0.5 }

Definition at line 45 of file geom.hpp.


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