Nektar++
Loading...
Searching...
No Matches
PyrExp.h
Go to the documentation of this file.
1///////////////////////////////////////////////////////////////////////////////
2//
3// File: PyrExp.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 PyrExp routines
32//
33///////////////////////////////////////////////////////////////////////////////
34
35#ifndef PYREXP_H
36#define PYREXP_H
37
44
46{
47
48class PyrExp : virtual public StdRegions::StdPyrExp, virtual public Expansion3D
49{
50public:
51 /** \brief Constructor using BasisKey class for quadrature points and order
52 definition */
54 const LibUtilities::BasisKey &Bb,
55 const LibUtilities::BasisKey &Bc,
57
59
60 LOCAL_REGIONS_EXPORT ~PyrExp() 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 void) const override;
78
80 void) const override;
81
83 const Array<OneD, const NekDouble> &Lcoords,
84 Array<OneD, NekDouble> &coords) override;
85
88 Array<OneD, NekDouble> &coords_3) override;
89
91 const NekDouble *data, const std::vector<unsigned int> &nummodes,
92 const int mode_offset, NekDouble *coeffs,
93 std::vector<LibUtilities::BasisType> &fromType) override;
94
97 const Array<OneD, const NekDouble> &inarray,
98 std::array<NekDouble, 3> &firstOrderDerivs) override;
99
100 //---------------------------------------
101 // Helper functions
102 //---------------------------------------
104 const int face, Array<OneD, int> &outarray) override;
105
106 LOCAL_REGIONS_EXPORT void v_ComputeTraceNormal(const int face) override;
107
110 const StdRegions::StdMatrixKey &mkey) override;
111
112 //---------------------------------------
113 // Matrix creation functions
114 //---------------------------------------
116 v_GenMatrix(const StdRegions::StdMatrixKey &mkey) override;
118 v_CreateStdMatrix(const StdRegions::StdMatrixKey &mkey) override;
120 v_GetLocMatrix(const MatrixKey &mkey) override;
122 v_GetLocStaticCondMatrix(const MatrixKey &mkey) override;
123 LOCAL_REGIONS_EXPORT void v_DropLocMatrix(const MatrixKey &mkey) override;
125 const MatrixKey &mkey) override;
127
128private:
133
135 const Array<OneD, const NekDouble> &inarray,
136 Array<OneD, NekDouble> &outarray, Array<OneD, NekDouble> &wsp) override;
137};
138
139typedef std::shared_ptr<PyrExp> PyrExpSharedPtr;
140typedef std::vector<PyrExpSharedPtr> PyrExpVector;
141} // namespace Nektar::LocalRegions
142
143#endif // PYREXP_H
#define LOCAL_REGIONS_EXPORT
Describes the specification for a Basis.
Definition Basis.h:45
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 PyrExp.cpp:250
void v_ComputeLaplacianMetric() override
Definition PyrExp.cpp:777
LibUtilities::NekManager< MatrixKey, DNekScalMat, MatrixKey::opLess > m_matrixManager
Definition PyrExp.h:130
void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3) override
Definition PyrExp.cpp:243
DNekMatSharedPtr v_CreateStdMatrix(const StdRegions::StdMatrixKey &mkey) override
Definition PyrExp.cpp:746
void v_SVVLaplacianFilter(Array< OneD, NekDouble > &array, const StdRegions::StdMatrixKey &mkey) override
Definition PyrExp.cpp:694
NekDouble v_PhysEvalFirstDeriv(const Array< OneD, NekDouble > &coord, const Array< OneD, const NekDouble > &inarray, std::array< NekDouble, 3 > &firstOrderDerivs) override
Definition PyrExp.cpp:300
void v_ComputeTraceNormal(const int face) override
Definition PyrExp.cpp:413
void v_GetCoord(const Array< OneD, const NekDouble > &Lcoords, Array< OneD, NekDouble > &coords) override
Definition PyrExp.cpp:226
~PyrExp() override=default
LibUtilities::NekManager< MatrixKey, DNekScalBlkMat, MatrixKey::opLess > m_staticCondMatrixManager
Definition PyrExp.h:132
void v_IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Calculates the inner product .
Definition PyrExp.cpp:101
StdRegions::StdExpansionSharedPtr v_GetStdExp(void) const override
Definition PyrExp.cpp:202
void v_DropLocMatrix(const MatrixKey &mkey) override
Definition PyrExp.cpp:762
void v_LaplacianMatrixOp_MatFree_Kernel(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp) override
Definition PyrExp.cpp:943
DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey) override
Definition PyrExp.cpp:725
StdRegions::StdExpansionSharedPtr v_GetLinStdExp(void) const override
Definition PyrExp.cpp:209
DNekScalBlkMatSharedPtr v_GetLocStaticCondMatrix(const MatrixKey &mkey) override
Definition PyrExp.cpp:767
void v_AlignVectorToCollapsedDir(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray) override
Definition PyrExp.cpp:138
void v_GetTracePhysMap(const int face, Array< OneD, int > &outarray) override
Definition PyrExp.cpp:315
void v_DropLocStaticCondMatrix(const MatrixKey &mkey) override
Definition PyrExp.cpp:772
DNekScalMatSharedPtr v_GetLocMatrix(const MatrixKey &mkey) override
Definition PyrExp.cpp:757
3D geometry information
Definition Geometry3D.h:50
std::vector< PyrExpSharedPtr > PyrExpVector
Definition PyrExp.h:140
std::shared_ptr< PyrExp > PyrExpSharedPtr
Definition PyrExp.h:139
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
std::shared_ptr< DNekMat > DNekMatSharedPtr