For the full upwind scheme, we consider the general advection term of the advection diffusion transport equation:
\nabla \cdot ( u \mathbf{v}),
where u can be temperature T or mass component concentration C, and \mathbf{v} is the fluid velocity. This means \nabla \cdot \mathbf{v} may not be zero, or physically the fluid flow may be compressible.
The discretized weak form of that advection term takes the form
\int_{\Omega_e} \nabla \cdot ( u \mathbf{v}) \phi_i \mathrm{d} \Omega = \int_{\Omega_e} \nabla \cdot ( u \mathbf{v} \phi_i) \mathrm{d} \Omega - \int_{\Omega_e} \nabla \phi_i \cdot ( u \mathbf{v} ) \mathrm{d} \Omega
with \phi_i the test function. The first term on the right hand side can be converted to boundary integration according to the Green's theorem as
\int_{\Omega_e} \nabla \cdot ( u \mathbf{v} \phi_i) \mathrm{d} \Omega = \int_{\partial\Omega_e} ( u \mathbf{v} \phi_i) \cdot \mathbf{n} \mathrm{d} \Gamma
with \mathbf{n} the normal to the boundary surface. That boundary integration is a part of Neumann boundary condition. Therefore what left for the element integration is
-\int_{\Omega_e} \nabla \phi_i \cdot ( u \mathbf{v} ) \mathrm{d} \Omega,
which is denoted as R_i hereafter.
Based on the scheme introduced by Dalen [10], the full upwind scheme evaluates the following flux related quantity for each node
q_i = -\int_{\Omega_e} \nabla \phi_i \cdot \mathbf{v} \mathrm{d} \Omega
to determine whether it is an upwind node. If q_i>0, node i is at upwind position.
Let
{q}_{up}=\sum_{q_i \geq 0} q_i u_i
be the total flux at the upwind nodes, and
{q}_{down}=-\sum_{q_i < 0} q_i
be the total flux related quantity at the down nodes, we can approximate the discretized weak form of the advection term as:
\begin{eqnarray*} R_i & \approx& \begin{cases} q_i\,u_i,\forall q_i \geq 0\\ q_i \frac{{q}_{up}}{{q}_{down}},\forall q_i < 0 \end{cases}\\ & = & \begin{cases} q_i\,u_i,\forall q_i \geq 0\\ \frac{1}{{q}_{down}} q_i {\sum_{q_j \geq 0} (q_j u_j)},\forall q_i < 0 \end{cases} =\tilde{R}_i.\\ \end{eqnarray*}
The above approximation defines the full upwind scheme of the advection term of the advection diffusion transport equation for the FEM analysis. Obviously, we see that
\begin{eqnarray*} \sum_i \tilde{R}_i &=& \sum_{q_i \geq 0} q_i u_i + \sum_{q_i < 0} \frac{1}{{q}_{down}} q_i {\sum_{q_j \geq 0} (q_j u_j)}\\ &=& \sum_{q_i \geq 0} q_i u_i + \frac{\sum_{q_i < 0} q_i}{{q}_{down}} {\sum_{q_j \geq 0} (q_j u_j)} = q_{up}-q_{up} = 0, \end{eqnarray*}
which means the nodal mass balance of element is guaranteed.
Definition at line 160 of file NumericalStabilization.h.
#include <NumericalStabilization.h>
Public Member Functions | |
FullUpwind (double const cutoff_velocity) | |
double | getCutoffVelocity () const |
Private Attributes | |
double const | cutoff_velocity_ |
|
inlineexplicit |
Definition at line 163 of file NumericalStabilization.h.
|
inline |
|
private |
The cutoff velocity. The stabilization is not applied if the velocity magnitude is below the cutoff velocity.
Definition at line 173 of file NumericalStabilization.h.
Referenced by getCutoffVelocity().