Pratik,
Thank you for your reply. If I understand it correctly, in step 4 of the
ParallelDistributed::distribute_dofs() function in the dof_handler.cc file you
compute and flag the cells that have ghost neighbours by looking at only the
vertices by calling the function compute_vertices_with_ghost_neighbors() as
you say above.
Yes. In essence, you have to find out which locally owned cell is a ghost cell
on some other processor. If you have only one layer of ghost cells around,
looking at which vertices are adjacent to ghost cells, and then checking which
locally owned cells are adjacent to these vertices is enough.
But if you have multiple ghost layers, this logic is not enough any more. You
will have to find a different algorithm to determine which of the locally
owned cells are ghosts somewhere else, and where. This will likely not be
trivial and I would guess involves communication in some way. It will require
some serious thinking.
This uses the internal::p4est::p4est_iterate function to iterate the member
variable of the struct FindGhosts.vertices_with_ghosts_neighbors which is a
map of the cells and its subdomain id's through the find_ghost_faces() and
find_ghost_corners() for 2d and find_ghost_edges() functions as well for 3d
and flag those cells which have a face, corner or edge with.a ghost cell ?
I should be able to use this p4est_iterate function to search through the
cells (even ghosts) and add them to the map right ? I am not sure how to do
this. Could you please give me some pointers on this ?
I don't know. I don't know the details of p4est_iterate, and I would have to
put some deep thought into how exactly I would want to write this algorithm.
If I understand correctly, the function p4est_iterate takes these function
pointers (find_ghost_faces() ... ) and user structs ( FindGhosts )and iterates
it through the parallel_forest. But I am not sure how to write a function that
searches through the ghost cells and flags them and if that is all is needed
for this and how do I make sure that the appropriate pairs are flagged for
receiving and sending from and to the appropriate domains ?
I don't know that either. As I said, I don't think that there is an easy
criterion for whether a locally owned cell is a ghost cell somewhere else if
you have more than one layer of cells.
You could, however, do it recursively. You know that if a cell is a ghost cell
on processor X, then all of its (locally owned) vertex neighbors are also
ghost cells on processor X if you have two layers of ghost cells. And so
forth. In other words, this would allow you to write the algorithm in a
recursive way.
Best
W.
--
------------------------------------------------------------------------
Wolfgang Bangerth email: bange...@colostate.edu
www: http://www.math.colostate.edu/~bangerth/
--
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.