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 <memory>
44 #include <vector>
45 #include <map>
46 
47 namespace Nektar
48 {
49  namespace LocalRegions
50  {
51 
52  class Expansion;
53  class MatrixKey;
54 
56 
58  {
66  };
67 
68  typedef std::shared_ptr<Expansion> ExpansionSharedPtr;
69  typedef std::weak_ptr<Expansion> ExpansionWeakPtr;
70  typedef std::vector< ExpansionSharedPtr > ExpansionVector;
71  typedef std::map<MetricType, Array<OneD, NekDouble> > MetricMap;
72 
73  class Expansion : virtual public StdRegions::StdExpansion
74  {
75  public:
77  LOCAL_REGIONS_EXPORT Expansion(const Expansion &pSrc); // copy constructor.
79 
80  LOCAL_REGIONS_EXPORT void SetTraceExp(const int traceid, ExpansionSharedPtr &f);
82 
85 
87  (const StdRegions::MatrixType mtype,
90 
92 
94 
96 
98 
100  const DNekScalMatSharedPtr &r_bnd,
101  const StdRegions::MatrixType matrixType);
102 
104  const DNekScalMatSharedPtr &r_bnd);
105 
107  const NekDouble *data,
108  const std::vector<unsigned int > &nummodes,
109  const int nmodes_offset,
110  NekDouble *coeffs,
111  std::vector<LibUtilities::BasisType> &fromType);
112 
114  const int edge,
115  const std::shared_ptr<Expansion> &EdgeExp,
118  Array<OneD, NekDouble> &outarray);
120  const int edge,
121  const std::shared_ptr<Expansion> &EdgeExp,
123  Array<OneD, NekDouble> &outarray);
125  const int face,
126  const std::shared_ptr<Expansion> &FaceExp,
128  Array<OneD, NekDouble> &outarray);
130  const int dir,
131  const Array<OneD, const NekDouble>& inarray,
133  Array<OneD, Array<OneD, NekDouble> > &coeffs,
134  Array<OneD, NekDouble> &outarray);
136  const Array<OneD, Array<OneD, NekDouble > > &vec);
137 
139  {
140  return m_indexMapManager[ikey];
141  }
142 
143 
145  const int dir,
146  const Array<OneD, const NekDouble> &inarray,
147  Array<OneD, Array<OneD, NekDouble> > &outarray)
148  {
149  v_AlignVectorToCollapsedDir(dir,inarray,outarray);
150  }
151 
153 
155 
156  inline int GetLeftAdjacentElementTrace() const;
157 
158  inline int GetRightAdjacentElementTrace() const;
159 
160  inline void SetAdjacentElementExp(
161  int traceid,
162  ExpansionSharedPtr &e);
163 
165  {
166  return v_GetTraceOrient(trace);
167  }
168 
172  Array<OneD, NekDouble> &outarray)
173  {
174  v_SetCoeffsToOrientation(dir,inarray,outarray);
175  }
176 
177  /// Divided by the metric jacobi and quadrature weights
179  const Array<OneD, const NekDouble> &inarray,
180  Array<OneD, NekDouble> &outarray)
181  {
182  v_DivideByQuadratureMetric(inarray, outarray);
183  }
184 
185  /**
186  * @brief Extract the metric factors to compute the contravariant
187  * fluxes along edge \a edge and stores them into \a outarray
188  * following the local edge orientation (i.e. anticlockwise
189  * convention).
190  */
191  inline void GetTraceQFactors(const int trace,
192  Array<OneD, NekDouble> &outarray)
193  {
194  v_GetTraceQFactors(trace, outarray);
195  }
196 
197  inline void GetTracePhysVals(const int trace,
198  const StdRegions::StdExpansionSharedPtr &TraceExp,
199  const Array<OneD, const NekDouble> &inarray,
200  Array<OneD, NekDouble> &outarray,
202  {
203  v_GetTracePhysVals(trace,TraceExp,inarray,outarray,orient);
204  }
205 
206  inline void GetTracePhysMap(
207  const int edge,
208  Array<OneD, int> &outarray)
209  {
210  v_GetTracePhysMap(edge, outarray);
211  }
212 
213  inline void ReOrientTracePhysMap(
214  const StdRegions::Orientation orient,
215  Array<OneD, int> &idmap,
216  const int nq0,
217  const int nq1)
218  {
219  v_ReOrientTracePhysMap(orient,idmap,nq0,nq1);
220  }
221 
222  inline const NormalVector &GetTraceNormal(const int id) const
223  {
224  return v_GetTraceNormal(id);
225  }
226 
227  inline void ComputeTraceNormal(const int id)
228  {
230  }
231 
233  {
234  return v_GetPhysNormals();
235  }
236 
238  {
239  v_SetPhysNormals(normal);
240  }
241 
242  inline void SetUpPhysNormals(const int trace)
243  {
244  v_SetUpPhysNormals(trace);
245  }
246 
247  inline void AddRobinMassMatrix(const int traceid,
248  const Array<OneD, const NekDouble > &primCoeffs,
249  DNekMatSharedPtr &inoutmat)
250  {
251  v_AddRobinMassMatrix(traceid,primCoeffs,inoutmat);
252  }
253 
254 
256  const int traceid,
257  const Array<OneD, const NekDouble> &primCoeffs,
258  const Array<OneD, NekDouble> &incoeffs,
259  Array<OneD, NekDouble> &coeffs)
260  {
261  v_AddRobinTraceContribution(traceid,primCoeffs,incoeffs,coeffs);
262  }
263 
265  &GetElmtBndNormDirElmtLen(const int nbnd) const;
266 
267  protected:
270 
271  std::vector<ExpansionWeakPtr> m_traceExp;
279 
280  /// the element length in each element boundary(Vertex, edge
281  /// or face) normal direction calculated based on the local
282  /// m_metricinfo times the standard element length (which is
283  /// 2.0)
284  std::map<int, Array<OneD, NekDouble>> m_elmtBndNormDirElmtLen;
285 
286  void ComputeLaplacianMetric();
289  const Array<OneD, const NekDouble> &direction,
290  Array<OneD, Array<OneD, NekDouble> > &dfdir);
291 
292  virtual void v_MultiplyByQuadratureMetric(
293  const Array<OneD, const NekDouble> &inarray,
294  Array<OneD, NekDouble> &outarray);
295 
296  virtual void v_DivideByQuadratureMetric(
297  const Array<OneD,
298  const NekDouble>& inarray,
299  Array<OneD, NekDouble> &outarray);
300 
302  {}
303 
304  virtual void v_GetCoords(Array<OneD,NekDouble> &coords_1,
305  Array<OneD,NekDouble> &coords_2,
306  Array<OneD,NekDouble> &coords_3);
307 
309  const int dir,
310  const int shapedim,
311  const StdRegions::VarCoeffMap &varcoeffs);
312 
314  const int dir,
315  const StdRegions::VarCoeffMap &varcoeffs);
316 
318  const int dir,
319  const StdRegions::VarCoeffMap &varcoeffs);
320 
322  const LocalRegions::MatrixKey &mkey);
323 
325  const DNekScalMatSharedPtr &r_bnd,
326  const StdRegions::MatrixType matrixType);
327 
329  const DNekScalMatSharedPtr &r_bnd);
330 
331  virtual void v_ExtractDataToCoeffs(
332  const NekDouble *data,
333  const std::vector<unsigned int > &nummodes,
334  const int nmodes_offset,
335  NekDouble *coeffs,
336  std::vector<LibUtilities::BasisType> &fromType);
337 
338  virtual void v_AddEdgeNormBoundaryInt(
339  const int edge,
340  const std::shared_ptr<Expansion> &EdgeExp,
343  Array<OneD, NekDouble> &outarray);
344  virtual void v_AddEdgeNormBoundaryInt(
345  const int edge,
346  const std::shared_ptr<Expansion> &EdgeExp,
348  Array<OneD, NekDouble> &outarray);
349  virtual void v_AddFaceNormBoundaryInt(
350  const int face,
351  const std::shared_ptr<Expansion> &FaceExp,
353  Array<OneD, NekDouble> &outarray);
354  virtual void v_DGDeriv(
355  const int dir,
356  const Array<OneD, const NekDouble>& inarray,
358  Array<OneD, Array<OneD, NekDouble> > &coeffs,
359  Array<OneD, NekDouble> &outarray);
360  virtual NekDouble v_VectorFlux(
361  const Array<OneD, Array<OneD, NekDouble > > &vec);
362 
363  virtual void v_AlignVectorToCollapsedDir
364  (const int dir,
365  const Array<OneD, const NekDouble> &inarray,
366  Array<OneD, Array<OneD, NekDouble> > &outarray);
367 
368  virtual StdRegions::Orientation v_GetTraceOrient(int trace);
369 
372  Array<OneD, NekDouble> &outarray);
373 
374  virtual void v_GetTraceQFactors(const int trace,
375  Array<OneD, NekDouble> &outarray);
376 
377  virtual void v_GetTracePhysVals(const int trace,
378  const StdRegions::StdExpansionSharedPtr &TraceExp,
379  const Array<OneD, const NekDouble> &inarray,
380  Array<OneD, NekDouble> &outarray,
381  StdRegions::Orientation orient);
382 
383  virtual void v_GetTracePhysMap( const int edge,
384  Array<OneD,int> &outarray);
385 
386  virtual void v_ReOrientTracePhysMap(
387  const StdRegions::Orientation orient,
388  Array<OneD, int> &idmap,
389  const int nq0,
390  const int nq1 = -1);
391 
392  virtual const NormalVector & v_GetTraceNormal(const int id) const;
393 
394  virtual void v_ComputeTraceNormal(const int id);
395 
396  virtual const Array<OneD, const NekDouble>& v_GetPhysNormals(void);
397 
398  virtual void v_SetPhysNormals(Array<OneD, const NekDouble> &normal);
399 
400  virtual void v_SetUpPhysNormals(const int id);
401 
402  virtual void v_AddRobinMassMatrix(
403  const int face,
404  const Array<OneD, const NekDouble> &primCoeffs,
405  DNekMatSharedPtr &inoutmat);
406 
407  virtual void v_AddRobinTraceContribution(
408  const int traceid,
409  const Array<OneD, const NekDouble> &primCoeffs,
410  const Array<OneD, NekDouble> &incoeffs,
411  Array<OneD, NekDouble> &coeffs);
412 
413  private:
414 
415  };
416 
418  {
419  ASSERTL1(traceid < GetNtraces(), "Trace is out of range.");
420  return m_traceExp[traceid].lock();
421  }
422 
424  const int traceid,
425  ExpansionSharedPtr &exp)
426  {
427  int nTraces = GetNtraces();
428  ASSERTL1(traceid < nTraces, "Edge out of range.");
429  if (m_traceExp.size() < nTraces)
430  {
431  m_traceExp.resize(nTraces);
432  }
433 
434  m_traceExp[traceid] = exp;
435  }
436 
439  {
440  ASSERTL1(m_elementLeft.lock().get(),
441  "Left adjacent element not set.");
442  return m_elementLeft.lock();
443  }
444 
447  {
448  ASSERTL1(m_elementLeft.lock().get(),
449  "Right adjacent element not set.");
450 
451  return m_elementRight.lock();
452  }
453 
455  {
456  return m_elementTraceLeft;
457  }
458 
460  {
461  return m_elementTraceRight;
462  }
463 
465  int traceid,
466  ExpansionSharedPtr &exp)
467  {
468  if (m_elementLeft.lock().get())
469  {
470  m_elementRight = exp;
471  m_elementTraceRight = traceid;
472  }
473  else
474  {
475  m_elementLeft = exp;
476  m_elementTraceLeft = traceid;
477  }
478  }
479 
480 
481 
482  } //end of namespace
483 } //end of namespace
484 
485 #endif
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
Definition: ErrorUtil.hpp:250
#define LOCAL_REGIONS_EXPORT
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:284
virtual void v_SetPhysNormals(Array< OneD, const NekDouble > &normal)
Definition: Expansion.cpp:715
SpatialDomains::GeometrySharedPtr GetGeom() const
Definition: Expansion.cpp:172
void SetTraceExp(const int traceid, ExpansionSharedPtr &f)
Definition: Expansion.h:423
IndexMapValuesSharedPtr CreateIndexMap(const IndexMapKey &ikey)
Definition: Expansion.cpp:186
SpatialDomains::GeometrySharedPtr m_geom
Definition: Expansion.h:272
std::vector< ExpansionWeakPtr > m_traceExp
Definition: Expansion.h:271
Array< OneD, NekDouble > v_GetMF(const int dir, const int shapedim, const StdRegions::VarCoeffMap &varcoeffs)
Definition: Expansion.cpp:434
void GetTracePhysMap(const int edge, Array< OneD, int > &outarray)
Definition: Expansion.h:206
const SpatialDomains::GeomFactorsSharedPtr & GetMetricInfo() const
Definition: Expansion.cpp:251
ExpansionSharedPtr GetLeftAdjacentElementExp() const
Definition: Expansion.h:438
const NormalVector & GetTraceNormal(const int id) const
Definition: Expansion.h:222
DNekMatSharedPtr BuildVertexMatrix(const DNekScalMatSharedPtr &r_bnd)
Definition: Expansion.cpp:103
virtual void v_DivideByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Definition: Expansion.cpp:277
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:736
ExpansionWeakPtr m_elementRight
Definition: Expansion.h:276
void AlignVectorToCollapsedDir(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Definition: Expansion.h:144
void ComputeGmatcdotMF(const Array< TwoD, const NekDouble > &df, const Array< OneD, const NekDouble > &direction, Array< OneD, Array< OneD, NekDouble > > &dfdir)
Definition: Expansion.cpp:399
virtual void v_GetTraceQFactors(const int trace, Array< OneD, NekDouble > &outarray)
Definition: Expansion.cpp:656
virtual void v_ComputeTraceNormal(const int id)
Definition: Expansion.cpp:702
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:191
void SetUpPhysNormals(const int trace)
Definition: Expansion.h:242
void SetAdjacentElementExp(int traceid, ExpansionSharedPtr &e)
Definition: Expansion.h:464
virtual DNekMatSharedPtr v_BuildVertexMatrix(const DNekScalMatSharedPtr &r_bnd)
Definition: Expansion.cpp:572
virtual void v_SetCoeffsToOrientation(StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Definition: Expansion.cpp:648
virtual DNekScalMatSharedPtr v_GetLocMatrix(const LocalRegions::MatrixKey &mkey)
Definition: Expansion.cpp:257
int GetLeftAdjacentElementTrace() const
Definition: Expansion.h:454
void DivideByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Divided by the metric jacobi and quadrature weights.
Definition: Expansion.h:178
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:197
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:613
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:623
Array< OneD, NekDouble > v_GetMFMag(const int dir, const StdRegions::VarCoeffMap &varcoeffs)
Definition: Expansion.cpp:531
virtual DNekMatSharedPtr v_BuildTransformationMatrix(const DNekScalMatSharedPtr &r_bnd, const StdRegions::MatrixType matrixType)
Definition: Expansion.cpp:563
const Array< OneD, const NekDouble > & GetElmtBndNormDirElmtLen(const int nbnd) const
Definition: Expansion.cpp:747
virtual void v_AddRobinMassMatrix(const int face, const Array< OneD, const NekDouble > &primCoeffs, DNekMatSharedPtr &inoutmat)
Definition: Expansion.cpp:727
Array< OneD, NekDouble > v_GetMFDiv(const int dir, const StdRegions::VarCoeffMap &varcoeffs)
Definition: Expansion.cpp:498
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:120
ExpansionWeakPtr m_elementLeft
Definition: Expansion.h:275
void AddFaceNormBoundaryInt(const int face, const std::shared_ptr< Expansion > &FaceExp, const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
Definition: Expansion.cpp:139
void AddRobinMassMatrix(const int traceid, const Array< OneD, const NekDouble > &primCoeffs, DNekMatSharedPtr &inoutmat)
Definition: Expansion.h:247
virtual NekDouble v_VectorFlux(const Array< OneD, Array< OneD, NekDouble > > &vec)
Definition: Expansion.cpp:634
virtual const Array< OneD, const NekDouble > & v_GetPhysNormals(void)
Definition: Expansion.cpp:708
SpatialDomains::GeomFactorsSharedPtr m_metricinfo
Definition: Expansion.h:273
virtual StdRegions::Orientation v_GetTraceOrient(int trace)
Definition: Expansion.cpp:642
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:148
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
ExpansionSharedPtr GetTraceExp(const int traceid)
Definition: Expansion.h:417
void SetPhysNormals(Array< OneD, const NekDouble > &normal)
Definition: Expansion.h:237
virtual void v_ReOrientTracePhysMap(const StdRegions::Orientation orient, Array< OneD, int > &idmap, const int nq0, const int nq1=-1)
Definition: Expansion.cpp:684
void ReOrientTracePhysMap(const StdRegions::Orientation orient, Array< OneD, int > &idmap, const int nq0, const int nq1)
Definition: Expansion.h:213
virtual void v_MultiplyByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Definition: Expansion.cpp:264
virtual void v_ComputeLaplacianMetric()
Definition: Expansion.h:301
virtual void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3)
Definition: Expansion.cpp:318
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:580
ExpansionSharedPtr GetRightAdjacentElementExp() const
Definition: Expansion.h:446
virtual void v_AlignVectorToCollapsedDir(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Definition: Expansion.cpp:755
StdRegions::Orientation GetTraceOrient(int trace)
Definition: Expansion.h:164
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:592
IndexMapValuesSharedPtr GetIndexMap(const IndexMapKey &ikey)
Definition: Expansion.h:138
DNekScalMatSharedPtr GetLocMatrix(const LocalRegions::MatrixKey &mkey)
Definition: Expansion.cpp:90
virtual void v_SetUpPhysNormals(const int id)
Definition: Expansion.cpp:721
virtual void v_GetTracePhysMap(const int edge, Array< OneD, int > &outarray)
Definition: Expansion.cpp:676
virtual const NormalVector & v_GetTraceNormal(const int id) const
Definition: Expansion.cpp:694
virtual void AddRobinTraceContribution(const int traceid, const Array< OneD, const NekDouble > &primCoeffs, const Array< OneD, NekDouble > &incoeffs, Array< OneD, NekDouble > &coeffs)
Definition: Expansion.h:255
int GetRightAdjacentElementTrace() const
Definition: Expansion.h:459
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:665
Expansion(SpatialDomains::GeometrySharedPtr pGeom)
Definition: Expansion.cpp:47
LibUtilities::NekManager< IndexMapKey, IndexMapValues, IndexMapKey::opLess > m_indexMapManager
Definition: Expansion.h:269
void ComputeTraceNormal(const int id)
Definition: Expansion.h:227
void SetCoeffsToOrientation(StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Definition: Expansion.h:169
DNekMatSharedPtr BuildTransformationMatrix(const DNekScalMatSharedPtr &r_bnd, const StdRegions::MatrixType matrixType)
Definition: Expansion.cpp:95
NekDouble VectorFlux(const Array< OneD, Array< OneD, NekDouble > > &vec)
Definition: Expansion.cpp:158
const Array< OneD, const NekDouble > & GetPhysNormals(void)
Definition: Expansion.h:232
The base class for all shapes.
Definition: StdExpansion.h:63
int GetNtraces() const
Returns the number of trace elements connected to this element.
Definition: StdExpansion.h:360
std::shared_ptr< Expansion > ExpansionSharedPtr
Definition: Expansion.h:68
Array< OneD, IndexValue > IndexMapValues
Definition: IndexMapKey.h:55
std::shared_ptr< IndexMapValues > IndexMapValuesSharedPtr
Definition: IndexMapKey.h:126
std::weak_ptr< Expansion > ExpansionWeakPtr
Definition: Expansion.h:69
std::vector< ExpansionSharedPtr > ExpansionVector
Definition: Expansion.h:70
Array< OneD, Array< OneD, NekDouble > > NormalVector
Definition: Expansion.h:53
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:53
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
std::map< StdRegions::VarCoeffType, Array< OneD, NekDouble > > VarCoeffMap
Definition: StdRegions.hpp:272
std::map< ConstFactorType, NekDouble > ConstFactorMap
Definition: StdRegions.hpp:314
static ConstFactorMap NullConstFactorMap
Definition: StdRegions.hpp:315
static VarCoeffMap NullVarCoeffMap
Definition: StdRegions.hpp:273
The above copyright notice and this permission notice shall be included.
Definition: CoupledSolver.h:1
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekMat > DNekMatSharedPtr
Definition: NekTypeDefs.hpp:69
double NekDouble