Loading...
Searching...
No Matches
ParaTree.hpp
149 LoadBalanceRanges(bool serial, const ExchangeRanges &_sendRanges, const ExchangeRanges &_recvRanges);
223 ParaTree(uint8_t dim, const std::string &logfile = DEFAULT_LOG_FILE, MPI_Comm comm = MPI_COMM_WORLD);
224 ParaTree(std::istream &stream, const std::string &logfile = DEFAULT_LOG_FILE, MPI_Comm comm = MPI_COMM_WORLD);
478 void findNeighbours(const Octant* oct, uint8_t face, uint8_t codim, u32vector & neighbours, bvector & isghost, bool onlyinternals, bool append) const;
480 void findNeighbours(uint32_t idx, uint8_t face, uint8_t codim, u32vector & neighbours, bvector & isghost) const;
482 void findNeighbours(const Octant* oct, uint8_t face, uint8_t codim, u32vector & neighbours, bvector & isghost) const ;
483 void findGhostNeighbours(uint32_t idx, uint8_t face, uint8_t codim, u32vector & neighbours) const;
484 void findGhostNeighbours(uint32_t idx, uint8_t face, uint8_t codim, u32vector & neighbours, bvector & isghost) const;
485 void findGhostNeighbours(const Octant* oct, uint8_t face, uint8_t codim, u32vector & neighbours, bvector & isghost) const;
486 void findAllNodeNeighbours(uint32_t idx, uint32_t node, u32vector & neighbours, bvector & isghost);
487 void findAllNodeNeighbours(const Octant* oct, uint32_t node, u32vector & neighbours, bvector & isghost) const;
489 void findAllCodimensionNeighbours(const Octant* oct, u32vector & neighbours, bvector & isghost);
490 void findGhostAllCodimensionNeighbours(uint32_t idx, u32vector & neighbours, bvector & isghost);
504 void getPreMapping(u32vector & idx, std::vector<int8_t> & markers, std::vector<bool> & isghost);
549 PartitionIntersections evalPartitionIntersections(const uint32_t *schema_A, int rank_A, const uint32_t *schema_B);
572 void buildGhostOctants(const std::map<int, u32vector> &bordersPerProc, const std::vector<AccretionData> &accretions);
574 void growGhostHaloAccretions(std::unordered_map<uint32_t, std::vector<uint64_t>> *cachedOneRings, std::vector<AccretionData> *accretions);
575 void exchangeGhostHaloAccretions(DataCommunicator *dataCommunicator, std::vector<AccretionData> *accretions);
687 (*m_log) << " Octants for proc "+ std::to_string(static_cast<unsigned long long>(0))+" : " + std::to_string(static_cast<unsigned long long>(m_partitionRangeGlobalIdx[0]+1)) << std::endl;
689 (*m_log) << " Octants for proc "+ std::to_string(static_cast<unsigned long long>(ii))+" : " + std::to_string(static_cast<unsigned long long>(m_partitionRangeGlobalIdx[ii]-m_partitionRangeGlobalIdx[ii-1])) << std::endl;
734 (*m_log) << " Octants for proc "+ std::to_string(static_cast<unsigned long long>(0))+" : " + std::to_string(static_cast<unsigned long long>(m_partitionRangeGlobalIdx[0]+1)) << std::endl;
736 (*m_log) << " Octants for proc "+ std::to_string(static_cast<unsigned long long>(ii))+" : " + std::to_string(static_cast<unsigned long long>(m_partitionRangeGlobalIdx[ii]-m_partitionRangeGlobalIdx[ii-1])) << std::endl;
773 (*m_log) << " Octants for proc "+ std::to_string(static_cast<unsigned long long>(0))+" : " + std::to_string(static_cast<unsigned long long>(m_partitionRangeGlobalIdx[0]+1)) << std::endl;
775 (*m_log) << " Octants for proc "+ std::to_string(static_cast<unsigned long long>(ii))+" : " + std::to_string(static_cast<unsigned long long>(m_partitionRangeGlobalIdx[ii]-m_partitionRangeGlobalIdx[ii-1])) << std::endl;
779 std::unordered_map<int, std::array<uint32_t, 2>> sendRanges = evalLoadBalanceSendRanges(partition);
780 std::unordered_map<int, std::array<uint32_t, 2>> recvRanges = evalLoadBalanceRecvRanges(partition);
904 uint64_t firstResidentGlobalOctantIdx = std::max(firstOctantGlobalIdx, newFirstOctantGlobalIdx);
907 uint32_t nofResidents = static_cast<uint32_t>(lastResidentGlobalOctantIdx - firstResidentGlobalOctantIdx + 1);
908 uint32_t newFirstResidentOffsetIdx = static_cast<uint32_t>(firstResidentGlobalOctantIdx - newFirstOctantGlobalIdx);
909 uint32_t firstResidentOffsetIdx = static_cast<uint32_t>(firstResidentGlobalOctantIdx - firstOctantGlobalIdx);
925 m_octree.m_octants[newFirstResidentOffsetIdx + residentIdx] = m_octree.m_octants[firstResidentOffsetIdx + residentIdx];
952 assert(userData || ((endRecvIdx - beginRecvIdx) == (recvBuffer.getSize() / (Octant::getBinarySize()))));
953 assert(!userData || !userData->fixedSize() || ((endRecvIdx - beginRecvIdx) == (recvBuffer.getSize() / (Octant::getBinarySize() + userData->fixedSize()))));
void scatter(Buffer &buff, const uint32_t e)
Definition DataCommInterface.tpp:89
void gather(Buffer &buff, const uint32_t e)
Definition DataCommInterface.tpp:66
size_t size(const uint32_t e) const
Definition DataCommInterface.tpp:35
The DataCommunicator class provides the infrastructure needed to exchange data among processes.
Definition communications.hpp:42
void setRecv(int rank, long length=0)
Definition communications.cpp:582
SendBuffer & getSendBuffer(int rank)
Definition communications.cpp:696
const std::vector< int > & getRecvRanks() const
Definition communications.cpp:685
int waitAnyRecv(const std::vector< int > &blackList=std::vector< int >())
Definition communications.cpp:894
void setSend(int rank, long length=0)
Definition communications.cpp:562
RecvBuffer & getRecvBuffer(int rank)
Definition communications.cpp:709
Octant * getPointOwner(const dvector &point)
Definition ParaTree.cpp:2941
uint32_t getGhostLocalIdx(uint64_t gidx) const
Definition ParaTree.cpp:1630
bool isFaceOnOctant(const Octant *faceOctant, uint8_t faceIndex, const Octant *octant) const
Definition ParaTree.cpp:3444
const u32array3 & getNodeLogicalCoordinates(uint32_t node) const
Definition ParaTree.cpp:3877
uint32_t getNumIntersections() const
Definition ParaTree.cpp:2253
void getPreMapping(u32vector &idx, std::vector< int8_t > &markers, std::vector< bool > &isghost)
Definition ParaTree.cpp:3301
bool getPbound(uint32_t idx, uint8_t face) const
Definition ParaTree.cpp:1539
void expectedOctantAdapt(const Octant *octant, int8_t marker, octvector *result) const
Definition ParaTree.cpp:3187
bool adaptGlobalCoarse(bool mapper_flag=false)
Definition ParaTree.cpp:3654
uint8_t getFamilySplittingNode(const Octant *) const
Definition ParaTree.cpp:3177
void findAllNodeNeighbours(uint32_t idx, uint32_t node, u32vector &neighbours, bvector &isghost)
Definition ParaTree.cpp:2857
void findGhostAllCodimensionNeighbours(uint32_t idx, u32vector &neighbours, bvector &isghost)
Definition ParaTree.cpp:2918
void getMapping(uint32_t idx, u32vector &mapper, bvector &isghost) const
Definition ParaTree.cpp:3215
void loadBalance(DataLBInterface< Impl > &userData, dvector *weight=NULL)
Definition ParaTree.hpp:666
octantID getPersistentIdx(uint32_t idx) const
Definition ParaTree.cpp:1683
void loadBalance(const dvector *weight=NULL)
Definition ParaTree.cpp:3997
void setNofGhostLayers(std::size_t nofGhostLayers)
Definition ParaTree.cpp:2542
ParaTree(const std::string &logfile=DEFAULT_LOG_FILE, MPI_Comm comm=MPI_COMM_WORLD)
Definition ParaTree.cpp:136
darray3 getFaceCenter(uint32_t idx, uint8_t face) const
Definition ParaTree.cpp:1361
int getPointOwnerRank(const darray3 &point)
Definition ParaTree.cpp:3127
bool getBound(uint32_t idx, uint8_t face) const
Definition ParaTree.cpp:1520
static BITPIT_PUBLIC_API const std::string DEFAULT_LOG_FILE
Definition ParaTree.hpp:119
const std::vector< uint64_t > & getPartitionLastDesc() const
Definition ParaTree.cpp:975
bool adaptGlobalRefine(bool mapper_flag=false)
Definition ParaTree.cpp:3573
octantIterator getInternalOctantsBegin()
Definition ParaTree.cpp:2205
const std::vector< uint64_t > & getPartitionFirstDesc() const
Definition ParaTree.cpp:965
LoadBalanceRanges evalLoadBalanceRanges(dvector *weights)
Definition ParaTree.cpp:4089
const std::vector< uint64_t > & getPartitionRangeGlobalIdx() const
Definition ParaTree.cpp:955
uint32_t getPointOwnerIdx(const double *point) const
Definition ParaTree.cpp:3043
void setBalanceCodimension(uint8_t b21codim)
Definition ParaTree.cpp:2237
darray3 getNode(uint32_t idx, uint8_t node) const
Definition ParaTree.cpp:1385
void writeTest(const std::string &filename, dvector data)
Definition ParaTree.cpp:5871
bool isNodeOnOctant(const Octant *nodeOctant, uint8_t nodeIndex, const Octant *octant) const
Definition ParaTree.cpp:3357
const std::map< int, std::vector< uint32_t > > & getBordersPerProc() const
Definition ParaTree.cpp:2560
const LoadBalanceRanges & getLoadBalanceRanges() const
Definition ParaTree.cpp:2526
bool getFiner(const Intersection *inter) const
Definition ParaTree.cpp:2286
uint64_t computeNodePersistentKey(uint32_t idx, uint8_t node) const
Definition ParaTree.cpp:1501
bool getIsGhost(const Intersection *inter) const
Definition ParaTree.cpp:2304
bool isEdgeOnOctant(const Octant *edgeOctant, uint8_t edgeIndex, const Octant *octant) const
Definition ParaTree.cpp:3398
std::size_t getNofGhostLayers() const
Definition ParaTree.cpp:2534
void findAllCodimensionNeighbours(uint32_t idx, u32vector &neighbours, bvector &isghost)
Definition ParaTree.cpp:2872
void findGhostNeighbours(uint32_t idx, uint8_t face, uint8_t codim, u32vector &neighbours) const
Definition ParaTree.cpp:2725
darray3 getCoordinates(uint32_t idx) const
Definition ParaTree.cpp:1275
octantIterator getPboundOctantsBegin()
Definition ParaTree.cpp:2221
void loadBalance(DataLBInterface< Impl > &userData, uint8_t &level, dvector *weight=NULL)
Definition ParaTree.hpp:717
uint8_t getFace(const Intersection *inter) const
Definition ParaTree.cpp:2322
const u32vector2D & getGhostConnectivity() const
Definition ParaTree.cpp:3895
int getOwnerRank(uint64_t globalIdx) const
Definition ParaTree.cpp:3797
octantIterator getInternalOctantsEnd()
Definition ParaTree.cpp:2213
uint64_t getGlobalNumOctants() const
Definition ParaTree.cpp:788
uint32_t getOut(const Intersection *inter) const
Definition ParaTree.cpp:2352
bool getOutIsGhost(const Intersection *inter) const
Definition ParaTree.cpp:2361
void communicate(DataCommInterface< Impl > &userData)
Definition ParaTree.hpp:602
int getGhostLayer(const Octant *oct) const
Definition ParaTree.cpp:2518
void clearConnectivity(bool release=true)
Definition ParaTree.cpp:3825
void replaceComm(MPI_Comm communicator, MPI_Comm *previousCommunicator=nullptr)
Definition ParaTree.cpp:878
void getCenter(uint32_t idx, darray3 ¢erCoords) const
Definition ParaTree.cpp:1338
darray3 getNodeCoordinates(uint32_t node) const
Definition ParaTree.cpp:3886
u32vector getOwners(const Intersection *inter) const
Definition ParaTree.cpp:2331
const u32vector2D & getConnectivity() const
Definition ParaTree.cpp:3841
void privateLoadBalance(const uint32_t *partition, DataLBInterface< Impl > *userData=nullptr)
Definition ParaTree.hpp:765
virtual void dump(std::ostream &stream, bool full=true)
Definition ParaTree.cpp:502
uint64_t getGhostGlobalIdx(uint32_t idx) const
Definition ParaTree.cpp:1650
uint8_t getBalanceCodimension() const
Definition ParaTree.cpp:2174
void getNormal(uint32_t idx, uint8_t face, darray3 &normal) const
Definition ParaTree.cpp:1433
octantIterator getPboundOctantsEnd()
Definition ParaTree.cpp:2229
Intersection * getIntersection(uint32_t idx)
Definition ParaTree.cpp:2262
Buffer to be used for receive communications.
Definition communications_buffers.hpp:107
Buffer to be used for send communications.
Definition communications_buffers.hpp:91
std::unordered_map< int, std::array< uint32_t, 2 > > ExchangeRanges
Definition ParaTree.hpp:121
