2 #ifndef _PROTO_MB_INTERP_OP_ 3 #define _PROTO_MB_INTERP_OP_ 8 #include "Proto_Matrix.H" 11 #include <unordered_set> 41 std::size_t hashValue = 0;
43 for (
int ii = 0; ii < DIM; ii++)
51 seed ^= std::hash<int>{}(value) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
75 template<
typename MAP, MemType MEM>
86 template<
typename MAP, MemType MEM>
97 template<
typename MAP, MemType MEM>
103 template<
typename MAP, MemType MEM>
112 inline void insert(std::shared_ptr<MBPointInterpOp> a_op);
118 template<
typename T,
unsigned int C, MemType MEM>
138 for (
auto& op : m_ops)
140 if (a_target == op->target()) {
return *op;}
145 void writeFootprint(std::string filename)
const;
146 template<
typename MAP, MemType MEM>
148 template<
typename T,
unsigned int C, MemType MEM>
149 void printErrorPoints(
155 template<
typename MAP, MemType MEM>
158 template<
typename MAP, MemType MEM>
171 std::vector<std::shared_ptr<MBPointInterpOp>>
m_ops;
172 std::unordered_set<MBPointID, MBPointID::Hash>
m_points;
176 template<
typename MAP,
typename T,
unsigned int C, MemType MEM, Centering CTR>
181 template<
typename MAP,
typename T,
unsigned int C, MemType MEM, Centering CTR>
185 unsigned int a_order = 4);
187 #include "implem/Proto_MBInterpOpImplem.H" 189 #endif // end include guard static void Abort(const char *const a_msg=m_nullString)
Print out message to cerr and exit via abort() (if serial) or MPI_Abort() (if parallel).
const int m_index
Definition: Proto_MBInterpOp.H:58
void copyAlongSymmetryAxes(const MBPointInterpOp &pointOp)
Definition: Proto_MBInterpOp.H:141
MBInterpLayout m_interpLayout
Definition: Proto_MBInterpOp.H:168
Definition: Proto_MBInterpLayout.H:11
int BlockIndex
Defines what type is used for indexing block entities.
Definition: Proto_MBGraph.H:9
Mapped Multiblock Block Boundary Interpolation Operator.
Definition: Proto_MBInterpOp.H:65
Single Level Mapped Multiblock Map.
Definition: Proto_MBLevelBoxData.H:19
void interpBoundaries(LevelBoxData< T, C, MEM, CTR > &a_crse, LevelBoxData< T, C, MEM, CTR > &a_fine, InterpStencil< T > &a_interp)
Interpolate Boundaries.
Definition: Proto_LevelBoxData.H:955
MBPointInterpOp & operator()(const MBDataPoint &a_target)
Coefficients.
Definition: Proto_MBInterpOp.H:136
Definition: Proto_MBInterpOp.H:39
MBPointID(Point a_pt, int a_index)
Definition: Proto_MBInterpOp.H:21
Multiblock Level Box Data.
Definition: Proto_MBLevelBoxData.H:17
std::vector< std::shared_ptr< MBPointInterpOp > > m_ops
Definition: Proto_MBInterpOp.H:171
Definition: Proto_MBInterpOp.H:17
Point point() const
Definition: Proto_MBInterpOp.H:36
const Point m_point
Definition: Proto_MBInterpOp.H:57
bool operator==(const MBPointID &a_rhs) const
Definition: Proto_MBInterpOp.H:31
MBPointID(const MBPointID &a_rhs)
Definition: Proto_MBInterpOp.H:23
void hash_combine(std::size_t &seed, int value) const
Definition: Proto_MBInterpOp.H:50
std::unordered_set< MBPointID, MBPointID::Hash > m_points
Definition: Proto_MBInterpOp.H:172
bool operator<(const MBPointID &a_rhs) const
Definition: Proto_MBInterpOp.H:24
BlockIndex index() const
Definition: Proto_MBInterpOp.H:37
Definition: Proto_Array.H:17
Integer Valued Vector.
Definition: Proto_Point.H:24
Mapped Multiblock Block Boundary Interpolation Operator.
Definition: Proto_MBPointInterpOp.H:12
int m_order
Definition: Proto_MBInterpOp.H:170
Point dir
Definition: Proto_MBBoxPartition.H:16
Point m_ghost
Definition: Proto_MBInterpOp.H:169
std::size_t operator()(const MBPointID &a_pt) const
Definition: Proto_MBInterpOp.H:40
Definition: Proto_MBDataPoint.H:10