{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Definition\n\nLet $f \\colon \\R \\to \\R$ be a $C^1$ function and consider the [[conservation law|8RA7AMWSAF]] $u_t + f(u)_x = 0$.\nTake a uniform grid of cells $[x_{i-1/2}, x_{i+1/2}]$ of width $\\Delta x$, and let $u_i(t)$ be the cell averages of a [[finite volume method|HGKN8E09RS]].\nLet $H \\colon \\R^2 \\to \\R$ be a numerical flux, for example one given by a [[Riemann solver|ZY4GY93C4B]], with $H(v, v) = f(v)$ for all $v$.\nLet $\\phi \\colon \\R \\to \\R$ be a [[flux limiter|NZ8XFNCKQW]] with $\\phi(r) = 0$ for $r \\le 0$.\nA *MUSCL scheme* is the semi-discrete scheme built in three steps.\n\n1. Slope ratio: $r_i = \\dfrac{u_i - u_{i-1}}{u_{i+1} - u_i}$, with $\\phi(r_i)$ read as $0$ when $u_{i+1} = u_i$.\n2. Limited reconstruction at each interface:\n$$u^L_{i+1/2} = u_i + \\tfrac{1}{2} \\phi(r_i) (u_{i+1} - u_i), \\qquad u^R_{i+1/2} = u_{i+1} - \\tfrac{1}{2} \\phi(r_{i+1}) (u_{i+2} - u_{i+1}).$$\n3. Flux update:\n$$\\frac{d u_i}{dt} = -\\frac{1}{\\Delta x} \\Big( H(u^L_{i+1/2}, u^R_{i+1/2}) - H(u^L_{i-1/2}, u^R_{i-1/2}) \\Big).$$\n\nThe system of ordinary differential equations is then advanced in time, for example by a Runge–Kutta method.\n\n## Remarks\n\nExample: take the minmod limiter $\\phi(r) = \\max(0, \\min(1, r))$.\nFor linear data $u_j = j \\Delta x$ one gets $r_i = 1$ and $\\phi(r_i) = 1$, so $u^L_{i+1/2} = u_i + \\tfrac12 \\Delta x$, the exact interface value.\nFor step data $u_{i-1} = u_i = 0$ and $u_{i+1} = u_{i+2} = 1$ one gets $r_i = 0$, so $u^L_{i+1/2} = u_i = 0$ and no overshoot appears.\n\nNon-example: the choice $\\phi \\equiv 1$ fails the condition $\\phi(r) = 0$ for $r \\le 0$.\nIt gives unlimited central slopes, and the resulting scheme creates oscillations near discontinuities.\n\nWith $\\phi \\equiv 0$ the reconstruction is constant and the scheme reduces to a first-order scheme of Godunov type.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "defines": "W7QH1BPBS8",
    "kind": "definition",
    "msc": [
      "65M08",
      "35L65"
    ],
    "name": "MUSCL scheme",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/MUSCL_scheme"
      }
    ],
    "tag": "SB1TM11S5Q",
    "uses": [
      "8RA7AMWSAF",
      "HGKN8E09RS",
      "NZ8XFNCKQW",
      "ZY4GY93C4B"
    ]
  },
  "kind": "definition",
  "link": "https://tamnd.github.io/math2/node/SB1TM11S5Q/",
  "links": [
    {
      "field": "defines",
      "target": "W7QH1BPBS8"
    },
    {
      "field": "uses",
      "target": "8RA7AMWSAF"
    },
    {
      "field": "uses",
      "target": "HGKN8E09RS"
    },
    {
      "field": "uses",
      "target": "NZ8XFNCKQW"
    },
    {
      "field": "uses",
      "target": "ZY4GY93C4B"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/SB1TM11S5Q.md",
  "msc": [
    "65M08",
    "35L65"
  ],
  "name": "MUSCL scheme",
  "prov": null,
  "role": "",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/SB1/SB1TM11S5Q.md",
  "status": null,
  "tag": "SB1TM11S5Q",
  "uri": "m2://SB1TM11S5Q",
  "url": "https://tamnd.github.io/math2/wiki/muscl-scheme-definition/",
  "writing": {
    "tag": "SB1TM11S5Q",
    "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
      }
    ]
  }
}
