{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Definition\n\nLet $u_t + F(u)_x = 0$ be a [[hyperbolic system of conservation laws|XN081NCPF5]] with $F \\colon \\R^m \\to \\R^m$ smooth.\nFix $\\Delta x, \\Delta t \u003e 0$, put $\\lambda = \\Delta t / \\Delta x$, and let the cells be $C_j = (x_{j-1/2}, x_{j+1/2})$ with $x_{j+1/2} = (j + \\tfrac12) \\Delta x$.\nLet $\\Lambda$ bound the absolute values of the eigenvalues of $DF$ on the relevant states, and assume $\\Lambda \\lambda \\le 1/2$.\nGiven cell values $u_j^n$, *Godunov's scheme* computes $u_j^{n+1}$ as follows.\n\n1. Let $\\tilde u$ be the function equal to $u_j^n$ on $C_j$ for each $j$.\n2. Let $v$ be the entropy solution on $t_n \\le t \\le t_{n+1}$ with $v(\\cdot, t_n) = \\tilde u$, made of the solutions of the [[Riemann problems|GJWKX22VVE]] at the points $x_{j+1/2}$.\n3. Set $u_j^{n+1} = \\frac{1}{\\Delta x} \\int_{C_j} v(x, t_{n+1})\\, dx$.\n\n## Remarks\n\nLet $u^*(u_l, u_r)$ be the value at $x/t = 0$ of the Riemann solution with states $u_l, u_r$.\nIntegrating the equation over $C_j \\times (t_n, t_{n+1})$ gives the conservation form\n$$u_j^{n+1} = u_j^n - \\lambda \\left( F(u^*(u_j^n, u_{j+1}^n)) - F(u^*(u_{j-1}^n, u_j^n)) \\right).$$\nIn this form the scheme only needs $\\Lambda \\lambda \\le 1$.\nFor a scalar law the numerical flux is $\\min_{u_l \\le w \\le u_r} F(w)$ if $u_l \\le u_r$, and $\\max_{u_r \\le w \\le u_l} F(w)$ if $u_l \u003e u_r$.\n\nExample: for $u_t + a u_x = 0$ with $a \u003e 0$, the Riemann solution at $x/t = 0$ is $u_l$.\nSo the flux at $x_{j+1/2}$ is $a u_j^n$, and the scheme is the upwind scheme $u_j^{n+1} = u_j^n - a \\lambda (u_j^n - u_{j-1}^n)$.\n\nNon-example: the downwind scheme $u_j^{n+1} = u_j^n - a\\lambda(u_{j+1}^n - u_j^n)$ uses the flux $a u_{j+1}^n$ instead.\nThis is not the Riemann solution value, and the scheme is unstable for every $\\lambda \u003e 0$ when $a \u003e 0$.\n\n## Explanations\n\n### L1 human\n\nThe scheme thinks of the solution as constant in each cell.\nIt moves the solution forward exactly for one short step, then takes averages again.\nOnly the jumps at the cell boundaries matter, and each of them is a Riemann problem.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "defines": "43HZJ7DRT0",
    "kind": "definition",
    "msc": [
      "65M08",
      "35L65",
      "65M06"
    ],
    "name": "Godunov's scheme",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Godunov%27s_scheme"
      }
    ],
    "tag": "FBJ4JCP5SR",
    "uses": [
      "8RA7AMWSAF",
      "GJWKX22VVE",
      "XN081NCPF5"
    ]
  },
  "kind": "definition",
  "link": "https://tamnd.github.io/math2/node/FBJ4JCP5SR/",
  "links": [
    {
      "field": "defines",
      "target": "43HZJ7DRT0"
    },
    {
      "field": "uses",
      "target": "8RA7AMWSAF"
    },
    {
      "field": "uses",
      "target": "GJWKX22VVE"
    },
    {
      "field": "uses",
      "target": "XN081NCPF5"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/FBJ4JCP5SR.md",
  "msc": [
    "65M08",
    "35L65",
    "65M06"
  ],
  "name": "Godunov's scheme",
  "prov": null,
  "role": "",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/FBJ/FBJ4JCP5SR.md",
  "status": null,
  "tag": "FBJ4JCP5SR",
  "uri": "m2://FBJ4JCP5SR",
  "url": "https://tamnd.github.io/math2/wiki/godunovs-scheme-definition/",
  "writing": {
    "tag": "FBJ4JCP5SR",
    "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
      }
    ]
  }
}
