Nektar++
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Nektar::SpatialDomains::Geometry Class Reference

Base class for shape geometry information. More...

#include <Geometry.h>

Inheritance diagram for Nektar::SpatialDomains::Geometry:
[legend]

Public Member Functions

 Geometry ()
 Default constructor.
 
 Geometry (int coordim)
 Constructor when supplied a coordinate dimension.
 
virtual ~Geometry ()=default
 
int GetCoordim () const
 Return the coordinate dimension of this object (i.e. the dimension of the space in which this object is embedded).
 
void SetCoordim (int coordim)
 Sets the coordinate dimension of this object (i.e. the dimension of the space in which this object is embedded).
 
GeomFactorsUniquePtr GenGeomFactors (LibUtilities::PointsKeyVector &keyTgt)
 Used by Expansion to generate associated GeomFactors.
 
LibUtilities::ShapeType GetShapeType (void)
 Get the geometric shape type of this object.
 
int GetGlobalID (void) const
 Get the ID of this object.
 
void SetGlobalID (int globalid)
 Set the ID of this object.
 
int GetVid (int i) const
 Returns global id of vertex i of this object.
 
int GetEid (int i) const
 Get the ID of edge i of this object.
 
int GetFid (int i) const
 Get the ID of face i of this object.
 
int GetTid (int i) const
 Get the ID of trace i of this object.
 
PointGeomGetVertex (int i) const
 Returns vertex i of this object.
 
Geometry1DGetEdge (int i) const
 Returns edge i of this object.
 
Geometry2DGetFace (int i) const
 Returns face i of this object.
 
StdRegions::Orientation GetEorient (const int i) const
 Returns the orientation of edge i with respect to the ordering of edges in the standard element.
 
StdRegions::Orientation GetForient (const int i) const
 Returns the orientation of face i with respect to the ordering of faces in the standard element.
 
int GetNumVerts () const
 Get the number of vertices of this object.
 
int GetNumEdges () const
 Get the number of edges of this object.
 
int GetNumFaces () const
 Get the number of faces of this object.
 
int GetShapeDim () const
 Get the object's shape dimension.
 
StdRegions::StdExpansionSharedPtr GetXmap () const
 Return the mapping object Geometry::m_xmap that represents the coordinate transformation from standard element to physical element.
 
const Array< OneD, const NekDouble > & GetCoeffs (const int i) const
 Return the coefficients of the transformation Geometry::m_xmap in coordinate direction i.
 
void FillGeom ()
 Populate the coordinate mapping Geometry::m_coeffs information from any children geometry elements.
 
std::array< NekDouble, 6 > GetBoundingBox ()
 Generates the bounding box for the element.
 
void ClearBoundingBox ()
 
bool ContainsPoint (const Array< OneD, const NekDouble > &gloCoord, NekDouble tol=0.0)
 Determine whether an element contains a particular Cartesian coordinate \((x,y,z)\).
 
bool ContainsPoint (const Array< OneD, const NekDouble > &gloCoord, Array< OneD, NekDouble > &locCoord, NekDouble tol)
 Determine whether an element contains a particular Cartesian coordinate \((x,y,z)\).
 
bool ContainsPoint (const Array< OneD, const NekDouble > &gloCoord, Array< OneD, NekDouble > &locCoord, NekDouble tol, NekDouble &dist)
 Determine whether an element contains a particular Cartesian coordinate \(\vec{x} = (x,y,z)\).
 
NekDouble GetLocCoords (const Array< OneD, const NekDouble > &coords, Array< OneD, NekDouble > &Lcoords)
 Determine the local collapsed coordinates that correspond to a given Cartesian coordinate for this geometry object.
 
NekDouble GetCoord (const int i, const Array< OneD, const NekDouble > &Lcoord)
 Given local collapsed coordinate Lcoord, return the value of physical coordinate in direction i.
 
int PreliminaryCheck (const Array< OneD, const NekDouble > &gloCoord)
 A fast and robust check if a given global coord is outside of a deformed element. For regular elements, this check is unnecessary.
 
bool MinMaxCheck (const Array< OneD, const NekDouble > &gloCoord)
 Check if given global coord is within the BoundingBox of the element.
 
bool ClampLocCoords (Array< OneD, NekDouble > &locCoord, NekDouble tol=std::numeric_limits< NekDouble >::epsilon())
 Clamp local coords to be within standard regions [-1, 1]^dim.
 
NekDouble FindDistance (const Array< OneD, const NekDouble > &xs, Array< OneD, NekDouble > &xi)
 
int GetVertexEdgeMap (int i, int j) const
 Returns the standard element edge IDs that are connected to a given vertex.
 
int GetVertexFaceMap (int i, int j) const
 Returns the standard element face IDs that are connected to a given vertex.
 
int GetEdgeFaceMap (int i, int j) const
 Returns the standard element edge IDs that are connected to a given face.
 
int GetEdgeNormalToFaceVert (int i, int j) const
 Returns the standard lement edge IDs that are normal to a given face vertex.
 
int GetDir (const int i, const int j=0) const
 Returns the element coordinate direction corresponding to a given face coordinate direction.
 
GeomType CalcGeomType ()
 
void Reset (CurveMap &curvedEdges, CurveMap &curvedFaces)
 Reset this geometry object: unset the current state, zero Geometry::m_coeffs and remove allocated GeomFactors.
 
void ResetNonRecursive (CurveMap &curvedEdges, CurveMap &curvedFaces)
 Reset this geometry object non-recursively: unset the current state, zero Geometry::m_coeffs and remove allocated GeomFactors.
 
void Setup ()
 

Protected Member Functions

virtual int v_GetVid (int i) const
 Get the ID of vertex i of this object.
 
virtual PointGeomv_GetVertex (const int i) const
 Returns vertex i of this object.
 
virtual Geometry1Dv_GetEdge (const int i) const
 Returns edge i of this object.
 
virtual Geometry2Dv_GetFace (const int i) const
 Returns face i of this object.
 
virtual StdRegions::Orientation v_GetEorient (const int i) const
 Returns the orientation of edge i with respect to the ordering of edges in the standard element.
 
virtual StdRegions::Orientation v_GetForient (const int i) const
 Returns the orientation of face i with respect to the ordering of faces in the standard element.
 
virtual int v_GetNumVerts () const
 Get the number of vertices of this object.
 
virtual int v_GetNumEdges () const
 Get the number of edges of this object.
 
virtual int v_GetNumFaces () const
 Get the number of faces of this object.
 
virtual int v_GetShapeDim () const
 Get the object's shape dimension.
 
virtual GeomFactorsUniquePtr v_GenGeomFactors (LibUtilities::PointsKeyVector &keyTgt)
 Used by Expansion to generate associated GeomFactors.
 
virtual StdRegions::StdExpansionSharedPtr v_GetXmap () const
 Return the mapping object Geometry::m_xmap that represents the coordinate transformation from standard element to physical element.
 
virtual void v_FillGeom ()
 Populate the coordinate mapping Geometry::m_coeffs information from any children geometry elements.
 
virtual bool v_ContainsPoint (const Array< OneD, const NekDouble > &gloCoord, Array< OneD, NekDouble > &locCoord, NekDouble tol, NekDouble &dist)
 Determine whether an element contains a particular Cartesian coordinate \(\vec{x} = (x,y,z)\).
 
virtual int v_AllLeftCheck (const Array< OneD, const NekDouble > &gloCoord)
 
virtual NekDouble v_GetCoord (const int i, const Array< OneD, const NekDouble > &Lcoord)
 Given local collapsed coordinate Lcoord, return the value of physical coordinate in direction i.
 
virtual NekDouble v_GetLocCoords (const Array< OneD, const NekDouble > &coords, Array< OneD, NekDouble > &Lcoords)
 Determine the local collapsed coordinates that correspond to a given Cartesian coordinate for this geometry object.
 
virtual NekDouble v_FindDistance (const Array< OneD, const NekDouble > &xs, Array< OneD, NekDouble > &xi)
 
virtual int v_GetVertexEdgeMap (int i, int j) const
 Returns the standard element edge IDs that are connected to a given vertex.
 
virtual int v_GetVertexFaceMap (int i, int j) const
 Returns the standard element face IDs that are connected to a given vertex.
 
virtual int v_GetEdgeFaceMap (int i, int j) const
 Returns the standard element edge IDs that are connected to a given face.
 
virtual int v_GetEdgeNormalToFaceVert (const int i, const int j) const
 Returns the standard lement edge IDs that are normal to a given face vertex.
 
virtual int v_GetDir (const int faceidx, const int facedir) const
 Returns the element coordinate direction corresponding to a given face coordinate direction.
 
virtual GeomType v_CalcGeomType ()
 
virtual void v_Reset (CurveMap &curvedEdges, CurveMap &curvedFaces)
 Reset this geometry object: unset the current state, zero Geometry::m_coeffs and remove allocated GeomFactors.
 
virtual void v_Setup ()
 
void SetUpCoeffs (const int nCoeffs)
 Initialise the Geometry::m_coeffs array.
 
virtual void v_CalculateInverseIsoParam ()
 

Protected Attributes

int m_coordim
 Coordinate dimension of this geometry object.
 
StdRegions::StdExpansionSharedPtr m_xmap
 \(\chi\) mapping containing isoparametric transformation.
 
GeomState m_state
 Enumeration to dictate whether coefficients are filled.
 
bool m_setupState
 Wether or not the setup routines have been run.
 
LibUtilities::ShapeType m_shapeType
 Type of shape.
 
int m_globalID
 Global ID.
 
std::vector< Array< OneD, NekDouble > > m_coeffs
 Array containing expansion coefficients of m_xmap.
 
Array< OneD, NekDoublem_boundingBox
 Array containing bounding box.
 
Array< OneD, Array< OneD, NekDouble > > m_isoParameter
 
Array< OneD, Array< OneD, NekDouble > > m_invIsoParam
 
int m_straightEdge
 

Detailed Description

Base class for shape geometry information.

Definition at line 83 of file Geometry.h.

Constructor & Destructor Documentation

◆ Geometry() [1/2]

Nektar::SpatialDomains::Geometry::Geometry ( )

Default constructor.

Definition at line 47 of file Geometry.cpp.

