{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Definition\n\nLet $\\Omega \\subset \\R^d$ be a bounded polygonal domain and $F \\colon \\R \\to \\R^d$ a $C^1$ flux.\nConsider the [[conservation law|8RA7AMWSAF]] $u_t + \\nabla \\cdot F(u) = 0$, with $\\nabla \\cdot$ the [[divergence|0MWV6ZTK6S]].\nPartition $\\Omega$ into polygonal control volumes $K_i$, and write $e_{ij}$ for the common face of $K_i$ and $K_j$.\nLet $n_{ij}$ be the unit normal of $e_{ij}$ pointing from $K_i$ to $K_j$.\nA numerical flux is a function $H(a, b, n)$ with two properties:\n\n1. consistency: $H(a, a, n) = F(a) \\cdot n$ for all $a$ and $n$;\n2. conservation: $H(a, b, n) = -H(b, a, -n)$.\n\nLet $u_i(t)$ approximate the average of $u$ over $K_i$.\nThe *finite volume method* evolves these numbers by\n$$\\abs{K_i} \\frac{d u_i}{dt} = -\\sum_{j} \\abs{e_{ij}} \\, H(u_i, u_j, n_{ij}),$$\nwhere the sum runs over the neighbours $K_j$ of $K_i$, and $\\abs{\\cdot}$ denotes volume or area.\nBoundary faces use fluxes built from the boundary conditions.\n\n## Remarks\n\nThe scheme is the exact balance law $\\frac{d}{dt} \\int_{K_i} u = -\\int_{\\partial K_i} F(u) \\cdot n$, with the face integrals replaced by numerical fluxes.\nBy clause 2, the flux from $K_i$ to $K_j$ is the negative of the flux from $K_j$ to $K_i$.\nSo $\\sum_i \\abs{K_i} u_i$ changes only through the boundary of $\\Omega$.\n\nExample: for $u_t + a u_x = 0$ with $a \u003e 0$ on cells of width $\\Delta x$, take the upwind flux $H(u_i, u_{i+1}, +1) = a u_i$.\nThis gives $u_i' = -a (u_i - u_{i-1}) / \\Delta x$.\nConsistency holds since $H(v, v, +1) = a v = F(v)$.\n\nNon-example: the scheme $u_i' = -u_i (u_{i+1} - u_{i-1}) / (2 \\Delta x)$ for Burgers' equation $u_t + (u^2/2)_x = 0$ is not in flux form.\nIt has no numerical flux, so clause 2 has no meaning for it.\nIt does not conserve $\\sum_i u_i$ and can produce shocks with wrong speeds.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "defines": "HGKN8E09RS",
    "kind": "definition",
    "msc": [
      "65M08",
      "65N08",
      "35L65"
    ],
    "name": "Finite volume method",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Finite_volume_method"
      }
    ],
    "tag": "CAB1ARHH31",
    "uses": [
      "8RA7AMWSAF",
      "0MWV6ZTK6S"
    ]
  },
  "kind": "definition",
  "link": "https://tamnd.github.io/math2/node/CAB1ARHH31/",
  "links": [
    {
      "field": "defines",
      "target": "HGKN8E09RS"
    },
    {
      "field": "uses",
      "target": "8RA7AMWSAF"
    },
    {
      "field": "uses",
      "target": "0MWV6ZTK6S"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/CAB1ARHH31.md",
  "msc": [
    "65M08",
    "65N08",
    "35L65"
  ],
  "name": "Finite volume method",
  "prov": null,
  "role": "",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/CAB/CAB1ARHH31.md",
  "status": null,
  "tag": "CAB1ARHH31",
  "uri": "m2://CAB1ARHH31",
  "url": "https://tamnd.github.io/math2/wiki/finite-volume-method-definition/",
  "writing": {
    "tag": "CAB1ARHH31",
    "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
      }
    ]
  }
}
