Nektar++
Expansion.h
Go to the documentation of this file.
1///////////////////////////////////////////////////////////////////////////////
2//
3// File: Expansion.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 Expansion routines
32//
33///////////////////////////////////////////////////////////////////////////////
34
35#ifndef EXPANSION_H
36#define EXPANSION_H
37
43#include <map>
44#include <memory>
45#include <vector>
46
47namespace Nektar
48{
49namespace LocalRegions
50{
51
52class Expansion;
53class MatrixKey;
54
56
58{
66};
67
68typedef std::shared_ptr<Expansion> ExpansionSharedPtr;
69typedef std::weak_ptr<Expansion> ExpansionWeakPtr;
70typedef std::vector<ExpansionSharedPtr> ExpansionVector;
71typedef std::map<MetricType, Array<OneD, NekDouble>> MetricMap;
72
73class Expansion : virtual public StdRegions::StdExpansion
74{
75public:
77 SpatialDomains::GeometrySharedPtr pGeom); // default constructor.
78 LOCAL_REGIONS_EXPORT Expansion(const Expansion &pSrc); // copy constructor.
80
81 LOCAL_REGIONS_EXPORT void SetTraceExp(const int traceid,
84
87
89 const LocalRegions::MatrixKey &mkey);
90
92 const StdRegions::MatrixType mtype,
96
98
100
102 CreateIndexMap(const IndexMapKey &ikey);
103
106
108 const;
109
112 const StdRegions::MatrixType matrixType);
113
116
118 const NekDouble *data, const std::vector<unsigned int> &nummodes,
119 const int nmodes_offset, NekDouble *coeffs,
120 std::vector<LibUtilities::BasisType> &fromType);
121
123 const int edge, const std::shared_ptr<Expansion> &EdgeExp,
126 Array<OneD, NekDouble> &outarray);
128 const int edge, const std::shared_ptr<Expansion> &EdgeExp,
130 Array<OneD, NekDouble> &outarray);
132 const int face, const std::shared_ptr<Expansion> &FaceExp,
134 Array<OneD, NekDouble> &outarray);
136 const int dir, const Array<OneD, const NekDouble> &inarray,
139 Array<OneD, NekDouble> &outarray);
142
145 Array<OneD, Array<OneD, NekDouble>> &d0factors,
146 Array<OneD, Array<OneD, NekDouble>> &d1factors);
147
149 {
150 return m_indexMapManager[ikey];
151 }
152
154 const int dir, const Array<OneD, const NekDouble> &inarray,
156 {
157 v_AlignVectorToCollapsedDir(dir, inarray, outarray);
158 }
159
161
163
164 inline int GetLeftAdjacentElementTrace() const;
165
166 inline int GetRightAdjacentElementTrace() const;
167
168 inline void SetAdjacentElementExp(int traceid, ExpansionSharedPtr &e);
169
171 {
172 return v_GetTraceOrient(trace);
173 }
174
177 Array<OneD, NekDouble> &outarray)
178 {
179 v_SetCoeffsToOrientation(dir, inarray, outarray);
180 }
181
182 /// Divided by the metric jacobi and quadrature weights
184 const Array<OneD, const NekDouble> &inarray,
185 Array<OneD, NekDouble> &outarray)
186 {
187 v_DivideByQuadratureMetric(inarray, outarray);
188 }
189
190 /**
191 * @brief Extract the metric factors to compute the contravariant
192 * fluxes along edge \a edge and stores them into \a outarray
193 * following the local edge orientation (i.e. anticlockwise
194 * convention).
195 */
196 inline void GetTraceQFactors(const int trace,
197 Array<OneD, NekDouble> &outarray)
198 {
199 v_GetTraceQFactors(trace, outarray);
200 }
201
202 inline void GetTracePhysVals(
203 const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp,
204 const Array<OneD, const NekDouble> &inarray,
205 Array<OneD, NekDouble> &outarray,
207 {
208 v_GetTracePhysVals(trace, TraceExp, inarray, outarray, orient);
209 }
210
211 inline void GetTracePhysMap(const int edge, Array<OneD, int> &outarray)
212 {
213 v_GetTracePhysMap(edge, outarray);
214 }
215
217 Array<OneD, int> &idmap, const int nq0,
218 const int nq1)
219 {
220 v_ReOrientTracePhysMap(orient, idmap, nq0, nq1);
221 }
222
224
225 inline void ComputeTraceNormal(const int id)
226 {
228 }
229
231 {
232 return v_GetPhysNormals();
233 }
234
236 {
237 v_SetPhysNormals(normal);
238 }
239
240 inline void SetUpPhysNormals(const int trace)
241 {
242 v_SetUpPhysNormals(trace);
243 }
244
246 const int traceid, const Array<OneD, const NekDouble> &primCoeffs,
247 DNekMatSharedPtr &inoutmat)
248 {
249 v_AddRobinMassMatrix(traceid, primCoeffs, inoutmat);
250 }
251
252 inline void TraceNormLen(const int traceid, NekDouble &h, NekDouble &p)
253 {
254 v_TraceNormLen(traceid, h, p);
255 }
256
258 const int traceid, const Array<OneD, const NekDouble> &primCoeffs,
259 const Array<OneD, NekDouble> &incoeffs, Array<OneD, NekDouble> &coeffs)
260 {
261 v_AddRobinTraceContribution(traceid, primCoeffs, incoeffs, coeffs);
262 }
263
265 &GetElmtBndNormDirElmtLen(const int nbnd) const;
266
269
270protected:
273
274 std::map<int, ExpansionWeakPtr> m_traceExp;
278 std::map<int, NormalVector> m_traceNormals;
283
284 /// the element length in each element boundary(Vertex, edge
285 /// or face) normal direction calculated based on the local
286 /// m_metricinfo times the standard element length (which is
287 /// 2.0)
288 std::map<int, Array<OneD, NekDouble>> m_elmtBndNormDirElmtLen;
289
293 const Array<OneD, const NekDouble> &direction,
295
296 Array<OneD, NekDouble> GetMF(const int dir, const int shapedim,
297 const StdRegions::VarCoeffMap &varcoeffs);
298
299 Array<OneD, NekDouble> GetMFDiv(const int dir,
300 const StdRegions::VarCoeffMap &varcoeffs);
301
302 Array<OneD, NekDouble> GetMFMag(const int dir,
303 const StdRegions::VarCoeffMap &varcoeffs);
304
305 virtual void v_MultiplyByQuadratureMetric(
306 const Array<OneD, const NekDouble> &inarray,
307 Array<OneD, NekDouble> &outarray) override;
308
309 virtual void v_DivideByQuadratureMetric(
310 const Array<OneD, const NekDouble> &inarray,
311 Array<OneD, NekDouble> &outarray);
312
314 {
315 }
316
317 virtual int v_GetCoordim() const override
318 {
319 return m_geom->GetCoordim();
320 }
321
322 virtual void v_GetCoords(Array<OneD, NekDouble> &coords_1,
323 Array<OneD, NekDouble> &coords_2,
324 Array<OneD, NekDouble> &coords_3) override;
325
327 const LocalRegions::MatrixKey &mkey);
328
329 virtual void v_DropLocMatrix(const LocalRegions::MatrixKey &mkey);
330
332 const DNekScalMatSharedPtr &r_bnd,
333 const StdRegions::MatrixType matrixType);
334
336 const DNekScalMatSharedPtr &r_bnd);
337
338 virtual void v_ExtractDataToCoeffs(
339 const NekDouble *data, const std::vector<unsigned int> &nummodes,
340 const int nmodes_offset, NekDouble *coeffs,
341 std::vector<LibUtilities::BasisType> &fromType);
342
343 virtual void v_AddEdgeNormBoundaryInt(
344 const int edge, const std::shared_ptr<Expansion> &EdgeExp,
347 Array<OneD, NekDouble> &outarray);
348 virtual void v_AddEdgeNormBoundaryInt(
349 const int edge, const std::shared_ptr<Expansion> &EdgeExp,
351 Array<OneD, NekDouble> &outarray);
352 virtual void v_AddFaceNormBoundaryInt(
353 const int face, const std::shared_ptr<Expansion> &FaceExp,
355 Array<OneD, NekDouble> &outarray);
356 virtual void v_DGDeriv(const int dir,
357 const Array<OneD, const NekDouble> &inarray,
360 Array<OneD, NekDouble> &outarray);
361 virtual NekDouble v_VectorFlux(
362 const Array<OneD, Array<OneD, NekDouble>> &vec);
363
364 virtual void v_NormalTraceDerivFactors(
366 Array<OneD, Array<OneD, NekDouble>> &d0factors,
367 Array<OneD, Array<OneD, NekDouble>> &d1factors);
368
369 virtual void v_AlignVectorToCollapsedDir(
370 const int dir, const Array<OneD, const NekDouble> &inarray,
371 Array<OneD, Array<OneD, NekDouble>> &outarray);
372
373 virtual StdRegions::Orientation v_GetTraceOrient(int trace);
374
375 virtual void v_SetCoeffsToOrientation(
377 Array<OneD, NekDouble> &outarray) override;
378
379 virtual void v_GetTraceQFactors(const int trace,
380 Array<OneD, NekDouble> &outarray);
381
382 virtual void v_GetTracePhysVals(
383 const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp,
384 const Array<OneD, const NekDouble> &inarray,
386
387 virtual void v_GetTracePhysMap(const int edge, Array<OneD, int> &outarray);
388
389 virtual void v_ReOrientTracePhysMap(const StdRegions::Orientation orient,
390 Array<OneD, int> &idmap, const int nq0,
391 const int nq1 = -1);
392
393 virtual void v_ComputeTraceNormal(const int id);
394
396
398
399 virtual void v_SetUpPhysNormals(const int id);
400
401 virtual void v_AddRobinMassMatrix(
402 const int face, const Array<OneD, const NekDouble> &primCoeffs,
403 DNekMatSharedPtr &inoutmat);
404
405 virtual void v_AddRobinTraceContribution(
406 const int traceid, const Array<OneD, const NekDouble> &primCoeffs,
407 const Array<OneD, NekDouble> &incoeffs, Array<OneD, NekDouble> &coeffs);
408
409 virtual void v_TraceNormLen(const int traceid, NekDouble &h, NekDouble &p);
410
411 virtual void v_GenTraceExp(const int traceid, ExpansionSharedPtr &exp);
412
413private:
414};
415
417{
418 ASSERTL1(traceid < GetNtraces(), "Trace is out of range.");
419
420 ExpansionSharedPtr returnval;
421
422 if (m_traceExp.count(traceid))
423 {
424 // Use stored value
425 returnval = m_traceExp[traceid].lock();
426 }
427 else
428 {
429 // Generate trace exp
430 v_GenTraceExp(traceid, returnval);
431 }
432
433 return returnval;
434}
435
436inline void Expansion::SetTraceExp(const int traceid, ExpansionSharedPtr &exp)
437{
438 ASSERTL1(traceid < GetNtraces(), "Trace out of range.");
439
440 m_traceExp[traceid] = exp;
441}
442
444{
445 ASSERTL1(m_elementLeft.lock().get(), "Left adjacent element not set.");
446 return m_elementLeft.lock();
447}
448
450{
451 ASSERTL1(m_elementLeft.lock().get(), "Right adjacent element not set.");
452
453 return m_elementRight.lock();
454}
455
457{
458 return m_elementTraceLeft;
459}
460
462{
463 return m_elementTraceRight;
464}
465
466inline void Expansion::SetAdjacentElementExp(int traceid,
468{
469 if (m_elementLeft.lock().get())
470 {
471 m_elementRight = exp;
472 m_elementTraceRight = traceid;
473 }
474 else
475 {
476 m_elementLeft = exp;
477 m_elementTraceLeft = traceid;
478 }
479}
480
481} // namespace LocalRegions
482} // namespace Nektar
483
484#endif
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
Definition: ErrorUtil.hpp:249
#define LOCAL_REGIONS_EXPORT
std::map< int, NormalVector > m_traceNormals
Definition: Expansion.h:278
std::map< int, Array< OneD, NekDouble > > m_elmtBndNormDirElmtLen
the element length in each element boundary(Vertex, edge or face) normal direction calculated based o...
Definition: Expansion.h:288
virtual void v_SetPhysNormals(Array< OneD, const NekDouble > &normal)
Definition: Expansion.cpp:884
SpatialDomains::GeometrySharedPtr GetGeom() const
Definition: Expansion.cpp:171
void SetTraceExp(const int traceid, ExpansionSharedPtr &f)
Definition: Expansion.h:436
virtual void v_TraceNormLen(const int traceid, NekDouble &h, NekDouble &p)
Definition: Expansion.cpp:912
IndexMapValuesSharedPtr CreateIndexMap(const IndexMapKey &ikey)
Definition: Expansion.cpp:185
void AddRobinTraceContribution(const int traceid, const Array< OneD, const NekDouble > &primCoeffs, const Array< OneD, NekDouble > &incoeffs, Array< OneD, NekDouble > &coeffs)
Definition: Expansion.h:257
SpatialDomains::GeometrySharedPtr m_geom
Definition: Expansion.h:275
void GetTracePhysMap(const int edge, Array< OneD, int > &outarray)
Definition: Expansion.h:211
void DropLocMatrix(const LocalRegions::MatrixKey &mkey)
Definition: Expansion.cpp:94
const SpatialDomains::GeomFactorsSharedPtr & GetMetricInfo() const
Definition: Expansion.cpp:250
ExpansionSharedPtr GetLeftAdjacentElementExp() const
Definition: Expansion.h:443
DNekMatSharedPtr BuildVertexMatrix(const DNekScalMatSharedPtr &r_bnd)
Definition: Expansion.cpp:105
virtual void v_DivideByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Definition: Expansion.cpp:439
virtual void v_GenTraceExp(const int traceid, ExpansionSharedPtr &exp)
Definition: Expansion.cpp:865
virtual void v_SetCoeffsToOrientation(StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Definition: Expansion.cpp:823
virtual void v_AddRobinTraceContribution(const int traceid, const Array< OneD, const NekDouble > &primCoeffs, const Array< OneD, NekDouble > &incoeffs, Array< OneD, NekDouble > &coeffs)
Definition: Expansion.cpp:904
ExpansionWeakPtr m_elementRight
Definition: Expansion.h:280
void AlignVectorToCollapsedDir(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Definition: Expansion.h:153
void ComputeGmatcdotMF(const Array< TwoD, const NekDouble > &df, const Array< OneD, const NekDouble > &direction, Array< OneD, Array< OneD, NekDouble > > &dfdir)
Definition: Expansion.cpp:608
virtual void v_GetTraceQFactors(const int trace, Array< OneD, NekDouble > &outarray)
Definition: Expansion.cpp:831
virtual void v_ComputeTraceNormal(const int id)
Definition: Expansion.cpp:872
void GetTraceQFactors(const int trace, Array< OneD, NekDouble > &outarray)
Extract the metric factors to compute the contravariant fluxes along edge edge and stores them into o...
Definition: Expansion.h:196
DNekScalBlkMatSharedPtr CreateStaticCondMatrix(const MatrixKey &mkey)
Definition: Expansion.cpp:277
virtual void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3) override
Definition: Expansion.cpp:535
Array< OneD, NekDouble > GetMFMag(const int dir, const StdRegions::VarCoeffMap &varcoeffs)
Definition: Expansion.cpp:714
void SetUpPhysNormals(const int trace)
Definition: Expansion.h:240
void SetAdjacentElementExp(int traceid, ExpansionSharedPtr &e)
Definition: Expansion.h:466
virtual DNekMatSharedPtr v_BuildVertexMatrix(const DNekScalMatSharedPtr &r_bnd)
Definition: Expansion.cpp:744
const Array< OneD, const NekDouble > & GetPhysNormals(void)
Definition: Expansion.h:230
virtual DNekScalMatSharedPtr v_GetLocMatrix(const LocalRegions::MatrixKey &mkey)
Definition: Expansion.cpp:269
int GetLeftAdjacentElementTrace() const
Definition: Expansion.h:456
void DivideByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Divided by the metric jacobi and quadrature weights.
Definition: Expansion.h:183
void GetTracePhysVals(const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient=StdRegions::eNoOrientation)
Definition: Expansion.h:202
virtual void v_AddFaceNormBoundaryInt(const int face, const std::shared_ptr< Expansion > &FaceExp, const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
Definition: Expansion.cpp:778
virtual void v_DGDeriv(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, ExpansionSharedPtr > &EdgeExp, Array< OneD, Array< OneD, NekDouble > > &coeffs, Array< OneD, NekDouble > &outarray)
Definition: Expansion.cpp:786
virtual DNekMatSharedPtr v_BuildTransformationMatrix(const DNekScalMatSharedPtr &r_bnd, const StdRegions::MatrixType matrixType)
Definition: Expansion.cpp:736
const Array< OneD, const NekDouble > & GetElmtBndNormDirElmtLen(const int nbnd) const
Definition: Expansion.cpp:918
virtual void v_AddRobinMassMatrix(const int face, const Array< OneD, const NekDouble > &primCoeffs, DNekMatSharedPtr &inoutmat)
Definition: Expansion.cpp:896
std::map< int, ExpansionWeakPtr > m_traceExp
Definition: Expansion.h:274
virtual void v_NormalTraceDerivFactors(Array< OneD, Array< OneD, NekDouble > > &factors, Array< OneD, Array< OneD, NekDouble > > &d0factors, Array< OneD, Array< OneD, NekDouble > > &d1factors)
Definition: Expansion.cpp:806
void AddEdgeNormBoundaryInt(const int edge, const std::shared_ptr< Expansion > &EdgeExp, const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray)
Definition: Expansion.cpp:118
ExpansionWeakPtr m_elementLeft
Definition: Expansion.h:279
void AddFaceNormBoundaryInt(const int face, const std::shared_ptr< Expansion > &FaceExp, const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
Definition: Expansion.cpp:133
virtual void v_DropLocMatrix(const LocalRegions::MatrixKey &mkey)
Definition: Expansion.cpp:418
void AddRobinMassMatrix(const int traceid, const Array< OneD, const NekDouble > &primCoeffs, DNekMatSharedPtr &inoutmat)
Definition: Expansion.h:245
virtual NekDouble v_VectorFlux(const Array< OneD, Array< OneD, NekDouble > > &vec)
Definition: Expansion.cpp:796
SpatialDomains::GeomFactorsSharedPtr m_metricinfo
Definition: Expansion.h:276
virtual StdRegions::Orientation v_GetTraceOrient(int trace)
Definition: Expansion.cpp:817
void DGDeriv(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, ExpansionSharedPtr > &EdgeExp, Array< OneD, Array< OneD, NekDouble > > &coeffs, Array< OneD, NekDouble > &outarray)
Definition: Expansion.cpp:140
void StdDerivBaseOnTraceMat(Array< OneD, DNekMatSharedPtr > &DerivMat)
Definition: Expansion.cpp:479
void ExtractDataToCoeffs(const NekDouble *data, const std::vector< unsigned int > &nummodes, const int nmodes_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType)
Definition: Expansion.cpp:110
virtual void v_MultiplyByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Definition: Expansion.cpp:424
ExpansionSharedPtr GetTraceExp(const int traceid)
Definition: Expansion.h:416
void SetPhysNormals(Array< OneD, const NekDouble > &normal)
Definition: Expansion.h:235
virtual void v_ReOrientTracePhysMap(const StdRegions::Orientation orient, Array< OneD, int > &idmap, const int nq0, const int nq1=-1)
Definition: Expansion.cpp:856
void ReOrientTracePhysMap(const StdRegions::Orientation orient, Array< OneD, int > &idmap, const int nq0, const int nq1)
Definition: Expansion.h:216
void NormalTraceDerivFactors(Array< OneD, Array< OneD, NekDouble > > &factors, Array< OneD, Array< OneD, NekDouble > > &d0factors, Array< OneD, Array< OneD, NekDouble > > &d1factors)
Definition: Expansion.cpp:154
virtual void v_ComputeLaplacianMetric()
Definition: Expansion.h:313
virtual int v_GetCoordim() const override
Definition: Expansion.h:317
virtual const Array< OneD, const NekDouble > & v_GetPhysNormals()
Definition: Expansion.cpp:878
virtual void v_ExtractDataToCoeffs(const NekDouble *data, const std::vector< unsigned int > &nummodes, const int nmodes_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType)
Definition: Expansion.cpp:752
ExpansionSharedPtr GetRightAdjacentElementExp() const
Definition: Expansion.h:449
virtual void v_AlignVectorToCollapsedDir(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Definition: Expansion.cpp:927
StdRegions::Orientation GetTraceOrient(int trace)
Definition: Expansion.h:170
virtual void v_AddEdgeNormBoundaryInt(const int edge, const std::shared_ptr< Expansion > &EdgeExp, const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray)
Definition: Expansion.cpp:761
IndexMapValuesSharedPtr GetIndexMap(const IndexMapKey &ikey)
Definition: Expansion.h:148
DNekScalMatSharedPtr GetLocMatrix(const LocalRegions::MatrixKey &mkey)
Definition: Expansion.cpp:88
virtual void v_SetUpPhysNormals(const int id)
Definition: Expansion.cpp:890
virtual void v_GetTracePhysMap(const int edge, Array< OneD, int > &outarray)
Definition: Expansion.cpp:849
Array< OneD, NekDouble > GetMFDiv(const int dir, const StdRegions::VarCoeffMap &varcoeffs)
Definition: Expansion.cpp:691
int GetRightAdjacentElementTrace() const
Definition: Expansion.h:461
void TraceNormLen(const int traceid, NekDouble &h, NekDouble &p)
Definition: Expansion.h:252
const NormalVector & GetTraceNormal(const int id)
Definition: Expansion.cpp:255
Array< OneD, NekDouble > GetMF(const int dir, const int shapedim, const StdRegions::VarCoeffMap &varcoeffs)
Definition: Expansion.cpp:638
virtual void v_GetTracePhysVals(const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient)
Definition: Expansion.cpp:839
Expansion(SpatialDomains::GeometrySharedPtr pGeom)
Definition: Expansion.cpp:47
LibUtilities::NekManager< IndexMapKey, IndexMapValues, IndexMapKey::opLess > m_indexMapManager
Definition: Expansion.h:272
void ComputeTraceNormal(const int id)
Definition: Expansion.h:225
void SetCoeffsToOrientation(StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Definition: Expansion.h:175
DNekMatSharedPtr BuildTransformationMatrix(const DNekScalMatSharedPtr &r_bnd, const StdRegions::MatrixType matrixType)
Definition: Expansion.cpp:99
NekDouble VectorFlux(const Array< OneD, Array< OneD, NekDouble > > &vec)
Definition: Expansion.cpp:149
The base class for all shapes.
Definition: StdExpansion.h:71
int GetNtraces() const
Returns the number of trace elements connected to this element.
Definition: StdExpansion.h:357
std::shared_ptr< Expansion > ExpansionSharedPtr
Definition: Expansion.h:68
std::shared_ptr< IndexMapValues > IndexMapValuesSharedPtr
Definition: IndexMapKey.h:128
std::weak_ptr< Expansion > ExpansionWeakPtr
Definition: Expansion.h:69
Array< OneD, Array< OneD, NekDouble > > NormalVector
Definition: Expansion.h:55
std::vector< ExpansionSharedPtr > ExpansionVector
Definition: Expansion.h:70
std::map< MetricType, Array< OneD, NekDouble > > MetricMap
Definition: Expansion.h:71
std::shared_ptr< GeomFactors > GeomFactorsSharedPtr
Pointer to a GeomFactors object.
Definition: GeomFactors.h:62
std::shared_ptr< Geometry > GeometrySharedPtr
Definition: Geometry.h:54
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
std::map< ConstFactorType, NekDouble > ConstFactorMap
Definition: StdRegions.hpp:408
static ConstFactorMap NullConstFactorMap
Definition: StdRegions.hpp:409
static VarCoeffMap NullVarCoeffMap
Definition: StdRegions.hpp:353
std::map< StdRegions::VarCoeffType, VarCoeffEntry > VarCoeffMap
Definition: StdRegions.hpp:352
StdRegions::ConstFactorMap factors
The above copyright notice and this permission notice shall be included.
Definition: CoupledSolver.h:2
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
Definition: NekTypeDefs.hpp:79
std::shared_ptr< DNekMat > DNekMatSharedPtr
Definition: NekTypeDefs.hpp:75
double NekDouble