# Finite-Volumen-Verfahren

Das Finite-Volumen-Verfahren ist ein numerisches Verfahren zur Diskretisierung von Erhaltungsgleichungen, also von speziellen, partiellen Differentialgleichungen, denen ein Erhaltungssatz zugrunde liegt.
Bei korrekter Anwendung des Finite-Volumen-Verfahrens werden die Erhaltungseigenschaften dieser Gleichungen bewahrt, man spricht deswegen auch von einem konservativen Diskretisierungs-Verfahren. Vor allem aus diesem Grund hat sich das Finite-Volumen-Verfahren in der numerischen Strömungsmechanik durchgesetzt. Es wird aber auch in der numerischen Strukturmechanik und Elektrotechnik angewendet.
Das Berechnungsgebiet wird bei diesem Verfahren durch finite Volumen diskretisiert, die eine beliebige polygonale oder polyedrische Gestalt aufweisen können. Deswegen können auch komplizierte Geometrien einfach vernetzt werden. Approximiert werden die Funktionswerte der gesuchten Größen in den Mittelpunkten dieser finiten Volumen.

## Herleitung

Ein Erhaltungssatz ist durch eine Gleichung der Art
    ${\frac {\partial u(x,t)}{\partial t}}+\nabla \cdot f(u(x,t))=s(u(x,t))$
auf einem Gebiet $\Omega \subset \mathbb {R} ^{d}\times [0,\infty )$ gegeben, wobei $\nabla$ den Nabla-Operator bezeichnet, welcher hier für die Divergenz steht. Der gewöhnliche Fall, der hier betrachtet wird, ist $s(u)=0$. Die Herleitung für Gleichungen mit weiteren Termen erfolgt analog. Zunächst wird das Gebiet in eine endliche (finite) Zahl an Volumenelementen (vgl. Gitterzellen) zerlegt. In jeder dieser Zellen gilt der Erhaltungssatz. Erfüllt jede der Zellen die Bedingungen des gaußschen Integralsatzes, etwa Lipschitz-Stetigkeit des Randes, so ergibt die Integration über eine Zelle $\Omega _{i}$ und Umwandlung des Integrals der Divergenz in ein Oberflächenintegral:
    $\int _{\Omega _{i}}{\frac {\partial u}{\partial t}}\mathrm {d} \Omega +\int _{\partial \Omega _{i}}f(u)\cdot n\,\mathrm {d} S=0$.
Die Veränderung einer erhaltenen Größe (z. B. der Energie) in einer Zelle kann also nur durch Ab- oder Hinzufließen (in diesem Fall von Energie) über den Rand der Zelle passieren. In jeder Zelle berechnet man nun den Mittelwert der Erhaltungsgröße in dieser Zelle $u_{i}={\frac {1}{|\Omega _{i}|}}\int _{\Omega _{i}}u\,\mathrm {d} \Omega$ und erhält im Falle, dass sich die Zelle mit der Zeit nicht verändert, eine Gleichung, welche die Veränderung der Mittelwerte in den Zellen mit der Zeit beschreibt:
    ${\frac {\partial u_{i}}{\partial t}}=-{\frac {1}{|\Omega _{i}|}}\int _{\partial \Omega _{i}}f(u)\cdot n\,\mathrm {d} S$.
In numerischen Verfahren wählt man üblicherweise polygonal berandete Zellen, so dass sich das Integral über den Rand als Summe von Oberflächenintegralen über einfache Gebilde (im zweidimensionalen Fall gerade Kanten), darstellen lässt.

## Lösung des eindimensionalen Problems

Der Erhaltungssatz im eindimensionalen Fall lässt sich schreiben als
    ${\frac {\partial u}{\partial t}}+{\frac {\partial f(u)}{\partial x}}=0\,,\qquad t\geq 0\,,\qquad x\in \left[x_{\mathrm {min} },x_{\mathrm {max} }\right]$.
