- lambdaLagrange multiplier variable
C++ Type:std::vector<VariableName>
Description:Lagrange multiplier variable
- variableThe name of the finite volume variable this kernel applies to
C++ Type:NonlinearVariableName
Description:The name of the finite volume variable this kernel applies to
FVScalarLagrangeMultiplier
This object implements the residuals that enforce the constraint
using a Lagrange multiplier approach. E.g. this object enforces the constraint that the average value of match .
The detailed description of the derivation for the corresponding finite element constraint can be found at scalar_constraint_kernel. The finite volume version can be obtained by simply substituting for . Note that .
Input Parameters
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Options:
Description:The list of blocks (ids or names) that this object will be applied
- ghost_layers1The number of layers of elements to ghost.
Default:1
C++ Type:unsigned short
Options:
Description:The number of layers of elements to ghost.
- phi00What we want the average value of the primal variable to be.
Default:0
C++ Type:double
Options:
Description:What we want the average value of the primal variable to be.
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Options:
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_point_neighborsFalseWhether to use point neighbors, which introduces additional ghosting to that used for simple face neighbors.
Default:False
C++ Type:bool
Options:
Description:Whether to use point neighbors, which introduces additional ghosting to that used for simple face neighbors.
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Options:
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Options:
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Options:
Description:Determines whether this object is calculated using an implicit or explicit form
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Options:
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- extra_matrix_tagsThe extra tags for the matrices this Kernel should fill
C++ Type:std::vector<TagName>
Options:
Description:The extra tags for the matrices this Kernel should fill
- extra_vector_tagsThe extra tags for the vectors this Kernel should fill
C++ Type:std::vector<TagName>
Options:
Description:The extra tags for the vectors this Kernel should fill
- matrix_tagssystemThe tag for the matrices this Kernel should fill
Default:system
C++ Type:MultiMooseEnum
Options:nontime, system
Description:The tag for the matrices this Kernel should fill
- vector_tagsnontimeThe tag for the vectors this Kernel should fill
Default:nontime
C++ Type:MultiMooseEnum
Options:nontime, time
Description:The tag for the vectors this Kernel should fill
Tagging Parameters
Input Files
- (modules/navier_stokes/test/tests/finite_volume/ins/channel-flow/2d-rc-no-slip-extrapolated-outlet-pressure.i)
- (modules/navier_stokes/test/tests/finite_volume/ins/lid-driven/lid-driven-with-energy.i)
- (modules/navier_stokes/test/tests/finite_volume/pins/channel-flow/2d-rc.i)
- (test/tests/restart/scalar-var/part2.i)
- (modules/navier_stokes/test/tests/finite_volume/ins/mms/cylindrical/2d-rc.i)
- (modules/navier_stokes/test/tests/finite_volume/ins/lid-driven/transient-lid-driven-with-energy.i)
- (modules/navier_stokes/test/tests/finite_volume/ins/boussinesq/boussinesq.i)
- (test/tests/restart/scalar-var/part1.i)
- (modules/navier_stokes/test/tests/finite_volume/ins/lid-driven/lid-driven.i)
- (modules/navier_stokes/test/tests/finite_volume/pins/channel-flow/2d-rc-friction.i)
- (modules/navier_stokes/test/tests/finite_volume/ins/mms/rc.i)
- (modules/navier_stokes/test/tests/finite_volume/cns/natural_convection/average-boussinesq.i)
- (modules/navier_stokes/test/tests/finite_volume/fviks/convection/convection_cavity.i)
- (modules/navier_stokes/test/tests/finite_volume/fviks/convection/convection_channel.i)
(modules/navier_stokes/test/tests/finite_volume/ins/channel-flow/2d-rc-no-slip-extrapolated-outlet-pressure.i)
mu=1.1
rho=1.1
advected_interp_method='average'
velocity_interp_method='rc'
[GlobalParams]
two_term_boundary_expansion = true
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 10
ymin = -1
ymax = 1
nx = 100
ny = 20
[]
[]
[Problem]
fv_bcs_integrity_check = true
[]
[Variables]
[u]
type = INSFVVelocityVariable
initial_condition = 1
[]
[v]
type = INSFVVelocityVariable
initial_condition = 1
[]
[pressure]
type = INSFVPressureVariable
[]
[lambda]
family = SCALAR
order = FIRST
[]
[]
[FVKernels]
[mass]
type = INSFVMassAdvection
variable = pressure
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
vel = 'velocity'
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[mean_zero_pressure]
type = FVScalarLagrangeMultiplier
variable = pressure
lambda = lambda
[]
[u_advection]
type = INSFVMomentumAdvection
variable = u
advected_quantity = 'rhou'
vel = 'velocity'
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[u_viscosity]
type = FVDiffusion
variable = u
coeff = ${mu}
[]
[u_pressure]
type = INSFVMomentumPressure
variable = u
momentum_component = 'x'
pressure = pressure
[]
[v_advection]
type = INSFVMomentumAdvection
variable = v
advected_quantity = 'rhov'
vel = 'velocity'
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[v_viscosity]
type = FVDiffusion
variable = v
coeff = ${mu}
[]
[v_pressure]
type = INSFVMomentumPressure
variable = v
momentum_component = 'y'
pressure = pressure
[]
[]
[FVBCs]
[inlet-u]
type = INSFVInletVelocityBC
boundary = 'left'
variable = u
function = '1'
[]
[inlet-v]
type = INSFVInletVelocityBC
boundary = 'left'
variable = v
function = '0'
[]
[walls-u]
type = INSFVNoSlipWallBC
boundary = 'top bottom'
variable = u
function = 0
[]
[walls-v]
type = INSFVNoSlipWallBC
boundary = 'top bottom'
variable = v
function = 0
[]
[outlet_u]
type = INSFVMomentumAdvectionOutflowBC
variable = u
advected_quantity = 'rhou'
vel = 'velocity'
advected_interp_method = ${advected_interp_method}
u = u
v = v
boundary = 'right'
[]
[outlet_v]
type = INSFVMomentumAdvectionOutflowBC
variable = v
advected_quantity = 'rhov'
vel = 'velocity'
advected_interp_method = ${advected_interp_method}
u = u
v = v
boundary = 'right'
[]
[outlet_p]
type = INSFVMassAdvectionOutflowBC
boundary = 'right'
variable = pressure
u = u
v = v
rho = ${rho}
[]
[]
[Materials]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
rho = ${rho}
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -ksp_gmres_restart -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm 200 lu NONZERO'
line_search = 'none'
nl_rel_tol = 1e-12
[]
[Outputs]
exodus = true
csv = true
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
(modules/navier_stokes/test/tests/finite_volume/ins/lid-driven/lid-driven-with-energy.i)
mu = 1
rho = 1
k = .01
cp = 1
vel = 'velocity'
velocity_interp_method = 'rc'
advected_interp_method = 'average'
[GlobalParams]
two_term_boundary_expansion = true
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 32
ny = 32
[]
[]
[Variables]
[u]
type = INSFVVelocityVariable
[]
[v]
type = INSFVVelocityVariable
[]
[pressure]
type = INSFVPressureVariable
[]
[T]
type = INSFVEnergyVariable
[]
[lambda]
family = SCALAR
order = FIRST
[]
[]
[AuxVariables]
[U]
order = CONSTANT
family = MONOMIAL
fv = true
[]
[]
[AuxKernels]
[mag]
type = VectorMagnitudeAux
variable = U
x = u
y = v
[]
[]
[FVKernels]
[mass]
type = INSFVMassAdvection
variable = pressure
vel = ${vel}
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
u = u
v = v
pressure = pressure
mu = ${mu}
rho = ${rho}
[]
[mean_zero_pressure]
type = FVScalarLagrangeMultiplier
variable = pressure
lambda = lambda
[]
[u_advection]
type = INSFVMomentumAdvection
variable = u
advected_quantity = 'rhou'
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[u_viscosity]
type = FVDiffusion
variable = u
coeff = ${mu}
[]
[u_pressure]
type = INSFVMomentumPressure
variable = u
momentum_component = 'x'
pressure = pressure
[]
[v_advection]
type = INSFVMomentumAdvection
variable = v
advected_quantity = 'rhov'
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[v_viscosity]
type = FVDiffusion
variable = v
coeff = ${mu}
[]
[v_pressure]
type = INSFVMomentumPressure
variable = v
momentum_component = 'y'
pressure = pressure
[]
[temp-condution]
type = FVDiffusion
coeff = 'k'
variable = T
[]
[temp_advection]
type = INSFVEnergyAdvection
variable = T
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[]
[FVBCs]
[top_x]
type = INSFVNoSlipWallBC
variable = u
boundary = 'top'
function = 'lid_function'
[]
[no_slip_x]
type = INSFVNoSlipWallBC
variable = u
boundary = 'left right bottom'
function = 0
[]
[no_slip_y]
type = INSFVNoSlipWallBC
variable = v
boundary = 'left right top bottom'
function = 0
[]
[T_hot]
type = FVDirichletBC
variable = T
boundary = 'bottom'
value = 1
[]
[T_cold]
type = FVDirichletBC
variable = T
boundary = 'top'
value = 0
[]
[]
[Materials]
[const]
type = ADGenericConstantMaterial
prop_names = 'k cp'
prop_values = '${k} ${cp}'
[]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
temperature = 'T'
rho = ${rho}
[]
[]
[Functions]
[lid_function]
type = ParsedFunction
value = '4*x*(1-x)'
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -ksp_gmres_restart -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm 300 lu NONZERO'
nl_rel_tol = 1e-12
[]
[Outputs]
exodus = true
[]
(modules/navier_stokes/test/tests/finite_volume/pins/channel-flow/2d-rc.i)
mu=1.1
rho=1.1
advected_interp_method='average'
velocity_interp_method='rc'
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 5
ymin = 0
ymax = 1
nx = 20
ny = 10
[]
[]
[GlobalParams]
two_term_boundary_expansion = true
[]
[Variables]
inactive = 'lambda'
[u]
type = PINSFVSuperficialVelocityVariable
initial_condition = 1
[]
[v]
type = PINSFVSuperficialVelocityVariable
initial_condition = 1e-6
[]
[pressure]
type = INSFVPressureVariable
[]
[lambda]
family = SCALAR
order = FIRST
[]
[]
[AuxVariables]
[porosity]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 0.5
[]
[]
[FVKernels]
inactive = 'mean-pressure'
[mass]
type = PINSFVMassAdvection
variable = pressure
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
vel = 'velocity'
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
porosity = porosity
[]
[u_advection]
type = PINSFVMomentumAdvection
variable = u
advected_quantity = 'rhou'
vel = 'velocity'
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
porosity = porosity
[]
[u_viscosity]
type = PINSFVMomentumDiffusion
variable = u
mu = ${mu}
porosity = porosity
[]
[u_pressure]
type = PINSFVMomentumPressure
variable = u
momentum_component = 'x'
pressure = pressure
porosity = porosity
[]
[v_advection]
type = PINSFVMomentumAdvection
variable = v
advected_quantity = 'rhov'
vel = 'velocity'
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
porosity = porosity
[]
[v_viscosity]
type = PINSFVMomentumDiffusion
variable = v
mu = ${mu}
porosity = porosity
[]
[v_pressure]
type = PINSFVMomentumPressure
variable = v
momentum_component = 'y'
pressure = pressure
porosity = porosity
[]
[mean-pressure]
type = FVScalarLagrangeMultiplier
variable = pressure
lambda = lambda
phi0 = 0.01
[]
[]
[FVBCs]
# Select desired boundary conditions
active = 'inlet-u inlet-v outlet-p free-slip-u free-slip-v'
# Possible inlet boundary conditions
[inlet-u]
type = INSFVInletVelocityBC
boundary = 'left'
variable = u
function = '1'
[]
[inlet-v]
type = INSFVInletVelocityBC
boundary = 'left'
variable = v
function = 0
[]
[inlet-p]
type = INSFVOutletPressureBC
boundary = 'left'
variable = pressure
function = 1
[]
# Possible wall boundary conditions
[free-slip-u]
type = INSFVNaturalFreeSlipBC
boundary = 'top bottom'
variable = u
[]
[free-slip-v]
type = INSFVNaturalFreeSlipBC
boundary = 'top bottom'
variable = v
[]
[no-slip-u]
type = INSFVNoSlipWallBC
boundary = 'top bottom'
variable = u
function = 0
[]
[no-slip-v]
type = INSFVNoSlipWallBC
boundary = 'top bottom'
variable = v
function = 0
[]
[symmetry-u]
type = PINSFVSymmetryVelocityBC
boundary = 'bottom'
variable = u
u = u
v = v
mu = ${mu}
momentum_component = 'x'
porosity = porosity
[]
[symmetry-v]
type = PINSFVSymmetryVelocityBC
boundary = 'bottom'
variable = v
u = u
v = v
mu = ${mu}
momentum_component = 'y'
porosity = porosity
[]
[symmetry-p]
type = INSFVSymmetryPressureBC
boundary = 'bottom'
variable = pressure
[]
# Possible outlet boundary conditions
[outlet-p]
type = INSFVOutletPressureBC
boundary = 'right'
variable = pressure
function = 0
[]
[outlet-p-novalue]
type = INSFVMassAdvectionOutflowBC
boundary = 'right'
variable = pressure
u = u
v = v
rho = ${rho}
[]
[outlet-u]
type = PINSFVMomentumAdvectionOutflowBC
boundary = 'right'
variable = u
vel = velocity
u = u
v = v
porosity = porosity
[]
[outlet-v]
type = PINSFVMomentumAdvectionOutflowBC
boundary = 'right'
variable = v
vel = velocity
u = u
v = v
porosity = porosity
[]
[]
[Materials]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
rho = ${rho}
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -ksp_gmres_restart -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm 200 lu NONZERO'
line_search = 'none'
nl_rel_tol = 1e-11
nl_abs_tol = 1e-14
[]
# Some basic Postprocessors to visually examine the solution
[Postprocessors]
[inlet-p]
type = SideIntegralVariablePostprocessor
variable = pressure
boundary = 'left'
[]
[outlet-u]
type = SideIntegralVariablePostprocessor
variable = u
boundary = 'right'
[]
[]
[Outputs]
exodus = true
[]
(test/tests/restart/scalar-var/part2.i)
[Mesh]
[fmg]
type = FileMeshGenerator
file = part1_out.e
use_for_exodus_restart = true
[]
[]
[Variables]
[v]
family = MONOMIAL
order = CONSTANT
fv = true
initial_from_file_var = v
[]
[lambda]
family = SCALAR
order = FIRST
initial_from_file_var = lambda
[]
[]
[FVKernels]
[advection]
type = FVElementalAdvection
variable = v
velocity = '1 0 0'
[]
[lambda]
type = FVScalarLagrangeMultiplier
variable = v
lambda = lambda
phi0 = 1
[]
[]
[Problem]
kernel_coverage_check = off
[]
[Executioner]
type = Steady
petsc_options_iname = '-snes_max_it'
petsc_options_value = '0'
nl_abs_tol = 1e-10
[]
[Outputs]
[out]
type = Exodus
execute_on = 'final'
[]
[]
(modules/navier_stokes/test/tests/finite_volume/ins/mms/cylindrical/2d-rc.i)
mu=1.1
rho=1.1
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 1
xmax = 3
ymin = -1
ymax = 1
nx = 2
ny = 2
[]
[]
[Problem]
coord_type = 'RZ'
[]
[Variables]
[u]
type = INSFVVelocityVariable
initial_condition = 1
[]
[v]
type = INSFVVelocityVariable
initial_condition = 1
[]
[pressure]
type = INSFVPressureVariable
[]
[lambda]
family = SCALAR
order = FIRST
[]
[]
[FVKernels]
[mass]
type = INSFVMassAdvection
variable = pressure
advected_interp_method = 'average'
velocity_interp_method = 'rc'
vel = 'velocity'
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[mass_forcing]
type = FVBodyForce
variable = pressure
function = forcing_p
[]
[mean_zero_pressure]
type = FVScalarLagrangeMultiplier
variable = pressure
lambda = lambda
[]
[u_advection]
type = INSFVMomentumAdvection
variable = u
advected_quantity = 'rhou'
vel = 'velocity'
advected_interp_method = 'average'
velocity_interp_method = 'rc'
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[u_viscosity]
type = FVDiffusion
variable = u
coeff = ${mu}
[]
[u_pressure]
type = INSFVMomentumPressure
variable = u
momentum_component = 'x'
pressure = pressure
[]
[u_forcing]
type = FVBodyForce
variable = u
function = forcing_u
[]
[v_advection]
type = INSFVMomentumAdvection
variable = v
advected_quantity = 'rhov'
vel = 'velocity'
advected_interp_method = 'average'
velocity_interp_method = 'rc'
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[v_viscosity]
type = FVDiffusion
variable = v
coeff = ${mu}
[]
[v_pressure]
type = INSFVMomentumPressure
variable = v
momentum_component = 'y'
pressure = pressure
[]
[v_forcing]
type = FVBodyForce
variable = v
function = forcing_v
[]
[]
[FVBCs]
[no-slip-wall-u]
type = INSFVNoSlipWallBC
boundary = 'left right top bottom'
variable = u
function = 'exact_u'
[]
[no-slip-wall-v]
type = INSFVNoSlipWallBC
boundary = 'left right top bottom'
variable = v
function = 'exact_v'
[]
[]
[Materials]
[ins_fv]
type = INSFVMaterial
u = u
v = v
pressure = 'pressure'
rho = ${rho}
[]
[]
[Functions]
[exact_u]
type = ParsedFunction
value = 'sin(y)*sin(x*pi)'
[]
[exact_rhou]
type = ParsedFunction
value = 'rho*sin(y)*sin(x*pi)'
vars = 'rho'
vals = '${rho}'
[]
[forcing_u]
type = ParsedFunction
value = 'mu*sin(y)*sin(x*pi) - (-x*pi^2*mu*sin(y)*sin(x*pi) + pi*mu*sin(y)*cos(x*pi))/x + (2*x*pi*rho*sin(y)^2*sin(x*pi)*cos(x*pi) + rho*sin(y)^2*sin(x*pi)^2)/x + (-1/2*x*pi*rho*sin(x)*sin(y)*sin(x*pi)*sin((1/2)*y*pi) + x*rho*sin(x)*sin(x*pi)*cos(y)*cos((1/2)*y*pi))/x'
vars = 'mu rho'
vals = '${mu} ${rho}'
[]
[exact_v]
type = ParsedFunction
value = 'sin(x)*cos((1/2)*y*pi)'
[]
[exact_rhov]
type = ParsedFunction
value = 'rho*sin(x)*cos((1/2)*y*pi)'
vars = 'rho'
vals = '${rho}'
[]
[forcing_v]
type = ParsedFunction
value = '(1/4)*pi^2*mu*sin(x)*cos((1/2)*y*pi) - pi*rho*sin(x)^2*sin((1/2)*y*pi)*cos((1/2)*y*pi) + cos(y) - (-x*mu*sin(x)*cos((1/2)*y*pi) + mu*cos(x)*cos((1/2)*y*pi))/x + (x*pi*rho*sin(x)*sin(y)*cos(x*pi)*cos((1/2)*y*pi) + x*rho*sin(y)*sin(x*pi)*cos(x)*cos((1/2)*y*pi) + rho*sin(x)*sin(y)*sin(x*pi)*cos((1/2)*y*pi))/x'
vars = 'mu rho'
vals = '${mu} ${rho}'
[]
[exact_p]
type = ParsedFunction
value = 'sin(y)'
[]
[forcing_p]
type = ParsedFunction
value = '-1/2*pi*rho*sin(x)*sin((1/2)*y*pi) + (x*pi*rho*sin(y)*cos(x*pi) + rho*sin(y)*sin(x*pi))/x'
vars = 'rho'
vals = '${rho}'
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -ksp_gmres_restart -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm 30 lu NONZERO'
nl_rel_tol = 1e-12
[]
[Outputs]
exodus = true
csv = true
[]
[Postprocessors]
[h]
type = AverageElementSize
outputs = 'console csv'
execute_on = 'timestep_end'
[]
[./L2u]
type = ElementL2Error
variable = u
function = exact_u
outputs = 'console csv'
execute_on = 'timestep_end'
[../]
[./L2v]
type = ElementL2Error
variable = v
function = exact_v
outputs = 'console csv'
execute_on = 'timestep_end'
[../]
[./L2p]
variable = pressure
function = exact_p
type = ElementL2Error
outputs = 'console csv'
execute_on = 'timestep_end'
[../]
[]
(modules/navier_stokes/test/tests/finite_volume/ins/lid-driven/transient-lid-driven-with-energy.i)
mu = 1
rho = 1
k = .01
cp = 1
vel = 'velocity'
velocity_interp_method = 'rc'
advected_interp_method = 'average'
[GlobalParams]
two_term_boundary_expansion = true
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 32
ny = 32
[]
[pin]
type = ExtraNodesetGenerator
input = gen
new_boundary = 'pin'
nodes = '0'
[]
[]
[Variables]
[u]
type = INSFVVelocityVariable
[]
[v]
type = INSFVVelocityVariable
[]
[pressure]
type = INSFVPressureVariable
[]
[T]
type = INSFVEnergyVariable
[]
[lambda]
family = SCALAR
order = FIRST
[]
[]
[ICs]
[T]
type = ConstantIC
variable = T
value = 1
[]
[]
[AuxVariables]
[U]
order = CONSTANT
family = MONOMIAL
fv = true
[]
[]
[AuxKernels]
[mag]
type = VectorMagnitudeAux
variable = U
x = u
y = v
[]
[]
[FVKernels]
[mass]
type = INSFVMassAdvection
variable = pressure
vel = ${vel}
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
u = u
v = v
pressure = pressure
mu = ${mu}
rho = ${rho}
[]
[mean_zero_pressure]
type = FVScalarLagrangeMultiplier
variable = pressure
lambda = lambda
[]
[u_time]
type = INSFVMomentumTimeDerivative
variable = 'u'
rho = ${rho}
[]
[u_advection]
type = INSFVMomentumAdvection
variable = u
advected_quantity = 'rhou'
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[u_viscosity]
type = FVDiffusion
variable = u
coeff = ${mu}
[]
[u_pressure]
type = INSFVMomentumPressure
variable = u
momentum_component = 'x'
pressure = pressure
[]
[v_time]
type = INSFVMomentumTimeDerivative
variable = v
rho = ${rho}
[]
[v_advection]
type = INSFVMomentumAdvection
variable = v
advected_quantity = 'rhov'
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[v_viscosity]
type = FVDiffusion
variable = v
coeff = ${mu}
[]
[v_pressure]
type = INSFVMomentumPressure
variable = v
momentum_component = 'y'
pressure = pressure
[]
[temp_time]
type = INSFVEnergyTimeDerivative
variable = T
rho = ${rho}
[]
[temp_conduction]
type = FVDiffusion
coeff = 'k'
variable = T
[]
[temp_advection]
type = INSFVEnergyAdvection
variable = T
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[]
[FVBCs]
[top_x]
type = INSFVNoSlipWallBC
variable = u
boundary = 'top'
function = 'lid_function'
[]
[no_slip_x]
type = INSFVNoSlipWallBC
variable = u
boundary = 'left right bottom'
function = 0
[]
[no_slip_y]
type = INSFVNoSlipWallBC
variable = v
boundary = 'left right top bottom'
function = 0
[]
[T_hot]
type = FVDirichletBC
variable = T
boundary = 'bottom'
value = 1
[]
[T_cold]
type = FVDirichletBC
variable = T
boundary = 'top'
value = 0
[]
[]
[Materials]
[const]
type = ADGenericConstantMaterial
prop_names = 'k cp'
prop_values = '${k} ${cp}'
[]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
temperature = 'T'
rho = ${rho}
[]
[]
[Functions]
[lid_function]
type = ParsedFunction
value = '4*x*(1-x)'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
# Run for 100+ timesteps to reach steady state.
num_steps = 5
dt = .5
dtmin = .5
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -ksp_gmres_restart'
petsc_options_value = 'asm lu NONZERO 200'
line_search = 'none'
nl_rel_tol = 1e-12
nl_max_its = 6
l_max_its = 200
[]
[Outputs]
exodus = true
[]
(modules/navier_stokes/test/tests/finite_volume/ins/boussinesq/boussinesq.i)
mu = 1
rho = 1
k = 1
cp = 1
alpha = 1
vel = 'velocity'
velocity_interp_method = 'rc'
advected_interp_method = 'upwind'
rayleigh=1e3
hot_temp=${rayleigh}
temp_ref=${fparse hot_temp / 2.}
[GlobalParams]
two_term_boundary_expansion = true
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 32
ny = 32
[]
[]
[Variables]
[u]
type = INSFVVelocityVariable
[]
[v]
type = INSFVVelocityVariable
[]
[pressure]
type = INSFVPressureVariable
[]
[T]
type = INSFVEnergyVariable
scaling = 1e-4
[]
[lambda]
family = SCALAR
order = FIRST
[]
[]
[AuxVariables]
[U]
order = CONSTANT
family = MONOMIAL
fv = true
[]
[vel_x]
order = FIRST
family = MONOMIAL
[]
[vel_y]
order = FIRST
family = MONOMIAL
[]
[viz_T]
order = FIRST
family = MONOMIAL
[]
[]
[AuxKernels]
[mag]
type = VectorMagnitudeAux
variable = U
x = u
y = v
execute_on = 'initial timestep_end'
[]
[vel_x]
type = ParsedAux
variable = vel_x
function = 'u'
execute_on = 'initial timestep_end'
args = 'u'
[]
[vel_y]
type = ParsedAux
variable = vel_y
function = 'v'
execute_on = 'initial timestep_end'
args = 'v'
[]
[viz_T]
type = ParsedAux
variable = viz_T
function = 'T'
execute_on = 'initial timestep_end'
args = 'T'
[]
[]
[FVKernels]
[mass]
type = INSFVMassAdvection
variable = pressure
vel = ${vel}
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
u = u
v = v
pressure = pressure
mu = ${mu}
rho = ${rho}
[]
[mean_zero_pressure]
type = FVScalarLagrangeMultiplier
variable = pressure
lambda = lambda
[]
[u_advection]
type = INSFVMomentumAdvection
variable = u
advected_quantity = 'rhou'
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[u_viscosity]
type = FVDiffusion
variable = u
coeff = ${mu}
[]
[u_pressure]
type = INSFVMomentumPressure
variable = u
momentum_component = 'x'
pressure = pressure
[]
[u_buoyancy]
type = INSFVMomentumBoussinesq
variable = u
temperature = T
gravity = '0 -1 0'
rho = ${rho}
ref_temperature = ${temp_ref}
momentum_component = 'x'
[]
[u_gravity]
type = INSFVMomentumGravity
variable = u
gravity = '0 -1 0'
rho = ${rho}
momentum_component = 'x'
[]
[v_advection]
type = INSFVMomentumAdvection
variable = v
advected_quantity = 'rhov'
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[v_viscosity]
type = FVDiffusion
variable = v
coeff = ${mu}
[]
[v_pressure]
type = INSFVMomentumPressure
variable = v
momentum_component = 'y'
pressure = pressure
[]
[v_buoyancy]
type = INSFVMomentumBoussinesq
variable = v
temperature = T
gravity = '0 -1 0'
rho = ${rho}
ref_temperature = ${temp_ref}
momentum_component = 'y'
[]
[v_gravity]
type = INSFVMomentumGravity
variable = v
gravity = '0 -1 0'
rho = ${rho}
momentum_component = 'y'
[]
[temp_conduction]
type = FVDiffusion
coeff = 'k'
variable = T
[]
[temp_advection]
type = INSFVEnergyAdvection
variable = T
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[]
[FVBCs]
[top_x]
type = INSFVNoSlipWallBC
variable = u
boundary = 'top'
function = 'lid_function'
[]
[no_slip_x]
type = INSFVNoSlipWallBC
variable = u
boundary = 'left right bottom'
function = 0
[]
[no_slip_y]
type = INSFVNoSlipWallBC
variable = v
boundary = 'left right top bottom'
function = 0
[]
[T_hot]
type = FVDirichletBC
variable = T
boundary = left
value = ${hot_temp}
[]
[T_cold]
type = FVDirichletBC
variable = T
boundary = right
value = 0
[]
[]
[Materials]
[const]
type = ADGenericConstantMaterial
prop_names = 'k cp alpha'
prop_values = '${k} ${cp} ${alpha}'
[]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
temperature = 'T'
rho = ${rho}
[]
[]
[Functions]
[lid_function]
type = ParsedFunction
value = '4*x*(1-x)'
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -ksp_gmres_restart -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm 300 lu NONZERO'
nl_rel_tol = 1e-12
[]
[Outputs]
exodus = true
[]
(test/tests/restart/scalar-var/part1.i)
[Mesh]
type = GeneratedMesh
dim = 1
nx = 21
[]
[Variables]
[v]
family = MONOMIAL
order = CONSTANT
fv = true
[]
[lambda]
family = SCALAR
order = FIRST
[]
[]
[FVKernels]
[advection]
type = FVElementalAdvection
variable = v
velocity = '1 0 0'
[]
[lambda]
type = FVScalarLagrangeMultiplier
variable = v
lambda = lambda
phi0 = 1
[]
[]
[Problem]
kernel_coverage_check = off
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_factor_shift_type'
petsc_options_value = 'lu NONZERO'
nl_rel_tol = 1e-12
solve_type = NEWTON
[]
[Outputs]
[out]
type = Exodus
execute_on = 'final'
[]
[]
(modules/navier_stokes/test/tests/finite_volume/ins/lid-driven/lid-driven.i)
mu=.01
rho=1
[GlobalParams]
vel = 'velocity'
velocity_interp_method = 'rc'
advected_interp_method = 'average'
two_term_boundary_expansion = true
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = .1
ymin = 0
ymax = .1
nx = 20
ny = 20
[]
[]
[Variables]
[u]
type = INSFVVelocityVariable
[]
[v]
type = INSFVVelocityVariable
[]
[pressure]
type = INSFVPressureVariable
[]
[lambda]
family = SCALAR
order = FIRST
[]
[]
[AuxVariables]
[U]
order = CONSTANT
family = MONOMIAL
fv = true
[]
[]
[AuxKernels]
[mag]
type = VectorMagnitudeAux
variable = U
x = u
y = v
[]
[]
[FVKernels]
[mass]
type = INSFVMassAdvection
variable = pressure
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[mean_zero_pressure]
type = FVScalarLagrangeMultiplier
variable = pressure
lambda = lambda
[]
[u_advection]
type = INSFVMomentumAdvection
variable = u
advected_quantity = 'rhou'
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[u_viscosity]
type = FVDiffusion
variable = u
coeff = ${mu}
[]
[u_pressure]
type = INSFVMomentumPressure
variable = u
momentum_component = 'x'
pressure = pressure
[]
[v_advection]
type = INSFVMomentumAdvection
variable = v
advected_quantity = 'rhov'
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[v_viscosity]
type = FVDiffusion
variable = v
coeff = ${mu}
[]
[v_pressure]
type = INSFVMomentumPressure
variable = v
momentum_component = 'y'
pressure = pressure
[]
[]
[FVBCs]
[top_x]
type = INSFVNoSlipWallBC
variable = u
boundary = 'top'
function = 1
[]
[no_slip_x]
type = INSFVNoSlipWallBC
variable = u
boundary = 'left right bottom'
function = 0
[]
[no_slip_y]
type = INSFVNoSlipWallBC
variable = v
boundary = 'left right top bottom'
function = 0
[]
[]
[Materials]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
rho = ${rho}
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -ksp_gmres_restart -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm 100 lu NONZERO'
nl_rel_tol = 1e-12
[]
[Outputs]
exodus = true
[]
(modules/navier_stokes/test/tests/finite_volume/pins/channel-flow/2d-rc-friction.i)
mu=1.1
rho=1
advected_interp_method='average'
velocity_interp_method='rc'
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 5
ymin = 0
ymax = 1
nx = 40
ny = 20
[]
[]
[GlobalParams]
two_term_boundary_expansion = true
[]
[Variables]
inactive = 'lambda'
[u]
type = PINSFVSuperficialVelocityVariable
initial_condition = 1
[]
[v]
type = PINSFVSuperficialVelocityVariable
initial_condition = 1e-6
[]
[pressure]
type = INSFVPressureVariable
[]
[lambda]
family = SCALAR
order = FIRST
[]
[]
[AuxVariables]
[porosity]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 0.5
[]
[]
[FVKernels]
inactive = 'mean-pressure'
[mass]
type = PINSFVMassAdvection
variable = pressure
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
vel = 'velocity'
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
porosity = porosity
[]
[u_advection]
type = PINSFVMomentumAdvection
variable = u
advected_quantity = 'rhou'
vel = 'velocity'
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
porosity = porosity
[]
[u_viscosity]
type = PINSFVMomentumDiffusion
variable = u
mu = ${mu}
porosity = porosity
[]
[u_pressure]
type = PINSFVMomentumPressure
variable = u
momentum_component = 'x'
pressure = pressure
porosity = porosity
[]
[u_friction]
type = PNSFVMomentumFriction
variable = u
momentum_component = 'x'
porosity = porosity
Darcy_name = 'Darcy_coefficient'
Forchheimer_name = 'Forchheimer_coefficient'
rho = ${rho}
[]
[v_advection]
type = PINSFVMomentumAdvection
variable = v
advected_quantity = 'rhov'
vel = 'velocity'
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
porosity = porosity
[]
[v_viscosity]
type = PINSFVMomentumDiffusion
variable = v
mu = ${mu}
porosity = porosity
[]
[v_pressure]
type = PINSFVMomentumPressure
variable = v
momentum_component = 'y'
pressure = pressure
porosity = porosity
[]
[v_friction]
type = PNSFVMomentumFriction
variable = v
momentum_component = 'y'
porosity = porosity
Darcy_name = 'Darcy_coefficient'
Forchheimer_name = 'Forchheimer_coefficient'
rho = ${rho}
[]
[mean-pressure]
type = FVScalarLagrangeMultiplier
variable = pressure
lambda = lambda
phi0 = 0.01
[]
[]
[FVBCs]
[inlet-u]
type = INSFVInletVelocityBC
boundary = 'left'
variable = u
function = '1'
[]
[inlet-v]
type = INSFVInletVelocityBC
boundary = 'left'
variable = v
function = 0
[]
[no-slip-u]
type = INSFVNoSlipWallBC
boundary = 'top'
variable = u
function = 0
[]
[no-slip-v]
type = INSFVNoSlipWallBC
boundary = 'top'
variable = v
function = 0
[]
[symmetry-u]
type = PINSFVSymmetryVelocityBC
boundary = 'bottom'
variable = u
u = u
v = v
mu = ${mu}
momentum_component = 'x'
porosity = porosity
[]
[symmetry-v]
type = PINSFVSymmetryVelocityBC
boundary = 'bottom'
variable = v
u = u
v = v
mu = ${mu}
momentum_component = 'y'
porosity = porosity
[]
[symmetry-p]
type = INSFVSymmetryPressureBC
boundary = 'bottom'
variable = pressure
[]
[outlet-p]
type = INSFVOutletPressureBC
boundary = 'right'
variable = pressure
function = 0
[]
[]
[Materials]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
rho = ${rho}
[]
[darcy]
type = ADGenericConstantVectorMaterial
prop_names = 'Darcy_coefficient Forchheimer_coefficient'
prop_values = '0.1 0.1 0.1 0.1 0.1 0.1'
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -ksp_gmres_restart -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm 200 lu NONZERO'
line_search = 'none'
nl_rel_tol = 1e-11
nl_abs_tol = 1e-14
[]
# Some basic Postprocessors to visually examine the solution
[Postprocessors]
[inlet-p]
type = SideAverageValue
variable = pressure
boundary = 'left'
[]
[outlet-u]
type = SideIntegralVariablePostprocessor
variable = u
boundary = 'right'
[]
[]
[Outputs]
exodus = true
[]
(modules/navier_stokes/test/tests/finite_volume/ins/mms/rc.i)
mu=1.1
rho=1.1
velocity_interp_method='rc'
[GlobalParams]
force_boundary_execution = false
two_term_boundary_expansion = false
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = -1
xmax = 1
ymin = -1
ymax = 1
nx = 2
ny = 2
[]
[]
[Problem]
fv_bcs_integrity_check = false
error_on_jacobian_nonzero_reallocation = true
[]
[Variables]
[u]
type = INSFVVelocityVariable
initial_condition = 1
[]
[v]
type = INSFVVelocityVariable
initial_condition = 1
[]
[pressure]
type = INSFVPressureVariable
[]
[lambda]
family = SCALAR
order = FIRST
[]
[]
[FVKernels]
[mass]
type = INSFVMassAdvection
variable = pressure
advected_interp_method = 'average'
velocity_interp_method = ${velocity_interp_method}
vel = 'velocity'
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[mass_forcing]
type = FVBodyForce
variable = pressure
function = forcing_p
[]
[mean_zero_pressure]
type = FVScalarLagrangeMultiplier
variable = pressure
lambda = lambda
[]
[u_advection]
type = INSFVMomentumAdvection
variable = u
advected_quantity = 'rhou'
vel = 'velocity'
advected_interp_method = 'average'
velocity_interp_method = ${velocity_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[u_viscosity]
type = FVDiffusion
variable = u
coeff = ${mu}
[]
[u_pressure]
type = INSFVMomentumPressure
variable = u
momentum_component = 'x'
pressure = pressure
[]
[u_forcing]
type = FVBodyForce
variable = u
function = forcing_u
[]
[v_advection]
type = INSFVMomentumAdvection
variable = v
advected_quantity = 'rhov'
vel = 'velocity'
advected_interp_method = 'average'
velocity_interp_method = ${velocity_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[v_viscosity]
type = FVDiffusion
variable = v
coeff = ${mu}
[]
[v_pressure]
type = INSFVMomentumPressure
variable = v
momentum_component = 'y'
pressure = pressure
[]
[v_forcing]
type = FVBodyForce
variable = v
function = forcing_v
[]
[]
[FVBCs]
[no-slip-wall-u]
type = INSFVNoSlipWallBC
boundary = 'left right top bottom'
variable = u
function = 'exact_u'
[]
[no-slip-wall-v]
type = INSFVNoSlipWallBC
boundary = 'left right top bottom'
variable = v
function = 'exact_v'
[]
[]
[Materials]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
rho = ${rho}
[]
[]
[Functions]
[exact_u]
type = ParsedFunction
value = 'sin(y)*cos((1/2)*x*pi)'
[]
[exact_rhou]
type = ParsedFunction
value = 'rho*sin(y)*cos((1/2)*x*pi)'
vars = 'rho'
vals = '${rho}'
[]
[forcing_u]
type = ParsedFunction
value = 'mu*sin(y)*cos((1/2)*x*pi) + (1/4)*pi^2*mu*sin(y)*cos((1/2)*x*pi) - 1/2*pi*rho*sin(x)*sin(y)*sin((1/2)*y*pi)*cos((1/2)*x*pi) + rho*sin(x)*cos(y)*cos((1/2)*x*pi)*cos((1/2)*y*pi) - pi*rho*sin(y)^2*sin((1/2)*x*pi)*cos((1/2)*x*pi) + sin(y)*cos(x)'
vars = 'mu rho'
vals = '${mu} ${rho}'
[]
[exact_v]
type = ParsedFunction
value = 'sin(x)*cos((1/2)*y*pi)'
[]
[exact_rhov]
type = ParsedFunction
value = 'rho*sin(x)*cos((1/2)*y*pi)'
vars = 'rho'
vals = '${rho}'
[]
[forcing_v]
type = ParsedFunction
value = 'mu*sin(x)*cos((1/2)*y*pi) + (1/4)*pi^2*mu*sin(x)*cos((1/2)*y*pi) - pi*rho*sin(x)^2*sin((1/2)*y*pi)*cos((1/2)*y*pi) - 1/2*pi*rho*sin(x)*sin(y)*sin((1/2)*x*pi)*cos((1/2)*y*pi) + rho*sin(y)*cos(x)*cos((1/2)*x*pi)*cos((1/2)*y*pi) + sin(x)*cos(y)'
vars = 'mu rho'
vals = '${mu} ${rho}'
[]
[exact_p]
type = ParsedFunction
value = 'sin(x)*sin(y)'
[]
[forcing_p]
type = ParsedFunction
value = '-1/2*pi*rho*sin(x)*sin((1/2)*y*pi) - 1/2*pi*rho*sin(y)*sin((1/2)*x*pi)'
vars = 'rho'
vals = '${rho}'
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -ksp_gmres_restart -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm 30 lu NONZERO'
nl_rel_tol = 1e-12
[]
[Outputs]
exodus = true
csv = true
[]
[Postprocessors]
[h]
type = AverageElementSize
outputs = 'console csv'
execute_on = 'timestep_end'
[]
[./L2u]
type = ElementL2Error
variable = u
function = exact_u
outputs = 'console csv'
execute_on = 'timestep_end'
[../]
[./L2v]
variable = v
function = exact_v
type = ElementL2Error
outputs = 'console csv'
execute_on = 'timestep_end'
[../]
[./L2p]
variable = pressure
function = exact_p
type = ElementL2Error
outputs = 'console csv'
execute_on = 'timestep_end'
[../]
[]
(modules/navier_stokes/test/tests/finite_volume/cns/natural_convection/average-boussinesq.i)
hot_temp=400
cold_temp=273.15
p_initial=1.01e5
T_initial=${cold_temp}
k=25.68e-3
mu=18.23e-6
[GlobalParams]
fp = fp
gravity = '0.00 -9.81 0.00'
two_term_boundary_expansion = true
limiter = central_difference
[]
[Problem]
fv_bcs_integrity_check = false
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1e-2
ymin = 0
ymax = 1e-2
nx = 32
ny = 32
[]
[]
[Variables]
[pressure]
type = MooseVariableFVReal
initial_condition = ${p_initial}
scaling = 1e1
[]
[sup_rho_u]
type = MooseVariableFVReal
initial_condition = 1e-15
scaling = 1e3
[]
[sup_rho_v]
type = MooseVariableFVReal
initial_condition = 1e-15
scaling = 1e3
[]
[T_fluid]
type = MooseVariableFVReal
initial_condition = ${T_initial}
scaling = 1e-1
[]
[lambda]
family = SCALAR
order = FIRST
[]
[]
[AuxVariables]
[vel_x]
type = MooseVariableFVReal
[]
[vel_y]
type = MooseVariableFVReal
[]
[]
[AuxKernels]
[vel_x]
type = ADMaterialRealAux
variable = vel_x
property = vel_x
execute_on = 'timestep_end'
[]
[vel_y]
type = ADMaterialRealAux
variable = vel_y
property = vel_y
execute_on = 'timestep_end'
[]
[]
[FVKernels]
[mass_advection]
type = PCNSFVKT
variable = pressure
eqn = "mass"
[]
[mean_zero_pressure]
type = FVScalarLagrangeMultiplier
variable = pressure
lambda = lambda
phi0 = ${p_initial}
[]
[momentum_advection]
type = PCNSFVKT
variable = sup_rho_u
eqn = "momentum"
momentum_component = 'x'
[]
[eps_grad]
type = PNSFVPGradEpsilon
variable = sup_rho_u
momentum_component = 'x'
epsilon_function = '1'
[]
[x_viscous]
type = FVOrthogonalDiffusion
variable = sup_rho_u
coeff = ${mu}
diffusing_quantity = 'vel_x'
[]
[x_momentum_gravity_source]
type = PNSFVMomentumGravity
variable = sup_rho_u
momentum_component = 'x'
[]
[momentum_advection_y]
type = PCNSFVKT
variable = sup_rho_v
eqn = "momentum"
momentum_component = 'y'
[]
[eps_grad_y]
type = PNSFVPGradEpsilon
variable = sup_rho_v
momentum_component = 'y'
epsilon_function = '1'
[]
[y_viscous]
type = FVOrthogonalDiffusion
variable = sup_rho_v
coeff = ${mu}
diffusing_quantity = 'vel_y'
[]
[y_momentum_gravity_source]
type = PNSFVMomentumGravity
variable = sup_rho_v
momentum_component = 'y'
[]
[energy_advection]
type = PCNSFVKT
variable = T_fluid
eqn = "energy"
[]
[fluid_energy_conduction]
type = FVOrthogonalDiffusion
variable = T_fluid
coeff = ${k}
diffusing_quantity = 'T_fluid'
[]
[]
[FVBCs]
[pressure_x_walls]
type = PCNSFVImplicitMomentumPressureBC
momentum_component = 'x'
boundary = 'left right top bottom'
variable = sup_rho_u
[]
[pressure_y_walls]
type = PCNSFVImplicitMomentumPressureBC
momentum_component = 'y'
boundary = 'left right top bottom'
variable = sup_rho_v
[]
[shear_x_walls]
type = FVOrthogonalBoundaryDiffusion
function = 0
variable = sup_rho_u
diffusing_quantity = 'vel_x'
coeff = ${mu}
boundary = 'left right top bottom'
[]
[shear_y_walls]
type = FVOrthogonalBoundaryDiffusion
function = 0
variable = sup_rho_v
diffusing_quantity = 'vel_y'
coeff = ${mu}
boundary = 'left right top bottom'
[]
[hot_wall]
type = FVOrthogonalBoundaryDiffusion
function = ${hot_temp}
variable = T_fluid
diffusing_quantity = 'T_fluid'
coeff = ${k}
boundary = 'left'
[]
[cold_wall]
type = FVOrthogonalBoundaryDiffusion
function = ${cold_temp}
variable = T_fluid
diffusing_quantity = 'T_fluid'
coeff = ${k}
boundary = 'right'
[]
# Help gradient reconstruction
[T_fluid_hot]
type = FVDirichletBC
variable = T_fluid
value = ${hot_temp}
boundary = 'left'
[]
[T_fluid_cold]
type = FVDirichletBC
variable = T_fluid
value = ${cold_temp}
boundary = 'right'
[]
[sup_mom_x_walls]
type = FVDirichletBC
variable = sup_rho_u
value = 0
boundary = 'left right top bottom'
[]
[sup_mom_y_walls]
type = FVDirichletBC
variable = sup_rho_v
value = 0
boundary = 'left right top bottom'
[]
[]
[Modules]
[FluidProperties]
[fp]
type = IdealGasFluidProperties
[]
[]
[]
[Materials]
[var_mat]
type = PorousMixedVarMaterial
pressure = pressure
T_fluid = T_fluid
superficial_rhou = sup_rho_u
superficial_rhov = sup_rho_v
fp = fp
porosity = porosity
[]
[porosity]
type = GenericConstantMaterial
prop_names = 'porosity'
prop_values = '1'
[]
[]
[Executioner]
solve_type = NEWTON
line_search = 'bt'
type = Steady
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu strumpack'
[]
[Outputs]
exodus = true
checkpoint = true
[]
[Debug]
show_var_residual_norms = true
[]
(modules/navier_stokes/test/tests/finite_volume/fviks/convection/convection_cavity.i)
mu = 1
rho = 1
k = .01
cp = 1
vel = 'velocity'
velocity_interp_method = 'rc'
advected_interp_method = 'average'
[Mesh]
[cmg]
type = CartesianMeshGenerator
dim = 2
dx = '1 0.5'
dy = '1'
ix = '8 5'
iy = '8'
subdomain_id = '0 1'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
input = 'cmg'
primary_block = 0
paired_block = 1
new_boundary = 'interface'
[]
[secondary_interface]
type = SideSetsBetweenSubdomainsGenerator
input = 'interface'
primary_block = 1
paired_block = 0
new_boundary = 'secondary_interface'
[]
[]
[Variables]
[u]
type = INSFVVelocityVariable
block = 0
[]
[v]
type = INSFVVelocityVariable
block = 0
[]
[pressure]
type = INSFVPressureVariable
block = 0
[]
[T]
type = INSFVEnergyVariable
block = 0
[]
[Ts]
type = INSFVEnergyVariable
block = 1
[]
[lambda]
family = SCALAR
order = FIRST
[]
[]
[ICs]
[T]
type = ConstantIC
variable = T
value = 1
[]
[]
[FVKernels]
[mass]
type = INSFVMassAdvection
variable = pressure
vel = ${vel}
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
u = u
v = v
pressure = pressure
mu = ${mu}
rho = ${rho}
block = 0
[]
[mean_zero_pressure]
type = FVScalarLagrangeMultiplier
variable = pressure
lambda = lambda
block = 0
[]
[u_advection]
type = INSFVMomentumAdvection
variable = u
advected_quantity = 'rhou'
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
block = 0
[]
[u_viscosity]
type = FVDiffusion
variable = u
coeff = ${mu}
block = 0
[]
[u_pressure]
type = INSFVMomentumPressure
variable = u
momentum_component = 'x'
pressure = pressure
block = 0
[]
[v_advection]
type = INSFVMomentumAdvection
variable = v
advected_quantity = 'rhov'
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
block = 0
[]
[v_viscosity]
type = FVDiffusion
variable = v
coeff = ${mu}
block = 0
[]
[v_pressure]
type = INSFVMomentumPressure
variable = v
momentum_component = 'y'
pressure = pressure
block = 0
[]
[temp_conduction]
type = FVDiffusion
coeff = 'k'
variable = T
block = 0
[]
[temp_advection]
type = INSFVEnergyAdvection
variable = T
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
block = 0
[]
[solid_temp_conduction]
type = FVDiffusion
coeff = 'k'
variable = Ts
block = 1
[]
[]
[FVInterfaceKernels]
[convection]
type = FVConvectionCorrelationInterface
variable1 = T
variable2 = Ts
boundary = 'interface'
h = 5
temp_solid = Ts
temp_fluid = T
subdomain1 = 0
subdomain2 = 1
bulk_distance = 0.3
[]
[]
[FVBCs]
[top_x]
type = INSFVNoSlipWallBC
variable = u
boundary = 'top'
function = 'lid_function'
[]
[no_slip_x]
type = INSFVNoSlipWallBC
variable = u
boundary = 'left interface bottom'
function = 0
[]
[no_slip_y]
type = INSFVNoSlipWallBC
variable = v
boundary = 'left interface top bottom'
function = 0
[]
[T_hot]
type = FVDirichletBC
variable = T
boundary = 'bottom'
value = 1
[]
[T_cold]
type = FVDirichletBC
variable = Ts
boundary = 'right'
value = 0
[]
[]
[Materials]
[const]
type = ADGenericConstantMaterial
prop_names = 'k cp'
prop_values = '${k} ${cp}'
[]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
temperature = 'T'
rho = ${rho}
block = 0
[]
[]
[Functions]
[lid_function]
type = ParsedFunction
value = '4*x*(1-x)'
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -ksp_gmres_restart'
petsc_options_value = 'asm lu NONZERO 200'
line_search = 'none'
nl_rel_tol = 1e-12
nl_max_its = 6
l_max_its = 200
[]
[Outputs]
exodus = true
[]
(modules/navier_stokes/test/tests/finite_volume/fviks/convection/convection_channel.i)
mu = 1
rho = 1
k = .01
cp = 1
vel = 'velocity'
velocity_interp_method = 'rc'
advected_interp_method = 'average'
[Mesh]
[cmg]
type = CartesianMeshGenerator
dim = 2
dx = '1 0.5'
dy = '1'
ix = '8 5'
iy = '8'
subdomain_id = '0 1'
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
input = 'cmg'
primary_block = 0
paired_block = 1
new_boundary = 'interface'
[]
[fluid_side]
type = BreakBoundaryOnSubdomainGenerator
input = 'interface'
boundaries = 'top bottom'
[]
[]
[Variables]
[u]
type = INSFVVelocityVariable
block = 0
initial_condition = 1e-6
[]
[v]
type = INSFVVelocityVariable
block = 0
initial_condition = 1e-6
[]
[pressure]
type = INSFVPressureVariable
block = 0
[]
[T]
type = INSFVEnergyVariable
block = 0
initial_condition = 1
[]
[Ts]
type = INSFVEnergyVariable
block = 1
[]
[lambda]
family = SCALAR
order = FIRST
[]
[]
[FVKernels]
[mass]
type = INSFVMassAdvection
variable = pressure
vel = ${vel}
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
u = u
v = v
pressure = pressure
mu = ${mu}
rho = ${rho}
[]
[mean_zero_pressure]
type = FVScalarLagrangeMultiplier
variable = pressure
lambda = lambda
[]
[u_advection]
type = INSFVMomentumAdvection
variable = u
advected_quantity = 'rhou'
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[u_viscosity]
type = FVDiffusion
variable = u
coeff = ${mu}
[]
[u_pressure]
type = INSFVMomentumPressure
variable = u
momentum_component = 'x'
pressure = pressure
[]
[v_advection]
type = INSFVMomentumAdvection
variable = v
advected_quantity = 'rhov'
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[v_viscosity]
type = FVDiffusion
variable = v
coeff = ${mu}
[]
[v_pressure]
type = INSFVMomentumPressure
variable = v
momentum_component = 'y'
pressure = pressure
[]
[temp_conduction]
type = FVDiffusion
coeff = 'k'
variable = T
[]
[temp_advection]
type = INSFVEnergyAdvection
variable = T
vel = ${vel}
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[solid_temp_conduction]
type = FVDiffusion
coeff = 'k'
variable = Ts
[]
[]
[FVInterfaceKernels]
[convection]
type = FVConvectionCorrelationInterface
variable1 = T
variable2 = Ts
boundary = 'interface'
h = 5
temp_solid = Ts
temp_fluid = T
subdomain1 = 0
subdomain2 = 1
wall_cell_is_bulk = true
[]
[]
[FVBCs]
[walls_u]
type = INSFVNoSlipWallBC
variable = u
boundary = 'interface left'
function = 0
[]
[walls_v]
type = INSFVNoSlipWallBC
variable = v
boundary = 'interface left'
function = 0
[]
[inlet_u]
type = INSFVInletVelocityBC
variable = u
boundary = 'bottom_to_0'
function = 0
[]
[inlet_v]
type = INSFVInletVelocityBC
variable = v
boundary = 'bottom_to_0'
function = 1
[]
[inlet_T]
type = FVDirichletBC
variable = T
boundary = 'bottom_to_0'
value = 0.5
[]
[outlet]
type = INSFVMassAdvectionOutflowBC
variable = pressure
boundary = 'top_to_0'
u = u
v = v
rho = ${rho}
[]
[outlet_u]
type = INSFVMomentumAdvectionOutflowBC
variable = u
boundary = 'top_to_0'
u = u
v = v
vel = 'velocity'
[]
[outlet_v]
type = INSFVMomentumAdvectionOutflowBC
variable = v
boundary = 'top_to_0'
u = u
v = v
vel = 'velocity'
[]
[heater]
type = FVDirichletBC
variable = 'Ts'
boundary = 'right'
value = 10
[]
[]
[Materials]
[const]
type = ADGenericConstantMaterial
prop_names = 'k cp'
prop_values = '${k} ${cp}'
[]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
temperature = 'T'
rho = ${rho}
block = 0
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -ksp_gmres_restart'
petsc_options_value = 'asm lu NONZERO 200'
line_search = 'none'
nl_abs_tol = 1e-14
[]
[Postprocessors]
[max_T]
type = ElementExtremeValue
variable = T
block = 0
[]
[max_Ts]
type = ElementExtremeValue
variable = Ts
block = 1
[]
[mdot_out]
type = VolumetricFlowRate
boundary = 'top_to_0'
vel_x = u
vel_y = v
advected_interp_method = ${advected_interp_method}
[]
[]
[Outputs]
exodus = true
[]