36 #ifndef NEKTAR_SPATIALDOMAINS_GEOMFACTORS_H
37 #define NEKTAR_SPATIALDOMAINS_GEOMFACTORS_H
39 #include <boost/unordered_set.hpp>
49 namespace SpatialDomains
59 const GeomFactors &rhs);
68 typedef boost::unordered_set< GeomFactorsSharedPtr >
145 std::map<LibUtilities::PointsKeyVector, Array<OneD, NekDouble> >
148 std::map<LibUtilities::PointsKeyVector, Array<TwoD, NekDouble> >
323 boost::hash_combine(hash, (
int)
m_type);
324 boost::hash_combine(hash,
m_expDim);
328 boost::hash_range(hash, jac.begin(), jac.end());
332 boost::hash_combine(hash, jac[0]);
const Array< TwoD, const NekDouble > GetDerivFactors(const LibUtilities::PointsKeyVector &keyTgt)
Return the derivative of the reference coordinates with respect to the mapping, . ...
GeomFactorsVector::iterator GeomFactorsVectorIter
Iterator for the GeomFactorsVector.
Array< OneD, NekDouble > ComputeJac(const LibUtilities::PointsKeyVector &keyTgt) const
Return the Jacobian of the mapping and cache the result.
void Adjoint(const Array< TwoD, const NekDouble > &src, Array< TwoD, NekDouble > &tgt) const
Compute the transpose of the cofactors matrix.
bool IsValid() const
Determine if element is valid and not self-intersecting.
std::vector< PointsKey > PointsKeyVector
boost::unordered_set< GeomFactorsSharedPtr >::iterator GeomFactorsSetIter
Iterator for the GeomFactorsSet.
GeomType m_type
Type of geometry (e.g. eRegular, eDeformed, eMovingRegular).
friend bool operator==(const GeomFactors &lhs, const GeomFactors &rhs)
Tests if two GeomFactors classes are equal.
GeomType GetGtype()
Returns whether the geometry is regular or deformed.
DerivStorage GetDeriv(const LibUtilities::PointsKeyVector &keyTgt)
Return the derivative of the mapping with respect to the reference coordinates, . ...
size_t GetHash()
Computes a hash of this GeomFactors element.
boost::unordered_set< GeomFactorsSharedPtr > GeomFactorsSet
An unordered set of GeomFactor pointers.
void CheckIfValid()
Tests if the element is valid and not self-intersecting.
int m_coordDim
Dimension of coordinate system.
std::map< LibUtilities::PointsKeyVector, Array< OneD, NekDouble > > m_jacCache
Jacobian vector cache.
Array< TwoD, NekDouble > ComputeGmat(const LibUtilities::PointsKeyVector &keyTgt) const
Computes the Laplacian coefficients .
~GeomFactors()
Destructor.
const Array< TwoD, const NekDouble > GetGmat(const LibUtilities::PointsKeyVector &keyTgt)
Return the Laplacian coefficients .
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > DerivStorage
Storage type for derivative of mapping.
bool m_valid
Validity of element (Jacobian positive)
StdRegions::StdExpansionSharedPtr & GetXmap()
Return the Xmap;.
std::vector< GeomFactorsSharedPtr > GeomFactorsVector
A vector of GeomFactor pointers.
void Interp(const LibUtilities::PointsKeyVector &src_points, const Array< OneD, const NekDouble > &src, const LibUtilities::PointsKeyVector &tgt_points, Array< OneD, NekDouble > &tgt) const
Perform interpolation of data between two point distributions.
std::size_t operator()(GeomFactorsSharedPtr const &p) const
const Array< OneD, const NekDouble > GetJac(const LibUtilities::PointsKeyVector &keyTgt)
Return the Jacobian of the mapping and cache the result.
A hash functor for geometric factors. Utilises GeomFactors::GetHash.
StandardMatrixTag boost::call_traits< LhsDataType >::const_reference rhs typedef NekMatrix< LhsDataType, StandardMatrixTag >::iterator iterator
int GetCoordim() const
Return the number of dimensions of the coordinate system.
int m_expDim
Dimension of expansion.
Calculation and storage of geometric factors associated with the mapping from StdRegions reference el...
boost::shared_ptr< GeomFactors > GeomFactorsSharedPtr
Pointer to a GeomFactors object.
GeomFactors(const GeomType gtype, const int coordim, const StdRegions::StdExpansionSharedPtr &xmap, const Array< OneD, Array< OneD, NekDouble > > &coords)
Constructor for GeomFactors class.
bool operator==(const GeomFactors &lhs, const GeomFactors &rhs)
Equivalence test for GeomFactors objects.
Array< TwoD, NekDouble > ComputeDerivFactors(const LibUtilities::PointsKeyVector &keyTgt) const
Return the derivative of the reference coordinates with respect to the mapping, . ...
Array< OneD, Array< OneD, NekDouble > > m_coords
Stores coordinates of the geometry.
StdRegions::StdExpansionSharedPtr m_xmap
Stores information about the expansion.
GeomType
Indicates the type of element geometry.
boost::shared_ptr< StdExpansion > StdExpansionSharedPtr
Geometry is curved or has non-constant factors.
boost::shared_ptr< Geometry > GeometrySharedPtr
DerivStorage ComputeDeriv(const LibUtilities::PointsKeyVector &keyTgt) const
#define SPATIAL_DOMAINS_EXPORT
std::map< LibUtilities::PointsKeyVector, Array< TwoD, NekDouble > > m_derivFactorCache
DerivFactors vector cache.