113        bool doCheckCollDir0, 
bool doCheckCollDir1, 
bool doCheckCollDir2);
 
  121        bool doCheckCollDir0, 
bool doCheckCollDir1, 
bool doCheckCollDir2);
 
  185        std::array<NekDouble, 3> &firstOrderDerivs) 
override;
 
  193        bool doCheckCollDir0, 
bool doCheckCollDir1, 
bool doCheckCollDir2) = 0;
 
  201        bool doCheckCollDir0, 
bool doCheckCollDir1, 
bool doCheckCollDir2) = 0;
 
  235        std::array<NekDouble, 3> &firstOrderDerivs)
 
  237        const int nq0 = 
m_base[0]->GetNumPoints();
 
  238        const int nq1 = 
m_base[1]->GetNumPoints();
 
  239        const int nq2 = 
m_base[2]->GetNumPoints();
 
  248        for (
int j = 0; j < nq1 * nq2; ++j, ptr += nq0)
 
  251                StdExpansion::BaryEvaluate<0, true>(coord[0], ptr, deriv0[j]);
 
  254        for (
int j = 0; j < nq2; ++j)
 
  256            deriv0phys1[j] = StdExpansion::BaryEvaluate<1, false>(
 
  257                coord[1], &deriv0[j * nq1]);
 
  259        firstOrderDerivs[0] =
 
  260            StdExpansion::BaryEvaluate<2, false>(coord[2], &deriv0phys1[0]);
 
  262        for (
int j = 0; j < nq2; ++j)
 
  264            phys0phys1[j] = StdExpansion::BaryEvaluate<1, true>(
 
  265                coord[1], &phys0[j * nq1], phys0deriv1[j]);
 
  267        firstOrderDerivs[1] =
 
  268            StdExpansion::BaryEvaluate<2, false>(coord[2], &phys0deriv1[0]);
 
  270        return StdExpansion::BaryEvaluate<2, true>(coord[2], &phys0phys1[0],
 
  271                                                   firstOrderDerivs[2]);
 
  295    const int numpoints, 
const int nummodes);
 
  299    const int numpoints, 
const int nummodes);
 
#define STD_REGIONS_EXPORT
 
Describes the specification for a Basis.
 
virtual ~StdExpansion3D() override
 
virtual int v_GetNedges(void) const
 
void BwdTrans_SumFacKernel(const Array< OneD, const NekDouble > &base0, const Array< OneD, const NekDouble > &base1, const Array< OneD, const NekDouble > &base2, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp, bool doCheckCollDir0, bool doCheckCollDir1, bool doCheckCollDir2)
 
virtual void v_GetEdgeInteriorToElementMap(const int tid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, Orientation traceOrient=eForwards)
 
void IProductWRTBase_SumFacKernel(const Array< OneD, const NekDouble > &base0, const Array< OneD, const NekDouble > &base1, const Array< OneD, const NekDouble > &base2, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp, bool doCheckCollDir0, bool doCheckCollDir1, bool doCheckCollDir2)
 
int GetEdgeNcoeffs(const int i) const
This function returns the number of expansion coefficients belonging to the i-th edge.
 
virtual void v_BwdTrans_SumFacKernel(const Array< OneD, const NekDouble > &base0, const Array< OneD, const NekDouble > &base1, const Array< OneD, const NekDouble > &base2, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp, bool doCheckCollDir0, bool doCheckCollDir1, bool doCheckCollDir2)=0
 
virtual void v_HelmholtzMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
 
int GetNedges() const
return the number of edges in 3D expansion
 
NekDouble BaryTensorDeriv(const Array< OneD, NekDouble > &coord, const Array< OneD, const NekDouble > &inarray, std::array< NekDouble, 3 > &firstOrderDerivs)
 
virtual int v_GetShapeDimension() const override final
 
virtual void v_LaplacianMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
 
virtual int v_GetEdgeNcoeffs(const int i) const
 
virtual NekDouble v_PhysEvaluate(const Array< OneD, const NekDouble > &coords, const Array< OneD, const NekDouble > &physvals) override
This function evaluates the expansion at a single (arbitrary) point of the domain.
 
virtual NekDouble v_Integral(const Array< OneD, const NekDouble > &inarray) override
Integrates the specified function over the domain.
 
virtual void v_GenStdMatBwdDeriv(const int dir, DNekMatSharedPtr &mat) override
 
void GetEdgeInteriorToElementMap(const int tid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, Orientation traceOrient=eForwards)
 
virtual void v_GetTraceToElementMap(const int tid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, Orientation traceOrient, int P, int Q) override
 
virtual void v_IProductWRTBase_SumFacKernel(const Array< OneD, const NekDouble > &base0, const Array< OneD, const NekDouble > &base1, const Array< OneD, const NekDouble > &base2, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp, bool doCheckCollDir0, bool doCheckCollDir1, bool doCheckCollDir2)=0
 
void PhysTensorDeriv(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray_d1, Array< OneD, NekDouble > &outarray_d2, Array< OneD, NekDouble > &outarray_d3)
Calculate the 3D derivative in the local tensor/collapsed coordinate at the physical points.
 
The base class for all shapes.
 
Array< OneD, LibUtilities::BasisSharedPtr > m_base
 
@ P
Monomial polynomials .
 
LibUtilities::BasisKey EvaluateTriFaceBasisKey(const int facedir, const LibUtilities::BasisType faceDirBasisType, const int numpoints, const int nummodes)
 
LibUtilities::BasisKey EvaluateQuadFaceBasisKey(const int facedir, const LibUtilities::BasisType faceDirBasisType, const int numpoints, const int nummodes)
 
std::shared_ptr< StdExpansion3D > StdExpansion3DSharedPtr
 
The above copyright notice and this permission notice shall be included.
 
std::shared_ptr< DNekMat > DNekMatSharedPtr