|
HyPar
1.0
Finite-Difference Hyperbolic-Parabolic PDE Solver on Cartesian Grids
|
Contains functions to compute the upwind flux at grid interfaces for the 3D Navier Stokes equations. More...
#include <stdlib.h>#include <math.h>#include <basic.h>#include <arrayfunctions.h>#include <mathfunctions.h>#include <matmult_native.h>#include <physicalmodels/navierstokes3d.h>#include <hypar.h>Go to the source code of this file.
Functions | |
| int | NavierStokes3DUpwindRoe (double *fI, double *fL, double *fR, double *uL, double *uR, double *u, int dir, void *s, double t) |
| int | NavierStokes3DUpwindRF (double *fI, double *fL, double *fR, double *uL, double *uR, double *u, int dir, void *s, double t) |
| int | NavierStokes3DUpwindLLF (double *fI, double *fL, double *fR, double *uL, double *uR, double *u, int dir, void *s, double t) |
| int | NavierStokes3DUpwindRusanov (double *fI, double *fL, double *fR, double *uL, double *uR, double *u, int dir, void *s, double t) |
| int | NavierStokes3DUpwinddFRoe (double *fI, double *fL, double *fR, double *uL, double *uR, double *u, int dir, void *s, double t) |
| int | NavierStokes3DUpwindFdFRoe (double *fI, double *fL, double *fR, double *uL, double *uR, double *u, int dir, void *s, double t) |
| int | NavierStokes3DUpwindRusanovModified (double *fI, double *fL, double *fR, double *uL, double *uR, double *u, int dir, void *s, double t) |
| int | NavierStokes3DUpwinddFRusanovModified (double *fI, double *fL, double *fR, double *uL, double *uR, double *u, int dir, void *s, double t) |
| int | NavierStokes3DUpwindFdFRusanovModified (double *fI, double *fL, double *fR, double *uL, double *uR, double *u, int dir, void *s, double t) |
Variables | |
| static const int | dummy = 1 |
Contains functions to compute the upwind flux at grid interfaces for the 3D Navier Stokes equations.
Definition in file NavierStokes3DUpwind.c.
| int NavierStokes3DUpwindRoe | ( | double * | fI, |
| double * | fL, | ||
| double * | fR, | ||
| double * | uL, | ||
| double * | uR, | ||
| double * | u, | ||
| int | dir, | ||
| void * | s, | ||
| double | t | ||
| ) |
Roe's upwinding scheme.
\begin{equation} {\bf f}_{j+1/2} = \frac{1}{2}\left[ {\bf f}_{j+1/2}^L + {\bf f}_{j+1/2}^R - \left| A\left({\bf u}_{j+1/2}^L,{\bf u}_{j+1/2}^R\right) \right| \left( {\bf u}_{j+1/2}^R - {\bf u}_{j+1/2}^L \right)\right] \end{equation}
This upwinding scheme is modified for the balanced discretization of the 3D Navier Stokes equations when there is a non-zero gravitational force. See the reference below. For flows without any gravitational forces, it reduces to its original form.
| fI | Computed upwind interface flux |
| fL | Left-biased reconstructed interface flux |
| fR | Right-biased reconstructed interface flux |
| uL | Left-biased reconstructed interface solution |
| uR | Right-biased reconstructed interface solution |
| u | Cell-centered solution |
| dir | Spatial dimension (x, y, or z) |
| s | Solver object of type HyPar |
| t | Current solution time |
Definition at line 40 of file NavierStokes3DUpwind.c.
| int NavierStokes3DUpwindRF | ( | double * | fI, |
| double * | fL, | ||
| double * | fR, | ||
| double * | uL, | ||
| double * | uR, | ||
| double * | u, | ||
| int | dir, | ||
| void * | s, | ||
| double | t | ||
| ) |
Characteristic-based Roe-fixed upwinding scheme.
\begin{align} \alpha_{j+1/2}^{k,L} &= \sum_{k=1}^3 {\bf l}_{j+1/2}^k \cdot {\bf f}_{j+1/2}^{k,L}, \\ \alpha_{j+1/2}^{k,R} &= \sum_{k=1}^3 {\bf l}_{j+1/2}^k \cdot {\bf f}_{j+1/2}^{k,R}, \\ v_{j+1/2}^{k,L} &= \sum_{k=1}^3 {\bf l}_{j+1/2}^k \cdot {\bf u}_{j+1/2}^{k,L}, \\ v_{j+1/2}^{k,R} &= \sum_{k=1}^3 {\bf l}_{j+1/2}^k \cdot {\bf u}_{j+1/2}^{k,R}, \\ \alpha_{j+1/2}^k &= \left\{ \begin{array}{cc} \alpha_{j+1/2}^{k,L} & {\rm if}\ \lambda_{j,j+1/2,j+1} > 0 \\ \alpha_{j+1/2}^{k,R} & {\rm if}\ \lambda_{j,j+1/2,j+1} < 0 \\ \frac{1}{2}\left[ \alpha_{j+1/2}^{k,L} + \alpha_{j+1/2}^{k,R} - \left(\max_{\left[j,j+1\right]} \lambda\right) \left( v_{j+1/2}^{k,R} - v_{j+1/2}^{k,L} \right) \right] & {\rm otherwise} \end{array}\right., \\ {\bf f}_{j+1/2} &= \sum_{k=1}^3 \alpha_{j+1/2}^k {\bf r}_{j+1/2}^k \end{align}
where \({\bf l}\), \({\bf r}\), and \(\lambda\) are the left-eigenvectors, right-eigenvectors and eigenvalues. The subscripts denote the grid locations.
Note that this upwinding scheme cannot be used for solving flows with non-zero gravitational forces.
| fI | Computed upwind interface flux |
| fL | Left-biased reconstructed interface flux |
| fR | Right-biased reconstructed interface flux |
| uL | Left-biased reconstructed interface solution |
| uR | Right-biased reconstructed interface solution |
| u | Cell-centered solution |
| dir | Spatial dimension (x, y, or z) |
| s | Solver object of type HyPar |
| t | Current solution time |
Definition at line 140 of file NavierStokes3DUpwind.c.
| int NavierStokes3DUpwindLLF | ( | double * | fI, |
| double * | fL, | ||
| double * | fR, | ||
| double * | uL, | ||
| double * | uR, | ||
| double * | u, | ||
| int | dir, | ||
| void * | s, | ||
| double | t | ||
| ) |
Characteristic-based local Lax-Friedrich upwinding scheme.
\begin{align} \alpha_{j+1/2}^{k,L} &= \sum_{k=1}^3 {\bf l}_{j+1/2}^k \cdot {\bf f}_{j+1/2}^{k,L}, \\ \alpha_{j+1/2}^{k,R} &= \sum_{k=1}^3 {\bf l}_{j+1/2}^k \cdot {\bf f}_{j+1/2}^{k,R}, \\ v_{j+1/2}^{k,L} &= \sum_{k=1}^3 {\bf l}_{j+1/2}^k \cdot {\bf u}_{j+1/2}^{k,L}, \\ v_{j+1/2}^{k,R} &= \sum_{k=1}^3 {\bf l}_{j+1/2}^k \cdot {\bf u}_{j+1/2}^{k,R}, \\ \alpha_{j+1/2}^k &= \frac{1}{2}\left[ \alpha_{j+1/2}^{k,L} + \alpha_{j+1/2}^{k,R} - \left(\max_{\left[j,j+1\right]} \lambda\right) \left( v_{j+1/2}^{k,R} - v_{j+1/2}^{k,L} \right) \right], \\ {\bf f}_{j+1/2} &= \sum_{k=1}^3 \alpha_{j+1/2}^k {\bf r}_{j+1/2}^k \end{align}
where \({\bf l}\), \({\bf r}\), and \(\lambda\) are the left-eigenvectors, right-eigenvectors and eigenvalues. The subscripts denote the grid locations.
This upwinding scheme is modified for the balanced discretization of the 3D Navier Stokes equations when there is a non-zero gravitational force. See the reference below. For flows without any gravitational forces, it reduces to its original form.
| fI | Computed upwind interface flux |
| fL | Left-biased reconstructed interface flux |
| fR | Right-biased reconstructed interface flux |
| uL | Left-biased reconstructed interface solution |
| uR | Right-biased reconstructed interface solution |
| u | Cell-centered solution |
| dir | Spatial dimension (x, y, or z) |
| s | Solver object of type HyPar |
| t | Current solution time |
Definition at line 244 of file NavierStokes3DUpwind.c.
| int NavierStokes3DUpwindRusanov | ( | double * | fI, |
| double * | fL, | ||
| double * | fR, | ||
| double * | uL, | ||
| double * | uR, | ||
| double * | u, | ||
| int | dir, | ||
| void * | s, | ||
| double | t | ||
| ) |
Rusanov's upwinding scheme.
\begin{equation} {\bf f}_{j+1/2} = \frac{1}{2}\left[ {\bf f}_{j+1/2}^L + {\bf f}_{j+1/2}^R - \max_{j,j+1} \nu_j \left( {\bf u}_{j+1/2}^R - {\bf u}_{j+1/2}^L \right)\right] \end{equation}
where \(\nu = c + \left|u\right|\).
This upwinding scheme is modified for the balanced discretization of the 3D Navier Stokes equations when there is a non-zero gravitational force. See the reference below. For flows without any gravitational forces, it reduces to its original form.
| fI | Computed upwind interface flux |
| fL | Left-biased reconstructed interface flux |
| fR | Right-biased reconstructed interface flux |
| uL | Left-biased reconstructed interface solution |
| uR | Right-biased reconstructed interface solution |
| u | Cell-centered solution |
| dir | Spatial dimension (x,y, or z) |
| s | Solver object of type HyPar |
| t | Current solution time |
Definition at line 349 of file NavierStokes3DUpwind.c.
| int NavierStokes3DUpwinddFRoe | ( | double * | fI, |
| double * | fL, | ||
| double * | fR, | ||
| double * | uL, | ||
| double * | uR, | ||
| double * | u, | ||
| int | dir, | ||
| void * | s, | ||
| double | t | ||
| ) |
The Roe upwinding scheme (NavierStokes3DUpwindRoe) for the partitioned hyperbolic flux that comprises of the acoustic waves only (see NavierStokes3DStiffFlux, _NavierStokes3DSetStiffFlux_). Thus, only the characteristic fields / eigen-modes corresponding to \( u\pm a\) are used. Reference:
| fI | Computed upwind interface flux |
| fL | Left-biased reconstructed interface flux |
| fR | Right-biased reconstructed interface flux |
| uL | Left-biased reconstructed interface solution |
| uR | Right-biased reconstructed interface solution |
| u | Cell-centered solution |
| dir | Spatial dimension (x, y, or z) |
| s | Solver object of type HyPar |
| t | Current solution time |
Definition at line 430 of file NavierStokes3DUpwind.c.
| int NavierStokes3DUpwindFdFRoe | ( | double * | fI, |
| double * | fL, | ||
| double * | fR, | ||
| double * | uL, | ||
| double * | uR, | ||
| double * | u, | ||
| int | dir, | ||
| void * | s, | ||
| double | t | ||
| ) |
The Roe upwinding scheme (NavierStokes3DUpwindRoe) for the partitioned hyperbolic flux that comprises of the entropy waves only (see NavierStokes3DNonStiffFlux, _NavierStokes3DSetStiffFlux_). Thus, only the characteristic fields / eigen-modes corresponding to \(u\) are used. Reference:
| fI | Computed upwind interface flux |
| fL | Left-biased reconstructed interface flux |
| fR | Right-biased reconstructed interface flux |
| uL | Left-biased reconstructed interface solution |
| uR | Right-biased reconstructed interface solution |
| u | Cell-centered solution |
| dir | Spatial dimension (x, y, or z) |
| s | Solver object of type HyPar |
| t | Current solution time |
Definition at line 527 of file NavierStokes3DUpwind.c.
| int NavierStokes3DUpwindRusanovModified | ( | double * | fI, |
| double * | fL, | ||
| double * | fR, | ||
| double * | uL, | ||
| double * | uR, | ||
| double * | u, | ||
| int | dir, | ||
| void * | s, | ||
| double | t | ||
| ) |
Modified Rusanov's upwinding scheme: NavierStokes3DUpwindRusanov() modified as described in the following paper (for consistent characteristic-based splitting):
| fI | Computed upwind interface flux |
| fL | Left-biased reconstructed interface flux |
| fR | Right-biased reconstructed interface flux |
| uL | Left-biased reconstructed interface solution |
| uR | Right-biased reconstructed interface solution |
| u | Cell-centered solution |
| dir | Spatial dimension (x,y, or z) |
| s | Solver object of type HyPar |
| t | Current solution time |
Definition at line 638 of file NavierStokes3DUpwind.c.
| int NavierStokes3DUpwinddFRusanovModified | ( | double * | fI, |
| double * | fL, | ||
| double * | fR, | ||
| double * | uL, | ||
| double * | uR, | ||
| double * | u, | ||
| int | dir, | ||
| void * | s, | ||
| double | t | ||
| ) |
The modified Rusanov upwinding scheme (NavierStokes3DUpwindRusanovModified()) for the partitioned hyperbolic flux that comprises of the acoustic waves only (see NavierStokes3DStiffFlux, _NavierStokes3DSetStiffFlux_). Thus, only the characteristic fields / eigen-modes corresponding to \( u\pm a\) are used. Reference:
| fI | Computed upwind interface flux |
| fL | Left-biased reconstructed interface flux |
| fR | Right-biased reconstructed interface flux |
| uL | Left-biased reconstructed interface solution |
| uR | Right-biased reconstructed interface solution |
| u | Cell-centered solution |
| dir | Spatial dimension (x,y, or z) |
| s | Solver object of type HyPar |
| t | Current solution time |
Definition at line 756 of file NavierStokes3DUpwind.c.
| int NavierStokes3DUpwindFdFRusanovModified | ( | double * | fI, |
| double * | fL, | ||
| double * | fR, | ||
| double * | uL, | ||
| double * | uR, | ||
| double * | u, | ||
| int | dir, | ||
| void * | s, | ||
| double | t | ||
| ) |
The modified Rusanov upwinding scheme (NavierStokes3DUpwindRusanovModified()) for the partitioned hyperbolic flux that comprises of the entropy waves only (see NavierStokes3DNonStiffFlux, _NavierStokes3DSetNonStiffFlux_). Thus, only the characteristic fields / eigen-modes corresponding to \(u\) are used. Reference:
| fI | Computed upwind interface flux |
| fL | Left-biased reconstructed interface flux |
| fR | Right-biased reconstructed interface flux |
| uL | Left-biased reconstructed interface solution |
| uR | Right-biased reconstructed interface solution |
| u | Cell-centered solution |
| dir | Spatial dimension (x,y, or z) |
| s | Solver object of type HyPar |
| t | Current solution time |
Definition at line 862 of file NavierStokes3DUpwind.c.
|
static |
Definition at line 18 of file NavierStokes3DUpwind.c.