# 4.9.6. Advection Methods

Consider transport of an arbitrary scalar between the control volumes and in the figure below.

Fig. 4.2 Control volumes for flux across a single face f

In order to calculate the advection of we need to be able to evaluate . The mass flow rate through the face () is determined by our continuity solve, but for each transport scalar we need to determine . The scheme used to find can come in a number of different flavors. The basic ones are described in the following sections, followed by the blending scheme Fuego uses to combine them.

## 4.9.6.1. Central Difference

Using a central difference scheme (CDS) we simply interpolate from the node locations to the face location using the element weights , so

(4.13)

This provides a second order accurate advection operator, but poor stability properties in regimes with high Peclet numbers.

## 4.9.6.2. Upwind Method

Using only the value of the upwind node from the face provides a simple, stable, inexpensive approach, but it is only first order accurate.

(4.14)

## 4.9.6.3. MUSCL Upwind

Using MUSCL (Monotonic Upstream-centered Scheme for Conservation Laws) we use the gradient of at the upwind node to project a value of from the node location.

(4.15)

where we also require a limiter function, that uses

(4.16)

(4.17)

## 4.9.6.4. Fuego Blending Approach

The cell Peclet number is the ratio of advection to diffusion, defined as

(4.18)

Fuego uses several blending functions to combine the three advection operators as a function of cell Peclet number.

(4.19)

Here, is the user-specified `first order upwind factor` (a value between 0 and 1), is a central difference blending coefficient that transitions between 0 and 1 depending on the cell Peclet number (described below), and is the user-specified upwind choice, either or .

When you set , you define what fraction of the advection operator is always first-order upwind, and the remaining fraction is then split between your choice of upwind operator (`UPW` or `MUSCL`) and central-difference based on .

The blending coefficient is either defined by

(4.20)

where is specified by `HYBRID UPWIND FACTOR` and can be any value greater than zero, or by

(4.21)

where is defined by `HYBRID UPWIND SHIFT` and is defined by `HYBRID UPWIND WIDTH`.

These parameters can be set globally, or per equation. The per-equation specification takes precedence, so you can set a global configuration, and then override it only for certain equations.

    Begin Solution Options
      Upwind Method = [UPW | MUSCL] # Default "UPW"
      First Order Upwind Factor = [0 to 1] # Default 0
      Hybrid Upwind Factor = [0+] # Default 1
      Upwind Limiter = [None, Superbee, Minmod, Van_Albada, Van_Leer] # Default "None"
      Hybrid Upwind Method = [Blending | Tanh] # Default "Blending"
      Hybrid Upwind Shift = X # Default 0
      Hybrid Upwind Width = X # Default 0

An example configuration below uses no first-order upwinding, and blends between MUSCL and CDS using the TANH blending rule with different transition points for momentum and the other equations.

    Begin Solution Options
      UPWIND METHOD IS MUSCL
      UPWIND LIMITER IS VAN_LEER

      FIRST ORDER UPWIND FACTOR = 0.0  # 0% upwinding

      HYBRID UPWIND METHOD = TANH
      HYBRID UPWIND WIDTH = 2
      HYBRID UPWIND SHIFT = 2

      HYBRID UPWIND WIDTH = 200 FOR EQUATION X_Momentum
      HYBRID UPWIND WIDTH = 200 FOR EQUATION Y_Momentum

      HYBRID UPWIND SHIFT = 2000 FOR EQUATION X_Momentum
      HYBRID UPWIND SHIFT = 2000 FOR EQUATION Y_Momentum