Sambit, I am using the GridTools::collect_periodic_faces(..) as a sanity check > after moving the triangulation. I donot again set periodicity constraints. > The documentation also mentions "it is possible to call this function > several times with different boundary ids to generate a vector with all > periodic pairs". Moreover, in my actual application I never do refinement > as I read a pre-generated mesh file, where the similar error occurs after > moving the triangulation. > The problem with a distributed mesh is that in general not all processes know about the locations of all the vertices after the mesh has been moved. Luckily, it should be sufficient to call GridTools::collect_periodic_faces(..) only once for the coarse mesh before moving since only matching faces are stored. Calling add_periodicity <https://dealii.org/developer/doxygen/deal.II/classparallel_1_1distributed_1_1Triangulation.html#a7a3f626abb92aca7040eaa2c160686a0> beforehand should make sure that all the information on the locations of vertices and degrees of freedom across periodic boundaries is available to all relevant processes. This is important if you intend to use make_periodicity_constraints.
> I did two more checks in the minimal example- > 1) by not calling GridTools::collect_periodic_faces(..) after refinement, > I do not get any error messages. But is there a way to check whether the > periodic match still holds in the moved triangulation without calling > GridTools::collect_periodic_faces(..)? > You can of course just inspect the content of the std::vector< PeriodicFacePair< typename MeshType::cell_iterator > > & matched_pairs, It stores PeriodicFacePairs <https://www.dealii.org/developer/doxygen/deal.II/structGridTools_1_1PeriodicFacePair.html> that contain two cell iterator and the relevant face numbers. From these information you can obtain for example the center of the two faces. Since no positions are stored, matched_pairs should still be valid after moving the mesh if done consistently. > 2) by placing the GridTools::collect_periodic_faces(..) before moving the > triangulation but after refinement, it worked fine on serial and parallel, > which suggests something breaking after movement. > Yes, see above. Best, Daniel -- The deal.II project is located at http://www.dealii.org/ For mailing list/forum options, see https://groups.google.com/d/forum/dealii?hl=en --- You received this message because you are subscribed to the Google Groups "deal.II User Group" group. To unsubscribe from this group and stop receiving emails from it, send an email to dealii+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.