Nektar++
Loading...
Searching...
No Matches
HexExp.h
Go to the documentation of this file.
1///////////////////////////////////////////////////////////////////////////////
2//
3// File: HexExp.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 routines for Hex expansion
32//
33///////////////////////////////////////////////////////////////////////////////
34
35#ifndef HEXEXP_H
36#define HEXEXP_H
37
38#include <LibUtilities/BasicUtils/NekManager.hpp> // for NekManager
39
45
47{
48class HexExp : virtual public StdRegions::StdHexExp, virtual public Expansion3D
49{
50public:
52 const LibUtilities::BasisKey &Bb,
53 const LibUtilities::BasisKey &Bc,
55
57
58 LOCAL_REGIONS_EXPORT ~HexExp() override = default;
59
60protected:
61 //---------------------------------------
62 // Inner product functions
63 //---------------------------------------
65 const int dir, const Array<OneD, const NekDouble> &inarray,
66 Array<OneD, NekDouble> &outarray) override;
68 const int dir, const Array<OneD, const NekDouble> &inarray,
69 Array<OneD, Array<OneD, NekDouble>> &outarray) override;
71 const Array<OneD, const NekDouble> &direction,
72 const Array<OneD, const NekDouble> &inarray,
73 Array<OneD, NekDouble> &outarray) override;
74
75 //---------------------------------------
76 // Evaluation functions
77 //---------------------------------------
80 const Array<OneD, const NekDouble> &inarray,
81 std::array<NekDouble, 3> &firstOrderDerivs) override;
82
84 const Array<OneD, const NekDouble> &Lcoords,
85 Array<OneD, NekDouble> &coords) override;
86
89 Array<OneD, NekDouble> &coords_3) override;
90
91 //---------------------------------------
92 // Helper functions
93 //---------------------------------------
95 void) const override;
96
98 void) const override;
99
101 const NekDouble *data, const std::vector<unsigned int> &nummodes,
102 const int mode_offset, NekDouble *coeffs,
103 std::vector<LibUtilities::BasisType> &fromType) override;
104
106 const int face, Array<OneD, int> &outarray) override;
107
108 LOCAL_REGIONS_EXPORT void v_ComputeTraceNormal(const int face) override;
109
110 //---------------------------------------
111 // Operator creation functions
112 //---------------------------------------
114 const Array<OneD, const NekDouble> &inarray,
115 Array<OneD, NekDouble> &outarray,
116 const StdRegions::StdMatrixKey &mkey) override;
117
119 const Array<OneD, const NekDouble> &inarray,
120 Array<OneD, NekDouble> &outarray,
121 const StdRegions::StdMatrixKey &mkey) override;
122
124 const int k1, const int k2, const Array<OneD, const NekDouble> &inarray,
125 Array<OneD, NekDouble> &outarray,
126 const StdRegions::StdMatrixKey &mkey) override;
127
129 const int i, const Array<OneD, const NekDouble> &inarray,
130 Array<OneD, NekDouble> &outarray,
131 const StdRegions::StdMatrixKey &mkey) override;
132
134 const Array<OneD, const NekDouble> &inarray,
135 Array<OneD, NekDouble> &outarray,
136 const StdRegions::StdMatrixKey &mkey) override;
137
139 const Array<OneD, const NekDouble> &inarray,
140 Array<OneD, NekDouble> &outarray,
141 const StdRegions::StdMatrixKey &mkey) override;
142
144 const Array<OneD, const NekDouble> &inarray,
145 Array<OneD, NekDouble> &outarray,
146 const StdRegions::StdMatrixKey &mkey) override;
147
149 int numMin, const Array<OneD, const NekDouble> &inarray,
150 Array<OneD, NekDouble> &outarray) override;
151
154 const StdRegions::StdMatrixKey &mkey) override;
155
156 //---------------------------------------
157 // Matrix creation functions
158 //---------------------------------------
160 v_GenMatrix(const StdRegions::StdMatrixKey &mkey) override;
161
163 v_CreateStdMatrix(const StdRegions::StdMatrixKey &mkey) override;
164
166 v_GetLocMatrix(const MatrixKey &mkey) override;
167
168 LOCAL_REGIONS_EXPORT void v_DropLocMatrix(const MatrixKey &mkey) override;
169
171 v_GetLocStaticCondMatrix(const MatrixKey &mkey) override;
172
174 const MatrixKey &mkey) override;
175
177
178private:
183
185 const Array<OneD, const NekDouble> &inarray,
186 Array<OneD, NekDouble> &outarray, Array<OneD, NekDouble> &wsp) override;
187};
188
189typedef std::shared_ptr<HexExp> HexExpSharedPtr;
190typedef std::vector<HexExpSharedPtr> HexExpVector;
191} // namespace Nektar::LocalRegions
192
193#endif // HEX_EXP_H
#define LOCAL_REGIONS_EXPORT
#define STD_REGIONS_EXPORT
Describes the specification for a Basis.
Definition Basis.h:45
void v_WeakDirectionalDerivMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
Definition HexExp.cpp:830
void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3) override
Definition HexExp.cpp:304
LibUtilities::NekManager< MatrixKey, DNekScalMat, MatrixKey::opLess > m_matrixManager
Definition HexExp.h:180
NekDouble v_PhysEvalFirstDeriv(const Array< OneD, NekDouble > &coord, const Array< OneD, const NekDouble > &inarray, std::array< NekDouble, 3 > &firstOrderDerivs) override
Definition HexExp.cpp:249
void v_MassMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
Definition HexExp.cpp:800
void v_LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
Definition HexExp.cpp:807
void v_IProductWRTDirectionalDerivBase(const Array< OneD, const NekDouble > &direction, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Definition HexExp.cpp:194
DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey) override
Definition HexExp.cpp:950
DNekMatSharedPtr v_CreateStdMatrix(const StdRegions::StdMatrixKey &mkey) override
Definition HexExp.cpp:972
~HexExp() override=default
LibUtilities::NekManager< MatrixKey, DNekScalBlkMat, MatrixKey::opLess > m_staticCondMatrixManager
Definition HexExp.h:182
void v_HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
Definition HexExp.cpp:844
void v_DropLocStaticCondMatrix(const MatrixKey &mkey) override
Definition HexExp.cpp:999
DNekScalMatSharedPtr v_GetLocMatrix(const MatrixKey &mkey) override
Definition HexExp.cpp:984
void v_SVVLaplacianFilter(Array< OneD, NekDouble > &array, const StdRegions::StdMatrixKey &mkey) override
Definition HexExp.cpp:920
void v_ComputeTraceNormal(const int face) override
Definition HexExp.cpp:532
void v_ComputeLaplacianMetric() override
Definition HexExp.cpp:1086
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 HexExp.cpp:314
void v_LaplacianMatrixOp_MatFree_Kernel(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp) override
Definition HexExp.cpp:1004
void v_DropLocMatrix(const MatrixKey &mkey) override
Definition HexExp.cpp:989
void v_IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Calculates the inner product .
Definition HexExp.cpp:108
void v_GetCoord(const Array< OneD, const NekDouble > &Lcoords, Array< OneD, NekDouble > &coords) override
Retrieves the physical coordinates of a given set of reference coordinates.
Definition HexExp.cpp:287
void v_AlignVectorToCollapsedDir(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray) override
Definition HexExp.cpp:153
DNekScalBlkMatSharedPtr v_GetLocStaticCondMatrix(const MatrixKey &mkey) override
Definition HexExp.cpp:994
void v_GetTracePhysMap(const int face, Array< OneD, int > &outarray) override
Definition HexExp.cpp:417
void v_ReduceOrderCoeffs(int numMin, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Definition HexExp.cpp:862
void v_WeakDerivMatrixOp(const int i, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
Definition HexExp.cpp:822
StdRegions::StdExpansionSharedPtr v_GetStdExp(void) const override
Definition HexExp.cpp:260
StdRegions::StdExpansionSharedPtr v_GetLinStdExp(void) const override
Definition HexExp.cpp:267
void v_MassLevelCurvatureMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
Definition HexExp.cpp:837
3D geometry information
Definition Geometry3D.h:50
Class representing a hexehedral element in reference space.
Definition StdHexExp.h:44
std::vector< HexExpSharedPtr > HexExpVector
Definition HexExp.h:190
std::shared_ptr< HexExp > HexExpSharedPtr
Definition HexExp.h:189
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
std::shared_ptr< DNekMat > DNekMatSharedPtr