Nektar++
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Nektar::StdRegions::StdExpansion Class Referenceabstract

The base class for all shapes. More...

#include <StdExpansion.h>

Inheritance diagram for Nektar::StdRegions::StdExpansion:
[legend]

Public Member Functions

 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

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 void v_SetCoeffsToOrientation (StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
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_FwdTrans (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 Transform a given function from physical quadrature space to coefficient space.
 
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_PhysEvaluate (const Array< OneD, const NekDouble > &coords, const Array< OneD, const NekDouble > &physvals)
 
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_GetCoords (Array< OneD, NekDouble > &coords_0, Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2)
 
virtual void v_GetCoord (const Array< OneD, const NekDouble > &Lcoord, Array< OneD, NekDouble > &coord)
 
virtual int v_GetCoordim () const
 
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_MultiplyByQuadratureMetric (const Array< OneD, const NekDouble > &inarray, Array< OneD, 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

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

The base class for all shapes.

This is the lowest level basic class for all shapes and so contains the definition of common data and common routine to all elements

Definition at line 108 of file StdExpansion.h.

Constructor & Destructor Documentation

◆ StdExpansion() [1/3]

Nektar::StdRegions::StdExpansion::StdExpansion ( )

Default Constructor.

Default constructor.

Definition at line 42 of file StdExpansion.cpp.

43{
44}

◆ StdExpansion() [2/3]

Nektar::StdRegions::StdExpansion::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.

Definition at line 46 of file StdExpansion.cpp.

50 : m_base(numbases), m_elmt_id(0), m_ncoeffs(numcoeffs),
52 std::placeholders::_1),
53 std::string("StdExpansionStdMatrix")),
56 std::placeholders::_1),
57 std::string("StdExpansionStdStaticCondMatrix")),
59 std::bind(&StdExpansion::CreateStdFac, this, std::placeholders::_1),
60 std::string("StdExpansionStdFac"))
61{
62 switch (m_base.size())
63 {
64 case 3:
66 "NULL Basis attempting to be used.");
68 /* Falls through. */
69 case 2:
71 "NULL Basis attempting to be used.");
73 /* Falls through. */
74 case 1:
76 "NULL Basis attempting to be used.");
78 break;
79 default:
80 break;
81 // ASSERTL0(false, "numbases incorrectly specified");
82 };
83
84} // end constructor
#define ASSERTL2(condition, msg)
Assert Level 2 – Debugging which is used FULLDEBUG compilation mode. This level assert is designed to...
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.
LibUtilities::NekManager< StdFacKey, Array< OneD, const NekDouble > > m_stdFacManager
LibUtilities::NekManager< StdMatrixKey, DNekBlkMat, StdMatrixKey::opLess > m_stdStaticCondMatrixManager
LibUtilities::NekManager< StdMatrixKey, DNekMat, StdMatrixKey::opLess > m_stdMatrixManager
Array< OneD, LibUtilities::BasisSharedPtr > m_base
DNekMatSharedPtr CreateStdMatrix(const StdMatrixKey &mkey)
BasisManagerT & BasisManager(void)
static const BasisKey NullBasisKey(eNoBasisType, 0, NullPointsKey)
Defines a null basis with no type or points.

References ASSERTL2, Nektar::LibUtilities::BasisManager(), m_base, and Nektar::LibUtilities::NullBasisKey().

◆ StdExpansion() [3/3]

Nektar::StdRegions::StdExpansion::StdExpansion ( const StdExpansion T)

Copy Constructor.

Definition at line 86 of file StdExpansion.cpp.

87 : std::enable_shared_from_this<StdExpansion>(T), m_base(T.m_base),
88 m_elmt_id(T.m_elmt_id), m_ncoeffs(T.m_ncoeffs),
89 m_stdMatrixManager(T.m_stdMatrixManager),
90 m_stdStaticCondMatrixManager(T.m_stdStaticCondMatrixManager),
91 m_stdFacManager(T.m_stdFacManager)
92{
93}

◆ ~StdExpansion()

Nektar::StdRegions::StdExpansion::~StdExpansion ( )
virtual

Destructor.

Definition at line 96 of file StdExpansion.cpp.

97{
98}

Member Function Documentation

◆ as()

template<class T >
std::shared_ptr< T > Nektar::StdRegions::StdExpansion::as ( )
inline

Definition at line 1255 of file StdExpansion.h.

1256 {
1257 return std::dynamic_pointer_cast<T>(shared_from_this());
1258 }

◆ BaryEvaluate() [1/3]

template<int DIR, bool DERIV = false, bool DERIV2 = false>
NekDouble Nektar::StdRegions::StdExpansion::BaryEvaluate ( const NekDouble coord,
const NekDouble physvals 
)
inlineprotected

Helper function to pass an unused value by reference into BaryEvaluate.

Parameters
coordThe coordinate of the single point.
physvalsThe polynomial stored at each quadrature point.
Template Parameters
DIRThe direction of evaluation.
DERIVBool to find derivative.
Returns
The value of physvals at coord in direction dir.

Definition at line 1550 of file StdExpansion.h.

1552 {
1553 NekDouble unusedValue = 0.0;
1554 return BaryEvaluate<DIR, DERIV, DERIV2>(coord, physvals, unusedValue,
1555 unusedValue);
1556 }

◆ BaryEvaluate() [2/3]

template<int DIR, bool DERIV = false, bool DERIV2 = false>
NekDouble Nektar::StdRegions::StdExpansion::BaryEvaluate ( const NekDouble coord,
const NekDouble physvals,
NekDouble deriv 
)
inlineprotected

Definition at line 1559 of file StdExpansion.h.

1561 {
1562 NekDouble unusedValue = 0.0;
1563 return BaryEvaluate<DIR, DERIV, DERIV2>(coord, physvals, deriv,
1564 unusedValue);
1565 }

◆ BaryEvaluate() [3/3]

template<int DIR, bool DERIV = false, bool DERIV2 = false>
NekDouble Nektar::StdRegions::StdExpansion::BaryEvaluate ( const NekDouble coord,
const NekDouble physvals,
NekDouble deriv,
NekDouble deriv2 
)
inlineprotected

This function performs the barycentric interpolation of the polynomial stored in coord at a point physvals using barycentric interpolation weights in direction.

Template Parameters
DIR.It can also perform the barycentric interpolation of the derivative of the polynomial if
DERIVis set to true, which outputs in to
Parameters
deriv.

This method is intended to be used a helper function for StdExpansion::PhysEvaluate and its elemental instances, so that the calling method should provide coord for x, y and z sequentially and the appropriate physvals and weights for that particular direction.

Parameters
coordThe coordinate of the single point.
physvalsThe polynomial stored at each quadrature point.
derivThe value of the derivative.
derivThe value of the 2nd derivative.
Template Parameters
DIRThe direction of evaluation.
DERIVBool to find derivative.
Returns
The value of physvals at coord in direction dir.

Definition at line 1422 of file StdExpansion.h.

1425 {
1426 NekDouble numer1 = 0.0, numer2 = 0.0, numer3 = 0.0, numer4 = 0.0,
1427 numer5 = 0.0, denom = 0.0;
1428
1429 ASSERTL2(DIR < m_base.size(),
1430 "Direction should be less than shape dimension.");
1431
1432 const Array<OneD, const NekDouble> &z = m_base[DIR]->GetZ();
1433 const Array<OneD, const NekDouble> &bw = m_base[DIR]->GetBaryWeights();
1434
1435 const size_t nquad = z.size();
1436
1437 for (size_t i = 0; i < nquad; ++i)
1438 {
1439 NekDouble xdiff = z[i] - coord;
1440 NekDouble pval = physvals[i];
1441
1442 /*
1443 * (in this specific case) you actually
1444 * want to do the comparison exactly
1445 * (believe it or not!) See chapter 7 of
1446 * the paper here:
1447 *https://people.maths.ox.ac.uk/trefethen/barycentric.pdf
1448 */
1449 if ((!DERIV && xdiff == 0.0) ||
1450 ((DERIV || DERIV2) && std::abs(xdiff) < 1e-15))
1451 {
1452
1453 if constexpr (DERIV2)
1454 {
1455 DNekMatSharedPtr D0 = m_base[DIR]->GetD();
1456
1457 // take ith row of z and multiply with physvals
1458 Array<OneD, NekDouble> tmp(nquad);
1459 for (int kk = 0; kk < nquad; kk++)
1460 {
1461 tmp[kk] = Vmath::Dot(nquad, &(D0->GetPtr())[kk], nquad,
1462 &physvals[0], 1);
1463 }
1464
1465 deriv2 = Vmath::Dot(nquad, &(D0->GetPtr())[i], nquad,
1466 &tmp[0], 1);
1467 deriv = tmp[i];
1468 }
1469 else if constexpr (DERIV)
1470 {
1471 DNekMatSharedPtr D0 = m_base[DIR]->GetD();
1472
1473 // take ith row of z and multiply with physvals
1474 deriv = Vmath::Dot(z.size(), &(D0->GetPtr())[i], z.size(),
1475 &physvals[0], 1);
1476 }
1477
1478 return pval;
1479 }
1480
1481 NekDouble tmp = bw[i] / xdiff;
1482 numer1 += tmp * pval;
1483 denom += tmp;
1484
1485 if constexpr (DERIV || DERIV2)
1486 {
1487 NekDouble tmp2 = tmp / xdiff;
1488 numer2 += tmp2 * pval;
1489 numer3 += tmp2;
1490
1491 if constexpr (DERIV2)
1492 {
1493 NekDouble tmp3 = tmp2 / xdiff;
1494 numer4 += tmp3 * pval;
1495 numer5 += tmp3;
1496 }
1497 }
1498 }
1499
1500 if constexpr (DERIV || DERIV2)
1501 {
1502 NekDouble denomdenom = denom * denom;
1503 NekDouble numer1numer3 = numer1 * numer3;
1504
1505 deriv = (numer2 * denom - numer1numer3) / (denomdenom);
1506
1507 if constexpr (DERIV2)
1508 {
1509 deriv2 = (2.0 * numer4 / denom) -
1510 (2.0 * numer5 * numer1) / (denomdenom) -
1511 (2.0 * numer2 * numer3) / (denomdenom) +
1512 (2.0 * numer3 * numer1numer3) / (denomdenom * denom);
1513 }
1514 }
1515
1516 return numer1 / denom;
1517 }
std::vector< double > z(NPUPPER)
std::shared_ptr< DNekMat > DNekMatSharedPtr
T Dot(int n, const T *w, const T *x)
dot product
Definition Vmath.hpp:761

References ASSERTL2, Vmath::Dot(), and m_base.

◆ BaryEvaluateBasis()

template<int DIR>
NekDouble Nektar::StdRegions::StdExpansion::BaryEvaluateBasis ( const NekDouble coord,
const int &  mode 
)
inlineprotected

Definition at line 1531 of file StdExpansion.h.

1532 {
1533 const int nquad = m_base[DIR]->GetNumPoints();
1534 return BaryEvaluate<DIR>(coord,
1535 &(m_base[DIR]->GetBdata())[0] + nquad * mode);
1536 }

References m_base.

◆ BuildInverseTransformationMatrix()

DNekMatSharedPtr Nektar::StdRegions::StdExpansion::BuildInverseTransformationMatrix ( const DNekScalMatSharedPtr m_transformationmatrix)
inline

Definition at line 1196 of file StdExpansion.h.

1198 {
1199 return v_BuildInverseTransformationMatrix(m_transformationmatrix);
1200 }
virtual DNekMatSharedPtr v_BuildInverseTransformationMatrix(const DNekScalMatSharedPtr &m_transformationmatrix)

References v_BuildInverseTransformationMatrix().

◆ BwdTrans()

void Nektar::StdRegions::StdExpansion::BwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

This function performs the Backward transformation from coefficient space to physical space.

This function is a wrapper around the virtual function v_BwdTrans()

Based on the expansion coefficients, this function evaluates the expansion at the quadrature points. This is equivalent to the operation

\[ u(\xi_{1i}) = \sum_{p=0}^{P-1} \hat{u}_p \phi_p(\xi_{1i}) \]

which can be evaluated as \( {\bf u} = {\bf B}^T {\bf \hat{u}} \) with \({\bf B}[i][j] = \phi_i(\xi_{j})\)

This function requires that the coefficient array \(\mathbf{\hat{u}}\) provided as inarray.

The resulting array \(\mathbf{u}[m]=u(\mathbf{\xi}_m)\) containing the expansion evaluated at the quadrature points, is stored in the outarray.

Parameters
inarraycontains the values of the expansion coefficients (input of the function)
outarraycontains the values of the expansion evaluated at the quadrature points (output of the function)

Definition at line 467 of file StdExpansion.h.

469 {
470 v_BwdTrans(inarray, outarray);
471 }
virtual void v_BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)=0

References v_BwdTrans().

Referenced by CreateGeneralMatrix(), Nektar::LocalRegions::Expansion::PhysBaseOnTraceMat(), Nektar::LocalRegions::Expansion::PhysDerivBaseOnTraceMat(), Nektar::LocalRegions::Expansion::StdDerivBaseOnTraceMat(), Nektar::StdRegions::StdHexExp::v_ExponentialFilter(), Nektar::StdRegions::StdQuadExp::v_ExponentialFilter(), Nektar::StdRegions::StdSegExp::v_ExponentialFilter(), Nektar::LocalRegions::HexExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::PyrExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::QuadExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::SegExp::v_HelmholtzMatrixOp(), Nektar::StdRegions::StdExpansion2D::v_HelmholtzMatrixOp_MatFree(), Nektar::StdRegions::StdExpansion3D::v_HelmholtzMatrixOp_MatFree(), Nektar::LocalRegions::SegExp::v_LaplacianMatrixOp(), Nektar::StdRegions::StdExpansion2D::v_LaplacianMatrixOp_MatFree(), Nektar::StdRegions::StdExpansion3D::v_LaplacianMatrixOp_MatFree(), Nektar::StdRegions::StdPrismExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdPyrExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdTetExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdHexExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdPrismExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdPyrExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdQuadExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdSegExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdTetExp::v_SVVLaplacianFilter(), and Nektar::StdRegions::StdTriExp::v_SVVLaplacianFilter().

◆ CalcNumberOfCoefficients()

int Nektar::StdRegions::StdExpansion::CalcNumberOfCoefficients ( const std::vector< unsigned int > &  nummodes,
int &  modes_offset 
)
inline

Definition at line 741 of file StdExpansion.h.

743 {
744 return v_CalcNumberOfCoefficients(nummodes, modes_offset);
745 }
virtual int v_CalcNumberOfCoefficients(const std::vector< unsigned int > &nummodes, int &modes_offset)

References v_CalcNumberOfCoefficients().

◆ CreateGeneralMatrix()

DNekMatSharedPtr Nektar::StdRegions::StdExpansion::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}\)

Returns
returns the mass matrix

Definition at line 247 of file StdExpansion.cpp.

248{
249 int i;
250 DNekMatSharedPtr returnval;
251
252 switch (mkey.GetMatrixType())
253 {
254 case eInvMass:
255 {
256 StdMatrixKey masskey(eMass, mkey.GetShapeType(), *this,
258 NullVarFactorsMap, mkey.GetNodalPointsType());
259 DNekMatSharedPtr mmat = GetStdMatrix(masskey);
260
262 *mmat); // Populate standard mass matrix.
263 returnval->Invert();
264 }
265 break;
266 case eInvNBasisTrans:
267 {
268 StdMatrixKey tmpkey(eNBasisTrans, mkey.GetShapeType(), *this,
270 NullVarFactorsMap, mkey.GetNodalPointsType());
271 DNekMatSharedPtr tmpmat = GetStdMatrix(tmpkey);
273 *tmpmat); // Populate matrix.
274 returnval->Invert();
275 }
276 break;
277 case eBwdMat:
278 {
279 int nq = GetTotPoints();
280 Array<OneD, NekDouble> tmpin(m_ncoeffs);
281 Array<OneD, NekDouble> tmpout(nq);
282
283 returnval =
285 Array<OneD, NekDouble> Bwd_data = returnval->GetPtr();
286
287 StdRegions::StdMatrixKey matkey(StdRegions::eBwdTrans,
288 this->DetShapeType(), *this);
289 DNekMatSharedPtr MatBwdTrans = GetStdMatrix(matkey);
290 Array<OneD, NekDouble> BwdTrans_data = MatBwdTrans->GetPtr();
291
292 for (i = 0; i < m_ncoeffs; ++i)
293 {
294 Array<OneD, NekDouble> tmpinn = BwdTrans_data + nq * i;
295 tmpout = Bwd_data + i;
296
297 Vmath::Vcopy(nq, tmpinn, 1, tmpout, m_ncoeffs);
298 }
299 }
300 break;
301 case eBwdTrans:
302 {
303 int nq = GetTotPoints();
304 Array<OneD, NekDouble> tmpin(m_ncoeffs);
305 Array<OneD, NekDouble> tmpout(nq);
306
307 returnval =
309
310 for (i = 0; i < m_ncoeffs; ++i)
311 {
312 Vmath::Zero(m_ncoeffs, tmpin, 1);
313 tmpin[i] = 1.0;
314
315 BwdTrans(tmpin, tmpout);
316
317 Vmath::Vcopy(nq, tmpout.data(), 1,
318 returnval->GetRawPtr() + i * nq, 1);
319 }
320 }
321 break;
322 case eInvBwdTrans:
323 {
324 // First, get BwdTrans matrix
325 StdRegions::StdMatrixKey matkey(StdRegions::eBwdTrans,
326 this->DetShapeType(), *this);
327 DNekMatSharedPtr MatBwdTrans = GetStdMatrix(matkey);
328
329 int nq = GetTotPoints();
330 returnval =
332 // Then, copy to returnval and Invert it:
333 *returnval = *MatBwdTrans;
334 returnval->Invert();
335 }
336 break;
337 case eIProductWRTBase:
338 {
339 int nq = GetTotPoints();
340 Array<OneD, NekDouble> tmpin(nq);
341 Array<OneD, NekDouble> tmpout(m_ncoeffs);
342
343 returnval =
345
346 for (i = 0; i < nq; ++i)
347 {
348 Vmath::Zero(nq, tmpin, 1);
349 tmpin[i] = 1.0;
350
351 IProductWRTBase(tmpin, tmpout);
352
353 Vmath::Vcopy(m_ncoeffs, tmpout.data(), 1,
354 returnval->GetRawPtr() + i * m_ncoeffs, 1);
355 }
356 }
357 break;
359 {
360 StdRegions::StdMatrixKey matkey(StdRegions::eInvBwdTrans,
361 this->DetShapeType(), *this);
362 DNekMatSharedPtr MatInvBwdTrans = GetStdMatrix(matkey);
363
365 Transpose(*MatInvBwdTrans));
366 }
367 break;
369 {
370 int nq = GetTotPoints();
371 Array<OneD, NekDouble> tmpin(nq);
372 Array<OneD, NekDouble> tmpout(m_ncoeffs);
373
374 returnval =
376
377 for (i = 0; i < nq; ++i)
378 {
379 Vmath::Zero(nq, tmpin, 1);
380 tmpin[i] = 1.0;
381
382 IProductWRTDerivBase(0, tmpin, tmpout);
383
384 Vmath::Vcopy(m_ncoeffs, tmpout.data(), 1,
385 returnval->GetRawPtr() + i * m_ncoeffs, 1);
386 }
387 }
388 break;
390 {
391 int nq = GetTotPoints();
392 Array<OneD, NekDouble> tmpin(nq);
393 Array<OneD, NekDouble> tmpout(m_ncoeffs);
394
395 returnval =
397
398 for (i = 0; i < nq; ++i)
399 {
400 Vmath::Zero(nq, tmpin, 1);
401 tmpin[i] = 1.0;
402
403 IProductWRTDerivBase(1, tmpin, tmpout);
404
405 Vmath::Vcopy(m_ncoeffs, tmpout.data(), 1,
406 returnval->GetRawPtr() + i * m_ncoeffs, 1);
407 }
408 }
409 break;
411 {
412 int nq = GetTotPoints();
413 Array<OneD, NekDouble> tmpin(nq);
414 Array<OneD, NekDouble> tmpout(m_ncoeffs);
415
416 returnval =
418
419 for (i = 0; i < nq; ++i)
420 {
421 Vmath::Zero(nq, tmpin, 1);
422 tmpin[i] = 1.0;
423
424 IProductWRTDerivBase(2, tmpin, tmpout);
425
426 Vmath::Vcopy(m_ncoeffs, tmpout.data(), 1,
427 returnval->GetRawPtr() + i * m_ncoeffs, 1);
428 }
429 }
430 break;
431 case eDerivBase0:
432 {
433 int nq = GetTotPoints();
434 returnval =
436 GenStdMatBwdDeriv(0, returnval);
437 }
438 break;
439 case eDerivBase1:
440 {
441 int nq = GetTotPoints();
442 returnval =
444 GenStdMatBwdDeriv(1, returnval);
445 }
446 break;
447 case eDerivBase2:
448 {
449 int nq = GetTotPoints();
450 returnval =
452 GenStdMatBwdDeriv(2, returnval);
453 }
454 break;
456 {
457 // check to see if equispaced basis
458 int nummodes = m_base[0]->GetNumModes();
459 bool equispaced = true;
460 for (i = 1; i < m_base.size(); ++i)
461 {
462 if (m_base[i]->GetNumModes() != nummodes)
463 {
464 equispaced = false;
465 }
466 }
467
468 ASSERTL0(equispaced,
469 "Currently need to have same num modes in all "
470 "directionmodes to use EquiSpacedToCoeff method");
471
472 int ntot = GetTotPoints();
473 Array<OneD, NekDouble> qmode(ntot);
474 Array<OneD, NekDouble> emode(m_ncoeffs);
475
476 returnval =
478 for (i = 0; i < m_ncoeffs; ++i)
479 {
480 // Get mode at quadrature points
481 FillMode(i, qmode);
482
483 // interpolate to equi spaced
484 PhysInterpToSimplexEquiSpaced(qmode, emode, nummodes);
485
486 // fill matrix
487 Vmath::Vcopy(m_ncoeffs, &emode[0], 1,
488 returnval->GetRawPtr() + i * m_ncoeffs, 1);
489 }
490 }
491 break;
493 {
494 StdMatrixKey key(eCoeffsToEquiSpaced, mkey.GetShapeType(), *this,
497
499
500 returnval->Invert();
501 }
502 break;
503 case eCoeffsToGLL:
504 {
505 // check to see if equispaced basis
506 int nummodes = m_base[0]->GetNumModes();
507 bool equispaced = true;
508 for (int i = 1; i < m_base.size(); ++i)
509 {
510 if (m_base[i]->GetNumModes() != nummodes)
511 {
512 equispaced = false;
513 }
514 }
515
516 ASSERTL0(equispaced,
517 "Currently need to have same num modes in all "
518 "directionmodes to use EquiSpacedToCoeff method");
519
520 int ntot = GetTotPoints();
521 Array<OneD, NekDouble> qmode(ntot);
522 Array<OneD, NekDouble> emode(m_ncoeffs);
523
524 returnval =
526 for (int i = 0; i < m_ncoeffs; ++i)
527 {
528 // Get mode at quadrature points
529 FillMode(i, qmode);
530
531 // interpolate to equi spaced
532 PhysInterpToGLL(qmode, emode, nummodes);
533
534 // fill matrix
535 Vmath::Vcopy(m_ncoeffs, &emode[0], 1,
536 returnval->GetRawPtr() + i * m_ncoeffs, 1);
537 }
538 }
539 break;
540 case eGLLToCoeffs:
541 {
542 StdMatrixKey key(eCoeffsToGLL, mkey.GetShapeType(), *this,
545
547
548 returnval->Invert();
549 }
550 break;
551 case eMass:
552 case eHelmholtz:
553 case eLaplacian:
554 case eLaplacian00:
555 case eLaplacian01:
556 case eLaplacian02:
557 case eLaplacian10:
558 case eLaplacian11:
559 case eLaplacian12:
560 case eLaplacian20:
561 case eLaplacian21:
562 case eLaplacian22:
563 case eWeakDeriv0:
564 case eWeakDeriv1:
565 case eWeakDeriv2:
568 case eLinearAdvection:
571 {
572 Array<OneD, NekDouble> tmp(m_ncoeffs);
573 returnval =
575 DNekMat &Mat = *returnval;
576
577 for (i = 0; i < m_ncoeffs; ++i)
578 {
579 Vmath::Zero(m_ncoeffs, tmp, 1);
580 tmp[i] = 1.0;
581
582 GeneralMatrixOp_MatFree(tmp, tmp, mkey);
583
584 Vmath::Vcopy(m_ncoeffs, &tmp[0], 1,
585 &(Mat.GetPtr())[0] + i * m_ncoeffs, 1);
586 }
587 }
588 break;
589 default:
590 {
592 "This type of matrix, " +
593 static_cast<std::string>(
594 MatrixTypeMap[mkey.GetMatrixType()]) +
595 ", can not be created using a general approach");
596 }
597 break;
598 }
599
600 return returnval;
601}
#define ASSERTL0(condition, msg)
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
int GetTotPoints() const
This function returns the total number of quadrature points used in the element.
void FillMode(const int mode, Array< OneD, NekDouble > &outarray)
This function fills the array outarray with the mode-th mode of the expansion.
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 arra...
DNekMatSharedPtr GetStdMatrix(const StdMatrixKey &mkey)
void PhysInterpToGLL(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, int npset=-1)
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 expa...
void IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
LibUtilities::ShapeType DetShapeType() const
This function returns the shape of the expansion domain.
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 GenStdMatBwdDeriv(const int dir, DNekMatSharedPtr &mat)
void GeneralMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
static VarFactorsMap NullVarFactorsMap
const char *const MatrixTypeMap[]
static ConstFactorMap NullConstFactorMap
static VarCoeffMap NullVarCoeffMap
NekMatrix< NekDouble, StandardMatrixTag > DNekMat
NekMatrix< InnerMatrixType, BlockMatrixTag > Transpose(NekMatrix< InnerMatrixType, BlockMatrixTag > &rhs)
void Zero(int n, T *x, const int incx)
Zero vector.
Definition Vmath.hpp:273
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition Vmath.hpp:825

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL0, BwdTrans(), DetShapeType(), Nektar::StdRegions::eBwdMat, Nektar::StdRegions::eBwdTrans, Nektar::StdRegions::eCoeffsToEquiSpaced, Nektar::StdRegions::eCoeffsToGLL, Nektar::StdRegions::eDerivBase0, Nektar::StdRegions::eDerivBase1, Nektar::StdRegions::eDerivBase2, Nektar::StdRegions::eEquiSpacedToCoeffs, Nektar::ErrorUtil::efatal, Nektar::StdRegions::eGLLToCoeffs, Nektar::StdRegions::eHelmholtz, Nektar::StdRegions::eInvBwdTrans, Nektar::StdRegions::eInvIProductWRTBase, Nektar::StdRegions::eInvMass, Nektar::StdRegions::eInvNBasisTrans, Nektar::StdRegions::eIProductWRTBase, Nektar::StdRegions::eIProductWRTDerivBase0, Nektar::StdRegions::eIProductWRTDerivBase1, Nektar::StdRegions::eIProductWRTDerivBase2, Nektar::StdRegions::eLaplacian, Nektar::StdRegions::eLaplacian00, Nektar::StdRegions::eLaplacian01, Nektar::StdRegions::eLaplacian02, Nektar::StdRegions::eLaplacian10, Nektar::StdRegions::eLaplacian11, Nektar::StdRegions::eLaplacian12, Nektar::StdRegions::eLaplacian20, Nektar::StdRegions::eLaplacian21, Nektar::StdRegions::eLaplacian22, Nektar::StdRegions::eLinearAdvection, Nektar::StdRegions::eLinearAdvectionDiffusionReaction, Nektar::StdRegions::eLinearAdvectionReaction, Nektar::StdRegions::eMass, Nektar::StdRegions::eMassLevelCurvature, Nektar::StdRegions::eNBasisTrans, Nektar::StdRegions::eWeakDeriv0, Nektar::StdRegions::eWeakDeriv1, Nektar::StdRegions::eWeakDeriv2, Nektar::StdRegions::eWeakDirectionalDeriv, FillMode(), GeneralMatrixOp_MatFree(), GenStdMatBwdDeriv(), Nektar::StdRegions::StdMatrixKey::GetMatrixType(), Nektar::StdRegions::StdMatrixKey::GetNodalPointsType(), Nektar::StdRegions::StdMatrixKey::GetShapeType(), GetStdMatrix(), GetTotPoints(), IProductWRTBase(), IProductWRTDerivBase(), m_base, m_ncoeffs, Nektar::StdRegions::MatrixTypeMap, NEKERROR, Nektar::StdRegions::NullConstFactorMap, Nektar::StdRegions::NullVarCoeffMap, Nektar::StdRegions::NullVarFactorsMap, PhysInterpToGLL(), PhysInterpToSimplexEquiSpaced(), Nektar::Transpose(), Vmath::Vcopy(), and Vmath::Zero().

