- boundaryEdges/Faces where boundary condition is applied.
C++ Type:MooseEnum
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
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
- 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
- (test/tests/lbm/convective_outflow_3d_top.i)
- (test/tests/lbm/convective_outflow_3d_right.i)
- (test/tests/lbm/convective_outflow_2d_right.i)
- (test/tests/lbm/convective_outflow_2d_left.i)
- (test/tests/lbm/convective_outflow_3d_left.i)
- (test/tests/lbm/convective_outflow_2d_bottom.i)
- (test/tests/lbm/convective_outflow_3d_front.i)
- (test/tests/lbm/convective_outflow_3d_back.i)
- (test/tests/lbm/convective_outflow_2d_top.i)
- (test/tests/lbm/convective_outflow_3d_bottom.i)
convection_velocity
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.
f_old
C++ Type:std::string
Controllable:No
Description:Old state distribution function
(test/tests/lbm/convective_outflow_2d_right.i)
[Domain]
dim = 2
nx = 10
ny = 10
mesh_mode = DUMMY
parallel_mode = REAL_SPACE
periodic_directions = 'X Y'
[]
[Stencil]
[d2q9]
type = LBMD2Q9
[]
[]
[TensorBuffers]
[f]
type = LBMTensorBuffer
buffer_type = df
[]
[feq]
type = LBMTensorBuffer
buffer_type = df
[]
[fpc]
type = LBMTensorBuffer
buffer_type = df
[]
[velocity]
type = LBMTensorBuffer
buffer_type = mv
[]
[density]
type = LBMTensorBuffer
buffer_type = ms
[]
[]
[TensorComputes]
[Initialize]
[initial_density]
type = LBMConstantTensor
buffer = density
constants = 1.0
[]
[initial_velocity]
type = LBMConstantTensor
buffer = velocity
constants = '0.0 0.0'
[]
[initial_feq]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[initial_f]
type = LBMEquilibrium
buffer = f
bulk = density
velocity = velocity
[]
[initial_fpc]
type = LBMEquilibrium
buffer = fpc
bulk = density
velocity = velocity
[]
[]
[Solve]
[equilibrium]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[collision]
type = LBMBGKCollision
buffer = fpc
f = f
feq = feq
tau0 = 1.0
[]
[density]
type = LBMComputeDensity
buffer = density
f = f
[]
[velocity]
type = LBMComputeVelocity
buffer = velocity
f = f
rho = density
[]
[]
[Boundary]
[left]
type = LBMNonEquilibriumExtrapolation
buffer = f
prescribe_type = velocity
ux = 0.005
uy = 0.0
order = first
boundary = left
[]
[right]
type = LBMConvectiveOutflow
buffer = f
f_old = f
convection_velocity = auto
boundary = right
[]
[top]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = top
[]
[bottom]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = bottom
[]
[]
[]
[TensorSolver]
type = LBMStream
buffer = f
f_old = fpc
[]
[Problem]
type = LatticeBoltzmannProblem
substeps = 1
[]
[Postprocessors]
[velocity_min]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MIN
[]
[velocity_max]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MAX
[]
[density_min]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MIN
[]
[density_max]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MAX
[]
[]
[Executioner]
type = Transient
num_steps = 5
[]
[Outputs]
file_base = convective_outflow_2d_right
csv = true
[]
(test/tests/lbm/convective_outflow_3d_bottom.i)
[Domain]
dim = 3
nx = 8
ny = 8
nz = 8
mesh_mode = DUMMY
parallel_mode = REAL_SPACE
periodic_directions = 'X Y Z'
[]
[Stencil]
[d3q19]
type = LBMD3Q19
[]
[]
[TensorBuffers]
[f]
type = LBMTensorBuffer
buffer_type = df
[]
[feq]
type = LBMTensorBuffer
buffer_type = df
[]
[fpc]
type = LBMTensorBuffer
buffer_type = df
[]
[velocity]
type = LBMTensorBuffer
buffer_type = mv
[]
[density]
type = LBMTensorBuffer
buffer_type = ms
[]
[]
[TensorComputes]
[Initialize]
[initial_density]
type = LBMConstantTensor
buffer = density
constants = 1.0
[]
[initial_velocity]
type = LBMConstantTensor
buffer = velocity
constants = '0.0 0.0 0.0'
[]
[initial_feq]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[initial_f]
type = LBMEquilibrium
buffer = f
bulk = density
velocity = velocity
[]
[initial_fpc]
type = LBMEquilibrium
buffer = fpc
bulk = density
velocity = velocity
[]
[]
[Solve]
[equilibrium]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[collision]
type = LBMBGKCollision
buffer = fpc
f = f
feq = feq
tau0 = 1.0
[]
[density]
type = LBMComputeDensity
buffer = density
f = f
[]
[velocity]
type = LBMComputeVelocity
buffer = velocity
f = f
rho = density
[]
[]
[Boundary]
[top]
type = LBMNonEquilibriumExtrapolation
buffer = f
prescribe_type = velocity
ux = 0.0
uy = -0.005
uz = 0.0
order = first
boundary = top
[]
[bottom]
type = LBMConvectiveOutflow
buffer = f
f_old = f
convection_velocity = Uc
boundary = bottom
[]
[left]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = left
[]
[right]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = right
[]
[front]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = front
[]
[back]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = back
[]
[]
[]
[TensorSolver]
type = LBMStream
buffer = f
f_old = fpc
[]
[Problem]
type = LatticeBoltzmannProblem
scalar_constant_names = 'Uc'
scalar_constant_values = '0.005'
substeps = 1
[]
[Postprocessors]
[velocity_min]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MIN
[]
[velocity_max]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MAX
[]
[density_min]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MIN
[]
[density_max]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MAX
[]
[]
[Executioner]
type = Transient
num_steps = 5
[]
[Outputs]
file_base = convective_outflow_3d_bottom
csv = true
[]
(test/tests/lbm/convective_outflow_3d_top.i)
[Domain]
dim = 3
nx = 8
ny = 8
nz = 8
mesh_mode = DUMMY
parallel_mode = REAL_SPACE
periodic_directions = 'X Y Z'
[]
[Stencil]
[d3q19]
type = LBMD3Q19
[]
[]
[TensorBuffers]
[f]
type = LBMTensorBuffer
buffer_type = df
[]
[feq]
type = LBMTensorBuffer
buffer_type = df
[]
[fpc]
type = LBMTensorBuffer
buffer_type = df
[]
[velocity]
type = LBMTensorBuffer
buffer_type = mv
[]
[density]
type = LBMTensorBuffer
buffer_type = ms
[]
[]
[TensorComputes]
[Initialize]
[initial_density]
type = LBMConstantTensor
buffer = density
constants = 1.0
[]
[initial_velocity]
type = LBMConstantTensor
buffer = velocity
constants = '0.0 0.0 0.0'
[]
[initial_feq]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[initial_f]
type = LBMEquilibrium
buffer = f
bulk = density
velocity = velocity
[]
[initial_fpc]
type = LBMEquilibrium
buffer = fpc
bulk = density
velocity = velocity
[]
[]
[Solve]
[equilibrium]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[collision]
type = LBMBGKCollision
buffer = fpc
f = f
feq = feq
tau0 = 1.0
[]
[density]
type = LBMComputeDensity
buffer = density
f = f
[]
[velocity]
type = LBMComputeVelocity
buffer = velocity
f = f
rho = density
[]
[]
[Boundary]
[bottom]
type = LBMNonEquilibriumExtrapolation
buffer = f
prescribe_type = velocity
ux = 0.0
uy = 0.005
uz = 0.0
order = first
boundary = bottom
[]
[top]
type = LBMConvectiveOutflow
buffer = f
f_old = f
convection_velocity = Uc
boundary = top
[]
[left]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = left
[]
[right]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = right
[]
[front]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = front
[]
[back]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = back
[]
[]
[]
[TensorSolver]
type = LBMStream
buffer = f
f_old = fpc
[]
[Problem]
type = LatticeBoltzmannProblem
scalar_constant_names = 'Uc'
scalar_constant_values = '0.005'
substeps = 1
[]
[Postprocessors]
[velocity_min]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MIN
[]
[velocity_max]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MAX
[]
[density_min]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MIN
[]
[density_max]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MAX
[]
[]
[Executioner]
type = Transient
num_steps = 5
[]
[Outputs]
file_base = convective_outflow_3d_top
csv = true
[]
(test/tests/lbm/convective_outflow_3d_right.i)
[Domain]
dim = 3
nx = 8
ny = 8
nz = 8
mesh_mode = DUMMY
parallel_mode = REAL_SPACE
periodic_directions = 'X Y Z'
[]
[Stencil]
[d3q19]
type = LBMD3Q19
[]
[]
[TensorBuffers]
[f]
type = LBMTensorBuffer
buffer_type = df
[]
[feq]
type = LBMTensorBuffer
buffer_type = df
[]
[fpc]
type = LBMTensorBuffer
buffer_type = df
[]
[velocity]
type = LBMTensorBuffer
buffer_type = mv
[]
[density]
type = LBMTensorBuffer
buffer_type = ms
[]
[]
[TensorComputes]
[Initialize]
[initial_density]
type = LBMConstantTensor
buffer = density
constants = 1.0
[]
[initial_velocity]
type = LBMConstantTensor
buffer = velocity
constants = '0.0 0.0 0.0'
[]
[initial_feq]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[initial_f]
type = LBMEquilibrium
buffer = f
bulk = density
velocity = velocity
[]
[initial_fpc]
type = LBMEquilibrium
buffer = fpc
bulk = density
velocity = velocity
[]
[]
[Solve]
[equilibrium]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[collision]
type = LBMBGKCollision
buffer = fpc
f = f
feq = feq
tau0 = 1.0
[]
[density]
type = LBMComputeDensity
buffer = density
f = f
[]
[velocity]
type = LBMComputeVelocity
buffer = velocity
f = f
rho = density
[]
[]
[Boundary]
[left]
type = LBMNonEquilibriumExtrapolation
buffer = f
prescribe_type = velocity
ux = 0.005
uy = 0.0
uz = 0.0
order = first
boundary = left
[]
[right]
type = LBMConvectiveOutflow
buffer = f
f_old = f
convection_velocity = Uc
boundary = right
[]
[top]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = top
[]
[bottom]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = bottom
[]
[front]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = front
[]
[back]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = back
[]
[]
[]
[TensorSolver]
type = LBMStream
buffer = f
f_old = fpc
[]
[Problem]
type = LatticeBoltzmannProblem
scalar_constant_names = 'Uc'
scalar_constant_values = '0.005'
substeps = 1
[]
[Postprocessors]
[velocity_min]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MIN
[]
[velocity_max]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MAX
[]
[density_min]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MIN
[]
[density_max]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MAX
[]
[]
[Executioner]
type = Transient
num_steps = 5
[]
[Outputs]
file_base = convective_outflow_3d_right
csv = true
[]
(test/tests/lbm/convective_outflow_2d_right.i)
[Domain]
dim = 2
nx = 10
ny = 10
mesh_mode = DUMMY
parallel_mode = REAL_SPACE
periodic_directions = 'X Y'
[]
[Stencil]
[d2q9]
type = LBMD2Q9
[]
[]
[TensorBuffers]
[f]
type = LBMTensorBuffer
buffer_type = df
[]
[feq]
type = LBMTensorBuffer
buffer_type = df
[]
[fpc]
type = LBMTensorBuffer
buffer_type = df
[]
[velocity]
type = LBMTensorBuffer
buffer_type = mv
[]
[density]
type = LBMTensorBuffer
buffer_type = ms
[]
[]
[TensorComputes]
[Initialize]
[initial_density]
type = LBMConstantTensor
buffer = density
constants = 1.0
[]
[initial_velocity]
type = LBMConstantTensor
buffer = velocity
constants = '0.0 0.0'
[]
[initial_feq]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[initial_f]
type = LBMEquilibrium
buffer = f
bulk = density
velocity = velocity
[]
[initial_fpc]
type = LBMEquilibrium
buffer = fpc
bulk = density
velocity = velocity
[]
[]
[Solve]
[equilibrium]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[collision]
type = LBMBGKCollision
buffer = fpc
f = f
feq = feq
tau0 = 1.0
[]
[density]
type = LBMComputeDensity
buffer = density
f = f
[]
[velocity]
type = LBMComputeVelocity
buffer = velocity
f = f
rho = density
[]
[]
[Boundary]
[left]
type = LBMNonEquilibriumExtrapolation
buffer = f
prescribe_type = velocity
ux = 0.005
uy = 0.0
order = first
boundary = left
[]
[right]
type = LBMConvectiveOutflow
buffer = f
f_old = f
convection_velocity = auto
boundary = right
[]
[top]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = top
[]
[bottom]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = bottom
[]
[]
[]
[TensorSolver]
type = LBMStream
buffer = f
f_old = fpc
[]
[Problem]
type = LatticeBoltzmannProblem
substeps = 1
[]
[Postprocessors]
[velocity_min]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MIN
[]
[velocity_max]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MAX
[]
[density_min]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MIN
[]
[density_max]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MAX
[]
[]
[Executioner]
type = Transient
num_steps = 5
[]
[Outputs]
file_base = convective_outflow_2d_right
csv = true
[]
(test/tests/lbm/convective_outflow_2d_left.i)
[Domain]
dim = 2
nx = 10
ny = 10
mesh_mode = DUMMY
parallel_mode = REAL_SPACE
periodic_directions = 'X Y'
[]
[Stencil]
[d2q9]
type = LBMD2Q9
[]
[]
[TensorBuffers]
[f]
type = LBMTensorBuffer
buffer_type = df
[]
[feq]
type = LBMTensorBuffer
buffer_type = df
[]
[fpc]
type = LBMTensorBuffer
buffer_type = df
[]
[velocity]
type = LBMTensorBuffer
buffer_type = mv
[]
[density]
type = LBMTensorBuffer
buffer_type = ms
[]
[]
[TensorComputes]
[Initialize]
[initial_density]
type = LBMConstantTensor
buffer = density
constants = 1.0
[]
[initial_velocity]
type = LBMConstantTensor
buffer = velocity
constants = '0.0 0.0'
[]
[initial_feq]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[initial_f]
type = LBMEquilibrium
buffer = f
bulk = density
velocity = velocity
[]
[initial_fpc]
type = LBMEquilibrium
buffer = fpc
bulk = density
velocity = velocity
[]
[]
[Solve]
[equilibrium]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[collision]
type = LBMBGKCollision
buffer = fpc
f = f
feq = feq
tau0 = 1.0
[]
[density]
type = LBMComputeDensity
buffer = density
f = f
[]
[velocity]
type = LBMComputeVelocity
buffer = velocity
f = f
rho = density
[]
[]
[Boundary]
[right]
type = LBMNonEquilibriumExtrapolation
buffer = f
prescribe_type = velocity
ux = -0.005
uy = 0.0
order = first
boundary = right
[]
[left]
type = LBMConvectiveOutflow
buffer = f
f_old = f
convection_velocity = auto
boundary = left
[]
[top]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = top
[]
[bottom]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = bottom
[]
[]
[]
[TensorSolver]
type = LBMStream
buffer = f
f_old = fpc
[]
[Problem]
type = LatticeBoltzmannProblem
substeps = 1
[]
[Postprocessors]
[velocity_min]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MIN
[]
[velocity_max]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MAX
[]
[density_min]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MIN
[]
[density_max]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MAX
[]
[]
[Executioner]
type = Transient
num_steps = 5
[]
[Outputs]
file_base = convective_outflow_2d_left
csv = true
[]
(test/tests/lbm/convective_outflow_3d_left.i)
[Domain]
dim = 3
nx = 8
ny = 8
nz = 8
mesh_mode = DUMMY
parallel_mode = REAL_SPACE
periodic_directions = 'X Y Z'
[]
[Stencil]
[d3q19]
type = LBMD3Q19
[]
[]
[TensorBuffers]
[f]
type = LBMTensorBuffer
buffer_type = df
[]
[feq]
type = LBMTensorBuffer
buffer_type = df
[]
[fpc]
type = LBMTensorBuffer
buffer_type = df
[]
[velocity]
type = LBMTensorBuffer
buffer_type = mv
[]
[density]
type = LBMTensorBuffer
buffer_type = ms
[]
[]
[TensorComputes]
[Initialize]
[initial_density]
type = LBMConstantTensor
buffer = density
constants = 1.0
[]
[initial_velocity]
type = LBMConstantTensor
buffer = velocity
constants = '0.0 0.0 0.0'
[]
[initial_feq]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[initial_f]
type = LBMEquilibrium
buffer = f
bulk = density
velocity = velocity
[]
[initial_fpc]
type = LBMEquilibrium
buffer = fpc
bulk = density
velocity = velocity
[]
[]
[Solve]
[equilibrium]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[collision]
type = LBMBGKCollision
buffer = fpc
f = f
feq = feq
tau0 = 1.0
[]
[density]
type = LBMComputeDensity
buffer = density
f = f
[]
[velocity]
type = LBMComputeVelocity
buffer = velocity
f = f
rho = density
[]
[]
[Boundary]
[right]
type = LBMNonEquilibriumExtrapolation
buffer = f
prescribe_type = velocity
ux = -0.005
uy = 0.0
uz = 0.0
order = first
boundary = right
[]
[left]
type = LBMConvectiveOutflow
buffer = f
f_old = f
convection_velocity = Uc
boundary = left
[]
[top]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = top
[]
[bottom]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = bottom
[]
[front]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = front
[]
[back]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = back
[]
[]
[]
[TensorSolver]
type = LBMStream
buffer = f
f_old = fpc
[]
[Problem]
type = LatticeBoltzmannProblem
scalar_constant_names = 'Uc'
scalar_constant_values = '0.005'
substeps = 1
[]
[Postprocessors]
[velocity_min]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MIN
[]
[velocity_max]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MAX
[]
[density_min]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MIN
[]
[density_max]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MAX
[]
[]
[Executioner]
type = Transient
num_steps = 5
[]
[Outputs]
file_base = convective_outflow_3d_left
csv = true
[]
(test/tests/lbm/convective_outflow_2d_bottom.i)
[Domain]
dim = 2
nx = 10
ny = 10
mesh_mode = DUMMY
parallel_mode = REAL_SPACE
periodic_directions = 'X Y'
[]
[Stencil]
[d2q9]
type = LBMD2Q9
[]
[]
[TensorBuffers]
[f]
type = LBMTensorBuffer
buffer_type = df
[]
[feq]
type = LBMTensorBuffer
buffer_type = df
[]
[fpc]
type = LBMTensorBuffer
buffer_type = df
[]
[velocity]
type = LBMTensorBuffer
buffer_type = mv
[]
[density]
type = LBMTensorBuffer
buffer_type = ms
[]
[]
[TensorComputes]
[Initialize]
[initial_density]
type = LBMConstantTensor
buffer = density
constants = 1.0
[]
[initial_velocity]
type = LBMConstantTensor
buffer = velocity
constants = '0.0 0.0'
[]
[initial_feq]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[initial_f]
type = LBMEquilibrium
buffer = f
bulk = density
velocity = velocity
[]
[initial_fpc]
type = LBMEquilibrium
buffer = fpc
bulk = density
velocity = velocity
[]
[]
[Solve]
[equilibrium]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[collision]
type = LBMBGKCollision
buffer = fpc
f = f
feq = feq
tau0 = 1.0
[]
[density]
type = LBMComputeDensity
buffer = density
f = f
[]
[velocity]
type = LBMComputeVelocity
buffer = velocity
f = f
rho = density
[]
[]
[Boundary]
[top]
type = LBMNonEquilibriumExtrapolation
buffer = f
prescribe_type = velocity
ux = 0.0
uy = -0.005
order = first
boundary = top
[]
[bottom]
type = LBMConvectiveOutflow
buffer = f
f_old = f
convection_velocity = auto
boundary = bottom
[]
[left]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = left
[]
[right]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = right
[]
[]
[]
[TensorSolver]
type = LBMStream
buffer = f
f_old = fpc
[]
[Problem]
type = LatticeBoltzmannProblem
substeps = 1
[]
[Postprocessors]
[velocity_min]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MIN
[]
[velocity_max]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MAX
[]
[density_min]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MIN
[]
[density_max]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MAX
[]
[]
[Executioner]
type = Transient
num_steps = 5
[]
[Outputs]
file_base = convective_outflow_2d_bottom
csv = true
[]
(test/tests/lbm/convective_outflow_3d_front.i)
[Domain]
dim = 3
nx = 8
ny = 8
nz = 8
mesh_mode = DUMMY
parallel_mode = REAL_SPACE
periodic_directions = 'X Y Z'
[]
[Stencil]
[d3q19]
type = LBMD3Q19
[]
[]
[TensorBuffers]
[f]
type = LBMTensorBuffer
buffer_type = df
[]
[feq]
type = LBMTensorBuffer
buffer_type = df
[]
[fpc]
type = LBMTensorBuffer
buffer_type = df
[]
[velocity]
type = LBMTensorBuffer
buffer_type = mv
[]
[density]
type = LBMTensorBuffer
buffer_type = ms
[]
[]
[TensorComputes]
[Initialize]
[initial_density]
type = LBMConstantTensor
buffer = density
constants = 1.0
[]
[initial_velocity]
type = LBMConstantTensor
buffer = velocity
constants = '0.0 0.0 0.0'
[]
[initial_feq]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[initial_f]
type = LBMEquilibrium
buffer = f
bulk = density
velocity = velocity
[]
[initial_fpc]
type = LBMEquilibrium
buffer = fpc
bulk = density
velocity = velocity
[]
[]
[Solve]
[equilibrium]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[collision]
type = LBMBGKCollision
buffer = fpc
f = f
feq = feq
tau0 = 1.0
[]
[density]
type = LBMComputeDensity
buffer = density
f = f
[]
[velocity]
type = LBMComputeVelocity
buffer = velocity
f = f
rho = density
[]
[]
[Boundary]
[back]
type = LBMNonEquilibriumExtrapolation
buffer = f
prescribe_type = velocity
ux = 0.0
uy = 0.0
uz = -0.005
order = first
boundary = back
[]
[front]
type = LBMConvectiveOutflow
buffer = f
f_old = f
convection_velocity = Uc
boundary = front
[]
[left]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = left
[]
[right]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = right
[]
[top]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = top
[]
[bottom]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = bottom
[]
[]
[]
[TensorSolver]
type = LBMStream
buffer = f
f_old = fpc
[]
[Problem]
type = LatticeBoltzmannProblem
scalar_constant_names = 'Uc'
scalar_constant_values = '0.005'
substeps = 1
[]
[Postprocessors]
[velocity_min]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MIN
[]
[velocity_max]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MAX
[]
[density_min]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MIN
[]
[density_max]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MAX
[]
[]
[Executioner]
type = Transient
num_steps = 5
[]
[Outputs]
file_base = convective_outflow_3d_front
csv = true
[]
(test/tests/lbm/convective_outflow_3d_back.i)
[Domain]
dim = 3
nx = 8
ny = 8
nz = 8
mesh_mode = DUMMY
parallel_mode = REAL_SPACE
periodic_directions = 'X Y Z'
[]
[Stencil]
[d3q19]
type = LBMD3Q19
[]
[]
[TensorBuffers]
[f]
type = LBMTensorBuffer
buffer_type = df
[]
[feq]
type = LBMTensorBuffer
buffer_type = df
[]
[fpc]
type = LBMTensorBuffer
buffer_type = df
[]
[velocity]
type = LBMTensorBuffer
buffer_type = mv
[]
[density]
type = LBMTensorBuffer
buffer_type = ms
[]
[]
[TensorComputes]
[Initialize]
[initial_density]
type = LBMConstantTensor
buffer = density
constants = 1.0
[]
[initial_velocity]
type = LBMConstantTensor
buffer = velocity
constants = '0.0 0.0 0.0'
[]
[initial_feq]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[initial_f]
type = LBMEquilibrium
buffer = f
bulk = density
velocity = velocity
[]
[initial_fpc]
type = LBMEquilibrium
buffer = fpc
bulk = density
velocity = velocity
[]
[]
[Solve]
[equilibrium]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[collision]
type = LBMBGKCollision
buffer = fpc
f = f
feq = feq
tau0 = 1.0
[]
[density]
type = LBMComputeDensity
buffer = density
f = f
[]
[velocity]
type = LBMComputeVelocity
buffer = velocity
f = f
rho = density
[]
[]
[Boundary]
[front]
type = LBMNonEquilibriumExtrapolation
buffer = f
prescribe_type = velocity
ux = 0.0
uy = 0.0
uz = 0.005
order = first
boundary = front
[]
[back]
type = LBMConvectiveOutflow
buffer = f
f_old = f
convection_velocity = Uc
boundary = back
[]
[left]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = left
[]
[right]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = right
[]
[top]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = top
[]
[bottom]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = bottom
[]
[]
[]
[TensorSolver]
type = LBMStream
buffer = f
f_old = fpc
[]
[Problem]
type = LatticeBoltzmannProblem
scalar_constant_names = 'Uc'
scalar_constant_values = '0.005'
substeps = 1
[]
[Postprocessors]
[velocity_min]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MIN
[]
[velocity_max]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MAX
[]
[density_min]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MIN
[]
[density_max]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MAX
[]
[]
[Executioner]
type = Transient
num_steps = 5
[]
[Outputs]
file_base = convective_outflow_3d_back
csv = true
[]
(test/tests/lbm/convective_outflow_2d_top.i)
[Domain]
dim = 2
nx = 10
ny = 10
mesh_mode = DUMMY
parallel_mode = REAL_SPACE
periodic_directions = 'X Y'
[]
[Stencil]
[d2q9]
type = LBMD2Q9
[]
[]
[TensorBuffers]
[f]
type = LBMTensorBuffer
buffer_type = df
[]
[feq]
type = LBMTensorBuffer
buffer_type = df
[]
[fpc]
type = LBMTensorBuffer
buffer_type = df
[]
[velocity]
type = LBMTensorBuffer
buffer_type = mv
[]
[density]
type = LBMTensorBuffer
buffer_type = ms
[]
[]
[TensorComputes]
[Initialize]
[initial_density]
type = LBMConstantTensor
buffer = density
constants = 1.0
[]
[initial_velocity]
type = LBMConstantTensor
buffer = velocity
constants = '0.0 0.0'
[]
[initial_feq]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[initial_f]
type = LBMEquilibrium
buffer = f
bulk = density
velocity = velocity
[]
[initial_fpc]
type = LBMEquilibrium
buffer = fpc
bulk = density
velocity = velocity
[]
[]
[Solve]
[equilibrium]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[collision]
type = LBMBGKCollision
buffer = fpc
f = f
feq = feq
tau0 = 1.0
[]
[density]
type = LBMComputeDensity
buffer = density
f = f
[]
[velocity]
type = LBMComputeVelocity
buffer = velocity
f = f
rho = density
[]
[]
[Boundary]
[bottom]
type = LBMNonEquilibriumExtrapolation
buffer = f
prescribe_type = velocity
ux = 0.0
uy = 0.005
order = first
boundary = bottom
[]
[top]
type = LBMConvectiveOutflow
buffer = f
f_old = f
convection_velocity = auto
boundary = top
[]
[left]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = left
[]
[right]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = right
[]
[]
[]
[TensorSolver]
type = LBMStream
buffer = f
f_old = fpc
[]
[Problem]
type = LatticeBoltzmannProblem
substeps = 1
[]
[Postprocessors]
[velocity_min]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MIN
[]
[velocity_max]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MAX
[]
[density_min]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MIN
[]
[density_max]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MAX
[]
[]
[Executioner]
type = Transient
num_steps = 5
[]
[Outputs]
file_base = convective_outflow_2d_top
csv = true
[]
(test/tests/lbm/convective_outflow_3d_bottom.i)
[Domain]
dim = 3
nx = 8
ny = 8
nz = 8
mesh_mode = DUMMY
parallel_mode = REAL_SPACE
periodic_directions = 'X Y Z'
[]
[Stencil]
[d3q19]
type = LBMD3Q19
[]
[]
[TensorBuffers]
[f]
type = LBMTensorBuffer
buffer_type = df
[]
[feq]
type = LBMTensorBuffer
buffer_type = df
[]
[fpc]
type = LBMTensorBuffer
buffer_type = df
[]
[velocity]
type = LBMTensorBuffer
buffer_type = mv
[]
[density]
type = LBMTensorBuffer
buffer_type = ms
[]
[]
[TensorComputes]
[Initialize]
[initial_density]
type = LBMConstantTensor
buffer = density
constants = 1.0
[]
[initial_velocity]
type = LBMConstantTensor
buffer = velocity
constants = '0.0 0.0 0.0'
[]
[initial_feq]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[initial_f]
type = LBMEquilibrium
buffer = f
bulk = density
velocity = velocity
[]
[initial_fpc]
type = LBMEquilibrium
buffer = fpc
bulk = density
velocity = velocity
[]
[]
[Solve]
[equilibrium]
type = LBMEquilibrium
buffer = feq
bulk = density
velocity = velocity
[]
[collision]
type = LBMBGKCollision
buffer = fpc
f = f
feq = feq
tau0 = 1.0
[]
[density]
type = LBMComputeDensity
buffer = density
f = f
[]
[velocity]
type = LBMComputeVelocity
buffer = velocity
f = f
rho = density
[]
[]
[Boundary]
[top]
type = LBMNonEquilibriumExtrapolation
buffer = f
prescribe_type = velocity
ux = 0.0
uy = -0.005
uz = 0.0
order = first
boundary = top
[]
[bottom]
type = LBMConvectiveOutflow
buffer = f
f_old = f
convection_velocity = Uc
boundary = bottom
[]
[left]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = left
[]
[right]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = right
[]
[front]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = front
[]
[back]
type = LBMBounceBack
buffer = f
f_old = fpc
boundary = back
[]
[]
[]
[TensorSolver]
type = LBMStream
buffer = f
f_old = fpc
[]
[Problem]
type = LatticeBoltzmannProblem
scalar_constant_names = 'Uc'
scalar_constant_values = '0.005'
substeps = 1
[]
[Postprocessors]
[velocity_min]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MIN
[]
[velocity_max]
type = TensorExtremeValuePostprocessor
buffer = velocity
value_type = MAX
[]
[density_min]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MIN
[]
[density_max]
type = TensorExtremeValuePostprocessor
buffer = density
value_type = MAX
[]
[]
[Executioner]
type = Transient
num_steps = 5
[]
[Outputs]
file_base = convective_outflow_3d_bottom
csv = true
[]