1#ifndef AMREX_ALG_PARTITION_H_
2#define AMREX_ALG_PARTITION_H_
3#include <AMReX_Config.H>
45 [[nodiscard]]
bool empty ()
const {
return m_ref->m_row.empty(); }
52 return m_ref->m_row[myproc+1] - m_ref->m_row[myproc];
57 [[nodiscard]]
int numActiveProcs ()
const {
return m_ref->m_n_active_procs; }
84 explicit Ref (
Long global_size);
87 void define (
Long global_size);
90 void update_n_active_procs ();
93 int m_n_active_procs = 0;
94 int m_single_active_proc = -1;
97 std::shared_ptr<Ref> m_ref;
Definition AMReX_AlgPartition.H:26
Long numGlobalRows() const
Total number of rows covered by the partition.
Definition AMReX_AlgPartition.H:55
int singleActiveProc() const
The sole rank owning rows if numActiveProcs() is one, otherwise -1.
Definition AMReX_AlgPartition.H:59
AlgPartition()
Construct an empty partition that must be defined later.
Definition AMReX_AlgPartition.cpp:5
Long globalRowEnd() const
Exclusive global index end on this process.
Definition AMReX_AlgPartition.H:67
int numActiveProcs() const
Number of MPI ranks that own at least one row.
Definition AMReX_AlgPartition.H:57
bool operator==(AlgPartition const &rhs) const noexcept
Compare partitions for identical layouts.
Definition AMReX_AlgPartition.cpp:36
Long globalRowBegin() const
Inclusive global index begin on this process.
Definition AMReX_AlgPartition.H:62
bool empty() const
True if the partition contains no rows.
Definition AMReX_AlgPartition.H:45
Vector< Long > const & dataVector() const
Underlying array describing row offsets (size nproc+1).
Definition AMReX_AlgPartition.H:72
void define(Long global_size)
Recompute an even partition spanning global_size rows.
Definition AMReX_AlgPartition.cpp:21
Long numLocalRows() const
Number of local rows.
Definition AMReX_AlgPartition.H:50
bool operator!=(AlgPartition const &rhs) const noexcept
Negation of operator==.
Definition AMReX_AlgPartition.cpp:41
Long operator[](int i) const
Starting global row index owned by rank i.
Definition AMReX_AlgPartition.H:48
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:29
amrex_long Long
Definition AMReX_INT.H:30
int MyProcSub() noexcept
my sub-rank in current frame
Definition AMReX_ParallelContext.H:76
Definition AMReX_Amr.cpp:50