Die partielle Differentialgleichung wird mit Hilfe des Finite-Volumen-Verfahrens entlang der Ortskoordinate diskretisiert. Dazu wird zunächst die Ortskoordinate in n diskrete Abschnitte zerlegt
    $x_{\mathrm {min} }=x_{1/2}<x_{3/2}<\dots <x_{n-1/2}<x_{n+1/2}=x_{\mathrm {max} }$.
Die Kontrollvolumina $\Omega _{i}$, deren Mittelpunkte $x_{i}$ und die Größen der Kontrollvolumina $\Delta x_{i}$ sind definiert durch
    $\Omega _{i}=\left[x_{i-1/2},x_{i+1/2}\right]$, $x_{i}={\frac {x_{i-1/2}+x_{i+1/2}}{2}}$, $\Delta x_{i}=x_{i+1/2}-x_{i-1/2}$.
Hier beziehen sich ganzzahlige Indizes auf den Mittelpunkt eines Kontrollvolumens und nicht-ganzzahlige Indizes beziehen sich auf den Rand eines Kontrollvolumens.
Nun wird jeder Term der zu diskretisierenden Differentialgleichung über ein beliebiges inneres Kontrollvolumen integriert.
    $\int _{x_{i-1/2}}^{x_{i+1/2}}{\frac {\partial u}{\partial t}}\,\mathrm {d} x={\frac {\mathrm {d} }{\mathrm {d} t}}\int _{x_{i-1/2}}^{x_{i+1/2}}u\,\mathrm {d} x={\frac {\mathrm {d} u_{i}}{\mathrm {d} t}}\Delta x_{i}$.
Dabei darf nach der Leibnizregel für Parameterintegrale die Integration und Differentiation vertauscht werden, sofern das Kontrollvolumen zeitlich unveränderlich ist. Anschließend wird der diskretisierte Funktionswert $u_{i}$ mit Hilfe des Mittelwertsatzes der Integralrechnung als integraler Mittelwert des tatsächlichen Funktionsverlaufes im Kontrollvolumen approximiert.
Anschließend folgt für den konvektiven Term mit Hilfe des Gaußschen Integralsatzes
    $\int _{x_{i-1/2}}^{x_{i+1/2}}{\frac {\partial f(u)}{\partial x}}\,\mathrm {d} x=\left[f(u_{i+1/2})-f(u_{i-1/2})\right]$.
Setzt man dies in die ursprüngliche Erhaltungsgleichung ein, erhält man die eindimensionale semidiskrete Form
    ${\frac {\partial u_{i}}{\partial t}}=-{\frac {1}{\Delta x}}\left[f(u_{i+1/2})-f(u_{i-1/2})\right]$.
Im mehrdimensionalen Fall wird das Oberflächenintegral in der Regel mittels Gauß-Quadratur zweiter Ordnung approximiert.
Nach Mittelung der Werte $u_{i}$ in den einzelnen Zellen ergibt sich das Problem, dass die Flussfunktionen $f(u_{i\pm 1/2})$ entlang der Zellkanten unstetig und somit uneindeutig wird. Das Problem lässt sich mit Einführung einer sogenannten numerischen Flussfunktion
    $g(u_{L},u_{R})\approx f(u_{i\pm 1/2})$,
auflösen. Hierbei bezeichnet $u_{L}$ und $u_{R}$ jeweils den linken und rechten Wert auf der Zellkante. Anschließend lässt sich die Gleichung schreiben als
    ${\frac {\partial u_{i}}{\partial t}}=-{\frac {1}{\Delta x}}\left[g(u_{L},u_{R})_{i+1/2}-g(u_{L},u_{R})_{i-1/2}\right]$.
Die numerische Flussfunktion $g(u_{L},u_{R})$ wird oft als sogenanntes Riemann-Problem aufgefasst. Die Verwendung approximativer Riemann-Löser erlaubt dann die Berechnung der Flüsse.
Ein prominentes Beispiel ist der globale Lax-Friedrichs Fluss
    $g(u_{L},u_{R})={\frac {1}{2}}\left(f(u_{L})+f(u_{R})\right)-{\frac {\Delta x}{2\Delta t}}\left(u_{R}-u_{L}\right).$
