LBMConvectiveOutflow

Convective outflow boundary condition. Applies df/dt + U_c * df/dn = 0 at the boundary, discretized as f(x_b, t) = (f(x_b, t-1) + U_c * f(x_n, t)) / (1 + U_c). U_c can be a fixed value or computed automatically as the mean normal velocity at the boundary plane.

Implements a convective outflow boundary condition for Lattice Boltzmann simulations.

Overview

This boundary condition applies the discrete form of the convective transport equation at the outlet:

\frac{\partial f_i}{\partial t} + U_c \frac{\partial f_i}{\partial \hat{n}} = 0

which is discretized as:

f_i(\mathbf{x}_b, t) = \frac{f_i(\mathbf{x}_b, t-1) + U_c \, f_i(\mathbf{x}_n, t)}{1 + U_c}

where is the boundary node, is the first interior neighbor, and is the convection velocity.

The convective outflow BC allows vortices and other flow structures to leave the domain with minimal reflections, making it suitable for simulations with unsteady wake dynamics (e.g., vortex shedding behind bluff bodies).

Convection Velocity

The convection velocity is controlled by "convection_velocity":

  • auto (default): is computed on-the-fly as the mean absolute normal velocity at the first interior neighbor plane. This adapts automatically to the local flow conditions.

  • A constant name or numeric value: is fixed to the user-specified value. This is useful when the mean outlet velocity is known a priori (e.g., from the inlet velocity in an incompressible channel flow).

Old State

The boundary condition requires the old distribution function via "f_old", which provides .

It supports domain faces (left, right, top, bottom, front, back).

Example Input File Syntax

[TensorComputes<<<{"href": "../../syntax/TensorComputes/index.html"}>>>]
  [Boundary<<<{"href": "../../syntax/TensorComputes/Boundary/index.html"}>>>]
    [right]
      type = LBMConvectiveOutflow<<<{"description": "Convective outflow boundary condition. Applies df/dt + U_c * df/dn = 0 at the boundary, discretized as f(x_b, t) = (f(x_b, t-1) + U_c * f(x_n, t)) / (1 + U_c). U_c can be a fixed value or computed automatically as the mean normal velocity at the boundary plane.", "href": "LBMConvectiveOutflow.html"}>>>
      buffer<<<{"description": "The buffer this compute is writing to"}>>> = f
      f_old<<<{"description": "Old state distribution function"}>>> = f
      convection_velocity<<<{"description": "Convection velocity U_c. Set to 'auto' to compute the mean normal velocity at the outlet, or provide a constant name / numeric value."}>>> = auto
      boundary<<<{"description": "Edges/Faces where boundary condition is applied."}>>> = right
    []
  []
[]
(test/tests/lbm/convective_outflow_2d_right.i)
[TensorComputes<<<{"href": "../../syntax/TensorComputes/index.html"}>>>]
  [Boundary<<<{"href": "../../syntax/TensorComputes/Boundary/index.html"}>>>]
    [bottom]
      type = LBMConvectiveOutflow<<<{"description": "Convective outflow boundary condition. Applies df/dt + U_c * df/dn = 0 at the boundary, discretized as f(x_b, t) = (f(x_b, t-1) + U_c * f(x_n, t)) / (1 + U_c). U_c can be a fixed value or computed automatically as the mean normal velocity at the boundary plane.", "href": "LBMConvectiveOutflow.html"}>>>
      buffer<<<{"description": "The buffer this compute is writing to"}>>> = f
      f_old<<<{"description": "Old state distribution function"}>>> = f
      convection_velocity<<<{"description": "Convection velocity U_c. Set to 'auto' to compute the mean normal velocity at the outlet, or provide a constant name / numeric value."}>>> = Uc
      boundary<<<{"description": "Edges/Faces where boundary condition is applied."}>>> = bottom
    []
  []
[]
(test/tests/lbm/convective_outflow_3d_bottom.i)

Input Parameters

  • boundaryEdges/Faces where boundary condition is applied.

    C++ Type:MooseEnum

    Options:top, bottom, left, right, front, back, wall, regional

    Controllable:No

    Description:Edges/Faces where boundary condition is applied.

  • bufferThe buffer this compute is writing to

    C++ Type:std::string

    Controllable:No

    Description:The buffer this compute is writing to

  • f_oldOld state distribution function

    C++ Type:std::string

    Controllable:No

    Description:Old state distribution function

Required Parameters

  • convection_velocityautoConvection velocity U_c. Set to 'auto' to compute the mean normal velocity at the outlet, or provide a constant name / numeric value.

    Default:auto

    C++ Type:std::string

    Controllable:No

    Description:Convection velocity U_c. Set to 'auto' to compute the mean normal velocity at the outlet, or provide a constant name / numeric value.

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