Referenced by Nektar::StdRegions::StdHexExp::v_GenMatrix(), Nektar::StdRegions::StdNodalPrismExp::v_GenMatrix(), Nektar::StdRegions::StdNodalTetExp::v_GenMatrix(), Nektar::StdRegions::StdNodalTriExp::v_GenMatrix(), Nektar::StdRegions::StdPointExp::v_GenMatrix(), Nektar::StdRegions::StdPrismExp::v_GenMatrix(), Nektar::StdRegions::StdPyrExp::v_GenMatrix(), Nektar::StdRegions::StdQuadExp::v_GenMatrix(), Nektar::StdRegions::StdSegExp::v_GenMatrix(), Nektar::StdRegions::StdTetExp::v_GenMatrix(), and Nektar::StdRegions::StdTriExp::v_GenMatrix().

◆ CreateStdFac()

std::shared_ptr< Array< OneD, const NekDouble > > Nektar::StdRegions::StdExpansion::CreateStdFac ( const StdFacKey mkey)
protected

Definition at line 603 of file StdExpansion.cpp.

605{
606 Array<OneD, NekDouble> returnval;
607
608 switch (mkey.m_stdFacType)
609 {
610 case eWeights1:
611 {
612 ASSERTL1(mkey.m_basisKey.GetPointsKey() ==
613 m_base[1]->GetPointsKey(),
614 "PointsKey are differrent in CreateStdFac");
615
616 // deep copy of weights
617 returnval = m_base[1]->GetW();
618
619 int nquad1 = m_base[1]->GetNumPoints();
620
621 if (m_base[1]->GetPointsType() ==
622 LibUtilities::eGaussRadauMAlpha1Beta0)
623 {
624 Blas::Dscal(nquad1, 0.5, returnval.data(), 1);
625 }
626 else
627 {
628 const Array<OneD, NekDouble> z1 = m_base[1]->GetZ();
629 for (int i = 0; i < nquad1; ++i)
630 {
631 returnval[i] *= 0.5 * (1 - z1[i]);
632 }
633 }
634 }
635 break;
636 case eWeights2:
637 {
638 ASSERTL1(mkey.m_basisKey.GetPointsKey() ==
639 m_base[2]->GetPointsKey(),
640 "PointsKey are differrent in CreateStdFac");
641
642 // deep copy of weights
643 returnval = m_base[2]->GetW();
644
645 int nquad2 = m_base[2]->GetNumPoints();
646
647 // For Prisms we need to do same scaling as for Weights1 code
648 if ((mkey.m_basisKey.GetBasisType() == LibUtilities::eModified_B) ||
649 mkey.m_basisKey.GetBasisType() == LibUtilities::eOrtho_B)
650 {
651 if (m_base[2]->GetPointsType() ==
652 LibUtilities::eGaussRadauMAlpha1Beta0)
653 {
654 Blas::Dscal(nquad2, 0.5, returnval.data(), 1);
655 }
656 else
657 {
658 const Array<OneD, NekDouble> z2 = m_base[2]->GetZ();
659 for (int i = 0; i < nquad2; ++i)
660 {
661 returnval[i] *= 0.5 * (1 - z2[i]);
662 }
663 }
664 }
665 else // case for Tets and Pyramids
666 {
667 switch (m_base[2]->GetPointsType())
668 {
669 // (2,0) Jacobi inner product.
670 case LibUtilities::eGaussRadauMAlpha2Beta0:
671 {
672 Blas::Dscal(nquad2, 0.25, returnval.data(), 1);
673 }
674 break;
675 // (1,0) Jacobi inner product.
676 case LibUtilities::eGaussRadauMAlpha1Beta0:
677 {
678 const Array<OneD, NekDouble> z2 = m_base[2]->GetZ();
679
680 for (int i = 0; i < nquad2; ++i)
681 {
682 returnval[i] *= 0.25 * (1 - z2[i]);
683 }
684 }
685 break;
686 default:
687 {
688 const Array<OneD, NekDouble> z2 = m_base[2]->GetZ();
689 for (int i = 0; i < nquad2; ++i)
690 {
691 returnval[i] *= 0.25 * (1 - z2[i]) * (1 - z2[i]);
692 }
693 }
694 break;
695 }
696 }
697 }
698 break;
700 {
701 ASSERTL1(mkey.m_basisKey.GetPointsKey() ==
702 m_base[0]->GetPointsKey(),
703 "PointssKey are differrent in CreateStdFac");
704
705 int nquad0 = m_base[0]->GetNumPoints();
706
707 returnval = Array<OneD, NekDouble>(nquad0);
708
709 const Array<OneD, NekDouble> z0 = m_base[0]->GetZ();
710 for (int i = 0; i < nquad0; ++i)
711 {
712 returnval[i] = 0.5 * (1.0 + z0[i]);
713 }
714 }
715 break;
717 {
718 ASSERTL1(mkey.m_basisKey.GetPointsKey() ==
719 m_base[1]->GetPointsKey(),
720 "PointssKey are differrent in CreateStdFac");
721
722 int nquad1 = m_base[1]->GetNumPoints();
723
724 returnval = Array<OneD, NekDouble>(nquad1);
725
726 const Array<OneD, NekDouble> z1 = m_base[1]->GetZ();
727 for (int i = 0; i < nquad1; ++i)
728 {
729 returnval[i] = 0.5 * (1.0 + z1[i]);
730 }
731 }
732 break;
734 {
735 ASSERTL1(mkey.m_basisKey.GetPointsKey() ==
736 m_base[1]->GetPointsKey(),
737 "PointssKey are differrent in CreateStdFac");
738
739 int nquad1 = m_base[1]->GetNumPoints();
740
741 returnval = Array<OneD, NekDouble>(nquad1);
742
743 const Array<OneD, NekDouble> z1 = m_base[1]->GetZ();
744 for (int i = 0; i < nquad1; ++i)
745 {
746 returnval[i] = 2.0 / (1.0 - z1[i]);
747 }
748 }
749 break;
751 {
752 ASSERTL1(mkey.m_basisKey.GetPointsKey() ==
753 m_base[2]->GetPointsKey(),
754 "PointssKey are differrent in CreateStdFac");
755
756 int nquad2 = m_base[2]->GetNumPoints();
757
758 returnval = Array<OneD, NekDouble>(nquad2);
759
760 const Array<OneD, NekDouble> z2 = m_base[2]->GetZ();
761 for (int i = 0; i < nquad2; ++i)
762 {
763 returnval[i] = 2.0 / (1.0 - z2[i]);
764 }
765 }
766 break;
767 default:
768 NEKERROR(ErrorUtil::efatal, "Factor Type not defined");
769 break;
770 }
771 return std::make_shared<Array<OneD, const NekDouble>>(returnval);
772}
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
LibUtilities::PointsType GetPointsType(const int dir) const
This function returns the type of quadrature points used in the dir direction.
static void Dscal(const int &n, const double &alpha, double *x, const int &incx)
BLAS level 1: x = alpha x.
Definition Blas.hpp:124
@ eModified_B
Principle Modified Functions .
Definition BasisType.h:49
@ eOrtho_B
Principle Orthogonal Functions .
Definition BasisType.h:44

References ASSERTL1, Blas::Dscal(), Nektar::ErrorUtil::efatal, Nektar::StdRegions::eHalfMultOnePlusZ0, Nektar::StdRegions::eHalfMultOnePlusZ1, Nektar::LibUtilities::eModified_B, Nektar::LibUtilities::eOrtho_B, Nektar::StdRegions::eTwoOverOneMinusZ1, Nektar::StdRegions::eTwoOverOneMinusZ2, Nektar::StdRegions::eWeights1, Nektar::StdRegions::eWeights2, GetPointsType(), m_base, and NEKERROR.

◆ CreateStdMatrix()

DNekMatSharedPtr Nektar::StdRegions::StdExpansion::CreateStdMatrix ( const StdMatrixKey mkey)
inlineprotected

Definition at line 1285 of file StdExpansion.h.

1286 {
1287 return v_CreateStdMatrix(mkey);
1288 }
virtual DNekMatSharedPtr v_CreateStdMatrix(const StdMatrixKey &mkey)

References v_CreateStdMatrix().

◆ CreateStdStaticCondMatrix()

DNekBlkMatSharedPtr Nektar::StdRegions::StdExpansion::CreateStdStaticCondMatrix ( const StdMatrixKey mkey)
protected

Create the static condensation of a matrix when using a boundary interior decomposition.

If a matrix system can be represented by \( Mat = \left [ \begin{array}{cc} A & B \\ C & D \end{array} \right ] \) This routine creates a matrix containing the statically condense system of the form \( Mat = \left [ \begin{array}{cc} A - B D^{-1} C & B D^{-1} \\ D^{-1} C & D^{-1} \end{array} \right ] \)

Definition at line 176 of file StdExpansion.cpp.

178{
179 DNekBlkMatSharedPtr returnval;
180
181 DNekMatSharedPtr mat = GetStdMatrix(mkey);
182 int nbdry = NumBndryCoeffs(); // also checks to see if this is a boundary
183 // interior decomposed expansion
184 int nint = m_ncoeffs - nbdry;
190
191 int i, j;
192
193 Array<OneD, unsigned int> bmap(nbdry);
194 Array<OneD, unsigned int> imap(nint);
195 GetBoundaryMap(bmap);
196 GetInteriorMap(imap);
197
198 for (i = 0; i < nbdry; ++i)
199 {
200 for (j = 0; j < nbdry; ++j)
201 {
202 (*A)(i, j) = (*mat)(bmap[i], bmap[j]);
203 }
204
205 for (j = 0; j < nint; ++j)
206 {
207 (*B)(i, j) = (*mat)(bmap[i], imap[j]);
208 }
209 }
210
211 for (i = 0; i < nint; ++i)
212 {
213 for (j = 0; j < nbdry; ++j)
214 {
215 (*C)(i, j) = (*mat)(imap[i], bmap[j]);
216 }
217
218 for (j = 0; j < nint; ++j)
219 {
220 (*D)(i, j) = (*mat)(imap[i], imap[j]);
221 }
222 }
223
224 // Calculate static condensed system
225 if (nint)
226 {
227 D->Invert();
228 (*B) = (*B) * (*D);
229 (*A) = (*A) - (*B) * (*C);
230 }
231
232 // set up block matrix system
233 Array<OneD, unsigned int> exp_size(2);
234 exp_size[0] = nbdry;
235 exp_size[1] = nint;
236 returnval =
238
239 returnval->SetBlock(0, 0, A);
240 returnval->SetBlock(0, 1, B);
241 returnval->SetBlock(1, 0, C);
242 returnval->SetBlock(1, 1, D);
243
244 return returnval;
245}
void GetBoundaryMap(Array< OneD, unsigned int > &outarray)
void GetInteriorMap(Array< OneD, unsigned int > &outarray)
std::shared_ptr< DNekBlkMat > DNekBlkMatSharedPtr

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), GetBoundaryMap(), GetInteriorMap(), GetStdMatrix(), m_ncoeffs, and NumBndryCoeffs().

◆ DetShapeType()

LibUtilities::ShapeType Nektar::StdRegions::StdExpansion::DetShapeType ( ) const
inline

This function returns the shape of the expansion domain.

This function is a wrapper around the virtual function v_DetShapeType()

The different shape types implemented in the code are defined in the ShapeType enumeration list. As a result, the function will return one of the types of this enumeration list.

Returns
returns the shape of the expansion domain

Definition at line 414 of file StdExpansion.h.

415 {
416 return v_DetShapeType();
417 }
virtual LibUtilities::ShapeType v_DetShapeType() const =0

References v_DetShapeType().

Referenced by Nektar::LocalRegions::Expansion3D::AddFaceBoundaryInt(), Nektar::LocalRegions::Expansion2D::AddHDGHelmholtzEdgeTerms(), Nektar::LocalRegions::Expansion3D::AddHDGHelmholtzFaceTerms(), CreateGeneralMatrix(), Nektar::LocalRegions::Expansion2D::CreateMatrix(), Nektar::LocalRegions::Expansion3D::CreateMatrix(), Nektar::LocalRegions::SegExp::CreateMatrix(), EquiSpacedToCoeffs(), EquiSpacedToPhys(), export_StdExpansion(), Nektar::LocalRegions::QuadExp::GetEdgeInterpVals(), Nektar::LinearisedAdvection::GetFloquetBlockMatrix(), Nektar::SolverUtils::FileFieldInterpolator::GetFloquetBlockMatrix(), Nektar::LocalRegions::Expansion::GetLocMatrix(), HelmholtzMatrixOp_MatFree_GenericImpl(), LinearAdvectionDiffusionReactionMatrixOp_MatFree(), Nektar::StdRegions::StdNodalPrismExp::ModalToNodal(), Nektar::StdRegions::StdNodalTetExp::ModalToNodal(), Nektar::StdRegions::StdNodalTriExp::ModalToNodal(), Nektar::LocalRegions::SegExp::MultiplyByElmtInvMass(), Nektar::StdRegions::StdNodalPrismExp::NodalToModal(), Nektar::StdRegions::StdNodalTetExp::NodalToModal(), Nektar::StdRegions::StdNodalPrismExp::NodalToModalTranspose(), Nektar::StdRegions::StdNodalTetExp::NodalToModalTranspose(), Nektar::StdRegions::StdNodalTriExp::NodalToModalTranspose(), PhysInterpToPoints(), Nektar::LocalRegions::Expansion3D::SetFaceToGeomOrientation(), Nektar::MultiRegions::PreconditionerLowEnergy::SetupBlockTransformationMatrix(), Nektar::LocalRegions::Expansion2D::v_AddEdgeNormBoundaryInt(), Nektar::LocalRegions::Expansion3D::v_AddFaceNormBoundaryInt(), Nektar::LocalRegions::Expansion3D::v_AddRobinMassMatrix(), v_FwdTrans(), Nektar::LocalRegions::Expansion::v_FwdTrans(), Nektar::LocalRegions::QuadExp::v_FwdTransBndConstrained(), Nektar::LocalRegions::SegExp::v_FwdTransBndConstrained(), Nektar::LocalRegions::TriExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdQuadExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdTriExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdQuadExp::v_GenMatrix(), Nektar::StdRegions::StdTriExp::v_GenMatrix(), Nektar::LocalRegions::Expansion2D::v_GenMatrix(), Nektar::LocalRegions::Expansion3D::v_GenMatrix(), Nektar::StdRegions::StdExpansion2D::v_GetElmtTraceToTraceMap(), v_GetSimplexEquiSpacedConnectivity(), Nektar::LocalRegions::SegExp::v_GetVertexPhysVals(), Nektar::StdRegions::StdNodalTriExp::v_NodalToModal(), v_PhysEvalFirstDeriv(), and v_PhysEvalFirstSecondDeriv().

◆ DropLocStaticCondMatrix()

void Nektar::StdRegions::StdExpansion::DropLocStaticCondMatrix ( const LocalRegions::MatrixKey mkey)
inline

Definition at line 735 of file StdExpansion.h.

737 {
738 return v_DropLocStaticCondMatrix(mkey);
739 }
virtual void v_DropLocStaticCondMatrix(const LocalRegions::MatrixKey &mkey)

References v_DropLocStaticCondMatrix().

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

◆ EquiSpacedToCoeffs()

void Nektar::StdRegions::StdExpansion::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.

This is primarily used for output purposes to use a more even distribution of points more suitable for alot of postprocessing

Definition at line 1904 of file StdExpansion.cpp.

1907{
1909
1910 // inarray has to be consistent with NumModes definition
1911 // There is also a check in GetStdMatrix to see if all
1912 // modes are of the same size
1913 ConstFactorMap cmap;
1914
1915 cmap[eFactorConst] = m_base[0]->GetNumModes();
1916 StdMatrixKey Ikey(eEquiSpacedToCoeffs, shape, *this, cmap);
1917 DNekMatSharedPtr intmat = GetStdMatrix(Ikey);
1918
1919 NekVector<NekDouble> in(m_ncoeffs, inarray, eWrapper);
1920 NekVector<NekDouble> out(m_ncoeffs, outarray, eWrapper);
1921 out = (*intmat) * in;
1922}
std::map< ConstFactorType, NekDouble > ConstFactorMap

References DetShapeType(), Nektar::StdRegions::eEquiSpacedToCoeffs, Nektar::StdRegions::eFactorConst, Nektar::eWrapper, GetStdMatrix(), m_base, and m_ncoeffs.

◆ EquiSpacedToPhys()

void Nektar::StdRegions::StdExpansion::EquiSpacedToPhys ( const int  nequi,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)

Definition at line 1924 of file StdExpansion.cpp.

1927{
1929
1930 // inarray has to be consistent with NumModes definition
1931 // There is also a check in GetStdMatrix to see if all
1932 // modes are of the same size
1933 ConstFactorMap cmap;
1934
1935 std::vector<unsigned int> nequivec(3, nequi);
1936 cmap[eFactorConst] = nequi;
1937 StdMatrixKey Ikey(eEquiSpacedToPhys, shape, *this, cmap);
1938 DNekMatSharedPtr intmat = GetStdMatrix(Ikey);
1939
1940 NekVector<NekDouble> in(GetNumberOfCoefficients(shape, nequivec), inarray,
1941 eWrapper);
1942 NekVector<NekDouble> out(GetTotPoints(), outarray, eWrapper);
1943 out = (*intmat) * in;
1944}
constexpr int GetNumberOfCoefficients(ShapeType shape, std::vector< unsigned int > &modes, int offset=0)

References DetShapeType(), Nektar::StdRegions::eEquiSpacedToPhys, Nektar::StdRegions::eFactorConst, Nektar::eWrapper, Nektar::LibUtilities::GetNumberOfCoefficients(), GetStdMatrix(), and GetTotPoints().

◆ EvalBasisNumModesMax()

int Nektar::StdRegions::StdExpansion::EvalBasisNumModesMax ( void  ) const
inline

This function returns the maximum number of expansion modes over all local directions.

Returns
returns the maximum number of expansion modes over all local directions

Definition at line 225 of file StdExpansion.h.

226 {
227 int returnval = 0;
228
229 for (size_t i = 0; i < m_base.size(); ++i)
230 {
231 returnval = std::max(returnval, m_base[i]->GetNumModes());
232 }
233
234 return returnval;
235 }

References m_base.

◆ ExponentialFilter()

void Nektar::StdRegions::StdExpansion::ExponentialFilter ( Array< OneD, NekDouble > &  array,
const NekDouble  alpha,
const NekDouble  exponent,
const NekDouble  cutoff 
)
inline

Definition at line 870 of file StdExpansion.h.

872 {
873 v_ExponentialFilter(array, alpha, exponent, cutoff);
874 }
virtual void v_ExponentialFilter(Array< OneD, NekDouble > &array, const NekDouble alpha, const NekDouble exponent, const NekDouble cutoff)

References v_ExponentialFilter().

◆ FillMode()

void Nektar::StdRegions::StdExpansion::FillMode ( const int  mode,
Array< OneD, NekDouble > &  outarray 
)
inline

This function fills the array outarray with the mode-th mode of the expansion.

This function is a wrapper around the virtual function v_FillMode()

The requested mode is evaluated at the quadrature points

Parameters
modethe mode that should be filled
outarraycontains the values of the mode-th mode of the expansion evaluated at the quadrature points (output of the function)

Definition at line 561 of file StdExpansion.h.

562 {
563 v_FillMode(mode, outarray);
564 }
virtual void v_FillMode(const int mode, Array< OneD, NekDouble > &outarray)

References v_FillMode().

Referenced by CreateGeneralMatrix(), Nektar::StdRegions::StdQuadExp::v_GenMatrix(), Nektar::StdRegions::StdTriExp::v_GenMatrix(), Nektar::LocalRegions::Expansion2D::v_GenMatrix(), and Nektar::LocalRegions::Expansion3D::v_GenMatrix().

◆ FwdTrans()

void Nektar::StdRegions::StdExpansion::FwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

This function is a wrapper around the virtual function v_FwdTrans()

Given a function evaluated at the quadrature points, this function calculates the expansion coefficients such that the resulting expansion approximates the original function.

The calculation of the expansion coefficients is done using a Galerkin projection. This is equivalent to the operation:

\[ \mathbf{\hat{u}} = \mathbf{M}^{-1} \mathbf{I}\]

where

  • \(\mathbf{M}[p][q]= \int\phi_p(\mathbf{\xi})\phi_q( \mathbf{\xi}) d\mathbf{\xi}\) is the Mass matrix
  • \(\mathbf{I}[p] = \int\phi_p(\mathbf{\xi}) u(\mathbf{\xi}) d\mathbf{\xi}\)

This function takes the array inarray as the values of the function evaluated at the quadrature points (i.e. \(\mathbf{u}\)), and stores the resulting coefficients \(\mathbf{\hat{u}}\) in the outarray

Parameters
inarrayarray of the function discretely evaluated at the quadrature points
outarrayarray of the function coefficieints

Definition at line 501 of file StdExpansion.h.

503 {
504 v_FwdTrans(inarray, outarray);
505 }
virtual void v_FwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Transform a given function from physical quadrature space to coefficient space.

References v_FwdTrans().

Referenced by Nektar::FieldUtils::ProcessEquiSpacedOutput::GenOrthoModes(), Nektar::LocalRegions::Expansion2D::GetPhysEdgeVarCoeffsFromElement(), Nektar::LocalRegions::Expansion3D::GetPhysFaceVarCoeffsFromElement(), Nektar::GlobalMapping::UpdateGeometry(), Nektar::StdRegions::StdHexExp::v_ExponentialFilter(), Nektar::StdRegions::StdQuadExp::v_ExponentialFilter(), Nektar::StdRegions::StdSegExp::v_ExponentialFilter(), Nektar::LocalRegions::HexExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::PyrExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::QuadExp::v_ExtractDataToCoeffs(), Nektar::StdRegions::StdPrismExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdPyrExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdTetExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdHexExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdPrismExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdPyrExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdQuadExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdSegExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdTetExp::v_SVVLaplacianFilter(), and Nektar::StdRegions::StdTriExp::v_SVVLaplacianFilter().

◆ FwdTransBndConstrained()

void Nektar::StdRegions::StdExpansion::FwdTransBndConstrained ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 507 of file StdExpansion.h.

509 {
510 v_FwdTransBndConstrained(inarray, outarray);
511 }
virtual void v_FwdTransBndConstrained(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)

References v_FwdTransBndConstrained().

◆ GeneralMatrixOp()

void Nektar::StdRegions::StdExpansion::GeneralMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)

Definition at line 774 of file StdExpansion.cpp.

