Nektar++
Loading...
Searching...
No Matches
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
48{
49
50class Expansion;
51class MatrixKey;
52
54
65
66typedef std::shared_ptr<Expansion> ExpansionSharedPtr;
67typedef std::weak_ptr<Expansion> ExpansionWeakPtr;
68typedef std::vector<ExpansionSharedPtr> ExpansionVector;
69typedef std::map<MetricType, Array<OneD, NekDouble>> MetricMap;
70
71class Expansion : virtual public StdRegions::StdExpansion
72{
73public:
75 SpatialDomains::Geometry *pGeom); // default constructor.
76 LOCAL_REGIONS_EXPORT Expansion(const Expansion &pSrc); // copy constructor.
78
79 LOCAL_REGIONS_EXPORT void SetTraceExp(const int traceid,
82
85
87 const LocalRegions::MatrixKey &mkey);
88
90 const StdRegions::MatrixType mtype,
91 const StdRegions::ConstFactorMap &factors =
94
96
98
100 CreateIndexMap(const IndexMapKey &ikey);
101
104
106 const;
107
110 const StdRegions::MatrixType matrixType);
111
114
116 const NekDouble *data, const std::vector<unsigned int> &nummodes,
117 const int nmodes_offset, NekDouble *coeffs,
118 std::vector<LibUtilities::BasisType> &fromType);
119
121 const int edge, const std::shared_ptr<Expansion> &EdgeExp,
124 Array<OneD, NekDouble> &outarray);
126 const int edge, const std::shared_ptr<Expansion> &EdgeExp,
128 Array<OneD, NekDouble> &outarray);
130 const int face, const std::shared_ptr<Expansion> &FaceExp,
132 Array<OneD, NekDouble> &outarray);
134 const int dir, const Array<OneD, const NekDouble> &inarray,
137 Array<OneD, NekDouble> &outarray);
140
143 Array<OneD, Array<OneD, NekDouble>> &d0factors,
144 Array<OneD, Array<OneD, NekDouble>> &d1factors);
145
147 {
148 return m_indexMapManager[ikey];
149 }
150
152 const int dir, const Array<OneD, const NekDouble> &inarray,
154 {
155 v_AlignVectorToCollapsedDir(dir, inarray, outarray);
156 }
157
159
161
162 inline int GetLeftAdjacentElementTrace() const;
163
164 inline int GetRightAdjacentElementTrace() const;
165
166 inline void SetAdjacentElementExp(int traceid, ExpansionSharedPtr &e);
167
169 {
170 return v_GetTraceOrient(trace);
171 }
172
175 Array<OneD, NekDouble> &outarray)
176 {
177 v_SetCoeffsToOrientation(dir, inarray, outarray);
178 }
179
180 /// Divided by the metric jacobi and quadrature weights
182 const Array<OneD, const NekDouble> &inarray,
183 Array<OneD, NekDouble> &outarray)
184 {
185 v_DivideByQuadratureMetric(inarray, outarray);
186 }
187
188 /**
189 * @brief Extract the metric factors to compute the contravariant
190 * fluxes along edge \a edge and stores them into \a outarray
191 * following the local edge orientation (i.e. anticlockwise
192 * convention).
193 */
194 inline void GetTraceQFactors(const int trace,
195 Array<OneD, NekDouble> &outarray)
196 {
197 v_GetTraceQFactors(trace, outarray);
198 }
199
200 inline void GetTracePhysVals(
201 const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp,
202 const Array<OneD, const NekDouble> &inarray,
203 Array<OneD, NekDouble> &outarray,
205 {
206 v_GetTracePhysVals(trace, TraceExp, inarray, outarray, orient);
207 }
208
209 inline void GetTracePhysMap(const int edge, Array<OneD, int> &outarray)
210 {
211 v_GetTracePhysMap(edge, outarray);
212 }
213
215 Array<OneD, int> &idmap, const int nq0,
216 const int nq1)
217 {
218 v_ReOrientTracePhysMap(orient, idmap, nq0, nq1);
219 }
220
222
223 inline void ComputeTraceNormal(const int id)
224 {
226 }
227
229 {
230 return v_GetPhysNormals();
231 }
232
234 {
235 v_SetPhysNormals(normal);
236 }
237
238 inline void SetUpPhysNormals(const int trace)
239 {
240 v_SetUpPhysNormals(trace);
241 }
242
244 const int traceid, const Array<OneD, const NekDouble> &primCoeffs,
245 DNekMatSharedPtr &inoutmat)
246 {
247 v_AddRobinMassMatrix(traceid, primCoeffs, inoutmat);
248 }
249
250 inline void TraceNormLen(const int traceid, NekDouble &h, NekDouble &p)
251 {
252 v_TraceNormLen(traceid, h, p);
253 }
254
256 const int traceid, const Array<OneD, const NekDouble> &primCoeffs,
257 const Array<OneD, NekDouble> &incoeffs, Array<OneD, NekDouble> &coeffs)
258 {
259 v_AddRobinTraceContribution(traceid, primCoeffs, incoeffs, coeffs);
260 }
261
263 GetElmtBndNormDirElmtLen(const int nbnd) const;
264
267
269 const int traceid, Array<OneD, DNekMatSharedPtr> &DerivMat);
270
271 LOCAL_REGIONS_EXPORT void PhysBaseOnTraceMat(const int traceid,
272 DNekMatSharedPtr &BdataMat);
273
274protected:
277
278 std::map<int, ExpansionWeakPtr> m_traceExp;
282 std::map<int, NormalVector> m_traceNormals;
287
288 /// the element length in each element boundary(Vertex, edge
289 /// or face) normal direction calculated based on the local
290 /// m_metricinfo times the standard element length (which is
291 /// 2.0)
292 std::map<int, Array<OneD, NekDouble>> m_elmtBndNormDirElmtLen;
293
297 const Array<OneD, const NekDouble> &direction,
299
300 Array<OneD, NekDouble> GetMF(const int dir, const int shapedim,
301 const StdRegions::VarCoeffMap &varcoeffs);
302
303 Array<OneD, NekDouble> GetMFDiv(const int dir,
304 const StdRegions::VarCoeffMap &varcoeffs);
305
306 Array<OneD, NekDouble> GetMFMag(const int dir,
307 const StdRegions::VarCoeffMap &varcoeffs);
308
310 const Array<OneD, const NekDouble> &inarray,
311 Array<OneD, NekDouble> &outarray) override;
312
313 virtual void v_DivideByQuadratureMetric(
314 const Array<OneD, const NekDouble> &inarray,
315 Array<OneD, NekDouble> &outarray);
316
318 {
319 }
320
321 int v_GetCoordim() const override
322 {
323 return m_geom->GetCoordim();
324 }
325
326 void v_GetCoords(Array<OneD, NekDouble> &coords_1,
327 Array<OneD, NekDouble> &coords_2,
328 Array<OneD, NekDouble> &coords_3) override;
329
331 const LocalRegions::MatrixKey &mkey);
332
333 virtual void v_DropLocMatrix(const LocalRegions::MatrixKey &mkey);
334
336 const DNekScalMatSharedPtr &r_bnd,
337 const StdRegions::MatrixType matrixType);
338
340 const DNekScalMatSharedPtr &r_bnd);
341
342 virtual void v_ExtractDataToCoeffs(
343 const NekDouble *data, const std::vector<unsigned int> &nummodes,
344 const int nmodes_offset, NekDouble *coeffs,
345 std::vector<LibUtilities::BasisType> &fromType);
346
347 virtual void v_AddEdgeNormBoundaryInt(
348 const int edge, const std::shared_ptr<Expansion> &EdgeExp,
351 Array<OneD, NekDouble> &outarray);
352 virtual void v_AddEdgeNormBoundaryInt(
353 const int edge, const std::shared_ptr<Expansion> &EdgeExp,
355 Array<OneD, NekDouble> &outarray);
356 virtual void v_AddFaceNormBoundaryInt(
357 const int face, const std::shared_ptr<Expansion> &FaceExp,
359 Array<OneD, NekDouble> &outarray);
360 virtual void v_DGDeriv(const int dir,
361 const Array<OneD, const NekDouble> &inarray,
364 Array<OneD, NekDouble> &outarray);
365 virtual NekDouble v_VectorFlux(
366 const Array<OneD, Array<OneD, NekDouble>> &vec);
367
368 virtual void v_NormalTraceDerivFactors(
370 Array<OneD, Array<OneD, NekDouble>> &d0factors,
371 Array<OneD, Array<OneD, NekDouble>> &d1factors);
372
373 virtual void v_AlignVectorToCollapsedDir(
374 const int dir, const Array<OneD, const NekDouble> &inarray,
375 Array<OneD, Array<OneD, NekDouble>> &outarray);
376
377 virtual StdRegions::Orientation v_GetTraceOrient(int trace);
378
381 Array<OneD, NekDouble> &outarray) override;
382
383 virtual void v_GetTraceQFactors(const int trace,
384 Array<OneD, NekDouble> &outarray);
385
386 virtual void v_GetTracePhysVals(
387 const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp,
388 const Array<OneD, const NekDouble> &inarray,
390
391 virtual void v_GetTracePhysMap(const int edge, Array<OneD, int> &outarray);
392
393 virtual void v_ReOrientTracePhysMap(const StdRegions::Orientation orient,
394 Array<OneD, int> &idmap, const int nq0,
395 const int nq1 = -1);
396
397 virtual void v_ComputeTraceNormal(const int id);
398
400
402
403 virtual void v_SetUpPhysNormals(const int id);
404
405 virtual void v_AddRobinMassMatrix(
406 const int face, const Array<OneD, const NekDouble> &primCoeffs,
407 DNekMatSharedPtr &inoutmat);
408
409 virtual void v_AddRobinTraceContribution(
410 const int traceid, const Array<OneD, const NekDouble> &primCoeffs,
411 const Array<OneD, NekDouble> &incoeffs, Array<OneD, NekDouble> &coeffs);
412
413 virtual void v_TraceNormLen(const int traceid, NekDouble &h, NekDouble &p);
414
415 virtual void v_GenTraceExp(const int traceid, ExpansionSharedPtr &exp);
416
417private:
418};
419
421{
422 ASSERTL1(traceid < GetNtraces(), "Trace is out of range.");
423
424 ExpansionSharedPtr returnval;
425
426 if (m_traceExp.count(traceid))
427 {
428 // Use stored value
429 returnval = m_traceExp[traceid].lock();
430 }
431 else
432 {
433 // Generate trace exp
434 v_GenTraceExp(traceid, returnval);
435 }
436
437 return returnval;
438}
439
440inline void Expansion::SetTraceExp(const int traceid, ExpansionSharedPtr &exp)
441{
442 ASSERTL1(traceid < GetNtraces(), "Trace out of range.");
443
444 m_traceExp[traceid] = exp;
445}
446
448{
449 ASSERTL1(m_elementLeft.lock().get(), "Left adjacent element not set.");
450 return m_elementLeft.lock();
451}
452
454{
455 ASSERTL1(m_elementLeft.lock().get(), "Right adjacent element not set.");
456
457 return m_elementRight.lock();
458}
459
461{
462 return m_elementTraceLeft;
463}
464
466{
467 return m_elementTraceRight;
468}
469
470inline void Expansion::SetAdjacentElementExp(int traceid,
472{
473 if (m_elementLeft.lock().get())
474 {
475 m_elementRight = exp;
476 m_elementTraceRight = traceid;
477 }
478 else
479 {
480 m_elementLeft = exp;
481 m_elementTraceLeft = traceid;
482 }
483}
484
485void GetTraceQuadRange(const LibUtilities::ShapeType shapeType,
486 const LibUtilities::BasisKeyVector &bkeys, int traceid,
487 std::vector<int> &q_begin, std::vector<int> &q_end);
488
489} // namespace Nektar::LocalRegions
490
491#endif
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
#define LOCAL_REGIONS_EXPORT
std::map< int, NormalVector > m_traceNormals
Definition Expansion.h:282
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:292
virtual void v_SetPhysNormals(Array< OneD, const NekDouble > &normal)
void SetTraceExp(const int traceid, ExpansionSharedPtr &f)
Definition Expansion.h:440
virtual void v_TraceNormLen(const int traceid, NekDouble &h, NekDouble &p)
IndexMapValuesSharedPtr CreateIndexMap(const IndexMapKey &ikey)
void AddRobinTraceContribution(const int traceid, const Array< OneD, const NekDouble > &primCoeffs, const Array< OneD, NekDouble > &incoeffs, Array< OneD, NekDouble > &coeffs)
Definition Expansion.h:255
void GetTracePhysMap(const int edge, Array< OneD, int > &outarray)
Definition Expansion.h:209
void DropLocMatrix(const LocalRegions::MatrixKey &mkey)
Definition Expansion.cpp:90
const SpatialDomains::GeomFactorsSharedPtr & GetMetricInfo() const
SpatialDomains::Geometry * GetGeom() const
ExpansionSharedPtr GetLeftAdjacentElementExp() const
Definition Expansion.h:447
DNekMatSharedPtr BuildVertexMatrix(const DNekScalMatSharedPtr &r_bnd)
virtual void v_DivideByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_GenTraceExp(const int traceid, ExpansionSharedPtr &exp)
void v_SetCoeffsToOrientation(StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
SpatialDomains::Geometry * m_geom
Definition Expansion.h:279
virtual void v_AddRobinTraceContribution(const int traceid, const Array< OneD, const NekDouble > &primCoeffs, const Array< OneD, NekDouble > &incoeffs, Array< OneD, NekDouble > &coeffs)
ExpansionWeakPtr m_elementRight
Definition Expansion.h:284
void PhysDerivBaseOnTraceMat(const int traceid, Array< OneD, DNekMatSharedPtr > &DerivMat)
void AlignVectorToCollapsedDir(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Definition Expansion.h:151
void ComputeGmatcdotMF(const Array< TwoD, const NekDouble > &df, const Array< OneD, const NekDouble > &direction, Array< OneD, Array< OneD, NekDouble > > &dfdir)
virtual void v_GetTraceQFactors(const int trace, Array< OneD, NekDouble > &outarray)
virtual void v_ComputeTraceNormal(const int id)
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:194
DNekScalBlkMatSharedPtr CreateStaticCondMatrix(const MatrixKey &mkey)
void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3) override
Array< OneD, NekDouble > GetMFMag(const int dir, const StdRegions::VarCoeffMap &varcoeffs)
void SetUpPhysNormals(const int trace)
Definition Expansion.h:238
void SetAdjacentElementExp(int traceid, ExpansionSharedPtr &e)
Definition Expansion.h:470
virtual DNekMatSharedPtr v_BuildVertexMatrix(const DNekScalMatSharedPtr &r_bnd)
const Array< OneD, const NekDouble > & GetPhysNormals(void)
Definition Expansion.h:228
virtual DNekScalMatSharedPtr v_GetLocMatrix(const LocalRegions::MatrixKey &mkey)
int GetLeftAdjacentElementTrace() const
Definition Expansion.h:460
void DivideByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Divided by the metric jacobi and quadrature weights.
Definition Expansion.h:181
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:200
virtual void v_AddFaceNormBoundaryInt(const int face, const std::shared_ptr< Expansion > &FaceExp, const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
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)
virtual DNekMatSharedPtr v_BuildTransformationMatrix(const DNekScalMatSharedPtr &r_bnd, const StdRegions::MatrixType matrixType)
const Array< OneD, const NekDouble > & GetElmtBndNormDirElmtLen(const int nbnd) const
virtual void v_AddRobinMassMatrix(const int face, const Array< OneD, const NekDouble > &primCoeffs, DNekMatSharedPtr &inoutmat)
std::map< int, ExpansionWeakPtr > m_traceExp
Definition Expansion.h:278
virtual void v_NormalTraceDerivFactors(Array< OneD, Array< OneD, NekDouble > > &factors, Array< OneD, Array< OneD, NekDouble > > &d0factors, Array< OneD, Array< OneD, NekDouble > > &d1factors)
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)
ExpansionWeakPtr m_elementLeft
Definition Expansion.h:283
void AddFaceNormBoundaryInt(const int face, const std::shared_ptr< Expansion > &FaceExp, const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
virtual void v_DropLocMatrix(const LocalRegions::MatrixKey &mkey)
void AddRobinMassMatrix(const int traceid, const Array< OneD, const NekDouble > &primCoeffs, DNekMatSharedPtr &inoutmat)
Definition Expansion.h:243
void PhysBaseOnTraceMat(const int traceid, DNekMatSharedPtr &BdataMat)
virtual NekDouble v_VectorFlux(const Array< OneD, Array< OneD, NekDouble > > &vec)
int v_GetCoordim() const override
Definition Expansion.h:321
SpatialDomains::GeomFactorsSharedPtr m_metricinfo
Definition Expansion.h:280
virtual StdRegions::Orientation v_GetTraceOrient(int trace)
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)
void StdDerivBaseOnTraceMat(Array< OneD, DNekMatSharedPtr > &DerivMat)
void ExtractDataToCoeffs(const NekDouble *data, const std::vector< unsigned int > &nummodes, const int nmodes_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType)
void v_MultiplyByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
ExpansionSharedPtr GetTraceExp(const int traceid)
Definition Expansion.h:420
void SetPhysNormals(Array< OneD, const NekDouble > &normal)
Definition Expansion.h:233
virtual void v_ReOrientTracePhysMap(const StdRegions::Orientation orient, Array< OneD, int > &idmap, const int nq0, const int nq1=-1)
void ReOrientTracePhysMap(const StdRegions::Orientation orient, Array< OneD, int > &idmap, const int nq0, const int nq1)
Definition Expansion.h:214
void NormalTraceDerivFactors(Array< OneD, Array< OneD, NekDouble > > &factors, Array< OneD, Array< OneD, NekDouble > > &d0factors, Array< OneD, Array< OneD, NekDouble > > &d1factors)
virtual void v_ComputeLaplacianMetric()
Definition Expansion.h:317
virtual const Array< OneD, const NekDouble > & v_GetPhysNormals()
virtual void v_ExtractDataToCoeffs(const NekDouble *data, const std::vector< unsigned int > &nummodes, const int nmodes_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType)
ExpansionSharedPtr GetRightAdjacentElementExp() const
Definition Expansion.h:453
virtual void v_AlignVectorToCollapsedDir(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
StdRegions::Orientation GetTraceOrient(int trace)
Definition Expansion.h:168
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)
IndexMapValuesSharedPtr GetIndexMap(const IndexMapKey &ikey)
Definition Expansion.h:146
DNekScalMatSharedPtr GetLocMatrix(const LocalRegions::MatrixKey &mkey)
Definition Expansion.cpp:84
virtual void v_SetUpPhysNormals(const int id)
virtual void v_GetTracePhysMap(const int edge, Array< OneD, int > &outarray)
Array< OneD, NekDouble > GetMFDiv(const int dir, const StdRegions::VarCoeffMap &varcoeffs)
int GetRightAdjacentElementTrace() const
Definition Expansion.h:465
void TraceNormLen(const int traceid, NekDouble &h, NekDouble &p)
Definition Expansion.h:250
const NormalVector & GetTraceNormal(const int id)
Array< OneD, NekDouble > GetMF(const int dir, const int shapedim, const StdRegions::VarCoeffMap &varcoeffs)
virtual void v_GetTracePhysVals(const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient)
LibUtilities::NekManager< IndexMapKey, IndexMapValues, IndexMapKey::opLess > m_indexMapManager
Definition Expansion.h:276
void ComputeTraceNormal(const int id)
Definition Expansion.h:223
void SetCoeffsToOrientation(StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Definition Expansion.h:173
DNekMatSharedPtr BuildTransformationMatrix(const DNekScalMatSharedPtr &r_bnd, const StdRegions::MatrixType matrixType)
Definition Expansion.cpp:95
NekDouble VectorFlux(const Array< OneD, Array< OneD, NekDouble > > &vec)
Base class for shape geometry information.
Definition Geometry.h:74
int GetCoordim() const
Return the coordinate dimension of this object (i.e. the dimension of the space in which this object ...
Definition Geometry.h:279
The base class for all shapes.
int GetNtraces() const
Returns the number of trace elements connected to this element.
std::vector< BasisKey > BasisKeyVector
Name for a vector of BasisKeys.
std::shared_ptr< Expansion > ExpansionSharedPtr
Definition Expansion.h:66
std::shared_ptr< IndexMapValues > IndexMapValuesSharedPtr
std::weak_ptr< Expansion > ExpansionWeakPtr
Definition Expansion.h:67
void GetTraceQuadRange(const LibUtilities::ShapeType shapeType, const LibUtilities::BasisKeyVector &bkeys, int traceid, std::vector< int > &q_begin, std::vector< int > &q_end)
Array< OneD, Array< OneD, NekDouble > > NormalVector
Definition Expansion.h:53
std::vector< ExpansionSharedPtr > ExpansionVector
Definition Expansion.h:68
std::map< MetricType, Array< OneD, NekDouble > > MetricMap
Definition Expansion.h:69
std::shared_ptr< GeomFactors > GeomFactorsSharedPtr
Pointer to a GeomFactors object.
Definition GeomFactors.h:58
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
std::map< ConstFactorType, NekDouble > ConstFactorMap
static ConstFactorMap NullConstFactorMap
static VarCoeffMap NullVarCoeffMap
std::map< StdRegions::VarCoeffType, VarCoeffEntry > VarCoeffMap
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
std::shared_ptr< DNekMat > DNekMatSharedPtr