50{
51}
bool m_setupState
Wether or not the setup routines have been run.
Definition Geometry.h:190
GeomState m_state
Enumeration to dictate whether coefficients are filled.
Definition Geometry.h:188
LibUtilities::ShapeType m_shapeType
Type of shape.
Definition Geometry.h:192
int m_coordim
Coordinate dimension of this geometry object.
Definition Geometry.h:184
@ eNotFilled
Geometric information has not been generated.

◆ Geometry() [2/2]

Nektar::SpatialDomains::Geometry::Geometry ( int  coordim)

Constructor when supplied a coordinate dimension.

Definition at line 56 of file Geometry.cpp.

◆ ~Geometry()

virtual Nektar::SpatialDomains::Geometry::~Geometry ( )
virtualdefault

Member Function Documentation

◆ CalcGeomType()

GeomType Nektar::SpatialDomains::Geometry::CalcGeomType ( )
inline

◆ ClampLocCoords()

bool Nektar::SpatialDomains::Geometry::ClampLocCoords ( Array< OneD, NekDouble > &  locCoord,
NekDouble  tol = std::numeric_limits<NekDouble>::epsilon() 
)

Clamp local coords to be within standard regions [-1, 1]^dim.

Parameters
LcoordsCorresponding local coordinates

Definition at line 525 of file Geometry.cpp.

526{
527 // Validation checks
528 ASSERTL1(locCoord.size() >= GetShapeDim(),
529 "Expects local coordinates to be same or "
530 "larger than shape dimension.");
531
532 // If out of range clamp locCoord to be within [-1,1]^dim
533 // since any larger value will be very oscillatory if
534 // called by 'returnNearestElmt' option in
535 // ExpList::GetExpIndex
536 bool clamp = false;
537 for (int i = 0; i < GetShapeDim(); ++i)
538 {
539 if (!std::isfinite(locCoord[i]))
540 {
541 locCoord[i] = 0.;
542 clamp = true;
543 }
544 else if (locCoord[i] < -(1. + tol))
545 {
546 locCoord[i] = -(1. + tol);
547 clamp = true;
548 }
549 else if (locCoord[i] > (1. + tol))
550 {
551 locCoord[i] = 1. + tol;
552 clamp = true;
553 }
554 }
555 return clamp;
556}
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
int GetShapeDim() const
Get the object's shape dimension.
Definition Geometry.h:422

References ASSERTL1, and GetShapeDim().

Referenced by Nektar::SpatialDomains::Geometry2D::NewtonIterationForLocCoord(), Nektar::SpatialDomains::Geometry3D::NewtonIterationForLocCoord(), Nektar::FieldUtils::ProcessWallNormalData::NewtonIterForLocCoordOnBndElmt(), v_ContainsPoint(), Nektar::SpatialDomains::Geometry2D::v_FindDistance(), Nektar::SpatialDomains::SegGeom::v_FindDistance(), Nektar::SpatialDomains::Geometry2D::v_GetLocCoords(), and Nektar::SpatialDomains::Geometry3D::v_GetLocCoords().

◆ ClearBoundingBox()

void Nektar::SpatialDomains::Geometry::ClearBoundingBox ( )

Definition at line 462 of file Geometry.cpp.

463{
464 m_boundingBox = {};
465}
Array< OneD, NekDouble > m_boundingBox
Array containing bounding box.
Definition Geometry.h:198

References m_boundingBox.

◆ ContainsPoint() [1/3]

bool Nektar::SpatialDomains::Geometry::ContainsPoint ( const Array< OneD, const NekDouble > &  gloCoord,
Array< OneD, NekDouble > &  locCoord,
NekDouble  tol 
)
inline

Determine whether an element contains a particular Cartesian coordinate \((x,y,z)\).

See also
Geometry::ContainsPoint

Definition at line 486 of file Geometry.h.

489{
490 NekDouble dist;
491 return v_ContainsPoint(gloCoord, locCoord, tol, dist);
492}
virtual bool v_ContainsPoint(const Array< OneD, const NekDouble > &gloCoord, Array< OneD, NekDouble > &locCoord, NekDouble tol, NekDouble &dist)
Determine whether an element contains a particular Cartesian coordinate .
Definition Geometry.cpp:231

References v_ContainsPoint().

◆ ContainsPoint() [2/3]

bool Nektar::SpatialDomains::Geometry::ContainsPoint ( const Array< OneD, const NekDouble > &  gloCoord,
Array< OneD, NekDouble > &  locCoord,
NekDouble  tol,
NekDouble dist 
)
inline

Determine whether an element contains a particular Cartesian coordinate \(\vec{x} = (x,y,z)\).

For curvilinear and non-affine elements (i.e. where the Jacobian varies as a function of the standard element coordinates), this is a non-linear optimisation problem that requires the use of a Newton iteration. Note therefore that this can be an expensive operation.

