36 #ifndef MULTIREGIONS_LOCTRACETOTRACEMAP_H 
   37 #define MULTIREGIONS_LOCTRACETOTRACEMAP_H 
   39 #include <boost/tuple/tuple.hpp> 
   48 namespace LocalRegions
 
   54 namespace MultiRegions
 
   80                      LibUtilities::PointsKey,
 
   81                      LibUtilities::PointsKey,
 
   87                     TraceInterpPoints 
const &b)
 const 
   89         if (a.get<0>() < b.get<0>())
 
   94         if (b.get<0>() < a.get<0>())
 
   99         if (a.get<1>() < b.get<1>())
 
  103         if (b.get<1>() < a.get<1>())
 
  108         if (a.get<2>() < b.get<2>())
 
  113         if (b.get<2>() < a.get<2>())
 
  118         if (a.get<3>() < b.get<3>())
 
  160         const ExpListSharedPtr &trace,
 
  163         const std::vector<bool> &LeftAdjacents);
 
  170         const ExpListSharedPtr &trace,
 
  173         const std::vector<bool> &LeftAdjacents);
 
  177         const ExpListSharedPtr &trace,
 
  180         const std::vector<bool> &LeftAdjacents);
 
int GetNFwdLocTracePts()
Return the number of `forward' local trace points. 
 
void Setup2D(const ExpList &locExp, const ExpListSharedPtr &trace, const Array< OneD, Array< OneD, LocalRegions::ExpansionSharedPtr > > &elmtToTrace, const std::vector< bool > &LeftAdjacents)
Set up member variables for a two-dimensional problem. 
 
virtual ~LocTraceToTraceMap()
 
int m_nTracePts
The number of global trace points. 
 
boost::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 ...
 
Array< OneD, Array< OneD, DNekMatSharedPtr > > m_interpTraceI0
Interpolation matrices for either 2D edges or first coordinate of 3D face. 
 
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_fieldToLocTraceMap. 
 
LocTraceToTraceMap(const ExpList &locExp, const ExpListSharedPtr &trace, const Array< OneD, Array< OneD, LocalRegions::ExpansionSharedPtr > > &elmtToTrace, const std::vector< bool > &LeftAdjacents)
Set up trace to trace mapping components. 
 
#define MULTI_REGIONS_EXPORT
 
Array< OneD, Array< OneD, int > > m_traceCoeffsToElmtTrace
Mapping from forwards/backwards trace coefficients to the position of the trace element in global sto...
 
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. 
 
boost::shared_ptr< LocTraceToTraceMap > LocTraceToTraceMapSharedPtr
 
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_interpEndPtI0
Mapping to hold first coordinate direction endpoint interpolation, which can be more optimal if using...
 
Base class for all multi-elemental spectral/hp expansions. 
 
Array< OneD, Array< OneD, int > > m_traceCoeffsToElmtSign
Sign array for mapping from forwards/backwards trace coefficients to local trace storage. 
 
int m_nLocTracePts
The number of local trace points. 
 
bool operator()(TraceInterpPoints const &a, TraceInterpPoints const &b) const 
 
int m_nTraceCoeffs[2]
Number of forwards/backwards trace coefficients. 
 
int m_nFwdLocTracePts
The number of forward trace points. A local trace element is `forward' if it is the side selected for...
 
boost::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object. 
 
Array< OneD, Array< OneD, int > > m_traceCoeffsToElmtMap
Mapping from forwards/backwards trace coefficients to elemental coefficient storage. 
 
Defines a specification for a set of points. 
 
void LocTracesFromField(const Array< OneD, const NekDouble > &field, Array< OneD, NekDouble > faces)
Gather the local traces in physical space from field using m_fieldToLocTraceMap. 
 
boost::shared_ptr< Expansion > ExpansionSharedPtr
 
Array< OneD, Array< OneD, DNekMatSharedPtr > > m_interpTraceI1
Interpolation matrices for the second coordinate of 3D face, not used in 2D. 
 
int GetNLocTracePts()
Return the number of local trace points. 
 
void Setup3D(const ExpList &locExp, const ExpListSharedPtr &trace, const Array< OneD, Array< OneD, LocalRegions::ExpansionSharedPtr > > &elmtToTrace, const std::vector< bool > &LeftAdjacents)
Set up member variables for a three-dimensional problem. 
 
A helper class to deal with trace operations in the discontinuous Galerkin code. 
 
Array< OneD, Array< OneD, int > > m_interpNfaces
Number of edges/faces on a 2D/3D element that require interpolation. 
 
Array< OneD, Array< OneD, int > > m_LocTraceToTraceMap
A mapping from local trace points to the global trace. Dimension 0 holds forward traces, dimension 1 backward. 
 
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 AddTraceCoeffsToFieldCoeffs(const Array< OneD, const NekDouble > &trace, Array< OneD, NekDouble > &field)
Add contributions from trace coefficients to the elemental field storage. 
 
Array< OneD, Array< OneD, TraceInterpPoints > > m_interpPoints
Interpolation points key distributions for each of the local to global mappings. 
 
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. 
 
Array< OneD, int > m_fieldToLocTraceMap
A mapping from the local trace points, arranged as all forwards traces followed by backwards traces...
 
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_interpEndPtI1
Mapping to hold second coordinate direction endpoint interpolation, which can be more optimal if usin...