LBMSpecularReflectionBoundary

LBM combination of bounce-back and specular reflection boundary condition. Uses a precomputed lookup table to determine specular reflection directions for each boundary node type in complex geometries (D2Q9 only).

This compute object implements a combination of bounce-back and specular reflection boundary conditions for rarefied gas flows in Lattice Boltzmann simulations. It is designed for use with complex solid geometries defined through binary_media and is currently limited to D2Q9 stencils.

Overview

At each boundary node (fluid cell adjacent to a solid), the incoming distribution is split into two parts:

f_{\mathrm{opposite}} \mathrel{+}= r \cdot f_{\mathrm{old,in}} \quad \text{(bounce-back)}

f_{\mathrm{specular}} \mathrel{+}= (1 - r) \cdot f_{\mathrm{old,in}} \quad \text{(specular reflection)}

where is a per-node combination coefficient computed from the local Knudsen number:

\sigma = 1 - \log_{10}(1 + \text{Kn}^{0.7}) \sigma_v = \frac{2 - \sigma}{\sigma} A_1 = 1 - 0.1817 \, \sigma_v r = \frac{1}{1 + \sqrt{\pi / 6} \, A_1 \, \sigma_v}

When the scheme reduces to pure bounce-back; when it is pure specular reflection.

Boundary Type Classification

Each boundary node is classified by encoding the connectivity of its 9 D2Q9 neighbors (fluid vs. solid) into a 9-bit binary number. A precomputed lookup table of 52 known boundary types maps this code to the specular reflection direction for each lattice velocity. Directions where streaming is not allowed (solid neighbor) receive the combined bounce-back / specular treatment.

Requirements

  • A binary_media buffer must be defined in LatticeBoltzmannProblem to identify solid and fluid regions.

  • Only boundary = wall is supported (domain-edge boundaries such as left, right, etc. are not handled by this object).

  • Only D2Q9 stencils are currently supported.

Example Input File Syntax

[TensorComputes<<<{"href": "../../syntax/TensorComputes/index.html"}>>>]
  [Boundary<<<{"href": "../../syntax/TensorComputes/Boundary/index.html"}>>>]
    [wall]
      type = LBMSpecularReflectionBoundary<<<{"description": "LBM combination of bounce-back and specular reflection boundary condition. Uses a precomputed lookup table to determine specular reflection directions for each boundary node type in complex geometries (D2Q9 only).", "href": "LBMSpecularReflectionBoundary.html"}>>>
      buffer<<<{"description": "The buffer this compute is writing to"}>>> = f
      f_old<<<{"description": "Old timestep distribution function"}>>> = fpc
      local_Knudsen_number<<<{"description": "Local Knudsen number"}>>> = Kn
      boundary<<<{"description": "Edges/Faces where boundary condition is applied."}>>> = wall
    []
  []
[]
(examples/lbm/rarefied_gas/channel.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 timestep distribution function

    C++ Type:std::string

    Controllable:No

    Description:Old timestep distribution function

  • local_Knudsen_numberLocal Knudsen number

    C++ Type:std::string

    Controllable:No

    Description:Local Knudsen number

Required 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