copy_triangulation removes limit_level_difference_at_vertices flag

13 views
Skip to first unread message

Michał Wichrowski

unread,
Jan 8, 2019, 6:53:22 AM1/8/19
to deal.II User Group
Dear all,
I noticed that if I do the following:

parallel::distributed::Triangulation<dim>  
triangulation(MPI_COMM_WORLD,
parallel::distributed::Triangulation<dim>::limit_level_difference_at_vertices,
       parallel::distributed::Triangulation<dim>::construct_multigrid_hierarchy);

  Triangulation<dim>  other_tria;
  //do something with other tria
triangulation.copy_triangulation(other_tria);

dof_handler_u.distribute_dofs(fe_velocity);
dof_handler_u.distribute_mg_dofs();
I got an error: 

An error occurred in line <1275> of file </home/mwichro/lib/dealii/source/dofs/dof_handler.cc> in function
    void dealii::DoFHandler<dim, spacedim>::distribute_mg_dofs() [with int dim = 2; int spacedim = 2]
The violated condition was: 
    ((tria->get_mesh_smoothing() & Triangulation<dim, spacedim>::limit_level_difference_at_vertices) != Triangulation<dim, spacedim>::none)
Additional information: 
    The mesh smoothing requirement 'limit_level_difference_at_vertices' has to be set for using multigrid!

This is fixed by   Triangulation<dim>  other_tria(Triangulation<dim>::limit_level_difference_at_vertices);

Is this intendent to work like that or it is a bug?

Michał

Daniel Arndt

unread,
Jan 8, 2019, 5:42:06 PM1/8/19
to deal.II User Group
Michal,

not setting `limit_level_difference_at_vertices` when copying a parallel::distributed::Triangulation can be considered an oversight/bug.
Do you want to create a PR for fixing this?

Best,
Daniel

Michał Wichrowski

unread,
Jan 10, 2019, 5:37:55 AM1/10/19
to deal.II User Group
Reply all
Reply to author
Forward
0 new messages