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

Reply via email to