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

#include <Expansion.h>

Inheritance diagram for Nektar::LocalRegions::Expansion:
[legend]

Public Member Functions

 Expansion (SpatialDomains::Geometry *pGeom)
 
 Expansion (const Expansion &pSrc)
 
 ~Expansion () override
 
void SetTraceExp (const int traceid, ExpansionSharedPtr &f)
 
ExpansionSharedPtr GetTraceExp (const int traceid)
 
ExpansionSharedPtr GetLocTraceExp (const int traceid)
 
StdRegions::StdExpansionSharedPtr GetStdExp () const
 
StdRegions::StdExpansionSharedPtr GetLinStdExp (void) const
 
DNekScalMatSharedPtr GetLocMatrix (const LocalRegions::MatrixKey &mkey)
 
void DropLocMatrix (const LocalRegions::MatrixKey &mkey)
 
DNekScalMatSharedPtr GetLocMatrix (const StdRegions::MatrixType mtype, const StdRegions::ConstFactorMap &factors=StdRegions::NullConstFactorMap, const StdRegions::VarCoeffMap &varcoeffs=StdRegions::NullVarCoeffMap)
 
SpatialDomains::GeometryGetGeom () const
 
void Reset ()
 
IndexMapValuesSharedPtr CreateIndexMap (const IndexMapKey &ikey)
 
DNekScalBlkMatSharedPtr CreateStaticCondMatrix (const MatrixKey &mkey)
 
SpatialDomains::GeomFactorsGetGeomFactors () const
 Get the geometric factors for this object, generating them if required.
 
DNekMatSharedPtr BuildTransformationMatrix (const DNekScalMatSharedPtr &r_bnd, const StdRegions::MatrixType matrixType)
 
DNekMatSharedPtr BuildVertexMatrix (const DNekScalMatSharedPtr &r_bnd)
 
void ExtractDataToCoeffs (const NekDouble *data, const std::vector< unsigned int > &nummodes, const int nmodes_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType)
 
void AddEdgeNormBoundaryInt (const int edge, const std::shared_ptr< Expansion > &EdgeExp, const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray)
 