Andere bekannte numerische Flussfunktionen bzw. Riemann-Löser sind:
* Upwind Löser
* Rusanov Riemannlöser
* HLLC Riemannlöser
* Roe Riemannlöser
* Exakte Riemannlöser
* AUSM Löser
An die numerischen Flussfunktionen wird meist die Konsistenzbedingung gestellt, dass sie bei identischen Werten $u_{L}\equiv u_{R}$ aus beiden Zellen den physikalischen Fluss liefern soll
    $g(u_{L}=u,u_{R}=u)\equiv f(u)$.
Für erweiterte Problemstellungen sind oft zusätzliche Entropie-Bedingungen notwendig, um die korrekte Lösung aus einer Scharr von möglichen Lösungen (Verdichtungsstoß oder Verdünnungsstoß) auswählen zu können:
* Lax-Entropie Bedingung
* Liu-Entropie Bedingung
* Oleinik-Entropie Bedingung

## Verfahren Höherer Ordnung

Das bisher beschriebene Verfahren ist durch die Mittelung der Werte in jeder Zelle nur erster Ordnung. Höhere Ordnung wird dadurch erreicht, dass Polynome höherer Ordnung in den Zellen angesetzt werden. D. h. es wird eine Verteilung (konstant, linear, parabolisch usw.) angenommen, die den Integralwert erhält.
Die zentrale Schwierigkeit hierbei ist, dass Verdichtungsstösse bzw. Schocks in der Lösung zu Oszillationen führen können. Zur Vermeidung dessen werden Total-Variation-Diminishing-Verfahren (TVD-Verfahren) eingesetzt, die die totale Variation nicht erhöhen und so keine neuen Extrema zulassen (Da Polynome Unstetigkeiten i. a. mit Überschwingern interpolieren). Die wichtigsten Klassen von Verfahren sind hier die Flux-Limiter-Verfahren und die ENO-Verfahren (bzw. WENO).

## Konvergenztheorie

Finite-Volumen-Verfahren lassen sich für elliptische Gleichungen als spezielle Finite-Elemente-Verfahren auffassen, bei denen man stückweise konstante bzw. stückweise lineare Ansatzfunktionen wählt, die auf den Zellen und nicht auf den Gitterpunkten leben. Dies erlaubt mit Hilfe der dortigen umfassenden Theorie eine Konvergenzanalyse.
Für parabolische oder hyperbolische Gleichungen wie die Euler- oder Navier-Stokes-Gleichungen ist die mathematische Konvergenztheorie allerdings weniger weit fortgeschritten.

### Hyperbolische Erhaltungsgleichungen

Bei hyperbolischen Problemen treten insbesondere Stöße auf, die die Analyse erheblich erschweren. Eine weitere Schwierigkeit hier besteht darin, dass die Lösung der Gleichungen im Regelfall nicht eindeutig ist. Der Satz von Lax-Wendroff liefert, dass ein Finite-Volumen-Verfahren bei Konvergenz tatsächlich gegen eine schwache Lösung der Gleichung konvergiert. Entropiebedingungen bzw. numerische Viskosität werden dann genutzt, um zu zeigen, dass dies tatsächlich die physikalisch sinnvolle ist.
Die Konvergenz einer numerischen Approximation $u_{\Delta t}$ zu einer exakten Lösung $u$ ist mittels des globalen Fehlers $E_{\Delta t}(x,t):=u_{\Delta t}(x,t)-u(x,t)$ definiert:
    $\|E_{\Delta t}(\cdot ,t)\|\longrightarrow 0\quad {\text{für}}\;\Delta t\rightarrow 0,\quad t\in \mathbb {R} ^{+}.$
