Problem statement

I implemented geometric multigrid for $-\nabla^{2}=f$ where $f=\frac{3\pi^{2}}{4}sin \frac{\pi x}{2} sin \frac{\pi y}{2} sin \frac{\pi z}{2}$ on $\Omega \in [0,1]$ on a unit cube. Dirichlet boundaries on the left face, bottom face and front face is 0. Neumann boundaries on the top, right and back face are $\frac{\partial u }{\partial n} = 0$.


A multigrid method is used to solve the equation. I approximate the ghost points at the Neumann boundary using the central difference formula.

Method overview (from comments, confirmed by the author): Start from the fine mesh (the final mesh the equation to be solved with), proceed to the coarser mesh to compute the correction, propagate it back and smooth at the end of the multigrid procedure.


The problem is when I fix my coarsest grid (say to 16x16x16) and measure V-cycles for increasing fine grid sizes, my V-cycles are not constant. I read in the book MULTIGRID by Trottenberg et. al. that we need to use a modified Full Weighted restriction operator to prevent incorrect scaling at Neumann boundaries. Further, I am unable to understand this modified full restriction operator mentioned in the book.

In another example where I implemented a mixed Dirichlet-Neumann problem $-\nabla^{2}=0$ where $u = 1 + x + y + z$ at Dirichlet boundaries I did not need to use this modified operator for convergence (fixed coarsest grid and increasing finest grid, the V-cycles remained constant).


Could the "modified Full Weighted restriction" be causing a deterioration in the convergence rate?

Please suggest/explain.

  • 1
    $\begingroup$ Can you explain the multigrid procedure that you are using? I'm familiar with starting from a fine mesh (the final mesh you want to solve the equation), then going to coarse to compute the correction, then prolpngate back (and smooth a couple times at the end).. is this your procedure? Also, it might be helpful if you include a convergence vs. iteration for a few meshes (course and fine). $\endgroup$
    – Charles
    Commented Mar 25, 2017 at 6:29
  • 1
    $\begingroup$ @Charlie: Apologies for late reply. My procedure is exactly as you described. The problem was that in the 'sine' terms example, we will need to modify the stencil near the boundaries as described in Trottenberg. I was just plain lucky to get the second example right without a modified stencil at the boundary. Actually another way is to double the residual near the boundary and use an unmodified stencil operator to perform restriction. In sometime I will try my best to write the full explanation as an answer ! $\endgroup$ Commented May 15, 2017 at 9:06

1 Answer 1


Your initial guess can generate a large residual near the Neumann boundary. Depending on the restriction method, this residual might not decrease as desired.

What I'd try is to instead of a V-cycle use an FMG cycle. Because the FMG-cycle starts at the coarsest grid, you will have a reasonable guess near your Neumann boundary condition at finer levels. In my experience, FMG works fine with Neumann boundary conditions.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.