Nektar++
Loading...
Searching...
No Matches
NodalPrismExp.h
Go to the documentation of this file.
1///////////////////////////////////////////////////////////////////////////////
2//
3// File: NodalPrismExp.h
4//
5// For more information, please see: http://www.nektar.info
6//
7// The MIT License
8//
9// Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
10// Department of Aeronautics, Imperial College London (UK), and Scientific
11// Computing and Imaging Institute, University of Utah (USA).
12//
13// Permission is hereby granted, free of charge, to any person obtaining a
14// copy of this software and associated documentation files (the "Software"),
15// to deal in the Software without restriction, including without limitation
16// the rights to use, copy, modify, merge, publish, distribute, sublicense,
17// and/or sell copies of the Software, and to permit persons to whom the
18// Software is furnished to do so, subject to the following conditions:
19//
20// The above copyright notice and this permission notice shall be included
21// in all copies or substantial portions of the Software.
22//
23// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29// DEALINGS IN THE SOFTWARE.
30//
31// Description: Header for NodalPrismExp routines
32//
33///////////////////////////////////////////////////////////////////////////////
34
35#ifndef NODALPRISMEXP_H
36#define NODALPRISMEXP_H
37
40
43
45{
46
47class NodalPrismExp final : virtual public StdRegions::StdNodalPrismExp,
48 virtual public PrismExp
49{
50public:
51 /** \brief Constructor using BasisKey class for quadrature
52 points and order definition */
54 const LibUtilities::BasisKey &Bb,
55 const LibUtilities::BasisKey &Bc,
56 const LibUtilities::PointsType Ntype,
58
59 /// Copy Constructor
61
62 /// Destructor
64
65protected:
66 //---------------------------------------
67 // Transforms
68 //---------------------------------------
70 const Array<OneD, const NekDouble> &inarray,
71 Array<OneD, NekDouble> &outarray) override;
72
73 //---------------------------------------
74 // Inner product functions
75 //---------------------------------------
77 const Array<OneD, const NekDouble> &inarray,
78 Array<OneD, NekDouble> &outarray) override;
80 const int dir, const Array<OneD, const NekDouble> &inarray,
81 Array<OneD, NekDouble> &outarray) override;
82
83 //---------------------------------------
84 // Evaluation functions
85 //---------------------------------------
87 const Array<OneD, const NekDouble> &Lcoords,
88 Array<OneD, NekDouble> &coords) override
89 {
90 PrismExp::v_GetCoord(Lcoords, coords);
91 }
92
95 Array<OneD, NekDouble> &coords_3) override
96 {
97 PrismExp::v_GetCoords(coords_1, coords_2, coords_3);
98 }
99
101 void) const override;
103 void) const override;
105 const NekDouble *data, const std::vector<unsigned int> &nummodes,
106 const int mode_offset, NekDouble *coeffs,
107 [[maybe_unused]] std::vector<LibUtilities::BasisType> &fromType)
108 override;
109
110 //---------------------------------------
111 // Matrix creation functions
112 //---------------------------------------
115 {
116 return PrismExp::v_GenMatrix(mkey);
117 }
119 v_CreateStdMatrix(const StdRegions::StdMatrixKey &mkey) override;
121 v_GetLocMatrix(const MatrixKey &mkey) override;
123 v_GetLocStaticCondMatrix(const MatrixKey &mkey) override;
124 LOCAL_REGIONS_EXPORT void v_DropLocMatrix(const MatrixKey &mkey) override;
125
126 //----------------------------------------
127 // Matrix Operators
128 //----------------------------------------
130 const Array<OneD, const NekDouble> &inarray,
131 Array<OneD, NekDouble> &outarray,
132 const StdRegions::StdMatrixKey &mkey) override;
134 const Array<OneD, const NekDouble> &inarray,
135 Array<OneD, NekDouble> &outarray,
136 const StdRegions::StdMatrixKey &mkey) override;
138 const int k1, const int k2, const Array<OneD, const NekDouble> &inarray,
139 Array<OneD, NekDouble> &outarray,
140 const StdRegions::StdMatrixKey &mkey) override;
142 const int i, const Array<OneD, const NekDouble> &inarray,
143 Array<OneD, NekDouble> &outarray,
144 const StdRegions::StdMatrixKey &mkey) override;
146 const Array<OneD, const NekDouble> &inarray,
147 Array<OneD, NekDouble> &outarray,
148 const StdRegions::StdMatrixKey &mkey) override;
149
150private:
155};
156
157typedef std::shared_ptr<NodalPrismExp> NodalPrismExpSharedPtr;
158typedef std::vector<NodalPrismExpSharedPtr> NodalPrismExpVector;
159
160} // namespace Nektar::LocalRegions
161
162#endif // NODAL_PRISMEXP_H
#define LOCAL_REGIONS_EXPORT
Describes the specification for a Basis.
Definition Basis.h:45
DNekScalBlkMatSharedPtr v_GetLocStaticCondMatrix(const MatrixKey &mkey) override
void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3) override
void v_GetCoord(const Array< OneD, const NekDouble > &Lcoords, Array< OneD, NekDouble > &coords) 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
~NodalPrismExp() override=default
Destructor.
LibUtilities::NekManager< MatrixKey, DNekScalBlkMat, MatrixKey::opLess > m_staticCondMatrixManager
DNekMatSharedPtr v_GenMatrix(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
DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey) override
Definition PrismExp.cpp:761
void v_GetCoord(const Array< OneD, const NekDouble > &Lcoords, Array< OneD, NekDouble > &coords) override
Get the coordinates #coords at the local coordinates #Lcoords.
Definition PrismExp.cpp:225
void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3) override
Definition PrismExp.cpp:242
3D geometry information
Definition Geometry3D.h:50
std::vector< NodalPrismExpSharedPtr > NodalPrismExpVector
std::shared_ptr< NodalPrismExp > NodalPrismExpSharedPtr
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
std::shared_ptr< DNekMat > DNekMatSharedPtr