{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Definition\n\nLet $\\Gamma(t) \\subset \\R^d$, $t \\ge 0$, be a family of closed hypersurfaces that bound open sets $\\Omega(t)$.\nLet $V(x, t)$ be a given speed of $\\Gamma(t)$ in its outward normal direction.\nThe *level-set method* represents and evolves $\\Gamma(t)$ as follows.\n\n1. Representation: choose a continuous function $\\phi \\colon \\R^d \\times [0, \\infty) \\to \\R$ with $\\Omega(t) = \\set{x : \\phi(x, t) \u003c 0}$ and $\\Gamma(t) = \\set{x : \\phi(x, t) = 0}$, the zero [[level set|0B2RZ0778N]] of $\\phi(\\cdot, t)$.\n2. Evolution: with $V$ extended near $\\Gamma(t)$, $\\phi$ solves the level-set equation\n$$\\phi_t + V \\abs{\\nabla \\phi} = 0.$$\nThis is a [[Hamilton–Jacobi equation|5TRXQKP7DY]], understood in the [[viscosity sense|H1ERJ3T75T]] where $\\phi$ is not smooth.\n3. Discretization: the equation is solved on a fixed grid, usually with upwind finite differences. The interface $\\Gamma(t)$ is read off as the zero set of the discrete $\\phi$.\n\nIf the interface is carried by a velocity field $v(x, t)$, the evolution equation is $\\phi_t + v \\cdot \\nabla \\phi = 0$, which is the case $V = v \\cdot n$.\n\n## Remarks\n\nWhere $\\nabla \\phi \\ne 0$, the outward unit normal is $n = \\nabla \\phi / \\abs{\\nabla \\phi}$, with $\\nabla$ the [[gradient|0ABK9V9Y64]].\nThe [[divergence|0MWV6ZTK6S]] $\\kappa = \\nabla \\cdot n$ is the sum of the principal curvatures of $\\Gamma$, a multiple of its [[mean curvature|PA78NFEPCF]], and it is used for motion by curvature with $V = -\\kappa$.\nOne usually keeps $\\phi$ close to a signed distance function, with $\\abs{\\nabla \\phi} = 1$, by periodic reinitialization.\n\nExample: in $\\R^2$ let $V = 1$ and $\\phi(x, t) = \\abs{x} - (r_0 + t)$ with $r_0 \u003e 0$.\nFor $x \\ne 0$ one has $\\phi_t = -1$ and $\\abs{\\nabla \\phi} = 1$, so $\\phi_t + V \\abs{\\nabla \\phi} = 0$, and $\\Gamma(t)$ is the circle of radius $r_0 + t$.\n\nNon-example: $\\phi(x, t) = \\abs{x} - r_0$ represents a circle but fails clause 2 for $V = 1$, since $\\phi_t + \\abs{\\nabla \\phi} = 1 \\ne 0$.\nIts zero set does not move.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "defines": "7KWR08FJET",
    "kind": "definition",
    "msc": [
      "65M06",
      "35F21",
      "65D18"
    ],
    "name": "Level-set method",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Level-set_method"
      }
    ],
    "tag": "KT0380H39M",
    "uses": [
      "0B2RZ0778N",
      "0ABK9V9Y64",
      "5TRXQKP7DY",
      "0MWV6ZTK6S",
      "PA78NFEPCF",
      "H1ERJ3T75T"
    ]
  },
  "kind": "definition",
  "link": "https://tamnd.github.io/math2/node/KT0380H39M/",
  "links": [
    {
      "field": "defines",
      "target": "7KWR08FJET"
    },
    {
      "field": "uses",
      "target": "0B2RZ0778N"
    },
    {
      "field": "uses",
      "target": "0ABK9V9Y64"
    },
    {
      "field": "uses",
      "target": "5TRXQKP7DY"
    },
    {
      "field": "uses",
      "target": "0MWV6ZTK6S"
    },
    {
      "field": "uses",
      "target": "PA78NFEPCF"
    },
    {
      "field": "uses",
      "target": "H1ERJ3T75T"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/KT0380H39M.md",
  "msc": [
    "65M06",
    "35F21",
    "65D18"
  ],
  "name": "Level-set method",
  "prov": null,
  "role": "",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/KT0/KT0380H39M.md",
  "status": null,
  "tag": "KT0380H39M",
  "uri": "m2://KT0380H39M",
  "url": "https://tamnd.github.io/math2/wiki/level-set-method-definition/",
  "writing": {
    "tag": "KT0380H39M",
    "kind": "definition",
    "level": "W0",
    "next": [
      {
        "what": "an inventory row",
        "note": "the row of the inventory that the node accounts for",
        "have": 0,
        "want": 1
      },
      {
        "what": "a source with a locator",
        "have": 0,
        "want": 1
      }
    ]
  }
}
