1

I am trying to implement Adaptive Mesh Refinement. I am not a Mathematics/Computational Science person so I will try to write the algorithm in a simpler way. I will be grateful if experts can comment on the correctness of steps:

Aim: To solve Laplace Equation with Dirichlet boundary conditions i.e. $\nabla^{2} u = 0 $ and $u = 1$ on $\partial \Omega$. Assume 3 levels of static refinement (say for 2-D mesh on $[0,1]$ I refine cells with $x^{2}+y^{2}>0.7$ and $x^{2}+y^{2}<0.9$, where $x, y$ are coordinates).

  1. Initialize $u = 0$ on all levels.
  2. Solve on coarsest level (level 1) using 5-pt stencil Jacobi iterations. The initial value of $u$ at level 2 is used as Coarse-Fine interface value.
  3. Exchange ghost cells for parallel implementation at coarsest level.
  4. Interpolate coarse grid cells at level 1 to fill ghost cells at level 2.
  5. Solve on level 2. The initial value of $u$ at level 3 is used as Coarse-Fine interface value (and also the interpolated values in ghost cells).
  6. Exchange ghost cells for parallel implementation at level 2.
  7. Repeat same at level 3.
  8. Now restrict from level 3 to 2 and level 2 to 1 (so that coarser grids see some part of the solution at finer grids).

Repeat these steps.

Are these steps correct ?

(In 3-D my mesh looks like the following)

3 level mesh in 3-D

aeroNotAuto
  • 270
  • 3
  • 6
Gaurav Saxena
  • 467
  • 2
  • 11
  • 3
    What you're describing sounds more like a (geometric) multigrid method for solving the linear system arising from finite difference discretization of the Laplace equation (which is a linear PDE, so "initial value" makes no sense at that point). An adaptive mesh refinement would be something like this: 1. Solve the Laplace equation on a coarse grid. 2. Use an a posteriori error estimator to find regions where the discretization error is particularly large. 3. Construct a new grid that is denser in the regions identified in step 2. Repeat. TL;DR: static adaptive mesh refinement is an oxymoron. – Christian Clason Sep 15 '16 at 14:33
  • @ChristianClason: Thanks! It sounds like Geometric Multigrid indeed. As of now for practice I just want to refine according to a static geometry and not dynamically. You are right about the oxymoron. But I am majorly looking for the process that needs to be carried out at the Coarse-Fine (C-F) interfaces. Can you please comment on that ? Thanks again. – Gaurav Saxena Sep 15 '16 at 14:39
  • I cannot, since I'm not an expert on multigrid techniques. You should probably start with looking through some references (some are listed here), if you haven't already; in particular, look for the restriction and prolongation operators (there are also some questions about those on this site). You might also want to look at multilevel methods; maybe these lectures notes can be helpful: https://www.mathematik.uni-wuerzburg.de/~borzi/lnmgopt.pdf. Googling "adaptive multigrid" also yields a lot of hits that seem relevant. – Christian Clason Sep 15 '16 at 14:48
  • Can you display a drawing of the mesh you are dealing with ? Is your problem about values interpolation between the coarse and the fine mesh ? – Coriolis Sep 15 '16 at 16:47
  • @Coriolis: Thanks. I added a Figure in 3-D. I used BoxLib library and VisIt. Yes my question is about (1) What is the exact sequence of steps in AMR and (2) What happens at C-F interfaces. – Gaurav Saxena Sep 15 '16 at 20:56
  • Christian Clason gives you a pretty good summary of what AMR steps are. Also there is not a single way to carry out AMR computations, it depends on the data structure. Have you read the User Guide of BoxLib ? I found useful information that can answer parts of your question. – Coriolis Sep 16 '16 at 06:51
  • 1
    The definitive paper about multigrid in the presence of locally refined meshes is Janssen, B. & Kanschat, G.: "Adaptive multilevel methods with local smoothing for H1- and Hcurl-conforming high order finite element methods", SIAM J. Sci. Comput. 33(4) , pp.2095-2114. 2011. – Wolfgang Bangerth Sep 16 '16 at 22:43

0 Answers0