The parameter tol which is by default 0, can be used to expand the coordinate range of the standard element from \([-1,1]^d\) to \([-1-\epsilon,1+\epsilon\) to handle challenging edge cases. The function also returns the local coordinates corresponding to gloCoord that can be used to speed up subsequent searches.

Parameters
gloCoordThe coordinate \( (x,y,z) \).
locCoordOn exit, this is the local coordinate \(\vec{\xi}\) such that \(\chi(\vec{\xi}) = \vec{x}\).
tolThe tolerance used to dictate the bounding box of the standard coordinates \(\vec{\xi}\).
distOn exit, returns the minimum distance between gloCoord and the quadrature points inside the element.
Returns
true if the coordinate gloCoord is contained in the element; false otherwise.
See also
Geometry::GetLocCoords.

Definition at line 522 of file Geometry.h.

525{
526 return v_ContainsPoint(gloCoord, locCoord, tol, dist);
527}

References v_ContainsPoint().

◆ ContainsPoint() [3/3]

bool Nektar::SpatialDomains::Geometry::ContainsPoint ( const Array< OneD, const NekDouble > &  gloCoord,
NekDouble  tol = 0.0 
)
inline

Determine whether an element contains a particular Cartesian coordinate \((x,y,z)\).

See also
Geometry::ContainsPoint

Definition at line 472 of file Geometry.h.

474{
475 Array<OneD, NekDouble> locCoord(GetCoordim(), 0.0);
476 NekDouble dist;
477 return v_ContainsPoint(gloCoord, locCoord, tol, dist);
478}
int GetCoordim() const
Return the coordinate dimension of this object (i.e. the dimension of the space in which this object ...
Definition Geometry.h:277

References GetCoordim(), and v_ContainsPoint().

Referenced by Geometry_ContainsPoint().

◆ FillGeom()

void Nektar::SpatialDomains::Geometry::FillGeom ( )
inline

Populate the coordinate mapping Geometry::m_coeffs information from any children geometry elements.

See also
v_FillGeom()

Definition at line 461 of file Geometry.h.

462{
463 v_FillGeom();
464}
virtual void v_FillGeom()
Populate the coordinate mapping Geometry::m_coeffs information from any children geometry elements.
Definition Geometry.cpp:357

References v_FillGeom().

Referenced by export_Geometry(), Nektar::LocalRegions::HexExp::v_GetCoord(), Nektar::LocalRegions::PrismExp::v_GetCoord(), Nektar::LocalRegions::QuadExp::v_GetCoord(), Nektar::LocalRegions::SegExp::v_GetCoord(), Nektar::LocalRegions::TriExp::v_GetCoord(), and Nektar::LocalRegions::Expansion::v_GetCoords().

◆ FindDistance()

NekDouble Nektar::SpatialDomains::Geometry::FindDistance ( const Array< OneD, const NekDouble > &  xs,
Array< OneD, NekDouble > &  xi 
)
inline

Definition at line 565 of file Geometry.h.

567{
568 return v_FindDistance(xs, xi);
569}
virtual NekDouble v_FindDistance(const Array< OneD, const NekDouble > &xs, Array< OneD, NekDouble > &xi)
Definition Geometry.cpp:266

References v_FindDistance().

◆ GenGeomFactors()

GeomFactorsUniquePtr Nektar::SpatialDomains::Geometry::GenGeomFactors ( LibUtilities::PointsKeyVector keyTgt)
inline

Used by Expansion to generate associated GeomFactors.

Definition at line 430 of file Geometry.h.

432{
433 return v_GenGeomFactors(keyTgt);
434}
virtual GeomFactorsUniquePtr v_GenGeomFactors(LibUtilities::PointsKeyVector &keyTgt)
Used by Expansion to generate associated GeomFactors.
Definition Geometry.cpp:197

References v_GenGeomFactors().

Referenced by Nektar::LocalRegions::Expansion::GenGeomFactors(), Geometry_GenGeomFactors(), Geometry_IsValid(), Nektar::SpatialDomains::Geometry3D::NewtonIterationForLocCoord(), Nektar::SpatialDomains::Geometry3D::NewtonIterationForLocCoord(), and Nektar::FieldUtils::ProcessWallNormalData::NewtonIterForLocCoordOnBndElmt().

◆ GetBoundingBox()

std::array< NekDouble, 6 > Nektar::SpatialDomains::Geometry::GetBoundingBox ( )

Generates the bounding box for the element.

For regular elements, the vertices are sufficient to define the extent of the bounding box. For non-regular elements, the extremes of the quadrature point coordinates are used. A 10% margin is added around this computed region to account for convex hull elements where the true extent of the element may extend slightly beyond the quadrature points.

Definition at line 388 of file Geometry.cpp.

389{
390 if (m_boundingBox.size() == 6)
391 {
392 return {{m_boundingBox[0], m_boundingBox[1], m_boundingBox[2],
394 }
395 // NekDouble minx, miny, minz, maxx, maxy, maxz;
396 Array<OneD, NekDouble> min(3), max(3);
397
398 // Always get vertexes min/max
399 PointGeom *p = GetVertex(0);
400 Array<OneD, NekDouble> x(3, 0.0);
401 p->GetCoords(x[0], x[1], x[2]);
402 for (int j = 0; j < 3; ++j)
403 {
404 min[j] = x[j];
405 max[j] = x[j];
406 }
407 for (int i = 1; i < GetNumVerts(); ++i)
408 {
409 p = GetVertex(i);
410 p->GetCoords(x[0], x[1], x[2]);
411 for (int j = 0; j < 3; ++j)
412 {
413 min[j] = (x[j] < min[j] ? x[j] : min[j]);
414 max[j] = (x[j] > max[j] ? x[j] : max[j]);
415 }
416 }
417 // If element is deformed loop over quadrature points
419 if (CalcGeomType() != eRegular)
420 {
421 marginFactor = 0.1;
422 const int nq = GetXmap()->GetTotPoints();
423 Array<OneD, Array<OneD, NekDouble>> xvec(3);
424 for (int j = 0; j < 3; ++j)
425 {
426 xvec[j] = Array<OneD, NekDouble>(nq, 0.0);
427 }
428 for (int j = 0; j < GetCoordim(); ++j)
429 {
430 GetXmap()->BwdTrans(m_coeffs[j], xvec[j]);
431 }
432 for (int j = 0; j < 3; ++j)
433 {
434 for (int i = 0; i < nq; ++i)
435 {
436 min[j] = (xvec[j][i] < min[j] ? xvec[j][i] : min[j]);
437 max[j] = (xvec[j][i] > max[j] ? xvec[j][i] : max[j]);
438 }
439 }
440 }
441 // Add margin to bounding box, in order to
442 // return the nearest element
443 for (int j = 0; j < 3; ++j)
444 {
445 NekDouble margin =
446 marginFactor * (max[j] - min[j]) + NekConstants::kFindDistanceMin;
447 min[j] -= margin;
448 max[j] += margin;
449 }
450
451 // save bounding box
452 m_boundingBox = Array<OneD, NekDouble>(6);
453 for (int j = 0; j < 3; ++j)
454 {
455 m_boundingBox[j] = min[j];
456 m_boundingBox[j + 3] = max[j];
457 }
458 // Return bounding box
459 return {{min[0], min[1], min[2], max[0], max[1], max[2]}};
460}
PointGeom * GetVertex(int i) const
Returns vertex i of this object.
Definition Geometry.h:353
std::vector< Array< OneD, NekDouble > > m_coeffs
Array containing expansion coefficients of m_xmap.
Definition Geometry.h:196
StdRegions::StdExpansionSharedPtr GetXmap() const
Return the mapping object Geometry::m_xmap that represents the coordinate transformation from standar...
Definition Geometry.h:440
int GetNumVerts() const
Get the number of vertices of this object.
Definition Geometry.h:395
static const NekDouble kGeomFactorsTol
static const NekDouble kFindDistanceMin
@ eRegular
Geometry is straight-sided with constant geometric factors.
std::vector< double > p(NPUPPER)
scalarT< T > max(scalarT< T > lhs, scalarT< T > rhs)
Definition scalar.hpp:305
scalarT< T > min(scalarT< T > lhs, scalarT< T > rhs)
Definition scalar.hpp:300

References CalcGeomType(), Nektar::SpatialDomains::eRegular, GetCoordim(), GetNumVerts(), GetVertex(), GetXmap(), Nektar::NekConstants::kFindDistanceMin, Nektar::NekConstants::kGeomFactorsTol, m_boundingBox, m_coeffs, tinysimd::max(), and tinysimd::min().

Referenced by Nektar::SpatialDomains::MeshGraph::GeomRTree::InsertGeom(), and MinMaxCheck().

◆ GetCoeffs()

const Array< OneD, const NekDouble > & Nektar::SpatialDomains::Geometry::GetCoeffs ( const int  i) const
inline

◆ GetCoord()

NekDouble Nektar::SpatialDomains::Geometry::GetCoord ( const int  i,
const Array< OneD, const NekDouble > &  Lcoord 
)
inline

Given local collapsed coordinate Lcoord, return the value of physical coordinate in direction i.

Definition at line 559 of file Geometry.h.

561{
562 return v_GetCoord(i, Lcoord);
563}
virtual NekDouble v_GetCoord(const int i, const Array< OneD, const NekDouble > &Lcoord)
Given local collapsed coordinate Lcoord, return the value of physical coordinate in direction i.
Definition Geometry.cpp:333

References v_GetCoord().

Referenced by Nektar::SpatialDomains::Geometry2D::v_FindDistance(), Nektar::SpatialDomains::SegGeom::v_FindDistance(), Nektar::LocalRegions::HexExp::v_GetCoord(), Nektar::LocalRegions::PrismExp::v_GetCoord(), Nektar::LocalRegions::PyrExp::v_GetCoord(), Nektar::LocalRegions::QuadExp::v_GetCoord(), Nektar::LocalRegions::SegExp::v_GetCoord(), Nektar::LocalRegions::TetExp::v_GetCoord(), and Nektar::LocalRegions::TriExp::v_GetCoord().

◆ GetCoordim()

int Nektar::SpatialDomains::Geometry::GetCoordim ( ) const
inline

◆ GetDir()

int Nektar::SpatialDomains::Geometry::GetDir ( const int  i,
const int  j = 0 
) const
inline

Returns the element coordinate direction corresponding to a given face coordinate direction.

Definition at line 662 of file Geometry.h.

663{
664 return v_GetDir(faceidx, facedir);
665}
virtual int v_GetDir(const int faceidx, const int facedir) const
Returns the element coordinate direction corresponding to a given face coordinate direction.
Definition Geometry.cpp:322

References v_GetDir().

Referenced by Nektar::LocalRegions::Expansion3D::v_GetLocTracePhysVals(), Nektar::LocalRegions::Expansion2D::v_TraceNormLen(), and Nektar::LocalRegions::Expansion3D::v_TraceNormLen().

◆ GetEdge()

Geometry1D * Nektar::SpatialDomains::Geometry::GetEdge ( int  i) const
inline

◆ GetEdgeFaceMap()

int Nektar::SpatialDomains::Geometry::GetEdgeFaceMap ( int  i,
int  j 
) const
inline

Returns the standard element edge IDs that are connected to a given face.

For example, on a prism, edge 0 is connnected to faces 0 and 1; GetEdgeFaceMap(0,j) would therefore return the values 0 and 1 respectively. We assume that j runs between 0 and 1 inclusive, since every face is connected to precisely two faces for all 3D elements.

This function is used in the construction of the low-energy preconditioner.

Parameters
iThe edge to query connectivity for.
jThe local face index between 0 and 1 connected to this element.
See also
MultiRegions::PreconditionerLowEnergy

Definition at line 631 of file Geometry.h.

632{
633 return v_GetEdgeFaceMap(i, j);
634}
virtual int v_GetEdgeFaceMap(int i, int j) const
Returns the standard element edge IDs that are connected to a given face.
Definition Geometry.cpp:300

References v_GetEdgeFaceMap().

Referenced by Nektar::LocalRegions::Expansion3D::v_BuildTransformationMatrix().

◆ GetEdgeNormalToFaceVert()

int Nektar::SpatialDomains::Geometry::GetEdgeNormalToFaceVert ( int  i,
int  j 
) const
inline

Returns the standard lement edge IDs that are normal to a given face vertex.

For example, on a hexahedron, on face 0 at vertices 0,1,2,3 the edges normal to that face are 4,5,6,7, ; so GetEdgeNormalToFaceVert(0,j) would therefore return the values 4, 5, 6 and 7 respectively. We assume that j runs between 0 and 3 inclusive on a quadrilateral face and between 0 and 2 inclusive on a triangular face.

This is used to help set up a length scale normal to an face

Parameters
iThe face to query for the normal edge
jThe local vertex index between 0 and nverts on this face

Definition at line 653 of file Geometry.h.

654{
655 return v_GetEdgeNormalToFaceVert(i, j);
656}
virtual int v_GetEdgeNormalToFaceVert(const int i, const int j) const
Returns the standard lement edge IDs that are normal to a given face vertex.
Definition Geometry.cpp:311

References v_GetEdgeNormalToFaceVert().

Referenced by Nektar::LocalRegions::Expansion3D::v_TraceNormLen().

◆ GetEid()

int Nektar::SpatialDomains::Geometry::GetEid ( int  i) const

◆ GetEorient()

StdRegions::Orientation Nektar::SpatialDomains::Geometry::GetEorient ( const int  i) const
inline

Returns the orientation of edge i with respect to the ordering of edges in the standard element.

Definition at line 378 of file Geometry.h.

379{
380 return v_GetEorient(i);
381}
virtual StdRegions::Orientation v_GetEorient(const int i) const
Returns the orientation of edge i with respect to the ordering of edges in the standard element.
Definition Geometry.cpp:139

References v_GetEorient().

Referenced by export_Geometry(), Nektar::MultiRegions::DisContField::FindPeriodicTraces(), Nektar::LocalRegions::Expansion3D::GetEdgeInverseBoundaryMap(), Nektar::LocalRegions::Expansion2D::GetTraceInverseBoundaryMap(), Nektar::GlobalMapping::UpdateGeometry(), Nektar::LocalRegions::QuadExp::v_GetTraceOrient(), and Nektar::LocalRegions::TriExp::v_GetTraceOrient().

◆ GetFace()

Geometry2D * Nektar::SpatialDomains::Geometry::GetFace ( int  i) const
inline

Returns face i of this object.

Definition at line 369 of file Geometry.h.

370{
371 return v_GetFace(i);
372}
virtual Geometry2D * v_GetFace(const int i) const
Returns face i of this object.
Definition Geometry.cpp:119

References v_GetFace().

Referenced by export_Geometry(), GetFid(), Nektar::SpatialDomains::MeshGraph::PopulateFaceToElMap(), Nektar::GlobalMapping::UpdateGeometry(), Nektar::LocalRegions::Expansion3D::v_GenTraceExp(), and Nektar::LocalRegions::Expansion3D::v_TraceNormLen().

◆ GetFid()

int Nektar::SpatialDomains::Geometry::GetFid ( int  i) const

◆ GetForient()

StdRegions::Orientation Nektar::SpatialDomains::Geometry::GetForient ( const int  i) const
inline

Returns the orientation of face i with respect to the ordering of faces in the standard element.

Definition at line 387 of file Geometry.h.

388{
389 return v_GetForient(i);
390}
virtual StdRegions::Orientation v_GetForient(const int i) const
Returns the orientation of face i with respect to the ordering of faces in the standard element.
Definition Geometry.cpp:150

References v_GetForient().

Referenced by export_Geometry(), and Nektar::LocalRegions::Expansion3D::v_GetTraceOrient().

◆ GetGlobalID()

int Nektar::SpatialDomains::Geometry::GetGlobalID ( void  ) const
inline

Get the ID of this object.

Definition at line 314 of file Geometry.h.

315{
316 return m_globalID;
317}

References m_globalID.

Referenced by Nektar::SolverUtils::CouplingCwipi::AddElementsToMesh(), Nektar::MultiRegions::AssemblyMapDG::AssemblyMapDG(), CheckTetRotation(), Nektar::LocalRegions::Expansion::Expansion(), export_Geometry(), GenerateMapEidsv1v2(), Nektar::SpatialDomains::SegGeom::GenerateOneSpaceDimGeom(), Nektar::SpatialDomains::SegGeom::GetEdgeOrientation(), GetEid(), Nektar::SpatialDomains::MeshGraph::GetElementsFromEdge(), Nektar::SpatialDomains::MeshGraph::GetElementsFromFace(), Nektar::SpatialDomains::MeshGraph::GetExpansionInfo(), GetFid(), Nektar::FieldUtils::ProcessQualityMetric::GetQ(), Nektar::SpatialDomains::GlobalIdEquality(), Nektar::SpatialDomains::MeshGraph::GeomRTree::InsertGeom(), Nektar::SpatialDomains::LinearMeshGraph::LinMeshSetUpCompositesDomain(), main(), Nektar::SpatialDomains::Geometry3D::NewtonIterationForLocCoord(), Nektar::SpatialDomains::Geometry2D::NewtonIterationForLocCoord(), Nektar::SpatialDomains::Geometry3D::NewtonIterationForLocCoord(), Nektar::FieldUtils::ProcessWallNormalData::NewtonIterForLocCoordOnBndElmt(), Nektar::SpatialDomains::MeshGraph::PopulateFaceToElMap(), Nektar::SpatialDomains::MeshGraph::PRefinementElmts(), Nektar::PulseWaveSystem::SetUpDomainInterfaceBCs(), Nektar::SpatialDomains::HexGeom::SetUpEdgeOrientation(), Nektar::SpatialDomains::PrismGeom::SetUpEdgeOrientation(), Nektar::SpatialDomains::PyrGeom::SetUpEdgeOrientation(), Nektar::SpatialDomains::TetGeom::SetUpEdgeOrientation(), Nektar::SpatialDomains::HexGeom::SetUpFaceOrientation(), Nektar::SpatialDomains::PrismGeom::SetUpFaceOrientation(), Nektar::SpatialDomains::PyrGeom::SetUpFaceOrientation(), Nektar::SpatialDomains::TetGeom::SetUpFaceOrientation(), Nektar::SpatialDomains::HexGeom::SetUpLocalEdges(), Nektar::SpatialDomains::PrismGeom::SetUpLocalEdges(), Nektar::SpatialDomains::PyrGeom::SetUpLocalEdges(), Nektar::SpatialDomains::TetGeom::SetUpLocalEdges(), Nektar::SpatialDomains::HexGeom::SetUpLocalVertices(), Nektar::SpatialDomains::PrismGeom::SetUpLocalVertices(), Nektar::SpatialDomains::PyrGeom::SetUpLocalVertices(), Nektar::SpatialDomains::TetGeom::SetUpLocalVertices(), Nektar::MultiRegions::AssemblyMapDG::SetUpUniversalDGMap(), Nektar::SpatialDomains::SortByGlobalId(), Nektar::GlobalMapping::UpdateGeometry(), Nektar::LocalRegions::Expansion2D::v_AddEdgeNormBoundaryInt(), Nektar::LocalRegions::Expansion3D::v_AddFaceNormBoundaryInt(), Nektar::SpatialDomains::QuadGeom::v_AllLeftCheck(), Nektar::SpatialDomains::TriGeom::v_AllLeftCheck(), v_GetVid(), Nektar::SpatialDomains::WriteVert(), and Nektar::SpatialDomains::ZoneBase::ZoneBase().

◆ GetLocCoords()

NekDouble Nektar::SpatialDomains::Geometry::GetLocCoords ( const Array< OneD, const NekDouble > &  coords,
Array< OneD, NekDouble > &  Lcoords 
)
inline

Determine the local collapsed coordinates that correspond to a given Cartesian coordinate for this geometry object.

For curvilinear and non-affine elements (i.e. where the Jacobian varies as a function of the standard element coordinates), this is a non-linear optimisation problem that requires the use of a Newton iteration. Note therefore that this can be an expensive operation.

Note that, clearly, the provided Cartesian coordinate lie outside the element. The function therefore returns the minimum distance from some position in the element to . Lcoords will also be constrained to fit within the range \([-1,1]^d\) where \( d \) is the dimension of the element.

Parameters
coordsInput Cartesian global coordinates
LcoordsCorresponding local coordinates
Returns
Distance between obtained coordinates and provided ones.

Definition at line 549 of file Geometry.h.

551{
552 return v_GetLocCoords(coords, Lcoords);
553}
virtual NekDouble v_GetLocCoords(const Array< OneD, const NekDouble > &coords, Array< OneD, NekDouble > &Lcoords)
Determine the local collapsed coordinates that correspond to a given Cartesian coordinate for this ge...
Definition Geometry.cpp:345

References v_GetLocCoords().

Referenced by v_ContainsPoint(), Nektar::SpatialDomains::Geometry2D::v_FindDistance(), Nektar::SpatialDomains::SegGeom::v_FindDistance(), Nektar::LocalRegions::HexExp::v_PhysEvalFirstDeriv(), Nektar::LocalRegions::PrismExp::v_PhysEvalFirstDeriv(), Nektar::LocalRegions::PyrExp::v_PhysEvalFirstDeriv(), Nektar::LocalRegions::QuadExp::v_PhysEvalFirstDeriv(), Nektar::LocalRegions::SegExp::v_PhysEvalFirstDeriv(), Nektar::LocalRegions::TetExp::v_PhysEvalFirstDeriv(), Nektar::LocalRegions::TriExp::v_PhysEvalFirstDeriv(), Nektar::LocalRegions::SegExp::v_PhysEvalFirstSecondDeriv(), and Nektar::LocalRegions::Expansion::v_PhysEvaluate().

◆ GetNumEdges()

int Nektar::SpatialDomains::Geometry::GetNumEdges ( ) const
inline

Get the number of edges of this object.

Definition at line 403 of file Geometry.h.

404{
405 return v_GetNumEdges();
406}
virtual int v_GetNumEdges() const
Get the number of edges of this object.
Definition Geometry.cpp:161

References v_GetNumEdges().

Referenced by Nektar::SpatialDomains::MeshGraph::CheckRange(), export_Geometry(), Nektar::SpatialDomains::MeshGraph::GetElementsFromEdge(), and Nektar::SpatialDomains::MeshGraphIOXml::WriteXMLGeometry().

◆ GetNumFaces()

int Nektar::SpatialDomains::Geometry::GetNumFaces ( ) const
inline

Get the number of faces of this object.

Definition at line 411 of file Geometry.h.

412{
413 return v_GetNumFaces();
414}
virtual int v_GetNumFaces() const
Get the number of faces of this object.
Definition Geometry.cpp:169

References v_GetNumFaces().

Referenced by Nektar::SpatialDomains::MeshGraph::CheckRange(), export_Geometry(), and Nektar::SpatialDomains::MeshGraphIOXml::WriteXMLGeometry().

◆ GetNumVerts()

int Nektar::SpatialDomains::Geometry::GetNumVerts ( ) const
inline

◆ GetShapeDim()

int Nektar::SpatialDomains::Geometry::GetShapeDim ( ) const
inline

Get the object's shape dimension.

For example, a segment is one dimensional and quadrilateral is two dimensional.

Definition at line 422 of file Geometry.h.

423{
424 return v_GetShapeDim();
425}
virtual int v_GetShapeDim() const
Get the object's shape dimension.
Definition Geometry.cpp:177

References v_GetShapeDim().

Referenced by ClampLocCoords(), export_Geometry(), Nektar::SpatialDomains::MeshGraph::GetCompositeString(), Nektar::SpatialDomains::MeshGraphIO::GetCompositeString(), GetTid(), and v_ContainsPoint().

◆ GetShapeType()

LibUtilities::ShapeType Nektar::SpatialDomains::Geometry::GetShapeType ( void  )
inline

◆ GetTid()

int Nektar::SpatialDomains::Geometry::GetTid ( int  i) const
inline

Get the ID of trace i of this object.

The trace element is the facet one dimension lower than the object; for example, a quadrilateral has four trace segments forming its boundary.

Definition at line 333 of file Geometry.h.

334{
335 const int nDim = GetShapeDim();
336 return nDim == 1 ? GetVid(i)
337 : nDim == 2 ? GetEid(i)
338 : nDim == 3 ? GetFid(i)
339 : 0;
340}
int GetVid(int i) const
Returns global id of vertex i of this object.
Definition Geometry.h:345
int GetFid(int i) const
Get the ID of face i of this object.
Definition Geometry.cpp:91
int GetEid(int i) const
Get the ID of edge i of this object.
Definition Geometry.cpp:83

References GetEid(), GetFid(), GetShapeDim(), and GetVid().

Referenced by export_Geometry().

◆ GetVertex()

PointGeom * Nektar::SpatialDomains::Geometry::GetVertex ( int  i) const
inline

Returns vertex i of this object.

Definition at line 353 of file Geometry.h.

354{
355 return v_GetVertex(i);
356}
virtual PointGeom * v_GetVertex(const int i) const
Returns vertex i of this object.
Definition Geometry.cpp:99

References v_GetVertex().

Referenced by Nektar::SolverUtils::CouplingCwipi::AddElementsToMesh(), Nektar::SpatialDomains::MeshGraph::CheckRange(), Nektar::SpatialDomains::MeshGraph::CheckRange(), export_Geometry(), Nektar::MultiRegions::DisContField::FindPeriodicTraces(), GenerateMapEidsv1v2(), GetBoundingBox(), Nektar::SpatialDomains::SegGeom::GetEdgeOrientation(), GetNewVertexLocation(), Nektar::MappingIdealToRef(), Nektar::FieldUtils::MappingIdealToRef(), Nektar::SolverUtils::DriverArnoldi::MaskInit(), Nektar::SpatialDomains::MeshGraph::PRefinementElmts(), Nektar::VariableConverter::SetElmtMinHP(), Nektar::PulseWaveSystem::SetUpDomainInterfaceBCs(), Nektar::SpatialDomains::HexGeom::SetUpFaceOrientation(), Nektar::SpatialDomains::PrismGeom::SetUpFaceOrientation(), Nektar::SpatialDomains::PyrGeom::SetUpFaceOrientation(), Nektar::SpatialDomains::TetGeom::SetUpFaceOrientation(), Nektar::GlobalMapping::UpdateGeometry(), v_GetVid(), Nektar::DiffusionLDGNS::v_InitObject(), Nektar::FieldUtils::ProcessPowerSpectrum::v_Process(), Nektar::LocalRegions::Expansion1D::v_TraceNormLen(), Nektar::LocalRegions::Expansion2D::v_TraceNormLen(), Nektar::LocalRegions::Expansion3D::v_TraceNormLen(), Nektar::FieldUtils::ProcessForceDecompose::VolumeIntegrateForce(), and Nektar::SpatialDomains::ZoneBase::ZoneBase().

◆ GetVertexEdgeMap()

int Nektar::SpatialDomains::Geometry::GetVertexEdgeMap ( int  i,
int  j 
) const
inline

Returns the standard element edge IDs that are connected to a given vertex.

For example, on a prism, vertex 0 is connnected to edges 0, 3, and 4; GetVertexEdgeMap(0,j) would therefore return the values 0, 1 and 4 respectively. We assume that j runs between 0 and 2 inclusive, which is true for every 3D element asides from the pyramid.

This function is used in the construction of the low-energy preconditioner.

Parameters
iThe vertex to query connectivity for.
jThe local edge index between 0 and 2 connected to this element.
Todo:
Expand to work with pyramid elements.
See also
MultiRegions::PreconditionerLowEnergy

Definition at line 588 of file Geometry.h.

589{
590 return v_GetVertexEdgeMap(i, j);
591}
virtual int v_GetVertexEdgeMap(int i, int j) const
Returns the standard element edge IDs that are connected to a given vertex.
Definition Geometry.cpp:278

References v_GetVertexEdgeMap().

Referenced by Nektar::LocalRegions::Expansion3D::v_BuildTransformationMatrix().

◆ GetVertexFaceMap()

int Nektar::SpatialDomains::Geometry::GetVertexFaceMap ( int  i,
int  j 
) const
inline

Returns the standard element face IDs that are connected to a given vertex.

For example, on a hexahedron, vertex 0 is connnected to faces 0, 1, and 4; GetVertexFaceMap(0,j) would therefore return the values 0, 1 and 4 respectively. We assume that j runs between 0 and 2 inclusive, which is true for every 3D element asides from the pyramid.

This is used in the construction of the low-energy preconditioner.

Parameters
iThe vertex to query connectivity for.
jThe local face index between 0 and 2 connected to this element.
Todo:
Expand to work with pyramid elements.
See also
MultiRegions::PreconditionerLowEnergy

Definition at line 610 of file Geometry.h.

611{
612 return v_GetVertexFaceMap(i, j);
613}
virtual int v_GetVertexFaceMap(int i, int j) const
Returns the standard element face IDs that are connected to a given vertex.
Definition Geometry.cpp:289

References v_GetVertexFaceMap().

Referenced by Nektar::LocalRegions::Expansion3D::v_BuildTransformationMatrix().

◆ GetVid()

int Nektar::SpatialDomains::Geometry::GetVid ( int  i) const
inline

Returns global id of vertex i of this object.

Definition at line 345 of file Geometry.h.

346{
347 return v_GetVid(i);
348}
virtual int v_GetVid(int i) const
Get the ID of vertex i of this object.
Definition Geometry.cpp:75

References v_GetVid().

Referenced by CheckTetRotation(), Nektar::CoupledLocalToGlobalC0ContMap::CoupledLocalToGlobalC0ContMap(), Nektar::MultiRegions::AssemblyMapCG::CreateGraph(), Nektar::LocalRegions::Expansion::Expansion(), export_Geometry(), Nektar::MultiRegions::DisContField::FindPeriodicTraces(), GetNewVertexLocation(), GetTid(), Nektar::SpatialDomains::LinearMeshGraph::LinMeshSetUpCompositesDomain(), Nektar::SpatialDomains::LinearMeshGraph::LinMeshSetUpPrismGeom(), Nektar::SpatialDomains::LinearMeshGraph::LinMeshSetUpTetGeom(), main(), Nektar::SpatialDomains::HexGeom::SetUpEdgeOrientation(), Nektar::SpatialDomains::PrismGeom::SetUpEdgeOrientation(), Nektar::SpatialDomains::PyrGeom::SetUpEdgeOrientation(), Nektar::SpatialDomains::TetGeom::SetUpEdgeOrientation(), Nektar::SpatialDomains::HexGeom::SetUpLocalVertices(), Nektar::SpatialDomains::PrismGeom::SetUpLocalVertices(), Nektar::SpatialDomains::PyrGeom::SetUpLocalVertices(), Nektar::SpatialDomains::TetGeom::SetUpLocalVertices(), Nektar::GlobalMapping::UpdateGeometry(), Nektar::LocalRegions::PrismExp::v_GetSimplexEquiSpacedConnectivity(), Nektar::FieldUtils::ProcessDisplacement::v_Process(), Nektar::SpatialDomains::WriteEdge(), Nektar::SpatialDomains::WriteEdge(), and Nektar::SpatialDomains::MeshGraphIOXml::WriteXMLGeometry().

◆ GetXmap()

StdRegions::StdExpansionSharedPtr Nektar::SpatialDomains::Geometry::GetXmap ( ) const
inline

Return the mapping object Geometry::m_xmap that represents the coordinate transformation from standard element to physical element.

Definition at line 440 of file Geometry.h.

441{
442 return v_GetXmap();
443}
virtual StdRegions::StdExpansionSharedPtr v_GetXmap() const
Return the mapping object Geometry::m_xmap that represents the coordinate transformation from standar...
Definition Geometry.cpp:220

References v_GetXmap().

Referenced by Nektar::FieldUtils::ProcessWallNormalData::BisectionForLocCoordOnBndElmt(), Nektar::FieldUtils::ProcessWallNormalData::BndElmtContainsPoint(), export_Geometry(), Nektar::FieldUtils::ProcessBodyFittedVelocity::GenPntwiseBodyFittedCoordSys(), Geometry_GenGeomFactors(), Geometry_IsValid(), GetBoundingBox(), Nektar::FieldUtils::ProcessWallNormalData::GetNormals(), Nektar::FieldUtils::ProcessQualityMetric::GetQ(), Nektar::FieldUtils::ProcessBodyFittedVelocity::LocCoordForNearestPntOnBndElmt(), Nektar::FieldUtils::ProcessBodyFittedVelocity::LocCoordForNearestPntOnBndElmt_2D(), Nektar::FieldUtils::ProcessWallNormalData::NewtonIterForLocCoordOnBndElmt(), Nektar::SpatialDomains::HexGeom::SetUpXmap(), Nektar::SpatialDomains::PrismGeom::SetUpXmap(), Nektar::SpatialDomains::PyrGeom::SetUpXmap(), Nektar::SpatialDomains::QuadGeom::SetUpXmap(), Nektar::SpatialDomains::TetGeom::SetUpXmap(), Nektar::SpatialDomains::TriGeom::SetUpXmap(), Nektar::SpatialDomains::QuadGeom::v_AllLeftCheck(), Nektar::SpatialDomains::TriGeom::v_AllLeftCheck(), Nektar::SpatialDomains::HexGeom::v_FillGeom(), Nektar::SpatialDomains::PrismGeom::v_FillGeom(), Nektar::SpatialDomains::PyrGeom::v_FillGeom(), Nektar::SpatialDomains::QuadGeom::v_FillGeom(), Nektar::SpatialDomains::TetGeom::v_FillGeom(), Nektar::SpatialDomains::TriGeom::v_FillGeom(), Nektar::LocalRegions::Expansion::v_GetCoords(), and Nektar::FieldUtils::ProcessWallNormalData::v_Process().

◆ MinMaxCheck()

bool Nektar::SpatialDomains::Geometry::MinMaxCheck ( const Array< OneD, const NekDouble > &  gloCoord)

Check if given global coord is within the BoundingBox of the element.

Parameters
coordsInput Cartesian global coordinates
Returns
True if within distance or False otherwise.

Definition at line 502 of file Geometry.cpp.

503{
504 // Validation checks
505 ASSERTL1(gloCoord.size() >= m_coordim,
506 "Expects number of global coordinates supplied to be greater than "
507 "or equal to the mesh dimension.");
508
509 std::array<NekDouble, 6> minMax = GetBoundingBox();
510 for (int i = 0; i < m_coordim; ++i)
511 {
512 if ((gloCoord[i] < minMax[i]) || (gloCoord[i] > minMax[i + 3]))
513 {
514 return false;
515 }
516 }
517 return true;
518}
std::array< NekDouble, 6 > GetBoundingBox()
Generates the bounding box for the element.
Definition Geometry.cpp:388

References ASSERTL1, GetBoundingBox(), and m_coordim.

Referenced by PreliminaryCheck().

◆ PreliminaryCheck()

int Nektar::SpatialDomains::Geometry::PreliminaryCheck ( const Array< OneD, const NekDouble > &  gloCoord)

A fast and robust check if a given global coord is outside of a deformed element. For regular elements, this check is unnecessary.

Parameters
coordsInput Cartesian global coordinates
Returns
1 is inside of the element. 0 maybe inside -1 outside of the element

Definition at line 477 of file Geometry.cpp.

478{
479 // bounding box check
480 if (!MinMaxCheck(gloCoord))
481 {
482 return -1;
483 }
484
485 // regular element check
486 if (CalcGeomType() == eRegular)
487 {
488 return 0;
489 }
490
491 // All left check for straight edges/plane surfaces
492 return v_AllLeftCheck(gloCoord);
493}
virtual int v_AllLeftCheck(const Array< OneD, const NekDouble > &gloCoord)
Definition Geometry.cpp:205
bool MinMaxCheck(const Array< OneD, const NekDouble > &gloCoord)
Check if given global coord is within the BoundingBox of the element.
Definition Geometry.cpp:502

References CalcGeomType(), Nektar::SpatialDomains::eRegular, MinMaxCheck(), and v_AllLeftCheck().

Referenced by v_ContainsPoint().

◆ Reset()

void Nektar::SpatialDomains::Geometry::Reset ( CurveMap curvedEdges,
CurveMap curvedFaces 
)
inline

Reset this geometry object: unset the current state, zero Geometry::m_coeffs and remove allocated GeomFactors.

Definition at line 671 of file Geometry.h.

672{
673 v_Reset(curvedEdges, curvedFaces);
674}
virtual void v_Reset(CurveMap &curvedEdges, CurveMap &curvedFaces)
Reset this geometry object: unset the current state, zero Geometry::m_coeffs and remove allocated Geo...
Definition Geometry.cpp:366

References v_Reset().

◆ ResetNonRecursive()

void Nektar::SpatialDomains::Geometry::ResetNonRecursive ( CurveMap curvedEdges,
CurveMap curvedFaces 
)
inline

Reset this geometry object non-recursively: unset the current state, zero Geometry::m_coeffs and remove allocated GeomFactors.

Definition at line 680 of file Geometry.h.

682{
683 Geometry::v_Reset(curvedEdges, curvedFaces);
684}

References v_Reset().

◆ SetCoordim()

void Nektar::SpatialDomains::Geometry::SetCoordim ( int  coordim)
inline

Sets the coordinate dimension of this object (i.e. the dimension of the space in which this object is embedded).

Definition at line 286 of file Geometry.h.

287{
288 m_coordim = dim;
289}

References m_coordim.

◆ SetGlobalID()

void Nektar::SpatialDomains::Geometry::SetGlobalID ( int  globalid)
inline

Set the ID of this object.

Definition at line 322 of file Geometry.h.

323{
324 m_globalID = globalid;
325}

References m_globalID.

Referenced by export_Geometry().

◆ Setup()

void Nektar::SpatialDomains::Geometry::Setup ( )
inline

Definition at line 686 of file Geometry.h.

687{
688 v_Setup();
689}

References v_Setup().

Referenced by export_Geometry(), Geometry_GenGeomFactors(), and Geometry_IsValid().

◆ SetUpCoeffs()

void Nektar::SpatialDomains::Geometry::SetUpCoeffs ( const int  nCoeffs)
inlineprotected

◆ v_AllLeftCheck()

int Nektar::SpatialDomains::Geometry::v_AllLeftCheck ( const Array< OneD, const NekDouble > &  gloCoord)
protectedvirtual

Reimplemented in Nektar::SpatialDomains::Geometry3D, Nektar::SpatialDomains::QuadGeom, and Nektar::SpatialDomains::TriGeom.

Definition at line 205 of file Geometry.cpp.

207{
208 return 0;
209}

Referenced by PreliminaryCheck().

◆ v_CalcGeomType()

GeomType Nektar::SpatialDomains::Geometry::v_CalcGeomType ( )
protectedvirtual

Calculates the GeomType (deformed, regular etc).

Reimplemented in Nektar::SpatialDomains::HexGeom, Nektar::SpatialDomains::PrismGeom, Nektar::SpatialDomains::PyrGeom, Nektar::SpatialDomains::QuadGeom, Nektar::SpatialDomains::SegGeom, Nektar::SpatialDomains::TetGeom, and Nektar::SpatialDomains::TriGeom.

Definition at line 187 of file Geometry.cpp.

188{
190 "This function is only valid for shape type geometries");
191 return eNoGeomType;
192}
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...
@ eNoGeomType
No type defined.

References Nektar::ErrorUtil::efatal, Nektar::SpatialDomains::eNoGeomType, and NEKERROR.

Referenced by CalcGeomType().

◆ v_CalculateInverseIsoParam()

void Nektar::SpatialDomains::Geometry::v_CalculateInverseIsoParam ( )
protectedvirtual

Reimplemented in Nektar::SpatialDomains::Geometry2D, and Nektar::SpatialDomains::Geometry3D.

Definition at line 211 of file Geometry.cpp.

212{
214 "This function is only valid for shape type geometries");
215}

References Nektar::ErrorUtil::efatal, and NEKERROR.

◆ v_ContainsPoint()

bool Nektar::SpatialDomains::Geometry::v_ContainsPoint ( const Array< OneD, const NekDouble > &  gloCoord,
Array< OneD, NekDouble > &  locCoord,
NekDouble  tol,
NekDouble dist 
)
protectedvirtual

Determine whether an element contains a particular Cartesian coordinate \(\vec{x} = (x,y,z)\).

For curvilinear and non-affine elements (i.e. where the Jacobian varies as a function of the standard element coordinates), this is a non-linear optimisation problem that requires the use of a Newton iteration. Note therefore that this can be an expensive operation.

The parameter tol which is by default 0, can be used to expand the coordinate range of the standard element from \([-1,1]^d\) to \([-1-\epsilon,1+\epsilon\) to handle challenging edge cases. The function also returns the local coordinates corresponding to gloCoord that can be used to speed up subsequent searches.

Parameters
gloCoordThe coordinate \( (x,y,z) \).
locCoordOn exit, this is the local coordinate \(\vec{\xi}\) such that \(\chi(\vec{\xi}) = \vec{x}\).
tolThe tolerance used to dictate the bounding box of the standard coordinates \(\vec{\xi}\).
distOn exit, returns the minimum distance between gloCoord and the quadrature points inside the element.
Returns
true if the coordinate gloCoord is contained in the element; false otherwise.
See also
Geometry::GetLocCoords. dist is assigned value for curved elements

Reimplemented in Nektar::SpatialDomains::Geometry0D.

Definition at line 231 of file Geometry.cpp.

234{
235 int inside = PreliminaryCheck(gloCoord);
236 if (inside == -1)
237 {
238 dist = std::numeric_limits<double>::max();
239 return false;
240 }
241 dist = GetLocCoords(gloCoord, locCoord);
242 if (inside == 1)
243 {
244 dist = 0.;
245 return true;
246 }
247 else
248 {
249 Array<OneD, NekDouble> eta(GetShapeDim(), 0.);
250 m_xmap->LocCoordToLocCollapsed(locCoord, eta);
251 if (ClampLocCoords(eta, tol))
252 {
253 if (CalcGeomType() == eRegular)
254 {
255 dist = std::numeric_limits<double>::max();
256 }
257 return false;
258 }
259 return 3 != m_coordim ||
262 dist <= tol;
263 }
264}
NekDouble GetLocCoords(const Array< OneD, const NekDouble > &coords, Array< OneD, NekDouble > &Lcoords)
Determine the local collapsed coordinates that correspond to a given Cartesian coordinate for this ge...
Definition Geometry.h:549
int PreliminaryCheck(const Array< OneD, const NekDouble > &gloCoord)
A fast and robust check if a given global coord is outside of a deformed element. For regular element...
Definition Geometry.cpp:477
bool ClampLocCoords(Array< OneD, NekDouble > &locCoord, NekDouble tol=std::numeric_limits< NekDouble >::epsilon())
Clamp local coords to be within standard regions [-1, 1]^dim.
Definition Geometry.cpp:525
StdRegions::StdExpansionSharedPtr m_xmap
mapping containing isoparametric transformation.
Definition Geometry.h:186

References CalcGeomType(), ClampLocCoords(), Nektar::LibUtilities::eQuadrilateral, Nektar::SpatialDomains::eRegular, Nektar::LibUtilities::eTriangle, GetLocCoords(), GetShapeDim(), m_coordim, m_shapeType, m_xmap, and PreliminaryCheck().

Referenced by ContainsPoint(), ContainsPoint(), and ContainsPoint().

◆ v_FillGeom()

void Nektar::SpatialDomains::Geometry::v_FillGeom ( )
protectedvirtual

◆ v_FindDistance()

NekDouble Nektar::SpatialDomains::Geometry::v_FindDistance ( const Array< OneD, const NekDouble > &  xs,
Array< OneD, NekDouble > &  xi 
)
protectedvirtual

Reimplemented in Nektar::SpatialDomains::Geometry2D, and Nektar::SpatialDomains::SegGeom.

Definition at line 266 of file Geometry.cpp.

269{
271 "This function has not been defined for this geometry");
272 return false;
273}

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by FindDistance().

◆ v_GenGeomFactors()

GeomFactorsUniquePtr Nektar::SpatialDomains::Geometry::v_GenGeomFactors ( LibUtilities::PointsKeyVector keyTgt)
protectedvirtual

◆ v_GetCoord()

NekDouble Nektar::SpatialDomains::Geometry::v_GetCoord ( const int  i,
const Array< OneD, const NekDouble > &  Lcoord 
)
protectedvirtual

Given local collapsed coordinate Lcoord, return the value of physical coordinate in direction i.

Reimplemented in Nektar::SpatialDomains::Geometry3D, Nektar::SpatialDomains::QuadGeom, Nektar::SpatialDomains::SegGeom, and Nektar::SpatialDomains::TriGeom.

Definition at line 333 of file Geometry.cpp.

336{
338 "This function is only valid for expansion type geometries");
339 return 0.0;
340}

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetCoord().

◆ v_GetDir()

int Nektar::SpatialDomains::Geometry::v_GetDir ( const int  i,
const int  j 
) const
protectedvirtual

Returns the element coordinate direction corresponding to a given face coordinate direction.

Reimplemented in Nektar::SpatialDomains::HexGeom, Nektar::SpatialDomains::PrismGeom, Nektar::SpatialDomains::PyrGeom, Nektar::SpatialDomains::QuadGeom, Nektar::SpatialDomains::TetGeom, and Nektar::SpatialDomains::TriGeom.

Definition at line 322 of file Geometry.cpp.

324{
326 "This function has not been defined for this geometry");
327 return 0;
328}

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetDir().

