- bufferThe buffer this compute is writing to
C++ Type:std::string
Controllable:No
Description:The buffer this compute is writing to
- local_Knudsen_numberLocal Knudsen number
C++ Type:std::string
Controllable:No
Description:Local Knudsen number
- local_pore_sizeLocal pore size
C++ Type:std::string
Controllable:No
Description:Local pore size
LBMComputeEffectiveRelaxation
Compute local effective relaxation time matrix based on local pore size and Knudsen number.
This compute object calculates a spatially varying effective relaxation time matrix for rarefied gas Lattice Boltzmann simulations. It accounts for slip and transitional flow regime effects through the local pore size and Knudsen number fields. Currently limited to D2Q9 stencils.
Overview
For rarefied gas flows the standard single relaxation time is insufficient because the mean free path of gas molecules becomes comparable to the pore size. This object computes a per-node diagonal relaxation matrix with three distinct relaxation times for the 9 moment modes of D2Q9 MRT collision:
Shear relaxation ()
Controls viscous stress relaxation with a slip-corrected form:
\tau_s = \frac{1}{2} + \sqrt{\frac{6}{\pi}} \frac{d_p \cdot \text{Kn}}{1 + 2\,\text{Kn}}
where is the local pore size (in lattice units) and is the local Knudsen number.
Energy flux relaxation ()
Derived from second-order slip boundary theory:
\tau_q = \frac{1}{2} + \frac{3 + \pi \, A_2 \, (2\tau_s - 1)^2}{8\,(2\tau_s - 1)}
where is the second-order slip coefficient (default 0.8).
Diffusion relaxation ()
Based on the ratio of mean free path to the effective pore spacing:
\tau_d = \frac{1}{2} + \frac{3\sqrt{3}}{8} \frac{\lambda}{dx \, (1 + 2\,\text{Kn})}
where is the molecular mean free path and is the physical grid spacing.
Relaxation matrix layout
The output buffer has shape (Nx, Ny, 1, 9) and stores the inverse** of each relaxation time (i.e. ) for compatibility with the MRT collision operator. The 9 entries per node are:
| Index | Mode | Value |
|---|---|---|
| 0 | Conserved (density) | 1 |
| 1 | Conserved | 1/1.1 |
| 2 | Conserved | 1/1.2 |
| 3 | Diffusion | |
| 4 | Energy flux | |
| 5 | Diffusion | |
| 6 | Energy flux | |
| 7 | Shear stress | |
| 8 | Shear stress |
Requirements
A
binary_mediabuffer must be defined inLatticeBoltzmannProblem(solid cells are zeroed out).Only D2Q9 stencils are currently supported.
Input buffers
local_pore_sizeandlocal_Knudsen_numbermust be provided (typically loaded from HDF5 files).
Example Input File Syntax
[TensorComputes<<<{"href": "../../syntax/TensorComputes/index.html"}>>>]
[Initialize<<<{"href": "../../syntax/TensorComputes/Initialize/index.html"}>>>]
[relaxation_matrix_init]
type = LBMComputeEffectiveRelaxation<<<{"description": "Compute local effective relaxation time matrix based on local pore size and Knudsen number.", "href": "LBMComputeEffectiveRelaxation.html"}>>>
buffer<<<{"description": "The buffer this compute is writing to"}>>> = relaxation_matrix
local_pore_size<<<{"description": "Local pore size"}>>> = local_pore
local_Knudsen_number<<<{"description": "Local Knudsen number"}>>> = Kn
mfp<<<{"description": "Mean free path of the system, (meters)"}>>> = 7.904614716131531e-10
dx<<<{"description": "Domain resolution, (meters)"}>>> = 0.122e-9
A2<<<{"description": "Second order slip boundary constant"}>>> = 0.82
[]
[]
[](examples/lbm/rarefied_gas/channel.i)The relaxation matrix is then passed to the MRT collision operator:
[TensorComputes<<<{"href": "../../syntax/TensorComputes/index.html"}>>>]
[Solve<<<{"href": "../../syntax/TensorComputes/Solve/index.html"}>>>]
[collision]
type = LBMMRTCollision<<<{"description": "Template object for LBM collision dynamics", "href": "LBMCollisionDynamics.html"}>>>
buffer<<<{"description": "The buffer this compute is writing to"}>>> = fpc
f<<<{"description": "Input buffer distribution function"}>>> = f
feq<<<{"description": "Input buffer equilibrium distribution function"}>>> = feq
is_dynamic_relaxation<<<{"description": "Whether or not to use dynamic relaxation."}>>> = true
local_relaxation_matrix<<<{"description": "Locally computed diagonal relaxation matrix"}>>> = relaxation_matrix
projection<<<{"description": "Whether or not to project non-equilibrium onto Hermite space."}>>> = true
[]
[]
[](examples/lbm/rarefied_gas/channel.i)Input Parameters
- A20.8Second order slip boundary constant
Default:0.8
C++ Type:std::string
Controllable:No
Description:Second order slip boundary constant
- dx1.0e-9Domain resolution, (meters)
Default:1.0e-9
C++ Type:std::string
Controllable:No
Description:Domain resolution, (meters)
- mfp1.0e-9Mean free path of the system, (meters)
Default:1.0e-9
C++ Type:std::string
Controllable:No
Description:Mean free path of the system, (meters)
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.