46 : StdExpansion(LibUtilities::StdNodalTetData::getNumberOfCoefficients(
47 Ba.GetNumModes(), Bb.GetNumModes(), Bc.GetNumModes()),
49 StdExpansion3D(LibUtilities::StdNodalTetData::getNumberOfCoefficients(
50 Ba.GetNumModes(), Bb.GetNumModes(), Bc.GetNumModes()),
52 StdTetExp(Ba, Bb, Bc), StdNodalTetExp(Ba, Bb, Bc, Ntype),
Expansion(geom),
56 m_staticCondMatrixManager(
std::bind(&
Expansion::CreateStaticCondMatrix,
57 this,
std::placeholders::_1))
62 : StdExpansion(T), StdExpansion3D(T), StdTetExp(T), StdNodalTetExp(T),
64 m_matrixManager(T.m_matrixManager),
65 m_staticCondMatrixManager(T.m_staticCondMatrixManager)
74 StdTetExp::v_BwdTrans(tmp, outarray);
103 m_base[0]->GetPointsKey());
105 m_base[1]->GetPointsKey());
107 m_base[2]->GetPointsKey());
114 const NekDouble *data,
const std::vector<unsigned int> &nummodes,
115 const int mode_offset,
NekDouble *coeffs,
116 [[maybe_unused]] std::vector<LibUtilities::BasisType> &fromType)
137 return tmp->GetStdMatrix(mkey);
160 StdExpansion::MassMatrixOp_MatFree(inarray, outarray, mkey);
167 StdExpansion::LaplacianMatrixOp_MatFree_GenericImpl(inarray, outarray,
175 StdExpansion::LaplacianMatrixOp_MatFree(k1, k2, inarray, outarray, mkey);
182 StdExpansion::WeakDerivMatrixOp_MatFree(i, inarray, outarray, mkey);
189 StdExpansion::HelmholtzMatrixOp_MatFree_GenericImpl(inarray, outarray,
Describes the specification for a Basis.
PointsType GetPointsType() const
void ExtractDataToCoeffs(const NekDouble *data, const std::vector< unsigned int > &nummodes, const int nmodes_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType)
LibUtilities::NekManager< MatrixKey, DNekScalBlkMat, MatrixKey::opLess > m_staticCondMatrixManager
DNekMatSharedPtr v_CreateStdMatrix(const StdRegions::StdMatrixKey &mkey) override
void v_IProductWRTBase(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Calculates the inner product of a given function f with the different modes of the expansion.
DNekScalMatSharedPtr v_GetLocMatrix(const MatrixKey &mkey) override
StdRegions::StdExpansionSharedPtr v_GetLinStdExp(void) const override
void v_HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
void v_BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
void v_LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
void v_IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
void v_WeakDerivMatrixOp(const int i, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
void v_MassMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
void v_DropLocMatrix(const MatrixKey &mkey) override
void v_ExtractDataToCoeffs(const NekDouble *data, const std::vector< unsigned int > &nummodes, const int mode_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType) override
DNekScalBlkMatSharedPtr v_GetLocStaticCondMatrix(const MatrixKey &mkey) override
LibUtilities::NekManager< MatrixKey, DNekScalMat, MatrixKey::opLess > m_matrixManager
NodalTetExp(const LibUtilities::BasisKey &Ba, const LibUtilities::BasisKey &Bb, const LibUtilities::BasisKey &Bc, const LibUtilities::PointsType Ntype, SpatialDomains::Geometry3D *geom)
Constructor using BasisKey class for quadrature points and order definition.
StdRegions::StdExpansionSharedPtr v_GetStdExp(void) const override
void v_IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Calculates the inner product .
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
LibUtilities::BasisType GetBasisType(const int dir) const
This function returns the type of basis used in the dir direction.
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.
Array< OneD, LibUtilities::BasisSharedPtr > m_base
void NodalToModalTranspose(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void NodalToModal(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void ModalToNodal(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
LibUtilities::PointsKey m_nodalPointsKey
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
std::shared_ptr< StdNodalTetExp > StdNodalTetExpSharedPtr
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
std::shared_ptr< DNekMat > DNekMatSharedPtr