◆ v_GetEdge()

Geometry1D * Nektar::SpatialDomains::Geometry::v_GetEdge ( const int  i) const
protectedvirtual

Returns edge i of this object.

Reimplemented in Nektar::SpatialDomains::HexGeom, Nektar::SpatialDomains::PrismGeom, Nektar::SpatialDomains::PyrGeom, Nektar::SpatialDomains::QuadGeom, Nektar::SpatialDomains::TetGeom, and Nektar::SpatialDomains::TriGeom.

Definition at line 109 of file Geometry.cpp.

110{
112 "This function is only valid for shape type geometries");
113 return nullptr;
114}

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetEdge().

◆ v_GetEdgeFaceMap()

int Nektar::SpatialDomains::Geometry::v_GetEdgeFaceMap ( int  i,
int  j 
) const
protectedvirtual

Returns the standard element edge IDs that are connected to a given face.

For example, on a prism, edge 0 is connnected to faces 0 and 1; GetEdgeFaceMap(0,j) would therefore return the values 0 and 1 respectively. We assume that j runs between 0 and 1 inclusive, since every face is connected to precisely two faces for all 3D elements.

This function is used in the construction of the low-energy preconditioner.

Parameters
iThe edge to query connectivity for.
jThe local face index between 0 and 1 connected to this element.
See also
MultiRegions::PreconditionerLowEnergy

