10#ifndef IPPL_ORTHOGONAL_RECURSIVE_BISECTION_H
11#define IPPL_ORTHOGONAL_RECURSIVE_BISECTION_H
13#include "FieldLayout/FieldLayout.h"
14#include "Index/Index.h"
16#include "Particle/ParticleAttrib.h"
17#include "Particle/ParticleSpatialLayout.h"
27 template <
class Field,
class Tp =
typename Field::value_type>
29 constexpr static unsigned Dim = Field::dim;
30 using mesh_type =
typename Field::Mesh_t;
31 using Tf =
typename Field::value_type;
54 template <
typename Attrib>
56 const bool& isFirstRepartition);
90 int cutAxis,
int median);
98 template <
typename Attrib>
105#include "Decomposition/OrthogonalRecursiveBisection.hpp"
Definition FieldLayout.h:166
Definition OrthogonalRecursiveBisection.h:28
void cutDomain(std::vector< NDIndex< Dim > > &domains, std::vector< int > &procs, int it, int cutAxis, int median)
Definition OrthogonalRecursiveBisection.hpp:241
void scatterR(const Attrib &r)
Definition OrthogonalRecursiveBisection.hpp:258
int findMedian(std::vector< Tf > &w)
Definition OrthogonalRecursiveBisection.hpp:203
void initialize(FieldLayout< Dim > &fl, mesh_type &mesh, const Field &rho)
Definition OrthogonalRecursiveBisection.hpp:6
void perpendicularReduction(std::vector< Tf > &rankWeights, unsigned int cutAxis, NDIndex< Dim > &dom)
Definition OrthogonalRecursiveBisection.hpp:134
bool binaryRepartition(const Attrib &R, FieldLayout< Dim > &fl, const bool &isFirstRepartition)
Definition OrthogonalRecursiveBisection.hpp:14
int findCutAxis(NDIndex< Dim > &dom)
Definition OrthogonalRecursiveBisection.hpp:125