777{
778 switch (mkey.GetMatrixType())
779 {
780 case eMass:
781 MassMatrixOp(inarray, outarray, mkey);
782 break;
783 case eWeakDeriv0:
784 WeakDerivMatrixOp(0, inarray, outarray, mkey);
785 break;
786 case eWeakDeriv1:
787 WeakDerivMatrixOp(1, inarray, outarray, mkey);
788 break;
789 case eWeakDeriv2:
790 WeakDerivMatrixOp(2, inarray, outarray, mkey);
791 break;
793 WeakDirectionalDerivMatrixOp(inarray, outarray, mkey);
794 break;
796 MassLevelCurvatureMatrixOp(inarray, outarray, mkey);
797 break;
798 case eLinearAdvection:
799 LinearAdvectionMatrixOp(inarray, outarray, mkey);
800 break;
802 LinearAdvectionDiffusionReactionMatrixOp(inarray, outarray, mkey,
803 false);
804 break;
806 LinearAdvectionDiffusionReactionMatrixOp(inarray, outarray, mkey);
807 break;
808 case eLaplacian:
809 LaplacianMatrixOp(inarray, outarray, mkey);
810 break;
811 case eLaplacian00:
812 LaplacianMatrixOp(0, 0, inarray, outarray, mkey);
813 break;
814 case eLaplacian01:
815 LaplacianMatrixOp(0, 1, inarray, outarray, mkey);
816 break;
817 case eLaplacian02:
818 LaplacianMatrixOp(0, 2, inarray, outarray, mkey);
819 break;
820 case eLaplacian10:
821 LaplacianMatrixOp(1, 0, inarray, outarray, mkey);
822 break;
823 case eLaplacian11:
824 LaplacianMatrixOp(1, 1, inarray, outarray, mkey);
825 break;
826 case eLaplacian12:
827 LaplacianMatrixOp(1, 2, inarray, outarray, mkey);
828 break;
829 case eLaplacian20:
830 LaplacianMatrixOp(2, 0, inarray, outarray, mkey);
831 break;
832 case eLaplacian21:
833 LaplacianMatrixOp(2, 1, inarray, outarray, mkey);
834 break;
835 case eLaplacian22:
836 LaplacianMatrixOp(2, 2, inarray, outarray, mkey);
837 break;
838 case eHelmholtz:
839 HelmholtzMatrixOp(inarray, outarray, mkey);
840 break;
841 default:
843 "This matrix does not have an operator");
844 break;
845 }
846}
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 WeakDerivMatrixOp(const int i, 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 LinearAdvectionMatrixOp(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 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)

References Nektar::ErrorUtil::efatal, Nektar::StdRegions::eHelmholtz, Nektar::StdRegions::eLaplacian, Nektar::StdRegions::eLaplacian00, Nektar::StdRegions::eLaplacian01, Nektar::StdRegions::eLaplacian02, Nektar::StdRegions::eLaplacian10, Nektar::StdRegions::eLaplacian11, Nektar::StdRegions::eLaplacian12, Nektar::StdRegions::eLaplacian20, Nektar::StdRegions::eLaplacian21, Nektar::StdRegions::eLaplacian22, Nektar::StdRegions::eLinearAdvection, Nektar::StdRegions::eLinearAdvectionDiffusionReaction, Nektar::StdRegions::eLinearAdvectionReaction, Nektar::StdRegions::eMass, Nektar::StdRegions::eMassLevelCurvature, Nektar::StdRegions::eWeakDeriv0, Nektar::StdRegions::eWeakDeriv1, Nektar::StdRegions::eWeakDeriv2, Nektar::StdRegions::eWeakDirectionalDeriv, Nektar::StdRegions::StdMatrixKey::GetMatrixType(), HelmholtzMatrixOp(), LaplacianMatrixOp(), LinearAdvectionDiffusionReactionMatrixOp(), LinearAdvectionMatrixOp(), MassLevelCurvatureMatrixOp(), MassMatrixOp(), NEKERROR, WeakDerivMatrixOp(), and WeakDirectionalDerivMatrixOp().

◆ GeneralMatrixOp_MatFree()

void Nektar::StdRegions::StdExpansion::GeneralMatrixOp_MatFree ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protected

Definition at line 848 of file StdExpansion.cpp.

851{
852 switch (mkey.GetMatrixType())
853 {
854 case eMass:
855 MassMatrixOp_MatFree(inarray, outarray, mkey);
856 break;
857 case eWeakDeriv0:
858 WeakDerivMatrixOp_MatFree(0, inarray, outarray, mkey);
859 break;
860 case eWeakDeriv1:
861 WeakDerivMatrixOp_MatFree(1, inarray, outarray, mkey);
862 break;
863 case eWeakDeriv2:
864 WeakDerivMatrixOp_MatFree(2, inarray, outarray, mkey);
865 break;
867 WeakDirectionalDerivMatrixOp_MatFree(inarray, outarray, mkey);
868 break;
870 MassLevelCurvatureMatrixOp_MatFree(inarray, outarray, mkey);
871 break;
872 case eLinearAdvection:
873 LinearAdvectionMatrixOp_MatFree(inarray, outarray, mkey);
874 break;
877 mkey, false);
878 break;
881 mkey);
882 break;
883 case eLaplacian:
884 LaplacianMatrixOp_MatFree(inarray, outarray, mkey);
885 break;
886 case eLaplacian00:
887 LaplacianMatrixOp_MatFree(0, 0, inarray, outarray, mkey);
888 break;
889 case eLaplacian01:
890 LaplacianMatrixOp_MatFree(0, 1, inarray, outarray, mkey);
891 break;
892 case eLaplacian02:
893 LaplacianMatrixOp_MatFree(0, 2, inarray, outarray, mkey);
894 break;
895 case eLaplacian10:
896 LaplacianMatrixOp_MatFree(1, 0, inarray, outarray, mkey);
897 break;
898 case eLaplacian11:
899 LaplacianMatrixOp_MatFree(1, 1, inarray, outarray, mkey);
900 break;
901 case eLaplacian12:
902 LaplacianMatrixOp_MatFree(1, 2, inarray, outarray, mkey);
903 break;
904 case eLaplacian20:
905 LaplacianMatrixOp_MatFree(2, 0, inarray, outarray, mkey);
906 break;
907 case eLaplacian21:
908 LaplacianMatrixOp_MatFree(2, 1, inarray, outarray, mkey);
909 break;
910 case eLaplacian22:
911 LaplacianMatrixOp_MatFree(2, 2, inarray, outarray, mkey);
912 break;
913 case eHelmholtz:
914 HelmholtzMatrixOp_MatFree(inarray, outarray, mkey);
915 break;
916 default:
918 "This matrix does not have an operator");
919 break;
920 }
921}
void WeakDerivMatrixOp_MatFree(const int i, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
void HelmholtzMatrixOp_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 LaplacianMatrixOp_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 WeakDirectionalDerivMatrixOp_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 MassMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)

References Nektar::ErrorUtil::efatal, Nektar::StdRegions::eHelmholtz, Nektar::StdRegions::eLaplacian, Nektar::StdRegions::eLaplacian00, Nektar::StdRegions::eLaplacian01, Nektar::StdRegions::eLaplacian02, Nektar::StdRegions::eLaplacian10, Nektar::StdRegions::eLaplacian11, Nektar::StdRegions::eLaplacian12, Nektar::StdRegions::eLaplacian20, Nektar::StdRegions::eLaplacian21, Nektar::StdRegions::eLaplacian22, Nektar::StdRegions::eLinearAdvection, Nektar::StdRegions::eLinearAdvectionDiffusionReaction, Nektar::StdRegions::eLinearAdvectionReaction, Nektar::StdRegions::eMass, Nektar::StdRegions::eMassLevelCurvature, Nektar::StdRegions::eWeakDeriv0, Nektar::StdRegions::eWeakDeriv1, Nektar::StdRegions::eWeakDeriv2, Nektar::StdRegions::eWeakDirectionalDeriv, Nektar::StdRegions::StdMatrixKey::GetMatrixType(), HelmholtzMatrixOp_MatFree(), LaplacianMatrixOp_MatFree(), LinearAdvectionDiffusionReactionMatrixOp_MatFree(), LinearAdvectionMatrixOp_MatFree(), MassLevelCurvatureMatrixOp_MatFree(), MassMatrixOp_MatFree(), NEKERROR, WeakDerivMatrixOp_MatFree(), and WeakDirectionalDerivMatrixOp_MatFree().

Referenced by CreateGeneralMatrix().

◆ GenMatrix()

DNekMatSharedPtr Nektar::StdRegions::StdExpansion::GenMatrix ( const StdMatrixKey mkey)
inline

◆ GenStdMatBwdDeriv()

void Nektar::StdRegions::StdExpansion::GenStdMatBwdDeriv ( const int  dir,
DNekMatSharedPtr mat 
)
inline

Definition at line 1260 of file StdExpansion.h.

1262 {
1263 v_GenStdMatBwdDeriv(dir, mat);
1264 }
virtual void v_GenStdMatBwdDeriv(const int dir, DNekMatSharedPtr &mat)

References v_GenStdMatBwdDeriv().

Referenced by CreateGeneralMatrix().

◆ GetBase()

const Array< OneD, const LibUtilities::BasisSharedPtr > & Nektar::StdRegions::StdExpansion::GetBase ( ) const
inline

This function gets the shared point to basis.

Returns
returns the shared pointer to the bases

Definition at line 144 of file StdExpansion.h.

146 {
147 return (m_base);
148 }

References m_base.

Referenced by Nektar::StdRegions::StdPrismExp::v_PhysEvalFirstDeriv(), Nektar::StdRegions::StdPyrExp::v_PhysEvalFirstDeriv(), Nektar::StdRegions::StdTetExp::v_PhysEvalFirstDeriv(), and Nektar::StdRegions::StdTriExp::v_PhysEvalFirstDeriv().

◆ GetBasis()

const LibUtilities::BasisSharedPtr & Nektar::StdRegions::StdExpansion::GetBasis ( int  dir) const
inline

This function gets the shared point to basis in the dir direction.

Returns
returns the shared pointer to the basis in directin dir

Definition at line 156 of file StdExpansion.h.

157 {
158 ASSERTL1(dir < m_base.size(), "dir is larger than number of bases");
159 return (m_base[dir]);
160 }

References ASSERTL1, and m_base.

Referenced by Nektar::LocalRegions::Expansion1D::AddHDGHelmholtzTraceTerms(), Nektar::LocalRegions::Expansion1D::AddNormTraceInt(), export_StdExpansion(), and Nektar::StdRegions::StdQuadExp::v_GetTraceBasisKey().

◆ GetBasisNumModes()

int Nektar::StdRegions::StdExpansion::GetBasisNumModes ( const int  dir) const
inline

This function returns the number of expansion modes in the dir direction.

Parameters
dirthe direction
Returns
returns the number of expansion modes in the dir direction

Definition at line 213 of file StdExpansion.h.

214 {
215 ASSERTL1(dir < m_base.size(), "dir is larger than m_numbases");
216 return (m_base[dir]->GetNumModes());
217 }

References ASSERTL1, and m_base.

Referenced by Nektar::LocalRegions::Expansion3D::AddFaceBoundaryInt(), Nektar::LocalRegions::Expansion3D::AddHDGHelmholtzFaceTerms(), Nektar::LocalRegions::Expansion3D::SetFaceToGeomOrientation(), Nektar::LocalRegions::Expansion2D::v_AddEdgeNormBoundaryInt(), Nektar::LocalRegions::Expansion3D::v_AddFaceNormBoundaryInt(), Nektar::LocalRegions::Expansion3D::v_AddRobinMassMatrix(), Nektar::StdRegions::StdQuadExp::v_GenMatrix(), Nektar::LocalRegions::Expansion3D::v_GenMatrix(), Nektar::StdRegions::StdHexExp::v_GetEdgeNcoeffs(), Nektar::StdRegions::StdPrismExp::v_GetEdgeNcoeffs(), Nektar::StdRegions::StdPyrExp::v_GetEdgeNcoeffs(), Nektar::StdRegions::StdQuadExp::v_GetTraceIntNcoeffs(), Nektar::StdRegions::StdHexExp::v_GetTraceIntNcoeffs(), Nektar::StdRegions::StdPrismExp::v_GetTraceIntNcoeffs(), Nektar::StdRegions::StdTriExp::v_GetTraceIntNcoeffs(), Nektar::StdRegions::StdQuadExp::v_GetTraceNcoeffs(), Nektar::StdRegions::StdHexExp::v_GetTraceNcoeffs(), Nektar::StdRegions::StdPrismExp::v_GetTraceNcoeffs(), Nektar::StdRegions::StdPyrExp::v_GetTraceNcoeffs(), Nektar::StdRegions::StdTetExp::v_GetTraceNcoeffs(), Nektar::StdRegions::StdTriExp::v_GetTraceNcoeffs(), Nektar::StdRegions::StdQuadExp::v_NumBndryCoeffs(), Nektar::StdRegions::StdNodalTriExp::v_NumBndryCoeffs(), Nektar::StdRegions::StdTriExp::v_NumBndryCoeffs(), Nektar::StdRegions::StdQuadExp::v_NumDGBndryCoeffs(), Nektar::StdRegions::StdTriExp::v_NumDGBndryCoeffs(), Nektar::LocalRegions::Expansion2D::v_TraceNormLen(), and Nektar::LocalRegions::Expansion3D::v_TraceNormLen().

◆ GetBasisType()

LibUtilities::BasisType Nektar::StdRegions::StdExpansion::GetBasisType ( const int  dir) const
inline

This function returns the type of basis used in the dir direction.

The different types of bases implemented in the code are defined in the LibUtilities::BasisType enumeration list. As a result, the function will return one of the types of this enumeration list.

Parameters
dirthe direction
Returns
returns the type of basis used in the dir direction

Definition at line 200 of file StdExpansion.h.

201 {
202 ASSERTL1(dir < m_base.size(), "dir is larger than m_numbases");
203 return (m_base[dir]->GetBasisType());
204 }
LibUtilities::BasisType GetBasisType(const int dir) const
This function returns the type of basis used in the dir direction.

References ASSERTL1, GetBasisType(), and m_base.

Referenced by export_StdExpansion(), GetBasisType(), Nektar::LocalRegions::SegExp::ReverseCoeffsAndSign(), Nektar::StdRegions::StdPrismExp::v_BwdTrans(), Nektar::StdRegions::StdTetExp::v_BwdTrans(), Nektar::StdRegions::StdTriExp::v_BwdTrans(), Nektar::LocalRegions::HexExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::PrismExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::PyrExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::QuadExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::SegExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::TetExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::TriExp::v_ExtractDataToCoeffs(), Nektar::StdRegions::StdTriExp::v_FillMode(), Nektar::LocalRegions::SegExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdSegExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdQuadExp::v_GenMatrix(), Nektar::StdRegions::StdSegExp::v_GenMatrix(), Nektar::StdRegions::StdTriExp::v_GenMatrix(), Nektar::StdRegions::StdHexExp::v_GetBoundaryMap(), Nektar::StdRegions::StdPrismExp::v_GetBoundaryMap(), Nektar::StdRegions::StdPyrExp::v_GetBoundaryMap(), Nektar::StdRegions::StdQuadExp::v_GetBoundaryMap(), Nektar::StdRegions::StdSegExp::v_GetBoundaryMap(), Nektar::StdRegions::StdTetExp::v_GetBoundaryMap(), Nektar::StdRegions::StdTriExp::v_GetBoundaryMap(), Nektar::StdRegions::StdHexExp::v_GetEdgeInteriorToElementMap(), Nektar::StdRegions::StdExpansion2D::v_GetElmtTraceToTraceMap(), Nektar::StdRegions::StdHexExp::v_GetElmtTraceToTraceMap(), Nektar::StdRegions::StdPrismExp::v_GetElmtTraceToTraceMap(), Nektar::StdRegions::StdPyrExp::v_GetElmtTraceToTraceMap(), Nektar::StdRegions::StdHexExp::v_GetInteriorMap(), Nektar::StdRegions::StdPrismExp::v_GetInteriorMap(), Nektar::StdRegions::StdPyrExp::v_GetInteriorMap(), Nektar::StdRegions::StdQuadExp::v_GetInteriorMap(), Nektar::StdRegions::StdSegExp::v_GetInteriorMap(), Nektar::StdRegions::StdTetExp::v_GetInteriorMap(), Nektar::StdRegions::StdTriExp::v_GetInteriorMap(), Nektar::LocalRegions::HexExp::v_GetLinStdExp(), Nektar::LocalRegions::NodalPrismExp::v_GetLinStdExp(), Nektar::LocalRegions::NodalTetExp::v_GetLinStdExp(), Nektar::LocalRegions::NodalTriExp::v_GetLinStdExp(), Nektar::LocalRegions::PrismExp::v_GetLinStdExp(), Nektar::LocalRegions::PyrExp::v_GetLinStdExp(), Nektar::LocalRegions::QuadExp::v_GetLinStdExp(), Nektar::LocalRegions::SegExp::v_GetLinStdExp(), Nektar::LocalRegions::TetExp::v_GetLinStdExp(), Nektar::LocalRegions::TriExp::v_GetLinStdExp(), Nektar::StdRegions::StdQuadExp::v_GetTraceBasisKey(), Nektar::StdRegions::StdNodalTriExp::v_GetTraceBasisKey(), Nektar::StdRegions::StdTriExp::v_GetTraceBasisKey(), Nektar::StdRegions::StdHexExp::v_GetTraceCoeffMap(), Nektar::StdRegions::StdPrismExp::v_GetTraceCoeffMap(), Nektar::StdRegions::StdPyrExp::v_GetTraceCoeffMap(), Nektar::StdRegions::StdQuadExp::v_GetTraceCoeffMap(), Nektar::StdRegions::StdSegExp::v_GetTraceCoeffMap(), Nektar::StdRegions::StdTriExp::v_GetTraceCoeffMap(), Nektar::StdRegions::StdQuadExp::v_GetTraceInteriorToElementMap(), Nektar::StdRegions::StdTriExp::v_GetTraceInteriorToElementMap(), Nektar::StdRegions::StdHexExp::v_GetTraceInteriorToElementMap(), Nektar::StdRegions::StdHexExp::v_GetVertexMap(), Nektar::StdRegions::StdPrismExp::v_GetVertexMap(), Nektar::StdRegions::StdPyrExp::v_GetVertexMap(), Nektar::StdRegions::StdQuadExp::v_GetVertexMap(), Nektar::StdRegions::StdSegExp::v_GetVertexMap(), Nektar::StdRegions::StdTetExp::v_GetVertexMap(), Nektar::StdRegions::StdTriExp::v_GetVertexMap(), Nektar::StdRegions::StdPrismExp::v_IProductWRTBaseKernel(), Nektar::StdRegions::StdTetExp::v_IProductWRTBaseKernel(), Nektar::StdRegions::StdHexExp::v_IsBoundaryInteriorExpansion(), Nektar::StdRegions::StdPrismExp::v_IsBoundaryInteriorExpansion(), Nektar::StdRegions::StdQuadExp::v_IsBoundaryInteriorExpansion(), Nektar::StdRegions::StdSegExp::v_IsBoundaryInteriorExpansion(), Nektar::StdRegions::StdTetExp::v_IsBoundaryInteriorExpansion(), Nektar::StdRegions::StdQuadExp::v_NumBndryCoeffs(), Nektar::StdRegions::StdHexExp::v_NumBndryCoeffs(), Nektar::StdRegions::StdPrismExp::v_NumBndryCoeffs(), Nektar::StdRegions::StdPyrExp::v_NumBndryCoeffs(), Nektar::StdRegions::StdTetExp::v_NumBndryCoeffs(), Nektar::StdRegions::StdTriExp::v_NumBndryCoeffs(), Nektar::StdRegions::StdQuadExp::v_NumDGBndryCoeffs(), Nektar::StdRegions::StdHexExp::v_NumDGBndryCoeffs(), Nektar::StdRegions::StdPrismExp::v_NumDGBndryCoeffs(), Nektar::StdRegions::StdPyrExp::v_NumDGBndryCoeffs(), Nektar::StdRegions::StdTetExp::v_NumDGBndryCoeffs(), Nektar::StdRegions::StdTriExp::v_NumDGBndryCoeffs(), Nektar::StdRegions::StdPrismExp::v_PhysEvaluateBasis(), Nektar::StdRegions::StdPyrExp::v_PhysEvaluateBasis(), Nektar::StdRegions::StdTetExp::v_PhysEvaluateBasis(), Nektar::StdRegions::StdTriExp::v_PhysEvaluateBasis(), Nektar::LocalRegions::HexExp::v_ReduceOrderCoeffs(), Nektar::LocalRegions::QuadExp::v_ReduceOrderCoeffs(), Nektar::LocalRegions::TriExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdQuadExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdSegExp::v_ReduceOrderCoeffs(), and Nektar::StdRegions::StdTriExp::v_ReduceOrderCoeffs().

◆ GetBoundaryMap()

void Nektar::StdRegions::StdExpansion::GetBoundaryMap ( Array< OneD, unsigned int > &  outarray)
inline

◆ GetCoord()

void Nektar::StdRegions::StdExpansion::GetCoord ( const Array< OneD, const NekDouble > &  Lcoord,
Array< OneD, NekDouble > &  coord 
)
inline

given the coordinates of a point of the element in the local collapsed coordinate system, this function calculates the physical coordinates of the point

This function is a wrapper around the virtual function v_GetCoord()

Parameters
Lcoordsthe coordinates in the local collapsed coordinate system
coordsthe physical coordinates (output of the function)

Definition at line 680 of file StdExpansion.h.

682 {
683 v_GetCoord(Lcoord, coord);
684 }
virtual void v_GetCoord(const Array< OneD, const NekDouble > &Lcoord, Array< OneD, NekDouble > &coord)

References v_GetCoord().

◆ GetCoordim()

int Nektar::StdRegions::StdExpansion::GetCoordim ( )
inline

Definition at line 755 of file StdExpansion.h.

756 {
757 return v_GetCoordim();
758 }

References v_GetCoordim().

Referenced by Nektar::LocalRegions::Expansion2D::AddHDGHelmholtzEdgeTerms(), Nektar::LocalRegions::Expansion3D::AddHDGHelmholtzFaceTerms(), Nektar::LocalRegions::Expansion1D::AddHDGHelmholtzTraceTerms(), Nektar::LocalRegions::Expansion::ComputeGmatcdotMF(), GetCoords(), Nektar::LocalRegions::Expansion::GetMF(), Nektar::LocalRegions::Expansion2D::GetnEdgecdotMF(), Nektar::LocalRegions::Expansion3D::GetnFacecdotMF(), LaplacianMatrixOp_MatFree(), LaplacianMatrixOp_MatFree_GenericImpl(), LinearAdvectionDiffusionReactionMatrixOp_MatFree(), LinearAdvectionMatrixOp_MatFree(), Nektar::LocalRegions::Expansion2D::v_AddEdgeNormBoundaryInt(), 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::Expansion1D::v_GenMatrix(), Nektar::LocalRegions::Expansion2D::v_GenMatrix(), Nektar::LocalRegions::Expansion3D::v_GenMatrix(), and Nektar::LocalRegions::PointExp::v_GetCoords().

◆ GetCoords() [1/2]

Array< OneD, Array< OneD, NekDouble > > Nektar::StdRegions::StdExpansion::GetCoords ( )
inline

Definition at line 656 of file StdExpansion.h.

657 {
658 Array<OneD, Array<OneD, NekDouble>> coords(3);
659 for (int i = 0; i < GetCoordim(); i++)
660 {
661 coords[i] = Array<OneD, NekDouble>(GetTotPoints());
662 }
663
664 v_GetCoords(coords[0], coords[1], coords[2]);
665
666 return coords;
667 }
virtual void v_GetCoords(Array< OneD, NekDouble > &coords_0, Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2)

References GetCoordim(), GetTotPoints(), and v_GetCoords().

◆ GetCoords() [2/2]

void Nektar::StdRegions::StdExpansion::GetCoords ( Array< OneD, NekDouble > &  coords_1,
Array< OneD, NekDouble > &  coords_2 = NullNekDouble1DArray,
Array< OneD, NekDouble > &  coords_3 = NullNekDouble1DArray 
)
inline

this function returns the physical coordinates of the quadrature points of the expansion

This function is a wrapper around the virtual function v_GetCoords()

Parameters
coordsan array containing the coordinates of the quadrature points (output of the function)

Definition at line 642 of file StdExpansion.h.

645 {
646 v_GetCoords(coords_1, coords_2, coords_3);
647 }

References v_GetCoords().

◆ GetElmtId()

int Nektar::StdRegions::StdExpansion::GetElmtId ( )
inline

Get the element id of this expansion when used in a list by returning value of m_elmt_id.

Definition at line 621 of file StdExpansion.h.

622 {
623 return m_elmt_id;
624 }

References m_elmt_id.

◆ GetElmtTraceToTraceMap()

void Nektar::StdRegions::StdExpansion::GetElmtTraceToTraceMap ( const unsigned int  tid,
Array< OneD, unsigned int > &  maparray,
Array< OneD, int > &  signarray,
Orientation  traceOrient = eForwards,
int  P = -1,
int  Q = -1 
)
inline

Definition at line 790 of file StdExpansion.h.

795 {
796 v_GetElmtTraceToTraceMap(tid, maparray, signarray, traceOrient, P, Q);
797 }
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)

References Nektar::LibUtilities::P, and v_GetElmtTraceToTraceMap().

Referenced by Nektar::StdRegions::StdExpansion3D::v_GetTraceToElementMap().

◆ GetInteriorMap()

void Nektar::StdRegions::StdExpansion::GetInteriorMap ( Array< OneD, unsigned int > &  outarray)
inline

◆ GetLocStaticCondMatrix()

DNekScalBlkMatSharedPtr Nektar::StdRegions::StdExpansion::GetLocStaticCondMatrix ( const LocalRegions::MatrixKey mkey)
inline

Definition at line 729 of file StdExpansion.h.

731 {
732 return v_GetLocStaticCondMatrix(mkey);
733 }
virtual DNekScalBlkMatSharedPtr v_GetLocStaticCondMatrix(const LocalRegions::MatrixKey &mkey)

References v_GetLocStaticCondMatrix().

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

◆ GetNcoeffs()

int Nektar::StdRegions::StdExpansion::GetNcoeffs ( void  ) const
inline

This function returns the total number of coefficients used in the expansion.

Returns
returns the total number of coefficients (which is equivalent to the total number of modes) used in the expansion

Definition at line 168 of file StdExpansion.h.

169 {
170 return (m_ncoeffs);
171 }

References m_ncoeffs.

Referenced by Nektar::LocalRegions::Expansion2D::AddHDGHelmholtzEdgeTerms(), Nektar::LocalRegions::Expansion3D::AddHDGHelmholtzFaceTerms(), Nektar::LocalRegions::Expansion1D::AddHDGHelmholtzTraceTerms(), Nektar::CoupledLocalToGlobalC0ContMap::CoupledLocalToGlobalC0ContMap(), export_StdExpansion(), Nektar::LocalRegions::Expansion2D::GetPhysEdgeVarCoeffsFromElement(), Nektar::LocalRegions::Expansion3D::GetPhysFaceVarCoeffsFromElement(), LaplacianMatrixOp_MatFree(), Nektar::LocalRegions::Expansion2D::v_AddRobinMassMatrix(), Nektar::LocalRegions::Expansion3D::v_AddRobinMassMatrix(), Nektar::LocalRegions::Expansion1D::v_AddRobinMassMatrix(), Nektar::LocalRegions::Expansion2D::v_DGDeriv(), Nektar::LocalRegions::Expansion3D::v_DGDeriv(), Nektar::StdRegions::StdHexExp::v_ExponentialFilter(), Nektar::StdRegions::StdQuadExp::v_ExponentialFilter(), Nektar::StdRegions::StdSegExp::v_ExponentialFilter(), Nektar::LocalRegions::HexExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::PyrExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::QuadExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::Expansion::v_FwdTrans(), Nektar::StdRegions::StdQuadExp::v_GenMatrix(), Nektar::StdRegions::StdTriExp::v_GenMatrix(), Nektar::LocalRegions::Expansion1D::v_GenMatrix(), Nektar::LocalRegions::Expansion2D::v_GenMatrix(), Nektar::LocalRegions::Expansion3D::v_GenMatrix(), Nektar::StdRegions::StdQuadExp::v_GetBoundaryMap(), Nektar::StdRegions::StdNodalTriExp::v_GetInteriorMap(), Nektar::StdRegions::StdQuadExp::v_GetInteriorMap(), Nektar::StdRegions::StdSegExp::v_GetInteriorMap(), Nektar::StdRegions::StdTriExp::v_GetInteriorMap(), Nektar::StdRegions::StdHexExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdPrismExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdPyrExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdQuadExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdSegExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdTetExp::v_SVVLaplacianFilter(), and Nektar::StdRegions::StdTriExp::v_SVVLaplacianFilter().

