Nektar++
Loading...
Searching...
No Matches
LocTraceToTraceMap.h
Go to the documentation of this file.
1///////////////////////////////////////////////////////////////////////////////
2//
3// File: LocTraceToTraceMap.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: Local Trace to general trace map information
32//
33///////////////////////////////////////////////////////////////////////////////
34
35#ifndef MULTIREGIONS_LOCTRACETOTRACEMAP_H
36#define MULTIREGIONS_LOCTRACETOTRACEMAP_H
37
38#include <tuple>
39
44
45namespace Nektar
46{
47namespace LocalRegions
48{
49class Expansion;
50typedef std::shared_ptr<Expansion> ExpansionSharedPtr;
51} // namespace LocalRegions
52
53namespace MultiRegions
54{
55class ExpList;
56typedef std::shared_ptr<ExpList> ExpListSharedPtr;
57
68
69/**
70 * @brief Map holding points distributions required for interpolation of local
71 * traces onto global trace in two and three dimensions.
72 *
73 * The tuple contains four PointsKey entries. All four are used in 3D, but for
74 * 2D only two are used. The first two denote the local elemental points
75 * distributions, the latter the target trace distributions. In the 2D case,
76 * unused trace directions are set to LibUtilities::eNoPointsType.
77 */
81
82struct cmpop
83{
85 TraceInterpPoints const &b) const
86 {
87 if (std::get<0>(a) < std::get<0>(b))
88 {
89 return true;
90 }
91
92 if (std::get<0>(b) < std::get<0>(a))
93 {
94 return false;
95 }
96
97 if (std::get<1>(a) < std::get<1>(b))
98 {
99 return true;
100 }
101 if (std::get<1>(b) < std::get<1>(a))
102 {
103 return false;
104 }
105
106 if (std::get<2>(a) < std::get<2>(b))
107 {
108 return true;
109 }
110
111 if (std::get<2>(b) < std::get<2>(a))
112 {
113 return false;
114 }
115
116 if (std::get<3>(a) < std::get<3>(b))
117 {
118 return true;
119 }
120
121 return false;
122 }
123};
124
126{
127 /// useful for allocate workspace
129 /// All execept m_interpTraceIndex are shared for collections
130 /// subscript of m_interpTrace, referenced by element and trace id
131 /// the storage is ordered by (e,n)
132 /// if width > 1 then this array should better be ordered by (e, g, k)
133 /// The argument is whether we need to reorder the element trace to group
134 /// them by interpolation type... The current decision is to keep them
135 /// in natrual order.
137 /// A mapping holding the type of interpolation needed for each local trace.
138 /// Dimension 0 holds forward traces, dimension 1 backward.
140 /// Interpolation matrices for either 2D edges or first coordinate of 3D
141 /// face.
143 /// Interpolation matrices for the second coordinate of 3D face, not used in
144 /// 2D.
146 /// Interpolation matrices for either 2D edges or first coordinate
147 /// of 3D face using going "from' to 'to' points (i.e. the reverse
148 /// of other techniques)
150 /// Interpolation matrices for either 2D edges or first coordinate
151 /// of 3D face using going "from' to 'to' points (i.e. the reverse
152 /// of other techniques)
154 /// Interpolation points key distributions to each of the local to global
155 /// mappings.
157 /// Mapping to hold first coordinate direction endpoint interpolation, which
158 /// can be more optimal if using Gauss-Radau distribution for triangles
160 /// Mapping to hold second coordinate direction endpoint interpolation,
161 /// which can be more optimal if using Gauss-Radau distribution for
162 /// triangles
164 /// Number of edges/faces on a 2D/3D element that require interpolation.
166};
167
169{
170 /// stores the maps to extract local trace from element
171 /// each collection contains a set of different maps;
172 /// the storage is ordered is (e) and will not be changed once created
174 /// stores the maps to reorder locTrace To Trace (in trace size)
175 /// the storage will not change once created
177 /// The orientation + type of each local element trace, just store the int
178 /// each collection contains a different array of size (pCollExp * Ntraces)
179 /// the storage is ordered is (e,n) and if width > 1 then this array should
180 /// be ordered by (e, g, v). The padding entry will have default value of 0
182 /// Returns the start pos of trace phys by giving the local elmt trace id
183 /// each collection contains a different array of size (pCollExp * Ntraces)
184 /// originally in TraceToFieldMap, now moves to this class
185 /// can be created on a single Array by offset
186 /// the storage is ordered is (e,n) and if width > 1 then this array should
187 /// be ordered by (e, g, v). The padding entry will have default value of
188 /// ntracePts - implying the trace array must have bigger size to hold the
189 /// unused data
192 /// bool to indicate if this loc trace is left adjacent to trace
193 /// each collection contains a different array of size (pCollExp * Ntraces)
194 /// can be created by offset LeftAdjacents (which should be moved from
195 /// DisContField to this field?) the storage is ordered is (e,n) and if
196 /// width > 1 then this array should be ordered by (e, g, v). The padding
197 /// entry will have default value of true
199};
200
201/**
202 * @brief A helper class to deal with trace operations in the discontinuous
203 * Galerkin code.
204 *
205 * This class sets up a number of mappings to deal with operations that take the
206 * "local trace" of an expansion list -- i.e. the concatenation of all elemental
207 * facets -- to the "global trace" -- where the duplicate facets between
208 * connected elements have been removed.
209 *
210 * <pre>
211 * Elements: Local trace: Global trace:
212 * +----+----+ + +---+ + + +---+ + + +---+ + +---+ +
213 * | | | | | | | | | |
214 * | | | | | | | | | |
215 * +----+----+ + +---+ + + +---+ + + +---+ + +---+ +
216 * </pre>
217 *
218 * There are a number of mappings that are required that this class provides
219 * maps for:
220 *
221 * - Extracting the local trace from the elements in physical space
222 * - Dealing with cases that need interpolation (i.e. where the polynomial
223 * order varies between two elements)
224 * - Adding global trace contributions back into the elements.
225 *
226 * These are documented in the member variables and class functions.
227 */
229{
230public:
231 // Constructor
233 const ExpList &locExp, const ExpListSharedPtr &trace,
235 &elmtToTrace,
236 const std::vector<bool> &LeftAdjacents);
237
238 // Destructor
240
242 const Array<OneD, const NekDouble> &field,
244
246 const Array<OneD, const NekDouble> &field,
249 const Array<OneD, const NekDouble> &faces,
251
253 const int dir, const Array<OneD, const NekDouble> &loctraces,
254 Array<OneD, NekDouble> reshuffle);
255
257 const int dir, const Array<OneD, const NekDouble> &loctraces,
258 Array<OneD, NekDouble> unshuffle);
259
261 const int dir, const Array<OneD, const NekDouble> &loctraces,
262 Array<OneD, NekDouble> &traces);
263
265 const int dir, const Array<OneD, const NekDouble> &locfaces,
267
269 const int dir, const Array<OneD, const NekDouble> &locfaces,
271
273 const int dir, const Array<OneD, const NekDouble> &traces,
274 Array<OneD, NekDouble> &loctraces);
275
276 /// Transpose of interp local edges to Trace methods
278 const int dir, const Array<OneD, const NekDouble> &edges,
279 Array<OneD, NekDouble> &locedges);
280
281 /// Transpose of interp local faces to Trace methods
283 const int dir, const Array<OneD, const NekDouble> &traces,
284 Array<OneD, NekDouble> &loctraces);
285
287 const int dir, const Array<OneD, NekDouble> &traces,
288 Array<OneD, NekDouble> &loctraces);
289
291 const int dir, const Array<OneD, const NekDouble> &edges,
292 Array<OneD, NekDouble> &locedges);
293
295 const int dir, const Array<OneD, const NekDouble> &faces,
296 Array<OneD, NekDouble> &locfaces);
297
299 const Array<OneD, const NekDouble> &trace,
301
303 const int dir, const Array<OneD, const NekDouble> &race,
305
307 const ExpListSharedPtr &tracelist, const int ndim);
308
310 const ExpListSharedPtr &tracelist);
311
313 const ExpListSharedPtr &tracelist);
314
315 /**
316 * @brief Return the number of `forward' local trace points.
317 */
319 {
320 return m_nFwdLocTracePts;
321 }
322
323 /**
324 * @brief Return the number of local trace points.
325 */
327 {
328 return m_nLocTracePts;
329 }
330
336
342
343 MULTI_REGIONS_EXPORT inline const Array<
349
350 MULTI_REGIONS_EXPORT inline const Array<
356
358 const
359 {
360 return m_ElemNeighbsNumb;
361 }
362
365 {
366 return m_ElemNeighbsId;
367 }
368
374
376 const Array<OneD, Array<OneD, int>> &inarray)
377 {
379 }
380
383 {
385 }
386
388 const ExpList &locExp, const ExpListSharedPtr &trace);
389
391 const int cid);
392
394 const int cid);
395
396private:
397 /// Expansion Dimension we have setup for trace mapping.
399 /// The number of forward trace points. A local trace element is `forward'
400 /// if it is the side selected for the global trace.
402 /// The number of local trace points.
404 /// The number of global trace points.
406 /// A mapping from the local elemental trace points, arranged as
407 /// all forwards traces followed by backwards traces, to elemental
408 /// storage.
410 /// A mapping from the local elemental trace points, arranged as
411 /// all forwards traces followed by backwards traces, to elemental
412 /// storage.
414 /// A mapping from local trace points to the global trace. Dimension 0 holds
415 /// forward traces, dimension 1 backward.
417 /// A mapping holding the type of interpolation needed for each local trace.
418 /// Dimension 0 holds forward traces, dimension 1 backward.
420 /// Interpolation matrices for either 2D edges or first coordinate of 3D
421 /// face.
423 /// Interpolation matrices for the second coordinate of 3D face, not used in
424 /// 2D.
426 /// Interpolation matrices for either 2D edges or first coordinate
427 /// of 3D face using going "from' to 'to' points (i.e. the reverse
428 /// of other techniques)
430 /// Interpolation matrices for either 2D edges or first coordinate
431 /// of 3D face using going "from' to 'to' points (i.e. the reverse
432 /// of other techniques)
434 /// Interpolation points key distributions to each of the local to global
435 /// mappings.
437 /// Mapping to hold first coordinate direction endpoint interpolation, which
438 /// can be more optimal if using Gauss-Radau distribution for triangles
440 /// Mapping to hold second coordinate direction endpoint interpolation,
441 /// which can be more optimal if using Gauss-Radau distribution for
442 /// triangles
444 /// Number of edges/faces on a 2D/3D element that require interpolation.
446 /// Number of forwards/backwards trace coefficients.
448 /// Mapping from forwards/backwards trace coefficients to elemental
449 /// coefficient storage.
451 /// Mapping from forwards/backwards trace coefficients to the position of
452 /// the trace element in global storage.
454 /// Sign array for mapping from forwards/backwards trace coefficients to
455 /// local trace storage.
457 /// Flag indicates whether the expansion that are the left & right adjacent
458 /// to current trace exists.
460 /// The expansion ID that are the left & right adjacent to current trace.
462 /// The map of every coeff from current trace to the left & right adjacent
463 /// expasion coeffs.
466 /// The sign of every coeff from current trace to the left & right adjacent
467 /// expasion coeffs.
470 /// The map of every phys from current trace to the left & right adjacent
471 /// expasion phys. This map is only used when no interpolation is needed in
472 /// getting GetFwdBwdTracePhys. If interpolation is needed, it should be
473 /// determined as the InnerProduct of m_locTraceToFieldMap matrix and
474 /// interpolation matrix.
476
477 // store the number of neighbor elements for each element
479 // store the id of neighbor elements for each element
481
483
484 void FindElmtNeighbors(const ExpList &locExp,
485 const ExpListSharedPtr &trace);
486
487 //------- Below is new members to support cell-based trace operations ------
488 /// start entry of each local trace in m_locTraceToFieldMap, referenced by
489 /// element and trace id
491 /// start entry of each global trace in m_locInterpTraceToTraceMap,
492 /// referenced by element and trace id
494 /// subscript of m_interpTrace, referenced by element and trace id
496 /// start entry of each global trace in m_traceCoeffsToElmtMap, referenced
497 /// by element and trace id
499
500 // stores start expid of each collection
502
503 // From loctrace id to element trace phys offset
505
506 // A series of structs, each is for the mapping of a collection
509};
510
511typedef std::shared_ptr<LocTraceToTraceMap> LocTraceToTraceMapSharedPtr;
512
514
515} // namespace MultiRegions
516} // namespace Nektar
517
518#endif
#define MULTI_REGIONS_EXPORT
Defines a specification for a set of points.
Definition Points.h:50
Base class for all multi-elemental spectral/hp expansions.
Definition ExpList.h:99
A helper class to deal with trace operations in the discontinuous Galerkin code.
Array< OneD, Array< OneD, Array< OneD, int > > > m_traceCoeffToLeftRightExpCoeffMap
The map of every coeff from current trace to the left & right adjacent expasion coeffs.
Array< OneD, Array< OneD, int > > m_traceCoeffsToElmtSign
Sign array for mapping from forwards/backwards trace coefficients to local trace storage.
Array< OneD, Array< OneD, int > > m_interpNtraces
Number of edges/faces on a 2D/3D element that require interpolation.
Array< OneD, Array< OneD, int > > m_locTraceToElmtTraceMap
A mapping from the local elemental trace points, arranged as all forwards traces followed by backward...
int GetNLocTracePts()
Return the number of local trace points.
void InterpLocEdgesToTraceTranspose(const int dir, const Array< OneD, const NekDouble > &edges, Array< OneD, NekDouble > &locedges)
Transpose of interp local edges to Trace methods.
const Array< OneD, const Array< OneD, int > > & GetElemNeighbsId() const
void InterpLocTracesToTraceTranspose(const int dir, const Array< OneD, const NekDouble > &traces, Array< OneD, NekDouble > &loctraces)
Array< OneD, Array< OneD, int > > m_traceCoeffsToElmtTrace
Mapping from forwards/backwards trace coefficients to the position of the trace element in global sto...
Array< OneD, Array< OneD, int > > m_leftRightAdjacentExpId
The expansion ID that are the left & right adjacent to current trace.
Array< OneD, Array< OneD, DNekMatSharedPtr > > m_interpFromTraceI1
Interpolation matrices for either 2D edges or first coordinate of 3D face using going "from' to 'to' ...
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_interpEndPtI0
Mapping to hold first coordinate direction endpoint interpolation, which can be more optimal if using...
void LocTracesFromField(const Array< OneD, const NekDouble > &field, Array< OneD, NekDouble > faces)
Gather the local elemental traces in physical space from field using m_locTraceToFieldMap....
void CalcLocTracePhysToTraceIDMap_3D(const ExpListSharedPtr &tracelist)
const Array< OneD, const int > & GetLocTraceToFieldMap() const
int m_nLocTracePts
The number of local trace points.
void InterpLocEdgesToTrace(const int dir, const Array< OneD, const NekDouble > &locfaces, Array< OneD, NekDouble > &edges)
Interpolate local trace edges to global trace edge point distributions where required.
void SetLocTracePhysToTraceIDMap(const Array< OneD, Array< OneD, int > > &inarray)
int m_nTracePts
The number of global trace points.
void UnshuffleLocTraces(const int dir, const Array< OneD, const NekDouble > &loctraces, Array< OneD, NekDouble > unshuffle)
Unshuffle local elemental traces in physical space from similar faces points are blocked together to ...
void InterpLocTracesToTrace(const int dir, const Array< OneD, const NekDouble > &loctraces, Array< OneD, NekDouble > &traces)
Array< OneD, Array< OneD, bool > > m_leftRightAdjacentExpFlag
Flag indicates whether the expansion that are the left & right adjacent to current trace exists.
void CalcLocTracePhysToTraceIDMap(const ExpListSharedPtr &tracelist, const int ndim)
void AddLocTracesToField(const Array< OneD, const NekDouble > &faces, Array< OneD, NekDouble > &field)
Reverse process of LocTracesFromField() Add the local traces in physical space to field using m_locTr...
const Array< OneD, const Array< OneD, Array< OneD, int > > > & GetTraceCoeffToLeftRightExpCoeffSign() const
int m_nTraceCoeffs[2]
Number of forwards/backwards trace coefficients.
const Array< OneD, int > & GetElemNeighbsNumb() const
int m_nFwdLocTracePts
The number of forward trace points. A local trace element is ‘forward’ if it is the side selected for...
Array< OneD, TraceFieldMapEssential > m_traceFieldMap
Array< OneD, Array< OneD, Array< OneD, int > > > m_traceCoeffToLeftRightExpCoeffSign
The sign of every coeff from current trace to the left & right adjacent expasion coeffs.
void InterpTraceToLocFaces(const int dir, const Array< OneD, const NekDouble > &faces, Array< OneD, NekDouble > &locfaces)
Interpolate global trace edge to local trace edges point distributions where required.
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_interpEndPtI1
Mapping to hold second coordinate direction endpoint interpolation, which can be more optimal if usin...
void TraceLocToElmtLocCoeffMap(const ExpList &locExp, const ExpListSharedPtr &trace)
Set up maps between coefficients on trace and in cells.
Array< OneD, Array< OneD, int > > m_traceCoeffsToElmtMap
Mapping from forwards/backwards trace coefficients to elemental coefficient storage.
int m_expdim
Expansion Dimension we have setup for trace mapping.
Array< OneD, Array< OneD, InterpLocTraceToTrace > > m_interpTrace
A mapping holding the type of interpolation needed for each local trace. Dimension 0 holds forward tr...
void FwdLocTracesFromField(const Array< OneD, const NekDouble > &field, Array< OneD, NekDouble > faces)
Gather the forwards-oriented local traces in physical space from field using m_locTraceToFieldMap.
Array< OneD, Array< OneD, int > > m_locInterpTraceToTraceMap
A mapping from local trace points to the global trace. Dimension 0 holds forward traces,...
void InterpTraceToLocEdges(const int dir, const Array< OneD, const NekDouble > &edges, Array< OneD, NekDouble > &locedges)
Interpolate global trace edge to local trace edges point distributions where required.
const Array< OneD, const Array< OneD, int > > & GetLocTracephysToTraceIDMap() const
const Array< OneD, const Array< OneD, bool > > & GetLeftRightAdjacentExpFlag() const
Array< OneD, Array< OneD, int > > m_ElemNeighbsId
Array< OneD, Array< OneD, TraceInterpPoints > > m_interpPoints
Interpolation points key distributions to each of the local to global mappings.
Array< OneD, int > m_locTraceToFieldMap
A mapping from the local elemental trace points, arranged as all forwards traces followed by backward...
Array< OneD, Array< OneD, int > > m_interpTracePtsEntry
start entry of each global trace in m_locInterpTraceToTraceMap, referenced by element and trace id
Array< OneD, Array< OneD, DNekMatSharedPtr > > m_interpFromTraceI0
Interpolation matrices for either 2D edges or first coordinate of 3D face using going "from' to 'to' ...
Array< OneD, TraceInterpEssential > m_traceInterp
void AddTraceCoeffsToFieldCoeffs(const Array< OneD, const NekDouble > &trace, Array< OneD, NekDouble > &field)
Add contributions from trace coefficients to the elemental field storage.
void InterpLocFacesToTraceTranspose(const int dir, const Array< OneD, const NekDouble > &traces, Array< OneD, NekDouble > &loctraces)
Transpose of interp local faces to Trace methods.
Array< OneD, Array< OneD, int > > m_locTracePtsEntry
start entry of each local trace in m_locTraceToFieldMap, referenced by element and trace id
Array< OneD, Array< OneD, DNekMatSharedPtr > > m_interpTraceI1
Interpolation matrices for the second coordinate of 3D face, not used in 2D.
Array< OneD, Array< OneD, DNekMatSharedPtr > > m_interpTraceI0
Interpolation matrices for either 2D edges or first coordinate of 3D face.
Array< OneD, Array< OneD, int > > m_traceCoeffsEntry
start entry of each global trace in m_traceCoeffsToElmtMap, referenced by element and trace id
const TraceFieldMapEssential & GetTraceFieldMapEssential(const int cid)
void FindElmtNeighbors(const ExpList &locExp, const ExpListSharedPtr &trace)
Array< OneD, Array< OneD, Array< OneD, int > > > m_tracePhysToLeftRightExpPhysMap
The map of every phys from current trace to the left & right adjacent expasion phys....
void InterpTraceToLocTrace(const int dir, const Array< OneD, NekDouble > &traces, Array< OneD, NekDouble > &loctraces)
const Array< OneD, const Array< OneD, int > > & GetLeftRightAdjacentExpId() const
const Array< OneD, const Array< OneD, Array< OneD, int > > > & GetTraceCoeffToLeftRightExpCoeffMap() const
int GetNFwdLocTracePts()
Return the number of ‘forward’ local trace points.
Array< OneD, Array< OneD, int > > m_interpTraceIndex
subscript of m_interpTrace, referenced by element and trace id
void ReshuffleLocTracesForInterp(const int dir, const Array< OneD, const NekDouble > &loctraces, Array< OneD, NekDouble > reshuffle)
Reshuffle local elemental traces in physical space so that similar faces points are blocked together ...
void CalcLocTracePhysToTraceIDMap_2D(const ExpListSharedPtr &tracelist)
Array< OneD, Array< OneD, int > > m_LocTracephysToTraceIDMap
void InterpLocFacesToTrace(const int dir, const Array< OneD, const NekDouble > &locfaces, Array< OneD, NekDouble > faces)
Interpolate local faces to trace face point distributions where required.
const TraceInterpEssential & GetTraceInterpEssential(const int cid)
std::shared_ptr< Expansion > ExpansionSharedPtr
Definition Expansion.h:66
std::tuple< LibUtilities::PointsKey, LibUtilities::PointsKey, LibUtilities::PointsKey, LibUtilities::PointsKey > TraceInterpPoints
Map holding points distributions required for interpolation of local traces onto global trace in two ...
static LocTraceToTraceMapSharedPtr NullLocTraceToTraceMapSharedPtr
std::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object.
std::shared_ptr< LocTraceToTraceMap > LocTraceToTraceMapSharedPtr
Array< OneD, Array< OneD, int > > m_locToTraceId
Array< OneD, Array< OneD, int > > m_locToTracePhysOffset
Returns the start pos of trace phys by giving the local elmt trace id each collection contains a diff...
Array< OneD, Array< OneD, int > > m_orientationIds
The orientation + type of each local element trace, just store the int each collection contains a dif...
Array< OneD, Array< OneD, int > > m_orientationMaps
stores the maps to reorder locTrace To Trace (in trace size) the storage will not change once created
Array< OneD, Array< OneD, bool > > m_isLocTraceLeftAdjacent
bool to indicate if this loc trace is left adjacent to trace each collection contains a different arr...
Array< OneD, Array< OneD, int > > m_locTracePhysToElmtMaps
stores the maps to extract local trace from element each collection contains a set of different maps;...
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_interpEndPtI0
Mapping to hold first coordinate direction endpoint interpolation, which can be more optimal if using...
Array< OneD, Array< OneD, TraceInterpPoints > > m_interpPoints
Interpolation points key distributions to each of the local to global mappings.
Array< OneD, Array< OneD, DNekMatSharedPtr > > m_interpFromTraceI0
Interpolation matrices for either 2D edges or first coordinate of 3D face using going "from' to 'to' ...
Array< OneD, Array< OneD, DNekMatSharedPtr > > m_interpTraceI1
Interpolation matrices for the second coordinate of 3D face, not used in 2D.
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_interpEndPtI1
Mapping to hold second coordinate direction endpoint interpolation, which can be more optimal if usin...
Array< OneD, Array< OneD, int > > m_interpNtraces
Number of edges/faces on a 2D/3D element that require interpolation.
Array< OneD, Array< OneD, int > > m_interpTraceIndex
All execept m_interpTraceIndex are shared for collections subscript of m_interpTrace,...
int m_maxTraceSize
useful for allocate workspace
Array< OneD, Array< OneD, DNekMatSharedPtr > > m_interpFromTraceI1
Interpolation matrices for either 2D edges or first coordinate of 3D face using going "from' to 'to' ...
Array< OneD, Array< OneD, DNekMatSharedPtr > > m_interpTraceI0
Interpolation matrices for either 2D edges or first coordinate of 3D face.
Array< OneD, Array< OneD, InterpLocTraceToTrace > > m_interpTrace
A mapping holding the type of interpolation needed for each local trace. Dimension 0 holds forward tr...
bool operator()(TraceInterpPoints const &a, TraceInterpPoints const &b) const