Nektar++
Loading...
Searching...
No Matches
NodalTetExp.h
Go to the documentation of this file.
1///////////////////////////////////////////////////////////////////////////////
2//
3// File: NodalTetExp.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 NodalTetExp routines
32//
33///////////////////////////////////////////////////////////////////////////////
34
35#ifndef NODALTETEXP_H
36#define NODALTETEXP_H
37
40
42#include <LocalRegions/TetExp.h>
43
45{
46
47class NodalTetExp final : virtual public StdRegions::StdNodalTetExp,
48 virtual public TetExp
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
63 LOCAL_REGIONS_EXPORT ~NodalTetExp() override = default;
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 TetExp::v_GetCoord(Lcoords, coords);
91 }
92
95 Array<OneD, NekDouble> &coords_3) override
96 {
97 TetExp::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 TetExp::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
157} // namespace Nektar::LocalRegions
158
159#endif // NODALTETEXP_H
#define LOCAL_REGIONS_EXPORT
Describes the specification for a Basis.
Definition Basis.h:45
~NodalTetExp() override=default
Destructor.
LibUtilities::NekManager< MatrixKey, DNekScalBlkMat, MatrixKey::opLess > m_staticCondMatrixManager
DNekMatSharedPtr v_CreateStdMatrix(const StdRegions::StdMatrixKey &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.
DNekScalMatSharedPtr v_GetLocMatrix(const MatrixKey &mkey) override
DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey) override
void v_GetCoord(const Array< OneD, const NekDouble > &Lcoords, Array< OneD, NekDouble > &coords) override
Definition NodalTetExp.h:86
StdRegions::StdExpansionSharedPtr v_GetLinStdExp(void) const override
void v_HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
void v_BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
void v_LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, 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
void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3) override
Definition NodalTetExp.h:93
void v_MassMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
void v_DropLocMatrix(const MatrixKey &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
DNekScalBlkMatSharedPtr v_GetLocStaticCondMatrix(const MatrixKey &mkey) override
LibUtilities::NekManager< MatrixKey, DNekScalMat, MatrixKey::opLess > m_matrixManager
StdRegions::StdExpansionSharedPtr v_GetStdExp(void) const override
DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey) override
Definition TetExp.cpp:735
void v_GetCoord(const Array< OneD, const NekDouble > &Lcoords, Array< OneD, NekDouble > &coords) override
Get the coordinates "coords" at the local coordinates "Lcoords".
Definition TetExp.cpp:236
void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3) override
Definition TetExp.cpp:253
3D geometry information
Definition Geometry3D.h:50
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
std::shared_ptr< DNekMat > DNekMatSharedPtr