in the example mgpcg_advanced,

the function prolongate is like this:

```
@ti.kernel
def prolongate(self, l: ti.template()):
for I in ti.grouped(self.z[l]):
self.z[l][I] = self.z[l + 1][I // 2]
```

which means: z_l = prolongate(z_(l+1)),

but refer to the paper, “A parallel multigrid Poisson solver for fluids simulation on large grids”,

I think the code should be like this:

z_l += prolongate(z_(l+1)).

```
@ti.kernel
def prolongate(self, l: ti.template()):
for I in ti.grouped(self.z[l]):
self.z[l][I] += self.z[l + 1][I // 2]
```

So I changed the code and the new mgpcg can converge.

I’m very confused which implementation is correct. Why both of them can converge?