Nektar++
Loading...
Searching...
No Matches
PrismExp.h
Go to the documentation of this file.
1///////////////////////////////////////////////////////////////////////////////
2//
3// File: PrismExp.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 file for PrismExp routines
32//
33///////////////////////////////////////////////////////////////////////////////
34
35#ifndef PRISMEXP_H
36#define PRISMEXP_H
37
44
46{
47class PrismExp : virtual public StdRegions::StdPrismExp,
48 virtual public Expansion3D
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,
57
59
60 LOCAL_REGIONS_EXPORT ~PrismExp() override = default;
61
62protected:
63 //---------------------------------------
64 // Inner product functions
65 //---------------------------------------
67 const int dir, const Array<OneD, const NekDouble> &inarray,
68 Array<OneD, NekDouble> &outarray) override;
70 const int dir, const Array<OneD, const NekDouble> &inarray,
71 Array<OneD, Array<OneD, NekDouble>> &outarray) override;
72
73 //---------------------------------------
74 // Evaluation functions
75 //---------------------------------------
77 const Array<OneD, const NekDouble> &Lcoords,
78 Array<OneD, NekDouble> &coords) override;
79
82 Array<OneD, NekDouble> &coords_3) override;
83
86 const Array<OneD, const NekDouble> &inarray,
87 std::array<NekDouble, 3> &firstOrderDerivs) override;
88
89 //---------------------------------------
90 // Helper functions
91 //---------------------------------------
92
94 void) const override;
95
97 void) const override;
98
100 const NekDouble *data, const std::vector<unsigned int> &nummodes,
101 const int mode_offset, NekDouble *coeffs,
102 std::vector<LibUtilities::BasisType> &fromType) override;
103
105 const int face, Array<OneD, int> &outarray) override;
106
107 LOCAL_REGIONS_EXPORT void v_ComputeTraceNormal(const int face) override;
108
109 //---------------------------------------
110 // Operator creation functions
111 //---------------------------------------
113 const Array<OneD, const NekDouble> &inarray,
114 Array<OneD, NekDouble> &outarray,
115 const StdRegions::StdMatrixKey &mkey) override;
117 const Array<OneD, const NekDouble> &inarray,
118 Array<OneD, NekDouble> &outarray,
119 const StdRegions::StdMatrixKey &mkey) override;
121 const int k1, const int k2, const Array<OneD, const NekDouble> &inarray,
122 Array<OneD, NekDouble> &outarray,
123 const StdRegions::StdMatrixKey &mkey) override;
125 const Array<OneD, const NekDouble> &inarray,
126 Array<OneD, NekDouble> &outarray,
127 const StdRegions::StdMatrixKey &mkey) override;
128
131 const StdRegions::StdMatrixKey &mkey) override;
132
133 //---------------------------------------
134 // Matrix creation functions
135 //---------------------------------------
137 v_GenMatrix(const StdRegions::StdMatrixKey &mkey) override;
139 v_CreateStdMatrix(const StdRegions::StdMatrixKey &mkey) override;
141 v_GetLocMatrix(const MatrixKey &mkey) override;
143 v_GetLocStaticCondMatrix(const MatrixKey &mkey) override;
144 LOCAL_REGIONS_EXPORT void v_DropLocMatrix(const MatrixKey &mkey) override;
146 const MatrixKey &mkey) override;
147
150 bool standard = true) override;
151
152private:
157
159 const Array<OneD, const NekDouble> &inarray,
160 Array<OneD, NekDouble> &outarray, Array<OneD, NekDouble> &wsp) override;
161};
162
163typedef std::shared_ptr<PrismExp> PrismExpSharedPtr;
164typedef std::vector<PrismExpSharedPtr> PrismExpVector;
165} // namespace Nektar::LocalRegions
166
167#define H_PRISMEXP
168#endif
#define LOCAL_REGIONS_EXPORT
Describes the specification for a Basis.
Definition Basis.h:45
DNekMatSharedPtr v_CreateStdMatrix(const StdRegions::StdMatrixKey &mkey) override
Definition PrismExp.cpp:784
DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey) override
Definition PrismExp.cpp:761
StdRegions::StdExpansionSharedPtr v_GetStdExp(void) const override
Definition PrismExp.cpp:201
void v_LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
Definition PrismExp.cpp:708
void v_DropLocStaticCondMatrix(const MatrixKey &mkey) override
Definition PrismExp.cpp:812
void v_HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
Definition PrismExp.cpp:723
NekDouble v_PhysEvalFirstDeriv(const Array< OneD, NekDouble > &coord, const Array< OneD, const NekDouble > &inarray, std::array< NekDouble, 3 > &firstOrderDerivs) override
Definition PrismExp.cpp:249
void v_GetSimplexEquiSpacedConnectivity(Array< OneD, int > &conn, bool standard=true) override
DNekScalMatSharedPtr v_GetLocMatrix(const MatrixKey &mkey) override
Definition PrismExp.cpp:796
void v_IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Calculates the inner product .
Definition PrismExp.cpp:103
~PrismExp() override=default
LibUtilities::NekManager< MatrixKey, DNekScalBlkMat, MatrixKey::opLess > m_staticCondMatrixManager
Definition PrismExp.h:156
void v_ExtractDataToCoeffs(const NekDouble *data, const std::vector< unsigned int > &nummodes, const int mode_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType) override
Definition PrismExp.cpp:264
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_AlignVectorToCollapsedDir(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray) override
Definition PrismExp.cpp:140
StdRegions::StdExpansionSharedPtr v_GetLinStdExp(void) const override
Definition PrismExp.cpp:208
void v_ComputeTraceNormal(const int face) override
Get the normals along specficied face Get the face normals interplated to a points0 x points 0 type d...
Definition PrismExp.cpp:422
void v_MassMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
Definition PrismExp.cpp:701
void v_LaplacianMatrixOp_MatFree_Kernel(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp) override
Calculate the Laplacian multiplication in a matrix-free manner.
Definition PrismExp.cpp:839
void v_GetTracePhysMap(const int face, Array< OneD, int > &outarray) override
Definition PrismExp.cpp:321
void v_DropLocMatrix(const MatrixKey &mkey) override
Definition PrismExp.cpp:801
void v_SVVLaplacianFilter(Array< OneD, NekDouble > &array, const StdRegions::StdMatrixKey &mkey) override
Definition PrismExp.cpp:730
LibUtilities::NekManager< MatrixKey, DNekScalMat, MatrixKey::opLess > m_matrixManager
Definition PrismExp.h:154
DNekScalBlkMatSharedPtr v_GetLocStaticCondMatrix(const MatrixKey &mkey) override
Definition PrismExp.cpp:806
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
Class representing a prismatic element in reference space.
Definition StdPrismExp.h:45
std::shared_ptr< PrismExp > PrismExpSharedPtr
Definition PrismExp.h:163
std::vector< PrismExpSharedPtr > PrismExpVector
Definition PrismExp.h:164
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
std::shared_ptr< DNekMat > DNekMatSharedPtr