Eine andere Aussage, die für alle Finite-Volumen-Verfahren gilt, ist die notwendige CFL-Bedingung, dass der numerische Abhängigkeitsbereich den tatsächlichen Abhängigkeitsbereich enthalten muss. Andernfalls ist das Verfahren instabil.
Insbesondere für mehrdimensionale Gleichungen ist die Konvergenztheorie schwierig. Im Eindimensionalen gibt es auch für Verfahren höherer Ordnung Resultate, die darauf beruhen, dass der Raum der Funktionen mit beschränkter Variation kompakte Mengen in L$_1$ liefert.

### Konsistenz

Ein numerisches Verfahren $H_{\Delta t}$ ist eine Vorschrift zur Konstruktion der numerischen Approximation für den nächsten Zeitschritt:
    $u_{j}^{n+1}=H_{\Delta t}(U^{n},j),$
wobei $n$ der Zeitindex, $j$ der Ortsindex und $U^{n}$ die approximative Lösung zum vorigen Zeitpunkt aller Ortsindizes darstellt:
    $t=t_{n},\quad x=x_{j},\quad U^{n}=\left(u_{1}^{n},u_{2}^{n},\cdots \right).$
Das numerische Verfahren $H_{\Delta t}$ kann auch kontinuierlich definiert sein:
    $u(x,t+\Delta t)=H_{\Delta t}\left(u(\cdot ,t),x\right).$
Der lokalen Abschneidefehler $L_{\Delta t}$ des Verfahrens $H_{\Delta t}$ ist definiert als:
    $L_{\Delta t}(x,t):={\frac {1}{\Delta t}}\left(u(x,t+\Delta t)-H_{\Delta t}\left(u(\cdot ,t),x\right)\right),$
wobei $u$ als exakte Lösung zur Zeit $t$ angenommen wird. Zur Definition der Konsistenz (Numerik) des Verfahrens $H_{\Delta t}$ nutzt man nun den lokalen Abschneidefehler $L_{\Delta t}$:
    $\|L_{\Delta t}(\cdot ,t)\|\longrightarrow 0\quad {\text{mit}}\;\Delta t\rightarrow 0,\quad t\in \mathbb {R} ^{+}.$
Das Verfahren $H_{\Delta t}$ hat Konsistenzordnung $n\in \mathbb {N}$, falls es ein $C>0$ gibt, sodass:
    $\|L_{\Delta t}(\cdot ,t)\|\leq C(\Delta t)^{n}\quad {\text{mit}}\;\Delta t\rightarrow 0,\quad t\in \mathbb {R} ^{+}$
gibt.

## Software

Die verbreitetsten kommerziellen Programmpakete zur numerischen Strömungssimulation mittels der FVM sind Fluent und CFX von Ansys Inc und Star-CCM+ von Siemens. In der Luft- und Raumfahrt sind unterschiedliche Codes im Einsatz, darunter von der NASA entwickelte Codes, die flo-Codes von Antony Jameson, sowie bei der Airbus SE die Codes ELSA und der TAU-Code des Deutschen Zentrums für Luft- und Raumfahrt. OpenFOAM ist ein unter der GNU General Public License veröffentlichtes Softwarepaket.

## Geschichte

Die grundlegenden theoretischen und praktischen Ideen wurden ab den 1950er Jahren für die Raumfahrt entwickelt, insbesondere von dem Russen Godunow und dem Ungarn Lax. Die ersten Finite-Volumen-Verfahren stammen von Richard S. Varga (1962) und Preissmann (1961). Der Terminus Finite-Volumen-Verfahren wurden dann unabhängig voneinander 1971 von McDonald und 1972 von MacCormack und Paullay für die Lösung der zeitabhängigen zweidimensionalen Euler-Gleichungen eingeführt.
Die Idee der approximativen Riemann-Löser tauchte erstmals in den 1980ern auf, als Roe, Osher, van Leer und andere ebenfalls unabhängig voneinander solche Verfahren vorstellten.