Reimplemented in Nektar::SpatialDomains::HexGeom, Nektar::SpatialDomains::PrismGeom, and Nektar::SpatialDomains::TetGeom.

Definition at line 300 of file Geometry.cpp.

302{
304 "This function has not been defined for this geometry");
305 return 0;
306}

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetEdgeFaceMap().

◆ v_GetEdgeNormalToFaceVert()

int Nektar::SpatialDomains::Geometry::v_GetEdgeNormalToFaceVert ( const int  i,
const int  j 
) const
protectedvirtual

Returns the standard lement edge IDs that are normal to a given face vertex.

For example, on a hexahedron, on face 0 at vertices 0,1,2,3 the edges normal to that face are 4,5,6,7, ; so GetEdgeNormalToFaceVert(0,j) would therefore return the values 4, 5, 6 and 7 respectively. We assume that j runs between 0 and 3 inclusive on a quadrilateral face and between 0 and 2 inclusive on a triangular face.

This is used to help set up a length scale normal to an face

Parameters
iThe face to query for the normal edge
jThe local vertex index between 0 and nverts on this face

Reimplemented in Nektar::SpatialDomains::HexGeom, Nektar::SpatialDomains::PrismGeom, Nektar::SpatialDomains::PyrGeom, and Nektar::SpatialDomains::TetGeom.

