36class BalancedGranularityPartitionPolicy
37 :
public dealii::RepartitioningPolicyTools::Base<dim, spacedim>
40 BalancedGranularityPartitionPolicy(
unsigned int const n_mpi_processes)
41 : n_mpi_processes_per_level{n_mpi_processes}
45 virtual ~BalancedGranularityPartitionPolicy(){};
47 virtual dealii::LinearAlgebra::distributed::Vector<double>
48 partition(dealii::Triangulation<dim, spacedim>
const & tria_coarse_in)
const override
50 dealii::types::global_cell_index
const n_cells = tria_coarse_in.n_global_active_cells();
58 unsigned int const grain_size_limit =
59 std::min<unsigned int>(200, 8 * n_cells / n_mpi_processes_per_level.back() + 1);
61 dealii::RepartitioningPolicyTools::MinimalGranularityPolicy<dim, spacedim> partitioning_policy(
63 dealii::LinearAlgebra::distributed::Vector<double>
const partitions =
64 partitioning_policy.partition(tria_coarse_in);
68 n_mpi_processes_per_level.push_back(
static_cast<unsigned int>(partitions.linfty_norm()) + 1);
73 mutable std::vector<unsigned int> n_mpi_processes_per_level;