# Periodic Boundary conditions in ParallelStencil / ImplicitGlobalGrid

**URL:** <https://discourse.julialang.org/t/periodic-boundary-conditions-in-parallelstencil-implicitglobalgrid/69670>\
**Category:** Modelling & Simulations\
**Tags:** question, diffeq\
**Created:** [October 13, 2021, 8:44am UTC](https://discourse.julialang.org/t/periodic-boundary-conditions-in-parallelstencil-implicitglobalgrid/69670 "2021-10-13T08:44:15Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![gerhardu](https://avatars.discourse-cdn.com/v4/letter/g/eb8c5e/32.png) [@gerhardu](https://discourse.julialang.org/u/gerhardu)\
**Post date:** [October 13, 2021, 8:44am UTC](https://discourse.julialang.org/t/periodic-boundary-conditions-in-parallelstencil-implicitglobalgrid/69670/1 "2021-10-13T08:44:15Z")

</div>

Hello,  
i want to solve a pde with periodic boundary conditions on multiple processors.  
There is a good way to do it with Petsc, but i would like to move to julia.

Is there a way to do this with ParallelStencil / ImplicitGlobalGrid?  
I could not figure out how to make this work. Any suggestions or alternative packages are welcome!  
thanks

---

<div class="post-metadata">

**Author:** ![luraess](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/luraess/32/16189_2.png) [@luraess](https://discourse.julialang.org/u/luraess)\
**Post date:** [October 13, 2021, 9:01am UTC](https://discourse.julialang.org/t/periodic-boundary-conditions-in-parallelstencil-implicitglobalgrid/69670/2 "2021-10-13T09:01:43Z")

</div>

Hi @gerhardu and welcome!

> solve a pde with periodic boundary conditions on multiple processors […] Is there a way to do this with ParallelStencil / ImplicitGlobalGrid?

Yes, using [ParallelStencil](https://github.com/omlins/ParallelStencil.jl) and [ImplicitGlobalGrid](https://github.com/eth-cscs/ImplicitGlobalGrid.jl), periodic boundary condition implementation is straight forward.

From [this example](https://github.com/eth-cscs/ImplicitGlobalGrid.jl#50-lines-multi-gpu-example), just modify the `init_global_grid()` accordingly and you should have the 3D diffusion running periodic in `x,y,z` dims:

```julia
init_global_grid(nx, ny, nz; periodx=1, periody=1, periodz=1)

```

Note that for the CPU version of the code, modify the `init_global_grid()` [in here](https://github.com/eth-cscs/ImplicitGlobalGrid.jl/blob/caa1510781259121d3ec2cf7b988d8f2810a7025/docs/examples/diffusion3D_multicpu.jl#L20).

---

<div class="post-metadata">

**Author:** ![gerhardu](https://avatars.discourse-cdn.com/v4/letter/g/eb8c5e/32.png) [@gerhardu](https://discourse.julialang.org/u/gerhardu)\
**Post date:** [October 14, 2021, 10:53am UTC](https://discourse.julialang.org/t/periodic-boundary-conditions-in-parallelstencil-implicitglobalgrid/69670/3 "2021-10-14T10:53:25Z")

</div>

Great thanks!