◆ GetNodalPointsKey()

const LibUtilities::PointsKey Nektar::StdRegions::StdExpansion::GetNodalPointsKey ( ) const
inline

This function returns the type of expansion Nodal point type if defined.

This function is a wrapper around the virtual function v_GetNodalPointsKey()

Definition at line 386 of file StdExpansion.h.

387 {
388 return v_GetNodalPointsKey();
389 };
virtual const LibUtilities::PointsKey v_GetNodalPointsKey() const

References v_GetNodalPointsKey().

◆ GetNtraces()

int Nektar::StdRegions::StdExpansion::GetNtraces ( ) const
inline

Returns the number of trace elements connected to this element.

For example, a quadrilateral has four edges, so this function would return 4.

Definition at line 398 of file StdExpansion.h.

399 {
400 return v_GetNtraces();
401 }
virtual int v_GetNtraces() const =0

References v_GetNtraces().

Referenced by Nektar::LocalRegions::Expansion2D::AddHDGHelmholtzTraceTerms(), Nektar::LocalRegions::Expansion2D::AddNormTraceInt(), Nektar::LocalRegions::Expansion3D::AddNormTraceInt(), Nektar::LocalRegions::Expansion2D::AddNormTraceInt(), Nektar::LocalRegions::Expansion3D::AddNormTraceInt(), export_StdExpansion(), Nektar::LocalRegions::Expansion3D::GetInverseBoundaryMaps(), Nektar::LocalRegions::Expansion::GetLocTraceExp(), Nektar::LocalRegions::Expansion::GetTraceExp(), Nektar::LocalRegions::Expansion::GetTraceNormals(), Nektar::LocalRegions::Expansion::SetTraceExp(), Nektar::LocalRegions::Expansion2D::SetTraceToGeomOrientation(), Nektar::LocalRegions::Expansion3D::SetTraceToGeomOrientation(), Nektar::LocalRegions::Expansion::StdDerivBaseOnTraceMat(), Nektar::LocalRegions::Expansion2D::v_AddEdgeNormBoundaryInt(), Nektar::LocalRegions::Expansion2D::v_AddEdgeNormBoundaryInt(), Nektar::LocalRegions::Expansion3D::v_AddFaceNormBoundaryInt(), Nektar::LocalRegions::Expansion3D::v_BuildInverseTransformationMatrix(), Nektar::LocalRegions::Expansion2D::v_GenMatrix(), Nektar::LocalRegions::Expansion3D::v_GenMatrix(), Nektar::LocalRegions::Expansion3D::v_NormalTraceDerivFactors(), and Nektar::LocalRegions::Expansion2D::v_NormalTraceDerivFactors().

◆ GetNumBases()

int Nektar::StdRegions::StdExpansion::GetNumBases ( ) const
inline

This function returns the number of 1D bases used in the expansion.

Returns
returns the number of 1D bases used in the expansion, which is equal to number dimension of the expansion

Definition at line 135 of file StdExpansion.h.

136 {
137 return m_base.size();
138 }

References m_base.

◆ GetNumPoints()

int Nektar::StdRegions::StdExpansion::GetNumPoints ( const int  dir) const
inline

This function returns the number of quadrature points in the dir direction.

Parameters
dirthe direction
Returns
returns the number of quadrature points in the dir direction

Definition at line 262 of file StdExpansion.h.

263 {
264 ASSERTL1(dir < m_base.size() || dir == 0,
265 "dir is larger than m_numbases");
266 return (m_base.size() > 0 ? m_base[dir]->GetNumPoints() : 1);
267 }

References ASSERTL1, and m_base.

Referenced by Nektar::LocalRegions::Expansion1D::AddHDGHelmholtzTraceTerms(), Nektar::LocalRegions::Expansion1D::AddNormTraceInt(), 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::TriExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdPointExp::v_GetCoords(), Nektar::StdRegions::StdQuadExp::v_GetCoords(), Nektar::StdRegions::StdSegExp::v_GetCoords(), Nektar::StdRegions::StdHexExp::v_GetCoords(), Nektar::StdRegions::StdTetExp::v_GetCoords(), Nektar::StdRegions::StdTriExp::v_GetCoords(), Nektar::StdRegions::StdPrismExp::v_GetCoords(), Nektar::StdRegions::StdPyrExp::v_GetCoords(), Nektar::StdRegions::StdNodalTriExp::v_GetTraceBasisKey(), Nektar::StdRegions::StdTriExp::v_GetTraceBasisKey(), Nektar::StdRegions::StdQuadExp::v_GetTraceNumPoints(), Nektar::StdRegions::StdTriExp::v_GetTraceNumPoints(), Nektar::LocalRegions::PrismExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::PyrExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::TetExp::v_IProductWRTDerivBase(), and Nektar::LocalRegions::Expansion1D::v_NormalTraceDerivFactors().

◆ GetNverts()

int Nektar::StdRegions::StdExpansion::GetNverts ( ) const
inline

◆ GetPoints()

const Array< OneD, const NekDouble > & Nektar::StdRegions::StdExpansion::GetPoints ( const int  dir) const
inline

This function returns a pointer to the array containing the quadrature points in dir direction.

Parameters
dirthe direction
Returns
returns a pointer to the array containing the quadrature points in dir direction

Definition at line 276 of file StdExpansion.h.

277 {
278 return m_base[dir]->GetZ();
279 }

References m_base.

◆ GetPointsKeys()

const LibUtilities::PointsKeyVector Nektar::StdRegions::StdExpansion::GetPointsKeys ( ) const
inline

◆ GetPointsType()

LibUtilities::PointsType Nektar::StdRegions::StdExpansion::GetPointsType ( const int  dir) const
inline

This function returns the type of quadrature points used in the dir direction.

The different types of quadrature points implemented in the code are defined in the LibUtilities::PointsType enumeration list. As a result, the function will return one of the types of this enumeration list.

Parameters
dirthe direction
Returns
returns the type of quadrature points used in the dir direction

Definition at line 249 of file StdExpansion.h.

250 {
251 ASSERTL1(dir < m_base.size(), "dir is larger than m_numbases");
252 return (m_base[dir]->GetPointsType());
253 }

References ASSERTL1, GetPointsType(), and m_base.

Referenced by CreateStdFac(), export_StdExpansion(), GetPointsType(), 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::StdRegions::StdHexExp::v_ExponentialFilter(), Nektar::StdRegions::StdQuadExp::v_ExponentialFilter(), Nektar::StdRegions::StdSegExp::v_ExponentialFilter(), Nektar::LocalRegions::SegExp::v_FwdTransBndConstrained(), Nektar::LocalRegions::TriExp::v_FwdTransBndConstrained(), Nektar::LocalRegions::QuadExp::v_GetLocTracePhysVals(), Nektar::StdRegions::StdNodalTriExp::v_GetTraceBasisKey(), Nektar::StdRegions::StdTriExp::v_GetTraceBasisKey(), Nektar::LocalRegions::QuadExp::v_GetTraceQFactors(), Nektar::LocalRegions::SegExp::v_GetVertexPhysVals(), Nektar::StdRegions::StdHexExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdPrismExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdPyrExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdQuadExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdSegExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdTetExp::v_SVVLaplacianFilter(), and Nektar::StdRegions::StdTriExp::v_SVVLaplacianFilter().

◆ GetShapeDimension()

int Nektar::StdRegions::StdExpansion::GetShapeDimension ( ) const
inline

Definition at line 419 of file StdExpansion.h.

420 {
421 return v_GetShapeDimension();
422 }
virtual int v_GetShapeDimension() const =0

References v_GetShapeDimension().

Referenced by export_StdExpansion(), v_GetCoordim(), and Nektar::LocalRegions::Expansion::v_PhysEvaluate().

◆ GetSimplexEquiSpacedConnectivity()

void Nektar::StdRegions::StdExpansion::GetSimplexEquiSpacedConnectivity ( Array< OneD, int > &  conn,
bool  standard = true 
)
inline

This function provides the connectivity of local simplices (triangles or tets) to connect the equispaced data points provided by PhysInterpToSimplexEquiSpaced.

This is a virtual call to the function v_GetSimplexEquiSpaceConnectivity

Definition at line 1232 of file StdExpansion.h.

1234 {
1235 v_GetSimplexEquiSpacedConnectivity(conn, standard);
1236 }
virtual void v_GetSimplexEquiSpacedConnectivity(Array< OneD, int > &conn, bool standard=true)

References v_GetSimplexEquiSpacedConnectivity().

◆ GetStdFac()

Array< OneD, const NekDouble > Nektar::StdRegions::StdExpansion::GetStdFac ( const StdFacKey mkey)
inline

◆ GetStdMatrix()

DNekMatSharedPtr Nektar::StdRegions::StdExpansion::GetStdMatrix ( const StdMatrixKey mkey)
inline

◆ GetStdStaticCondMatrix()

DNekBlkMatSharedPtr Nektar::StdRegions::StdExpansion::GetStdStaticCondMatrix ( const StdMatrixKey mkey)
inline

Definition at line 691 of file StdExpansion.h.

692 {
693 return m_stdStaticCondMatrixManager[mkey];
694 }

References m_stdStaticCondMatrixManager.

Referenced by Nektar::LocalRegions::Expansion::CreateStaticCondMatrix().

◆ GetTotPoints()

int Nektar::StdRegions::StdExpansion::GetTotPoints ( ) const
inline

This function returns the total number of quadrature points used in the element.

Returns
returns the total number of quadrature points

Definition at line 178 of file StdExpansion.h.

179 {
180 int nqtot = 1;
181
182 for (size_t i = 0; i < m_base.size(); ++i)
183 {
184 nqtot *= m_base[i]->GetNumPoints();
185 }
186
187 return nqtot;
188 }

References m_base.

Referenced by Nektar::LocalRegions::Expansion2D::AddHDGHelmholtzTraceTerms(), Nektar::LocalRegions::Expansion::ComputeQuadratureMetric(), Computestreakpositions(), CreateGeneralMatrix(), EquiSpacedToPhys(), export_StdExpansion(), Nektar::StdRegions::StdNodalPrismExp::GenNBasisTransMatrix(), Nektar::StdRegions::StdNodalTetExp::GenNBasisTransMatrix(), Nektar::StdRegions::StdNodalTriExp::GenNBasisTransMatrix(), GetCoords(), H1(), Integral(), L2(), LaplacianMatrixOp_MatFree(), LinearAdvectionDiffusionReactionMatrixOp_MatFree(), LinearAdvectionMatrixOp_MatFree(), Linf(), main(), MassMatrixOp_MatFree(), Nektar::LocalRegions::Expansion::PhysBaseOnTraceMat(), Nektar::LocalRegions::Expansion::PhysDerivBaseOnTraceMat(), PhysInterpToPoints(), Nektar::StdRegions::StdExpansion1D::PhysTensorDeriv(), Nektar::StdRegions::StdPointExp::PhysTensorDeriv(), Nektar::LocalRegions::Expansion::StdDerivBaseOnTraceMat(), Nektar::StdRegions::StdMatrixKey::StdMatrixKey(), Nektar::FilterMovingBody::UpdateForce(), Nektar::LocalRegions::HexExp::v_ComputeLaplacianMetric(), Nektar::LocalRegions::PyrExp::v_ComputeLaplacianMetric(), Nektar::LocalRegions::QuadExp::v_ComputeLaplacianMetric(), Nektar::LocalRegions::TriExp::v_ComputeLaplacianMetric(), Nektar::LocalRegions::Expansion::v_DivideByQuadratureMetric(), Nektar::LocalRegions::HexExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::PyrExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::QuadExp::v_ExtractDataToCoeffs(), Nektar::StdRegions::StdQuadExp::v_GenMatrix(), Nektar::StdRegions::StdTriExp::v_GenMatrix(), Nektar::LocalRegions::Expansion2D::v_GenMatrix(), Nektar::LocalRegions::Expansion3D::v_GenMatrix(), Nektar::LocalRegions::Expansion1D::v_IProductWRTBase(), Nektar::LocalRegions::Expansion2D::v_IProductWRTBase(), Nektar::LocalRegions::Expansion3D::v_IProductWRTBase(), Nektar::StdRegions::StdExpansion3D::v_LaplacianMatrixOp_MatFree(), Nektar::LocalRegions::Expansion::v_MultiplyByQuadratureMetric(), Nektar::LocalRegions::Expansion3D::v_NormalTraceDerivFactors(), Nektar::LocalRegions::Expansion2D::v_NormalTraceDerivFactors(), Nektar::StdRegions::StdPrismExp::v_PhysEvalFirstDeriv(), Nektar::StdRegions::StdPyrExp::v_PhysEvalFirstDeriv(), Nektar::StdRegions::StdTetExp::v_PhysEvalFirstDeriv(), Nektar::StdRegions::StdTriExp::v_PhysEvalFirstDeriv(), Nektar::FieldUtils::ProcessJacobianEnergy::v_Process(), Nektar::FieldUtils::ProcessScalGrad::v_Process(), 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(), Nektar::LocalRegions::TriExp::v_SVVLaplacianFilter(), Nektar::LocalRegions::Expansion2D::v_VectorFlux(), WeakDerivMatrixOp_MatFree(), and WeakDirectionalDerivMatrixOp_MatFree().

◆ GetTraceBasisKey()

const LibUtilities::BasisKey Nektar::StdRegions::StdExpansion::GetTraceBasisKey ( const int  i,
int  k = -1,
bool  UseGLL = false 
) const
inline

This function returns the basis key belonging to the i-th trace.

This function is a wrapper around the virtual function v_GetTraceBasisKey()

Parameters
ispecifies which trace id
kis the direction of the basis key for 2D traces
UseGlluse GLL quadrature points in Trace Expansion (defaulted to false)
Returns
returns the number of Basis key of the ith trace in the k th direction (when trace is a 2D object)

Definition at line 345 of file StdExpansion.h.

347 {
348 return v_GetTraceBasisKey(i, k, UseGLL);
349 }
virtual const LibUtilities::BasisKey v_GetTraceBasisKey(const int i, const int k, bool UseGLL=false) const

References v_GetTraceBasisKey().

Referenced by Nektar::LocalRegions::Expansion::StdDerivBaseOnTraceMat(), 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::Expansion2D::v_GenMatrix(), Nektar::LocalRegions::Expansion3D::v_GenMatrix(), Nektar::LocalRegions::Expansion2D::v_GenTraceExp(), and Nektar::LocalRegions::Expansion3D::v_GenTraceExp().

◆ GetTraceCoeffMap()

void Nektar::StdRegions::StdExpansion::GetTraceCoeffMap ( const unsigned int  traceid,
Array< OneD, unsigned int > &  maparray 
)
inline

Definition at line 784 of file StdExpansion.h.

786 {
787 v_GetTraceCoeffMap(traceid, maparray);
788 }
virtual void v_GetTraceCoeffMap(const unsigned int traceid, Array< OneD, unsigned int > &maparray)

References v_GetTraceCoeffMap().

Referenced by Nektar::StdRegions::StdExpansion3D::v_GetTraceToElementMap().

◆ GetTraceInteriorToElementMap()

void Nektar::StdRegions::StdExpansion::GetTraceInteriorToElementMap ( const int  tid,
Array< OneD, unsigned int > &  maparray,
Array< OneD, int > &  signarray,
const Orientation  traceOrient = eForwards 
)
inline

Definition at line 799 of file StdExpansion.h.

803 {
804 v_GetTraceInteriorToElementMap(tid, maparray, signarray, traceOrient);
805 }
virtual void v_GetTraceInteriorToElementMap(const int eid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, const Orientation traceOrient=eForwards)

References v_GetTraceInteriorToElementMap().

Referenced by Nektar::LocalRegions::Expansion3D::GetInverseBoundaryMaps(), Nektar::LocalRegions::Expansion2D::GetTraceInverseBoundaryMap(), Nektar::LocalRegions::Expansion3D::GetTraceInverseBoundaryMap(), and Nektar::MultiRegions::AssemblyMapCG::SetUpUniversalC0ContMap().

◆ GetTraceIntNcoeffs()

int Nektar::StdRegions::StdExpansion::GetTraceIntNcoeffs ( const int  i) const
inline

◆ GetTraceNcoeffs()

int Nektar::StdRegions::StdExpansion::GetTraceNcoeffs ( const int  i) const
inline

This function returns the number of expansion coefficients belonging to the i-th trace.

This function is a wrapper around the virtual function v_GetTraceNcoeffs()

Parameters
ispecifies which trace
Returns
returns the number of expansion coefficients belonging to the i-th trace

Definition at line 305 of file StdExpansion.h.

306 {
307 return v_GetTraceNcoeffs(i);
308 }
virtual int v_GetTraceNcoeffs(const int i) const =0

References v_GetTraceNcoeffs().

Referenced by Nektar::MultiRegions::AssemblyMapCG::AssemblyMapCG(), Nektar::CoupledLocalToGlobalC0ContMap::CoupledLocalToGlobalC0ContMap(), Nektar::MultiRegions::AssemblyMapCG::CreateGraph(), Nektar::LocalRegions::Expansion2D::GetTraceInverseBoundaryMap(), Nektar::LocalRegions::Expansion3D::SetFaceToGeomOrientation(), Nektar::LocalRegions::Expansion2D::SetTraceToGeomOrientation(), Nektar::LocalRegions::Expansion3D::SetTraceToGeomOrientation(), Nektar::MultiRegions::AssemblyMapCG::SetUpUniversalC0ContMap(), Nektar::LocalRegions::Expansion2D::v_AddRobinMassMatrix(), Nektar::LocalRegions::Expansion3D::v_AddRobinMassMatrix(), Nektar::LocalRegions::Expansion3D::v_GenMatrix(), Nektar::StdRegions::StdPrismExp::v_GetElmtTraceToTraceMap(), Nektar::StdRegions::StdPyrExp::v_GetElmtTraceToTraceMap(), Nektar::StdRegions::StdNodalTriExp::v_GetTraceInteriorToElementMap(), Nektar::StdRegions::StdQuadExp::v_GetTraceInteriorToElementMap(), Nektar::StdRegions::StdTriExp::v_GetTraceInteriorToElementMap(), and Nektar::StdRegions::StdNodalTriExp::v_GetTraceToElementMap().

◆ GetTraceNumModes()

void Nektar::StdRegions::StdExpansion::GetTraceNumModes ( const int  tid,
int &  numModes0,
int &  numModes1,
const Orientation  traceOrient = eDir1FwdDir1_Dir2FwdDir2 
)
inline

Definition at line 807 of file StdExpansion.h.

810 {
811 v_GetTraceNumModes(tid, numModes0, numModes1, traceOrient);
812 }
virtual void v_GetTraceNumModes(const int fid, int &numModes0, int &numModes1, Orientation traceOrient=eDir1FwdDir1_Dir2FwdDir2)

References v_GetTraceNumModes().

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

◆ GetTraceNumPoints()

int Nektar::StdRegions::StdExpansion::GetTraceNumPoints ( const int  i) const
inline

This function returns the number of quadrature points belonging to the i-th trace.

This function is a wrapper around the virtual function v_GetTraceNumPoints()

Parameters
ispecifies which trace id
Returns
returns the number of quadrature points belonging to the i-th trace

Definition at line 325 of file StdExpansion.h.

326 {
327 return v_GetTraceNumPoints(i);
328 }
virtual int v_GetTraceNumPoints(const int i) const =0

References v_GetTraceNumPoints().

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

◆ GetTracePointsKey()

LibUtilities::PointsKey Nektar::StdRegions::StdExpansion::GetTracePointsKey ( const int  i,
int  k = -1 
) const
inline

This function returns the basis key belonging to the i-th trace.

This function is a wrapper around the virtual function v_GetTracePointsKey()

Parameters
ispecifies which trace id
kis the direction of the basis key for 2D traces
Returns
returns the number of Points key of the ith trace in the k th direction (when trace is a 2D object)

Definition at line 364 of file StdExpansion.h.

365 {
366 return v_GetTracePointsKey(i, k);
367 }
virtual LibUtilities::PointsKey v_GetTracePointsKey(const int i, const int j) const

References v_GetTracePointsKey().

◆ GetTraceToElementMap()

void Nektar::StdRegions::StdExpansion::GetTraceToElementMap ( const int  tid,
Array< OneD, unsigned int > &  maparray,
Array< OneD, int > &  signarray,
Orientation  traceOrient = eForwards,
int  P = -1,
int  Q = -1 
)
inline

◆ GetVertexMap()

int Nektar::StdRegions::StdExpansion::GetVertexMap ( const int  localVertexId,
bool  useCoeffPacking = false 
)
inline

◆ H1()

NekDouble Nektar::StdRegions::StdExpansion::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.

This function takes the physical value space array m_phys as approximate solution

Parameters
solarray of solution function at physical quadrature points
Returns
returns the \( H_1 \) error as a double.

Definition at line 143 of file StdExpansion.cpp.

145{
146 int i;
147 NekDouble val;
148 int ntot = GetTotPoints();
149 int coordim = v_GetCoordim();
150 Array<OneD, NekDouble> wsp(3 * ntot);
151 Array<OneD, NekDouble> wsp_deriv = wsp + ntot;
152 Array<OneD, NekDouble> sum = wsp_deriv + ntot;
153
154 if (sol == NullNekDouble1DArray)
155 {
156 Vmath::Vcopy(ntot, phys, 1, wsp, 1);
157 Vmath::Vmul(ntot, phys, 1, phys, 1, sum, 1);
158 }
159 else
160 {
161 Vmath::Vsub(ntot, sol, 1, phys, 1, wsp, 1);
162 Vmath::Vmul(ntot, wsp, 1, wsp, 1, sum, 1);
163 }
164
165 for (i = 0; i < coordim; ++i)
166 {
167 v_PhysDeriv(i, wsp, wsp_deriv);
168 Vmath::Vvtvp(ntot, wsp_deriv, 1, wsp_deriv, 1, sum, 1, sum, 1);
169 }
170
171 val = sqrt(Integral(sum));
172
173 return val;
174}
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.
NekDouble Integral(const Array< OneD, const NekDouble > &inarray)
This function integrates the specified function over the domain.
static Array< OneD, NekDouble > NullNekDouble1DArray
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
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
void Vsub(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Subtract vector z = x-y.
Definition Vmath.hpp:220
scalarT< T > sqrt(scalarT< T > in)
Definition scalar.hpp:290

References GetTotPoints(), Integral(), Nektar::NullNekDouble1DArray, tinysimd::sqrt(), v_GetCoordim(), v_PhysDeriv(), Vmath::Vcopy(), Vmath::Vmul(), Vmath::Vsub(), and Vmath::Vvtvp().

◆ HelmholtzMatrixOp()

void Nektar::StdRegions::StdExpansion::HelmholtzMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
inline
Parameters
inarrayInput array \( \mathbf{u} \).
outarrayOutput array \( \boldsymbol{\nabla^2u} + \lambda \boldsymbol{u} \).
mkey

Definition at line 928 of file StdExpansion.h.

931 {
932 v_HelmholtzMatrixOp(inarray, outarray, mkey);
933 }
virtual void v_HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)

References v_HelmholtzMatrixOp().

Referenced by GeneralMatrixOp().

◆ HelmholtzMatrixOp_MatFree()

void Nektar::StdRegions::StdExpansion::HelmholtzMatrixOp_MatFree ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
inlineprotected

Definition at line 1369 of file StdExpansion.h.

1372 {
1373 v_HelmholtzMatrixOp_MatFree(inarray, outarray, mkey);
1374 }
virtual void v_HelmholtzMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)

References v_HelmholtzMatrixOp_MatFree().

Referenced by GeneralMatrixOp_MatFree(), v_HelmholtzMatrixOp(), Nektar::LocalRegions::QuadExp::v_HelmholtzMatrixOp(), and Nektar::LocalRegions::TriExp::v_HelmholtzMatrixOp().

◆ HelmholtzMatrixOp_MatFree_GenericImpl()

void Nektar::StdRegions::StdExpansion::HelmholtzMatrixOp_MatFree_GenericImpl ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protected

Definition at line 1242 of file StdExpansion.cpp.

1245{
1246 NekDouble lambda = mkey.GetConstFactor(eFactorLambda);
1247 Array<OneD, NekDouble> tmp(m_ncoeffs);
1248 StdMatrixKey mkeymass(eMass, DetShapeType(), *this);
1249 StdMatrixKey mkeylap(eLaplacian, DetShapeType(), *this,
1250 mkey.GetConstFactors(), mkey.GetVarCoeffs(),
1251 mkey.GetVarFactors(), mkey.GetNodalPointsType());
1252
1253 MassMatrixOp(inarray, tmp, mkeymass);
1254 LaplacianMatrixOp(inarray, outarray, mkeylap);
1255
1256 Blas::Daxpy(m_ncoeffs, lambda, tmp, 1, outarray, 1);
1257}
static void Daxpy(const int &n, const double &alpha, const double *x, const int &incx, const double *y, const int &incy)
BLAS level 1: y = alpha x plus y.
Definition Blas.hpp:117

References Blas::Daxpy(), DetShapeType(), Nektar::StdRegions::eFactorLambda, Nektar::StdRegions::eLaplacian, Nektar::StdRegions::eMass, Nektar::StdRegions::StdMatrixKey::GetConstFactor(), Nektar::StdRegions::StdMatrixKey::GetConstFactors(), Nektar::StdRegions::StdMatrixKey::GetNodalPointsType(), Nektar::StdRegions::StdMatrixKey::GetVarCoeffs(), Nektar::StdRegions::StdMatrixKey::GetVarFactors(), LaplacianMatrixOp(), m_ncoeffs, and MassMatrixOp().

Referenced by Nektar::StdRegions::StdNodalTriExp::v_HelmholtzMatrixOp(), v_HelmholtzMatrixOp_MatFree(), Nektar::StdRegions::StdExpansion2D::v_HelmholtzMatrixOp_MatFree(), and Nektar::StdRegions::StdExpansion3D::v_HelmholtzMatrixOp_MatFree().

◆ Integral()

