Skip to content

Commit

Permalink
Merge pull request #5252 from tjhei/2.5-5251
Browse files Browse the repository at this point in the history
[2.5] take over #5251: fix for latest deal.II master: support cell_weight
  • Loading branch information
gassmoeller committed Jul 10, 2023
2 parents ac01e1f + 1bb33f8 commit 8b384b9
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 5 deletions.
6 changes: 6 additions & 0 deletions include/aspect/particle/world.h
Original file line number Diff line number Diff line change
Expand Up @@ -230,9 +230,15 @@ namespace aspect
* before a refinement step. A weight is attached to every cell
* depending on the number of contained particles.
*/
#if DEAL_II_VERSION_GTE(9,6,0)
unsigned int
cell_weight(const typename parallel::distributed::Triangulation<dim>::cell_iterator &cell,
const CellStatus status);
#else
unsigned int
cell_weight(const typename parallel::distributed::Triangulation<dim>::cell_iterator &cell,
const typename parallel::distributed::Triangulation<dim>::CellStatus status);
#endif

/**
* Update the particle properties if necessary.
Expand Down
31 changes: 26 additions & 5 deletions source/particle/world.cc
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,16 @@ namespace aspect
{
CitationInfo::add("particles");
if (particle_load_balancing & ParticleLoadBalancing::repartition)
#if DEAL_II_VERSION_GTE(9,4,0)
this->get_triangulation().signals.weight.connect(
#if DEAL_II_VERSION_GTE(9,6,0)
[&] (const typename parallel::distributed::Triangulation<dim>::cell_iterator &cell,
const CellStatus status)
-> unsigned int
#else
this->get_triangulation().signals.cell_weight.connect(
#endif
[&] (const typename parallel::distributed::Triangulation<dim>::cell_iterator &cell,
const typename parallel::distributed::Triangulation<dim>::CellStatus status)
-> unsigned int
#endif
{
return this->cell_weight(cell, status);
});
Expand Down Expand Up @@ -390,7 +392,12 @@ namespace aspect
template <int dim>
unsigned int
World<dim>::cell_weight(const typename parallel::distributed::Triangulation<dim>::cell_iterator &cell,
const typename parallel::distributed::Triangulation<dim>::CellStatus status)
#if DEAL_II_VERSION_GTE(9,6,0)
const CellStatus status
#else
const typename parallel::distributed::Triangulation<dim>::CellStatus status
#endif
)
{
if (cell->is_active() && !cell->is_locally_owned())
return 0;
Expand All @@ -400,6 +407,20 @@ namespace aspect
unsigned int n_particles_in_cell = 0;
switch (status)
{
#if DEAL_II_VERSION_GTE(9,6,0)
case CellStatus::cell_will_persist:
case CellStatus::cell_will_be_refined:
n_particles_in_cell = particle_handler->n_particles_in_cell(cell);
break;

case CellStatus::cell_invalid:
break;

case CellStatus::children_will_be_coarsened:
for (const auto &child : cell->child_iterators())
n_particles_in_cell += particle_handler->n_particles_in_cell(child);
break;
#else
case parallel::distributed::Triangulation<dim>::CELL_PERSIST:
case parallel::distributed::Triangulation<dim>::CELL_REFINE:
n_particles_in_cell = particle_handler->n_particles_in_cell(cell);
Expand All @@ -412,7 +433,7 @@ namespace aspect
for (const auto &child : cell->child_iterators())
n_particles_in_cell += particle_handler->n_particles_in_cell(child);
break;

#endif
default:
Assert(false, ExcInternalError());
break;
Expand Down

0 comments on commit 8b384b9

Please sign in to comment.