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.

Reply via email to