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 
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  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,
93  const StdRegions::ConstFactorMap &factors =
96 
98 
100 
102  CreateIndexMap(const IndexMapKey &ikey);
103 
105  CreateStaticCondMatrix(const MatrixKey &mkey);
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 
144  Array<OneD, Array<OneD, NekDouble>> &factors,
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,
155  Array<OneD, Array<OneD, NekDouble>> &outarray)
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 
223  LOCAL_REGIONS_EXPORT const NormalVector &GetTraceNormal(const int id);
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 
245  inline void AddRobinMassMatrix(
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 
270 protected:
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 
290  void ComputeLaplacianMetric();
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(
365  Array<OneD, Array<OneD, NekDouble>> &factors,
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 
397  virtual void v_SetPhysNormals(Array<OneD, const NekDouble> &normal);
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 
413 private:
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 
436 inline 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 
466 inline void Expansion::SetAdjacentElementExp(int traceid,
467  ExpansionSharedPtr &exp)
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
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_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
NekDouble VectorFlux(const Array< OneD, Array< OneD, NekDouble >> &vec)
Definition: Expansion.cpp:149
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
virtual void v_AlignVectorToCollapsedDir(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble >> &outarray)
Definition: Expansion.cpp:927
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
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
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
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
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 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
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
virtual NekDouble v_VectorFlux(const Array< OneD, Array< OneD, NekDouble >> &vec)
Definition: Expansion.cpp:796
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
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
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
SpatialDomains::GeomFactorsSharedPtr m_metricinfo
Definition: Expansion.h:276
virtual StdRegions::Orientation v_GetTraceOrient(int trace)
Definition: Expansion.cpp:817
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
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
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_NormalTraceDerivFactors(Array< OneD, Array< OneD, NekDouble >> &factors, Array< OneD, Array< OneD, NekDouble >> &d0factors, Array< OneD, Array< OneD, NekDouble >> &d1factors)
Definition: Expansion.cpp:806
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
void AlignVectorToCollapsedDir(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble >> &outarray)
Definition: Expansion.h:153
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
const Array< OneD, const NekDouble > & GetPhysNormals(void)
Definition: Expansion.h:230
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:53
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:53
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
std::map< ConstFactorType, NekDouble > ConstFactorMap
Definition: StdRegions.hpp:399
static ConstFactorMap NullConstFactorMap
Definition: StdRegions.hpp:400
static VarCoeffMap NullVarCoeffMap
Definition: StdRegions.hpp:344
std::map< StdRegions::VarCoeffType, VarCoeffEntry > VarCoeffMap
Definition: StdRegions.hpp:343
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