OGS
|
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().