44 : StdExpansion(LibUtilities::StdNodalPrismData::getNumberOfCoefficients(
45 Ba.GetNumModes(), Bb.GetNumModes(), Bc.GetNumModes()),
47 StdExpansion3D(LibUtilities::StdNodalPrismData::getNumberOfCoefficients(
48 Ba.GetNumModes(), Bb.GetNumModes(), Bc.GetNumModes()),
50 StdPrismExp(Ba, Bb, Bc), StdNodalPrismExp(Ba, Bb, Bc, Ntype),
54 m_staticCondMatrixManager(
std::bind(&
Expansion::CreateStaticCondMatrix,
55 this,
std::placeholders::_1))
60 : StdExpansion(T), StdExpansion3D(T), StdPrismExp(T), StdNodalPrismExp(T),
62 m_matrixManager(T.m_matrixManager),
63 m_staticCondMatrixManager(T.m_staticCondMatrixManager)
72 StdPrismExp::v_BwdTrans(tmp, outarray);
102 m_base[0]->GetPointsKey());
104 m_base[1]->GetPointsKey());
106 m_base[2]->GetPointsKey());
113 const NekDouble *data,
const std::vector<unsigned int> &nummodes,
114 const int mode_offset,
NekDouble *coeffs,
115 [[maybe_unused]] std::vector<LibUtilities::BasisType> &fromType)
136 return tmp->GetStdMatrix(mkey);
159 StdExpansion::MassMatrixOp_MatFree(inarray, outarray, mkey);
166 StdExpansion::LaplacianMatrixOp_MatFree_GenericImpl(inarray, outarray,
174 StdExpansion::LaplacianMatrixOp_MatFree(k1, k2, inarray, outarray, mkey);
181 StdExpansion::WeakDerivMatrixOp_MatFree(i, inarray, outarray, mkey);
188 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)
DNekScalBlkMatSharedPtr v_GetLocStaticCondMatrix(const MatrixKey &mkey) override
void v_HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
StdRegions::StdExpansionSharedPtr v_GetStdExp(void) const override
LibUtilities::NekManager< MatrixKey, DNekScalMat, MatrixKey::opLess > m_matrixManager
void v_BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
void v_DropLocMatrix(const MatrixKey &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.
StdRegions::StdExpansionSharedPtr v_GetLinStdExp(void) const override
void v_MassMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
DNekScalMatSharedPtr v_GetLocMatrix(const MatrixKey &mkey) override
DNekMatSharedPtr v_CreateStdMatrix(const StdRegions::StdMatrixKey &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
void v_LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
LibUtilities::NekManager< MatrixKey, DNekScalBlkMat, MatrixKey::opLess > m_staticCondMatrixManager
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
NodalPrismExp(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.
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
LibUtilities::PointsKey m_nodalPointsKey
void NodalToModal(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void NodalToModalTranspose(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void ModalToNodal(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
std::shared_ptr< StdNodalPrismExp > StdNodalPrismExpSharedPtr
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
std::shared_ptr< DNekMat > DNekMatSharedPtr