FVAdvectedVenkatakrishnanDeferredCorrection

Overview

This object provides a multi-dimensional MUSCL-type reconstruction for advected quantities that uses a Venkatakrishnan limiter on cell gradients and applies the high-order component through deferred correction. This yields second-order accuracy in smooth regions while controlling oscillations near steep gradients and improving robustness of fully implicit linear FV solves by keeping the matrix contribution low-order (Venkatakrishnan (1993), Jasak (1996), Moukalled et al. (2016)).

Let denote the upwind cell-centered value on a face and let be a limited gradient (Venkatakrishnan-limited). A MUSCL reconstruction forms a higher-order face value from the upwind cell:

where is the upwind cell centroid and is a face centroid. In MOOSE, both the Venkatakrishnan limiting step for the cell gradient and the MUSCL reconstruction use this same face point, so on skewed meshes the skewness is included directly in the limited reconstruction rather than added afterward as a separate correction.

Deferred correction splits the face value into a low-order implicit part and a high-order explicit correction:

where is the upwind (first-order) face value and is controlled by "deferred_correction_factor". With the method reduces to pure upwind; with it applies the full MUSCL reconstruction while still assembling the matrix with the upwind weights and placing the correction explicitly on the right-hand side. Values are sometimes useful for fixed-point iteration robustness.

Notes on boundedness and skewness

Using the actual face centroid in both the limiter and the MUSCL reconstruction makes the scheme internally consistent on skewed meshes: the limited gradient is constrained against the same face location at which the higher-order value is reconstructed.

This does not guarantee strict boundedness of the final scheme. The Venkatakrishnan limiter is a smooth limiter with a small relaxation term, which is intentionally less restrictive than a hard clipping procedure in order to avoid degrading smooth extrema. As a result, small overshoots or undershoots may still occur. In addition, this object applies the high-order term through deferred correction on the right-hand side, so the overall discretization is not a strict monotone or maximum-principle-preserving scheme.

The positive effect, however, is that this advection discretization second order on skewed meshes as well.

For limiter definitions and behavior, see Limiters.

Example Syntax

Declare the interpolation method in [FVInterpolationMethods]:

[FVInterpolationMethods<<<{"href": "../../syntax/FVInterpolationMethods/index.html"}>>>]
  [muscl_venkat]
    type = FVAdvectedVenkatakrishnanDeferredCorrection<<<{"description": "MUSCL reconstruction with Venkatakrishnan-limited cell gradients using deferred correction.", "href": "FVAdvectedVenkatakrishnanDeferredCorrection.html"}>>>
    deferred_correction_factor<<<{"description": "Scales the deferred correction strength; 0 gives pure upwind (no deferred correction), 1 gives full deferred correction. Values < 1 can improve fixed point robustness."}>>> = 1.0
  []
[]
(moose/test/tests/linearfvkernels/advection/diagonal-step-2d.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"}>>> = "1 1 0"
    advected_interp_method_name<<<{"description": "Name of the FVInterpolationMethod to use for the advected quantity."}>>> = muscl_venkat
  []
[]
(moose/test/tests/linearfvkernels/advection/diagonal-step-2d.i)

Input Parameters

  • deferred_correction_factor1Scales the deferred correction strength; 0 gives pure upwind (no deferred correction), 1 gives full deferred correction. Values < 1 can improve fixed point robustness.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Range:deferred_correction_factor>=0 & deferred_correction_factor<=1

    Controllable:No

    Description:Scales the deferred correction strength; 0 gives pure upwind (no deferred correction), 1 gives full deferred correction. Values < 1 can improve fixed point robustness.

Optional 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.

Advanced Parameters

References

  1. Hrvoje Jasak. Error analysis and estimation for the finite volume method with applications to fluid flows. PhD thesis, Imperial College London (University of London), 1996.[BibTeX]
  2. Fadl Moukalled, L Mangani, Marwan Darwish, and others. The finite volume method in computational fluid dynamics. Volume 6. Springer, 2016.[BibTeX]
  3. Venkat Venkatakrishnan. On the accuracy of limiters and convergence to steady state solutions. In 31st Aerospace Sciences Meeting, 880. 1993.[BibTeX]