[aspect-devel] periodic domains

Timo Heister heister at clemson.edu
Wed Sep 11 09:54:00 PDT 2013


> The way this is currently done can only work for Cartesian boxes because (i)
> the GeometryModel::Interface::get_periodic_boundary_pairs() function returns
> something that deals with Cartesian directions, and (ii) in core.cc we now
> call the version of DoFTools::make_periodicity_constraints() that expects
> this. This way, we can not deal with periodic boundary conditions on, for
> example, the sides of a quarter 2d hyper shell.

correct.

> Would it make sense to change the interface of get_periodic_boundary_pairs()
> so that it returns the output of GridTools::identify_periodic_face_pairs()
> and then in core.cc just call the other version of
> DoFTools::make_periodicity_constraints()?

Yes, I was thinking about changing this but decided to commit what we
have so far. Thanks for bringing this up.

I am somewhat confused about the different versions for
make_periodicity_constraints (and I think we need to clean those up!).
There is no version of make_periodicity_constraints that accepts a

 std::vector<std_cxx1x::tuple< typename
parallel::distributed::Triangulation<dim>::cell_iterator, unsigned int
/*face index*/,
                                      typename
parallel::distributed::Triangulation<dim>::cell_iterator, unsigned int
/*face index*/> >

coming out of identify_periodic_face_pairs() right now. The closest one is

(const FaceIterator &face_1, const typename identity< FaceIterator
>::type &face_2,::ConstraintMatrix &constraint_matrix, const
ComponentMask &component_mask=ComponentMask(), const bool
face_orientation=true, const bool face_flip=false, const bool
face_rotation=false)

but I don't know how to construct the bool flags (or if this is even
possible in general, because identify_periodic_face_pairs() does not
allow for flipping the direction for the periodic boundary to say make
a moebius strip). This might be necessary for a half shell (not sure
though).

So, I think what we need to return in the interface is something like
std::vector of
  std::tuple of
    cell_iterator1, face_index1, cell_iterator2, face_index2, bool flip

Or am I wrong?

-- 
Timo Heister
http://www.math.clemson.edu/~heister/


More information about the Aspect-devel mailing list