1. I tried out the p4est_ghost_expand as Wolfgang suggested, but it gives me an error because for some reason I get if(cell->is_ghost){cell->user_flag_set()==true} after the calls communicate_dof_indices_on_marked_cells() in dof_handler_policy.cc line 3875. I believe the function communicate_dof_indices_on_marked_cells() in line 3492 in the same file exchanges the dof indices (sending the local cells that are ghost somewhere else and receiving its ghost cells from other procs) but the unpack function should identify all the cells marked as ghost and receive the corresponding indices from the pack function, right ? Or have I misunderstood something here ?

Hm, good point. When we decide who each process needs to send the locally owned DoF indices to (so that they can be set on ghost cells on the receiving process), we determine the cells in question by asking whether one of their vertices is adjacent to a ghost cell -- in other words, whether a cell is at the boundary of the locally owned subdomain.

But if you have more than one layer of ghost cells, then this is not enough. I think you need to extend the logic in a way where each process sends a list of its ghost cells to the owning process of these cells, and then gets the information back for exactly those cells. That may be a little bit of work, but I don't think it's going to be terribly difficult to implement. Let us know if you need help with this.

2. All places in example 40 (my reference) for the matrix and rhs assembly, you use the locally_relevant_dofs and locally_owned_dofs. As you say in the Glossary <http://dealii.org/developer/doxygen/deal.II/DEALGlossary.html#GlossParallelScaling>, for locally_active_dofs

" Since degrees of freedom are owned by only one processor, degrees of freedom on interfaces between cells owned by different processors may be owned by one or the other, so not all degrees of freedom on a locally owned cell are also locally owned degrees of freedom."

And hence you assemble your local matrices with the locally_owned_dofs. But for the overlapped decomposition, I need to assemble matrices including the "ghost cells" . In my case, they wouldn't be ghost cells but locally owned cells but duplicated between logically overlapping processes. I am not really sure how to go about doing this.

This is what I tried to explain in my previous email: on each process, you need a separate enumeration of all degrees of freedom that live on that process (either on locally owned or ghost cells). This enumeration must be independent of the "global" enumeration we typically use in deal.II which uniquely splits up all DoF indices among the processors.


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 
--- 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