- boundaryThe list of boundary IDs from the mesh where this boundary condition applies
C++ Type:std::vector<BoundaryName>
Description:The list of boundary IDs from the mesh where this boundary condition applies
- variableThe name of the variable that this boundary condition applies to
C++ Type:NonlinearVariableName
Description:The name of the variable that this boundary condition applies to
FVNeumannBC
Neumann boundary condition for finite volume method.
Overview
A FVNeumannBC
may be used to specify a diffusive or an advective flux. For example, to specify a flux boundary condition in the following diffusion problem, a FVNeumannBC
with a constant value of may be used.
where is the domain, is its boundary, and is a point on the domain or its boundary. In this case, a FVNeumannBC
object is used to impose the condition (2) on the subset of the boundary denoted by . In this case, the value
field corresponds to the constant , and the user must define one or more sidesets corresponding to the boundary to pass to the boundary
argument. For this particular problem, an additional boundary condition, for example a FVDirichletBC
as in (3) would also be necessary to remove the nullspace.
Likewise, to specify an advective flux of constant value in a 1D advection problem with an advective velocity :
The advective flux, the value
to specify to the boundary condition (2), is .
Modeling a multi-dimensional problem will require a FVNeumannBC
per component.
When using the Navier Stokes module, FVNeumannBC
may not be available for use with velocity and pressure, as additional information is required on either the gradient or direction of these variables to model fully developed flow for example. Specific boundary conditions are provided, see for example INSFVOutletPressureBC
.
Input Parameters
- displacementsThe displacements
C++ Type:std::vector<VariableName>
Options:
Description:The displacements
- 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.
- value0The value of the flux crossing the boundary.
Default:0
C++ Type:double
Options:
Description:The value of the flux crossing the boundary.
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/pins/channel-flow/heated/2d-rc-heated.i)
- (test/tests/fvbcs/fv_neumannbc/fv_neumannbc.i)
- (modules/navier_stokes/test/tests/finite_volume/pins/channel-flow/heated/2d-rc-heated-boussinesq.i)
- (modules/navier_stokes/test/tests/finite_volume/pins/channel-flow/heated/2d-rc-heated-effective.i)
- (test/tests/fvkernels/fv_simple_diffusion/neumann.i)
- (test/tests/fvkernels/two-var-flux-and-kernel/input.i)
- (modules/navier_stokes/test/tests/postprocessors/conservation_INSFV.i)
- (modules/navier_stokes/test/tests/postprocessors/conservation_PINSFV.i)
(modules/navier_stokes/test/tests/finite_volume/pins/channel-flow/heated/2d-rc-heated.i)
mu=1
rho=1
k=1e-3
cp=1
u_inlet=1
T_inlet=200
advected_interp_method='average'
velocity_interp_method='rc'
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 1
nx = 100
ny = 20
[]
[]
[GlobalParams]
two_term_boundary_expansion = true
[]
[Variables]
inactive = 'temp_solid'
[u]
type = PINSFVSuperficialVelocityVariable
initial_condition = ${u_inlet}
[]
[v]
type = PINSFVSuperficialVelocityVariable
initial_condition = 1e-6
[]
[pressure]
type = INSFVPressureVariable
[]
[temperature]
type = INSFVEnergyVariable
[]
[temp_solid]
family = 'MONOMIAL'
order = 'CONSTANT'
fv = true
[]
[]
[AuxVariables]
[temp_solid]
family = 'MONOMIAL'
order = 'CONSTANT'
fv = true
initial_condition = 100
[]
[porosity]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 0.5
[]
[]
[FVKernels]
inactive = 'solid_energy_diffusion solid_energy_convection'
[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
[]
[energy_advection]
type = PINSFVEnergyAdvection
variable = temperature
vel = 'velocity'
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
porosity = porosity
[]
[energy_diffusion]
type = PINSFVEnergyDiffusion
k = ${k}
variable = temperature
porosity = porosity
[]
[energy_convection]
type = PINSFVEnergyAmbientConvection
variable = temperature
is_solid = false
temp_fluid = temperature
temp_solid = temp_solid
h_solid_fluid = 'h_cv'
[]
[solid_energy_diffusion]
type = FVDiffusion
coeff = ${k}
variable = temp_solid
[]
[solid_energy_convection]
type = PINSFVEnergyAmbientConvection
variable = temp_solid
is_solid = true
temp_fluid = temperature
temp_solid = temp_solid
h_solid_fluid = 'h_cv'
[]
[]
[FVBCs]
inactive = 'heated-side'
[inlet-u]
type = INSFVInletVelocityBC
boundary = 'left'
variable = u
function = ${u_inlet}
[]
[inlet-v]
type = INSFVInletVelocityBC
boundary = 'left'
variable = v
function = 0
[]
[inlet-T]
type = FVNeumannBC
variable = temperature
value = ${fparse u_inlet * rho * cp * T_inlet}
boundary = 'left'
[]
[no-slip-u]
type = INSFVNoSlipWallBC
boundary = 'top'
variable = u
function = 0
[]
[no-slip-v]
type = INSFVNoSlipWallBC
boundary = 'top'
variable = v
function = 0
[]
[heated-side]
type = FVDirichletBC
boundary = 'top'
variable = 'temp_solid'
value = 150
[]
[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.1
[]
[]
[Materials]
[constants]
type = ADGenericConstantMaterial
prop_names = 'cp h_cv'
prop_values = '${cp} 1'
[]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
rho = ${rho}
temperature = 'temperature'
[]
[]
[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'
line_search = 'none'
nl_rel_tol = 1e-12
[]
# Some basic Postprocessors to examine the solution
[Postprocessors]
[inlet-p]
type = SideAverageValue
variable = pressure
boundary = 'left'
[]
[outlet-u]
type = SideAverageValue
variable = u
boundary = 'right'
[]
[outlet-temp]
type = SideAverageValue
variable = temperature
boundary = 'right'
[]
[solid-temp]
type = ElementAverageValue
variable = temp_solid
[]
[]
[Outputs]
exodus = true
csv = false
[]
(test/tests/fvbcs/fv_neumannbc/fv_neumannbc.i)
[Mesh]
[mesh]
type = CartesianMeshGenerator
dim = 2
dx = '1 1'
dy = '1'
ix = '5 5'
iy = '5'
subdomain_id = '1 1'
[]
[internal_sideset]
type = ParsedGenerateSideset
combinatorial_geometry = 'x<1.01 & x>0.99'
included_subdomain_ids = 1
new_sideset_name = 'center'
input = 'mesh'
[]
[]
[Variables]
[u]
family = MONOMIAL
order = CONSTANT
fv = true
block = 1
[]
[]
[FVKernels]
[diff]
type = FVDiffusion
variable = u
coeff = 1
[]
[]
[FVBCs]
inactive = 'center'
[left]
type = FVDirichletBC
variable = u
boundary = left
value = 1
[]
[right]
type = FVNeumannBC
variable = u
boundary = right
value = 4
[]
# Internal center sideset, should cause erroring out
[center]
type = FVNeumannBC
variable = u
boundary = center
value = 0
[]
[]
[Executioner]
type = Steady
solve_type = 'Newton'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(modules/navier_stokes/test/tests/finite_volume/pins/channel-flow/heated/2d-rc-heated-boussinesq.i)
mu=1
rho=1
k=1e-3
cp=1
v_inlet=1
T_inlet=200
advected_interp_method='average'
velocity_interp_method='rc'
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 2
ymin = 0
ymax = 10
nx = 20
ny = 100
[]
[]
[GlobalParams]
two_term_boundary_expansion = true
[]
[Variables]
[u]
type = PINSFVSuperficialVelocityVariable
initial_condition = 1e-6
[]
[v]
type = PINSFVSuperficialVelocityVariable
initial_condition = ${v_inlet}
[]
[pressure]
type = INSFVPressureVariable
[]
[temperature]
type = INSFVEnergyVariable
[]
[]
[AuxVariables]
[temp_solid]
family = 'MONOMIAL'
order = 'CONSTANT'
fv = true
initial_condition = 100
[]
[porosity]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 0.4
[]
[]
[FVKernels]
[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_gravity]
type = PINSFVMomentumGravity
variable = u
rho = ${rho}
gravity = '0 -9.81 0'
momentum_component = 'x'
porosity = porosity
[]
[u_boussinesq]
type = PINSFVMomentumBoussinesq
variable = u
temperature = 'temperature'
rho = ${rho}
ref_temperature = 150
gravity = '0 -9.81 0'
momentum_component = 'x'
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
[]
[v_gravity]
type = PINSFVMomentumGravity
variable = v
rho = ${rho}
gravity = '-0 -9.81 0'
momentum_component = 'y'
porosity = porosity
[]
[v_boussinesq]
type = PINSFVMomentumBoussinesq
variable = v
temperature = 'temperature'
rho = ${rho}
ref_temperature = 150
gravity = '0 -9.81 0'
momentum_component = 'y'
porosity = porosity
[]
[energy_advection]
type = PINSFVEnergyAdvection
variable = temperature
vel = 'velocity'
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
porosity = porosity
[]
[energy_diffusion]
type = PINSFVEnergyDiffusion
k = ${k}
variable = temperature
porosity = porosity
[]
[energy_convection]
type = PINSFVEnergyAmbientConvection
variable = temperature
is_solid = false
temp_fluid = temperature
temp_solid = temp_solid
h_solid_fluid = 'h_cv'
[]
[]
[FVBCs]
[inlet-u]
type = INSFVInletVelocityBC
boundary = 'bottom'
variable = u
function = 0
[]
[inlet-v]
type = INSFVInletVelocityBC
boundary = 'bottom'
variable = v
function = ${v_inlet}
[]
[inlet-T]
type = FVNeumannBC
variable = temperature
value = ${fparse v_inlet * rho * cp * T_inlet}
boundary = 'bottom'
[]
[no-slip-u]
type = INSFVNoSlipWallBC
boundary = 'right'
variable = u
function = 0
[]
[no-slip-v]
type = INSFVNoSlipWallBC
boundary = 'right'
variable = v
function = 0
[]
[symmetry-u]
type = PINSFVSymmetryVelocityBC
boundary = 'left'
variable = u
u = u
v = v
mu = ${mu}
momentum_component = 'x'
porosity = porosity
[]
[symmetry-v]
type = PINSFVSymmetryVelocityBC
boundary = 'left'
variable = v
u = u
v = v
mu = ${mu}
momentum_component = 'y'
porosity = porosity
[]
[symmetry-p]
type = INSFVSymmetryPressureBC
boundary = 'left'
variable = pressure
[]
[outlet-p]
type = INSFVOutletPressureBC
boundary = 'top'
variable = pressure
function = 0
[]
[]
[Materials]
[constants]
type = ADGenericConstantMaterial
prop_names = 'cp h_cv alpha'
prop_values = '${cp} 1e-3 8e-4'
[]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
rho = ${rho}
temperature = 'temperature'
[]
[]
[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'
line_search = 'none'
nl_rel_tol = 1e-12
[]
# Some basic Postprocessors to examine the solution
[Postprocessors]
[inlet-p]
type = SideAverageValue
variable = pressure
boundary = 'top'
[]
[outlet-v]
type = SideAverageValue
variable = v
boundary = 'top'
[]
[outlet-temp]
type = SideAverageValue
variable = temperature
boundary = 'top'
[]
[]
[Outputs]
exodus = true
csv = false
[]
(modules/navier_stokes/test/tests/finite_volume/pins/channel-flow/heated/2d-rc-heated-effective.i)
mu=1
rho=1
k=1e-3
cp=1
u_inlet=1
T_inlet=200
advected_interp_method='average'
velocity_interp_method='rc'
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 1
nx = 100
ny = 20
[]
[]
[GlobalParams]
two_term_boundary_expansion = true
[]
[Variables]
inactive = 'temp_solid'
[u]
type = PINSFVSuperficialVelocityVariable
initial_condition = ${u_inlet}
[]
[v]
type = PINSFVSuperficialVelocityVariable
initial_condition = 1e-6
[]
[pressure]
type = INSFVPressureVariable
[]
[temperature]
type = INSFVEnergyVariable
[]
[temp_solid]
family = 'MONOMIAL'
order = 'CONSTANT'
fv = true
[]
[]
[AuxVariables]
[temp_solid]
family = 'MONOMIAL'
order = 'CONSTANT'
fv = true
initial_condition = 100
[]
[porosity]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 0.5
[]
[]
[FVKernels]
inactive = 'solid_energy_diffusion solid_energy_convection'
[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
[]
[energy_advection]
type = PINSFVEnergyAdvection
variable = temperature
vel = 'velocity'
velocity_interp_method = ${velocity_interp_method}
advected_interp_method = ${advected_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
porosity = porosity
[]
[energy_diffusion]
type = PINSFVEnergyEffectiveDiffusion
kappa = 'kappa'
variable = temperature
[]
[energy_convection]
type = PINSFVEnergyAmbientConvection
variable = temperature
is_solid = false
temp_fluid = temperature
temp_solid = temp_solid
h_solid_fluid = 'h_cv'
[]
[solid_energy_diffusion]
type = FVDiffusion
coeff = ${k}
variable = temp_solid
[]
[solid_energy_convection]
type = PINSFVEnergyAmbientConvection
variable = temp_solid
is_solid = true
temp_fluid = temperature
temp_solid = temp_solid
h_solid_fluid = 'h_cv'
[]
[]
[FVBCs]
inactive = 'heated-side'
[inlet-u]
type = INSFVInletVelocityBC
boundary = 'left'
variable = u
function = ${u_inlet}
[]
[inlet-v]
type = INSFVInletVelocityBC
boundary = 'left'
variable = v
function = 0
[]
[inlet-T]
type = FVNeumannBC
variable = temperature
value = ${fparse u_inlet * rho * cp * T_inlet}
boundary = 'left'
[]
[no-slip-u]
type = INSFVNoSlipWallBC
boundary = 'top'
variable = u
function = 0
[]
[no-slip-v]
type = INSFVNoSlipWallBC
boundary = 'top'
variable = v
function = 0
[]
[heated-side]
type = FVDirichletBC
boundary = 'top'
variable = 'temp_solid'
value = 150
[]
[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.1
[]
[]
[Materials]
[constants]
type = ADGenericConstantMaterial
prop_names = 'cp h_cv'
prop_values = '${cp} 1'
[]
[kappa]
type = ADGenericConstantVectorMaterial
prop_names = 'kappa'
prop_values = '1e-3 1e-2 1e-1'
[]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
rho = ${rho}
temperature = 'temperature'
[]
[]
[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'
line_search = 'none'
nl_rel_tol = 1e-12
[]
# Some basic Postprocessors to examine the solution
[Postprocessors]
[inlet-p]
type = SideAverageValue
variable = pressure
boundary = 'left'
[]
[outlet-u]
type = SideAverageValue
variable = u
boundary = 'right'
[]
[outlet-temp]
type = SideAverageValue
variable = temperature
boundary = 'right'
[]
[solid-temp]
type = ElementAverageValue
variable = temp_solid
[]
[]
[Outputs]
exodus = true
csv = false
[]
(test/tests/fvkernels/fv_simple_diffusion/neumann.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[u]
[]
[v]
family = MONOMIAL
order = CONSTANT
fv = true
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[FVKernels]
[diff]
type = FVDiffusion
variable = v
coeff = coeff
[]
[]
[FVBCs]
[left]
type = FVNeumannBC
variable = v
boundary = left
value = 5
[]
[right]
type = FVDirichletBC
variable = v
boundary = right
value = 42
[]
[]
[Materials]
[diff]
type = ADGenericConstantMaterial
prop_names = 'coeff'
prop_values = '1'
[]
[]
[BCs]
[left]
type = NeumannBC
variable = u
boundary = left
value = 5
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 42
[]
[]
[Problem]
kernel_coverage_check = off
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
(test/tests/fvkernels/two-var-flux-and-kernel/input.i)
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
[]
[Variables]
[u]
family = MONOMIAL
order = CONSTANT
fv = true
[]
[v]
family = MONOMIAL
order = CONSTANT
fv = true
[]
[]
[FVKernels]
[diff_u]
type = FVDiffusion
variable = u
coeff = coeff
[]
[diff]
type = FVDiffusion
variable = v
coeff = coeff
[]
[]
[FVBCs]
[left_u]
type = FVNeumannBC
variable = u
boundary = left
value = 0
[]
[right_u]
type = FVDirichletBC
variable = u
boundary = right
value = 42
[]
[left]
type = FVDirichletBC
variable = v
boundary = left
value = 7
[]
[right]
type = FVDirichletBC
variable = v
boundary = right
value = 42
[]
[]
[Materials]
[diff]
type = ADGenericConstantMaterial
prop_names = 'coeff'
prop_values = '1'
[]
[]
[Problem]
kernel_coverage_check = off
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
(modules/navier_stokes/test/tests/postprocessors/conservation_INSFV.i)
mu=1.1
rho=1
advected_interp_method='average'
velocity_interp_method='average'
[GlobalParams]
two_term_boundary_expansion = true
[]
[Mesh]
inactive = 'mesh internal_boundary_bot internal_boundary_top'
[mesh]
type = CartesianMeshGenerator
dim = 2
dx = '1'
dy = '1 1 1'
ix = '5'
iy = '5 5 5'
subdomain_id = '1
2
3'
[]
[internal_boundary_bot]
type = SideSetsBetweenSubdomainsGenerator
input = mesh
new_boundary = 'internal_bot'
primary_block = 1
paired_block = 2
[]
[internal_boundary_top]
type = SideSetsBetweenSubdomainsGenerator
input = internal_boundary_bot
new_boundary = 'internal_top'
primary_block = 2
paired_block = 3
[]
[diverging_mesh]
type = FileMeshGenerator
file = 'expansion_quad.e'
[]
[]
[Problem]
fv_bcs_integrity_check = true
[]
[Variables]
[u]
type = INSFVVelocityVariable
initial_condition = 0
[]
[v]
type = INSFVVelocityVariable
initial_condition = 1
[]
[pressure]
type = INSFVPressureVariable
[]
[temperature]
type = INSFVEnergyVariable
[]
[]
[AuxVariables]
[advected_density]
order = CONSTANT
family = MONOMIAL
fv = true
initial_condition = ${rho}
[]
[]
[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}
[]
[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}
force_boundary_execution = true
[]
[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}
force_boundary_execution = true
[]
[v_pressure]
type = INSFVMomentumPressure
variable = v
momentum_component = 'y'
pressure = pressure
[]
[temp_advection]
type = INSFVEnergyAdvection
vel = 'velocity'
variable = temperature
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
[]
[temp_source]
type = FVBodyForce
variable = temperature
function = 10
block = 1
[]
[]
[FVBCs]
inactive = 'noslip-u noslip-v'
[inlet-u]
type = INSFVInletVelocityBC
boundary = 'bottom'
variable = u
function = 0
[]
[inlet-v]
type = INSFVInletVelocityBC
boundary = 'bottom'
variable = v
function = 1
[]
[noslip-u]
type = INSFVNoSlipWallBC
boundary = 'right'
variable = u
function = 0
[]
[noslip-v]
type = INSFVNoSlipWallBC
boundary = 'right'
variable = v
function = 0
[]
[free-slip-u]
type = INSFVNaturalFreeSlipBC
boundary = 'right'
variable = u
[]
[free-slip-v]
type = INSFVNaturalFreeSlipBC
boundary = 'right'
variable = v
[]
[axis-u]
type = INSFVSymmetryVelocityBC
boundary = 'left'
variable = u
u = u
v = v
mu = ${mu}
momentum_component = x
[]
[axis-v]
type = INSFVSymmetryVelocityBC
boundary = 'left'
variable = v
u = u
v = v
mu = ${mu}
momentum_component = y
[]
[axis-p]
type = INSFVSymmetryPressureBC
boundary = 'left'
variable = pressure
[]
[outlet_p]
type = INSFVOutletPressureBC
boundary = 'top'
variable = pressure
function = 0
[]
[inlet_temp]
type = FVNeumannBC
boundary = 'bottom'
variable = temperature
value = 300
[]
[]
[Materials]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
temperature = 'temperature'
rho = ${rho}
[]
[advected_material_property]
type = ADGenericConstantMaterial
prop_names = 'advected_rho cp'
prop_values ='${rho} 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-12
[]
[Postprocessors]
[inlet_mass_variable]
type = VolumetricFlowRate
boundary = bottom
vel_x = u
vel_y = v
advected_variable = advected_density
fv = true
advected_interp_method = ${advected_interp_method}
[]
[inlet_mass_constant]
type = VolumetricFlowRate
boundary = bottom
vel_x = u
vel_y = v
advected_variable = ${rho}
fv = true
advected_interp_method = ${advected_interp_method}
[]
[inlet_mass_matprop]
type = VolumetricFlowRate
boundary = bottom
vel_x = u
vel_y = v
advected_mat_prop = 'advected_rho'
fv = true
[]
[mid1_mass]
type = InternalVolumetricFlowRate
boundary = internal_bot
vel_x = u
vel_y = v
fv = true
advected_interp_method = ${advected_interp_method}
[]
[mid2_mass]
type = InternalVolumetricFlowRate
boundary = internal_top
vel_x = u
vel_y = v
fv = true
advected_interp_method = ${advected_interp_method}
[]
[outlet_mass]
type = VolumetricFlowRate
boundary = top
vel_x = u
vel_y = v
fv = true
advected_interp_method = ${advected_interp_method}
[]
[inlet_momentum_x]
type = VolumetricFlowRate
boundary = bottom
vel_x = u
vel_y = v
advected_variable = u
fv = true
advected_interp_method = ${advected_interp_method}
[]
[mid1_momentum_x]
type = InternalVolumetricFlowRate
boundary = internal_bot
vel_x = u
vel_y = v
advected_variable = u
fv = true
advected_interp_method = ${advected_interp_method}
[]
[mid2_momentum_x]
type = InternalVolumetricFlowRate
boundary = internal_top
vel_x = u
vel_y = v
advected_variable = u
fv = true
advected_interp_method = ${advected_interp_method}
[]
[outlet_momentum_x]
type = VolumetricFlowRate
boundary = top
vel_x = u
vel_y = v
advected_variable = u
fv = true
advected_interp_method = ${advected_interp_method}
[]
[inlet_momentum_y]
type = VolumetricFlowRate
boundary = bottom
vel_x = u
vel_y = v
advected_variable = v
fv = true
advected_interp_method = ${advected_interp_method}
[]
[mid1_momentum_y]
type = InternalVolumetricFlowRate
boundary = internal_bot
vel_x = u
vel_y = v
advected_variable = v
fv = true
advected_interp_method = ${advected_interp_method}
[]
[mid2_momentum_y]
type = InternalVolumetricFlowRate
boundary = internal_top
vel_x = u
vel_y = v
advected_variable = v
fv = true
advected_interp_method = ${advected_interp_method}
[]
[outlet_momentum_y]
type = VolumetricFlowRate
boundary = top
vel_x = u
vel_y = v
advected_variable = v
fv = true
advected_interp_method = ${advected_interp_method}
[]
[inlet_advected_energy]
type = VolumetricFlowRate
boundary = bottom
vel_x = u
vel_y = v
advected_mat_prop = 'rho_cp_temp'
fv = true
[]
[mid1_advected_energy]
type = InternalVolumetricFlowRate
boundary = internal_bot
vel_x = u
vel_y = v
advected_mat_prop = 'rho_cp_temp'
fv = true
advected_interp_method = ${advected_interp_method}
[]
[mid2_advected_energy]
type = InternalVolumetricFlowRate
boundary = internal_top
vel_x = u
vel_y = v
advected_mat_prop = 'rho_cp_temp'
fv = true
advected_interp_method = ${advected_interp_method}
[]
[outlet_advected_energy]
type = VolumetricFlowRate
boundary = top
vel_x = u
vel_y = v
advected_mat_prop = 'rho_cp_temp'
fv = true
[]
[]
[Outputs]
exodus = false
csv = true
inactive = 'console_mass console_momentum_x console_momentum_y console_energy'
[console_mass]
type = Console
start_step = 1
show = 'inlet_mass_variable inlet_mass_constant inlet_mass_matprop mid1_mass mid2_mass outlet_mass'
[]
[console_momentum_x]
type = Console
start_step = 1
show = 'inlet_momentum_x mid1_momentum_x mid2_momentum_x outlet_momentum_x'
[]
[console_momentum_y]
type = Console
start_step = 1
show = 'inlet_momentum_y mid1_momentum_y mid2_momentum_y outlet_momentum_y'
[]
[console_energy]
type = Console
start_step = 1
show = 'inlet_advected_energy mid1_advected_energy mid2_advected_energy outlet_advected_energy'
[]
[]
(modules/navier_stokes/test/tests/postprocessors/conservation_PINSFV.i)
mu=1.1
rho=1
advected_interp_method='average'
velocity_interp_method='average'
[Mesh]
inactive = 'mesh internal_boundary_bot internal_boundary_top'
[mesh]
type = CartesianMeshGenerator
dim = 2
dx = '1'
dy = '1 1 1'
ix = '5'
iy = '5 5 5'
subdomain_id = '1
2
3'
[]
[internal_boundary_bot]
type = SideSetsBetweenSubdomainsGenerator
input = mesh
new_boundary = 'internal_bot'
primary_block = 1
paired_block = 2
[]
[internal_boundary_top]
type = SideSetsBetweenSubdomainsGenerator
input = internal_boundary_bot
new_boundary = 'internal_top'
primary_block = 2
paired_block = 3
[]
[diverging_mesh]
type = FileMeshGenerator
file = 'expansion_quad.e'
[]
[]
[Problem]
kernel_coverage_check = false
fv_bcs_integrity_check = true
[]
[GlobalParams]
two_term_boundary_expansion = true
[]
[Variables]
[u]
type = PINSFVSuperficialVelocityVariable
initial_condition = 0
[]
[v]
type = PINSFVSuperficialVelocityVariable
initial_condition = 1
[]
[pressure]
type = INSFVPressureVariable
[]
[temperature]
type = INSFVEnergyVariable
[]
[]
[AuxVariables]
[advected_density]
order = CONSTANT
family = MONOMIAL
fv = true
initial_condition = ${rho}
[]
[porosity]
order = CONSTANT
family = MONOMIAL
fv = true
initial_condition = 0.5
[]
[]
[FVKernels]
[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
force_boundary_execution = true
porosity = porosity
mu = ${mu}
[]
[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
force_boundary_execution = true
porosity = porosity
mu = ${mu}
[]
[v_pressure]
type = PINSFVMomentumPressure
variable = v
momentum_component = 'y'
pressure = pressure
porosity = porosity
[]
[temp_advection]
type = PINSFVEnergyAdvection
vel = 'velocity'
variable = temperature
advected_interp_method = ${advected_interp_method}
velocity_interp_method = ${velocity_interp_method}
pressure = pressure
u = u
v = v
mu = ${mu}
rho = ${rho}
porosity = porosity
[]
[temp_source]
type = FVBodyForce
variable = temperature
function = 10
block = 1
[]
[]
[FVBCs]
inactive = 'noslip-u noslip-v'
[inlet-u]
type = INSFVInletVelocityBC
boundary = 'bottom'
variable = u
function = 0
[]
[inlet-v]
type = INSFVInletVelocityBC
boundary = 'bottom'
variable = v
function = 1
[]
[noslip-u]
type = INSFVNoSlipWallBC
boundary = 'right'
variable = u
function = 0
[]
[noslip-v]
type = INSFVNoSlipWallBC
boundary = 'right'
variable = v
function = 0
[]
[free-slip-u]
type = INSFVNaturalFreeSlipBC
boundary = 'right'
variable = u
[]
[free-slip-v]
type = INSFVNaturalFreeSlipBC
boundary = 'right'
variable = v
[]
[axis-u]
type = PINSFVSymmetryVelocityBC
boundary = 'left'
variable = u
u = u
v = v
mu = ${mu}
momentum_component = x
porosity = porosity
[]
[axis-v]
type = PINSFVSymmetryVelocityBC
boundary = 'left'
variable = v
u = u
v = v
mu = ${mu}
momentum_component = y
porosity = porosity
[]
[axis-p]
type = INSFVSymmetryPressureBC
boundary = 'left'
variable = pressure
[]
[outlet_p]
type = INSFVOutletPressureBC
boundary = 'top'
variable = pressure
function = 0
[]
[inlet_temp]
type = FVNeumannBC
boundary = 'bottom'
variable = temperature
value = 300
[]
[]
[Materials]
[ins_fv]
type = INSFVMaterial
u = 'u'
v = 'v'
pressure = 'pressure'
temperature = 'temperature'
rho = ${rho}
[]
[advected_material_property]
type = ADGenericConstantMaterial
prop_names = 'advected_rho cp'
prop_values ='${rho} 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-12
[]
[Postprocessors]
[inlet_mass_variable]
type = VolumetricFlowRate
boundary = bottom
vel_x = u
vel_y = v
advected_variable = advected_density
fv = true
advected_interp_method = ${advected_interp_method}
[]
[inlet_mass_constant]
type = VolumetricFlowRate
boundary = bottom
vel_x = u
vel_y = v
advected_variable = ${rho}
fv = true
advected_interp_method = ${advected_interp_method}
[]
[inlet_mass_matprop]
type = VolumetricFlowRate
boundary = bottom
vel_x = u
vel_y = v
advected_mat_prop = 'advected_rho'
fv = true
[]
[mid1_mass]
type = InternalVolumetricFlowRate
boundary = internal_bot
vel_x = u
vel_y = v
fv = true
advected_interp_method = ${advected_interp_method}
[]
[mid2_mass]
type = InternalVolumetricFlowRate
boundary = internal_top
vel_x = u
vel_y = v
fv = true
advected_interp_method = ${advected_interp_method}
[]
[outlet_mass]
type = VolumetricFlowRate
boundary = top
vel_x = u
vel_y = v
fv = true
advected_interp_method = ${advected_interp_method}
[]
[inlet_momentum_x]
type = VolumetricFlowRate
boundary = bottom
vel_x = u
vel_y = v
advected_variable = u
fv = true
advected_interp_method = ${advected_interp_method}
[]
[mid1_momentum_x]
type = InternalVolumetricFlowRate
boundary = internal_bot
vel_x = u
vel_y = v
advected_variable = u
fv = true
advected_interp_method = ${advected_interp_method}
[]
[mid2_momentum_x]
type = InternalVolumetricFlowRate
boundary = internal_top
vel_x = u
vel_y = v
advected_variable = u
fv = true
advected_interp_method = ${advected_interp_method}
[]
[outlet_momentum_x]
type = VolumetricFlowRate
boundary = top
vel_x = u
vel_y = v
advected_variable = u
fv = true
advected_interp_method = ${advected_interp_method}
[]
[inlet_momentum_y]
type = VolumetricFlowRate
boundary = bottom
vel_x = u
vel_y = v
advected_variable = v
fv = true
advected_interp_method = ${advected_interp_method}
[]
[mid1_momentum_y]
type = InternalVolumetricFlowRate
boundary = internal_bot
vel_x = u
vel_y = v
advected_variable = v
fv = true
advected_interp_method = ${advected_interp_method}
[]
[mid2_momentum_y]
type = InternalVolumetricFlowRate
boundary = internal_top
vel_x = u
vel_y = v
advected_variable = v
fv = true
advected_interp_method = ${advected_interp_method}
[]
[outlet_momentum_y]
type = VolumetricFlowRate
boundary = top
vel_x = u
vel_y = v
advected_variable = v
fv = true
advected_interp_method = ${advected_interp_method}
[]
[inlet_advected_energy]
type = VolumetricFlowRate
boundary = bottom
vel_x = u
vel_y = v
advected_mat_prop = 'rho_cp_temp'
fv = true
[]
[mid1_advected_energy]
type = InternalVolumetricFlowRate
boundary = internal_bot
vel_x = u
vel_y = v
advected_mat_prop = 'rho_cp_temp'
fv = true
[]
[mid2_advected_energy]
type = InternalVolumetricFlowRate
boundary = internal_top
vel_x = u
vel_y = v
advected_mat_prop = 'rho_cp_temp'
fv = true
[]
[outlet_advected_energy]
type = VolumetricFlowRate
boundary = top
vel_x = u
vel_y = v
advected_mat_prop = 'rho_cp_temp'
fv = true
[]
[]
[Outputs]
exodus = false
csv = true
inactive = 'console_mass console_momentum_x console_momentum_y console_energy'
[console_mass]
type = Console
start_step = 1
show = 'inlet_mass_variable inlet_mass_constant inlet_mass_matprop mid1_mass mid2_mass outlet_mass'
[]
[console_momentum_x]
type = Console
start_step = 1
show = 'inlet_momentum_x mid1_momentum_x mid2_momentum_x outlet_momentum_x'
[]
[console_momentum_y]
type = Console
start_step = 1
show = 'inlet_momentum_y mid1_momentum_y mid2_momentum_y outlet_momentum_y'
[]
[console_energy]
type = Console
start_step = 1
show = 'inlet_advected_energy mid1_advected_energy mid2_advected_energy outlet_advected_energy'
[]
[]