Definition at line 311 of file Geometry.cpp.

313{
315 "This function has not been defined for this geometry");
316 return 0;
317}

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetEdgeNormalToFaceVert().

◆ v_GetEorient()

StdRegions::Orientation Nektar::SpatialDomains::Geometry::v_GetEorient ( const int  i) const
protectedvirtual

Returns the orientation of edge i with respect to the ordering of edges in the standard element.

Reimplemented in Nektar::SpatialDomains::HexGeom, Nektar::SpatialDomains::PrismGeom, Nektar::SpatialDomains::PyrGeom, Nektar::SpatialDomains::QuadGeom, Nektar::SpatialDomains::TetGeom, and Nektar::SpatialDomains::TriGeom.

Definition at line 139 of file Geometry.cpp.

141{
143 "This function is not valid for this geometry.");
145}

References Nektar::ErrorUtil::efatal, Nektar::StdRegions::eForwards, and NEKERROR.

Referenced by GetEorient().

◆ v_GetFace()

Geometry2D * Nektar::SpatialDomains::Geometry::v_GetFace ( const int  i) const
protectedvirtual

Returns face i of this object.

Reimplemented in Nektar::SpatialDomains::HexGeom, Nektar::SpatialDomains::PrismGeom, Nektar::SpatialDomains::PyrGeom, and Nektar::SpatialDomains::TetGeom.

