For a start I need to implement a 2-D, vertex centered, finite difference scheme, Adaptive mesh refinement serial code. I have the following doubts before starting:

  1. Is the input to AMR (say 2-D) always a box bounding the entire domain ?
  2. Is a cell-centerd scheme easier to implement than vertex centred scheme ?
  3. Do I need to store geometrical information of cells/vertices (cell means a box and vertex means its 4 corners) ?
  4. Is Quadtree the only method for implementing a 2-D AMR ?
  • $\begingroup$ You have some very fundamental questions. What literature have you read? What research have you already done? Do you have experience with non-adaptive meshes? $\endgroup$ Jan 22, 2016 at 0:45
  • $\begingroup$ @WolfgangBangerth: Thank you for your reply. I have implemented a Parallel Geometric Multigrid using C and MPI for a Laplacian using a finite difference and vertex centered approach. The problem is I never specified the geometric dimensions of the physical domain and started directly with the discretisation (3-D arrays on each process representing unknown variables). For AMR I see people using Finite element, cell-centered approach). I want to understand how to specify the input physical domain, create quad tree in C for vertex centred finite difference AMR - serial/parallel). $\endgroup$ Jan 22, 2016 at 12:12
  • $\begingroup$ @WolfgangBangerth: Apologies for not going through your very helpful videos but I believe they explain finite element and not finite difference implementations using deal.II. I want to understand what goes on beneath the surface first. $\endgroup$ Jan 22, 2016 at 12:15
  • $\begingroup$ Yes, the videos aren't going to help you here. $\endgroup$ Jan 22, 2016 at 19:45

1 Answer 1


I'll try to answer your questions one-by-one, though I'm afraid that they are so basic that these answers alone won't be able to help you very much in the long run:

1/ No, one can run AMR on any starting mesh. It doesn't have to be a square. A few examples of adaptive meshes on other domains are here: https://github.com/dealii/dealii/wiki/Gallery

2/ Cell-centered and vertex-centered schemes are, in some sense, dual to each other. You can often think of one in terms of the other defined on a shifted mesh. I imagine both of them to be equally easy/difficult to implement.

3/ As long as you are on the unit square, you can compute the locations of vertices of a cell if you know how you arrived at that cell by mesh refinement. On the other hand, if you start with any other mesh, you will have to store the locations of vertices.

4/ There are other approaches to doing AMR than using quadtrees. For example, you could do longest-edge bisection or red-green refinement for triangles. (Since you already found my video lectures, this would be lecture 15.) Quadtrees are a particularly useful approach for quadrilaterals, though.


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.