NekDouble Nektar::StdRegions::StdExpansion::Integral ( const Array< OneD, const NekDouble > &  inarray)
inline

This function integrates the specified function over the domain.

Based on the values of the function evaluated at the quadrature points (which are stored in inarray), this function calculates the integral of this function over the domain. This is equivalent to the numerical evaluation of the operation

\[ I=\int u(\mathbf{\xi})d \mathbf{\xi}\]

Parameters
inarrayvalues of the function to be integrated evaluated at the quadrature points (i.e. inarray[m]= \(u(\mathbf{\xi}_m)\))
Returns
returns the value of the calculated integral
        Inputs:\n
  • inarray: definition of function to be returned at quadrature point of expansion.

Outputs:

  • returns \(\int^1_{-1}\int^1_{-1} u(\xi_1, \xi_2) J[i,j] d \xi_1 d \xi_2 \) where \(inarray[i,j] = u(\xi_{1i},\xi_{2j}) \) and \( J[i,j] \) is the Jacobian evaluated at the quadrature point.

Definition at line 540 of file StdExpansion.h.

541 {
542 const int nqtot = GetTotPoints();
543 Array<OneD, NekDouble> tmp(GetTotPoints());
544 v_MultiplyByQuadratureMetric(inarray, tmp);
545 return Vmath::Vsum(nqtot, tmp, 1);
546 }
virtual void v_MultiplyByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
T Vsum(int n, const T *x, const int incx)
Subtract return sum(x)
Definition Vmath.hpp:608

References GetTotPoints(), v_MultiplyByQuadratureMetric(), and Vmath::Vsum().

Referenced by export_StdExpansion(), H1(), L2(), and Nektar::LocalRegions::Expansion1D::v_VectorFlux().

◆ IProductWRTBase()

void Nektar::StdRegions::StdExpansion::IProductWRTBase ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

this function calculates the inner product of a given function f with the different modes of the expansion

This function is a wrapper around the virtual function v_IProductWRTBase()

This is equivalent to the numerical evaluation of

\[ I[p] = \int \phi_p(\mathbf{x}) f(\mathbf{x}) d\mathbf{x}\]

\( \begin{array}{rcl} I_{pq} = (\phi_q \phi_q, u) & = & \sum_{i=0}^{nq_0} \sum_{j=0}^{nq_1} \phi_p(\xi_{0,i}) \phi_q(\xi_{1,j}) w^0_i w^1_j u(\xi_{0,i} \xi_{1,j}) J_{i,j}\\ & = & \sum_{i=0}^{nq_0} \phi_p(\xi_{0,i}) \sum_{j=0}^{nq_1} \phi_q(\xi_{1,j}) \tilde{u}_{i,j} J_{i,j} \end{array} \)

where

\( \tilde{u}_{i,j} = w^0_i w^1_j u(\xi_{0,i},\xi_{1,j}) \)

which can be implemented as

\( f_{qi} = \sum_{j=0}^{nq_1} \phi_q(\xi_{1,j}) \tilde{u}_{i,j} = {\bf B_1 U} \) \( I_{pq} = \sum_{i=0}^{nq_0} \phi_p(\xi_{0,i}) f_{qi} = {\bf B_0 F} \)

\param inarray contains the values of the function \a f
evaluated at the quadrature points
\param outarray contains the values of the inner product of \a f
with the different modes, i.e. \f$ outarray[p] = I[p]\f$
(output of the function)

Definition at line 598 of file StdExpansion.h.

600 {
601 v_IProductWRTBase(inarray, outarray);
602 }
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.

References v_IProductWRTBase().

Referenced by CreateGeneralMatrix(), Nektar::StdRegions::StdQuadExp::v_FwdTransBndConstrained(), Nektar::LocalRegions::Expansion2D::v_GenMatrix(), Nektar::LocalRegions::Expansion3D::v_GenMatrix(), Nektar::StdRegions::StdExpansion2D::v_HelmholtzMatrixOp_MatFree(), Nektar::StdRegions::StdExpansion3D::v_HelmholtzMatrixOp_MatFree(), Nektar::LocalRegions::QuadExp::v_NormVectorIProductWRTBase(), and Nektar::LocalRegions::TriExp::v_NormVectorIProductWRTBase().

◆ IProductWRTDerivBase()

void Nektar::StdRegions::StdExpansion::IProductWRTDerivBase ( const int  dir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 604 of file StdExpansion.h.

607 {
608 v_IProductWRTDerivBase(dir, inarray, outarray);
609 }
virtual void v_IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)

References v_IProductWRTDerivBase().

Referenced by CreateGeneralMatrix().

◆ IProductWRTDirectionalDerivBase()

void Nektar::StdRegions::StdExpansion::IProductWRTDirectionalDerivBase ( const Array< OneD, const NekDouble > &  direction,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 611 of file StdExpansion.h.

615 {
616 v_IProductWRTDirectionalDerivBase(direction, inarray, outarray);
617 }
virtual void v_IProductWRTDirectionalDerivBase(const Array< OneD, const NekDouble > &direction, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)

References v_IProductWRTDirectionalDerivBase().

◆ IsBoundaryInteriorExpansion()

bool Nektar::StdRegions::StdExpansion::IsBoundaryInteriorExpansion ( ) const
inline

◆ IsNodalNonTensorialExp()

bool Nektar::StdRegions::StdExpansion::IsNodalNonTensorialExp ( )
inline

Definition at line 429 of file StdExpansion.h.

430 {
432 }

References v_IsNodalNonTensorialExp().

◆ L2()

NekDouble Nektar::StdRegions::StdExpansion::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.

This function takes the physical value space array m_phys as approximate solution

Parameters
solarray of solution function at physical quadrature points
Returns
returns the \( L_2 \) error as a double.

Definition at line 121 of file StdExpansion.cpp.

123{
124 NekDouble val;
125 int ntot = GetTotPoints();
126 Array<OneD, NekDouble> wsp(ntot);
127
128 if (sol.size() == 0)
129 {
130 Vmath::Vmul(ntot, phys, 1, phys, 1, wsp, 1);
131 }
132 else
133 {
134 Vmath::Vsub(ntot, sol, 1, phys, 1, wsp, 1);
135 Vmath::Vmul(ntot, wsp, 1, wsp, 1, wsp, 1);
136 }
137
138 val = Integral(wsp);
139
140 return (val < 0.0) ? 0.0 : sqrt(val);
141}

References GetTotPoints(), Integral(), tinysimd::sqrt(), Vmath::Vmul(), and Vmath::Vsub().

◆ LaplacianMatrixOp() [1/2]

void Nektar::StdRegions::StdExpansion::LaplacianMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
inline

Definition at line 850 of file StdExpansion.h.

853 {
854 v_LaplacianMatrixOp(inarray, outarray, mkey);
855 }
virtual void v_LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)

References v_LaplacianMatrixOp().

Referenced by GeneralMatrixOp(), HelmholtzMatrixOp_MatFree_GenericImpl(), LaplacianMatrixOp_MatFree_GenericImpl(), and LinearAdvectionDiffusionReactionMatrixOp_MatFree().

◆ LaplacianMatrixOp() [2/2]

void Nektar::StdRegions::StdExpansion::LaplacianMatrixOp ( const int  k1,
const int  k2,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
inline

Definition at line 876 of file StdExpansion.h.

880 {
881 v_LaplacianMatrixOp(k1, k2, inarray, outarray, mkey);
882 }

References v_LaplacianMatrixOp().

◆ LaplacianMatrixOp_MatFree() [1/2]

void Nektar::StdRegions::StdExpansion::LaplacianMatrixOp_MatFree ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
inlineprotected

◆ LaplacianMatrixOp_MatFree() [2/2]

void Nektar::StdRegions::StdExpansion::LaplacianMatrixOp_MatFree ( const int  k1,
const int  k2,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protected

Definition at line 940 of file StdExpansion.cpp.

943{
944 ASSERTL1(k1 >= 0 && k1 < GetCoordim(), "invalid first argument");
945 ASSERTL1(k2 >= 0 && k2 < GetCoordim(), "invalid second argument");
946
947 int nq = GetTotPoints();
948 Array<OneD, NekDouble> tmp(nq);
949 Array<OneD, NekDouble> dtmp(nq);
950 VarCoeffType varcoefftypes[3][3] = {
954
955 ConstFactorType constcoefftypes[3][3] = {
959
960 v_BwdTrans(inarray, tmp);
961 v_PhysDeriv(k2, tmp, dtmp);
962 if (mkey.GetNVarCoeff() && (!mkey.ConstFactorExists(eFactorSVVDiffCoeff)))
963 {
964 if (k1 == k2)
965 {
966 // By default, k1 == k2 has \sigma = 1 (diagonal entries)
967 if (mkey.HasVarCoeff(varcoefftypes[k1][k1]))
968 {
969 Vmath::Vmul(nq, mkey.GetVarCoeff(varcoefftypes[k1][k1]), 1,
970 dtmp, 1, dtmp, 1);
971 }
972 v_IProductWRTDerivBase(k1, dtmp, outarray);
973 }
974 else
975 {
976 // By default, k1 != k2 has \sigma = 0 (off-diagonal entries)
977 if (mkey.HasVarCoeff(varcoefftypes[k1][k2]))
978 {
979 Vmath::Vmul(nq, mkey.GetVarCoeff(varcoefftypes[k1][k2]), 1,
980 dtmp, 1, dtmp, 1);
981 v_IProductWRTDerivBase(k1, dtmp, outarray);
982 }
983 else if (mkey.HasVarCoeff(
984 varcoefftypes[k2][k1])) // Check symmetric varcoeff
985 {
986 Vmath::Vmul(nq, mkey.GetVarCoeff(varcoefftypes[k2][k1]), 1,
987 dtmp, 1, dtmp, 1);
988 v_IProductWRTDerivBase(k1, dtmp, outarray);
989 }
990 else
991 {
992 Vmath::Zero(GetNcoeffs(), outarray, 1);
993 }
994 }
995 }
996 else if (mkey.ConstFactorExists(eFactorCoeffD00) &&
997 (!mkey.ConstFactorExists(eFactorSVVDiffCoeff)))
998 {
999 if (k1 == k2)
1000 {
1001 // By default, k1 == k2 has \sigma = 1 (diagonal entries)
1002 if (mkey.ConstFactorExists(constcoefftypes[k1][k1]))
1003 {
1004 Vmath::Smul(nq, mkey.GetConstFactor(constcoefftypes[k1][k1]),
1005 dtmp, 1, dtmp, 1);
1006 }
1007 v_IProductWRTDerivBase(k1, dtmp, outarray);
1008 }
1009 else
1010 {
1011 // By default, k1 != k2 has \sigma = 0 (off-diagonal entries)
1012 if (mkey.ConstFactorExists(constcoefftypes[k1][k2]))
1013 {
1014 Vmath::Smul(nq, mkey.GetConstFactor(constcoefftypes[k1][k2]),
1015 dtmp, 1, dtmp, 1);
1016 v_IProductWRTDerivBase(k1, dtmp, outarray);
1017 }
1018 else
1019 {
1020 Vmath::Zero(GetNcoeffs(), outarray, 1);
1021 }
1022 }
1023 }
1024 else
1025 {
1026 // Multiply by svv tensor
1027 if (mkey.ConstFactorExists(eFactorSVVDiffCoeff))
1028 {
1029 Vmath::Vcopy(nq, dtmp, 1, tmp, 1);
1030 SVVLaplacianFilter(dtmp, mkey);
1031 Vmath::Vadd(nq, tmp, 1, dtmp, 1, dtmp, 1);
1032 }
1033 v_IProductWRTDerivBase(k1, dtmp, outarray);
1034 }
1035}
int GetNcoeffs(void) const
This function returns the total number of coefficients used in the expansion.
void SVVLaplacianFilter(Array< OneD, NekDouble > &array, const StdMatrixKey &mkey)
void Vadd(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Add vector z = x+y.
Definition Vmath.hpp:180
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*x.
Definition Vmath.hpp:100

References ASSERTL1, Nektar::StdRegions::StdMatrixKey::ConstFactorExists(), Nektar::StdRegions::eFactorCoeffD00, Nektar::StdRegions::eFactorCoeffD01, Nektar::StdRegions::eFactorCoeffD02, Nektar::StdRegions::eFactorCoeffD11, Nektar::StdRegions::eFactorCoeffD12, Nektar::StdRegions::eFactorCoeffD22, Nektar::StdRegions::eFactorSVVDiffCoeff, Nektar::StdRegions::eVarCoeffD00, Nektar::StdRegions::eVarCoeffD01, Nektar::StdRegions::eVarCoeffD02, Nektar::StdRegions::eVarCoeffD10, Nektar::StdRegions::eVarCoeffD11, Nektar::StdRegions::eVarCoeffD12, Nektar::StdRegions::eVarCoeffD20, Nektar::StdRegions::eVarCoeffD21, Nektar::StdRegions::eVarCoeffD22, Nektar::StdRegions::StdMatrixKey::GetConstFactor(), GetCoordim(), GetNcoeffs(), Nektar::StdRegions::StdMatrixKey::GetNVarCoeff(), GetTotPoints(), Nektar::StdRegions::StdMatrixKey::GetVarCoeff(), Nektar::StdRegions::StdMatrixKey::HasVarCoeff(), Vmath::Smul(), SVVLaplacianFilter(), v_BwdTrans(), v_IProductWRTDerivBase(), v_PhysDeriv(), Vmath::Vadd(), Vmath::Vcopy(), Vmath::Vmul(), and Vmath::Zero().

◆ LaplacianMatrixOp_MatFree_GenericImpl()

void Nektar::StdRegions::StdExpansion::LaplacianMatrixOp_MatFree_GenericImpl ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protected

Definition at line 1037 of file StdExpansion.cpp.

1040{
1041 const int dim = GetCoordim();
1042
1043 int i, j;
1044
1045 Array<OneD, NekDouble> store(m_ncoeffs);
1046 Array<OneD, NekDouble> store2(m_ncoeffs, 0.0);
1047
1048 if ((mkey.GetNVarCoeff() == 0 &&
1049 !mkey.ConstFactorExists(eFactorCoeffD00)) ||
1050 mkey.ConstFactorExists(eFactorSVVDiffCoeff))
1051 {
1052 // just call diagonal matrix form of laplcian operator
1053 for (i = 0; i < dim; ++i)
1054 {
1055 LaplacianMatrixOp(i, i, inarray, store, mkey);
1056 Vmath::Vadd(m_ncoeffs, store, 1, store2, 1, store2, 1);
1057 }
1058 }
1059 else
1060 {
1061 const MatrixType mtype[3][3] = {
1065 StdMatrixKeySharedPtr mkeyij;
1066
1067 for (i = 0; i < dim; i++)
1068 {
1069 for (j = 0; j < dim; j++)
1070 {
1072 mkey, mtype[i][j]);
1073 LaplacianMatrixOp(i, j, inarray, store, *mkeyij);
1074 Vmath::Vadd(m_ncoeffs, store, 1, store2, 1, store2, 1);
1075 }
1076 }
1077 }
1078
1079 Vmath::Vcopy(m_ncoeffs, store2.data(), 1, outarray.data(), 1);
1080}
std::shared_ptr< StdMatrixKey > StdMatrixKeySharedPtr

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), Nektar::StdRegions::StdMatrixKey::ConstFactorExists(), Nektar::StdRegions::eFactorCoeffD00, Nektar::StdRegions::eFactorSVVDiffCoeff, Nektar::StdRegions::eLaplacian00, Nektar::StdRegions::eLaplacian01, Nektar::StdRegions::eLaplacian02, Nektar::StdRegions::eLaplacian10, Nektar::StdRegions::eLaplacian11, Nektar::StdRegions::eLaplacian12, Nektar::StdRegions::eLaplacian20, Nektar::StdRegions::eLaplacian21, Nektar::StdRegions::eLaplacian22, GetCoordim(), Nektar::StdRegions::StdMatrixKey::GetNVarCoeff(), LaplacianMatrixOp(), m_ncoeffs, Vmath::Vadd(), and Vmath::Vcopy().

Referenced by Nektar::StdRegions::StdNodalTriExp::v_LaplacianMatrixOp(), v_LaplacianMatrixOp_MatFree(), Nektar::StdRegions::StdExpansion2D::v_LaplacianMatrixOp_MatFree(), and Nektar::StdRegions::StdExpansion3D::v_LaplacianMatrixOp_MatFree().

◆ LaplacianMatrixOp_MatFree_Kernel()

void Nektar::StdRegions::StdExpansion::LaplacianMatrixOp_MatFree_Kernel ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
Array< OneD, NekDouble > &  wsp 
)
inlineprotected

◆ LinearAdvectionDiffusionReactionMatrixOp()

void Nektar::StdRegions::StdExpansion::LinearAdvectionDiffusionReactionMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey,
bool  addDiffusionTerm = true 
)
inline

Definition at line 913 of file StdExpansion.h.

917 {
918 v_LinearAdvectionDiffusionReactionMatrixOp(inarray, outarray, mkey,
919 addDiffusionTerm);
920 }
virtual void v_LinearAdvectionDiffusionReactionMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey, bool addDiffusionTerm=true)

References v_LinearAdvectionDiffusionReactionMatrixOp().

Referenced by GeneralMatrixOp().

◆ LinearAdvectionDiffusionReactionMatrixOp_MatFree()

void Nektar::StdRegions::StdExpansion::LinearAdvectionDiffusionReactionMatrixOp_MatFree ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey,
bool  addDiffusionTerm = true 
)
protected

Definition at line 1173 of file StdExpansion.cpp.

1177{
1178 int i, ndir = 0;
1179
1180 VarCoeffType varcoefftypes[] = {eVarCoeffVelX, eVarCoeffVelY,
1182 // Count advection velocities
1183 for (auto &x : varcoefftypes)
1184 {
1185 if (mkey.HasVarCoeff(x))
1186 {
1187 ndir++;
1188 }
1189 }
1190
1191 ASSERTL0(ndir, "Must define at least one advection velocity");
1192 ASSERTL1(ndir <= GetCoordim(),
1193 "Number of constants is larger than coordinate dimensions");
1194
1195 NekDouble lambda = mkey.GetConstFactor(eFactorLambda);
1196 int totpts = GetTotPoints();
1197 Array<OneD, NekDouble> tmp(3 * totpts);
1198 Array<OneD, NekDouble> tmp_deriv = tmp + totpts;
1199 Array<OneD, NekDouble> tmp_adv = tmp_deriv + totpts;
1200
1201 v_BwdTrans(inarray, tmp); // transform this mode \phi_i into PhysSpace
1202
1203 // calculate advection u dx + v dy + ..
1204 Vmath::Zero(totpts, tmp_adv, 1);
1205 for (i = 0; i < ndir; ++i)
1206 {
1207 v_PhysDeriv(i, tmp, tmp_deriv);
1208 Vmath::Vvtvp(totpts, mkey.GetVarCoeff(varcoefftypes[i]), 1, tmp_deriv,
1209 1, tmp_adv, 1, tmp_adv, 1);
1210 }
1211
1212 // Add reaction term if lambda != 0.0
1213 if (lambda)
1214 {
1215 // Add mass varcoeff
1216 if (mkey.HasVarCoeff(eVarCoeffMass))
1217 {
1218 Vmath::Vmul(totpts, mkey.GetVarCoeff(eVarCoeffMass), 1, tmp, 1, tmp,
1219 1);
1220 }
1221
1222 Vmath::Svtvp(totpts, -lambda, tmp, 1, tmp_adv, 1, tmp_adv, 1);
1223 }
1224
1225 // Create mass matrix = Advection - Reaction
1226 v_IProductWRTBase(tmp_adv, outarray);
1227
1228 // Add Laplacian matrix
1229 if (addDiffusionTerm)
1230 {
1231 Array<OneD, NekDouble> lap(m_ncoeffs);
1232 StdMatrixKey mkeylap(eLaplacian, DetShapeType(), *this,
1233 mkey.GetConstFactors(), mkey.GetVarCoeffs(),
1234 mkey.GetVarFactors(), mkey.GetNodalPointsType());
1235 LaplacianMatrixOp(inarray, lap, mkeylap);
1236
1237 Vmath::Vadd(m_ncoeffs, lap, 1, outarray, 1, outarray,
1238 1); // += Laplacian
1239 }
1240}
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

References ASSERTL0, ASSERTL1, DetShapeType(), Nektar::StdRegions::eFactorLambda, Nektar::StdRegions::eLaplacian, Nektar::StdRegions::eVarCoeffMass, Nektar::StdRegions::eVarCoeffVelX, Nektar::StdRegions::eVarCoeffVelY, Nektar::StdRegions::eVarCoeffVelZ, Nektar::StdRegions::StdMatrixKey::GetConstFactor(), Nektar::StdRegions::StdMatrixKey::GetConstFactors(), GetCoordim(), Nektar::StdRegions::StdMatrixKey::GetNodalPointsType(), GetTotPoints(), Nektar::StdRegions::StdMatrixKey::GetVarCoeff(), Nektar::StdRegions::StdMatrixKey::GetVarCoeffs(), Nektar::StdRegions::StdMatrixKey::GetVarFactors(), Nektar::StdRegions::StdMatrixKey::HasVarCoeff(), LaplacianMatrixOp(), m_ncoeffs, Vmath::Svtvp(), v_BwdTrans(), v_IProductWRTBase(), v_PhysDeriv(), Vmath::Vadd(), Vmath::Vmul(), Vmath::Vvtvp(), and Vmath::Zero().

Referenced by GeneralMatrixOp_MatFree(), and v_LinearAdvectionDiffusionReactionMatrixOp().

◆ LinearAdvectionMatrixOp()

void Nektar::StdRegions::StdExpansion::LinearAdvectionMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
inline

Definition at line 906 of file StdExpansion.h.

909 {
910 v_LinearAdvectionMatrixOp(inarray, outarray, mkey);
911 }
virtual void v_LinearAdvectionMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)

References v_LinearAdvectionMatrixOp().

Referenced by GeneralMatrixOp().

◆ LinearAdvectionMatrixOp_MatFree()

void Nektar::StdRegions::StdExpansion::LinearAdvectionMatrixOp_MatFree ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protected

Definition at line 1133 of file StdExpansion.cpp.

1136{
1137 int i, ndir = 0;
1138
1139 VarCoeffType varcoefftypes[] = {eVarCoeffVelX, eVarCoeffVelY,
1141 // Count advection velocities
1142 for (auto &x : varcoefftypes)
1143 {
1144 if (mkey.HasVarCoeff(x))
1145 {
1146 ndir++;
1147 }
1148 }
1149
1150 ASSERTL0(ndir, "Must define at least one advection velocity");
1151 ASSERTL1(ndir <= GetCoordim(),
1152 "Number of constants is larger than coordinate dimensions");
1153
1154 int totpts = GetTotPoints();
1155 Array<OneD, NekDouble> tmp(3 * totpts);
1156 Array<OneD, NekDouble> tmp_deriv = tmp + totpts;
1157 Array<OneD, NekDouble> tmp_adv = tmp_deriv + totpts;
1158
1159 v_BwdTrans(inarray, tmp); // transform to PhysSpace
1160
1161 // Evaluate advection (u dx + v dy + w dz)
1162 Vmath::Zero(totpts, tmp_adv, 1);
1163 for (i = 0; i < ndir; ++i)
1164 {
1165 v_PhysDeriv(i, tmp, tmp_deriv);
1166 Vmath::Vvtvp(totpts, mkey.GetVarCoeff(varcoefftypes[i]), 1, tmp_deriv,
1167 1, tmp_adv, 1, tmp_adv, 1);
1168 }
1169
1170 v_IProductWRTBase(tmp_adv, outarray);
1171}

References ASSERTL0, ASSERTL1, Nektar::StdRegions::eVarCoeffVelX, Nektar::StdRegions::eVarCoeffVelY, Nektar::StdRegions::eVarCoeffVelZ, GetCoordim(), GetTotPoints(), Nektar::StdRegions::StdMatrixKey::GetVarCoeff(), Nektar::StdRegions::StdMatrixKey::HasVarCoeff(), v_BwdTrans(), v_IProductWRTBase(), v_PhysDeriv(), Vmath::Vvtvp(), and Vmath::Zero().

Referenced by GeneralMatrixOp_MatFree(), and v_LinearAdvectionMatrixOp().

◆ Linf()

NekDouble Nektar::StdRegions::StdExpansion::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.

This function takes the physical value space array m_phys as approximate solution

Parameters
solarray of solution function at physical quadrature points
Returns
returns the \( L_\infty \) error as a NekDouble.

Definition at line 100 of file StdExpansion.cpp.

102{
103 NekDouble val;
104 int ntot = GetTotPoints();
105 Array<OneD, NekDouble> wsp(ntot);
106
107 if (sol == NullNekDouble1DArray)
108 {
109 Vmath::Vabs(ntot, phys, 1, wsp, 1);
110 }
111 else
112 {
113 Vmath::Vsub(ntot, sol, 1, phys, 1, wsp, 1);
114 Vmath::Vabs(ntot, wsp, 1, wsp, 1);
115 }
116
117 val = Vmath::Vamax(ntot, wsp, 1);
118 return val;
119}
void Vabs(int n, const T *x, const int incx, T *y, const int incy)
vabs: y = |x|
Definition Vmath.hpp:352
T Vamax(int n, const T *x, const int incx)
Return the maximum absolute element in x called vamax to avoid conflict with max.
Definition Vmath.hpp:685

References GetTotPoints(), Nektar::NullNekDouble1DArray, Vmath::Vabs(), Vmath::Vamax(), and Vmath::Vsub().

◆ LocCollapsedToLocCoord()

void Nektar::StdRegions::StdExpansion::LocCollapsedToLocCoord ( const Array< OneD, const NekDouble > &  eta,
Array< OneD, NekDouble > &  xi 
)
inline

Convert local collapsed coordinates eta into local cartesian coordinate xi.

Definition at line 1091 of file StdExpansion.h.

1093 {
1094 v_LocCollapsedToLocCoord(eta, xi);
1095 }
virtual void v_LocCollapsedToLocCoord(const Array< OneD, const NekDouble > &eta, Array< OneD, NekDouble > &xi)

References v_LocCollapsedToLocCoord().

◆ LocCoordToLocCollapsed()

void Nektar::StdRegions::StdExpansion::LocCoordToLocCollapsed ( const Array< OneD, const NekDouble > &  xi,
Array< OneD, NekDouble > &  eta 
)
inline

◆ MassLevelCurvatureMatrixOp()

void Nektar::StdRegions::StdExpansion::MassLevelCurvatureMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
inline

Definition at line 899 of file StdExpansion.h.

902 {
903 v_MassLevelCurvatureMatrixOp(inarray, outarray, mkey);
904 }
virtual void v_MassLevelCurvatureMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)

