37 #include <boost/core/ignore_unused.hpp>
45 namespace SpatialDomains
56 m_setupState(false), m_shapeType(LibUtilities::
eNoShapeType),
66 m_setupState(false), m_shapeType(LibUtilities::
eNoShapeType),
100 if (geomFactor->GetGtype() ==
eRegular)
106 if (**iter == *geomFactor)
117 returnval = geomFactor;
125 const std::shared_ptr<Geometry> &rhs)
127 return lhs->GetGlobalID() < rhs->GetGlobalID();
131 const std::shared_ptr<Geometry> &rhs)
133 return lhs->GetGlobalID() == rhs->GetGlobalID();
149 return GetEdge(i)->GetGlobalID();
157 return GetFace(i)->GetGlobalID();
165 boost::ignore_unused(i);
167 "This function is only valid for shape type geometries");
176 boost::ignore_unused(i);
178 "This function is only valid for shape type geometries");
188 "This function is only valid for shape type geometries");
197 boost::ignore_unused(i);
199 "This function is not valid for this geometry.");
208 boost::ignore_unused(i);
210 "This function is not valid for this geometry.");
236 "This function is only valid for shape type geometries");
264 m_xmap->LocCoordToLocCollapsed(locCoord, eta);
267 m_xmap->LocCollapsedToLocCoord(eta, locCoord);
279 boost::ignore_unused(xs, xi);
281 "This function has not been defined for this geometry");
290 boost::ignore_unused(i, j);
292 "This function has not been defined for this geometry");
301 boost::ignore_unused(i, j);
303 "This function has not been defined for this geometry");
312 boost::ignore_unused(i, j);
314 "This function has not been defined for this geometry");
323 boost::ignore_unused(i, j);
325 "This function has not been defined for this geometry");
334 boost::ignore_unused(i, j);
336 "This function has not been defined for this geometry");
346 boost::ignore_unused(i, Lcoord);
348 "This function is only valid for expansion type geometries");
358 boost::ignore_unused(coords, Lcoords);
360 "This function is only valid for expansion type geometries");
370 "This function is only valid for expansion type geometries");
378 boost::ignore_unused(curvedEdges, curvedFaces);
391 "This function is only valid for expansion type geometries");
416 p->GetCoords(x[0], x[1], x[2]);
417 for (
int j = 0; j < 3; ++j)
425 p->GetCoords(x[0], x[1], x[2]);
426 for (
int j = 0; j < 3; ++j)
428 min[j] = (x[j] < min[j] ? x[j] : min[j]);
429 max[j] = (x[j] > max[j] ? x[j] : max[j]);
435 const int nq =
GetXmap()->GetTotPoints();
437 for (
int j = 0; j < 3; ++j)
445 for (
int j = 0; j < 3; ++j)
447 for (
int i = 0; i < nq; ++i)
449 min[j] = (x[j][i] < min[j] ? x[j][i] : min[j]);
450 max[j] = (x[j][i] > max[j] ? x[j][i] : max[j]);
456 for (
int j = 0; j < 3; ++j)
465 for (
int j = 0; j < 3; ++j)
471 return {{min[0], min[1], min[2], max[0], max[1], max[2]}};
491 "Expects number of global coordinates supplied to be greater than "
492 "or equal to the mesh dimension.");
497 if ((gloCoord[i] < minMax[i]) || (gloCoord[i] > minMax[i + 3]))
514 "Expects local coordinates to be same or "
515 "larger than shape dimension.");
524 if (!std::isfinite(locCoord[i]))
529 else if (locCoord[i] < -(1. + tol))
531 locCoord[i] = -(1. + tol);
534 else if (locCoord[i] > (1. + tol))
536 locCoord[i] = 1. + tol;
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
virtual int v_GetNumEdges() const
Get the number of edges of this object.
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 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.
Array< OneD, NekDouble > m_boundingBox
Array containing bounding box.
PointGeomSharedPtr GetVertex(int i) const
Returns vertex i of this object.
GeomState m_state
Enumeration to dictate whether coefficients are filled.
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...
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.
Geometry1DSharedPtr GetEdge(int i) const
Returns edge i of this object.
int GetShapeDim() const
Get the object's shape dimension.
virtual void v_FillGeom()
Populate the coordinate mapping Geometry::m_coeffs information from any children geometry elements.
Geometry()
Default constructor.
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...
virtual Geometry2DSharedPtr v_GetFace(int i) const
Returns face i of this object.
int GetVid(int i) const
Get the ID of vertex i of this object.
virtual int v_GetNumFaces() const
Get the number of faces of this object.
virtual StdRegions::StdExpansionSharedPtr v_GetXmap() const
Return the mapping object Geometry::m_xmap that represents the coordinate transformation from standar...
virtual void v_Reset(CurveMap &curvedEdges, CurveMap &curvedFaces)
Reset this geometry object: unset the current state, zero Geometry::m_coeffs and remove allocated Geo...
bool ClampLocCoords(Array< OneD, NekDouble > &locCoord, NekDouble tol=std::numeric_limits< NekDouble >::epsilon())
Clamp local coords to be within standard regions [-1, 1]^dim.
int GetCoordim() const
Return the coordinate dimension of this object (i.e. the dimension of the space in which this object ...
int GetFid(int i) const
Get the ID of face i of this object.
virtual int v_GetEdgeFaceMap(int i, int j) const
Returns the standard element edge IDs that are connected to a given face.
Array< OneD, Array< OneD, NekDouble > > m_coeffs
Array containing expansion coefficients of m_xmap.
virtual ~Geometry()
Default destructor.
GeomState m_geomFactorsState
State of the geometric factors.
StdRegions::StdExpansionSharedPtr m_xmap
mapping containing isoparametric transformation.
virtual Geometry1DSharedPtr v_GetEdge(int i) const
Returns edge 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.
StdRegions::StdExpansionSharedPtr GetXmap() const
Return the mapping object Geometry::m_xmap that represents the coordinate transformation from standar...
static GeomFactorsVector m_regGeomFactorsManager
std::array< NekDouble, 6 > GetBoundingBox()
Generates the bounding box for the element.
int GetNumVerts() const
Get the number of vertices of this object.
Geometry2DSharedPtr GetFace(int i) const
Returns face i of this object.
bool MinMaxCheck(const Array< OneD, const NekDouble > &gloCoord)
Check if given global coord is within the BoundingBox of the element.
virtual int v_GetVertexEdgeMap(int i, int j) const
Returns the standard element edge IDs that are connected to a given vertex.
virtual NekDouble v_FindDistance(const Array< OneD, const NekDouble > &xs, Array< OneD, NekDouble > &xi)
GeomFactorsSharedPtr GetGeomFactors()
Get the geometric factors for this object, generating them if required.
static GeomFactorsSharedPtr ValidateRegGeomFactor(GeomFactorsSharedPtr geomFactor)
Check to see if a geometric factor has already been created that contains the same regular informatio...
virtual int v_GetNumVerts() const
Get the number of vertices of this object.
GeomFactorsSharedPtr m_geomFactors
Geometric factors.
int m_coordim
Coordinate dimension of this geometry object.
virtual int v_GetDir(const int faceidx, const int facedir) const
Returns the element coordinate direction corresponding to a given face coordinate direction.
virtual int v_GetShapeDim() const
Get the object's shape dimension.
virtual int v_GetVertexFaceMap(int i, int j) const
Returns the standard element face IDs that are connected to a given vertex.
virtual bool v_ContainsPoint(const Array< OneD, const NekDouble > &gloCoord, Array< OneD, NekDouble > &locCoord, NekDouble tol, NekDouble &dist)
int GetEid(int i) const
Get the ID of edge i of this object.
static const NekDouble kGeomFactorsTol
static const NekDouble kNekMachineEpsilon
std::vector< GeomFactorsSharedPtr > GeomFactorsVector
A vector of GeomFactor pointers.
bool GlobalIdEquality(const std::shared_ptr< Geometry > &lhs, const std::shared_ptr< Geometry > &rhs)
std::shared_ptr< GeomFactors > GeomFactorsSharedPtr
Pointer to a GeomFactors object.
bool SortByGlobalId(const std::shared_ptr< Geometry > &lhs, const std::shared_ptr< Geometry > &rhs)
Less than operator to sort Geometry objects by global id when sorting STL containers.
std::unordered_map< int, CurveSharedPtr > CurveMap
@ eRegular
Geometry is straight-sided with constant geometric factors.
std::shared_ptr< PointGeom > PointGeomSharedPtr
std::shared_ptr< Geometry2D > Geometry2DSharedPtr
@ eNotFilled
Geometric information has not been generated.
std::shared_ptr< Geometry1D > Geometry1DSharedPtr
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
The above copyright notice and this permission notice shall be included.