|
OPALX (Object Oriented Parallel Accelerator Library for Exascale) MINIorX
OPALX
|
#include <OrthogonalRecursiveBisection.h>

Public Member Functions | |
| void | initialize (FieldLayout< Dim > &fl, mesh_type &mesh, const Field &rho) |
| template<typename Attrib > | |
| bool | binaryRepartition (const Attrib &R, FieldLayout< Dim > &fl, const bool &isFirstRepartition) |
| int | findCutAxis (NDIndex< Dim > &dom) |
| void | perpendicularReduction (std::vector< Tf > &rankWeights, unsigned int cutAxis, NDIndex< Dim > &dom) |
| int | findMedian (std::vector< Tf > &w) |
| void | cutDomain (std::vector< NDIndex< Dim > > &domains, std::vector< int > &procs, int it, int cutAxis, int median) |
| template<typename Attrib > | |
| void | scatterR (const Attrib &r) |
Public Attributes | |
| Field | bf_m |
Private Types | |
| using | mesh_type = typename Field::Mesh_t |
| using | Tf = typename Field::value_type |
Static Private Attributes | |
| static constexpr unsigned | Dim = Field::dim |
Definition at line 28 of file OrthogonalRecursiveBisection.h.
|
private |
Definition at line 30 of file OrthogonalRecursiveBisection.h.
|
private |
Definition at line 31 of file OrthogonalRecursiveBisection.h.
| bool ippl::OrthogonalRecursiveBisection< Field, Tp >::binaryRepartition | ( | const Attrib & | R, |
| FieldLayout< Dim > & | fl, | ||
| const bool & | isFirstRepartition | ||
| ) |
Performs scatter operation of particle positions in field (weights) and repartitions FieldLayout's global domain
| Attrib | the particle attribute type (memory space must be accessible to field memory) |
| R | Weights to scatter |
| fl | FieldLayout |
| isFirstRepartition | boolean which tells whether to scatter or not |
Definition at line 14 of file OrthogonalRecursiveBisection.hpp.
References ippl::FieldLayout< Dim >::comm, ippl::FieldLayout< Dim >::getDomain(), IpplTimings::getTimer(), ippl::mpi::Communicator::size(), IpplTimings::startTimer(), and IpplTimings::stopTimer().

| void ippl::OrthogonalRecursiveBisection< Field, Tp >::cutDomain | ( | std::vector< NDIndex< Dim > > & | domains, |
| std::vector< int > & | procs, | ||
| int | it, | ||
| int | cutAxis, | ||
| int | median | ||
| ) |
Splits the domain given by the iterator along the cut axis at the median, the corresponding index will be cut between median and median+1
| domains | Set of subdomains which will be cut |
| procs | Set of ranks count associated to each subdomain |
| it | Iterator |
| cutAxis | Index of cut axis |
| median | Median |
Definition at line 241 of file OrthogonalRecursiveBisection.hpp.
References first(), and ippl::NDIndex< Dim >::split().

| int ippl::OrthogonalRecursiveBisection< Field, Tp >::findCutAxis | ( | NDIndex< Dim > & | dom | ) |
Find cutting axis as the longest axis of the field layout.
| dom | Domain to reduce |
Definition at line 125 of file OrthogonalRecursiveBisection.hpp.
References ippl::NDIndex< Dim >::begin(), and ippl::NDIndex< Dim >::end().

| int ippl::OrthogonalRecursiveBisection< Field, Tp >::findMedian | ( | std::vector< Tf > & | w | ) |
Find median of array
| w | Array of real numbers |
Definition at line 203 of file OrthogonalRecursiveBisection.hpp.
| void ippl::OrthogonalRecursiveBisection< Field, Tp >::initialize | ( | FieldLayout< Dim > & | fl, |
| mesh_type & | mesh, | ||
| const Field & | rho | ||
| ) |
Initialize member field with mesh and field layout
| fl | |
| mesh | Mesh |
| rho | Density field |
Definition at line 6 of file OrthogonalRecursiveBisection.hpp.
| void ippl::OrthogonalRecursiveBisection< Field, Tp >::perpendicularReduction | ( | std::vector< Tf > & | rankWeights, |
| unsigned int | cutAxis, | ||
| NDIndex< Dim > & | dom | ||
| ) |
Performs reduction on local field in all dimension except that determined by cutAxis, stores result in res
| rankWeights | Array giving the result of reduction |
| cutAxis | Index of cut axis |
| dom | Domain to reduce |
Definition at line 134 of file OrthogonalRecursiveBisection.hpp.
References ippl::apply(), begin(), Dim, end(), ippl::fence(), first(), ippl::NDIndex< Dim >::first(), ippl::max(), ippl::min(), and ippl::parallel_reduce().

| void ippl::OrthogonalRecursiveBisection< Field, Tp >::scatterR | ( | const Attrib & | r | ) |
Scattering of particle positions in field using a CIC method
| Attrib | the particle attribute type (memory space must be accessible to field memory) |
| r | Weights |
Definition at line 258 of file OrthogonalRecursiveBisection.hpp.
References Dim, ippl::NDIndex< Dim >::first(), ippl::FieldLayout< Dim >::getLocalNDIndex(), ippl::parallel_for(), and ippl::detail::scatterToField().

| Field ippl::OrthogonalRecursiveBisection< Field, Tp >::bf_m |
Definition at line 35 of file OrthogonalRecursiveBisection.h.
|
staticconstexprprivate |
Definition at line 29 of file OrthogonalRecursiveBisection.h.