References v_MassLevelCurvatureMatrixOp().

Referenced by GeneralMatrixOp().

◆ MassLevelCurvatureMatrixOp_MatFree()

void Nektar::StdRegions::StdExpansion::MassLevelCurvatureMatrixOp_MatFree ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protected

Definition at line 1126 of file StdExpansion.cpp.

1130{
1131}

Referenced by GeneralMatrixOp_MatFree(), and v_MassLevelCurvatureMatrixOp().

◆ MassMatrixOp()

void Nektar::StdRegions::StdExpansion::MassMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
inline

◆ MassMatrixOp_MatFree()

void Nektar::StdRegions::StdExpansion::MassMatrixOp_MatFree ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protected

◆ MultiplyByQuadratureMetric()

void Nektar::StdRegions::StdExpansion::MultiplyByQuadratureMetric ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

◆ MultiplyByStdQuadratureMetric()

void Nektar::StdRegions::StdExpansion::MultiplyByStdQuadratureMetric ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 820 of file StdExpansion.h.

823 {
824 v_MultiplyByStdQuadratureMetric(inarray, outarray);
825 }
virtual void v_MultiplyByStdQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)

References v_MultiplyByStdQuadratureMetric().

Referenced by Nektar::StdRegions::StdExpansion3D::v_IProductWRTBase().

◆ NodalToModal()

void Nektar::StdRegions::StdExpansion::NodalToModal ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 434 of file StdExpansion.h.

436 {
437 v_NodalToModal(inarray, outarray);
438 }
virtual void v_NodalToModal(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)

References v_NodalToModal().

◆ NormVectorIProductWRTBase() [1/4]

void Nektar::StdRegions::StdExpansion::NormVectorIProductWRTBase ( const Array< OneD, const Array< OneD, NekDouble > > &  Fvec,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 722 of file StdExpansion.h.

725 {
726 v_NormVectorIProductWRTBase(Fvec, outarray);
727 }
virtual void v_NormVectorIProductWRTBase(const Array< OneD, const NekDouble > &Fx, Array< OneD, NekDouble > &outarray)

References v_NormVectorIProductWRTBase().

◆ NormVectorIProductWRTBase() [2/4]

void Nektar::StdRegions::StdExpansion::NormVectorIProductWRTBase ( const Array< OneD, const NekDouble > &  Fx,
Array< OneD, NekDouble > &  outarray 
)
inline

◆ NormVectorIProductWRTBase() [3/4]

void Nektar::StdRegions::StdExpansion::NormVectorIProductWRTBase ( const Array< OneD, const NekDouble > &  Fx,
const Array< OneD, const NekDouble > &  Fy,
const Array< OneD, const NekDouble > &  Fz,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 714 of file StdExpansion.h.

718 {
719 v_NormVectorIProductWRTBase(Fx, Fy, Fz, outarray);
720 }

References v_NormVectorIProductWRTBase().

◆ NormVectorIProductWRTBase() [4/4]

void Nektar::StdRegions::StdExpansion::NormVectorIProductWRTBase ( const Array< OneD, const NekDouble > &  Fx,
const Array< OneD, NekDouble > &  Fy,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 707 of file StdExpansion.h.

710 {
711 v_NormVectorIProductWRTBase(Fx, Fy, outarray);
712 }

References v_NormVectorIProductWRTBase().

◆ NumBndryCoeffs()

int Nektar::StdRegions::StdExpansion::NumBndryCoeffs ( void  ) const
inline

Definition at line 369 of file StdExpansion.h.

370 {
371 return v_NumBndryCoeffs();
372 }
virtual int v_NumBndryCoeffs() const =0

References v_NumBndryCoeffs().

Referenced by Nektar::LocalRegions::Expansion1D::AddHDGHelmholtzTraceTerms(), Nektar::LocalRegions::Expansion1D::AddNormTraceInt(), Nektar::CoupledLocalToGlobalC0ContMap::CoupledLocalToGlobalC0ContMap(), Nektar::LocalRegions::Expansion::CreateStaticCondMatrix(), CreateStdStaticCondMatrix(), Nektar::LocalRegions::Expansion3D::GetEdgeInverseBoundaryMap(), Nektar::LocalRegions::Expansion3D::GetInverseBoundaryMaps(), Nektar::LocalRegions::Expansion2D::GetTraceInverseBoundaryMap(), Nektar::LocalRegions::Expansion3D::GetTraceInverseBoundaryMap(), Nektar::LocalRegions::Expansion2D::v_AddRobinMassMatrix(), Nektar::LocalRegions::Expansion3D::v_AddRobinMassMatrix(), Nektar::LocalRegions::Expansion1D::v_AddRobinMassMatrix(), Nektar::LocalRegions::Expansion3D::v_BuildInverseTransformationMatrix(), Nektar::MultiRegions::PreconditionerLowEnergy::v_BuildPreconditioner(), Nektar::LocalRegions::Expansion3D::v_BuildTransformationMatrix(), Nektar::LocalRegions::QuadExp::v_FwdTransBndConstrained(), Nektar::LocalRegions::TriExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdQuadExp::v_FwdTransBndConstrained(), Nektar::LocalRegions::Expansion1D::v_GenMatrix(), Nektar::StdRegions::StdHexExp::v_GetBoundaryMap(), Nektar::StdRegions::StdNodalPrismExp::v_GetBoundaryMap(), Nektar::StdRegions::StdNodalTetExp::v_GetBoundaryMap(), Nektar::StdRegions::StdNodalTriExp::v_GetBoundaryMap(), Nektar::StdRegions::StdPrismExp::v_GetBoundaryMap(), Nektar::StdRegions::StdPyrExp::v_GetBoundaryMap(), Nektar::StdRegions::StdQuadExp::v_GetBoundaryMap(), Nektar::StdRegions::StdSegExp::v_GetBoundaryMap(), Nektar::StdRegions::StdTetExp::v_GetBoundaryMap(), Nektar::StdRegions::StdTriExp::v_GetBoundaryMap(), Nektar::StdRegions::StdHexExp::v_GetInteriorMap(), Nektar::StdRegions::StdNodalPrismExp::v_GetInteriorMap(), Nektar::StdRegions::StdNodalTetExp::v_GetInteriorMap(), Nektar::StdRegions::StdNodalTriExp::v_GetInteriorMap(), Nektar::StdRegions::StdPrismExp::v_GetInteriorMap(), Nektar::StdRegions::StdPyrExp::v_GetInteriorMap(), Nektar::StdRegions::StdQuadExp::v_GetInteriorMap(), Nektar::StdRegions::StdSegExp::v_GetInteriorMap(), Nektar::StdRegions::StdTetExp::v_GetInteriorMap(), and Nektar::StdRegions::StdTriExp::v_GetInteriorMap().

◆ NumDGBndryCoeffs()

int Nektar::StdRegions::StdExpansion::NumDGBndryCoeffs ( void  ) const
inline

◆ PhysDeriv() [1/2]

void Nektar::StdRegions::StdExpansion::PhysDeriv ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d0,
Array< OneD, NekDouble > &  out_d1 = NullNekDouble1DArray,
Array< OneD, NekDouble > &  out_d2 = NullNekDouble1DArray 
)
inline

◆ PhysDeriv() [2/2]

void Nektar::StdRegions::StdExpansion::PhysDeriv ( const int  dir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 948 of file StdExpansion.h.

950 {
951 v_PhysDeriv(dir, inarray, outarray);
952 }

References v_PhysDeriv().

◆ PhysDirectionalDeriv()

void Nektar::StdRegions::StdExpansion::PhysDirectionalDeriv ( const Array< OneD, const NekDouble > &  inarray,
const Array< OneD, const NekDouble > &  direction,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 954 of file StdExpansion.h.

957 {
958 v_PhysDirectionalDeriv(inarray, direction, outarray);
959 }
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.

References v_PhysDirectionalDeriv().

◆ PhysEvaluate() [1/4]

NekDouble Nektar::StdRegions::StdExpansion::PhysEvaluate ( const Array< OneD, const NekDouble > &  coords,
const Array< OneD, const NekDouble > &  physvals 
)
inline

This function evaluates the expansion at a single (arbitrary) point of the domain.

This function is a wrapper around the virtual function v_PhysEvaluate()

Based on the value of the expansion at the quadrature points provided in physvals, this function calculates the value of the expansion at an arbitrary single points (with coordinates \( \mathbf{x_c}\) given by the pointer coords). This operation, equivalent to

\[ u(\mathbf{x_c}) = \sum_p \phi_p(\mathbf{x_c}) \hat{u}_p \]

is evaluated using Lagrangian interpolants through the quadrature points:

\[ u(\mathbf{x_c}) = \sum_p h_p(\mathbf{x_c}) u_p\]

Parameters
coordsthe coordinates of the single point
physvalsthe interpolated field at the quadrature points
Returns
returns the value of the expansion at the single point

Definition at line 991 of file StdExpansion.h.

993 {
994 return v_PhysEvaluate(coords, physvals);
995 }
virtual NekDouble v_PhysEvaluate(const Array< OneD, const NekDouble > &coords, const Array< OneD, const NekDouble > &physvals)

References v_PhysEvaluate().

Referenced by Nektar::StdRegions::StdPrismExp::v_PhysEvalFirstDeriv(), Nektar::StdRegions::StdPyrExp::v_PhysEvalFirstDeriv(), Nektar::StdRegions::StdTetExp::v_PhysEvalFirstDeriv(), and Nektar::StdRegions::StdTriExp::v_PhysEvalFirstDeriv().

◆ PhysEvaluate() [2/4]

NekDouble Nektar::StdRegions::StdExpansion::PhysEvaluate ( const Array< OneD, DNekMatSharedPtr > &  I,
const Array< OneD, const NekDouble > &  physvals 
)
inline

This function evaluates the expansion at a single (arbitrary) point of the domain.

This function is a wrapper around the virtual function v_PhysEvaluate()

Based on the value of the expansion at the quadrature points provided in physvals, this function calculates the value of the expansion at an arbitrary single points associated with the interpolation matrices provided in \( I \).

Parameters
Ian Array of lagrange interpolantes evaluated at the coordinate and going through the local physical quadrature
physvalsthe interpolated field at the quadrature points
Returns
returns the value of the expansion at the single point

Definition at line 1046 of file StdExpansion.h.

1048 {
1049 return v_PhysEvaluateInterp(I, physvals);
1050 }
virtual NekDouble v_PhysEvaluateInterp(const Array< OneD, DNekMatSharedPtr > &I, const Array< OneD, const NekDouble > &physvals)

References v_PhysEvaluateInterp().

◆ PhysEvaluate() [3/4]

NekDouble Nektar::StdRegions::StdExpansion::PhysEvaluate ( const Array< OneD, NekDouble > &  coord,
const Array< OneD, const NekDouble > &  inarray,
std::array< NekDouble, 3 > &  firstOrderDerivs 
)
inline

This function evaluates the first derivative of the expansion at a single (arbitrary) point of the domain.

This function is a wrapper around the virtual function v_PhysEvaluate()

Based on the value of the expansion at the quadrature points provided in physvals, this function calculates the value of the expansion at a set of points given in coords

Definition at line 1008 of file StdExpansion.h.

1012 {
1013 return v_PhysEvalFirstDeriv(coord, inarray, firstOrderDerivs);
1014 }
virtual NekDouble v_PhysEvalFirstDeriv(const Array< OneD, NekDouble > &coord, const Array< OneD, const NekDouble > &inarray, std::array< NekDouble, 3 > &firstOrderDerivs)

References v_PhysEvalFirstDeriv().

◆ PhysEvaluate() [4/4]

NekDouble Nektar::StdRegions::StdExpansion::PhysEvaluate ( const Array< OneD, NekDouble > &  coord,
const Array< OneD, const NekDouble > &  inarray,
std::array< NekDouble, 3 > &  firstOrderDerivs,
std::array< NekDouble, 6 > &  secondOrderDerivs 
)
inline

Definition at line 1016 of file StdExpansion.h.

1021 {
1022 return v_PhysEvalFirstSecondDeriv(coord, inarray, firstOrderDerivs,
1023 secondOrderDerivs);
1024 }
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)

References v_PhysEvalFirstSecondDeriv().

◆ PhysEvaluateBasis()

NekDouble Nektar::StdRegions::StdExpansion::PhysEvaluateBasis ( const Array< OneD, const NekDouble > &  coords,
int  mode 
)
inline

This function evaluates the basis function mode mode at a point coords of the domain.

This function uses barycentric interpolation with the tensor product separation of the basis function to improve performance.

Parameters
coordThe coordinate inside the standard region.
modeThe mode number to be evaluated.
Returns
The value of the basis function mode at coords.

Definition at line 1064 of file StdExpansion.h.

1066 {
1067 return v_PhysEvaluateBasis(coords, mode);
1068 }
virtual NekDouble v_PhysEvaluateBasis(const Array< OneD, const NekDouble > &coords, int mode)

References v_PhysEvaluateBasis().

◆ PhysInterp()

void Nektar::StdRegions::StdExpansion::PhysInterp ( std::shared_ptr< StdExpansion fromExp,
const Array< OneD, const NekDouble > &  fromData,
Array< OneD, NekDouble > &  toData,
bool  Transpose = false 
)
inline

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

Definition at line 1101 of file StdExpansion.h.

1104 {
1105 v_PhysInterp(fromExp, fromData, toData, Transpose);
1106 }
virtual void v_PhysInterp(std::shared_ptr< StdExpansion > FromExp, const Array< OneD, const NekDouble > &fromData, Array< OneD, NekDouble > &toData, bool Transpose)

References Nektar::Transpose(), and v_PhysInterp().

◆ PhysInterpToGLL()

void Nektar::StdRegions::StdExpansion::PhysInterpToGLL ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
int  npset = -1 
)

Definition at line 1834 of file StdExpansion.cpp.

1836{
1837 PhysInterpToPoints(inarray, outarray, npset, ePhysInterpToGLL);
1838}
void PhysInterpToPoints(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, int npset, MatrixType distrib)

References Nektar::StdRegions::ePhysInterpToGLL, and PhysInterpToPoints().

Referenced by CreateGeneralMatrix().

◆ PhysInterpToPoints()

void Nektar::StdRegions::StdExpansion::PhysInterpToPoints ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
int  npset,
MatrixType  distrib 
)

Definition at line 1847 of file StdExpansion.cpp.

1850{
1852 DNekMatSharedPtr intmat;
1853
1854 int nqtot = GetTotPoints();
1855 int np = 0;
1856 if (npset == -1) // use values from basis num points()
1857 {
1858 int nqbase;
1859 for (int i = 0; i < m_base.size(); ++i)
1860 {
1861 nqbase = m_base[i]->GetNumPoints();
1862 np = std::max(np, nqbase);
1863 }
1864
1865 StdMatrixKey Ikey(distrib, shape, *this);
1866 intmat = GetStdMatrix(Ikey);
1867 }
1868 else
1869 {
1870 np = npset;
1871
1872 ConstFactorMap cmap;
1873 cmap[eFactorConst] = np;
1874 StdMatrixKey Ikey(distrib, shape, *this, cmap);
1875 intmat = GetStdMatrix(Ikey);
1876 }
1877
1878 NekVector<NekDouble> in(nqtot, inarray, eWrapper);
1879 NekVector<NekDouble> out(
1880 LibUtilities::GetNumberOfCoefficients(shape, np, np, np), outarray,
1881 eWrapper);
1882 out = (*intmat) * in;
1883}

References DetShapeType(), Nektar::StdRegions::eFactorConst, Nektar::eWrapper, Nektar::LibUtilities::GetNumberOfCoefficients(), GetStdMatrix(), GetTotPoints(), and m_base.

Referenced by PhysInterpToGLL(), and PhysInterpToSimplexEquiSpaced().

◆ PhysInterpToSimplexEquiSpaced()

void Nektar::StdRegions::StdExpansion::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.

This is primarily used for output purposes to get a better distribution of points more suitable for most postprocessing

Definition at line 1840 of file StdExpansion.cpp.

1843{
1844 PhysInterpToPoints(inarray, outarray, npset, ePhysInterpToEquiSpaced);
1845}

References Nektar::StdRegions::ePhysInterpToEquiSpaced, and PhysInterpToPoints().

Referenced by CreateGeneralMatrix().

◆ ReduceOrderCoeffs()

void Nektar::StdRegions::StdExpansion::ReduceOrderCoeffs ( int  numMin,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 857 of file StdExpansion.h.

860 {
861 v_ReduceOrderCoeffs(numMin, inarray, outarray);
862 }
virtual void v_ReduceOrderCoeffs(int numMin, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)

References v_ReduceOrderCoeffs().

◆ ReOrientTracePhysMap()

void Nektar::StdRegions::StdExpansion::ReOrientTracePhysMap ( const StdRegions::Orientation  orient,
Array< OneD, int > &  idmap,
const int  nq0,
const int  nq1,
bool  Forwards = true 
)
inline

Definition at line 1070 of file StdExpansion.h.

1073 {
1074 v_ReOrientTracePhysMap(orient, idmap, nq0, nq1, Forwards);
1075 }
virtual void v_ReOrientTracePhysMap(const StdRegions::Orientation orient, Array< OneD, int > &idmap, const int nq0, const int nq1, bool Forwards)

References v_ReOrientTracePhysMap().

◆ SetElmtId()

void Nektar::StdRegions::StdExpansion::SetElmtId ( const int  id)
inline

Set the element id of this expansion when used in a list by returning value of m_elmt_id.

Definition at line 628 of file StdExpansion.h.

629 {
630 m_elmt_id = id;
631 }

References m_elmt_id.

◆ StdPhysDeriv()

void Nektar::StdRegions::StdExpansion::StdPhysDeriv ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d0,
Array< OneD, NekDouble > &  out_d1 = NullNekDouble1DArray,
Array< OneD, NekDouble > &  out_d2 = NullNekDouble1DArray 
)
inline

Definition at line 961 of file StdExpansion.h.

965 {
966 v_StdPhysDeriv(inarray, out_d0, out_d1, out_d2);
967 }
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)

References v_StdPhysDeriv().

Referenced by Nektar::LocalRegions::Expansion::StdDerivBaseOnTraceMat().

◆ StdPhysEvaluate()

NekDouble Nektar::StdRegions::StdExpansion::StdPhysEvaluate ( const Array< OneD, const NekDouble > &  Lcoord,
const Array< OneD, const NekDouble > &  physvals 
)
inline

Definition at line 749 of file StdExpansion.h.

751 {
752 return v_StdPhysEvaluate(Lcoord, physvals);
753 }
virtual NekDouble v_StdPhysEvaluate(const Array< OneD, const NekDouble > &Lcoord, const Array< OneD, const NekDouble > &physvals)

References v_StdPhysEvaluate().

◆ SVVLaplacianFilter()

void Nektar::StdRegions::StdExpansion::SVVLaplacianFilter ( Array< OneD, NekDouble > &  array,
const StdMatrixKey mkey 
)
inline

Definition at line 864 of file StdExpansion.h.

866 {
867 v_SVVLaplacianFilter(array, mkey);
868 }
virtual void v_SVVLaplacianFilter(Array< OneD, NekDouble > &array, const StdMatrixKey &mkey)

References v_SVVLaplacianFilter().

Referenced by LaplacianMatrixOp_MatFree().

◆ v_BuildInverseTransformationMatrix()

DNekMatSharedPtr Nektar::StdRegions::StdExpansion::v_BuildInverseTransformationMatrix ( const DNekScalMatSharedPtr m_transformationmatrix)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion3D.

Definition at line 1827 of file StdExpansion.cpp.

1829{
1830 NEKERROR(ErrorUtil::efatal, "This function is only valid for LocalRegions");
1831 return NullDNekMatSharedPtr;
1832}
static DNekMatSharedPtr NullDNekMatSharedPtr

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

Referenced by BuildInverseTransformationMatrix().

◆ v_BwdTrans()

virtual void Nektar::StdRegions::StdExpansion::v_BwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedpure virtual

◆ v_CalcNumberOfCoefficients()

int Nektar::StdRegions::StdExpansion::v_CalcNumberOfCoefficients ( const std::vector< unsigned int > &  nummodes,
int &  modes_offset 
)
virtual

◆ v_CreateStdMatrix()

DNekMatSharedPtr Nektar::StdRegions::StdExpansion::v_CreateStdMatrix ( const StdMatrixKey mkey)
protectedvirtual

◆ v_DetShapeType()

virtual LibUtilities::ShapeType Nektar::StdRegions::StdExpansion::v_DetShapeType ( ) const
protectedpure virtual

◆ v_DropLocStaticCondMatrix()

void Nektar::StdRegions::StdExpansion::v_DropLocStaticCondMatrix ( const LocalRegions::MatrixKey mkey)
virtual

◆ v_ExponentialFilter()

void Nektar::StdRegions::StdExpansion::v_ExponentialFilter ( Array< OneD, NekDouble > &  array,
const NekDouble  alpha,
const NekDouble  exponent,
const NekDouble  cutoff 
)
protectedvirtual

Reimplemented in Nektar::StdRegions::StdHexExp, Nektar::StdRegions::StdQuadExp, and Nektar::StdRegions::StdSegExp.

Definition at line 1719 of file StdExpansion.cpp.

1724{
1725 ASSERTL0(false, "This function is not defined in StdExpansion.");
1726}

References ASSERTL0.

Referenced by ExponentialFilter().

◆ v_FillMode()

