Maurice,

make_periodicity_constraints loops (recursively) over all faces referenced
in a PeriodicFacePair and applies constraints. You could copy the
implementation in
https://www.dealii.org/developer/doxygen/deal.II/dof__tools__constraints_8cc_source.html#l02269
and modify accordingly or set up an empty ConstraintMatrix objects and
modify the constraints created by make_periodicity_constraints to your
needs.

Best,
Daniel

Am Mo., 16. Nov. 2020 um 10:09 Uhr schrieb 'maurice rohracker' via deal.II
User Group <dealii@googlegroups.com>:

> Dear deal.II community,
>
> For a software project at FAU Erlangen-Nuremberg, I implemented a
> distributed memory parallel version of a homogenization problem.
>
> Since we handle periodicity with an offset value, I implemented the
> periodic BC in the following manner:
>
>
>    1. Read mesh
>    2. Collect periodic faces (triangulation)
>    3. Add periodic faces to triangulation
>    4. Collect periodic faces (dofHandler)
>    5. Make periodic constraint and set inhomogeneity to periodic DOFs on
>    the boundary.
>
> Next step would be to add a mesh refinement. My first try was adding
> `triangulation.refine_global(nGlobalRefinement);` after the third step.
>
> Unfortunately, when we try to access cells with `!cell.is_artificial()`
> from the resulting vector of `collect_periodic_faces()` to get all locally
> relevant boundary cells to add the inhomogeneity, the following assertion
> is raised:
>
> The violated condition was:
> this->active()
> Additional information:
> is_artificial() can only be called on active cells!
>
> Looking at the doc of `collect_periodic_faces` (This function will collect
> periodic face pairs on the coarsest mesh level of the given mesh (a
> Triangulation
> <https://www.dealii.org/9.0.0/doxygen/deal.II/classTriangulation.html> or
> DoFHandler
> <https://www.dealii.org/9.0.0/doxygen/deal.II/classDoFHandler.html>) and
> add them to the vector matched_pairs leaving the original contents
> intact.)  the resulting vector will only contain parent cells, on which the
> call `is_artifiical()` is not possible.
>
> So we thought if we change the `cell_iterator` in `collect_periodic_faces`
> to `active_cell_iterator` we get a vector containing the child cells (on
> which `is_artifical()` is allowed)? Because we would assume that child
> cells are active and therefore, our previous approach would work again. But
> this did not help either.
>
> If this question might be a bit to complex, I would also prepare a minimal
> example.
>
> Is there a going round to get a similar results as with
> `collect_periodic_faces`, i.e. a vector containing all refined periodic
> cells.
>
> Thanks for your support in advance.
>
> Best, Maurice
>
>
> --
> 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.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/dealii/8ba32635-dbf3-41ca-b2f3-b44760702e60n%40googlegroups.com
> <https://groups.google.com/d/msgid/dealii/8ba32635-dbf3-41ca-b2f3-b44760702e60n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/CAOYDWbLO7u7oY%2B%3DjFwsY47ph-ObnPky%2BmUR52aiCpz-Rm0JkCw%40mail.gmail.com.

Reply via email to