- variableThe name of the variable that this residual object operates on
C++ Type:NonlinearVariableName
Controllable:No
Description:The name of the variable that this residual object operates on
FVReaction
Description
FVReaction
implements a simple first-order reaction term where the rate of reaction is directly proportional where is the rate coefficient and is the governing variable.
FVReaction
can be used to help set-up variations of advection-diffusion-reaction equations.
Example Syntax
The syntax for FVReaction
is simple, only taking the type
and variable
parameters. An example block is shown below for a diffusion-reaction equation:
[FVKernels]
[diff]
type = FVDiffusion
variable = v
coeff = coeff
[]
[rxn]
type = FVReaction
variable = v
rate = 2.0
[]
[diffw]
type = FVDiffusion
variable = w
coeff = coeff
[]
[prod]
type = FVCoupledForce
variable = w
v = 'v'
[]
[]
(test/tests/fvkernels/fv_coupled_var/coupled.i)Input Parameters
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- 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
Controllable:No
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.
- rate1Relative amount consumed per unit time.
Default:1
C++ Type:double
Controllable:No
Description:Relative amount consumed per unit time.
Optional Parameters
- absolute_value_vector_tagsThe tags for the vectors this residual object should fill with the absolute value of the residual contribution
C++ Type:std::vector<TagName>
Controllable:No
Description:The tags for the vectors this residual object should fill with the absolute value of the residual contribution
- extra_matrix_tagsThe extra tags for the matrices this Kernel should fill
C++ Type:std::vector<TagName>
Controllable:No
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>
Controllable:No
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
Controllable:No
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
Controllable:No
Description:The tag for the vectors this Kernel should fill
Tagging 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:Yes
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
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
- 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
Controllable:No
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
- ghost_layers1The number of layers of elements to ghost.
Default:1
C++ Type:unsigned short
Controllable:No
Description:The number of layers of elements to ghost.
- use_point_neighborsFalseWhether to use point neighbors, which introduces additional ghosting to that used for simple face neighbors.
Default:False
C++ Type:bool
Controllable:No
Description:Whether to use point neighbors, which introduces additional ghosting to that used for simple face neighbors.
Parallel Ghosting Parameters
Input Files
- (test/tests/auxkernels/divergence_aux/test_fv.i)
- (test/tests/auxkernels/time_derivative_aux/test_fv.i)
- (test/tests/fvkernels/fv_coupled_var/coupled.i)
- (test/tests/fvkernels/mms/cylindrical/advection-reaction.i)
- (modules/navier_stokes/test/tests/finite_volume/cns/mms/1d-with-bcs/regular-straight-channel.i)
- (test/tests/fvkernels/mms/cylindrical/advection-diffusion-reaction.i)
- (test/tests/materials/boundary_material/fv_material_quadrature.i)
- (test/tests/fvkernels/mms/non-orthogonal/extended-adr.i)
- (test/tests/auxkernels/bounds/constant_bounds_fv.i)
- (test/tests/fvkernels/mms/non-orthogonal/advection-diffusion-reaction.i)
- (test/tests/fvkernels/mms/grad-reconstruction/mat-rz.i)
- (test/tests/fvkernels/mms/grad-reconstruction/mat-cartesian.i)
- (modules/navier_stokes/test/tests/finite_volume/cns/mms/1d-with-bcs/straight-channel-hllc.i)
- (test/tests/fvkernels/mms/grad-reconstruction/rz.i)
- (test/tests/mortar/convergence-studies/fv-gap-conductance/gap-conductance.i)
- (test/tests/fvkernels/mms/skewness-correction/adv-diff-react/skewed.i)
- (test/tests/fvkernels/mms/grad-reconstruction/cartesian.i)
(test/tests/fvkernels/fv_coupled_var/coupled.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 2
[]
[Variables]
[u][]
[v]
family = MONOMIAL
order = CONSTANT
fv = true
[]
[w]
family = MONOMIAL
order = CONSTANT
fv = true
[]
[s][]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[rxn]
type = Reaction
variable = u
rate = 2.0
[]
[diffs]
type = Diffusion
variable = s
[]
[prod]
type = CoupledForce
variable = s
v = u
[]
[]
[FVKernels]
[diff]
type = FVDiffusion
variable = v
coeff = coeff
[]
[rxn]
type = FVReaction
variable = v
rate = 2.0
[]
[diffw]
type = FVDiffusion
variable = w
coeff = coeff
[]
[prod]
type = FVCoupledForce
variable = w
v = 'v'
[]
[]
[FVBCs]
[left]
type = FVDirichletBC
variable = v
boundary = left
value = 0
[]
[right]
type = FVDirichletBC
variable = v
boundary = right
value = 1
[]
[leftw]
type = FVDirichletBC
variable = w
boundary = left
value = 0
[]
[rightw]
type = FVDirichletBC
variable = w
boundary = right
value = 1
[]
[]
[Materials]
[diff]
type = ADGenericFunctorMaterial
prop_names = 'coeff'
prop_values = '1'
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[lefts]
type = DirichletBC
variable = s
boundary = left
value = 0
[]
[rights]
type = DirichletBC
variable = s
boundary = right
value = 1
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Outputs]
exodus = true
[]
(test/tests/auxkernels/divergence_aux/test_fv.i)
[Mesh]
[cmg]
type = CartesianMeshGenerator
dim = 2
dx = '1.5 1 0.1'
dy = '1.3 1 0.9'
ix = '2 4 1'
iy = '2 3 3'
subdomain_id = '1 1 1
1 2 1
1 1 1'
[]
[add_inner_boundaries_top]
type = SideSetsAroundSubdomainGenerator
input = cmg
new_boundary = 'block_2_top'
block = 2
normal = '0 1 0'
[]
[add_inner_boundaries_bot]
type = SideSetsAroundSubdomainGenerator
input = add_inner_boundaries_top
new_boundary = 'block_2_bot'
block = 2
normal = '0 -1 0'
[]
[add_inner_boundaries_right]
type = SideSetsAroundSubdomainGenerator
input = add_inner_boundaries_bot
new_boundary = 'block_2_right'
block = 2
normal = '1 0 0'
[]
[add_inner_boundaries_left]
type = SideSetsAroundSubdomainGenerator
input = add_inner_boundaries_right
new_boundary = 'block_2_left'
block = 2
normal = '-1 0 0'
[]
[]
[Variables]
[u]
type = MooseVariableFVReal
[]
[v]
type = MooseVariableFVReal
[]
[]
[FVKernels]
[diff_u]
type = FVDiffusion
variable = u
coeff = 1
[]
[reaction_u]
type = FVReaction
variable = u
[]
[diff_v]
type = FVDiffusion
variable = v
coeff = 2
[]
[reaction_v]
type = FVReaction
variable = v
[]
[]
[AuxVariables]
[div]
type = MooseVariableFVReal
[]
[]
[AuxKernels]
[divergence]
type = ADDivergenceAux
variable = div
u = 'u'
v = 'v'
[]
[]
[FVBCs]
[left]
type = FVDirichletBC
variable = u
boundary = left
value = 2
[]
[right]
type = FVDirichletBC
variable = u
boundary = right
value = 1
[]
[top]
type = FVDirichletBC
variable = v
boundary = top
value = 2
[]
[bottom]
type = FVDirichletBC
variable = v
boundary = bottom
value = 1
[]
[]
[Executioner]
type = Steady
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Postprocessors]
[int_divergence]
type = ElementL1Error
block = 2
variable = div
function = 0
[]
[sum_surface_current]
type = ParsedPostprocessor
function = 's1 - s2 + s3 - s4'
pp_names = 's1 s2 s3 s4'
[]
[s1]
type = ADSideIntegralFunctorPostprocessor
boundary = 'block_2_right'
functor = 'u'
[]
[s2]
type = ADSideIntegralFunctorPostprocessor
boundary = 'block_2_left'
functor = 'u'
[]
[s3]
type = ADSideIntegralFunctorPostprocessor
boundary = 'block_2_top'
functor = 'v'
[]
[s4]
type = ADSideIntegralFunctorPostprocessor
boundary = 'block_2_bot'
functor = 'v'
[]
[]
[Outputs]
csv = true
hide = 's1 s2 s3 s4'
[]
(test/tests/auxkernels/time_derivative_aux/test_fv.i)
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 6
ny = 6
[]
[Variables]
[u]
type = MooseVariableFVReal
initial_condition = 2
[]
[]
[FVKernels]
[time]
type = FVTimeKernel
variable = u
[]
[reaction]
type = FVReaction
variable = u
rate = 2.0
[]
[diffusion]
type = FVDiffusion
variable = u
coeff = 0.1
[]
[]
[FVBCs]
[left]
type = FVNeumannBC
variable = u
value = 5
boundary = 'left'
[]
[]
[AuxVariables]
inactive = 'variable_derivative'
[variable_derivative]
family = MONOMIAL
order = CONSTANT
[]
[variable_derivative_fv]
family = MONOMIAL
order = CONSTANT
fv = true
[]
[]
[AuxKernels]
# Time derivative of a FV variable using the functor system
[function_derivative_element]
type = TimeDerivativeAux
variable = variable_derivative_fv
functor = 'u'
factor = 2
[]
# this places the derivative of a FV variable in a FE one
# let's output a warning
inactive = 'function_derivative_element_fv_fe'
[function_derivative_element_fv_fe]
type = TimeDerivativeAux
variable = variable_derivative
functor = 'u'
factor = 2
[]
[]
[Executioner]
type = Transient
dt = 0.1
num_steps = 2
nl_abs_tol = 1e-12
[]
[Outputs]
exodus = true
[]
(test/tests/fvkernels/fv_coupled_var/coupled.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 2
[]
[Variables]
[u][]
[v]
family = MONOMIAL
order = CONSTANT
fv = true
[]
[w]
family = MONOMIAL
order = CONSTANT
fv = true
[]
[s][]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[rxn]
type = Reaction
variable = u
rate = 2.0
[]
[diffs]
type = Diffusion
variable = s
[]
[prod]
type = CoupledForce
variable = s
v = u
[]
[]
[FVKernels]
[diff]
type = FVDiffusion
variable = v
coeff = coeff
[]
[rxn]
type = FVReaction
variable = v
rate = 2.0
[]
[diffw]
type = FVDiffusion
variable = w
coeff = coeff
[]
[prod]
type = FVCoupledForce
variable = w
v = 'v'
[]
[]
[FVBCs]
[left]
type = FVDirichletBC
variable = v
boundary = left
value = 0
[]
[right]
type = FVDirichletBC
variable = v
boundary = right
value = 1
[]
[leftw]
type = FVDirichletBC
variable = w
boundary = left
value = 0
[]
[rightw]
type = FVDirichletBC
variable = w
boundary = right
value = 1
[]
[]
[Materials]
[diff]
type = ADGenericFunctorMaterial
prop_names = 'coeff'
prop_values = '1'
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[lefts]
type = DirichletBC
variable = s
boundary = left
value = 0
[]
[rights]
type = DirichletBC
variable = s
boundary = right
value = 1
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Outputs]
exodus = true
[]
(test/tests/fvkernels/mms/cylindrical/advection-reaction.i)
a = 1.1
[Mesh]
coord_type = 'RZ'
[gen_mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 2
xmax = 3
ymin = 0
ymax = 1
nx = 2
ny = 2
[]
[]
[Variables]
[v]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 1
[]
[]
[FVKernels]
[advection]
type = FVAdvection
variable = v
velocity = '${a} ${a} 0'
advected_interp_method = 'average'
[]
[reaction]
type = FVReaction
variable = v
[]
[body_v]
type = FVBodyForce
variable = v
function = 'forcing'
[]
[]
[FVBCs]
[left_u]
type = FVFunctionDirichletBC
boundary = 'left bottom'
function = 'exact'
variable = v
[]
[right_u]
type = FVConstantScalarOutflowBC
variable = v
velocity = '${a} ${a} 0'
boundary = 'right top'
[]
[]
[Functions]
[exact]
type = ParsedFunction
expression = 'sin(x)*cos(y)'
[]
[forcing]
type = ParsedFunction
expression = '-a*sin(x)*sin(y) + sin(x)*cos(y) + (x*a*cos(x)*cos(y) + a*sin(x)*cos(y))/x'
symbol_names = 'a'
symbol_values = '${a}'
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_factor_shift_type -sub_pc_type'
petsc_options_value = 'asm NONZERO lu'
[]
[Outputs]
exodus = true
csv = true
[]
[Postprocessors]
[error]
type = ElementL2Error
variable = v
function = exact
outputs = 'console csv'
execute_on = 'timestep_end'
[]
[h]
type = AverageElementSize
outputs = 'console csv'
execute_on = 'timestep_end'
[]
[]
(modules/navier_stokes/test/tests/finite_volume/cns/mms/1d-with-bcs/regular-straight-channel.i)
[GlobalParams]
fp = fp
[]
[Mesh]
[./gen_mesh]
type = GeneratedMeshGenerator
dim = 1
xmax = 1.5
nx = 15
[../]
[]
[FluidProperties]
[fp]
type = IdealGasFluidProperties
[]
[]
[Variables]
[rho]
type = MooseVariableFVReal
initial_condition = 1.28969
scaling = 1e3
[]
[rho_u]
type = MooseVariableFVReal
initial_condition = 1.28969
[]
[rho_et]
type = MooseVariableFVReal
initial_condition = 2.525e5
scaling = 1e-2
[]
[]
[FVKernels]
[mass_advection]
type = CNSFVMassHLLC
variable = rho
fp = fp
[]
[momentum_x_advection]
type = CNSFVMomentumHLLC
variable = rho_u
momentum_component = x
fp = fp
[]
[drag]
type = FVReaction
variable = rho_u
rate = 1000
[]
[fluid_energy_advection]
type = CNSFVFluidEnergyHLLC
variable = rho_et
fp = fp
[]
[]
[FVBCs]
[mass_in]
variable = rho
type = CNSFVHLLCSpecifiedMassFluxAndTemperatureMassBC
boundary = left
temperature = 273.15
rhou = 1.28969
[]
[momentum_in]
variable = rho_u
type = CNSFVHLLCSpecifiedMassFluxAndTemperatureMomentumBC
boundary = left
temperature = 273.15
rhou = 1.28969
momentum_component = 'x'
[]
[energy_in]
variable = rho_et
type = CNSFVHLLCSpecifiedMassFluxAndTemperatureFluidEnergyBC
boundary = left
temperature = 273.15
rhou = 1.28969
[]
[mass_out]
variable = rho
type = CNSFVHLLCSpecifiedPressureMassBC
boundary = right
pressure = 1.01e5
[]
[momentum_out]
variable = rho_u
type = CNSFVHLLCSpecifiedPressureMomentumBC
boundary = right
pressure = 1.01e5
momentum_component = 'x'
[]
[energy_out]
variable = rho_et
type = CNSFVHLLCSpecifiedPressureFluidEnergyBC
boundary = right
pressure = 1.01e5
[]
[]
[Materials]
[var_mat]
type = ConservedVarValuesMaterial
rho = rho
rhou = rho_u
rho_et = rho_et
[]
[]
[Executioner]
solve_type = NEWTON
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_max_its = 50
line_search = none
[]
[Outputs]
exodus = true
csv = true
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/fvkernels/mms/cylindrical/advection-diffusion-reaction.i)
a=1.1
diff=1.1
[Mesh]
coord_type = 'RZ'
[./gen_mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 2
xmax = 3
ymin = 0
ymax = 1
nx = 2
ny = 2
[../]
[]
[Variables]
[./v]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 1
[../]
[]
[FVKernels]
[./advection]
type = FVAdvection
variable = v
velocity = '${a} ${a} 0'
advected_interp_method = 'average'
[../]
[reaction]
type = FVReaction
variable = v
[]
[diff_v]
type = FVDiffusion
variable = v
coeff = ${diff}
[]
[body_v]
type = FVBodyForce
variable = v
function = 'forcing'
[]
[]
[FVBCs]
[exact]
type = FVFunctionDirichletBC
boundary = 'left right top bottom'
function = 'exact'
variable = v
[]
[]
[Functions]
[exact]
type = ParsedFunction
expression = 'sin(x)*cos(y)'
[]
[forcing]
type = ParsedFunction
expression = '-a*sin(x)*sin(y) + diff*sin(x)*cos(y) + sin(x)*cos(y) + (x*a*cos(x)*cos(y) + a*sin(x)*cos(y))/x - (-x*diff*sin(x)*cos(y) + diff*cos(x)*cos(y))/x'
symbol_names = 'a diff'
symbol_values = '${a} ${diff}'
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_factor_shift_type -sub_pc_type'
petsc_options_value = 'asm NONZERO lu'
[]
[Outputs]
exodus = true
csv = true
[]
[Postprocessors]
[./error]
type = ElementL2Error
variable = v
function = exact
outputs = 'console csv'
execute_on = 'timestep_end'
[../]
[h]
type = AverageElementSize
outputs = 'console csv'
execute_on = 'timestep_end'
[]
[]
(test/tests/materials/boundary_material/fv_material_quadrature.i)
# Parsed material properties depend on the physical location of the element
# This requires the initialization of the quadrature in the FVFlux loop
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 4
ny = 4
elem_type = QUAD9
[]
[Functions]
[linear_x]
type = ParsedFunction
expression = 'x'
[]
[piecewise_linear_x]
type = PiecewiseLinear
x = '-1 2'
y = '-1 2'
axis = 'x'
[]
[]
[Variables]
[u]
family = MONOMIAL
order = CONSTANT
fv = true
[]
[]
[FVKernels]
[diff]
type = FVDiffusion
variable = u
coeff = k1
coeff_interp_method = average
[]
[r]
type = FVReaction
variable = u
[]
[]
[FVBCs]
[all]
type = FVDirichletBC
variable = u
boundary = 'left right bottom top'
value = 1
[]
[]
[Materials]
active = 'k1'
[k1]
type = ADGenericFunctorMaterial
prop_names = 'k1'
prop_values = linear_x
block = 0
[]
[k1_piecewise]
type = ADGenericFunctorMaterial
prop_names = 'k1'
prop_values = piecewise_linear_x
block = 0
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
execute_on = 'timestep_end'
exodus = true
[]
(test/tests/fvkernels/mms/non-orthogonal/extended-adr.i)
a=1.1
diff=1.1
[Mesh]
[./gen_mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 2
xmax = 3
ymin = 0
ymax = 1
nx = 2
ny = 2
elem_type = TRI3
[../]
[]
[Variables]
[./v]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 1
type = MooseVariableFVReal
face_interp_method = vertex-based
[../]
[]
[FVKernels]
[./advection]
type = FVAdvection
variable = v
velocity = '${a} ${fparse 2*a} 0'
advected_interp_method = 'average'
[../]
[reaction]
type = FVReaction
variable = v
[]
[diff_v]
type = FVDiffusion
variable = v
coeff = ${diff}
use_point_neighbors = true
[]
[body_v]
type = FVBodyForce
variable = v
function = 'forcing'
[]
[]
[FVBCs]
[exact]
type = FVFunctionDirichletBC
boundary = 'left right top bottom'
function = 'exact'
variable = v
[]
[]
[Functions]
[exact]
type = ParsedFunction
expression = 'sin(x)*cos(y)'
[]
[forcing]
type = ParsedFunction
expression = '-2*a*sin(x)*sin(y) + a*cos(x)*cos(y) + 2*diff*sin(x)*cos(y) + sin(x)*cos(y)'
symbol_names = 'a diff'
symbol_values = '${a} ${diff}'
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type'
petsc_options_value = 'hypre'
[]
[Outputs]
csv = true
[]
[Postprocessors]
[./error]
type = ElementL2Error
variable = v
function = exact
outputs = 'console csv'
execute_on = 'timestep_end'
[../]
[h]
type = AverageElementSize
outputs = 'console csv'
execute_on = 'timestep_end'
[]
[]
(test/tests/auxkernels/bounds/constant_bounds_fv.i)
[Mesh]
type = GeneratedMesh
dim = 1
xmin = 0
xmax = 1
nx = 10
[]
[Variables]
[u]
order = CONSTANT
family = MONOMIAL
fv = true
[]
[v]
type = MooseVariableFVReal
[]
[]
[AuxVariables]
[bounds_dummy]
order = CONSTANT
family = MONOMIAL
fv = true
[]
[]
[FVKernels]
[diff_u]
type = FVDiffusion
variable = u
coeff = 4
[]
[reaction_u]
type = FVReaction
variable = u
[]
[diff_v]
type = FVDiffusion
variable = v
coeff = 2
[]
[reaction_v]
type = FVReaction
variable = v
[]
[]
[FVBCs]
[left_u]
type = FVDirichletBC
variable = u
boundary = '0'
value = -0.5
[]
[right_u]
type = FVNeumannBC
variable = u
boundary = 1
value = 30
[]
[left_v]
type = FVDirichletBC
variable = v
boundary = '0'
value = 4
[]
[right_v]
type = FVNeumannBC
variable = v
boundary = 1
value = -40
[]
[]
[Bounds]
[u_upper_bound]
type = ConstantBoundsAux
variable = bounds_dummy
bounded_variable = u
bound_type = upper
bound_value = 1
[]
[u_lower_bound]
type = ConstantBoundsAux
variable = bounds_dummy
bounded_variable = u
bound_type = lower
bound_value = 0
[]
[v_upper_bound]
type = ConstantBoundsAux
variable = bounds_dummy
bounded_variable = v
bound_type = upper
bound_value = 3
[]
[v_lower_bound]
type = ConstantBoundsAux
variable = bounds_dummy
bounded_variable = v
bound_type = lower
bound_value = -1
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-snes_type'
petsc_options_value = 'vinewtonrsls'
[]
[Outputs]
exodus = true
[]
(test/tests/fvkernels/mms/non-orthogonal/advection-diffusion-reaction.i)
a=1.1
diff=1.1
[Mesh]
[./gen_mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 2
xmax = 3
ymin = 0
ymax = 1
nx = 2
ny = 2
elem_type = TRI3
[../]
[]
[Variables]
[v]
type = MooseVariableFVReal
initial_condition = 1
[]
[]
[FVKernels]
[advection]
type = FVAdvection
variable = v
velocity = '${a} ${fparse 2*a} 0'
advected_interp_method = 'average'
[]
[reaction]
type = FVReaction
variable = v
[]
[diff_v]
type = FVDiffusion
variable = v
coeff = ${diff}
[]
[body_v]
type = FVBodyForce
variable = v
function = 'forcing'
[]
[]
[FVBCs]
[exact]
type = FVFunctionDirichletBC
boundary = 'left right top bottom'
function = 'exact'
variable = v
[]
[]
[Functions]
[exact]
type = ParsedFunction
expression = 'sin(x)*cos(y)'
[]
[forcing]
type = ParsedFunction
expression = '-2*a*sin(x)*sin(y) + a*cos(x)*cos(y) + 2*diff*sin(x)*cos(y) + sin(x)*cos(y)'
symbol_names = 'a diff'
symbol_values = '${a} ${diff}'
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Outputs]
csv = true
[]
[Postprocessors]
[error]
type = ElementL2Error
variable = v
function = exact
outputs = 'console csv'
execute_on = 'timestep_end'
[]
[h]
type = AverageElementSize
outputs = 'console csv'
execute_on = 'timestep_end'
[]
[]
(test/tests/fvkernels/mms/grad-reconstruction/mat-rz.i)
a=1.1
diff=1.1
[Mesh]
[gen_mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 2
xmax = 3
ymin = 0
ymax = 1
nx = 2
ny = 2
[]
[]
[Problem]
coord_type = 'RZ'
[]
[Variables]
[v]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 1
[]
[]
[FVKernels]
[advection]
type = FVElementalAdvection
variable = v
velocity = '${a} ${a} 0'
advected_quantity = 'mat_u'
grad_advected_quantity = 'mat_grad_u'
[]
[reaction]
type = FVReaction
variable = v
[]
[diff_v]
type = FVDiffusion
variable = v
coeff = ${diff}
[]
[body_v]
type = FVBodyForce
variable = v
function = 'forcing'
[]
[]
[FVBCs]
[diri]
type = FVFunctionDirichletBC
boundary = 'left right top bottom'
function = 'exact'
variable = v
[]
[]
[Materials]
[mat]
type = ADCoupledGradientMaterial
mat_prop = 'mat_u'
grad_mat_prop = 'mat_grad_u'
u = v
[]
[]
[Functions]
[exact]
type = ParsedFunction
expression = 'sin(x)*cos(y)'
[]
[forcing]
type = ParsedFunction
expression = '-a*sin(x)*sin(y) + diff*sin(x)*cos(y) + sin(x)*cos(y) + (x*a*cos(x)*cos(y) + a*sin(x)*cos(y))/x - (-x*diff*sin(x)*cos(y) + diff*cos(x)*cos(y))/x'
symbol_names = 'a diff'
symbol_values = '${a} ${diff}'
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_factor_shift_type -sub_pc_type'
petsc_options_value = 'asm NONZERO lu'
[]
[Outputs]
exodus = true
csv = true
[]
[Postprocessors]
[error]
type = ElementL2Error
variable = v
function = exact
outputs = 'console csv'
execute_on = 'timestep_end'
[]
[h]
type = AverageElementSize
outputs = 'console csv'
execute_on = 'timestep_end'
[]
[]
(test/tests/fvkernels/mms/grad-reconstruction/mat-cartesian.i)
a=1.1
diff=1.1
[Mesh]
[gen_mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 2
ny = 2
[]
[]
[Variables]
[v]
type = MooseVariableFVReal
initial_condition = 1
[]
[]
[FVKernels]
[advection]
type = FVElementalAdvection
variable = v
velocity = '${a} ${fparse 2 * a} 0'
advected_quantity = 'mat_u'
grad_advected_quantity = 'mat_grad_u'
[]
[reaction]
type = FVReaction
variable = v
[]
[diff_v]
type = FVDiffusion
variable = v
coeff = ${diff}
[]
[body_v]
type = FVBodyForce
variable = v
function = 'forcing'
[]
[]
[FVBCs]
[diri]
type = FVFunctionDirichletBC
boundary = 'left right top bottom'
function = 'exact'
variable = v
[]
[]
[Materials]
[mat]
type = ADCoupledGradientMaterial
mat_prop = 'mat_u'
grad_mat_prop = 'mat_grad_u'
u = v
[]
[]
[Functions]
[exact]
type = ParsedFunction
expression = 'sin(x)*cos(y)'
[]
[forcing]
type = ParsedFunction
expression = '-2*a*sin(x)*sin(y) + a*cos(x)*cos(y) + 2*diff*sin(x)*cos(y) + sin(x)*cos(y)'
symbol_names = 'a diff'
symbol_values = '${a} ${diff}'
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_factor_shift_type -sub_pc_type'
petsc_options_value = 'asm NONZERO lu'
[]
[Outputs]
exodus = true
csv = true
[]
[Postprocessors]
[error]
type = ElementL2Error
variable = v
function = exact
outputs = 'console csv'
execute_on = 'timestep_end'
[]
[h]
type = AverageElementSize
outputs = 'console csv'
execute_on = 'timestep_end'
[]
[]
(modules/navier_stokes/test/tests/finite_volume/cns/mms/1d-with-bcs/straight-channel-hllc.i)
[GlobalParams]
fp = fp
[]
[Mesh]
[./gen_mesh]
type = CartesianMeshGenerator
dim = 1
dx = '.1 .1 .1 .1 .1 .5 .1 .1 .1 .1 .1'
# dx = '.1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1'
[../]
[]
[FluidProperties]
[fp]
type = IdealGasFluidProperties
[]
[]
[Variables]
[rho]
type = MooseVariableFVReal
initial_condition = 1.28969
scaling = 1e3
[]
[rho_u]
type = MooseVariableFVReal
initial_condition = 1.28969
[]
[rho_et]
type = MooseVariableFVReal
initial_condition = 2.525e5
scaling = 1e-2
[]
[]
[FVKernels]
[mass_advection]
type = CNSFVMassHLLC
variable = rho
fp = fp
[]
[momentum_x_advection]
type = CNSFVMomentumHLLC
variable = rho_u
momentum_component = x
fp = fp
[]
[drag]
type = FVReaction
variable = rho_u
rate = 1000
[]
[fluid_energy_advection]
type = CNSFVFluidEnergyHLLC
variable = rho_et
fp = fp
[]
[]
[FVBCs]
[mass_in]
variable = rho
type = CNSFVHLLCSpecifiedMassFluxAndTemperatureMassBC
boundary = left
temperature = 273.15
rhou = 1.28969
[]
[momentum_in]
variable = rho_u
type = CNSFVHLLCSpecifiedMassFluxAndTemperatureMomentumBC
boundary = left
temperature = 273.15
rhou = 1.28969
momentum_component = 'x'
[]
[energy_in]
variable = rho_et
type = CNSFVHLLCSpecifiedMassFluxAndTemperatureFluidEnergyBC
boundary = left
temperature = 273.15
rhou = 1.28969
[]
[mass_out]
variable = rho
type = CNSFVHLLCSpecifiedPressureMassBC
boundary = right
pressure = 1.01e5
[]
[momentum_out]
variable = rho_u
type = CNSFVHLLCSpecifiedPressureMomentumBC
boundary = right
pressure = 1.01e5
momentum_component = 'x'
[]
[energy_out]
variable = rho_et
type = CNSFVHLLCSpecifiedPressureFluidEnergyBC
boundary = right
pressure = 1.01e5
[]
[]
[Materials]
[var_mat]
type = ConservedVarValuesMaterial
rho = rho
rhou = rho_u
rho_et = rho_et
[]
[]
[Executioner]
solve_type = NEWTON
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_max_its = 50
line_search = none
[]
[Outputs]
exodus = true
csv = true
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/fvkernels/mms/grad-reconstruction/rz.i)
a=1.1
diff=1.1
[Mesh]
[./gen_mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 2
xmax = 3
ymin = 0
ymax = 1
nx = 2
ny = 2
[../]
[]
[Problem]
coord_type = 'RZ'
[]
[Variables]
[./v]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 1
[../]
[]
[FVKernels]
[./advection]
type = FVElementalAdvection
variable = v
velocity = '${a} ${a} 0'
[../]
[reaction]
type = FVReaction
variable = v
[]
[diff_v]
type = FVDiffusion
variable = v
coeff = ${diff}
[]
[body_v]
type = FVBodyForce
variable = v
function = 'forcing'
[]
[]
[FVBCs]
[diri]
type = FVFunctionDirichletBC
boundary = 'left right top bottom'
function = 'exact'
variable = v
[]
[]
[Functions]
[exact]
type = ParsedFunction
expression = 'sin(x)*cos(y)'
[]
[forcing]
type = ParsedFunction
expression = '-a*sin(x)*sin(y) + diff*sin(x)*cos(y) + sin(x)*cos(y) + (x*a*cos(x)*cos(y) + a*sin(x)*cos(y))/x - (-x*diff*sin(x)*cos(y) + diff*cos(x)*cos(y))/x'
symbol_names = 'a diff'
symbol_values = '${a} ${diff}'
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_factor_shift_type -sub_pc_type'
petsc_options_value = 'asm NONZERO lu'
[]
[Outputs]
exodus = true
csv = true
[]
[Postprocessors]
[./error]
type = ElementL2Error
variable = v
function = exact
outputs = 'console csv'
execute_on = 'timestep_end'
[../]
[h]
type = AverageElementSize
outputs = 'console csv'
execute_on = 'timestep_end'
[]
[]
(test/tests/mortar/convergence-studies/fv-gap-conductance/gap-conductance.i)
[Problem]
error_on_jacobian_nonzero_reallocation = true
[]
[Mesh]
[left_block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 2
ny = 2
elem_type = QUAD4
[]
[left_block_sidesets]
type = RenameBoundaryGenerator
input = left_block
old_boundary = '0 1 2 3'
new_boundary = 'lb_bottom lb_right lb_top lb_left'
[]
[left_block_id]
type = SubdomainIDGenerator
input = left_block_sidesets
subdomain_id = 1
[]
[right_block]
type = GeneratedMeshGenerator
dim = 2
xmin = 2
xmax = 3
ymin = 0
ymax = 1
nx = 2
ny = 2
elem_type = QUAD4
[]
[right_block_id]
type = SubdomainIDGenerator
input = right_block
subdomain_id = 2
[]
[right_block_change_boundary_id]
type = RenameBoundaryGenerator
input = right_block_id
old_boundary = '0 1 2 3'
new_boundary = '100 101 102 103'
[]
[combined]
type = MeshCollectionGenerator
inputs = 'left_block_id right_block_change_boundary_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'left_block right_block'
[]
[right_right_sideset]
type = SideSetsAroundSubdomainGenerator
input = block_rename
new_boundary = rb_right
block = right_block
normal = '1 0 0'
[]
[right_left_sideset]
type = SideSetsAroundSubdomainGenerator
input = right_right_sideset
new_boundary = rb_left
block = right_block
normal = '-1 0 0'
[]
[right_top_sideset]
type = SideSetsAroundSubdomainGenerator
input = right_left_sideset
new_boundary = rb_top
block = right_block
normal = '0 1 0'
[]
[right_bottom_sideset]
type = SideSetsAroundSubdomainGenerator
input = right_top_sideset
new_boundary = rb_bottom
block = right_block
normal = '0 -1 0'
[]
[secondary]
input = right_bottom_sideset
type = LowerDBlockFromSidesetGenerator
sidesets = 'lb_right'
new_block_id = '10001'
new_block_name = 'secondary_lower'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'rb_left'
new_block_id = '10000'
new_block_name = 'primary_lower'
[]
[]
[Variables]
[T]
block = 'left_block right_block'
type = MooseVariableFVReal
[]
[lambda]
block = 'secondary_lower'
family = MONOMIAL
order = CONSTANT
[]
[]
[FVBCs]
[neumann]
type = FVFunctionDirichletBC
function = exact_soln_primal
variable = T
boundary = 'lb_bottom lb_top lb_left rb_bottom rb_right rb_top'
[]
[]
[FVKernels]
[conduction]
type = FVDiffusion
variable = T
block = 'left_block right_block'
coeff = 1
[]
[sink]
type = FVReaction
variable = T
block = 'left_block right_block'
[]
[forcing_function]
type = FVBodyForce
variable = T
function = forcing_function
block = 'left_block right_block'
[]
[]
[Functions]
[forcing_function]
type = ParsedFunction
expression = ''
[]
[exact_soln_primal]
type = ParsedFunction
expression = ''
[]
[exact_soln_lambda]
type = ParsedFunction
expression = ''
[]
[mms_secondary]
type = ParsedFunction
expression = ''
[]
[mms_primary]
type = ParsedFunction
expression = ''
[]
[]
[Constraints]
[mortar]
type = GapHeatConductanceTest
primary_boundary = rb_left
secondary_boundary = lb_right
primary_subdomain = primary_lower
secondary_subdomain = secondary_lower
secondary_variable = T
variable = lambda
secondary_gap_conductance = 1
primary_gap_conductance = 1
secondary_mms_function = mms_secondary
primary_mms_function = mms_primary
[]
[]
[Executioner]
solve_type = NEWTON
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
csv = true
[]
[Postprocessors]
[L2lambda]
type = ElementL2Error
variable = lambda
function = exact_soln_lambda
execute_on = 'timestep_end'
block = 'secondary_lower'
[]
[L2u]
type = ElementL2Error
variable = T
function = exact_soln_primal
execute_on = 'timestep_end'
block = 'left_block right_block'
[]
[h]
type = AverageElementSize
block = 'left_block right_block'
[]
[]
(test/tests/fvkernels/mms/skewness-correction/adv-diff-react/skewed.i)
a=1.1
diff=1.1
[Mesh]
[gen_mesh]
type = FileMeshGenerator
file = skewed.msh
[]
[]
[Variables]
[v]
initial_condition = 1
type = MooseVariableFVReal
face_interp_method = 'skewness-corrected'
[]
[]
[FVKernels]
[diff_v]
type = FVDiffusion
variable = v
coeff = ${diff}
[]
[advection]
type = FVAdvection
variable = v
velocity = '${a} ${fparse 2*a} 0'
advected_interp_method = 'average'
[]
[reaction]
type = FVReaction
variable = v
[]
[body_v]
type = FVBodyForce
variable = v
function = 'forcing'
[]
[]
[FVBCs]
[exact]
type = FVFunctionDirichletBC
boundary = 'left right top bottom'
function = 'exact'
variable = v
[]
[]
[Functions]
[exact]
type = ParsedFunction
expression = 'sin(x)*cos(y)'
[]
[forcing]
type = ParsedFunction
expression = '-2*a*sin(x)*sin(y) + a*cos(x)*cos(y) + 2*diff*sin(x)*cos(y) + sin(x)*cos(y)'
symbol_names = 'a diff'
symbol_values = '${a} ${diff}'
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
csv = true
[]
[Postprocessors]
[./error]
type = ElementL2Error
variable = v
function = exact
outputs = 'console csv'
[../]
[h]
type = AverageElementSize
outputs = 'console csv'
[]
[]
(test/tests/fvkernels/mms/grad-reconstruction/cartesian.i)
a=1.1
diff=1.1
[Mesh]
[./gen_mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 2
ny = 2
[../]
[]
[Variables]
[./v]
family = MONOMIAL
order = CONSTANT
fv = true
initial_condition = 1
[../]
[]
[FVKernels]
[./advection]
type = FVElementalAdvection
variable = v
velocity = '${a} ${fparse 2 * a} 0'
[../]
[reaction]
type = FVReaction
variable = v
[]
[diff_v]
type = FVDiffusion
variable = v
coeff = ${diff}
[]
[body_v]
type = FVBodyForce
variable = v
function = 'forcing'
[]
[]
[FVBCs]
[diri]
type = FVFunctionDirichletBC
boundary = 'left right top bottom'
function = 'exact'
variable = v
[]
[]
[Functions]
[exact]
type = ParsedFunction
expression = 'sin(x)*cos(y)'
[]
[forcing]
type = ParsedFunction
expression = '-2*a*sin(x)*sin(y) + a*cos(x)*cos(y) + 2*diff*sin(x)*cos(y) + sin(x)*cos(y)'
symbol_names = 'a diff'
symbol_values = '${a} ${diff}'
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_factor_shift_type -sub_pc_type'
petsc_options_value = 'asm NONZERO lu'
[]
[Outputs]
exodus = true
csv = true
[]
[Postprocessors]
[./error]
type = ElementL2Error
variable = v
function = exact
outputs = 'console csv'
execute_on = 'timestep_end'
[../]
[h]
type = AverageElementSize
outputs = 'console csv'
execute_on = 'timestep_end'
[]
[]