Definition at line 119 of file Geometry.cpp.

120{
122 "This function is only valid for shape type geometries");
123 return nullptr;
124}

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetFace().

◆ v_GetForient()

StdRegions::Orientation Nektar::SpatialDomains::Geometry::v_GetForient ( const int  i) const
protectedvirtual

Returns the orientation of face i with respect to the ordering of faces in the standard element.

Reimplemented in Nektar::SpatialDomains::HexGeom, Nektar::SpatialDomains::PrismGeom, Nektar::SpatialDomains::PyrGeom, and Nektar::SpatialDomains::TetGeom.

Definition at line 150 of file Geometry.cpp.

152{
154 "This function is not valid for this geometry.");
155 return StdRegions::eFwd;
156}

References Nektar::ErrorUtil::efatal, Nektar::StdRegions::eFwd, and NEKERROR.

Referenced by GetForient().

◆ v_GetLocCoords()

NekDouble Nektar::SpatialDomains::Geometry::v_GetLocCoords ( const Array< OneD, const NekDouble > &  coords,
Array< OneD, NekDouble > &  Lcoords 
)
protectedvirtual

Determine the local collapsed coordinates that correspond to a given Cartesian coordinate for this geometry object.

For curvilinear and non-affine elements (i.e. where the Jacobian varies as a function of the standard element coordinates), this is a non-linear optimisation problem that requires the use of a Newton iteration. Note therefore that this can be an expensive operation.

Note that, clearly, the provided Cartesian coordinate lie outside the element. The function therefore returns the minimum distance from some position in the element to . Lcoords will also be constrained to fit within the range \([-1,1]^d\) where \( d \) is the dimension of the element.

Parameters
coordsInput Cartesian global coordinates
LcoordsCorresponding local coordinates
Returns
Distance between obtained coordinates and provided ones.

Reimplemented in Nektar::SpatialDomains::Geometry1D, Nektar::SpatialDomains::Geometry2D, and Nektar::SpatialDomains::Geometry3D.

Definition at line 345 of file Geometry.cpp.

348{
350 "This function is only valid for expansion type geometries");
351 return 0.0;
352}

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetLocCoords().

◆ v_GetNumEdges()

int Nektar::SpatialDomains::Geometry::v_GetNumEdges ( ) const
protectedvirtual

◆ v_GetNumFaces()

int Nektar::SpatialDomains::Geometry::v_GetNumFaces ( ) const
protectedvirtual

Get the number of faces of this object.

Reimplemented in Nektar::SpatialDomains::HexGeom, Nektar::SpatialDomains::PrismGeom, Nektar::SpatialDomains::PyrGeom, and Nektar::SpatialDomains::TetGeom.

Definition at line 169 of file Geometry.cpp.

170{
171 return 0;
172}

Referenced by GetNumFaces().

◆ v_GetNumVerts()

int Nektar::SpatialDomains::Geometry::v_GetNumVerts ( ) const
protectedvirtual

Get the number of vertices of this object.

Reimplemented in Nektar::SpatialDomains::HexGeom, Nektar::SpatialDomains::PrismGeom, Nektar::SpatialDomains::PyrGeom, Nektar::SpatialDomains::QuadGeom, Nektar::SpatialDomains::TetGeom, Nektar::SpatialDomains::TriGeom, and Nektar::SpatialDomains::SegGeom.

Definition at line 129 of file Geometry.cpp.

130{
132 "This function is only valid for shape type geometries");
133 return 0;
134}

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetNumVerts().

◆ v_GetShapeDim()

int Nektar::SpatialDomains::Geometry::v_GetShapeDim ( ) const
protectedvirtual

Get the object's shape dimension.

For example, a segment is one dimensional and quadrilateral is two dimensional.

Reimplemented in Nektar::SpatialDomains::Geometry0D, Nektar::SpatialDomains::Geometry1D, Nektar::SpatialDomains::Geometry2D, and Nektar::SpatialDomains::Geometry3D.

Definition at line 177 of file Geometry.cpp.

178{
180 "This function is only valid for shape type geometries");
181 return 0;
182}

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetShapeDim().

◆ v_GetVertex()

PointGeom * Nektar::SpatialDomains::Geometry::v_GetVertex ( const int  i) const
protectedvirtual

Returns vertex i of this object.

Reimplemented in Nektar::SpatialDomains::HexGeom, Nektar::SpatialDomains::PrismGeom, Nektar::SpatialDomains::PyrGeom, Nektar::SpatialDomains::QuadGeom, Nektar::SpatialDomains::TetGeom, Nektar::SpatialDomains::TriGeom, and Nektar::SpatialDomains::SegGeom.

Definition at line 99 of file Geometry.cpp.

100{
102 "This function is only valid for shape type geometries");
103 return nullptr;
104}

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetVertex().

◆ v_GetVertexEdgeMap()

int Nektar::SpatialDomains::Geometry::v_GetVertexEdgeMap ( int  i,
int  j 
) const
protectedvirtual

Returns the standard element edge IDs that are connected to a given vertex.

For example, on a prism, vertex 0 is connnected to edges 0, 3, and 4; GetVertexEdgeMap(0,j) would therefore return the values 0, 1 and 4 respectively. We assume that j runs between 0 and 2 inclusive, which is true for every 3D element asides from the pyramid.

This function is used in the construction of the low-energy preconditioner.

Parameters
iThe vertex to query connectivity for.
jThe local edge index between 0 and 2 connected to this element.
Todo:
Expand to work with pyramid elements.
See also
MultiRegions::PreconditionerLowEnergy

Reimplemented in Nektar::SpatialDomains::HexGeom, Nektar::SpatialDomains::PrismGeom, and Nektar::SpatialDomains::TetGeom.

Definition at line 278 of file Geometry.cpp.

280{
282 "This function has not been defined for this geometry");
283 return 0;
284}

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetVertexEdgeMap().

◆ v_GetVertexFaceMap()

int Nektar::SpatialDomains::Geometry::v_GetVertexFaceMap ( int  i,
int  j 
) const
protectedvirtual

Returns the standard element face IDs that are connected to a given vertex.

For example, on a hexahedron, vertex 0 is connnected to faces 0, 1, and 4; GetVertexFaceMap(0,j) would therefore return the values 0, 1 and 4 respectively. We assume that j runs between 0 and 2 inclusive, which is true for every 3D element asides from the pyramid.

