Hi,
I'm writing a code using PETSc to solve NS equations with FV on an
unstructured mesh. Therefore I use DMPlex.
Regarding periodicity, I manage to implement it this way:
- for each couple of boundaries that is linked with periodicity, I
create a buffer vector with an ISLocalToGlobalMapping
- then, when I need to fill the ghost cells corresponding to the
periodicity, the i "true" cell of the local vector fills the buffer
vector on location i with VecSetValuesBlockedLocal, then
VecAssemblyBegin/VecAssemblyEnd ensure each value is send to the correct
location thanks to the mapping, then the i "ghost" cell of the local
vector reads the vector on location i to get it's value.
It works, but it seems to me there is a better way, with maybe PetscSF,
VecScatter, or something I don't know yet. Does anyone have any advice ?
Pierre Seize