2 #ifndef _PROTO_MB_PROBLEM_DOMAIN_ 3 #define _PROTO_MB_PROBLEM_DOMAIN_ 16 inline MBPoint(
const MBPoint& a_rhs) : point(a_rhs.point), block(a_rhs.block) {}
22 return (point < a_rhs.
point);
24 return (block < a_rhs.
block);
28 return point == a_rhs.
point && block == a_rhs.
block;
37 auto hash_combine = [](std::size_t& seed, std::size_t value) {
38 seed ^= value + 0x9e3779b9 + (seed << 6) + (seed >> 2);
42 for (
int dd = 0; dd < DIM; dd++) {
43 hash_combine(seed, std::hash<int>{}(key.
point[dd]));
47 hash_combine(seed, std::hash<int>{}(key.
block));
66 "MBPoint::operator+ | Error: MBPoint objects are in different blocks (%i and %i)",
90 inline void defineBoundary(
98 inline void defineBoundary(
105 inline unsigned int size()
const {
return m_graph->numBlocks(); }
108 inline unsigned int numBlocks()
const {
return size(); }
114 inline std::shared_ptr<MBGraph>
graphPtr()
const {
return m_graph; }
131 inline Point convertNode(
137 inline Point convertPoint(
144 inline Box convertBox(
151 inline MBProblemDomain coarsen(
const std::vector<Point>& a_refRatios)
const;
153 inline MBProblemDomain refine(
const std::vector<Point>& a_refRatios)
const;
155 inline bool coarsenable(
Point a_refRatio)
const;
157 inline bool defined()
const;
159 inline void close()
const;
161 inline std::vector<MBPoint> patches(
int a_boxSize)
const;
162 inline std::vector<MBPoint> patches(
Point a_boxSize)
const;
163 inline std::vector<MBPoint> patches(
const std::vector<Point>& a_boxSizes)
const;
165 inline bool isPointInTriplePoint(
Point a_point,
BlockIndex a_block)
const;
168 inline bool isPointInBlockBoundary(
Point a_point,
BlockIndex a_block)
const;
171 inline bool isPointInDomainBoundary(
Point a_point,
BlockIndex a_block)
const;
174 inline bool isPointInInterior(
Point a_point,
BlockIndex a_block)
const;
176 inline bool isPointOnBlockBoundary(
Point a_point,
BlockIndex a_block)
const;
179 inline bool isPointOnDomainBoundary(
Point a_point,
BlockIndex a_block)
const;
192 #include "implem/Proto_MBProblemDomainImplem.H" 195 #endif // end include guard std::size_t operator()(const MBPoint &key) const
Definition: Proto_MBProblemDomain.H:32
std::shared_ptr< MBGraph > graphPtr() const
Definition: Proto_MBProblemDomain.H:114
LoHiSide
Side Enum.
Definition: Proto_Face.H:23
Graph of a mapped multiblock domain. Nodes represent blocks and arcs represent boundaries between blo...
Definition: Proto_MBGraph.H:105
bool operator==(const MBPoint a_rhs) const
Definition: Proto_MBProblemDomain.H:27
std::vector< bool > m_domainsDefined
Definition: Proto_MBProblemDomain.H:189
Definition: Proto_MBProblemDomain.H:10
int BlockIndex
Defines what type is used for indexing block entities.
Definition: Proto_MBGraph.H:9
MBGraph & graph() const
Definition: Proto_MBProblemDomain.H:111
Defines discrete rotations in logically rectangular coordinate systems.
Definition: Proto_CoordPermutation.H:13
bool m_closed
Definition: Proto_MBProblemDomain.H:184
An interval in DIM dimensional space.
Definition: Proto_Box.H:29
std::vector< ProblemDomain > m_domains
Definition: Proto_MBProblemDomain.H:186
Mapped Multi-Block Problem Domain.
Definition: Proto_MBProblemDomain.H:76
PatchID point
Definition: Proto_MBProblemDomain.H:12
MBPoint & operator=(const MBPoint &a_rhs)=default
BlockIndex block
Definition: Proto_MBProblemDomain.H:13
std::shared_ptr< MBGraph > m_graph
Definition: Proto_MBProblemDomain.H:187
MBPoint operator+(const MBPoint &mbpoint, const Point &p)
Definition: Proto_MBProblemDomain.H:55
MBPoint(const MBPoint &a_rhs)
Definition: Proto_MBProblemDomain.H:16
#define PROTO_ASSERT(stmt, args...)
Definition: Proto_PAssert.H:48
Definition: Proto_Array.H:17
unsigned int numBlocks() const
Definition: Proto_MBProblemDomain.H:108
Integer Valued Vector.
Definition: Proto_Point.H:24
std::map< Point, MBPatchBoundInfo > boundaries
Definition: Proto_MBBoxPartition.H:88
unsigned int size() const
Definition: Proto_MBProblemDomain.H:105
Definition: Proto_Centering.H:9
MBPoint(PatchID a_patch, BlockIndex a_block)
Definition: Proto_MBProblemDomain.H:15
Represents a rectangular domain over which a problem can be defined, including periodic images...
Definition: Proto_ProblemDomain.H:22
bool operator<(const MBPoint &a_rhs) const
Definition: Proto_MBProblemDomain.H:18
Centering
Definition: Proto_Centering.H:7