FVAdvectedUpwind
Overview
This object provides first-order upwind interpolation for an advected quantity on a finite-volume face. The upwind state is selected using the sign of the face mass flux (), yielding a monotone, Total Variation Diminishing (TVD) discretization that is robust near discontinuities at the cost of increased numerical diffusion (Moukalled et al. (2016), Harten (1997)).
Let and denote the cell-centered values on the element and neighbor sides of a face. Define the upwind value
Then the interpolated face value is simply
In matrix form this corresponds to weights chosen by the mass flux sign, so no gradients are required. This is a common baseline scheme for advection and is often used as the low-order component in higher-order schemes with limiting or deferred correction (see Limiters).
Example Syntax
Declare the interpolation method in [FVInterpolationMethods]:
[FVInterpolationMethods<<<{"href": "../../syntax/FVInterpolationMethods/index.html"}>>>]
[upwind]
type = FVAdvectedUpwind<<<{"description": "Upwind interpolation for advected quantities using the face mass flux sign.", "href": "FVAdvectedUpwind.html"}>>>
[]
[](moose/test/tests/linearfvkernels/advection/advection-1d.i)Use it in a linear FV advection kernel via "advected_interp_method_name":
[LinearFVKernels<<<{"href": "../../syntax/LinearFVKernels/index.html"}>>>]
[advection]
type = LinearFVAdvection<<<{"description": "Represents the matrix and right hand side contributions of an advection term in a partial differential equation.", "href": "../linearfvkernels/LinearFVAdvection.html"}>>>
variable<<<{"description": "The name of the variable whose linear system this object contributes to"}>>> = u
velocity<<<{"description": "Constant advection velocity"}>>> = "0.5 0 0"
advected_interp_method_name<<<{"description": "Name of the FVInterpolationMethod to use for the advected quantity."}>>> = upwind
[]
[](moose/test/tests/linearfvkernels/advection/advection-1d.i)Input Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:No
Description:Set the enabled status of the MooseObject.