FVGreenGaussGradient

Overview

This method computes gradients for cell-centered linear finite-volume variables using the Green-Gauss theorem Moukalled et al. (2016). For a cell with volume , the method approximates the gradient of a cell-centered field as

where ranges over the cell faces, is the face value interpolated from adjacent cell-centered values and boundary data, and is the outward face area vector.

Use this method when a linear FV variable or a gradient-based interpolation method needs gradients. MOOSE also provides two built-in method names for convenient input into gradient method parameters:

  • green-gauss, equivalent to an FVGreenGaussGradient with limiter = none

  • green-gauss-venkatakrishnan, equivalent to an FVGreenGaussGradient with limiter = venkatakrishnan

Named methods in [FVGradientMethods] are useful when several variables or interpolation methods should use the same gradient settings.

Limiters

The optional "limiter" parameter controls whether MOOSE limits the Green-Gauss gradient before using it. With limiter = none, the Green-Gauss result is used directly. With limiter = venkatakrishnan, MOOSE first computes the Green-Gauss gradient and then applies the Venkatakrishnan limiter Venkatakrishnan (1993). A limiter can reduce overshoots near steep solution changes.

Example Syntax

Declare a named Green-Gauss gradient method in [FVGradientMethods]:

[FVGradientMethods<<<{"href": "../../syntax/FVGradientMethods/index.html"}>>>]
  [gg]
    type = FVGreenGaussGradient<<<{"description": "Green-Gauss cell-centered gradient method.", "href": "FVGreenGaussGradient.html"}>>>
  []
[]
(test/tests/variables/linearfv/shared-gradient-method.i)

Use the method as the default gradient method for a linear FV variable through "gradient_method":

[Variables<<<{"href": "../../syntax/Variables/index.html"}>>>]
  [u]
    type = MooseLinearVariableFVReal<<<{"description": "Base class for Moose variables. This should never be the terminal object type", "href": "../variables/MooseLinearVariableFV.html"}>>>
    solver_sys<<<{"description": "If this variable is a solver variable, this is the solver system to which it should be added."}>>> = 'u_sys'
    initial_condition<<<{"description": "Specifies a constant initial condition for this variable"}>>> = 1.0
    gradient_method<<<{"description": "Default gradient computation method to register when a consumer requests gradients from this variable. This may be a built-in method name like 'green-gauss' or 'green-gauss-venkatakrishnan', or the name of an object in [FVGradientMethods]."}>>> = gg
  []
[]
(test/tests/variables/linearfv/shared-gradient-method.i)

The same named method can also be used by a gradient-based interpolation method, such as FVAdvectedMUSCLDeferredCorrection:

[FVInterpolationMethods<<<{"href": "../../syntax/FVInterpolationMethods/index.html"}>>>]
  [muscl]
    type = FVAdvectedMUSCLDeferredCorrection<<<{"description": "MUSCL reconstruction with cell gradients from a named gradient method using deferred correction.", "href": "../fvinterpolationmethods/FVAdvectedMUSCLDeferredCorrection.html"}>>>
    gradient_method<<<{"description": "Gradient method used to compute cell gradients for the high-order reconstruction."}>>> = gg
    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
  []
[]
(test/tests/variables/linearfv/shared-gradient-method.i)

Input Parameters

  • limiternoneLimiter to apply to gradients produced by this method.

    Default:none

    C++ Type:MooseEnum

    Options:none, venkatakrishnan

    Controllable:No

    Description:Limiter to apply to gradients produced by this method.

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

Input Files

References

  1. Fadl Moukalled, L Mangani, Marwan Darwish, and others. The finite volume method in computational fluid dynamics. Volume 6. Springer, 2016.[Export]
  2. Venkat Venkatakrishnan. On the accuracy of limiters and convergence to steady state solutions. In 31st Aerospace Sciences Meeting, 880. 1993.[Export]