void Nektar::StdRegions::StdExpansion::v_FillMode ( const int  mode,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

◆ v_FwdTrans()

void Nektar::StdRegions::StdExpansion::v_FwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Transform a given function from physical quadrature space to coefficient space.

Forward transform from physical quadrature space stored in inarray and evaluate the expansion coefficients and store in outarray.

See also
StdExpansion::FwdTrans

Perform a forward transform using a Galerkin projection by taking the inner product of the physical points and multiplying by the inverse of the mass matrix using the Solve method of the standard matrix container holding the local mass matrix, i.e. \( {\bf \hat{u}} = {\bf M}^{-1} {\bf I} \) where \( {\bf I}[p] = \int^1_{-1} \phi_p(\xi_1) u(\xi_1) d\xi_1 \)

This function stores the expansion coefficients calculated by the transformation in the coefficient space array outarray

Parameters
inarrayarray of physical quadrature points to be transformed
outarraythe coeffficients of the expansion

Reimplemented in Nektar::LocalRegions::Expansion.

Definition at line 1420 of file StdExpansion.cpp.

1422{
1423 if (v_IsCollocatedBasis())
1424 {
1425 Vmath::Vcopy(m_ncoeffs, inarray, 1, outarray, 1);
1426 }
1427 else
1428 {
1429 v_IProductWRTBase(inarray, outarray);
1430
1431 // get Mass matrix inverse
1432 LibUtilities::PointsType nodalPointsType =
1436
1437 // get Mass matrix inverse
1438 StdMatrixKey masskey(StdRegions::eInvMass, DetShapeType(), *this,
1441 StdRegions::NullVarFactorsMap, nodalPointsType);
1442 DNekMatSharedPtr matsys = GetStdMatrix(masskey);
1443
1444 // copy inarray in case inarray == outarray
1445 NekVector<NekDouble> in(m_ncoeffs, outarray, eCopy);
1446 NekVector<NekDouble> out(m_ncoeffs, outarray, eWrapper);
1447
1448 out = (*matsys) * in;
1449 }
1450}
virtual bool v_IsCollocatedBasis() const =0
static const PointsKey NullPointsKey(0, eNoPointsType)

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

Referenced by FwdTrans(), and Nektar::StdRegions::StdSegExp::v_FwdTransBndConstrained().

◆ v_FwdTransBndConstrained()

void Nektar::StdRegions::StdExpansion::v_FwdTransBndConstrained ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

◆ v_GenMatrix()

DNekMatSharedPtr Nektar::StdRegions::StdExpansion::v_GenMatrix ( const StdMatrixKey mkey)
protectedvirtual

◆ v_GenStdMatBwdDeriv()

virtual void Nektar::StdRegions::StdExpansion::v_GenStdMatBwdDeriv ( const int  dir,
DNekMatSharedPtr mat 
)
inlineprotectedvirtual

Reimplemented in Nektar::StdRegions::StdExpansion2D, and Nektar::StdRegions::StdExpansion3D.

Definition at line 1388 of file StdExpansion.h.

1390 {
1391 NEKERROR(ErrorUtil::efatal, "not defined");
1392 }

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

Referenced by GenStdMatBwdDeriv().

◆ v_GetBoundaryMap()

void Nektar::StdRegions::StdExpansion::v_GetBoundaryMap ( Array< OneD, unsigned int > &  outarray)
protectedvirtual

◆ v_GetCoord()

void Nektar::StdRegions::StdExpansion::v_GetCoord ( const Array< OneD, const NekDouble > &  Lcoord,
Array< OneD, NekDouble > &  coord 
)
protectedvirtual

◆ v_GetCoordim()

int Nektar::StdRegions::StdExpansion::v_GetCoordim ( ) const
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion.

Definition at line 1602 of file StdExpansion.cpp.

1603{
1604 return GetShapeDimension();
1605}

References GetShapeDimension().

Referenced by GetCoordim(), and H1().

◆ v_GetCoords()

void Nektar::StdRegions::StdExpansion::v_GetCoords ( Array< OneD, NekDouble > &  coords_0,
Array< OneD, NekDouble > &  coords_1,
Array< OneD, NekDouble > &  coords_2 
)
protectedvirtual

◆ v_GetElmtTraceToTraceMap()

void Nektar::StdRegions::StdExpansion::v_GetElmtTraceToTraceMap ( const unsigned int  tid,
Array< OneD, unsigned int > &  maparray,
Array< OneD, int > &  signarray,
Orientation  traceOrient = eForwards,
int  P = -1,
int  Q = -1 
)
protectedvirtual

◆ v_GetInteriorMap()

void Nektar::StdRegions::StdExpansion::v_GetInteriorMap ( Array< OneD, unsigned int > &  outarray)
protectedvirtual

◆ v_GetLocStaticCondMatrix()

DNekScalBlkMatSharedPtr Nektar::StdRegions::StdExpansion::v_GetLocStaticCondMatrix ( const LocalRegions::MatrixKey mkey)
virtual

◆ v_GetNodalPointsKey()

const LibUtilities::PointsKey Nektar::StdRegions::StdExpansion::v_GetNodalPointsKey ( ) const
protectedvirtual

◆ v_GetNtraces()

virtual int Nektar::StdRegions::StdExpansion::v_GetNtraces ( ) const
protectedpure virtual

◆ v_GetNverts()

virtual int Nektar::StdRegions::StdExpansion::v_GetNverts ( ) const
protectedpure virtual

◆ v_GetShapeDimension()

virtual int Nektar::StdRegions::StdExpansion::v_GetShapeDimension ( ) const
protectedpure virtual

◆ v_GetSimplexEquiSpacedConnectivity()

void Nektar::StdRegions::StdExpansion::v_GetSimplexEquiSpacedConnectivity ( Array< OneD, int > &  conn,
bool  standard = true 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::PrismExp, Nektar::StdRegions::StdHexExp, Nektar::StdRegions::StdQuadExp, Nektar::StdRegions::StdSegExp, Nektar::StdRegions::StdTetExp, and Nektar::StdRegions::StdTriExp.

Definition at line 1885 of file StdExpansion.cpp.

1887{
1889 "GetSimplexEquiSpacedConnectivity not"
1890 " implemented for " +
1891 static_cast<std::string>(
1893}
const char *const ShapeTypeMap[SIZE_ShapeType]
Definition ShapeType.hpp:81

References DetShapeType(), Nektar::ErrorUtil::efatal, NEKERROR, and Nektar::LibUtilities::ShapeTypeMap.

Referenced by GetSimplexEquiSpacedConnectivity().

◆ v_GetTraceBasisKey()

const LibUtilities::BasisKey Nektar::StdRegions::StdExpansion::v_GetTraceBasisKey ( const int  i,
const int  k,
bool  UseGLL = false 
) const
protectedvirtual

◆ v_GetTraceCoeffMap()

void Nektar::StdRegions::StdExpansion::v_GetTraceCoeffMap ( const unsigned int  traceid,
Array< OneD, unsigned int > &  maparray 
)
protectedvirtual

◆ v_GetTraceInteriorToElementMap()

void Nektar::StdRegions::StdExpansion::v_GetTraceInteriorToElementMap ( const int  eid,
Array< OneD, unsigned int > &  maparray,
Array< OneD, int > &  signarray,
const Orientation  traceOrient = eForwards 
)
protectedvirtual

◆ v_GetTraceIntNcoeffs()

virtual int Nektar::StdRegions::StdExpansion::v_GetTraceIntNcoeffs ( const int  i) const
protectedpure virtual

◆ v_GetTraceNcoeffs()

virtual int Nektar::StdRegions::StdExpansion::v_GetTraceNcoeffs ( const int  i) const
protectedpure virtual

◆ v_GetTraceNumModes()

void Nektar::StdRegions::StdExpansion::v_GetTraceNumModes ( const int  fid,
int &  numModes0,
int &  numModes1,
Orientation  traceOrient = eDir1FwdDir1_Dir2FwdDir2 
)
protectedvirtual

Reimplemented in Nektar::StdRegions::StdHexExp, Nektar::StdRegions::StdPrismExp, Nektar::StdRegions::StdPyrExp, and Nektar::StdRegions::StdTetExp.

Definition at line 1662 of file StdExpansion.cpp.

1666{
1667 NEKERROR(ErrorUtil::efatal, "Method does not exist for this shape");
1668}

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

Referenced by GetTraceNumModes().

◆ v_GetTraceNumPoints()

virtual int Nektar::StdRegions::StdExpansion::v_GetTraceNumPoints ( const int  i) const
protectedpure virtual

◆ v_GetTracePointsKey()

LibUtilities::PointsKey Nektar::StdRegions::StdExpansion::v_GetTracePointsKey ( const int  i,
const int  j 
) const
protectedvirtual

Reimplemented in Nektar::StdRegions::StdHexExp, Nektar::StdRegions::StdPrismExp, and Nektar::StdRegions::StdTetExp.

Definition at line 1360 of file StdExpansion.cpp.

1362{
1363 ASSERTL0(false, "This function is not valid or not defined");
1365}

References ASSERTL0, and Nektar::LibUtilities::NullPointsKey().

Referenced by GetTracePointsKey().

◆ v_GetTraceToElementMap()

void Nektar::StdRegions::StdExpansion::v_GetTraceToElementMap ( const int  tid,
Array< OneD, unsigned int > &  maparray,
Array< OneD, int > &  signarray,
Orientation  traceOrient = eForwards,
int  P = -1,
int  Q = -1 
)
protectedvirtual

Reimplemented in Nektar::StdRegions::StdExpansion2D, Nektar::StdRegions::StdNodalTriExp, Nektar::StdRegions::StdSegExp, and Nektar::StdRegions::StdExpansion3D.

Definition at line 1626 of file StdExpansion.cpp.

1632{
1633 NEKERROR(ErrorUtil::efatal, "Method does not exist for this shape");
1634}

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

Referenced by GetTraceToElementMap().

◆ v_GetVertexMap()

int Nektar::StdRegions::StdExpansion::v_GetVertexMap ( int  localVertexId,
bool  useCoeffPacking = false 
)
protectedvirtual

◆ v_GetVertexPhysVals()

void Nektar::StdRegions::StdExpansion::v_GetVertexPhysVals ( const int  vertex,
const Array< OneD, const NekDouble > &  inarray,
NekDouble outarray 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::SegExp.

Definition at line 1670 of file StdExpansion.cpp.

1674{
1675 NEKERROR(ErrorUtil::efatal, "Method does not exist for "
1676 "this shape or library");
1677}

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

◆ v_HelmholtzMatrixOp()

void Nektar::StdRegions::StdExpansion::v_HelmholtzMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protectedvirtual

◆ v_HelmholtzMatrixOp_MatFree()

void Nektar::StdRegions::StdExpansion::v_HelmholtzMatrixOp_MatFree ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protectedvirtual

Reimplemented in Nektar::StdRegions::StdExpansion2D, and Nektar::StdRegions::StdExpansion3D.

Definition at line 1818 of file StdExpansion.cpp.

1821{
1822 // If this function is not reimplemented on shape level, the function
1823 // below will be called
1824 HelmholtzMatrixOp_MatFree_GenericImpl(inarray, outarray, mkey);
1825}
void HelmholtzMatrixOp_MatFree_GenericImpl(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)

References HelmholtzMatrixOp_MatFree_GenericImpl().

Referenced by HelmholtzMatrixOp_MatFree(), Nektar::StdRegions::StdHexExp::v_HelmholtzMatrixOp(), Nektar::StdRegions::StdQuadExp::v_HelmholtzMatrixOp(), Nektar::StdRegions::StdTriExp::v_HelmholtzMatrixOp(), Nektar::LocalRegions::HexExp::v_HelmholtzMatrixOp(), and Nektar::LocalRegions::PrismExp::v_HelmholtzMatrixOp().

◆ v_IProductWRTBase()

virtual void Nektar::StdRegions::StdExpansion::v_IProductWRTBase ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedpure virtual

◆ v_IProductWRTDerivBase()

void Nektar::StdRegions::StdExpansion::v_IProductWRTDerivBase ( const int  dir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

◆ v_IProductWRTDirectionalDerivBase()

void Nektar::StdRegions::StdExpansion::v_IProductWRTDirectionalDerivBase ( const Array< OneD, const NekDouble > &  direction,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

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

Definition at line 1394 of file StdExpansion.cpp.

1398{
1399 NEKERROR(ErrorUtil::efatal, "This method has not been defined");
1400}

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

Referenced by IProductWRTDirectionalDerivBase().

◆ v_IsBoundaryInteriorExpansion()

bool Nektar::StdRegions::StdExpansion::v_IsBoundaryInteriorExpansion ( ) const
protectedvirtual

Reimplemented in Nektar::StdRegions::StdHexExp, Nektar::StdRegions::StdPrismExp, Nektar::StdRegions::StdQuadExp, Nektar::StdRegions::StdSegExp, Nektar::StdRegions::StdTetExp, and Nektar::StdRegions::StdTriExp.

Definition at line 1372 of file StdExpansion.cpp.

1373{
1374 ASSERTL0(false, "This function has not been defined for this expansion");
1375 return false;
1376}

References ASSERTL0.

Referenced by IsBoundaryInteriorExpansion().

◆ v_IsCollocatedBasis()

virtual bool Nektar::StdRegions::StdExpansion::v_IsCollocatedBasis ( ) const
protectedpure virtual

◆ v_IsNodalNonTensorialExp()

bool Nektar::StdRegions::StdExpansion::v_IsNodalNonTensorialExp ( )
protectedvirtual

Reimplemented in Nektar::StdRegions::StdNodalPrismExp, Nektar::StdRegions::StdNodalTetExp, and Nektar::StdRegions::StdNodalTriExp.

Definition at line 1378 of file StdExpansion.cpp.

1379{
1380 return false;
1381}

Referenced by IsNodalNonTensorialExp().

◆ v_LaplacianMatrixOp() [1/2]

void Nektar::StdRegions::StdExpansion::v_LaplacianMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protectedvirtual

◆ v_LaplacianMatrixOp() [2/2]

void Nektar::StdRegions::StdExpansion::v_LaplacianMatrixOp ( const int  k1,
const int  k2,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protectedvirtual

◆ v_LaplacianMatrixOp_MatFree()

void Nektar::StdRegions::StdExpansion::v_LaplacianMatrixOp_MatFree ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protectedvirtual

Reimplemented in Nektar::StdRegions::StdExpansion2D, and Nektar::StdRegions::StdExpansion3D.

Definition at line 1801 of file StdExpansion.cpp.

1804{
1805 // If this function is not reimplemented on shape level, the function
1806 // below will be called
1807 LaplacianMatrixOp_MatFree_GenericImpl(inarray, outarray, mkey);
1808}
void LaplacianMatrixOp_MatFree_GenericImpl(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)

References LaplacianMatrixOp_MatFree_GenericImpl().

Referenced by LaplacianMatrixOp_MatFree(), Nektar::StdRegions::StdHexExp::v_LaplacianMatrixOp(), Nektar::StdRegions::StdQuadExp::v_LaplacianMatrixOp(), Nektar::StdRegions::StdTriExp::v_LaplacianMatrixOp(), Nektar::LocalRegions::HexExp::v_LaplacianMatrixOp(), and Nektar::LocalRegions::TetExp::v_LaplacianMatrixOp().

◆ v_LaplacianMatrixOp_MatFree_Kernel()

void Nektar::StdRegions::StdExpansion::v_LaplacianMatrixOp_MatFree_Kernel ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
Array< OneD, NekDouble > &  wsp 
)
protectedvirtual

◆ v_LinearAdvectionDiffusionReactionMatrixOp()

void Nektar::StdRegions::StdExpansion::v_LinearAdvectionDiffusionReactionMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey,
bool  addDiffusionTerm = true 
)
protectedvirtual

Definition at line 1781 of file StdExpansion.cpp.

1785{
1786 // If this function is not reimplemented on shape level, the function
1787 // below will be called
1789 addDiffusionTerm);
1790}

References LinearAdvectionDiffusionReactionMatrixOp_MatFree().

Referenced by LinearAdvectionDiffusionReactionMatrixOp().

◆ v_LinearAdvectionMatrixOp()

void Nektar::StdRegions::StdExpansion::v_LinearAdvectionMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protectedvirtual

Definition at line 1772 of file StdExpansion.cpp.

1775{
1776 // If this function is not reimplemented on shape level, the function
1777 // below will be called
1778 LinearAdvectionMatrixOp_MatFree(inarray, outarray, mkey);
1779}

References LinearAdvectionMatrixOp_MatFree().

Referenced by LinearAdvectionMatrixOp().

◆ v_LocCollapsedToLocCoord()

void Nektar::StdRegions::StdExpansion::v_LocCollapsedToLocCoord ( const Array< OneD, const NekDouble > &  eta,
Array< OneD, NekDouble > &  xi 
)
protectedvirtual

◆ v_LocCoordToLocCollapsed()

void Nektar::StdRegions::StdExpansion::v_LocCoordToLocCollapsed ( const Array< OneD, const NekDouble > &  xi,
Array< OneD, NekDouble > &  eta 
)
protectedvirtual

◆ v_MassLevelCurvatureMatrixOp()

void Nektar::StdRegions::StdExpansion::v_MassLevelCurvatureMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protectedvirtual

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

Definition at line 1763 of file StdExpansion.cpp.

1766{
1767 // If this function is not reimplemented on shape level, the function
1768 // below will be called
1769 MassLevelCurvatureMatrixOp_MatFree(inarray, outarray, mkey);
1770}

References MassLevelCurvatureMatrixOp_MatFree().

Referenced by MassLevelCurvatureMatrixOp().

◆ v_MassMatrixOp()

void Nektar::StdRegions::StdExpansion::v_MassMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protectedvirtual

◆ v_MultiplyByQuadratureMetric()

void Nektar::StdRegions::StdExpansion::v_MultiplyByQuadratureMetric ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion.

Definition at line 1679 of file StdExpansion.cpp.

1682{
1683 v_MultiplyByStdQuadratureMetric(inarray, outarray);
1684}

References v_MultiplyByStdQuadratureMetric().

Referenced by Integral(), and MultiplyByQuadratureMetric().

◆ v_MultiplyByStdQuadratureMetric()

void Nektar::StdRegions::StdExpansion::v_MultiplyByStdQuadratureMetric ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

◆ v_NodalToModal()

virtual void Nektar::StdRegions::StdExpansion::v_NodalToModal ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inlineprotectedvirtual

Reimplemented in Nektar::StdRegions::StdNodalTriExp.

Definition at line 1598 of file StdExpansion.h.

1600 {};

Referenced by NodalToModal().

◆ v_NormVectorIProductWRTBase() [1/4]

void Nektar::StdRegions::StdExpansion::v_NormVectorIProductWRTBase ( const Array< OneD, const Array< OneD, NekDouble > > &  Fvec,
Array< OneD, NekDouble > &  outarray 
)
virtual

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

Definition at line 1292 of file StdExpansion.cpp.

1295{
1296 NEKERROR(ErrorUtil::efatal, "This function is not valid for this class");
1297}

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

◆ v_NormVectorIProductWRTBase() [2/4]

void Nektar::StdRegions::StdExpansion::v_NormVectorIProductWRTBase ( const Array< OneD, const NekDouble > &  Fx,
Array< OneD, NekDouble > &  outarray 
)
virtual

Reimplemented in Nektar::LocalRegions::PointExp.

Definition at line 1268 of file StdExpansion.cpp.

1271{
1272 NEKERROR(ErrorUtil::efatal, "This function is not valid for this class");
1273}

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

Referenced by NormVectorIProductWRTBase(), NormVectorIProductWRTBase(), NormVectorIProductWRTBase(), and NormVectorIProductWRTBase().

◆ v_NormVectorIProductWRTBase() [3/4]

void Nektar::StdRegions::StdExpansion::v_NormVectorIProductWRTBase ( const Array< OneD, const NekDouble > &  Fx,
const Array< OneD, const NekDouble > &  Fy,
Array< OneD, NekDouble > &  outarray 
)
virtual

Reimplemented in Nektar::LocalRegions::SegExp.

Definition at line 1275 of file StdExpansion.cpp.

1279{
1280 NEKERROR(ErrorUtil::efatal, "This function is not valid for this class");
1281}

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

◆ v_NormVectorIProductWRTBase() [4/4]

void Nektar::StdRegions::StdExpansion::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

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

Definition at line 1283 of file StdExpansion.cpp.

1288{
1289 NEKERROR(ErrorUtil::efatal, "This function is not valid for this class");
1290}

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

◆ v_NumBndryCoeffs()

virtual int Nektar::StdRegions::StdExpansion::v_NumBndryCoeffs ( ) const
protectedpure virtual

◆ v_NumDGBndryCoeffs()

virtual int Nektar::StdRegions::StdExpansion::v_NumDGBndryCoeffs ( ) const
protectedpure virtual

◆ v_PhysDeriv() [1/2]

void Nektar::StdRegions::StdExpansion::v_PhysDeriv ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d1,
Array< OneD, NekDouble > &  out_d2,
Array< OneD, NekDouble > &  out_d3 
)
protectedvirtual

◆ v_PhysDeriv() [2/2]

void Nektar::StdRegions::StdExpansion::v_PhysDeriv ( const int  dir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d0 
)
protectedvirtual

◆ v_PhysDirectionalDeriv()

void Nektar::StdRegions::StdExpansion::v_PhysDirectionalDeriv ( const Array< OneD, const NekDouble > &  inarray,
const Array< OneD, const NekDouble > &  direction,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Physical derivative along a direction vector.

See also
StdRegions::StdExpansion::PhysDirectionalDeriv

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

Definition at line 1494 of file StdExpansion.cpp.

1498{
1499 NEKERROR(ErrorUtil::efatal, "This function is only valid for "
1500 "specific element types");
1501}

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

Referenced by PhysDirectionalDeriv(), and WeakDirectionalDerivMatrixOp_MatFree().

◆ v_PhysEvalFirstDeriv()

NekDouble Nektar::StdRegions::StdExpansion::v_PhysEvalFirstDeriv ( const Array< OneD, NekDouble > &  coord,
const Array< OneD, const NekDouble > &  inarray,
std::array< NekDouble, 3 > &  firstOrderDerivs 
)
protectedvirtual

◆ v_PhysEvalFirstSecondDeriv()

NekDouble Nektar::StdRegions::StdExpansion::v_PhysEvalFirstSecondDeriv ( const Array< OneD, NekDouble > &  coord,
const Array< OneD, const NekDouble > &  inarray,
std::array< NekDouble, 3 > &  firstOrderDerivs,
std::array< NekDouble, 6 > &  secondOrderDerivs 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::SegExp, and Nektar::StdRegions::StdSegExp.

Definition at line 1548 of file StdExpansion.cpp.

1553{
1555 "PhysEvaluate second order derivative method does not exist"
1556 " for this shape type: " +
1557 static_cast<std::string>(
1559 return 0;
1560}

References DetShapeType(), Nektar::ErrorUtil::efatal, NEKERROR, and Nektar::LibUtilities::ShapeTypeMap.

Referenced by PhysEvaluate().

◆ v_PhysEvaluate()

NekDouble Nektar::StdRegions::StdExpansion::v_PhysEvaluate ( const Array< OneD, const NekDouble > &  coords,
const Array< OneD, const NekDouble > &  physvals 
)
protectedvirtual

◆ v_PhysEvaluateBasis()

NekDouble Nektar::StdRegions::StdExpansion::v_PhysEvaluateBasis ( const Array< OneD, const NekDouble > &  coords,
int  mode 
)
protectedvirtual

◆ v_PhysEvaluateInterp()

NekDouble Nektar::StdRegions::StdExpansion::v_PhysEvaluateInterp ( const Array< OneD, DNekMatSharedPtr > &  I,
const Array< OneD, const NekDouble > &  physvals 
)
protectedvirtual

Reimplemented in Nektar::StdRegions::StdExpansion2D, and Nektar::StdRegions::StdExpansion3D.

Definition at line 1527 of file StdExpansion.cpp.

1530{
1531 NEKERROR(ErrorUtil::efatal, "Method does not exist for this shape");
1532 return 0;
1533}

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

Referenced by PhysEvaluate().

◆ v_PhysInterp()

void Nektar::StdRegions::StdExpansion::v_PhysInterp ( std::shared_ptr< StdExpansion FromExp,
const Array< OneD, const NekDouble > &  fromData,
Array< OneD, NekDouble > &  toData,
bool  Transpose 
)
protectedvirtual

Reimplemented in Nektar::StdRegions::StdExpansion1D, Nektar::StdRegions::StdExpansion2D, and Nektar::StdRegions::StdExpansion3D.

Definition at line 1343 of file StdExpansion.cpp.

1348{
1349 ASSERTL0(false, "This function is not valid or not defined");
1350}

References ASSERTL0.

Referenced by PhysInterp().

◆ v_ReduceOrderCoeffs()

void Nektar::StdRegions::StdExpansion::v_ReduceOrderCoeffs ( int  numMin,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

◆ v_ReOrientTracePhysMap()

void Nektar::StdRegions::StdExpansion::v_ReOrientTracePhysMap ( const StdRegions::Orientation  orient,
Array< OneD, int > &  idmap,
const int  nq0,
const int  nq1,
bool  Forwards 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion1D, Nektar::StdRegions::StdExpansion2D, and Nektar::StdRegions::StdExpansion3D.

Definition at line 1895 of file StdExpansion.cpp.

1899{
1901 "Method does not exist for this shape or library");
1902}

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

Referenced by ReOrientTracePhysMap().

◆ v_SetCoeffsToOrientation()

void Nektar::StdRegions::StdExpansion::v_SetCoeffsToOrientation ( StdRegions::Orientation  dir,
Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Reimplemented in Nektar::LocalRegions::Expansion, and Nektar::LocalRegions::SegExp.

Definition at line 1312 of file StdExpansion.cpp.

1316{
1317 NEKERROR(ErrorUtil::efatal, "This function is not defined for this shape");
1318}

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

◆ v_StdPhysDeriv()

void Nektar::StdRegions::StdExpansion::v_StdPhysDeriv ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d1,
Array< OneD, NekDouble > &  out_d2,
Array< OneD, NekDouble > &  out_d3 
)
protectedvirtual

◆ v_StdPhysEvaluate()

NekDouble Nektar::StdRegions::StdExpansion::v_StdPhysEvaluate ( const Array< OneD, const NekDouble > &  Lcoord,
const Array< OneD, const NekDouble > &  physvals 
)
protectedvirtual

◆ v_SVVLaplacianFilter()

void Nektar::StdRegions::StdExpansion::v_SVVLaplacianFilter ( Array< OneD, NekDouble > &  array,
const StdMatrixKey mkey 
)
protectedvirtual

◆ v_WeakDerivMatrixOp()

void Nektar::StdRegions::StdExpansion::v_WeakDerivMatrixOp ( const int  i,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protectedvirtual

◆ v_WeakDirectionalDerivMatrixOp()

void Nektar::StdRegions::StdExpansion::v_WeakDirectionalDerivMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protectedvirtual

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

Definition at line 1754 of file StdExpansion.cpp.

1757{
1758 // If this function is not reimplemented on shape level, the function
1759 // below will be called
1760 WeakDirectionalDerivMatrixOp_MatFree(inarray, outarray, mkey);
1761}

References WeakDirectionalDerivMatrixOp_MatFree().

Referenced by WeakDirectionalDerivMatrixOp().

◆ WeakDerivMatrixOp()

void Nektar::StdRegions::StdExpansion::WeakDerivMatrixOp ( const int  i,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
inline

Definition at line 884 of file StdExpansion.h.

888 {
889 v_WeakDerivMatrixOp(i, inarray, outarray, mkey);
890 }
virtual void v_WeakDerivMatrixOp(const int i, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)

References v_WeakDerivMatrixOp().

Referenced by GeneralMatrixOp().

◆ WeakDerivMatrixOp_MatFree()

void Nektar::StdRegions::StdExpansion::WeakDerivMatrixOp_MatFree ( const int  i,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protected

◆ WeakDirectionalDerivMatrixOp()

void Nektar::StdRegions::StdExpansion::WeakDirectionalDerivMatrixOp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
inline

Definition at line 892 of file StdExpansion.h.

895 {
896 v_WeakDirectionalDerivMatrixOp(inarray, outarray, mkey);
897 }
virtual void v_WeakDirectionalDerivMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)

References v_WeakDirectionalDerivMatrixOp().

Referenced by GeneralMatrixOp().

◆ WeakDirectionalDerivMatrixOp_MatFree()

void Nektar::StdRegions::StdExpansion::WeakDirectionalDerivMatrixOp_MatFree ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const StdMatrixKey mkey 
)
protected

Definition at line 1102 of file StdExpansion.cpp.

1105{
1106 int nq = GetTotPoints();
1107
1108 Array<OneD, NekDouble> tmp(nq), Dtmp(nq);
1109 Array<OneD, NekDouble> Mtmp(nq), Mout(m_ncoeffs);
1110
1111 v_BwdTrans(inarray, tmp);
1112 v_PhysDirectionalDeriv(tmp, mkey.GetVarCoeff(eVarCoeffMF), Dtmp);
1113
1114 v_IProductWRTBase(Dtmp, outarray);
1115
1116 // Compte M_{div tv}
1117 Vmath::Vmul(nq, &(mkey.GetVarCoeff(eVarCoeffMFDiv))[0], 1, &tmp[0], 1,
1118 &Mtmp[0], 1);
1119
1120 v_IProductWRTBase(Mtmp, Mout);
1121
1122 // Add D_tv + M_{div tv}
1123 Vmath::Vadd(m_ncoeffs, &Mout[0], 1, &outarray[0], 1, &outarray[0], 1);
1124}

References Nektar::StdRegions::eVarCoeffMF, Nektar::StdRegions::eVarCoeffMFDiv, GetTotPoints(), Nektar::StdRegions::StdMatrixKey::GetVarCoeff(), m_ncoeffs, v_BwdTrans(), v_IProductWRTBase(), v_PhysDirectionalDeriv(), Vmath::Vadd(), and Vmath::Vmul().

Referenced by GeneralMatrixOp_MatFree(), and v_WeakDirectionalDerivMatrixOp().

Member Data Documentation

◆ m_base

Array<OneD, LibUtilities::BasisSharedPtr> Nektar::StdRegions::StdExpansion::m_base
protected

Bases needed for the expansion

Definition at line 1268 of file StdExpansion.h.

Referenced by BaryEvaluate(), BaryEvaluateBasis(), Nektar::StdRegions::StdExpansion2D::BaryTensorDeriv(), Nektar::StdRegions::StdExpansion3D::BaryTensorDeriv(), CreateGeneralMatrix(), Nektar::LocalRegions::Expansion2D::CreateMatrix(), Nektar::LocalRegions::SegExp::CreateMatrix(), CreateStdFac(), EquiSpacedToCoeffs(), EvalBasisNumModesMax(), Nektar::LocalRegions::Expansion::Expansion(), GetBase(), GetBasis(), GetBasisNumModes(), GetBasisType(), Nektar::LocalRegions::QuadExp::GetEdgeInterpVals(), Nektar::LocalRegions::Expansion::GetMF(), Nektar::StdRegions::StdTetExp::GetMode(), Nektar::StdRegions::StdPrismExp::GetMode(), Nektar::StdRegions::StdPyrExp::GetMode(), Nektar::LocalRegions::Expansion2D::GetnEdgecdotMF(), Nektar::LocalRegions::Expansion3D::GetnFacecdotMF(), GetNumBases(), GetNumPoints(), GetPoints(), GetPointsKeys(), GetPointsType(), GetTotPoints(), Nektar::LocalRegions::Expansion::PhysDerivBaseOnTraceMat(), PhysInterpToPoints(), Nektar::StdRegions::StdExpansion3D::PhysTensorDeriv(), Nektar::StdRegions::StdExpansion1D::PhysTensorDeriv(), Nektar::StdRegions::StdPointExp::PhysTensorDeriv(), Nektar::StdRegions::StdExpansion2D::PhysTensorDeriv(), Nektar::LocalRegions::Expansion::StdDerivBaseOnTraceMat(), StdExpansion(), Nektar::StdRegions::StdHexExp::StdHexExp(), Nektar::StdRegions::StdNodalTriExp::StdNodalTriExp(), Nektar::StdRegions::StdPrismExp::StdPrismExp(), Nektar::StdRegions::StdPyrExp::StdPyrExp(), Nektar::StdRegions::StdQuadExp::StdQuadExp(), Nektar::StdRegions::StdSegExp::StdSegExp(), Nektar::StdRegions::StdTetExp::StdTetExp(), Nektar::StdRegions::StdTriExp::StdTriExp(), Nektar::LocalRegions::Expansion2D::v_AddEdgeNormBoundaryInt(), Nektar::LocalRegions::Expansion3D::v_AddFaceNormBoundaryInt(), 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::StdRegions::StdHexExp::v_BwdTrans(), Nektar::StdRegions::StdPointExp::v_BwdTrans(), Nektar::StdRegions::StdPrismExp::v_BwdTrans(), Nektar::StdRegions::StdPyrExp::v_BwdTrans(), Nektar::StdRegions::StdQuadExp::v_BwdTrans(), Nektar::StdRegions::StdSegExp::v_BwdTrans(), Nektar::StdRegions::StdTetExp::v_BwdTrans(), Nektar::StdRegions::StdTriExp::v_BwdTrans(), Nektar::LocalRegions::PyrExp::v_ComputeLaplacianMetric(), Nektar::LocalRegions::TriExp::v_ComputeLaplacianMetric(), Nektar::LocalRegions::QuadExp::v_ComputeTraceNormal(), Nektar::LocalRegions::HexExp::v_CreateStdMatrix(), Nektar::LocalRegions::NodalPrismExp::v_CreateStdMatrix(), Nektar::LocalRegions::NodalTetExp::v_CreateStdMatrix(), Nektar::LocalRegions::NodalTriExp::v_CreateStdMatrix(), Nektar::LocalRegions::PrismExp::v_CreateStdMatrix(), Nektar::LocalRegions::PyrExp::v_CreateStdMatrix(), Nektar::LocalRegions::QuadExp::v_CreateStdMatrix(), Nektar::LocalRegions::SegExp::v_CreateStdMatrix(), Nektar::LocalRegions::TetExp::v_CreateStdMatrix(), Nektar::LocalRegions::TriExp::v_CreateStdMatrix(), Nektar::StdRegions::StdHexExp::v_ExponentialFilter(), Nektar::StdRegions::StdQuadExp::v_ExponentialFilter(), Nektar::StdRegions::StdSegExp::v_ExponentialFilter(), Nektar::LocalRegions::HexExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::PrismExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::PyrExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::QuadExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::SegExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::TetExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::TriExp::v_ExtractDataToCoeffs(), Nektar::StdRegions::StdQuadExp::v_FillMode(), Nektar::StdRegions::StdHexExp::v_FillMode(), Nektar::StdRegions::StdSegExp::v_FillMode(), Nektar::StdRegions::StdTriExp::v_FillMode(), Nektar::LocalRegions::QuadExp::v_FwdTransBndConstrained(), Nektar::LocalRegions::SegExp::v_FwdTransBndConstrained(), Nektar::LocalRegions::TriExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdQuadExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdSegExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdTriExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdHexExp::v_GenMatrix(), Nektar::StdRegions::StdPrismExp::v_GenMatrix(), Nektar::StdRegions::StdQuadExp::v_GenMatrix(), Nektar::StdRegions::StdSegExp::v_GenMatrix(), Nektar::StdRegions::StdTetExp::v_GenMatrix(), Nektar::StdRegions::StdTriExp::v_GenMatrix(), Nektar::StdRegions::StdExpansion2D::v_GenStdMatBwdDeriv(), Nektar::StdRegions::StdExpansion3D::v_GenStdMatBwdDeriv(), Nektar::StdRegions::StdHexExp::v_GetBoundaryMap(), Nektar::StdRegions::StdPrismExp::v_GetBoundaryMap(), Nektar::StdRegions::StdPyrExp::v_GetBoundaryMap(), Nektar::StdRegions::StdQuadExp::v_GetBoundaryMap(), Nektar::StdRegions::StdSegExp::v_GetBoundaryMap(), Nektar::StdRegions::StdTetExp::v_GetBoundaryMap(), Nektar::StdRegions::StdTriExp::v_GetBoundaryMap(), Nektar::StdRegions::StdPointExp::v_GetCoords(), Nektar::StdRegions::StdQuadExp::v_GetCoords(), Nektar::StdRegions::StdSegExp::v_GetCoords(), Nektar::LocalRegions::Expansion::v_GetCoords(), Nektar::StdRegions::StdHexExp::v_GetCoords(), Nektar::StdRegions::StdTetExp::v_GetCoords(), Nektar::StdRegions::StdTriExp::v_GetCoords(), Nektar::StdRegions::StdPrismExp::v_GetCoords(), Nektar::StdRegions::StdPyrExp::v_GetCoords(), Nektar::StdRegions::StdHexExp::v_GetEdgeInteriorToElementMap(), Nektar::StdRegions::StdPrismExp::v_GetEdgeInteriorToElementMap(), Nektar::StdRegions::StdPyrExp::v_GetEdgeInteriorToElementMap(), Nektar::StdRegions::StdTetExp::v_GetEdgeInteriorToElementMap(), Nektar::StdRegions::StdTetExp::v_GetEdgeNcoeffs(), Nektar::StdRegions::StdExpansion2D::v_GetElmtTraceToTraceMap(), Nektar::StdRegions::StdHexExp::v_GetElmtTraceToTraceMap(), Nektar::StdRegions::StdPrismExp::v_GetElmtTraceToTraceMap(), Nektar::StdRegions::StdPyrExp::v_GetElmtTraceToTraceMap(), Nektar::StdRegions::StdTetExp::v_GetElmtTraceToTraceMap(), Nektar::StdRegions::StdHexExp::v_GetInteriorMap(), Nektar::StdRegions::StdPrismExp::v_GetInteriorMap(), Nektar::StdRegions::StdPyrExp::v_GetInteriorMap(), Nektar::StdRegions::StdQuadExp::v_GetInteriorMap(), Nektar::StdRegions::StdTetExp::v_GetInteriorMap(), Nektar::StdRegions::StdTriExp::v_GetInteriorMap(), Nektar::LocalRegions::HexExp::v_GetLinStdExp(), Nektar::LocalRegions::NodalPrismExp::v_GetLinStdExp(), Nektar::LocalRegions::NodalTetExp::v_GetLinStdExp(), Nektar::LocalRegions::NodalTriExp::v_GetLinStdExp(), Nektar::LocalRegions::PrismExp::v_GetLinStdExp(), Nektar::LocalRegions::PyrExp::v_GetLinStdExp(), Nektar::LocalRegions::QuadExp::v_GetLinStdExp(), Nektar::LocalRegions::SegExp::v_GetLinStdExp(), Nektar::LocalRegions::TetExp::v_GetLinStdExp(), Nektar::LocalRegions::TriExp::v_GetLinStdExp(), Nektar::LocalRegions::QuadExp::v_GetLocTracePhysVals(), Nektar::LocalRegions::TriExp::v_GetLocTracePhysVals(), Nektar::LocalRegions::Expansion3D::v_GetLocTracePhysVals(), Nektar::LocalRegions::PrismExp::v_GetSimplexEquiSpacedConnectivity(), Nektar::StdRegions::StdHexExp::v_GetSimplexEquiSpacedConnectivity(), Nektar::StdRegions::StdQuadExp::v_GetSimplexEquiSpacedConnectivity(), Nektar::StdRegions::StdSegExp::v_GetSimplexEquiSpacedConnectivity(), Nektar::StdRegions::StdTetExp::v_GetSimplexEquiSpacedConnectivity(), Nektar::StdRegions::StdTriExp::v_GetSimplexEquiSpacedConnectivity(), Nektar::LocalRegions::HexExp::v_GetStdExp(), Nektar::LocalRegions::NodalPrismExp::v_GetStdExp(), Nektar::LocalRegions::NodalTetExp::v_GetStdExp(), Nektar::LocalRegions::NodalTriExp::v_GetStdExp(), Nektar::LocalRegions::PrismExp::v_GetStdExp(), Nektar::LocalRegions::PyrExp::v_GetStdExp(), Nektar::LocalRegions::QuadExp::v_GetStdExp(), Nektar::LocalRegions::SegExp::v_GetStdExp(), Nektar::LocalRegions::TetExp::v_GetStdExp(), Nektar::LocalRegions::TriExp::v_GetStdExp(), Nektar::StdRegions::StdNodalTriExp::v_GetTraceBasisKey(), Nektar::StdRegions::StdTriExp::v_GetTraceBasisKey(), Nektar::StdRegions::StdHexExp::v_GetTraceBasisKey(), Nektar::StdRegions::StdPrismExp::v_GetTraceBasisKey(), Nektar::StdRegions::StdPyrExp::v_GetTraceBasisKey(), Nektar::StdRegions::StdTetExp::v_GetTraceBasisKey(), Nektar::StdRegions::StdHexExp::v_GetTraceCoeffMap(), Nektar::StdRegions::StdPrismExp::v_GetTraceCoeffMap(), Nektar::StdRegions::StdPyrExp::v_GetTraceCoeffMap(), Nektar::StdRegions::StdTetExp::v_GetTraceCoeffMap(), Nektar::StdRegions::StdQuadExp::v_GetTraceCoeffMap(), Nektar::StdRegions::StdSegExp::v_GetTraceCoeffMap(), Nektar::StdRegions::StdTriExp::v_GetTraceCoeffMap(), Nektar::StdRegions::StdQuadExp::v_GetTraceInteriorToElementMap(), Nektar::StdRegions::StdTriExp::v_GetTraceInteriorToElementMap(), Nektar::StdRegions::StdHexExp::v_GetTraceInteriorToElementMap(), Nektar::StdRegions::StdPrismExp::v_GetTraceInteriorToElementMap(), Nektar::StdRegions::StdPyrExp::v_GetTraceInteriorToElementMap(), Nektar::StdRegions::StdTetExp::v_GetTraceInteriorToElementMap(), Nektar::StdRegions::StdPyrExp::v_GetTraceIntNcoeffs(), Nektar::StdRegions::StdTetExp::v_GetTraceIntNcoeffs(), Nektar::StdRegions::StdHexExp::v_GetTraceNumModes(), Nektar::StdRegions::StdPrismExp::v_GetTraceNumModes(), Nektar::StdRegions::StdPyrExp::v_GetTraceNumModes(), Nektar::StdRegions::StdTetExp::v_GetTraceNumModes(), Nektar::StdRegions::StdHexExp::v_GetTraceNumPoints(), Nektar::StdRegions::StdPrismExp::v_GetTraceNumPoints(), Nektar::StdRegions::StdPyrExp::v_GetTraceNumPoints(), Nektar::StdRegions::StdTetExp::v_GetTraceNumPoints(), Nektar::LocalRegions::QuadExp::v_GetTracePhysMap(), Nektar::LocalRegions::TriExp::v_GetTracePhysMap(), Nektar::LocalRegions::HexExp::v_GetTracePhysMap(), Nektar::LocalRegions::PrismExp::v_GetTracePhysMap(), Nektar::LocalRegions::PyrExp::v_GetTracePhysMap(), Nektar::LocalRegions::TetExp::v_GetTracePhysMap(), Nektar::LocalRegions::SegExp::v_GetTracePhysMap(), Nektar::StdRegions::StdHexExp::v_GetTracePointsKey(), Nektar::StdRegions::StdPrismExp::v_GetTracePointsKey(), Nektar::StdRegions::StdTetExp::v_GetTracePointsKey(), Nektar::LocalRegions::QuadExp::v_GetTraceQFactors(), Nektar::StdRegions::StdHexExp::v_GetVertexMap(), Nektar::StdRegions::StdQuadExp::v_GetVertexMap(), Nektar::StdRegions::StdSegExp::v_GetVertexMap(), Nektar::StdRegions::StdTriExp::v_GetVertexMap(), Nektar::LocalRegions::SegExp::v_GetVertexPhysVals(), Nektar::StdRegions::StdSegExp::v_HelmholtzMatrixOp(), Nektar::LocalRegions::SegExp::v_HelmholtzMatrixOp(), Nektar::StdRegions::StdExpansion2D::v_HelmholtzMatrixOp_MatFree(), Nektar::StdRegions::StdExpansion3D::v_HelmholtzMatrixOp_MatFree(), Nektar::LocalRegions::Expansion1D::v_IProductWRTBase(), Nektar::LocalRegions::Expansion2D::v_IProductWRTBase(), Nektar::LocalRegions::Expansion3D::v_IProductWRTBase(), Nektar::StdRegions::StdExpansion1D::v_IProductWRTBase(), Nektar::StdRegions::StdExpansion2D::v_IProductWRTBase(), Nektar::StdRegions::StdExpansion3D::v_IProductWRTBase(), Nektar::StdRegions::StdPointExp::v_IProductWRTBase(), Nektar::StdRegions::StdHexExp::v_IProductWRTBaseKernel(), Nektar::StdRegions::StdPrismExp::v_IProductWRTBaseKernel(), Nektar::StdRegions::StdPyrExp::v_IProductWRTBaseKernel(), Nektar::StdRegions::StdTetExp::v_IProductWRTBaseKernel(), Nektar::StdRegions::StdQuadExp::v_IProductWRTBaseKernel(), Nektar::StdRegions::StdTriExp::v_IProductWRTBaseKernel(), Nektar::StdRegions::StdSegExp::v_IProductWRTBaseKernel(), 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::StdRegions::StdHexExp::v_IProductWRTDerivBase(), Nektar::StdRegions::StdPointExp::v_IProductWRTDerivBase(), Nektar::StdRegions::StdPrismExp::v_IProductWRTDerivBase(), Nektar::StdRegions::StdPyrExp::v_IProductWRTDerivBase(), Nektar::StdRegions::StdQuadExp::v_IProductWRTDerivBase(), Nektar::StdRegions::StdSegExp::v_IProductWRTDerivBase(), Nektar::StdRegions::StdTetExp::v_IProductWRTDerivBase(), Nektar::StdRegions::StdTriExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::HexExp::v_IProductWRTDirectionalDerivBase(), Nektar::LocalRegions::TriExp::v_IProductWRTDirectionalDerivBase(), Nektar::StdRegions::StdHexExp::v_IsBoundaryInteriorExpansion(), Nektar::StdRegions::StdPrismExp::v_IsBoundaryInteriorExpansion(), Nektar::StdRegions::StdQuadExp::v_IsBoundaryInteriorExpansion(), Nektar::StdRegions::StdSegExp::v_IsBoundaryInteriorExpansion(), Nektar::StdRegions::StdTetExp::v_IsBoundaryInteriorExpansion(), Nektar::StdRegions::StdTriExp::v_IsBoundaryInteriorExpansion(), Nektar::StdRegions::StdExpansion0D::v_IsCollocatedBasis(), Nektar::StdRegions::StdExpansion1D::v_IsCollocatedBasis(), Nektar::StdRegions::StdExpansion2D::v_IsCollocatedBasis(), Nektar::StdRegions::StdExpansion3D::v_IsCollocatedBasis(), Nektar::StdRegions::StdSegExp::v_LaplacianMatrixOp(), Nektar::LocalRegions::SegExp::v_LaplacianMatrixOp(), Nektar::StdRegions::StdExpansion2D::v_LaplacianMatrixOp_MatFree(), Nektar::StdRegions::StdExpansion3D::v_LaplacianMatrixOp_MatFree(), Nektar::LocalRegions::HexExp::v_LaplacianMatrixOp_MatFree_Kernel(), Nektar::LocalRegions::PrismExp::v_LaplacianMatrixOp_MatFree_Kernel(), Nektar::LocalRegions::PyrExp::v_LaplacianMatrixOp_MatFree_Kernel(), Nektar::LocalRegions::QuadExp::v_LaplacianMatrixOp_MatFree_Kernel(), Nektar::LocalRegions::TetExp::v_LaplacianMatrixOp_MatFree_Kernel(), Nektar::LocalRegions::TriExp::v_LaplacianMatrixOp_MatFree_Kernel(), Nektar::StdRegions::StdExpansion1D::v_MultiplyByStdQuadratureMetric(), Nektar::StdRegions::StdExpansion2D::v_MultiplyByStdQuadratureMetric(), Nektar::StdRegions::StdExpansion3D::v_MultiplyByStdQuadratureMetric(), Nektar::LocalRegions::SegExp::v_NormVectorIProductWRTBase(), Nektar::LocalRegions::QuadExp::v_NormVectorIProductWRTBase(), Nektar::LocalRegions::TriExp::v_NormVectorIProductWRTBase(), Nektar::StdRegions::StdHexExp::v_NumBndryCoeffs(), Nektar::StdRegions::StdPrismExp::v_NumBndryCoeffs(), Nektar::StdRegions::StdPyrExp::v_NumBndryCoeffs(), Nektar::StdRegions::StdTetExp::v_NumBndryCoeffs(), Nektar::StdRegions::StdHexExp::v_NumDGBndryCoeffs(), Nektar::StdRegions::StdPrismExp::v_NumDGBndryCoeffs(), Nektar::StdRegions::StdPyrExp::v_NumDGBndryCoeffs(), Nektar::StdRegions::StdTetExp::v_NumDGBndryCoeffs(), 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::StdRegions::StdHexExp::v_PhysEvaluateBasis(), Nektar::StdRegions::StdPrismExp::v_PhysEvaluateBasis(), Nektar::StdRegions::StdPyrExp::v_PhysEvaluateBasis(), Nektar::StdRegions::StdTetExp::v_PhysEvaluateBasis(), Nektar::StdRegions::StdTriExp::v_PhysEvaluateBasis(), Nektar::StdRegions::StdQuadExp::v_PhysEvaluateBasis(), Nektar::StdRegions::StdExpansion2D::v_PhysEvaluateInterp(), Nektar::StdRegions::StdExpansion3D::v_PhysEvaluateInterp(), Nektar::StdRegions::StdExpansion1D::v_PhysInterp(), Nektar::StdRegions::StdExpansion2D::v_PhysInterp(), Nektar::StdRegions::StdExpansion3D::v_PhysInterp(), Nektar::LocalRegions::HexExp::v_ReduceOrderCoeffs(), Nektar::LocalRegions::QuadExp::v_ReduceOrderCoeffs(), Nektar::LocalRegions::TriExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdPrismExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdPyrExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdQuadExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdSegExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdTetExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdTriExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdPrismExp::v_StdPhysDeriv(), Nektar::StdRegions::StdPyrExp::v_StdPhysDeriv(), Nektar::StdRegions::StdTriExp::v_StdPhysDeriv(), Nektar::StdRegions::StdTetExp::v_StdPhysDeriv(), Nektar::StdRegions::StdExpansion2D::v_StdPhysEvaluate(), Nektar::StdRegions::StdExpansion3D::v_StdPhysEvaluate(), Nektar::StdRegions::StdHexExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdPrismExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdPyrExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdQuadExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdSegExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdTetExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdTriExp::v_SVVLaplacianFilter(), and Nektar::LocalRegions::Expansion1D::v_VectorFlux().

◆ m_elmt_id

int Nektar::StdRegions::StdExpansion::m_elmt_id
protected

Definition at line 1269 of file StdExpansion.h.

Referenced by GetElmtId(), and SetElmtId().

◆ m_ncoeffs

int Nektar::StdRegions::StdExpansion::m_ncoeffs
protected

Total number of coefficients used in the expansion

Definition at line 1270 of file StdExpansion.h.

Referenced by CreateGeneralMatrix(), Nektar::LocalRegions::Expansion::CreateStaticCondMatrix(), CreateStdStaticCondMatrix(), EquiSpacedToCoeffs(), Nektar::LocalRegions::TetExp::GeneralMatrixOp_MatOp(), Nektar::StdRegions::StdNodalPrismExp::GenNBasisTransMatrix(), Nektar::StdRegions::StdNodalTetExp::GenNBasisTransMatrix(), Nektar::StdRegions::StdNodalTriExp::GenNBasisTransMatrix(), GetNcoeffs(), HelmholtzMatrixOp_MatFree_GenericImpl(), LaplacianMatrixOp_MatFree_GenericImpl(), LinearAdvectionDiffusionReactionMatrixOp_MatFree(), Nektar::StdRegions::StdNodalPrismExp::ModalToNodal(), Nektar::StdRegions::StdNodalTetExp::ModalToNodal(), Nektar::StdRegions::StdNodalTriExp::ModalToNodal(), Nektar::LocalRegions::SegExp::MultiplyByElmtInvMass(), Nektar::StdRegions::StdNodalPrismExp::NodalToModal(), Nektar::StdRegions::StdNodalTetExp::NodalToModal(), Nektar::StdRegions::StdNodalPrismExp::NodalToModalTranspose(), Nektar::StdRegions::StdNodalTetExp::NodalToModalTranspose(), Nektar::StdRegions::StdNodalTriExp::NodalToModalTranspose(), Nektar::LocalRegions::Expansion::PhysBaseOnTraceMat(), Nektar::LocalRegions::Expansion::PhysDerivBaseOnTraceMat(), Nektar::LocalRegions::PointExp::PointExp(), Nektar::LocalRegions::SegExp::ReverseCoeffsAndSign(), Nektar::LocalRegions::Expansion::StdDerivBaseOnTraceMat(), Nektar::LocalRegions::TriExp::v_AlignVectorToCollapsedDir(), Nektar::LocalRegions::NodalPrismExp::v_BwdTrans(), Nektar::LocalRegions::NodalTetExp::v_BwdTrans(), Nektar::LocalRegions::NodalTriExp::v_BwdTrans(), Nektar::StdRegions::StdNodalPrismExp::v_BwdTrans(), Nektar::StdRegions::StdNodalTetExp::v_BwdTrans(), Nektar::StdRegions::StdNodalTriExp::v_BwdTrans(), Nektar::LocalRegions::HexExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::NodalPrismExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::NodalTetExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::NodalTriExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::PrismExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::PyrExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::QuadExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::SegExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::TetExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::TriExp::v_ExtractDataToCoeffs(), Nektar::StdRegions::StdQuadExp::v_FillMode(), Nektar::StdRegions::StdHexExp::v_FillMode(), Nektar::StdRegions::StdNodalPrismExp::v_FillMode(), Nektar::StdRegions::StdNodalTetExp::v_FillMode(), Nektar::StdRegions::StdNodalTriExp::v_FillMode(), Nektar::StdRegions::StdPrismExp::v_FillMode(), Nektar::StdRegions::StdPyrExp::v_FillMode(), Nektar::StdRegions::StdSegExp::v_FillMode(), Nektar::StdRegions::StdTetExp::v_FillMode(), Nektar::StdRegions::StdTriExp::v_FillMode(), v_FwdTrans(), Nektar::LocalRegions::Expansion::v_FwdTrans(), Nektar::LocalRegions::QuadExp::v_FwdTransBndConstrained(), Nektar::LocalRegions::SegExp::v_FwdTransBndConstrained(), Nektar::LocalRegions::TriExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdQuadExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdSegExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdTriExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdPointExp::v_GenMatrix(), Nektar::StdRegions::StdQuadExp::v_GenMatrix(), Nektar::StdRegions::StdSegExp::v_GenMatrix(), Nektar::LocalRegions::Expansion2D::v_GenMatrix(), Nektar::LocalRegions::Expansion3D::v_GenMatrix(), Nektar::StdRegions::StdExpansion2D::v_GenStdMatBwdDeriv(), Nektar::StdRegions::StdExpansion3D::v_GenStdMatBwdDeriv(), Nektar::StdRegions::StdHexExp::v_GetInteriorMap(), Nektar::StdRegions::StdNodalPrismExp::v_GetInteriorMap(), Nektar::StdRegions::StdNodalTetExp::v_GetInteriorMap(), Nektar::StdRegions::StdPrismExp::v_GetInteriorMap(), Nektar::StdRegions::StdPyrExp::v_GetInteriorMap(), Nektar::StdRegions::StdTetExp::v_GetInteriorMap(), Nektar::StdRegions::StdSegExp::v_HelmholtzMatrixOp(), Nektar::LocalRegions::SegExp::v_HelmholtzMatrixOp(), Nektar::StdRegions::StdExpansion2D::v_HelmholtzMatrixOp_MatFree(), Nektar::StdRegions::StdExpansion3D::v_HelmholtzMatrixOp_MatFree(), Nektar::LocalRegions::HexExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::PrismExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::PyrExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::QuadExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::TetExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::TriExp::v_IProductWRTDerivBase(), Nektar::StdRegions::StdPrismExp::v_IProductWRTDerivBase(), Nektar::StdRegions::StdPyrExp::v_IProductWRTDerivBase(), Nektar::StdRegions::StdTetExp::v_IProductWRTDerivBase(), Nektar::StdRegions::StdTriExp::v_IProductWRTDerivBase(), Nektar::LocalRegions::HexExp::v_IProductWRTDirectionalDerivBase(), Nektar::LocalRegions::TriExp::v_IProductWRTDirectionalDerivBase(), Nektar::StdRegions::StdExpansion2D::v_LaplacianMatrixOp_MatFree(), 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::StdRegions::StdNodalTriExp::v_NodalToModal(), Nektar::StdRegions::StdPrismExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdPyrExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdTetExp::v_ReduceOrderCoeffs(), Nektar::LocalRegions::Expansion1D::v_TraceNormLen(), and WeakDirectionalDerivMatrixOp_MatFree().

◆ m_stdFacManager

LibUtilities::NekManager<StdFacKey, Array<OneD, const NekDouble> > Nektar::StdRegions::StdExpansion::m_stdFacManager
protected

Definition at line 1283 of file StdExpansion.h.

Referenced by GetStdFac().

◆ m_stdMatrixManager

LibUtilities::NekManager<StdMatrixKey, DNekMat, StdMatrixKey::opLess> Nektar::StdRegions::StdExpansion::m_stdMatrixManager
protected

◆ m_stdStaticCondMatrixManager

LibUtilities::NekManager<StdMatrixKey, DNekBlkMat, StdMatrixKey::opLess> Nektar::StdRegions::StdExpansion::m_stdStaticCondMatrixManager
protected

◆ m_weights

std::vector<Array<OneD, const NekDouble> > Nektar::StdRegions::StdExpansion::m_weights
protected