This is used in the construction of the low-energy preconditioner.

Parameters
iThe vertex to query connectivity for.
jThe local face index between 0 and 2 connected to this element.
Todo:
Expand to work with pyramid elements.
See also
MultiRegions::PreconditionerLowEnergy

Reimplemented in Nektar::SpatialDomains::HexGeom, Nektar::SpatialDomains::PrismGeom, and Nektar::SpatialDomains::TetGeom.

Definition at line 289 of file Geometry.cpp.

291{
293 "This function has not been defined for this geometry");
294 return 0;
295}

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetVertexFaceMap().

◆ v_GetVid()

int Nektar::SpatialDomains::Geometry::v_GetVid ( int  i) const
protectedvirtual

Get the ID of vertex i of this object.

Reimplemented in Nektar::SpatialDomains::PointGeom.

Definition at line 75 of file Geometry.cpp.

76{
77 return GetVertex(i)->GetGlobalID();
78}

References GetGlobalID(), and GetVertex().

Referenced by GetVid().

◆ v_GetXmap()

StdRegions::StdExpansionSharedPtr Nektar::SpatialDomains::Geometry::v_GetXmap ( ) const
protectedvirtual

Return the mapping object Geometry::m_xmap that represents the coordinate transformation from standard element to physical element.

Definition at line 220 of file Geometry.cpp.

221{
222 return m_xmap;
223}

References m_xmap.

Referenced by GetXmap().

◆ v_Reset()

void Nektar::SpatialDomains::Geometry::v_Reset ( CurveMap curvedEdges,
CurveMap curvedFaces 
)
protectedvirtual

◆ v_Setup()

void Nektar::SpatialDomains::Geometry::v_Setup ( )
protectedvirtual

Member Data Documentation

◆ m_boundingBox

Array<OneD, NekDouble> Nektar::SpatialDomains::Geometry::m_boundingBox
protected

Array containing bounding box.

Definition at line 198 of file Geometry.h.

Referenced by ClearBoundingBox(), and GetBoundingBox().

◆ m_coeffs

std::vector<Array<OneD, NekDouble> > Nektar::SpatialDomains::Geometry::m_coeffs
protected

◆ m_coordim

int Nektar::SpatialDomains::Geometry::m_coordim
protected

Coordinate dimension of this geometry object.

Definition at line 184 of file Geometry.h.

Referenced by Nektar::SpatialDomains::PointGeom::Add(), Nektar::SpatialDomains::Geometry2D::Geometry2D(), Nektar::SpatialDomains::Geometry3D::Geometry3D(), GetCoordim(), Nektar::SpatialDomains::PointGeom::GetCoords(), Nektar::SpatialDomains::PointGeom::GetCoords(), MinMaxCheck(), Nektar::SpatialDomains::PointGeom::Mult(), Nektar::SpatialDomains::PointGeom::PointGeom(), Nektar::SpatialDomains::PointGeom::PointGeom(), Nektar::SpatialDomains::PointGeom::PointGeom(), Nektar::SpatialDomains::SegGeom::SegGeom(), SetCoordim(), SetUpCoeffs(), Nektar::SpatialDomains::HexGeom::SetUpFaceOrientation(), Nektar::SpatialDomains::PrismGeom::SetUpFaceOrientation(), Nektar::SpatialDomains::PyrGeom::SetUpFaceOrientation(), Nektar::SpatialDomains::TetGeom::SetUpFaceOrientation(), Nektar::SpatialDomains::PointGeom::Sub(), Nektar::SpatialDomains::TriGeom::TriGeom(), Nektar::SpatialDomains::QuadGeom::v_AllLeftCheck(), Nektar::SpatialDomains::TriGeom::v_AllLeftCheck(), Nektar::SpatialDomains::QuadGeom::v_CalcGeomType(), Nektar::SpatialDomains::TriGeom::v_CalcGeomType(), v_ContainsPoint(), Nektar::SpatialDomains::HexGeom::v_FillGeom(), Nektar::SpatialDomains::PrismGeom::v_FillGeom(), Nektar::SpatialDomains::PyrGeom::v_FillGeom(), Nektar::SpatialDomains::QuadGeom::v_FillGeom(), Nektar::SpatialDomains::SegGeom::v_FillGeom(), Nektar::SpatialDomains::TetGeom::v_FillGeom(), Nektar::SpatialDomains::TriGeom::v_FillGeom(), Nektar::SpatialDomains::SegGeom::v_FindDistance(), Nektar::SpatialDomains::HexGeom::v_GenGeomFactors(), Nektar::SpatialDomains::PrismGeom::v_GenGeomFactors(), Nektar::SpatialDomains::PyrGeom::v_GenGeomFactors(), Nektar::SpatialDomains::QuadGeom::v_GenGeomFactors(), Nektar::SpatialDomains::SegGeom::v_GenGeomFactors(), Nektar::SpatialDomains::TetGeom::v_GenGeomFactors(), Nektar::SpatialDomains::TriGeom::v_GenGeomFactors(), Nektar::SpatialDomains::Geometry1D::v_GetLocCoords(), and Nektar::SpatialDomains::Geometry2D::v_GetLocCoords().

◆ m_globalID

int Nektar::SpatialDomains::Geometry::m_globalID
protected

◆ m_invIsoParam

Array<OneD, Array<OneD, NekDouble> > Nektar::SpatialDomains::Geometry::m_invIsoParam
protected

◆ m_isoParameter

Array<OneD, Array<OneD, NekDouble> > Nektar::SpatialDomains::Geometry::m_isoParameter
protected

◆ m_setupState

bool Nektar::SpatialDomains::Geometry::m_setupState
protected

◆ m_shapeType

LibUtilities::ShapeType Nektar::SpatialDomains::Geometry::m_shapeType
protected

◆ m_state

GeomState Nektar::SpatialDomains::Geometry::m_state
protected

◆ m_straightEdge

int Nektar::SpatialDomains::Geometry::m_straightEdge
protected

◆ m_xmap

StdRegions::StdExpansionSharedPtr Nektar::SpatialDomains::Geometry::m_xmap
protected

\(\chi\) mapping containing isoparametric transformation.

Definition at line 186 of file Geometry.h.

Referenced by Nektar::SpatialDomains::SegGeom::GenerateOneSpaceDimGeom(), Nektar::SpatialDomains::Geometry3D::NewtonIterationForLocCoord(), Nektar::SpatialDomains::Geometry2D::NewtonIterationForLocCoord(), Nektar::SpatialDomains::Geometry3D::NewtonIterationForLocCoord(), Nektar::SpatialDomains::SegGeom::SegGeom(), Nektar::SpatialDomains::HexGeom::SetUpXmap(), Nektar::SpatialDomains::PrismGeom::SetUpXmap(), Nektar::SpatialDomains::PyrGeom::SetUpXmap(), Nektar::SpatialDomains::QuadGeom::SetUpXmap(), Nektar::SpatialDomains::SegGeom::SetUpXmap(), Nektar::SpatialDomains::TetGeom::SetUpXmap(), Nektar::SpatialDomains::TriGeom::SetUpXmap(), Nektar::SpatialDomains::HexGeom::v_CalcGeomType(), Nektar::SpatialDomains::PrismGeom::v_CalcGeomType(), Nektar::SpatialDomains::PyrGeom::v_CalcGeomType(), Nektar::SpatialDomains::QuadGeom::v_CalcGeomType(), Nektar::SpatialDomains::SegGeom::v_CalcGeomType(), Nektar::SpatialDomains::TetGeom::v_CalcGeomType(), Nektar::SpatialDomains::TriGeom::v_CalcGeomType(), v_ContainsPoint(), Nektar::SpatialDomains::HexGeom::v_FillGeom(), Nektar::SpatialDomains::PrismGeom::v_FillGeom(), Nektar::SpatialDomains::PyrGeom::v_FillGeom(), Nektar::SpatialDomains::QuadGeom::v_FillGeom(), Nektar::SpatialDomains::SegGeom::v_FillGeom(), Nektar::SpatialDomains::TetGeom::v_FillGeom(), Nektar::SpatialDomains::TriGeom::v_FillGeom(), Nektar::SpatialDomains::Geometry2D::v_FindDistance(), Nektar::SpatialDomains::SegGeom::v_FindDistance(), Nektar::SpatialDomains::HexGeom::v_GenGeomFactors(), Nektar::SpatialDomains::PointGeom::v_GenGeomFactors(), Nektar::SpatialDomains::PrismGeom::v_GenGeomFactors(), Nektar::SpatialDomains::PyrGeom::v_GenGeomFactors(), Nektar::SpatialDomains::QuadGeom::v_GenGeomFactors(), Nektar::SpatialDomains::SegGeom::v_GenGeomFactors(), Nektar::SpatialDomains::TetGeom::v_GenGeomFactors(), Nektar::SpatialDomains::TriGeom::v_GenGeomFactors(), Nektar::SpatialDomains::Geometry3D::v_GetCoord(), Nektar::SpatialDomains::QuadGeom::v_GetCoord(), Nektar::SpatialDomains::SegGeom::v_GetCoord(), Nektar::SpatialDomains::TriGeom::v_GetCoord(), Nektar::SpatialDomains::Geometry1D::v_GetLocCoords(), Nektar::SpatialDomains::Geometry2D::v_GetLocCoords(), Nektar::SpatialDomains::Geometry3D::v_GetLocCoords(), v_GetXmap(), Nektar::SpatialDomains::HexGeom::v_Reset(), Nektar::SpatialDomains::PyrGeom::v_Reset(), Nektar::SpatialDomains::QuadGeom::v_Reset(), Nektar::SpatialDomains::SegGeom::v_Reset(), Nektar::SpatialDomains::TriGeom::v_Reset(), Nektar::SpatialDomains::HexGeom::v_Setup(), Nektar::SpatialDomains::PrismGeom::v_Setup(), Nektar::SpatialDomains::PyrGeom::v_Setup(), Nektar::SpatialDomains::QuadGeom::v_Setup(), Nektar::SpatialDomains::SegGeom::v_Setup(), Nektar::SpatialDomains::TetGeom::v_Setup(), and Nektar::SpatialDomains::TriGeom::v_Setup().