{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Definition\n\nLet $\\mathcal{T}_0$ be an initial mesh of a domain $\\Omega$, and fix a discretization such as the [[finite element method|98GZ9DVHTA]].\nLet an error indicator assign a number $\\eta_K(\\mathcal{T}) \\ge 0$ to each element $K$ of each mesh $\\mathcal{T}$.\n*Adaptive mesh refinement* builds meshes $\\mathcal{T}_0, \\mathcal{T}_1, \\ldots$ by repeating four steps for $\\ell = 0, 1, \\ldots$:\n\n1. Solve: compute the discrete solution $u_\\ell$ on $\\mathcal{T}_\\ell$.\n2. Estimate: compute $\\eta_K = \\eta_K(\\mathcal{T}_\\ell)$ for all $K \\in \\mathcal{T}_\\ell$ from $u_\\ell$ and the data.\n3. Mark: choose a set $\\mathcal{M}_\\ell \\subseteq \\mathcal{T}_\\ell$ of elements with large indicators.\n4. Refine: subdivide at least the elements of $\\mathcal{M}_\\ell$, plus the neighbours needed to keep the mesh conforming, to get $\\mathcal{T}_{\\ell + 1}$.\n\nThe loop stops when $\\big(\\sum_K \\eta_K^2\\big)^{1/2}$ is below a tolerance.\n\n## Remarks\n\nA common marking rule is the Dörfler criterion with a parameter $0 \u003c \\theta \\le 1$.\nIt takes a set $\\mathcal{M}_\\ell$ of minimal size with $\\sum_{K \\in \\mathcal{M}_\\ell} \\eta_K^2 \\ge \\theta \\sum_{K \\in \\mathcal{T}_\\ell} \\eta_K^2$.\nFor the Poisson equation, a standard residual indicator combines $h_K^2 \\norm{f + \\Delta u_\\ell}_{L^2(K)}^2$ with the jumps of the normal derivative of $u_\\ell$ across the faces of $K$.\n\nExample: on the L-shaped domain $(-1, 1)^2 \\setminus [0, 1) \\times (-1, 0]$, the solution of $-\\Delta u = 0$ with boundary values $r^{2/3} \\sin(2\\varphi/3)$ is $u = r^{2/3} \\sin(2\\varphi/3)$ in polar coordinates $(r, \\varphi)$ with $0 \u003c \\varphi \u003c 3\\pi/2$.\nIts gradient blows up at the corner $0$, the indicators are largest there, and the meshes become graded towards $0$.\n\nNon-example: uniform refinement subdivides every element of $\\mathcal{T}_\\ell$ in each step.\nIts refinement does not depend on any indicator, so step 3 is missing.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "defines": "X001F42KH8",
    "kind": "definition",
    "msc": [
      "65N50",
      "65M50"
    ],
    "name": "Adaptive mesh refinement",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Adaptive_mesh_refinement"
      }
    ],
    "tag": "C5JM6D0841",
    "uses": [
      "98GZ9DVHTA"
    ]
  },
  "kind": "definition",
  "link": "https://tamnd.github.io/math2/node/C5JM6D0841/",
  "links": [
    {
      "field": "defines",
      "target": "X001F42KH8"
    },
    {
      "field": "uses",
      "target": "98GZ9DVHTA"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/C5JM6D0841.md",
  "msc": [
    "65N50",
    "65M50"
  ],
  "name": "Adaptive mesh refinement",
  "prov": null,
  "role": "",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/C5J/C5JM6D0841.md",
  "status": null,
  "tag": "C5JM6D0841",
  "uri": "m2://C5JM6D0841",
  "url": "https://tamnd.github.io/math2/wiki/adaptive-mesh-refinement-definition/",
  "writing": {
    "tag": "C5JM6D0841",
    "kind": "definition",
    "level": "W0",
    "next": [
      {
        "what": "a source with a locator",
        "have": 0,
        "want": 1
      }
    ]
  }
}