void AddEdgeNormBoundaryInt (const int edge, const std::shared_ptr< Expansion > &EdgeExp, const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
 
void AddFaceNormBoundaryInt (const int face, const std::shared_ptr< Expansion > &FaceExp, const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
 
void DGDeriv (const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, ExpansionSharedPtr > &EdgeExp, Array< OneD, Array< OneD, NekDouble > > &coeffs, Array< OneD, NekDouble > &outarray)
 
NekDouble VectorFlux (const Array< OneD, Array< OneD, NekDouble > > &vec)
 
void NormalTraceDerivFactors (Array< OneD, Array< OneD, NekDouble > > &factors, Array< OneD, Array< OneD, NekDouble > > &d0factors, Array< OneD, Array< OneD, NekDouble > > &d1factors)
 
IndexMapValuesSharedPtr GetIndexMap (const IndexMapKey &ikey)
 
void AlignVectorToCollapsedDir (const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
 
ExpansionSharedPtr GetLeftAdjacentElementExp () const
 
ExpansionSharedPtr GetRightAdjacentElementExp () const
 
int GetLeftAdjacentElementTrace () const
 
int GetRightAdjacentElementTrace () const
 
void SetAdjacentElementExp (int traceid, ExpansionSharedPtr &e)
 
StdRegions::Orientation GetTraceOrient (int trace)
 
void SetCoeffsToOrientation (StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
void DivideByQuadratureMetric (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 Divided by the metric jacobi and quadrature weights.
 
void GetTraceQFactors (const int trace, Array< OneD, NekDouble > &outarray)
 Extract the metric factors to compute the contravariant fluxes along edge edge and stores them into outarray following the local edge orientation (i.e. anticlockwise convention).
 
void GetTracePhysVals (const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient=StdRegions::eNoOrientation)
 
void GetLocTracePhysVals (const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
void GetTracePhysMap (const int edge, Array< OneD, int > &outarray)
 
void ReOrientTracePhysVals (const StdRegions::Orientation orient, const Array< OneD, const NekDouble > &in, Array< OneD, NekDouble > &out, const int nq0, const int nq1, bool Forwards=true)
 
const NormalVectorGetTraceNormal (const int id)
 
const std::map< int, NormalVector > & GetTraceNormals (void)
 
void ComputeTraceNormal (const int id)
 
const Array< OneD, const NekDouble > & GetPhysNormals (void)
 
void SetPhysNormals (Array< OneD, const NekDouble > &normal)
 
void SetUpPhysNormals (const int trace)
 
void AddRobinMassMatrix (const int traceid, const Array< OneD, const NekDouble > &primCoeffs, DNekMatSharedPtr &inoutmat)
 
void TraceNormLen (const int traceid, NekDouble &h, NekDouble &p)
 
void AddRobinTraceContribution (const int traceid, const Array< OneD, const NekDouble > &primCoeffs, const Array< OneD, NekDouble > &incoeffs, Array< OneD, NekDouble > &coeffs)
 
const Array< OneD, const NekDouble > & GetElmtBndNormDirElmtLen (const int nbnd) const
 
void StdDerivBaseOnTraceMat (Array< OneD, DNekMatSharedPtr > &DerivMat)
 
void PhysDerivBaseOnTraceMat (const int traceid, Array< OneD, DNekMatSharedPtr > &DerivMat)
 
void PhysBaseOnTraceMat (const int traceid, DNekMatSharedPtr &BdataMat)
 
void GenGeomFactors ()
 Handles generation of geometry factors.
 
- Public Member Functions inherited from Nektar::StdRegions::StdExpansion
 StdExpansion ()
 Default Constructor.
 
 StdExpansion (const int numcoeffs, const int numbases, const LibUtilities::BasisKey &Ba=LibUtilities::NullBasisKey, const LibUtilities::BasisKey &Bb=LibUtilities::NullBasisKey, const LibUtilities::BasisKey &Bc=LibUtilities::NullBasisKey)
 Constructor.
 
 StdExpansion (const StdExpansion &T)
 Copy Constructor.
 
virtual ~StdExpansion ()
 Destructor.
 
int GetNumBases () const
 This function returns the number of 1D bases used in the expansion.
 
const Array< OneD, const LibUtilities::BasisSharedPtr > & GetBase () const
 This function gets the shared point to basis.
 
const LibUtilities::BasisSharedPtrGetBasis (int dir) const
 This function gets the shared point to basis in the dir direction.
 
int GetNcoeffs (void) const
 This function returns the total number of coefficients used in the expansion.
 
int GetTotPoints () const
 This function returns the total number of quadrature points used in the element.
 
LibUtilities::BasisType GetBasisType (const int dir) const
 This function returns the type of basis used in the dir direction.
 
int GetBasisNumModes (const int dir) const
 This function returns the number of expansion modes in the dir direction.
 
int EvalBasisNumModesMax (void) const
 This function returns the maximum number of expansion modes over all local directions.
 
LibUtilities::PointsType GetPointsType (const int dir) const
 This function returns the type of quadrature points used in the dir direction.
 
int GetNumPoints (const int dir) const
 This function returns the number of quadrature points in the dir direction.
 
const Array< OneD, const NekDouble > & GetPoints (const int dir) const
 This function returns a pointer to the array containing the quadrature points in dir direction.
 
int GetNverts () const
 This function returns the number of vertices of the expansion domain.
 
int GetTraceNcoeffs (const int i) const
 This function returns the number of expansion coefficients belonging to the i-th trace.
 
int GetTraceIntNcoeffs (const int i) const
 
int GetTraceNumPoints (const int i) const
 This function returns the number of quadrature points belonging to the i-th trace.
 
const LibUtilities::BasisKey GetTraceBasisKey (const int i, int k=-1, bool UseGLL=false) const
 This function returns the basis key belonging to the i-th trace.
 
LibUtilities::PointsKey GetTracePointsKey (const int i, int k=-1) const
 This function returns the basis key belonging to the i-th trace.
 
int NumBndryCoeffs (void) const
 
int NumDGBndryCoeffs (void) const
 
const LibUtilities::PointsKey GetNodalPointsKey () const
 This function returns the type of expansion Nodal point type if defined.
 
int GetNtraces () const
 Returns the number of trace elements connected to this element.
 
LibUtilities::ShapeType DetShapeType () const
 This function returns the shape of the expansion domain.
 
int GetShapeDimension () const
 
bool IsBoundaryInteriorExpansion () const
 
bool IsNodalNonTensorialExp ()
 
void NodalToModal (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
void BwdTrans (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 This function performs the Backward transformation from coefficient space to physical space.
 
void FwdTrans (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
void FwdTransBndConstrained (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
NekDouble Integral (const Array< OneD, const NekDouble > &inarray)
 This function integrates the specified function over the domain.
 
void FillMode (const int mode, Array< OneD, NekDouble > &outarray)
 This function fills the array outarray with the mode-th mode of the expansion.
 
void IProductWRTBase (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 this function calculates the inner product of a given function f with the different modes of the expansion
 
void IProductWRTDerivBase (const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
void IProductWRTDirectionalDerivBase (const Array< OneD, const NekDouble > &direction, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
int GetElmtId ()
 Get the element id of this expansion when used in a list by returning value of m_elmt_id.
 
void SetElmtId (const int id)
 Set the element id of this expansion when used in a list by returning value of m_elmt_id.
 
void GetCoords (Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2=NullNekDouble1DArray, Array< OneD, NekDouble > &coords_3=NullNekDouble1DArray)
 this function returns the physical coordinates of the quadrature points of the expansion
 
Array< OneD, Array< OneD, NekDouble > > GetCoords ()
 
void GetCoord (const Array< OneD, const NekDouble > &Lcoord, Array< OneD, NekDouble > &coord)
 given the coordinates of a point of the element in the local collapsed coordinate system, this function calculates the physical coordinates of the point
 
DNekMatSharedPtr GetStdMatrix (const StdMatrixKey &mkey)
 
DNekBlkMatSharedPtr GetStdStaticCondMatrix (const StdMatrixKey &mkey)
 
Array< OneD, const NekDoubleGetStdFac (const StdFacKey &mkey)
 
void NormVectorIProductWRTBase (const Array< OneD, const NekDouble > &Fx, Array< OneD, NekDouble > &outarray)
 
void NormVectorIProductWRTBase (const Array< OneD, const NekDouble > &Fx, const Array< OneD, NekDouble > &Fy, Array< OneD, NekDouble > &outarray)
 
void NormVectorIProductWRTBase (const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, const Array< OneD, const NekDouble > &Fz, Array< OneD, NekDouble > &outarray)
 
void NormVectorIProductWRTBase (const Array< OneD, const Array< OneD, NekDouble > > &Fvec, Array< OneD, NekDouble > &outarray)
 
DNekScalBlkMatSharedPtr GetLocStaticCondMatrix (const LocalRegions::MatrixKey &mkey)
 
void DropLocStaticCondMatrix (const LocalRegions::MatrixKey &mkey)
 
int CalcNumberOfCoefficients (const std::vector< unsigned int > &nummodes, int &modes_offset)
 
NekDouble StdPhysEvaluate (const Array< OneD, const NekDouble > &Lcoord, const Array< OneD, const NekDouble > &physvals)
 
int GetCoordim ()
 
void GetBoundaryMap (Array< OneD, unsigned int > &outarray)
 
void GetInteriorMap (Array< OneD, unsigned int > &outarray)
 
int GetVertexMap (const int localVertexId, bool useCoeffPacking=false)
 
void GetTraceToElementMap (const int tid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, Orientation traceOrient=eForwards, int P=-1, int Q=-1)
 
void GetTraceCoeffMap (const unsigned int traceid, Array< OneD, unsigned int > &maparray)
 
void GetElmtTraceToTraceMap (const unsigned int tid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, Orientation traceOrient=eForwards, int P=-1, int Q=-1)
 
void GetTraceInteriorToElementMap (const int tid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, const Orientation traceOrient=eForwards)
 
void GetTraceNumModes (const int tid, int &numModes0, int &numModes1, const Orientation traceOrient=eDir1FwdDir1_Dir2FwdDir2)
 
void MultiplyByQuadratureMetric (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
void MultiplyByStdQuadratureMetric (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
DNekMatSharedPtr CreateGeneralMatrix (const StdMatrixKey &mkey)
 this function generates the mass matrix \(\mathbf{M}[i][j] = \int \phi_i(\mathbf{x}) \phi_j(\mathbf{x}) d\mathbf{x}\)
 
void GeneralMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void MassMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void LaplacianMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void ReduceOrderCoeffs (int numMin, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
void SVVLaplacianFilter (Array< OneD, NekDouble > &array, const StdMatrixKey &mkey)
 
void ExponentialFilter (Array< OneD, NekDouble > &array, const NekDouble alpha, const NekDouble exponent, const NekDouble cutoff)
 
void LaplacianMatrixOp (const int k1, const int k2, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void WeakDerivMatrixOp (const int i, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void WeakDirectionalDerivMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void MassLevelCurvatureMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void LinearAdvectionMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void LinearAdvectionDiffusionReactionMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey, bool addDiffusionTerm=true)
 
void HelmholtzMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
DNekMatSharedPtr GenMatrix (const StdMatrixKey &mkey)
 
void PhysDeriv (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d0, Array< OneD, NekDouble > &out_d1=NullNekDouble1DArray, Array< OneD, NekDouble > &out_d2=NullNekDouble1DArray)
 
void PhysDeriv (const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
void PhysDirectionalDeriv (const Array< OneD, const NekDouble > &inarray, const Array< OneD, const NekDouble > &direction, Array< OneD, NekDouble > &outarray)
 
void StdPhysDeriv (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d0, Array< OneD, NekDouble > &out_d1=NullNekDouble1DArray, Array< OneD, NekDouble > &out_d2=NullNekDouble1DArray)
 
NekDouble PhysEvaluate (const Array< OneD, const NekDouble > &coords, const Array< OneD, const NekDouble > &physvals)
 This function evaluates the expansion at a single (arbitrary) point of the domain.
 
NekDouble PhysEvaluate (const Array< OneD, NekDouble > &coord, const Array< OneD, const NekDouble > &inarray, std::array< NekDouble, 3 > &firstOrderDerivs)
 This function evaluates the first derivative of the expansion at a single (arbitrary) point of the domain.
 
NekDouble PhysEvaluate (const Array< OneD, NekDouble > &coord, const Array< OneD, const NekDouble > &inarray, std::array< NekDouble, 3 > &firstOrderDerivs, std::array< NekDouble, 6 > &secondOrderDerivs)
 
NekDouble PhysEvaluate (const Array< OneD, DNekMatSharedPtr > &I, const Array< OneD, const NekDouble > &physvals)
 This function evaluates the expansion at a single (arbitrary) point of the domain.
 
NekDouble PhysEvaluateBasis (const Array< OneD, const NekDouble > &coords, int mode)
 This function evaluates the basis function mode mode at a point coords of the domain.
 
void ReOrientTracePhysMap (const StdRegions::Orientation orient, Array< OneD, int > &idmap, const int nq0, const int nq1, bool Forwards=true)
 
void LocCoordToLocCollapsed (const Array< OneD, const NekDouble > &xi, Array< OneD, NekDouble > &eta)
 Convert local cartesian coordinate xi into local collapsed coordinates eta.
 
void LocCollapsedToLocCoord (const Array< OneD, const NekDouble > &eta, Array< OneD, NekDouble > &xi)
 Convert local collapsed coordinates eta into local cartesian coordinate xi.
 
void PhysInterp (std::shared_ptr< StdExpansion > fromExp, const Array< OneD, const NekDouble > &fromData, Array< OneD, NekDouble > &toData, bool Transpose=false)
 interpolate from one set of quadrature points available from FromExp to the set of quadrature points in the current expansion. If the points are the same this routine will just copy the data
 
virtual int v_CalcNumberOfCoefficients (const std::vector< unsigned int > &nummodes, int &modes_offset)
 
virtual void v_NormVectorIProductWRTBase (const Array< OneD, const NekDouble > &Fx, Array< OneD, NekDouble > &outarray)
 
virtual void v_NormVectorIProductWRTBase (const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray)
 
virtual void v_NormVectorIProductWRTBase (const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, const Array< OneD, const NekDouble > &Fz, Array< OneD, NekDouble > &outarray)
 
virtual void v_NormVectorIProductWRTBase (const Array< OneD, const Array< OneD, NekDouble > > &Fvec, Array< OneD, NekDouble > &outarray)
 
virtual DNekScalBlkMatSharedPtr v_GetLocStaticCondMatrix (const LocalRegions::MatrixKey &mkey)
 
virtual void v_DropLocStaticCondMatrix (const LocalRegions::MatrixKey &mkey)
 
NekDouble Linf (const Array< OneD, const NekDouble > &phys, const Array< OneD, const NekDouble > &sol=NullNekDouble1DArray)
 Function to evaluate the discrete \( L_\infty\) error \( |\epsilon|_\infty = \max |u - u_{exact}|\) where \( u_{exact}\) is given by the array sol.
 
NekDouble L2 (const Array< OneD, const NekDouble > &phys, const Array< OneD, const NekDouble > &sol=NullNekDouble1DArray)
 Function to evaluate the discrete \( L_2\) error, \( | \epsilon |_{2} = \left [ \int^1_{-1} [u - u_{exact}]^2 dx \right]^{1/2} d\xi_1 \) where \( u_{exact}\) is given by the array sol.
 
NekDouble H1 (const Array< OneD, const NekDouble > &phys, const Array< OneD, const NekDouble > &sol=NullNekDouble1DArray)
 Function to evaluate the discrete \( H^1\) error, \( | \epsilon |^1_{2} = \left [ \int^1_{-1} [u - u_{exact}]^2 + \nabla(u - u_{exact})\cdot\nabla(u - u_{exact})\cdot dx \right]^{1/2} d\xi_1 \) where \( u_{exact}\) is given by the array sol.
 
const LibUtilities::PointsKeyVector GetPointsKeys () const
 
DNekMatSharedPtr BuildInverseTransformationMatrix (const DNekScalMatSharedPtr &m_transformationmatrix)
 
void PhysInterpToSimplexEquiSpaced (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, int npset=-1)
 This function performs an interpolation from the physical space points provided at input into an array of equispaced points which are not the collapsed coordinate. So for a tetrahedron you will only get a tetrahedral number of values.
 
void PhysInterpToGLL (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, int npset=-1)
 
void PhysInterpToPoints (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, int npset, MatrixType distrib)
 
void GetSimplexEquiSpacedConnectivity (Array< OneD, int > &conn, bool standard=true)
 This function provides the connectivity of local simplices (triangles or tets) to connect the equispaced data points provided by PhysInterpToSimplexEquiSpaced.
 
void EquiSpacedToCoeffs (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 This function performs a projection/interpolation from the equispaced points sometimes used in post-processing onto the coefficient space.
 
void EquiSpacedToPhys (const int nequi, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
template<class T >
std::shared_ptr< T > as ()
 
void GenStdMatBwdDeriv (const int dir, DNekMatSharedPtr &mat)
 

Protected Member Functions

void ComputeLaplacianMetric ()
 
void ComputeQuadratureMetric ()
 
void ComputeGmatcdotMF (const Array< TwoD, const NekDouble > &df, const Array< OneD, const NekDouble > &direction, Array< OneD, Array< OneD, NekDouble > > &dfdir)
 
Array< OneD, NekDoubleGetMF (const int dir, const int shapedim, const StdRegions::VarCoeffMap &varcoeffs)
 
Array< OneD, NekDoubleGetMFDiv (const int dir, const StdRegions::VarCoeffMap &varcoeffs)
 
Array< OneD, NekDoubleGetMFMag (const int dir, const StdRegions::VarCoeffMap &varcoeffs)
 
void v_FwdTrans (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
 Forward transform from physical quadrature space stored in inarray and evaluate the expansion coefficients and store in (this)->m_coeffs.
 
NekDouble v_PhysEvaluate (const Array< OneD, const NekDouble > &coord, const Array< OneD, const NekDouble > &physvals) override
 
void v_MultiplyByQuadratureMetric (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
 
virtual void v_DivideByQuadratureMetric (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
virtual void v_ComputeLaplacianMetric ()
 
virtual StdRegions::StdExpansionSharedPtr v_GetStdExp () const
 
virtual StdRegions::StdExpansionSharedPtr v_GetLinStdExp (void) const
 
int v_GetCoordim () const override
 
void v_GetCoords (Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3) override
 
virtual DNekScalMatSharedPtr v_GetLocMatrix (const LocalRegions::MatrixKey &mkey)
 
virtual void v_DropLocMatrix (const LocalRegions::MatrixKey &mkey)
 
virtual DNekMatSharedPtr v_BuildTransformationMatrix (const DNekScalMatSharedPtr &r_bnd, const StdRegions::MatrixType matrixType)
 
virtual DNekMatSharedPtr v_BuildVertexMatrix (const DNekScalMatSharedPtr &r_bnd)
 
virtual void v_ExtractDataToCoeffs (const NekDouble *data, const std::vector< unsigned int > &nummodes, const int nmodes_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType)
 
virtual void v_AddEdgeNormBoundaryInt (const int edge, const std::shared_ptr< Expansion > &EdgeExp, const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray)
 
virtual void v_AddEdgeNormBoundaryInt (const int edge, const std::shared_ptr< Expansion > &EdgeExp, const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
 
virtual void v_AddFaceNormBoundaryInt (const int face, const std::shared_ptr< Expansion > &FaceExp, const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
 
virtual void v_DGDeriv (const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, ExpansionSharedPtr > &EdgeExp, Array< OneD, Array< OneD, NekDouble > > &coeffs, Array< OneD, NekDouble > &outarray)
 
virtual NekDouble v_VectorFlux (const Array< OneD, Array< OneD, NekDouble > > &vec)
 
virtual void v_NormalTraceDerivFactors (Array< OneD, Array< OneD, NekDouble > > &factors, Array< OneD, Array< OneD, NekDouble > > &d0factors, Array< OneD, Array< OneD, NekDouble > > &d1factors)
 
virtual void v_AlignVectorToCollapsedDir (const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
 
virtual StdRegions::Orientation v_GetTraceOrient (int trace)
 
void v_SetCoeffsToOrientation (StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
 
virtual void v_GetTraceQFactors (const int trace, Array< OneD, NekDouble > &outarray)
 
virtual void v_GetTracePhysVals (const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient)
 
virtual void v_GetLocTracePhysVals (const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp, const NekDouble *inarray, Array< OneD, NekDouble > &outarray)
 
virtual void v_GetTracePhysMap (const int edge, Array< OneD, int > &outarray)
 
virtual void v_ReOrientTracePhysVals (const StdRegions::Orientation orient, const Array< OneD, const NekDouble > &in, Array< OneD, NekDouble > &out, const int nq0, const int nq1, bool Forwards)
 
virtual void v_ComputeTraceNormal (const int id)
 
virtual const Array< OneD, const NekDouble > & v_GetPhysNormals ()
 
virtual void v_SetPhysNormals (Array< OneD, const NekDouble > &normal)
 
virtual void v_SetUpPhysNormals (const int id)
 
virtual void v_AddRobinMassMatrix (const int face, const Array< OneD, const NekDouble > &primCoeffs, DNekMatSharedPtr &inoutmat)
 
virtual void v_AddRobinTraceContribution (const int traceid, const Array< OneD, const NekDouble > &primCoeffs, const Array< OneD, NekDouble > &incoeffs, Array< OneD, NekDouble > &coeffs)
 
virtual void v_TraceNormLen (const int traceid, NekDouble &h, NekDouble &p)
 
virtual void v_GenTraceExp (const int traceid, ExpansionSharedPtr &exp)
 
- Protected Member Functions inherited from Nektar::StdRegions::StdExpansion
DNekMatSharedPtr CreateStdMatrix (const StdMatrixKey &mkey)
 
std::shared_ptr< Array< OneD, const NekDouble > > CreateStdFac (const StdFacKey &mkey)
 
DNekBlkMatSharedPtr CreateStdStaticCondMatrix (const StdMatrixKey &mkey)
 Create the static condensation of a matrix when using a boundary interior decomposition.
 
void GeneralMatrixOp_MatFree (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void MassMatrixOp_MatFree (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void LaplacianMatrixOp_MatFree (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void LaplacianMatrixOp_MatFree_Kernel (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp)
 
void LaplacianMatrixOp_MatFree_GenericImpl (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void LaplacianMatrixOp_MatFree (const int k1, const int k2, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void WeakDerivMatrixOp_MatFree (const int i, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void WeakDirectionalDerivMatrixOp_MatFree (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void MassLevelCurvatureMatrixOp_MatFree (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void LinearAdvectionMatrixOp_MatFree (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void LinearAdvectionDiffusionReactionMatrixOp_MatFree (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey, bool addDiffusionTerm=true)
 
void HelmholtzMatrixOp_MatFree (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
void HelmholtzMatrixOp_MatFree_GenericImpl (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
virtual NekDouble v_StdPhysEvaluate (const Array< OneD, const NekDouble > &Lcoord, const Array< OneD, const NekDouble > &physvals)
 
virtual void v_GenStdMatBwdDeriv (const int dir, DNekMatSharedPtr &mat)
 
virtual void v_MultiplyByStdQuadratureMetric (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
template<int DIR, bool DERIV = false, bool DERIV2 = false>
NekDouble BaryEvaluate (const NekDouble &coord, const NekDouble *physvals, NekDouble &deriv, NekDouble &deriv2)
 This function performs the barycentric interpolation of the polynomial stored in coord at a point physvals using barycentric interpolation weights in direction.
 
template<int DIR>
NekDouble BaryEvaluateBasis (const NekDouble &coord, const int &mode)
 
template<int DIR, bool DERIV = false, bool DERIV2 = false>
NekDouble BaryEvaluate (const NekDouble &coord, const NekDouble *physvals)
 Helper function to pass an unused value by reference into BaryEvaluate.
 
template<int DIR, bool DERIV = false, bool DERIV2 = false>
NekDouble BaryEvaluate (const NekDouble &coord, const NekDouble *physvals, NekDouble &deriv)
 
virtual int v_GetNverts () const =0
 
virtual int v_GetNtraces () const =0
 
virtual int v_NumBndryCoeffs () const =0
 
virtual int v_NumDGBndryCoeffs () const =0
 
virtual int v_GetTraceNcoeffs (const int i) const =0
 
virtual int v_GetTraceIntNcoeffs (const int i) const =0
 
virtual int v_GetTraceNumPoints (const int i) const =0
 
virtual const LibUtilities::BasisKey v_GetTraceBasisKey (const int i, const int k, bool UseGLL=false) const
 
virtual LibUtilities::PointsKey v_GetTracePointsKey (const int i, const int j) const
 
virtual const LibUtilities::PointsKey v_GetNodalPointsKey () const
 
virtual LibUtilities::ShapeType v_DetShapeType () const =0
 
virtual int v_GetShapeDimension () const =0
 
virtual bool v_IsCollocatedBasis () const =0
 
virtual bool v_IsBoundaryInteriorExpansion () const
 
virtual bool v_IsNodalNonTensorialExp ()
 
virtual void v_NodalToModal (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
virtual void v_BwdTrans (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)=0
 
virtual void v_IProductWRTBase (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)=0
 Calculates the inner product of a given function f with the different modes of the expansion.
 
virtual void v_IProductWRTDerivBase (const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
virtual void v_IProductWRTDirectionalDerivBase (const Array< OneD, const NekDouble > &direction, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
virtual void v_FwdTransBndConstrained (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
virtual void v_PhysDeriv (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d1, Array< OneD, NekDouble > &out_d2, Array< OneD, NekDouble > &out_d3)
 Calculate the derivative of the physical points.
 
virtual void v_PhysDeriv (const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d0)
 Calculate the derivative of the physical points in a given direction.
 
virtual void v_PhysDirectionalDeriv (const Array< OneD, const NekDouble > &inarray, const Array< OneD, const NekDouble > &direction, Array< OneD, NekDouble > &outarray)
 Physical derivative along a direction vector.
 
virtual void v_StdPhysDeriv (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d1, Array< OneD, NekDouble > &out_d2, Array< OneD, NekDouble > &out_d3)
 
virtual NekDouble v_PhysEvaluateInterp (const Array< OneD, DNekMatSharedPtr > &I, const Array< OneD, const NekDouble > &physvals)
 
virtual NekDouble v_PhysEvalFirstDeriv (const Array< OneD, NekDouble > &coord, const Array< OneD, const NekDouble > &inarray, std::array< NekDouble, 3 > &firstOrderDerivs)
 
virtual NekDouble v_PhysEvalFirstSecondDeriv (const Array< OneD, NekDouble > &coord, const Array< OneD, const NekDouble > &inarray, std::array< NekDouble, 3 > &firstOrderDerivs, std::array< NekDouble, 6 > &secondOrderDerivs)
 
virtual NekDouble v_PhysEvaluateBasis (const Array< OneD, const NekDouble > &coords, int mode)
 
virtual void v_LocCoordToLocCollapsed (const Array< OneD, const NekDouble > &xi, Array< OneD, NekDouble > &eta)
 
virtual void v_LocCollapsedToLocCoord (const Array< OneD, const NekDouble > &eta, Array< OneD, NekDouble > &xi)
 
virtual void v_PhysInterp (std::shared_ptr< StdExpansion > FromExp, const Array< OneD, const NekDouble > &fromData, Array< OneD, NekDouble > &toData, bool Transpose)
 
virtual void v_FillMode (const int mode, Array< OneD, NekDouble > &outarray)
 
virtual DNekMatSharedPtr v_GenMatrix (const StdMatrixKey &mkey)
 
virtual DNekMatSharedPtr v_CreateStdMatrix (const StdMatrixKey &mkey)
 
virtual void v_GetCoord (const Array< OneD, const NekDouble > &Lcoord, Array< OneD, NekDouble > &coord)
 
virtual void v_GetBoundaryMap (Array< OneD, unsigned int > &outarray)
 
virtual void v_GetInteriorMap (Array< OneD, unsigned int > &outarray)
 
virtual int v_GetVertexMap (int localVertexId, bool useCoeffPacking=false)
 
virtual void v_GetTraceToElementMap (const int tid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, Orientation traceOrient=eForwards, int P=-1, int Q=-1)
 
virtual void v_GetTraceCoeffMap (const unsigned int traceid, Array< OneD, unsigned int > &maparray)
 
virtual void v_GetElmtTraceToTraceMap (const unsigned int tid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, Orientation traceOrient=eForwards, int P=-1, int Q=-1)
 
virtual void v_GetTraceInteriorToElementMap (const int eid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, const Orientation traceOrient=eForwards)
 
virtual void v_GetTraceNumModes (const int fid, int &numModes0, int &numModes1, Orientation traceOrient=eDir1FwdDir1_Dir2FwdDir2)
 
virtual void v_GetVertexPhysVals (const int vertex, const Array< OneD, const NekDouble > &inarray, NekDouble &outarray)
 
virtual void v_MassMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
virtual void v_LaplacianMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
virtual void v_SVVLaplacianFilter (Array< OneD, NekDouble > &array, const StdMatrixKey &mkey)
 
virtual void v_ExponentialFilter (Array< OneD, NekDouble > &array, const NekDouble alpha, const NekDouble exponent, const NekDouble cutoff)
 
virtual void v_ReduceOrderCoeffs (int numMin, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
virtual void v_LaplacianMatrixOp (const int k1, const int k2, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
virtual void v_WeakDerivMatrixOp (const int i, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
virtual void v_WeakDirectionalDerivMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
virtual void v_MassLevelCurvatureMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
virtual void v_LinearAdvectionMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
virtual void v_LinearAdvectionDiffusionReactionMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey, bool addDiffusionTerm=true)
 
virtual void v_HelmholtzMatrixOp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
virtual void v_LaplacianMatrixOp_MatFree (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
virtual void v_LaplacianMatrixOp_MatFree_Kernel (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp)
 
virtual void v_HelmholtzMatrixOp_MatFree (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
 
virtual DNekMatSharedPtr v_BuildInverseTransformationMatrix (const DNekScalMatSharedPtr &m_transformationmatrix)
 
virtual void v_GetSimplexEquiSpacedConnectivity (Array< OneD, int > &conn, bool standard=true)
 
virtual void v_ReOrientTracePhysMap (const StdRegions::Orientation orient, Array< OneD, int > &idmap, const int nq0, const int nq1, bool Forwards)
 

Protected Attributes

LibUtilities::NekManager< IndexMapKey, IndexMapValues, IndexMapKey::opLessm_indexMapManager
 
std::map< int, ExpansionWeakPtrm_traceExp
 
SpatialDomains::Geometrym_geom
 
SpatialDomains::GeomFactorsUniquePtr m_geomFactors
 
MetricMap m_metrics
 
std::map< int, NormalVectorm_traceNormals
 
ExpansionWeakPtr m_elementLeft
 
ExpansionWeakPtr m_elementRight
 
int m_elementTraceLeft = -1
 
int m_elementTraceRight = -1
 
std::map< int, Array< OneD, NekDouble > > m_elmtBndNormDirElmtLen
 the element length in each element boundary(Vertex, edge or face) normal direction calculated based on the local m_geomFactors times the standard element length (which is 2.0)
 
- Protected Attributes inherited from Nektar::StdRegions::StdExpansion
Array< OneD, LibUtilities::BasisSharedPtrm_base
 
int m_elmt_id
 
int m_ncoeffs
 
std::vector< Array< OneD, const NekDouble > > m_weights
 
LibUtilities::NekManager< StdMatrixKey, DNekMat, StdMatrixKey::opLessm_stdMatrixManager
 
LibUtilities::NekManager< StdMatrixKey, DNekBlkMat, StdMatrixKey::opLessm_stdStaticCondMatrixManager
 
LibUtilities::NekManager< StdFacKey, Array< OneD, const NekDouble > > m_stdFacManager
 

Detailed Description

Definition at line 71 of file Expansion.h.

Constructor & Destructor Documentation

◆ Expansion() [1/2]

Nektar::LocalRegions::Expansion::Expansion ( SpatialDomains::Geometry pGeom)

Definition at line 43 of file Expansion.cpp.

45 std::bind(&Expansion::CreateIndexMap, this, std::placeholders::_1),
46 std::string("ExpansionIndexMap")),
48{
50
51 if (!m_geomFactors)
52 {
53 return;
54 }
55
56 if (!m_geomFactors->IsValid())
57 {
58 int nDim = m_base.size();
59 string type = "regular";
61 {
62 type = "deformed";
63 }
64
65 stringstream err;
66 err << nDim << "D " << type << " Jacobian not positive "
67 << "(element ID = " << m_geom->GetGlobalID() << ") "
68 << "(first vertex ID = " << m_geom->GetVid(0) << ")";
69 NEKERROR(ErrorUtil::ewarning, err.str());
70 }
71
72 m_traceExp.clear();
73}
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...
IndexMapValuesSharedPtr CreateIndexMap(const IndexMapKey &ikey)
SpatialDomains::Geometry * m_geom
Definition Expansion.h:306
std::map< int, ExpansionWeakPtr > m_traceExp
Definition Expansion.h:305
SpatialDomains::GeomFactorsUniquePtr m_geomFactors
Definition Expansion.h:307
void GenGeomFactors()
Handles generation of geometry factors.
Definition Expansion.h:482
LibUtilities::NekManager< IndexMapKey, IndexMapValues, IndexMapKey::opLess > m_indexMapManager
Definition Expansion.h:303
int GetVid(int i) const
Returns global id of vertex i of this object.
Definition Geometry.h:345
int GetGlobalID(void) const
Get the ID of this object.
Definition Geometry.h:314
Array< OneD, LibUtilities::BasisSharedPtr > m_base
@ eDeformed
Geometry is curved or has non-constant factors.

References Nektar::SpatialDomains::eDeformed, Nektar::ErrorUtil::ewarning, GenGeomFactors(), Nektar::SpatialDomains::Geometry::GetGlobalID(), Nektar::SpatialDomains::Geometry::GetVid(), Nektar::StdRegions::StdExpansion::m_base, m_geom, m_geomFactors, m_traceExp, and NEKERROR.

◆ Expansion() [2/2]

Nektar::LocalRegions::Expansion::Expansion ( const Expansion pSrc)

Definition at line 75 of file Expansion.cpp.

76 : StdExpansion(pSrc), m_indexMapManager(pSrc.m_indexMapManager),
77 m_geom(pSrc.m_geom)
78{
81 *(pSrc.m_geomFactors));
82}
static std::unique_ptr< DataType, UniquePtrDeleter > AllocateUniquePtr(const Args &...args)
StdExpansion()
Default Constructor.

References Nektar::ObjPoolManager< DataType >::AllocateUniquePtr(), and m_geomFactors.

◆ ~Expansion()

Nektar::LocalRegions::Expansion::~Expansion ( )
override

Definition at line 84 of file Expansion.cpp.

85{
86}

Member Function Documentation

◆ AddEdgeNormBoundaryInt() [1/2]

void Nektar::LocalRegions::Expansion::AddEdgeNormBoundaryInt ( const int  edge,
const std::shared_ptr< Expansion > &  EdgeExp,
const Array< OneD, const NekDouble > &  Fn,
Array< OneD, NekDouble > &  outarray 
)

Definition at line 126 of file Expansion.cpp.

129{
130 v_AddEdgeNormBoundaryInt(edge, EdgeExp, Fn, outarray);
131}
virtual void v_AddEdgeNormBoundaryInt(const int edge, const std::shared_ptr< Expansion > &EdgeExp, const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray)

References v_AddEdgeNormBoundaryInt().

◆ AddEdgeNormBoundaryInt() [2/2]

void Nektar::LocalRegions::Expansion::AddEdgeNormBoundaryInt ( const int  edge,
const std::shared_ptr< Expansion > &  EdgeExp,
const Array< OneD, const NekDouble > &  Fx,
const Array< OneD, const NekDouble > &  Fy,
Array< OneD, NekDouble > &  outarray 
)

Definition at line 118 of file Expansion.cpp.

122{
123 v_AddEdgeNormBoundaryInt(edge, EdgeExp, Fx, Fy, outarray);
124}

References v_AddEdgeNormBoundaryInt().

Referenced by Nektar::LocalRegions::Expansion2D::v_AddEdgeNormBoundaryInt().

◆ AddFaceNormBoundaryInt()

void Nektar::LocalRegions::Expansion::AddFaceNormBoundaryInt ( const int  face,
const std::shared_ptr< Expansion > &  FaceExp,
const Array< OneD, const NekDouble > &  Fn,
Array< OneD, NekDouble > &  outarray 
)

Definition at line 133 of file Expansion.cpp.

136{
137 v_AddFaceNormBoundaryInt(face, FaceExp, Fn, outarray);
138}
virtual void v_AddFaceNormBoundaryInt(const int face, const std::shared_ptr< Expansion > &FaceExp, const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)

References v_AddFaceNormBoundaryInt().

◆ AddRobinMassMatrix()

void Nektar::LocalRegions::Expansion::AddRobinMassMatrix ( const int  traceid,
const Array< OneD, const NekDouble > &  primCoeffs,
DNekMatSharedPtr inoutmat 
)
inline

Definition at line 268 of file Expansion.h.

271 {
272 v_AddRobinMassMatrix(traceid, primCoeffs, inoutmat);
273 }
virtual void v_AddRobinMassMatrix(const int face, const Array< OneD, const NekDouble > &primCoeffs, DNekMatSharedPtr &inoutmat)

References v_AddRobinMassMatrix().

◆ AddRobinTraceContribution()

void Nektar::LocalRegions::Expansion::AddRobinTraceContribution ( const int  traceid,
const Array< OneD, const NekDouble > &  primCoeffs,
const Array< OneD, NekDouble > &  incoeffs,
Array< OneD, NekDouble > &  coeffs 
)
inline

Definition at line 280 of file Expansion.h.

283 {
284 v_AddRobinTraceContribution(traceid, primCoeffs, incoeffs, coeffs);
285 }
virtual void v_AddRobinTraceContribution(const int traceid, const Array< OneD, const NekDouble > &primCoeffs, const Array< OneD, NekDouble > &incoeffs, Array< OneD, NekDouble > &coeffs)

References v_AddRobinTraceContribution().

◆ AlignVectorToCollapsedDir()

void Nektar::LocalRegions::Expansion::AlignVectorToCollapsedDir ( const int  dir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, Array< OneD, NekDouble > > &  outarray 
)
inline

Definition at line 164 of file Expansion.h.

167 {
168 v_AlignVectorToCollapsedDir(dir, inarray, outarray);
169 }
virtual void v_AlignVectorToCollapsedDir(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)

References v_AlignVectorToCollapsedDir().

◆ BuildTransformationMatrix()

DNekMatSharedPtr Nektar::LocalRegions::Expansion::BuildTransformationMatrix ( const DNekScalMatSharedPtr r_bnd,
const StdRegions::MatrixType  matrixType 
)

Definition at line 99 of file Expansion.cpp.

101{
102 return v_BuildTransformationMatrix(r_bnd, matrixType);
103}
virtual DNekMatSharedPtr v_BuildTransformationMatrix(const DNekScalMatSharedPtr &r_bnd, const StdRegions::MatrixType matrixType)

References v_BuildTransformationMatrix().

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

◆ BuildVertexMatrix()

DNekMatSharedPtr Nektar::LocalRegions::Expansion::BuildVertexMatrix ( const DNekScalMatSharedPtr r_bnd)

Definition at line 105 of file Expansion.cpp.

106{
107 return v_BuildVertexMatrix(r_bnd);
108}
virtual DNekMatSharedPtr v_BuildVertexMatrix(const DNekScalMatSharedPtr &r_bnd)

References v_BuildVertexMatrix().

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

◆ ComputeGmatcdotMF()

void Nektar::LocalRegions::Expansion::ComputeGmatcdotMF ( const Array< TwoD, const NekDouble > &  df,
const Array< OneD, const NekDouble > &  direction,
Array< OneD, Array< OneD, NekDouble > > &  dfdir 
)
protected

Definition at line 783 of file Expansion.cpp.

786{
787 int shapedim = dfdir.size();
788 int coordim = GetCoordim();
789 int nqtot = direction.size() / coordim;
790
791 for (int j = 0; j < shapedim; j++)
792 {
793 dfdir[j] = Array<OneD, NekDouble>(nqtot, 0.0);
794 for (int k = 0; k < coordim; k++)
795 {
796 if (m_geomFactors->GetGtype() == SpatialDomains::eDeformed)
797 {
798 Vmath::Vvtvp(nqtot, &df[shapedim * k + j][0], 1,
799 &direction[k * nqtot], 1, &dfdir[j][0], 1,
800 &dfdir[j][0], 1);
801 }
802 else
803 {
804 Vmath::Svtvp(nqtot, df[shapedim * k + j][0],
805 &direction[k * nqtot], 1, &dfdir[j][0], 1,
806 &dfdir[j][0], 1);
807 }
808 }
809 }
810}
void Svtvp(int n, const T alpha, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Svtvp (scalar times vector plus vector): z = alpha*x + y.
Definition Vmath.hpp:396
void Vvtvp(int n, const T *w, const int incw, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
vvtvp (vector times vector plus vector): z = w*x + y
Definition Vmath.hpp:366

References Nektar::SpatialDomains::eDeformed, Nektar::StdRegions::StdExpansion::GetCoordim(), m_geomFactors, Vmath::Svtvp(), and Vmath::Vvtvp().

Referenced by Nektar::LocalRegions::Expansion2D::CreateMatrix(), Nektar::LocalRegions::HexExp::v_IProductWRTDirectionalDerivBase(), Nektar::LocalRegions::TriExp::v_IProductWRTDirectionalDerivBase(), and Nektar::LocalRegions::Expansion3D::v_PhysDirectionalDeriv().

◆ ComputeLaplacianMetric()

void Nektar::LocalRegions::Expansion::ComputeLaplacianMetric ( )
protected

◆ ComputeQuadratureMetric()

void Nektar::LocalRegions::Expansion::ComputeQuadratureMetric ( )
protected

Definition at line 547 of file Expansion.cpp.

548{
549 unsigned int nqtot = GetTotPoints();
550 SpatialDomains::GeomType type = m_geomFactors->GetGtype();
551 if (type == SpatialDomains::eRegular ||
553 {
555 Array<OneD, NekDouble>(nqtot, m_geomFactors->GetJac()[0]);
556 }
557 else
558 {
560 }
561
564}
int GetTotPoints() const
This function returns the total number of quadrature points used in the element.
virtual void v_MultiplyByStdQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
GeomType
Indicates the type of element geometry.
@ eRegular
Geometry is straight-sided with constant geometric factors.
@ eMovingRegular
Currently unused.

References Nektar::LocalRegions::eMetricQuadrature, Nektar::SpatialDomains::eMovingRegular, Nektar::SpatialDomains::eRegular, Nektar::StdRegions::StdExpansion::GetTotPoints(), m_geomFactors, m_metrics, and Nektar::StdRegions::StdExpansion::v_MultiplyByStdQuadratureMetric().

Referenced by v_DivideByQuadratureMetric(), and v_MultiplyByQuadratureMetric().

◆ ComputeTraceNormal()

void Nektar::LocalRegions::Expansion::ComputeTraceNormal ( const int  id)
inline

Definition at line 248 of file Expansion.h.

249 {
251 }
virtual void v_ComputeTraceNormal(const int id)

References v_ComputeTraceNormal().

◆ CreateIndexMap()

IndexMapValuesSharedPtr Nektar::LocalRegions::Expansion::CreateIndexMap ( const IndexMapKey ikey)

Definition at line 185 of file Expansion.cpp.

186{
187 IndexMapValuesSharedPtr returnval;
188
189 IndexMapType itype = ikey.GetIndexMapType();
190
191 int entity = ikey.GetIndexEntity();
192
193 StdRegions::Orientation orient = ikey.GetIndexOrientation();
194
195 Array<OneD, unsigned int> map;
196 Array<OneD, int> sign;
197
198 switch (itype)
199 {
200 case eEdgeToElement:
201 {
202 GetTraceToElementMap(entity, map, sign, orient);
203 }
204 break;
205 case eFaceToElement:
206 {
207 GetTraceToElementMap(entity, map, sign, orient);
208 }
209 break;
210 case eEdgeInterior:
211 {
212 ASSERTL0(false, "Boundary Index Map not implemented yet.");
213 // v_GetEdgeInteriorMap(entity,orient,map,sign);
214 }
215 break;
216 case eFaceInterior:
217 {
218 ASSERTL0(false, "Boundary Index Map not implemented yet.");
219 // v_GetFaceInteriorMap(entity,orient,map,sign);
220 }
221 break;
222 case eBoundary:
223 {
224 ASSERTL0(false, "Boundary Index Map not implemented yet.");
225 }
226 break;
227 case eVertex:
228 {
229 ASSERTL0(false, "Vertex Index Map not implemented yet.");
230 }
231 break;
232 default:
233 {
234 ASSERTL0(false, "The Index Map you are requiring "
235 "is not between the possible options.");
236 }
237 }
238
240
241 for (int i = 0; i < map.size(); i++)
242 {
243 (*returnval)[i].index = map[i];
244 (*returnval)[i].sign = sign[i];
245 }
246
247 return returnval;
248}
#define ASSERTL0(condition, msg)
#define sign(a, b)
return the sign(b)*a
Definition Polylib.cpp:47
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
void GetTraceToElementMap(const int tid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, Orientation traceOrient=eForwards, int P=-1, int Q=-1)
std::shared_ptr< IndexMapValues > IndexMapValuesSharedPtr

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL0, Nektar::LocalRegions::eBoundary, Nektar::LocalRegions::eEdgeInterior, Nektar::LocalRegions::eEdgeToElement, Nektar::LocalRegions::eFaceInterior, Nektar::LocalRegions::eFaceToElement, Nektar::LocalRegions::eVertex, Nektar::LocalRegions::IndexMapKey::GetIndexEntity(), Nektar::LocalRegions::IndexMapKey::GetIndexMapType(), Nektar::LocalRegions::IndexMapKey::GetIndexOrientation(), Nektar::StdRegions::StdExpansion::GetTraceToElementMap(), and sign.

◆ CreateStaticCondMatrix()

DNekScalBlkMatSharedPtr Nektar::LocalRegions::Expansion::CreateStaticCondMatrix ( const MatrixKey mkey)

Definition at line 297 of file Expansion.cpp.

298{
299 DNekScalBlkMatSharedPtr returnval;
300
302 "Geometric information is not set up");
303
304 // set up block matrix system
305 unsigned int nbdry = NumBndryCoeffs();
306 unsigned int nint = (unsigned int)(m_ncoeffs - nbdry);
307 unsigned int exp_size[] = {nbdry, nint};
308 unsigned int nblks = 2;
310 nblks, nblks, exp_size, exp_size);
311 // Really need a constructor which takes Arrays
312 NekDouble factor = 1.0;
313
314 switch (mkey.GetMatrixType())
315 {
316 // this can only use stdregions statically condensed system
317 // for mass matrix
319 if ((m_geomFactors->GetGtype() == SpatialDomains::eDeformed) ||
320 (mkey.GetNVarCoeff()))
321 {
322 factor = 1.0;
323 goto UseLocRegionsMatrix;
324 }
325 else
326 {
327 factor = (m_geomFactors->GetJac())[0];
328 goto UseStdRegionsMatrix;
329 }
330 break;
331 default: // use Deformed case for both
332 // regular and deformed geometries
333 factor = 1.0;
334 goto UseLocRegionsMatrix;
335 break;
336 UseStdRegionsMatrix:
337 {
338 NekDouble invfactor = 1.0 / factor;
339 NekDouble one = 1.0;
342 DNekMatSharedPtr Asubmat;
343
344 returnval->SetBlock(
345 0, 0,
347 factor, Asubmat = mat->GetBlock(0, 0)));
348 returnval->SetBlock(
349 0, 1,
351 one, Asubmat = mat->GetBlock(0, 1)));
352 returnval->SetBlock(
353 1, 0,
355 factor, Asubmat = mat->GetBlock(1, 0)));
356 returnval->SetBlock(
357 1, 1,
359 invfactor, Asubmat = mat->GetBlock(1, 1)));
360 }
361 break;
362 UseLocRegionsMatrix:
363 {
364 int i, j;
365 NekDouble invfactor = 1.0 / factor;
366 NekDouble one = 1.0;
367 DNekScalMat &mat = *GetLocMatrix(mkey);
376
377 Array<OneD, unsigned int> bmap(nbdry);
378 Array<OneD, unsigned int> imap(nint);
379 GetBoundaryMap(bmap);
380 GetInteriorMap(imap);
381
382 for (i = 0; i < nbdry; ++i)
383 {
384 for (j = 0; j < nbdry; ++j)
385 {
386 (*A)(i, j) = mat(bmap[i], bmap[j]);
387 }
388
389 for (j = 0; j < nint; ++j)
390 {
391 (*B)(i, j) = mat(bmap[i], imap[j]);
392 }
393 }
394
395 for (i = 0; i < nint; ++i)
396 {
397 for (j = 0; j < nbdry; ++j)
398 {
399 (*C)(i, j) = mat(imap[i], bmap[j]);
400 }
401
402 for (j = 0; j < nint; ++j)
403 {
404 (*D)(i, j) = mat(imap[i], imap[j]);
405 }
406 }
407
408 // Calculate static condensed system
409 if (nint)
410 {
411 D->Invert();
412 (*B) = (*B) * (*D);
413 (*A) = (*A) - (*B) * (*C);
414 }
415
417
418 returnval->SetBlock(
419 0, 0,
420 Atmp =
422 returnval->SetBlock(
423 0, 1,
425 returnval->SetBlock(
426 1, 0,
427 Atmp =
429 returnval->SetBlock(
430 1, 1,
432 D));
433
434 // Remove the local matrix from manager if using this option
435 // since we assume it is only created to generate static
436 // condensed system
437 v_DropLocMatrix(mkey);
438 }
439 }
440 return returnval;
441}
#define ASSERTL2(condition, msg)
Assert Level 2 – Debugging which is used FULLDEBUG compilation mode. This level assert is designed to...
virtual void v_DropLocMatrix(const LocalRegions::MatrixKey &mkey)
DNekScalMatSharedPtr GetLocMatrix(const LocalRegions::MatrixKey &mkey)
Definition Expansion.cpp:88
void GetBoundaryMap(Array< OneD, unsigned int > &outarray)
DNekBlkMatSharedPtr GetStdStaticCondMatrix(const StdMatrixKey &mkey)
void GetInteriorMap(Array< OneD, unsigned int > &outarray)
@ eNoGeomType
No type defined.
NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag > DNekScalMat
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekBlkMat > DNekBlkMatSharedPtr
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
std::shared_ptr< DNekMat > DNekMatSharedPtr

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL2, Nektar::SpatialDomains::eDeformed, Nektar::StdRegions::eMass, Nektar::SpatialDomains::eNoGeomType, Nektar::StdRegions::StdExpansion::GetBoundaryMap(), Nektar::StdRegions::StdExpansion::GetInteriorMap(), GetLocMatrix(), Nektar::StdRegions::StdMatrixKey::GetMatrixType(), Nektar::StdRegions::StdMatrixKey::GetNVarCoeff(), Nektar::StdRegions::StdExpansion::GetStdStaticCondMatrix(), m_geomFactors, Nektar::StdRegions::StdExpansion::m_ncoeffs, Nektar::StdRegions::StdExpansion::NumBndryCoeffs(), and v_DropLocMatrix().

◆ DGDeriv()

void Nektar::LocalRegions::Expansion::DGDeriv ( const int  dir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, ExpansionSharedPtr > &  EdgeExp,
Array< OneD, Array< OneD, NekDouble > > &  coeffs,
Array< OneD, NekDouble > &  outarray 
)

Definition at line 140 of file Expansion.cpp.

145{
146 v_DGDeriv(dir, inarray, EdgeExp, coeffs, outarray);
147}
virtual void v_DGDeriv(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, ExpansionSharedPtr > &EdgeExp, Array< OneD, Array< OneD, NekDouble > > &coeffs, Array< OneD, NekDouble > &outarray)

References v_DGDeriv().

◆ DivideByQuadratureMetric()

void Nektar::LocalRegions::Expansion::DivideByQuadratureMetric ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

Divided by the metric jacobi and quadrature weights.

Definition at line 194 of file Expansion.h.

197 {
198 v_DivideByQuadratureMetric(inarray, outarray);
199 }
virtual void v_DivideByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)

References v_DivideByQuadratureMetric().

◆ DropLocMatrix()

void Nektar::LocalRegions::Expansion::DropLocMatrix ( const LocalRegions::MatrixKey mkey)

◆ ExtractDataToCoeffs()

void Nektar::LocalRegions::Expansion::ExtractDataToCoeffs ( const NekDouble data,
const std::vector< unsigned int > &  nummodes,
const int  nmodes_offset,
NekDouble coeffs,
std::vector< LibUtilities::BasisType > &  fromType 
)

Definition at line 110 of file Expansion.cpp.

114{
115 v_ExtractDataToCoeffs(data, nummodes, nmodes_offset, coeffs, fromType);
116}
virtual void v_ExtractDataToCoeffs(const NekDouble *data, const std::vector< unsigned int > &nummodes, const int nmodes_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType)

References v_ExtractDataToCoeffs().

Referenced by Nektar::LocalRegions::NodalPrismExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::NodalTetExp::v_ExtractDataToCoeffs(), and Nektar::LocalRegions::NodalTriExp::v_ExtractDataToCoeffs().

◆ GenGeomFactors()

void Nektar::LocalRegions::Expansion::GenGeomFactors ( )
inline

Handles generation of geometry factors.

Generate the geometric factors (i.e. derivatives of \(\chi\)) and related metrics.

See also
SpatialDomains::GeomFactors

Definition at line 482 of file Expansion.h.

483{
486}
GeomFactorsUniquePtr GenGeomFactors(LibUtilities::PointsKeyVector &keyTgt)
Used by Expansion to generate associated GeomFactors.
Definition Geometry.h:430
const LibUtilities::PointsKeyVector GetPointsKeys() const
std::vector< PointsKey > PointsKeyVector
Definition Points.h:313

References Nektar::SpatialDomains::Geometry::GenGeomFactors(), Nektar::StdRegions::StdExpansion::GetPointsKeys(), m_geom, and m_geomFactors.

Referenced by Expansion(), and Reset().

◆ GetElmtBndNormDirElmtLen()

const Array< OneD, const NekDouble > & Nektar::LocalRegions::Expansion::GetElmtBndNormDirElmtLen ( const int  nbnd) const

Definition at line 1107 of file Expansion.cpp.

1109{
1110 auto x = m_elmtBndNormDirElmtLen.find(nbnd);
1112 "m_elmtBndNormDirElmtLen normal not computed.");
1113 return x->second;
1114}
std::map< int, Array< OneD, NekDouble > > m_elmtBndNormDirElmtLen
the element length in each element boundary(Vertex, edge or face) normal direction calculated based o...
Definition Expansion.h:319

References ASSERTL0, and m_elmtBndNormDirElmtLen.

◆ GetGeom()

SpatialDomains::Geometry * Nektar::LocalRegions::Expansion::GetGeom ( ) const

◆ GetGeomFactors()

SpatialDomains::GeomFactors * Nektar::LocalRegions::Expansion::GetGeomFactors ( ) const
inline

Get the geometric factors for this object, generating them if required.

Definition at line 471 of file Expansion.h.

472{
473 return m_geomFactors.get();
474}

References m_geomFactors.

Referenced by Nektar::FieldUtils::ProcessJacobianEnergy::v_Process(), and Nektar::FieldUtils::ProcessScalGrad::v_Process().

◆ GetIndexMap()

IndexMapValuesSharedPtr Nektar::LocalRegions::Expansion::GetIndexMap ( const IndexMapKey ikey)
inline

◆ GetLeftAdjacentElementExp()

ExpansionSharedPtr Nektar::LocalRegions::Expansion::GetLeftAdjacentElementExp ( ) const
inline

Definition at line 531 of file Expansion.h.

532{
533 ASSERTL1(m_elementLeft.lock().get(), "Left adjacent element not set.");
534 return m_elementLeft.lock();
535}
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
ExpansionWeakPtr m_elementLeft
Definition Expansion.h:310

References ASSERTL1, and m_elementLeft.

Referenced by Nektar::LocalRegions::PointExp::v_NormVectorIProductWRTBase(), Nektar::LocalRegions::SegExp::v_NormVectorIProductWRTBase(), Nektar::LocalRegions::QuadExp::v_NormVectorIProductWRTBase(), Nektar::LocalRegions::TriExp::v_NormVectorIProductWRTBase(), Nektar::LocalRegions::Expansion1D::v_VectorFlux(), and Nektar::LocalRegions::Expansion2D::v_VectorFlux().

◆ GetLeftAdjacentElementTrace()

int Nektar::LocalRegions::Expansion::GetLeftAdjacentElementTrace ( ) const
inline

◆ GetLinStdExp()

StdRegions::StdExpansionSharedPtr Nektar::LocalRegions::Expansion::GetLinStdExp ( void  ) const
inline

Definition at line 90 of file Expansion.h.

92 {
93 return v_GetLinStdExp();
94 }
virtual StdRegions::StdExpansionSharedPtr v_GetLinStdExp(void) const

References v_GetLinStdExp().

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

◆ GetLocMatrix() [1/2]

DNekScalMatSharedPtr Nektar::LocalRegions::Expansion::GetLocMatrix ( const LocalRegions::MatrixKey mkey)

◆ GetLocMatrix() [2/2]

DNekScalMatSharedPtr Nektar::LocalRegions::Expansion::GetLocMatrix ( const StdRegions::MatrixType  mtype,
const StdRegions::ConstFactorMap factors = StdRegions::NullConstFactorMap,
const StdRegions::VarCoeffMap varcoeffs = StdRegions::NullVarCoeffMap 
)

Definition at line 162 of file Expansion.cpp.

166{
167 MatrixKey mkey(mtype, DetShapeType(), *this, factors, varcoeffs);
168 return GetLocMatrix(mkey);
169}
LibUtilities::ShapeType DetShapeType() const
This function returns the shape of the expansion domain.

References Nektar::StdRegions::StdExpansion::DetShapeType(), and GetLocMatrix().

◆ GetLocTraceExp()

ExpansionSharedPtr Nektar::LocalRegions::Expansion::GetLocTraceExp ( const int  traceid)
inline

Definition at line 512 of file Expansion.h.

513{
514 ASSERTL1(traceid < GetNtraces(), "Trace is out of range.");
515
516 ExpansionSharedPtr returnval;
517
518 // Generate local trace exp
519 v_GenTraceExp(traceid, returnval);
520
521 return returnval;
522}
virtual void v_GenTraceExp(const int traceid, ExpansionSharedPtr &exp)
int GetNtraces() const
Returns the number of trace elements connected to this element.
std::shared_ptr< Expansion > ExpansionSharedPtr
Definition Expansion.h:66

References ASSERTL1, Nektar::StdRegions::StdExpansion::GetNtraces(), and v_GenTraceExp().

◆ GetLocTracePhysVals()

void Nektar::LocalRegions::Expansion::GetLocTracePhysVals ( const int  trace,
const StdRegions::StdExpansionSharedPtr TraceExp,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 222 of file Expansion.h.

226 {
227 v_GetLocTracePhysVals(trace, TraceExp, inarray.data(), outarray);
228 }
virtual void v_GetLocTracePhysVals(const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp, const NekDouble *inarray, Array< OneD, NekDouble > &outarray)

References v_GetLocTracePhysVals().

Referenced by Nektar::LocalRegions::Expansion2D::v_GenMatrix().

◆ GetMF()

Array< OneD, NekDouble > Nektar::LocalRegions::Expansion::GetMF ( const int  dir,
const int  shapedim,
const StdRegions::VarCoeffMap varcoeffs 
)
protected

Definition at line 813 of file Expansion.cpp.

815{
816 int coordim = GetCoordim();
817
818 int nquad0, nquad1, nquad2;
819 int nqtot = 1;
820 switch (shapedim)
821 {
822 case 2:
823 {
824 nquad0 = m_base[0]->GetNumPoints();
825 nquad1 = m_base[1]->GetNumPoints();
826 nqtot = nquad0 * nquad1;
827 break;
828 }
829 case 3:
830 {
831 nquad0 = m_base[0]->GetNumPoints();
832 nquad1 = m_base[1]->GetNumPoints();
833 nquad2 = m_base[2]->GetNumPoints();
834 nqtot = nquad0 * nquad1 * nquad2;
835 break;
836 }
837 default:
838 break;
839 }
840
841 StdRegions::VarCoeffType MMFCoeffs[15] = {
850
851 Array<OneD, NekDouble> MF(coordim * nqtot);
852 Array<OneD, NekDouble> tmp(nqtot);
853 for (int k = 0; k < coordim; k++)
854 {
855 StdRegions::VarCoeffMap::const_iterator MFdir =
856 varcoeffs.find(MMFCoeffs[5 * dir + k]);
857 tmp = MFdir->second.GetValue();
858
859 Vmath::Vcopy(nqtot, &tmp[0], 1, &MF[k * nqtot], 1);
860 }
861
862 return MF;
863}
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition Vmath.hpp:825

References Nektar::StdRegions::eVarCoeffMF1Div, Nektar::StdRegions::eVarCoeffMF1Mag, Nektar::StdRegions::eVarCoeffMF1x, Nektar::StdRegions::eVarCoeffMF1y, Nektar::StdRegions::eVarCoeffMF1z, Nektar::StdRegions::eVarCoeffMF2Div, Nektar::StdRegions::eVarCoeffMF2Mag, Nektar::StdRegions::eVarCoeffMF2x, Nektar::StdRegions::eVarCoeffMF2y, Nektar::StdRegions::eVarCoeffMF2z, Nektar::StdRegions::eVarCoeffMF3Div, Nektar::StdRegions::eVarCoeffMF3Mag, Nektar::StdRegions::eVarCoeffMF3x, Nektar::StdRegions::eVarCoeffMF3y, Nektar::StdRegions::eVarCoeffMF3z, Nektar::StdRegions::StdExpansion::GetCoordim(), Nektar::StdRegions::StdExpansion::m_base, and Vmath::Vcopy().

Referenced by Nektar::LocalRegions::Expansion2D::AddHDGHelmholtzEdgeTerms(), Nektar::LocalRegions::Expansion3D::AddHDGHelmholtzFaceTerms(), Nektar::LocalRegions::Expansion2D::v_GenMatrix(), and Nektar::LocalRegions::Expansion3D::v_GenMatrix().

◆ GetMFDiv()

Array< OneD, NekDouble > Nektar::LocalRegions::Expansion::GetMFDiv ( const int  dir,
const StdRegions::VarCoeffMap varcoeffs 
)
protected

Definition at line 866 of file Expansion.cpp.

868{
869 int indxDiv = 3;
870
871 StdRegions::VarCoeffType MMFCoeffs[15] = {
880
881 StdRegions::VarCoeffMap::const_iterator MFdir =
882 varcoeffs.find(MMFCoeffs[5 * dir + indxDiv]);
883 Array<OneD, NekDouble> MFDiv = MFdir->second.GetValue();
884
885 return MFDiv;
886}

References Nektar::StdRegions::eVarCoeffMF1Div, Nektar::StdRegions::eVarCoeffMF1Mag, Nektar::StdRegions::eVarCoeffMF1x, Nektar::StdRegions::eVarCoeffMF1y, Nektar::StdRegions::eVarCoeffMF1z, Nektar::StdRegions::eVarCoeffMF2Div, Nektar::StdRegions::eVarCoeffMF2Mag, Nektar::StdRegions::eVarCoeffMF2x, Nektar::StdRegions::eVarCoeffMF2y, Nektar::StdRegions::eVarCoeffMF2z, Nektar::StdRegions::eVarCoeffMF3Div, Nektar::StdRegions::eVarCoeffMF3Mag, Nektar::StdRegions::eVarCoeffMF3x, Nektar::StdRegions::eVarCoeffMF3y, and Nektar::StdRegions::eVarCoeffMF3z.

Referenced by Nektar::LocalRegions::Expansion2D::AddHDGHelmholtzEdgeTerms(), Nektar::LocalRegions::Expansion3D::AddHDGHelmholtzFaceTerms(), Nektar::LocalRegions::Expansion2D::v_GenMatrix(), and Nektar::LocalRegions::Expansion3D::v_GenMatrix().

◆ GetMFMag()

Array< OneD, NekDouble > Nektar::LocalRegions::Expansion::GetMFMag ( const int  dir,
const StdRegions::VarCoeffMap varcoeffs 
)
protected

Definition at line 889 of file Expansion.cpp.

891{
892 int indxMag = 4;
893
894 StdRegions::VarCoeffType MMFCoeffs[15] = {
903
904 StdRegions::VarCoeffMap::const_iterator MFdir =
905 varcoeffs.find(MMFCoeffs[5 * dir + indxMag]);
906 Array<OneD, NekDouble> MFmag = MFdir->second.GetValue();
907
908 return MFmag;
909}

References Nektar::StdRegions::eVarCoeffMF1Div, Nektar::StdRegions::eVarCoeffMF1Mag, Nektar::StdRegions::eVarCoeffMF1x, Nektar::StdRegions::eVarCoeffMF1y, Nektar::StdRegions::eVarCoeffMF1z, Nektar::StdRegions::eVarCoeffMF2Div, Nektar::StdRegions::eVarCoeffMF2Mag, Nektar::StdRegions::eVarCoeffMF2x, Nektar::StdRegions::eVarCoeffMF2y, Nektar::StdRegions::eVarCoeffMF2z, Nektar::StdRegions::eVarCoeffMF3Div, Nektar::StdRegions::eVarCoeffMF3Mag, Nektar::StdRegions::eVarCoeffMF3x, Nektar::StdRegions::eVarCoeffMF3y, and Nektar::StdRegions::eVarCoeffMF3z.

Referenced by Nektar::LocalRegions::Expansion2D::AddHDGHelmholtzEdgeTerms(), Nektar::LocalRegions::Expansion3D::AddHDGHelmholtzFaceTerms(), Nektar::LocalRegions::Expansion2D::v_GenMatrix(), and Nektar::LocalRegions::Expansion3D::v_GenMatrix().

◆ GetPhysNormals()

const Array< OneD, const NekDouble > & Nektar::LocalRegions::Expansion::GetPhysNormals ( void  )
inline

Definition at line 253 of file Expansion.h.

254 {
255 return v_GetPhysNormals();
256 }
virtual const Array< OneD, const NekDouble > & v_GetPhysNormals()

References v_GetPhysNormals().

◆ GetRightAdjacentElementExp()

ExpansionSharedPtr Nektar::LocalRegions::Expansion::GetRightAdjacentElementExp ( ) const
inline

Definition at line 537 of file Expansion.h.

538{
539 ASSERTL1(m_elementLeft.lock().get(), "Right adjacent element not set.");
540
541 return m_elementRight.lock();
542}
ExpansionWeakPtr m_elementRight
Definition Expansion.h:311

References ASSERTL1, m_elementLeft, and m_elementRight.

◆ GetRightAdjacentElementTrace()

int Nektar::LocalRegions::Expansion::GetRightAdjacentElementTrace ( ) const
inline

Definition at line 549 of file Expansion.h.

550{
551 return m_elementTraceRight;
552}

References m_elementTraceRight.

◆ GetStdExp()

StdRegions::StdExpansionSharedPtr Nektar::LocalRegions::Expansion::GetStdExp ( ) const
inline

Definition at line 85 of file Expansion.h.

86 {
87 return v_GetStdExp();
88 }
virtual StdRegions::StdExpansionSharedPtr v_GetStdExp() const

References v_GetStdExp().

◆ GetTraceExp()

ExpansionSharedPtr Nektar::LocalRegions::Expansion::GetTraceExp ( const int  traceid)
inline

Definition at line 491 of file Expansion.h.

492{
493 ASSERTL1(traceid < GetNtraces(), "Trace is out of range.");
494
495 ExpansionSharedPtr returnval;
496
497 if (m_traceExp.count(traceid))
498 {
499 // Use stored value
500 returnval = m_traceExp[traceid].lock();
501 }
502 else
503 {
504 // Generate trace exp
505 v_GenTraceExp(traceid, returnval);
506 }
507
508 return returnval;
509}

References ASSERTL1, Nektar::StdRegions::StdExpansion::GetNtraces(), m_traceExp, and v_GenTraceExp().

Referenced by Nektar::LocalRegions::Expansion3D::AddHDGHelmholtzFaceTerms(), Nektar::LocalRegions::Expansion2D::v_GenMatrix(), and Nektar::LocalRegions::Expansion3D::v_GenMatrix().

◆ GetTraceNormal()

const NormalVector & Nektar::LocalRegions::Expansion::GetTraceNormal ( const int  id)

◆ GetTraceNormals()

const std::map< int, NormalVector > & Nektar::LocalRegions::Expansion::GetTraceNormals ( void  )

◆ GetTraceOrient()

StdRegions::Orientation Nektar::LocalRegions::Expansion::GetTraceOrient ( int  trace)
inline

◆ GetTracePhysMap()

void Nektar::LocalRegions::Expansion::GetTracePhysMap ( const int  edge,
Array< OneD, int > &  outarray 
)
inline

Definition at line 230 of file Expansion.h.

231 {
232 v_GetTracePhysMap(edge, outarray);
233 }
virtual void v_GetTracePhysMap(const int edge, Array< OneD, int > &outarray)

References v_GetTracePhysMap().

Referenced by PhysBaseOnTraceMat(), PhysDerivBaseOnTraceMat(), and Nektar::LocalRegions::Expansion3D::v_GetLocTracePhysVals().

◆ GetTracePhysVals()

void Nektar::LocalRegions::Expansion::GetTracePhysVals ( const int  trace,
const StdRegions::StdExpansionSharedPtr TraceExp,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
StdRegions::Orientation  orient = StdRegions::eNoOrientation 
)
inline

Definition at line 213 of file Expansion.h.

218 {
219 v_GetTracePhysVals(trace, TraceExp, inarray, outarray, orient);
220 }
virtual void v_GetTracePhysVals(const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient)

References v_GetTracePhysVals().

Referenced by StdDerivBaseOnTraceMat().

◆ GetTraceQFactors()

void Nektar::LocalRegions::Expansion::GetTraceQFactors ( const int  trace,
Array< OneD, NekDouble > &  outarray 
)
inline

Extract the metric factors to compute the contravariant fluxes along edge edge and stores them into outarray following the local edge orientation (i.e. anticlockwise convention).

Definition at line 207 of file Expansion.h.

209 {
210 v_GetTraceQFactors(trace, outarray);
211 }
virtual void v_GetTraceQFactors(const int trace, Array< OneD, NekDouble > &outarray)

References v_GetTraceQFactors().

◆ NormalTraceDerivFactors()

void Nektar::LocalRegions::Expansion::NormalTraceDerivFactors ( Array< OneD, Array< OneD, NekDouble > > &  factors,
Array< OneD, Array< OneD, NekDouble > > &  d0factors,
Array< OneD, Array< OneD, NekDouble > > &  d1factors 
)

Definition at line 154 of file Expansion.cpp.

158{
159 return v_NormalTraceDerivFactors(factors, d0factors, d1factors);
160}
virtual void v_NormalTraceDerivFactors(Array< OneD, Array< OneD, NekDouble > > &factors, Array< OneD, Array< OneD, NekDouble > > &d0factors, Array< OneD, Array< OneD, NekDouble > > &d1factors)

References v_NormalTraceDerivFactors().

◆ PhysBaseOnTraceMat()

void Nektar::LocalRegions::Expansion::PhysBaseOnTraceMat ( const int  traceid,
DNekMatSharedPtr BdataMat 
)

Definition at line 681 of file Expansion.cpp.

683{
684 int nquad = GetTotPoints();
685
686 Array<OneD, NekDouble> coeffs(m_ncoeffs);
687 Array<OneD, NekDouble> phys(nquad);
688
689 Array<OneD, int> tracePhysIds;
690 GetTracePhysMap(traceid, tracePhysIds);
691
692 int nTracePts = GetTraceNumPoints(traceid);
693
694 BdataMat =
696
697 for (int i = 0; i < m_ncoeffs; ++i)
698 {
699 Vmath::Zero(m_ncoeffs, coeffs, 1);
700 coeffs[i] = 1.0;
701 BwdTrans(coeffs, phys);
702
703 for (int k = 0; k < nTracePts; ++k)
704 {
705 (*BdataMat)(i, k) = phys[tracePhysIds[k]];
706 }
707 }
708}
void GetTracePhysMap(const int edge, Array< OneD, int > &outarray)
Definition Expansion.h:230
int GetTraceNumPoints(const int i) const
This function returns the number of quadrature points belonging to the i-th trace.
void BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function performs the Backward transformation from coefficient space to physical space.
void Zero(int n, T *x, const int incx)
Zero vector.
Definition Vmath.hpp:273

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), Nektar::StdRegions::StdExpansion::BwdTrans(), Nektar::StdRegions::StdExpansion::GetTotPoints(), Nektar::StdRegions::StdExpansion::GetTraceNumPoints(), GetTracePhysMap(), Nektar::StdRegions::StdExpansion::m_ncoeffs, and Vmath::Zero().

◆ PhysDerivBaseOnTraceMat()

void Nektar::LocalRegions::Expansion::PhysDerivBaseOnTraceMat ( const int  traceid,
Array< OneD, DNekMatSharedPtr > &  DerivMat 
)

Definition at line 637 of file Expansion.cpp.

639{
640 int nquad = GetTotPoints();
641 int ndir = m_base.size();
642
643 Array<OneD, NekDouble> coeffs(m_ncoeffs);
644 Array<OneD, NekDouble> phys(nquad);
645
646 Array<OneD, int> tracePhysIds;
647 GetTracePhysMap(traceid, tracePhysIds);
648
649 int nTracePts = GetTraceNumPoints(traceid);
650
651 // initialise array to null so can call for
652 // differnt dimensions
653 Array<OneD, Array<OneD, NekDouble>> Deriv(3, NullNekDouble1DArray);
654 DerivMat = Array<OneD, DNekMatSharedPtr>(ndir);
655 for (int d = 0; d < ndir; ++d)
656 {
657 Deriv[d] = Array<OneD, NekDouble>(nquad);
659 nTracePts, 0.0);
660 }
661
662 for (int i = 0; i < m_ncoeffs; ++i)
663 {
664 Vmath::Zero(m_ncoeffs, coeffs, 1);
665 coeffs[i] = 1.0;
666 BwdTrans(coeffs, phys);
667
668 // dphi_i/d\xi_1, dphi_i/d\xi_2 dphi_i/d\xi_3
669 PhysDeriv(phys, Deriv[0], Deriv[1], Deriv[2]);
670
671 for (int k = 0; k < nTracePts; ++k)
672 {
673 for (int d = 0; d < ndir; ++d)
674 {
675 (*DerivMat[d])(i, k) = Deriv[d][tracePhysIds[k]];
676 }
677 }
678 }
679}
void PhysDeriv(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d0, Array< OneD, NekDouble > &out_d1=NullNekDouble1DArray, Array< OneD, NekDouble > &out_d2=NullNekDouble1DArray)
std::vector< double > d(NPUPPER *NPUPPER)
static Array< OneD, NekDouble > NullNekDouble1DArray

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), Nektar::StdRegions::StdExpansion::BwdTrans(), Nektar::StdRegions::StdExpansion::GetTotPoints(), Nektar::StdRegions::StdExpansion::GetTraceNumPoints(), GetTracePhysMap(), Nektar::StdRegions::StdExpansion::m_base, Nektar::StdRegions::StdExpansion::m_ncoeffs, Nektar::NullNekDouble1DArray, Nektar::StdRegions::StdExpansion::PhysDeriv(), and Vmath::Zero().

◆ ReOrientTracePhysVals()

void Nektar::LocalRegions::Expansion::ReOrientTracePhysVals ( const StdRegions::Orientation  orient,
const Array< OneD, const NekDouble > &  in,
Array< OneD, NekDouble > &  out,
const int  nq0,
const int  nq1,
bool  Forwards = true 
)
inline

Definition at line 235 of file Expansion.h.

240 {
241 v_ReOrientTracePhysVals(orient, in, out, nq0, nq1, Forwards);
242 }
virtual void v_ReOrientTracePhysVals(const StdRegions::Orientation orient, const Array< OneD, const NekDouble > &in, Array< OneD, NekDouble > &out, const int nq0, const int nq1, bool Forwards)

References v_ReOrientTracePhysVals().

◆ Reset()

void Nektar::LocalRegions::Expansion::Reset ( )

Definition at line 176 of file Expansion.cpp.

177{
178 // Clear metrics
179 m_metrics.clear();
180
181 // Regenerate geometry factors
183}

References GenGeomFactors(), and m_metrics.

Referenced by export_Expansion().

◆ SetAdjacentElementExp()

void Nektar::LocalRegions::Expansion::SetAdjacentElementExp ( int  traceid,
ExpansionSharedPtr e 
)
inline

Definition at line 554 of file Expansion.h.

556{
557 if (m_elementLeft.lock().get())
558 {
559 m_elementRight = exp;
560 m_elementTraceRight = traceid;
561 }
562 else
563 {
564 m_elementLeft = exp;
565 m_elementTraceLeft = traceid;
566 }
567}

References m_elementLeft, m_elementRight, m_elementTraceLeft, and m_elementTraceRight.

◆ SetCoeffsToOrientation()

void Nektar::LocalRegions::Expansion::SetCoeffsToOrientation ( StdRegions::Orientation  dir,
Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 186 of file Expansion.h.

189 {
190 v_SetCoeffsToOrientation(dir, inarray, outarray);
191 }
void v_SetCoeffsToOrientation(StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override

References v_SetCoeffsToOrientation().

◆ SetPhysNormals()

void Nektar::LocalRegions::Expansion::SetPhysNormals ( Array< OneD, const NekDouble > &  normal)
inline

Definition at line 258 of file Expansion.h.

259 {
260 v_SetPhysNormals(normal);
261 }
virtual void v_SetPhysNormals(Array< OneD, const NekDouble > &normal)

References v_SetPhysNormals().

◆ SetTraceExp()

void Nektar::LocalRegions::Expansion::SetTraceExp ( const int  traceid,
ExpansionSharedPtr f 
)
inline

Definition at line 524 of file Expansion.h.

525{
526 ASSERTL1(traceid < GetNtraces(), "Trace out of range.");
527
528 m_traceExp[traceid] = exp;
529}

References ASSERTL1, Nektar::StdRegions::StdExpansion::GetNtraces(), and m_traceExp.

◆ SetUpPhysNormals()

void Nektar::LocalRegions::Expansion::SetUpPhysNormals ( const int  trace)
inline

Definition at line 263 of file Expansion.h.

264 {
265 v_SetUpPhysNormals(trace);
266 }
virtual void v_SetUpPhysNormals(const int id)

References v_SetUpPhysNormals().

◆ StdDerivBaseOnTraceMat()

void Nektar::LocalRegions::Expansion::StdDerivBaseOnTraceMat ( Array< OneD, DNekMatSharedPtr > &  DerivMat)

Definition at line 566 of file Expansion.cpp.

567{
568 int nquad = GetTotPoints();
569 int ntraces = GetNtraces();
570 int ndir = m_base.size();
571
572 Array<OneD, NekDouble> coeffs(m_ncoeffs);
573 Array<OneD, NekDouble> phys(nquad);
574
575 int tottracepts = 0;
576 int maxtracepts = 0;
577 Array<OneD, ExpansionSharedPtr> traceExp(ntraces);
578 for (int i = 0; i < ntraces; ++i)
579 {
580 // Note we are using GenTraceExp to ensure we have local trace
581 // expansion not ont from shared trace which can happe if we use
582 // GetTraceExp since it can be set in DisContField::SetupDG
583 v_GenTraceExp(i, traceExp[i]);
584 int ntpts = traceExp[i]->GetTotPoints();
585 maxtracepts = max(maxtracepts, ntpts);
586 tottracepts += ntpts;
587 }
588
589 // initialise array to null so can call for
590 // differnt dimensions
591 Array<OneD, Array<OneD, NekDouble>> Deriv(3, NullNekDouble1DArray);
592 Array<OneD, NekDouble> traceDeriv(maxtracepts);
593
594 DerivMat = Array<OneD, DNekMatSharedPtr>(ndir);
595 for (int i = 0; i < ndir; ++i)
596 {
597 Deriv[i] = Array<OneD, NekDouble>(nquad);
598 DerivMat[i] =
600 }
601
602 for (int i = 0; i < m_ncoeffs; ++i)
603 {
604 Vmath::Zero(m_ncoeffs, coeffs, 1);
605 coeffs[i] = 1.0;
606 BwdTrans(coeffs, phys);
607
608 // dphi_i/d\xi_1, dphi_i/d\xi_2 dphi_i/d\xi_3
609 StdPhysDeriv(phys, Deriv[0], Deriv[1], Deriv[2]);
610
611 int cnt = 0;
612 for (int j = 0; j < ntraces; ++j)
613 {
614 LibUtilities::BasisKey traceKey0 = GetTraceBasisKey(j, 0);
615 LibUtilities::BasisKey traceKey1 = GetTraceBasisKey(j, 1);
616
617 int nTracePts = traceExp[j]->GetTotPoints();
618
619 for (int d = 0; d < ndir; ++d)
620 {
621 // specifying eForwards since Std Operation always Fwd
622 GetTracePhysVals(j, traceExp[j], Deriv[d], traceDeriv,
624
625 // fill matrix
626 for (int k = 0; k < nTracePts; ++k)
627 {
628 (*DerivMat[d])(i, cnt + k) = traceDeriv[k];
629 }
630 }
631
632 cnt += nTracePts;
633 }
634 }
635}
void GetTracePhysVals(const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient=StdRegions::eNoOrientation)
Definition Expansion.h:213
void StdPhysDeriv(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d0, Array< OneD, NekDouble > &out_d1=NullNekDouble1DArray, Array< OneD, NekDouble > &out_d2=NullNekDouble1DArray)
const LibUtilities::BasisKey GetTraceBasisKey(const int i, int k=-1, bool UseGLL=false) const
This function returns the basis key belonging to the i-th trace.
scalarT< T > max(scalarT< T > lhs, scalarT< T > rhs)
Definition scalar.hpp:305

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), Nektar::StdRegions::StdExpansion::BwdTrans(), Nektar::StdRegions::eDir1FwdDir1_Dir2FwdDir2, Nektar::StdRegions::StdExpansion::GetNtraces(), Nektar::StdRegions::StdExpansion::GetTotPoints(), Nektar::StdRegions::StdExpansion::GetTraceBasisKey(), GetTracePhysVals(), Nektar::StdRegions::StdExpansion::m_base, Nektar::StdRegions::StdExpansion::m_ncoeffs, tinysimd::max(), Nektar::NullNekDouble1DArray, Nektar::StdRegions::StdExpansion::StdPhysDeriv(), v_GenTraceExp(), and Vmath::Zero().

◆ TraceNormLen()

void Nektar::LocalRegions::Expansion::TraceNormLen ( const int  traceid,
NekDouble h,
NekDouble p 
)
inline

Definition at line 275 of file Expansion.h.

276 {
277 v_TraceNormLen(traceid, h, p);
278 }
virtual void v_TraceNormLen(const int traceid, NekDouble &h, NekDouble &p)

References v_TraceNormLen().

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

◆ v_AddEdgeNormBoundaryInt() [1/2]

void Nektar::LocalRegions::Expansion::v_AddEdgeNormBoundaryInt ( const int  edge,
const std::shared_ptr< Expansion > &  EdgeExp,
const Array< OneD, const NekDouble > &  Fn,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Definition at line 946 of file Expansion.cpp.

951{
952 NEKERROR(ErrorUtil::efatal, "This function is only valid for LocalRegions");
953}

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

◆ v_AddEdgeNormBoundaryInt() [2/2]

void Nektar::LocalRegions::Expansion::v_AddEdgeNormBoundaryInt ( const int  edge,
const std::shared_ptr< Expansion > &  EdgeExp,
const Array< OneD, const NekDouble > &  Fx,
const Array< OneD, const NekDouble > &  Fy,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Definition at line 936 of file Expansion.cpp.

942{
943 NEKERROR(ErrorUtil::efatal, "This function is only valid for LocalRegions");
944}

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

Referenced by AddEdgeNormBoundaryInt(), and AddEdgeNormBoundaryInt().

◆ v_AddFaceNormBoundaryInt()

void Nektar::LocalRegions::Expansion::v_AddFaceNormBoundaryInt ( const int  face,
const std::shared_ptr< Expansion > &  FaceExp,
const Array< OneD, const NekDouble > &  Fn,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Definition at line 955 of file Expansion.cpp.

960{
961 NEKERROR(ErrorUtil::efatal, "This function is only valid for LocalRegions");
962}

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

Referenced by AddFaceNormBoundaryInt().

◆ v_AddRobinMassMatrix()

void Nektar::LocalRegions::Expansion::v_AddRobinMassMatrix ( const int  face,
const Array< OneD, const NekDouble > &  primCoeffs,
DNekMatSharedPtr inoutmat 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion2D, Nektar::LocalRegions::Expansion3D, and Nektar::LocalRegions::Expansion1D.

Definition at line 1083 of file Expansion.cpp.

1087{
1088 NEKERROR(ErrorUtil::efatal, "This function is not valid for this class");
1089}

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

Referenced by AddRobinMassMatrix().

◆ v_AddRobinTraceContribution()

void Nektar::LocalRegions::Expansion::v_AddRobinTraceContribution ( const int  traceid,
const Array< OneD, const NekDouble > &  primCoeffs,
const Array< OneD, NekDouble > &  incoeffs,
Array< OneD, NekDouble > &  coeffs 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion2D, and Nektar::LocalRegions::Expansion1D.

Definition at line 1091 of file Expansion.cpp.

1096{
1097 NEKERROR(ErrorUtil::efatal, "This function is not valid for this class");
1098}

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

Referenced by AddRobinTraceContribution().

◆ v_AlignVectorToCollapsedDir()

void Nektar::LocalRegions::Expansion::v_AlignVectorToCollapsedDir ( const int  dir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, Array< OneD, NekDouble > > &  outarray 
)
protectedvirtual

◆ v_BuildTransformationMatrix()

DNekMatSharedPtr Nektar::LocalRegions::Expansion::v_BuildTransformationMatrix ( const DNekScalMatSharedPtr r_bnd,
const StdRegions::MatrixType  matrixType 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion3D.

Definition at line 911 of file Expansion.cpp.

914{
915 NEKERROR(ErrorUtil::efatal, "This function is only valid for LocalRegions");
917}
static DNekMatSharedPtr NullDNekMatSharedPtr

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

Referenced by BuildTransformationMatrix().

◆ v_BuildVertexMatrix()

DNekMatSharedPtr Nektar::LocalRegions::Expansion::v_BuildVertexMatrix ( const DNekScalMatSharedPtr r_bnd)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion2D, and Nektar::LocalRegions::Expansion3D.

Definition at line 919 of file Expansion.cpp.

921{
922 NEKERROR(ErrorUtil::efatal, "This function is only valid for LocalRegions");
924}

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

Referenced by BuildVertexMatrix().

◆ v_ComputeLaplacianMetric()

virtual void Nektar::LocalRegions::Expansion::v_ComputeLaplacianMetric ( )
inlineprotectedvirtual

◆ v_ComputeTraceNormal()

void Nektar::LocalRegions::Expansion::v_ComputeTraceNormal ( const int  id)
protectedvirtual

◆ v_DGDeriv()

void Nektar::LocalRegions::Expansion::v_DGDeriv ( const int  dir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, ExpansionSharedPtr > &  EdgeExp,
Array< OneD, Array< OneD, NekDouble > > &  coeffs,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion2D, and Nektar::LocalRegions::Expansion3D.

Definition at line 964 of file Expansion.cpp.

970{
971 NEKERROR(ErrorUtil::efatal, "This function is only valid for LocalRegions");
972}

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

Referenced by DGDeriv().

◆ v_DivideByQuadratureMetric()

void Nektar::LocalRegions::Expansion::v_DivideByQuadratureMetric ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Definition at line 519 of file Expansion.cpp.

522{
523 const int nqtot = GetTotPoints();
524
525 if (m_metrics.count(eMetricQuadrature) == 0)
526 {
528 }
529
530 Vmath::Vdiv(nqtot, inarray, 1, m_metrics[eMetricQuadrature], 1, outarray,
531 1);
532 // remove NaN or Inf values and set to zero
533 for (int i = 0; i < nqtot; ++i)
534 {
535 if (std::isnan(outarray[i]) || std::isinf(outarray[i]))
536 {
537 outarray[i] = 0.0;
538 }
539 }
540}
void Vdiv(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x/y.
Definition Vmath.hpp:126

References ComputeQuadratureMetric(), Nektar::LocalRegions::eMetricQuadrature, Nektar::StdRegions::StdExpansion::GetTotPoints(), m_metrics, and Vmath::Vdiv().

Referenced by DivideByQuadratureMetric().

◆ v_DropLocMatrix()

void Nektar::LocalRegions::Expansion::v_DropLocMatrix ( const LocalRegions::MatrixKey mkey)
protectedvirtual

◆ v_ExtractDataToCoeffs()

void Nektar::LocalRegions::Expansion::v_ExtractDataToCoeffs ( const NekDouble data,
const std::vector< unsigned int > &  nummodes,
const int  nmodes_offset,
NekDouble coeffs,
std::vector< LibUtilities::BasisType > &  fromType 
)
protectedvirtual

◆ v_FwdTrans()

void Nektar::LocalRegions::Expansion::v_FwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
overrideprotectedvirtual

Forward transform from physical quadrature space stored in inarray and evaluate the expansion coefficients and store in (this)->m_coeffs.

Inputs:

  • inarray: array of physical quadrature points to be transformed

Outputs:

  • (this)->_coeffs: updated array of expansion coefficients.

Reimplemented from Nektar::StdRegions::StdExpansion.

Definition at line 462 of file Expansion.cpp.

464{
466 {
467 Vmath::Vcopy(GetNcoeffs(), &inarray[0], 1, &outarray[0], 1);
468 }
469 else
470 {
471 v_IProductWRTBase(inarray, outarray);
472
473 // get Mass matrix inverse
474 LibUtilities::PointsType nodalPointsType =
478 MatrixKey masskey(StdRegions::eInvMass, DetShapeType(), *this,
481 StdRegions::NullVarFactorsMap, nodalPointsType);
482 DNekScalMatSharedPtr matsys = v_GetLocMatrix(masskey);
483
484 // copy inarray in case inarray == outarray
485 DNekVec in(m_ncoeffs, outarray);
486 DNekVec out(m_ncoeffs, outarray, eWrapper);
487
488 out = (*matsys) * in;
489 }
490}
int GetNcoeffs(void) const
This function returns the total number of coefficients used in the expansion.
virtual bool v_IsCollocatedBasis() const =0
LibUtilities::PointsType GetPointsType(const int dir) const
This function returns the type of quadrature points used in the dir direction.
virtual const LibUtilities::PointsKey v_GetNodalPointsKey() const
virtual void v_IProductWRTBase(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)=0
Calculates the inner product of a given function f with the different modes of the expansion.
static const PointsKey NullPointsKey(0, eNoPointsType)
static VarFactorsMap NullVarFactorsMap
static ConstFactorMap NullConstFactorMap
static VarCoeffMap NullVarCoeffMap
NekVector< NekDouble > DNekVec

References Nektar::StdRegions::StdExpansion::DetShapeType(), Nektar::StdRegions::eInvMass, Nektar::LibUtilities::eNoPointsType, Nektar::eWrapper, Nektar::StdRegions::StdExpansion::GetNcoeffs(), Nektar::LibUtilities::PointsKey::GetPointsType(), Nektar::StdRegions::StdExpansion::m_ncoeffs, Nektar::StdRegions::NullConstFactorMap, Nektar::LibUtilities::NullPointsKey(), Nektar::StdRegions::NullVarCoeffMap, Nektar::StdRegions::NullVarFactorsMap, v_GetLocMatrix(), Nektar::StdRegions::StdExpansion::v_GetNodalPointsKey(), Nektar::StdRegions::StdExpansion::v_IProductWRTBase(), Nektar::StdRegions::StdExpansion::v_IsCollocatedBasis(), and Vmath::Vcopy().

Referenced by Nektar::LocalRegions::SegExp::v_FwdTransBndConstrained().

◆ v_GenTraceExp()

void Nektar::LocalRegions::Expansion::v_GenTraceExp ( const int  traceid,
ExpansionSharedPtr exp 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion2D, and Nektar::LocalRegions::Expansion3D.

Definition at line 1054 of file Expansion.cpp.

1056{
1058 "Method does not exist for this shape or library");
1059}

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

Referenced by GetLocTraceExp(), GetTraceExp(), and StdDerivBaseOnTraceMat().

◆ v_GetCoordim()

int Nektar::LocalRegions::Expansion::v_GetCoordim ( ) const
inlineoverrideprotectedvirtual

Reimplemented from Nektar::StdRegions::StdExpansion.

Definition at line 362 of file Expansion.h.

363 {
364 return m_geom->GetCoordim();
365 }
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 Nektar::SpatialDomains::Geometry::GetCoordim(), and m_geom.

◆ v_GetCoords()

void Nektar::LocalRegions::Expansion::v_GetCoords ( Array< OneD, NekDouble > &  coords_1,
Array< OneD, NekDouble > &  coords_2,
Array< OneD, NekDouble > &  coords_3 
)
overrideprotectedvirtual

Reimplemented from Nektar::StdRegions::StdExpansion.

Reimplemented in Nektar::LocalRegions::PointExp, Nektar::LocalRegions::HexExp, Nektar::LocalRegions::NodalPrismExp, Nektar::LocalRegions::NodalTetExp, Nektar::LocalRegions::NodalTriExp, Nektar::LocalRegions::PrismExp, Nektar::LocalRegions::PyrExp, Nektar::LocalRegions::QuadExp, Nektar::LocalRegions::SegExp, Nektar::LocalRegions::TetExp, and Nektar::LocalRegions::TriExp.

Definition at line 710 of file Expansion.cpp.

713{
714 ASSERTL1(m_geom, "m_geom not defined");
715
716 // get physical points defined in Geom
717 m_geom->FillGeom();
718
719 const int expDim = m_base.size();
720 int nqGeom = 1;
721 bool doCopy = true;
722
723 Array<OneD, LibUtilities::BasisSharedPtr> CBasis(expDim);
724 Array<OneD, Array<OneD, NekDouble>> tmp(3);
725
726 for (int i = 0; i < expDim; ++i)
727 {
728 CBasis[i] = m_geom->GetXmap()->GetBasis(i);
729 nqGeom *= CBasis[i]->GetNumPoints();
730 doCopy = doCopy &&
731 m_base[i]->GetBasisKey().SamePoints(CBasis[i]->GetBasisKey());
732 }
733
734 tmp[0] = coords_0;
735 tmp[1] = coords_1;
736 tmp[2] = coords_2;
737
738 if (doCopy)
739 {
740 for (int i = 0; i < m_geom->GetCoordim(); ++i)
741 {
742 m_geom->GetXmap()->BwdTrans(m_geom->GetCoeffs(i), tmp[i]);
743 }
744 }
745 else
746 {
747 for (int i = 0; i < m_geom->GetCoordim(); ++i)
748 {
749 Array<OneD, NekDouble> tmpGeom(nqGeom);
750 m_geom->GetXmap()->BwdTrans(m_geom->GetCoeffs(i), tmpGeom);
751
752 switch (expDim)
753 {
754 case 1:
755 {
757 CBasis[0]->GetPointsKey(), &tmpGeom[0],
758 m_base[0]->GetPointsKey(), &tmp[i][0]);
759 break;
760 }
761 case 2:
762 {
764 CBasis[0]->GetPointsKey(), CBasis[1]->GetPointsKey(),
765 &tmpGeom[0], m_base[0]->GetPointsKey(),
766 m_base[1]->GetPointsKey(), &tmp[i][0]);
767 break;
768 }
769 case 3:
770 {
772 CBasis[0]->GetPointsKey(), CBasis[1]->GetPointsKey(),
773 CBasis[2]->GetPointsKey(), &tmpGeom[0],
774 m_base[0]->GetPointsKey(), m_base[1]->GetPointsKey(),
775 m_base[2]->GetPointsKey(), &tmp[i][0]);
776 break;
777 }
778 }
779 }
780 }
781}
const Array< OneD, const NekDouble > & GetCoeffs(const int i) const
Return the coefficients of the transformation Geometry::m_xmap in coordinate direction i.
Definition Geometry.h:449
void FillGeom()
Populate the coordinate mapping Geometry::m_coeffs information from any children geometry elements.
Definition Geometry.h:461
StdRegions::StdExpansionSharedPtr GetXmap() const
Return the mapping object Geometry::m_xmap that represents the coordinate transformation from standar...
Definition Geometry.h:440
void Interp1D(const BasisKey &fbasis0, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, Array< OneD, NekDouble > &to)
this function interpolates a 1D function evaluated at the quadrature points of the basis fbasis0 to ...
Definition Interp.cpp:47
void Interp3D(const BasisKey &fbasis0, const BasisKey &fbasis1, const BasisKey &fbasis2, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, const BasisKey &tbasis1, const BasisKey &tbasis2, Array< OneD, NekDouble > &to)
this function interpolates a 3D function evaluated at the quadrature points of the 3D basis,...
Definition Interp.cpp:162
void Interp2D(const BasisKey &fbasis0, const BasisKey &fbasis1, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, const BasisKey &tbasis1, Array< OneD, NekDouble > &to)
this function interpolates a 2D function evaluated at the quadrature points of the 2D basis,...
Definition Interp.cpp:101

References ASSERTL1, Nektar::SpatialDomains::Geometry::FillGeom(), Nektar::SpatialDomains::Geometry::GetCoeffs(), Nektar::SpatialDomains::Geometry::GetCoordim(), Nektar::SpatialDomains::Geometry::GetXmap(), Nektar::LibUtilities::Interp1D(), Nektar::LibUtilities::Interp2D(), Nektar::LibUtilities::Interp3D(), Nektar::StdRegions::StdExpansion::m_base, and m_geom.

Referenced by Nektar::LocalRegions::HexExp::v_GetCoords(), Nektar::LocalRegions::PrismExp::v_GetCoords(), Nektar::LocalRegions::PyrExp::v_GetCoords(), Nektar::LocalRegions::QuadExp::v_GetCoords(), Nektar::LocalRegions::SegExp::v_GetCoords(), Nektar::LocalRegions::TetExp::v_GetCoords(), and Nektar::LocalRegions::TriExp::v_GetCoords().

◆ v_GetLinStdExp()

StdRegions::StdExpansionSharedPtr Nektar::LocalRegions::Expansion::v_GetLinStdExp ( void  ) const
protectedvirtual

◆ v_GetLocMatrix()

DNekScalMatSharedPtr Nektar::LocalRegions::Expansion::v_GetLocMatrix ( const LocalRegions::MatrixKey mkey)
protectedvirtual

◆ v_GetLocTracePhysVals()

void Nektar::LocalRegions::Expansion::v_GetLocTracePhysVals ( const int  trace,
const StdRegions::StdExpansionSharedPtr TraceExp,
const NekDouble inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::QuadExp, Nektar::LocalRegions::TriExp, and Nektar::LocalRegions::Expansion3D.

Definition at line 1025 of file Expansion.cpp.

1031{
1033 "Method does not exist for this shape or library");
1034}

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

Referenced by GetLocTracePhysVals(), and Nektar::LocalRegions::Expansion2D::v_NormalTraceDerivFactors().

◆ v_GetPhysNormals()

const Array< OneD, const NekDouble > & Nektar::LocalRegions::Expansion::v_GetPhysNormals ( void  )
protectedvirtual

Reimplemented in Nektar::LocalRegions::SegExp.

Definition at line 1066 of file Expansion.cpp.

1067{
1068 NEKERROR(ErrorUtil::efatal, "This function is not valid for this class");
1069 return NullNekDouble1DArray;
1070}

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

Referenced by GetPhysNormals().

◆ v_GetStdExp()

StdRegions::StdExpansionSharedPtr Nektar::LocalRegions::Expansion::v_GetStdExp ( void  ) const
protectedvirtual

◆ v_GetTraceOrient()

StdRegions::Orientation Nektar::LocalRegions::Expansion::v_GetTraceOrient ( int  trace)
protectedvirtual

◆ v_GetTracePhysMap()

void Nektar::LocalRegions::Expansion::v_GetTracePhysMap ( const int  edge,
Array< OneD, int > &  outarray 
)
protectedvirtual

◆ v_GetTracePhysVals()

void Nektar::LocalRegions::Expansion::v_GetTracePhysVals ( const int  trace,
const StdRegions::StdExpansionSharedPtr TraceExp,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
StdRegions::Orientation  orient 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::SegExp, Nektar::LocalRegions::TriExp, Nektar::LocalRegions::Expansion3D, and Nektar::LocalRegions::QuadExp.

Definition at line 1014 of file Expansion.cpp.

1020{
1022 "Method does not exist for this shape or library");
1023}

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

Referenced by GetTracePhysVals().

◆ v_GetTraceQFactors()

void Nektar::LocalRegions::Expansion::v_GetTraceQFactors ( const int  trace,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::QuadExp, and Nektar::LocalRegions::TriExp.

Definition at line 1006 of file Expansion.cpp.

1009{
1011 "Method does not exist for this shape or library");
1012}

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

Referenced by GetTraceQFactors().

◆ v_MultiplyByQuadratureMetric()

void Nektar::LocalRegions::Expansion::v_MultiplyByQuadratureMetric ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
overrideprotectedvirtual

Reimplemented from Nektar::StdRegions::StdExpansion.

Definition at line 504 of file Expansion.cpp.

507{
508 const int nqtot = GetTotPoints();
509
510 if (m_metrics.count(eMetricQuadrature) == 0)
511 {
513 }
514
515 Vmath::Vmul(nqtot, m_metrics[eMetricQuadrature], 1, inarray, 1, outarray,
516 1);
517}
void Vmul(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x*y.
Definition Vmath.hpp:72

References ComputeQuadratureMetric(), Nektar::LocalRegions::eMetricQuadrature, Nektar::StdRegions::StdExpansion::GetTotPoints(), m_metrics, and Vmath::Vmul().

◆ v_NormalTraceDerivFactors()

void Nektar::LocalRegions::Expansion::v_NormalTraceDerivFactors ( Array< OneD, Array< OneD, NekDouble > > &  factors,
Array< OneD, Array< OneD, NekDouble > > &  d0factors,
Array< OneD, Array< OneD, NekDouble > > &  d1factors 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion3D, Nektar::LocalRegions::Expansion1D, and Nektar::LocalRegions::Expansion2D.

Definition at line 983 of file Expansion.cpp.

987{
989 "This function is only valid for "
990 "shape expansion in LocalRegions, not parant class");
991}

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

Referenced by NormalTraceDerivFactors().

◆ v_PhysEvaluate()

NekDouble Nektar::LocalRegions::Expansion::v_PhysEvaluate ( const Array< OneD, const NekDouble > &  coord,
const Array< OneD, const NekDouble > &  physvals 
)
overrideprotectedvirtual

Reimplemented from Nektar::StdRegions::StdExpansion.

Definition at line 492 of file Expansion.cpp.

495{
496 Array<OneD, NekDouble> Lcoord = Array<OneD, NekDouble>(GetShapeDimension());
497
498 ASSERTL0(m_geom, "m_geom not defined");
499 m_geom->GetLocCoords(coord, Lcoord);
500
501 return v_StdPhysEvaluate(Lcoord, physvals);
502}
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
virtual NekDouble v_StdPhysEvaluate(const Array< OneD, const NekDouble > &Lcoord, const Array< OneD, const NekDouble > &physvals)

References ASSERTL0, Nektar::SpatialDomains::Geometry::GetLocCoords(), Nektar::StdRegions::StdExpansion::GetShapeDimension(), m_geom, and Nektar::StdRegions::StdExpansion::v_StdPhysEvaluate().

◆ v_ReOrientTracePhysVals()

void Nektar::LocalRegions::Expansion::v_ReOrientTracePhysVals ( const StdRegions::Orientation  orient,
const Array< OneD, const NekDouble > &  in,
Array< OneD, NekDouble > &  out,
const int  nq0,
const int  nq1,
bool  Forwards 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion2D, and Nektar::LocalRegions::Expansion3D.

Definition at line 1043 of file Expansion.cpp.

1049{
1051 "Method does not exist for this shape or library");
1052}

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

Referenced by ReOrientTracePhysVals().

◆ v_SetCoeffsToOrientation()

void Nektar::LocalRegions::Expansion::v_SetCoeffsToOrientation ( StdRegions::Orientation  dir,
Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
overrideprotectedvirtual

Reimplemented from Nektar::StdRegions::StdExpansion.

Reimplemented in Nektar::LocalRegions::SegExp.

Definition at line 998 of file Expansion.cpp.

1002{
1003 NEKERROR(ErrorUtil::efatal, "This function is not defined for this shape");
1004}

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

Referenced by SetCoeffsToOrientation().

◆ v_SetPhysNormals()

void Nektar::LocalRegions::Expansion::v_SetPhysNormals ( Array< OneD, const NekDouble > &  normal)
protectedvirtual

Definition at line 1072 of file Expansion.cpp.

1074{
1075 NEKERROR(ErrorUtil::efatal, "This function is not valid for this class");
1076}

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

Referenced by SetPhysNormals().

◆ v_SetUpPhysNormals()

void Nektar::LocalRegions::Expansion::v_SetUpPhysNormals ( const int  id)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion2D.

Definition at line 1078 of file Expansion.cpp.

1079{
1080 NEKERROR(ErrorUtil::efatal, "This function is not valid for this class");
1081}

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

Referenced by SetUpPhysNormals().

◆ v_TraceNormLen()

void Nektar::LocalRegions::Expansion::v_TraceNormLen ( const int  traceid,
NekDouble h,
NekDouble p 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion1D, Nektar::LocalRegions::Expansion2D, and Nektar::LocalRegions::Expansion3D.

Definition at line 1100 of file Expansion.cpp.

1103{
1104 NEKERROR(ErrorUtil::efatal, "This method has not been defined");
1105}

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

Referenced by TraceNormLen().

◆ v_VectorFlux()

NekDouble Nektar::LocalRegions::Expansion::v_VectorFlux ( const Array< OneD, Array< OneD, NekDouble > > &  vec)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion1D, and Nektar::LocalRegions::Expansion2D.

Definition at line 974 of file Expansion.cpp.

976{
978 "This function is only valid for "
979 "shape expansion in LocalRegions, not parant class");
980 return 0.0;
981}

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

Referenced by VectorFlux().

◆ VectorFlux()

NekDouble Nektar::LocalRegions::Expansion::VectorFlux ( const Array< OneD, Array< OneD, NekDouble > > &  vec)

Definition at line 149 of file Expansion.cpp.

150{
151 return v_VectorFlux(vec);
152}
virtual NekDouble v_VectorFlux(const Array< OneD, Array< OneD, NekDouble > > &vec)

References v_VectorFlux().

Member Data Documentation

◆ m_elementLeft

ExpansionWeakPtr Nektar::LocalRegions::Expansion::m_elementLeft
protected

◆ m_elementRight

ExpansionWeakPtr Nektar::LocalRegions::Expansion::m_elementRight
protected

Definition at line 311 of file Expansion.h.

Referenced by GetRightAdjacentElementExp(), and SetAdjacentElementExp().

◆ m_elementTraceLeft

int Nektar::LocalRegions::Expansion::m_elementTraceLeft = -1
protected

Definition at line 312 of file Expansion.h.

Referenced by GetLeftAdjacentElementTrace(), and SetAdjacentElementExp().

◆ m_elementTraceRight

int Nektar::LocalRegions::Expansion::m_elementTraceRight = -1
protected

Definition at line 313 of file Expansion.h.

Referenced by GetRightAdjacentElementTrace(), and SetAdjacentElementExp().

◆ m_elmtBndNormDirElmtLen

std::map<int, Array<OneD, NekDouble> > Nektar::LocalRegions::Expansion::m_elmtBndNormDirElmtLen
protected

◆ m_geom

SpatialDomains::Geometry* Nektar::LocalRegions::Expansion::m_geom
protected

Definition at line 306 of file Expansion.h.

Referenced by Nektar::LocalRegions::SegExp::CreateMatrix(), Expansion(), GenGeomFactors(), Nektar::LocalRegions::PointExp::GetCoords(), GetGeom(), Nektar::LocalRegions::PointExp::GetGeom(), Nektar::LocalRegions::Expansion0D::GetGeom0D(), Nektar::LocalRegions::Expansion2D::GetGeom2D(), Nektar::LocalRegions::Expansion3D::GetGeom3D(), Nektar::LocalRegions::Expansion2D::v_AddEdgeNormBoundaryInt(), Nektar::LocalRegions::QuadExp::v_AlignVectorToCollapsedDir(), Nektar::LocalRegions::TriExp::v_AlignVectorToCollapsedDir(), Nektar::LocalRegions::Expansion2D::v_GenTraceExp(), Nektar::LocalRegions::Expansion3D::v_GenTraceExp(), 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(), Nektar::LocalRegions::TriExp::v_GetCoord(), v_GetCoordim(), Nektar::LocalRegions::PointExp::v_GetCoords(), v_GetCoords(), Nektar::LocalRegions::PrismExp::v_GetSimplexEquiSpacedConnectivity(), Nektar::LocalRegions::QuadExp::v_GetTraceOrient(), Nektar::LocalRegions::Expansion3D::v_GetTraceOrient(), Nektar::LocalRegions::SegExp::v_HelmholtzMatrixOp(), Nektar::LocalRegions::QuadExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::SegExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::SegExp::v_LaplacianMatrixOp(), Nektar::LocalRegions::Expansion2D::v_PhysDirectionalDeriv(), 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 v_PhysEvaluate().

◆ m_geomFactors

SpatialDomains::GeomFactorsUniquePtr Nektar::LocalRegions::Expansion::m_geomFactors
protected

Definition at line 307 of file Expansion.h.

Referenced by ComputeGmatcdotMF(), ComputeQuadratureMetric(), Nektar::LocalRegions::Expansion2D::CreateMatrix(), Nektar::LocalRegions::Expansion3D::CreateMatrix(), Nektar::LocalRegions::SegExp::CreateMatrix(), CreateStaticCondMatrix(), Expansion(), Expansion(), GenGeomFactors(), GetGeomFactors(), Nektar::LocalRegions::HexExp::v_AlignVectorToCollapsedDir(), Nektar::LocalRegions::PrismExp::v_AlignVectorToCollapsedDir(), Nektar::LocalRegions::PyrExp::v_AlignVectorToCollapsedDir(), Nektar::LocalRegions::QuadExp::v_AlignVectorToCollapsedDir(), Nektar::LocalRegions::TetExp::v_AlignVectorToCollapsedDir(), Nektar::LocalRegions::TriExp::v_AlignVectorToCollapsedDir(), Nektar::LocalRegions::HexExp::v_ComputeLaplacianMetric(), Nektar::LocalRegions::PyrExp::v_ComputeLaplacianMetric(), Nektar::LocalRegions::QuadExp::v_ComputeLaplacianMetric(), Nektar::LocalRegions::TriExp::v_ComputeLaplacianMetric(), Nektar::LocalRegions::QuadExp::v_ComputeTraceNormal(), Nektar::LocalRegions::TriExp::v_ComputeTraceNormal(), Nektar::LocalRegions::HexExp::v_ComputeTraceNormal(), Nektar::LocalRegions::PrismExp::v_ComputeTraceNormal(), Nektar::LocalRegions::PyrExp::v_ComputeTraceNormal(), Nektar::LocalRegions::TetExp::v_ComputeTraceNormal(), Nektar::LocalRegions::SegExp::v_ComputeTraceNormal(), Nektar::LocalRegions::QuadExp::v_GetTraceQFactors(), Nektar::LocalRegions::SegExp::v_HelmholtzMatrixOp(), Nektar::LocalRegions::Expansion1D::v_IProductWRTBase(), Nektar::LocalRegions::Expansion2D::v_IProductWRTBase(), Nektar::LocalRegions::Expansion3D::v_IProductWRTBase(), Nektar::LocalRegions::HexExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::PrismExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::PyrExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::QuadExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::SegExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::TetExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::TriExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::HexExp::v_IProductWRTDirectionalDerivBase(), Nektar::LocalRegions::TriExp::v_IProductWRTDirectionalDerivBase(), Nektar::LocalRegions::SegExp::v_LaplacianMatrixOp(), Nektar::LocalRegions::HexExp::v_LaplacianMatrixOp_MatFree_Kernel(), Nektar::LocalRegions::PrismExp::v_LaplacianMatrixOp_MatFree_Kernel(), Nektar::LocalRegions::QuadExp::v_LaplacianMatrixOp_MatFree_Kernel(), Nektar::LocalRegions::TriExp::v_LaplacianMatrixOp_MatFree_Kernel(), Nektar::LocalRegions::Expansion3D::v_NormalTraceDerivFactors(), Nektar::LocalRegions::Expansion1D::v_NormalTraceDerivFactors(), Nektar::LocalRegions::Expansion2D::v_NormalTraceDerivFactors(), Nektar::LocalRegions::QuadExp::v_NormVectorIProductWRTBase(), Nektar::LocalRegions::TriExp::v_NormVectorIProductWRTBase(), Nektar::LocalRegions::Expansion3D::v_PhysDeriv(), Nektar::LocalRegions::Expansion2D::v_PhysDeriv(), Nektar::LocalRegions::Expansion1D::v_PhysDeriv(), Nektar::LocalRegions::Expansion2D::v_PhysDirectionalDeriv(), Nektar::LocalRegions::Expansion3D::v_PhysDirectionalDeriv(), Nektar::LocalRegions::HexExp::v_SVVLaplacianFilter(), Nektar::LocalRegions::PrismExp::v_SVVLaplacianFilter(), Nektar::LocalRegions::PyrExp::v_SVVLaplacianFilter(), Nektar::LocalRegions::QuadExp::v_SVVLaplacianFilter(), Nektar::LocalRegions::TetExp::v_SVVLaplacianFilter(), and Nektar::LocalRegions::TriExp::v_SVVLaplacianFilter().

◆ m_indexMapManager

LibUtilities::NekManager<IndexMapKey, IndexMapValues, IndexMapKey::opLess> Nektar::LocalRegions::Expansion::m_indexMapManager
protected

Definition at line 303 of file Expansion.h.

Referenced by GetIndexMap().

◆ m_metrics

MetricMap Nektar::LocalRegions::Expansion::m_metrics
protected

◆ m_traceExp

std::map<int, ExpansionWeakPtr> Nektar::LocalRegions::Expansion::m_traceExp
protected

◆ m_traceNormals

std::map<int, NormalVector> Nektar::LocalRegions::Expansion::m_traceNormals
protected