- variableThe name of the variable that this residual object operates on
C++ Type:NonlinearVariableName
Description:The name of the variable that this residual object operates on
VectorDiffusion
Description
VectorDiffusion
is analogous to Diffusion
except it is applied to vector finite element variables.
Input Parameters
- blockThe list of block ids (SubdomainID) that this object will be applied
C++ Type:std::vector<SubdomainName>
Options:
Description:The list of block ids (SubdomainID) that this object will be applied
- displacementsThe displacements
C++ Type:std::vector<VariableName>
Options:
Description:The displacements
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.
- diag_save_inThe name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
C++ Type:std::vector<AuxVariableName>
Options:
Description:The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
- 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
- save_inThe name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
C++ Type:std::vector<AuxVariableName>
Options:
Description:The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Options:
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
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/ins/coupled-force/gravity-object.i)
- (test/tests/interfacekernels/ad_coupled_vector_value/coupled.i)
- (modules/navier_stokes/test/tests/ins/coupled-force/steady-action.i)
- (test/tests/auxkernels/vector_variable_nodal/vector_variable_nodal.i)
- (test/tests/kernels/vector_fe/lagrange_vec_1d.i)
- (modules/navier_stokes/test/tests/ins/coupled-force/steady-action-function.i)
- (test/tests/kernels/transient_vector_diffusion/transient_vector_diffusion.i)
- (test/tests/kernels/coupled_time_derivative/vector_coupled_time_derivative_test.i)
- (modules/navier_stokes/test/tests/ins/coupled-force/gravity-through-coupled-force-action.i)
- (test/tests/kernels/vector_fe/coupled_vector_gradient.i)
- (modules/navier_stokes/test/tests/ins/coupled-force/gravity-through-coupled-force.i)
- (test/tests/kernels/vector_fe/lagrange_vec.i)
- (modules/navier_stokes/test/tests/ins/coupled-force/steady.i)
- (test/tests/misc/check_error/vector_kernel_with_standard_var.i)
- (modules/navier_stokes/test/tests/ins/coupled-force/steady-function.i)
Child Objects
(modules/navier_stokes/test/tests/ins/coupled-force/gravity-object.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1.0
ymin = 0
ymax = 1.0
nx = 16
ny = 16
[]
[./corner_node]
type = ExtraNodesetGenerator
new_boundary = 'pinned_node'
nodes = '0'
input = gen
[../]
[]
[Variables]
[./velocity]
family = LAGRANGE_VEC
[../]
[./p]
[../]
[u]
family = LAGRANGE_VEC
[]
[]
[ICs]
[velocity]
type = VectorConstantIC
x_value = 1e-15
y_value = 1e-15
variable = velocity
[]
[]
[Kernels]
[./mass]
type = INSADMass
variable = p
[../]
[./mass_pspg]
type = INSADMassPSPG
variable = p
[../]
[./momentum_convection]
type = INSADMomentumAdvection
variable = velocity
[../]
[./momentum_viscous]
type = INSADMomentumViscous
variable = velocity
[../]
[./momentum_pressure]
type = INSADMomentumPressure
variable = velocity
p = p
integrate_p_by_parts = true
[../]
[momentum_coupled_force]
type = INSADMomentumCoupledForce
variable = velocity
coupled_vector_var = u
[]
[gravity]
type = INSADGravityForce
variable = velocity
gravity = '0 -9.81 0'
[]
[./momentum_supg]
type = INSADMomentumSUPG
variable = velocity
velocity = velocity
[../]
[u_diff]
type = VectorDiffusion
variable = u
[]
[]
[BCs]
[./no_slip]
type = VectorFunctionDirichletBC
variable = velocity
boundary = 'bottom right left top'
[../]
[./pressure_pin]
type = DirichletBC
variable = p
boundary = 'pinned_node'
value = 0
[../]
[u_left]
type = VectorFunctionDirichletBC
variable = u
boundary = 'left'
function_x = 1
function_y = 1
[]
[u_right]
type = VectorFunctionDirichletBC
variable = u
boundary = 'right'
function_x = -1
function_y = -1
[]
[]
[Materials]
[./const]
type = ADGenericConstantMaterial
prop_names = 'rho mu'
prop_values = '1 1'
[../]
[ins_mat]
type = INSADTauMaterial
velocity = velocity
pressure = p
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_factor_levels -ksp_gmres_restart'
petsc_options_value = 'asm 6 200'
line_search = 'none'
nl_rel_tol = 1e-12
nl_max_its = 6
[]
[Outputs]
exodus = true
[]
(test/tests/interfacekernels/ad_coupled_vector_value/coupled.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
nx = 20
xmax = 2
[]
[./subdomain1]
input = gen
type = SubdomainBoundingBoxGenerator
bottom_left = '1.0 0 0'
block_id = 1
top_right = '2.0 1.0 0'
[../]
[./interface]
input = subdomain1
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'primary0_interface'
[../]
[]
[Variables]
[./u]
block = '0'
family = LAGRANGE_VEC
[../]
[./v]
block = '1'
family = LAGRANGE_VEC
[../]
[w]
family = LAGRANGE_VEC
[]
[]
[Kernels]
[./diff_u]
type = VectorDiffusion
variable = u
block = 0
[../]
[./diff_v]
type = VectorDiffusion
variable = v
block = 1
[../]
[diff_w]
type = VectorDiffusion
variable = w
[]
[]
[InterfaceKernels]
[./interface]
type = ADVectorCoupledInterfacialSource
variable = u
neighbor_var = v
var_source = w
boundary = primary0_interface
D = 1
D_neighbor = 1
[../]
[]
[BCs]
[./left]
type = VectorDirichletBC
variable = u
boundary = 'left'
values = '0 0 0'
[../]
[./right]
type = VectorDirichletBC
variable = v
boundary = 'right'
values = '10 0 0'
[../]
[./middle]
type = ADVectorMatchedValueBC
variable = v
boundary = 'primary0_interface'
v = u
[../]
[w_left]
type = VectorDirichletBC
variable = w
boundary = 'left'
values = '0 0 0'
[]
[w_right]
type = VectorDirichletBC
variable = w
boundary = 'right'
values = '4 0 0'
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
[]
[Outputs]
exodus = true
[]
(modules/navier_stokes/test/tests/ins/coupled-force/steady-action.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1.0
ymin = 0
ymax = 1.0
nx = 16
ny = 16
[]
[]
[Variables]
[u]
family = LAGRANGE_VEC
[]
[]
[Modules]
[IncompressibleNavierStokes]
equation_type = steady-state
velocity_boundary = 'bottom right top left'
velocity_function = '0 0 0 0 0 0 0 0'
add_standard_velocity_variables_for_ad = false
pressure_pinned_node = 0
density_name = rho
dynamic_viscosity_name = mu
use_ad = true
laplace = true
family = LAGRANGE
order = FIRST
supg = true
pspg = true
has_coupled_force = true
coupled_force_var = u
[]
[]
[Kernels]
[u_diff]
type = VectorDiffusion
variable = u
[]
[]
[BCs]
[u_left]
type = VectorFunctionDirichletBC
variable = u
boundary = 'left'
function_x = 1
function_y = 1
[]
[u_right]
type = VectorFunctionDirichletBC
variable = u
boundary = 'right'
function_x = -1
function_y = -1
[]
[]
[Materials]
[const]
type = ADGenericConstantMaterial
prop_names = 'rho mu'
prop_values = '1 1'
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_factor_levels -ksp_gmres_restart'
petsc_options_value = 'asm 6 200'
line_search = 'none'
nl_rel_tol = 1e-12
nl_max_its = 6
[]
[Outputs]
exodus = true
[]
(test/tests/auxkernels/vector_variable_nodal/vector_variable_nodal.i)
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -1
xmax = 1
ymin = -1
ymax = 1
zmin = -1
zmax = 1
nx = 2
ny = 2
nz = 2
[../]
[Variables]
[./u]
family = LAGRANGE_VEC
order = first
[../]
[]
[Kernels]
[./none]
type = VectorDiffusion
variable = u
[../]
[]
[BCs]
[./left]
type = VectorDirichletBC
variable = u
boundary = left
values = '0 0 0'
[../]
[./right]
type = VectorDirichletBC
variable = u
boundary = right
values = '1 2 3'
[../]
[]
[AuxVariables]
[./u_mag]
[../]
[]
[AuxKernels]
[./calc_u_mag]
type = VectorVariableMagnitudeAux
variable = u_mag # the auxvariable to compute
vector_variable = u # vector variable to compute from
execute_on = 'initial timestep_end'
[../]
[]
[Executioner]
type = Steady
[]
[Outputs]
exodus = true
[]
(test/tests/kernels/vector_fe/lagrange_vec_1d.i)
# This example reproduces the libmesh vector_fe example 1 results
[Mesh]
type = GeneratedMesh
dim = 1
nx = 15
xmin = -1
elem_type = EDGE3
[]
[Variables]
[./u]
family = LAGRANGE_VEC
order = SECOND
[../]
[]
[Kernels]
[./diff]
type = VectorDiffusion
variable = u
[../]
[./body_force]
type = VectorBodyForce
variable = u
function_x = 'ffx'
[../]
[]
[BCs]
[./bnd]
type = VectorFunctionDirichletBC
variable = u
function_x = 'x_exact_sln'
boundary = 'left right'
[../]
[]
[Functions]
[./x_exact_sln]
type = ParsedFunction
value = 'cos(.5*pi*x)'
[../]
[./ffx]
type = ParsedFunction
value = '.25*pi*pi*cos(.5*pi*x)'
[../]
[]
[Preconditioning]
[./pre]
type = SMP
[../]
[]
[Executioner]
type = Steady
solve_type = NEWTON
[]
[Outputs]
exodus = true
[]
(modules/navier_stokes/test/tests/ins/coupled-force/steady-action-function.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1.0
ymin = 0
ymax = 1.0
nx = 16
ny = 16
[]
[]
[Variables]
[u]
family = LAGRANGE_VEC
[]
[]
[Modules]
[IncompressibleNavierStokes]
equation_type = steady-state
velocity_boundary = 'bottom right top left'
velocity_function = '0 0 0 0 0 0 0 0'
add_standard_velocity_variables_for_ad = false
pressure_pinned_node = 0
density_name = rho
dynamic_viscosity_name = mu
use_ad = true
laplace = true
family = LAGRANGE
order = FIRST
supg = true
pspg = true
has_coupled_force = true
coupled_force_vector_function = 'vector_func'
[]
[]
[Kernels]
[u_diff]
type = VectorDiffusion
variable = u
[]
[]
[BCs]
[u_left]
type = VectorFunctionDirichletBC
variable = u
boundary = 'left'
function_x = 1
function_y = 1
[]
[u_right]
type = VectorFunctionDirichletBC
variable = u
boundary = 'right'
function_x = -1
function_y = -1
[]
[]
[Materials]
[const]
type = ADGenericConstantMaterial
prop_names = 'rho mu'
prop_values = '1 1'
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_factor_levels -ksp_gmres_restart'
petsc_options_value = 'asm 6 200'
line_search = 'none'
nl_rel_tol = 1e-12
nl_max_its = 6
[]
[Outputs]
exodus = true
[]
[Functions]
[vector_func]
type = ParsedVectorFunction
value_x = '-2*x + 1'
value_y = '-2*x + 1'
[]
[]
(test/tests/kernels/transient_vector_diffusion/transient_vector_diffusion.i)
[Mesh]
[./generator]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
[../]
[./block1]
type = SubdomainBoundingBoxGenerator
input = generator
bottom_left = '0 0 -1'
top_right = '1 1 1'
block_id = 1
[../]
[./block2]
type = SubdomainBoundingBoxGenerator
input = block1
bottom_left = '0.33 0.33 -1'
top_right = '0.67 0.67 1'
block_id = 2
[../]
[]
[Variables]
[./u]
family = LAGRANGE_VEC
[../]
[]
[ICs]
[./u]
type = VectorConstantIC
variable = u
x_value = 1
y_value = 2
z_value = 3
block = 2
[../]
[]
[Kernels]
[./diff]
type = VectorDiffusion
variable = u
[../]
[./time]
type = VectorTimeDerivative
variable = u
[../]
[]
[Executioner]
type = Transient
num_steps = 20
dt = 0.01
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
(test/tests/kernels/coupled_time_derivative/vector_coupled_time_derivative_test.i)
###########################################################
# This is a simple test of the VectorCoupledTimeDerivative kernel.
# The expected solution for the vector variable v is
# v_x(x) = 1/2 * (x^2 + x)
# v_y(x) = 1/2 * (x^2 + x)
###########################################################
[Mesh]
type = GeneratedMesh
nx = 5
ny = 5
dim = 2
[]
[Variables]
[./u]
family = LAGRANGE_VEC
[../]
[./v]
family = LAGRANGE_VEC
[../]
[]
[Kernels]
[./time_u]
type = VectorTimeDerivative
variable = u
[../]
[./fn_u]
type = VectorBodyForce
variable = u
function_x = 1
function_y = 1
[../]
[./time_v]
type = VectorCoupledTimeDerivative
variable = v
v = u
[../]
[./diff_v]
type = VectorDiffusion
variable = v
[../]
[]
[BCs]
[./left]
type = VectorDirichletBC
variable = v
boundary = 'left'
values = '0 0 0'
[../]
[./right]
type = VectorDirichletBC
variable = v
boundary = 'right'
values = '1 1 0'
[../]
[]
[Executioner]
type = Transient
num_steps = 1
solve_type = 'NEWTON'
[]
[Outputs]
exodus = true
[]
(modules/navier_stokes/test/tests/ins/coupled-force/gravity-through-coupled-force-action.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1.0
ymin = 0
ymax = 1.0
nx = 16
ny = 16
[]
[]
[Variables]
[u]
family = LAGRANGE_VEC
[]
[]
[AuxVariables]
[gravity]
family = LAGRANGE_VEC
[]
[]
[ICs]
[gravity]
type = VectorConstantIC
x_value = '0'
y_value = '-9.81'
variable = gravity
[]
[]
[Modules]
[IncompressibleNavierStokes]
equation_type = steady-state
velocity_boundary = 'bottom right top left'
velocity_function = '0 0 0 0 0 0 0 0'
add_standard_velocity_variables_for_ad = false
pressure_pinned_node = 0
density_name = rho
dynamic_viscosity_name = mu
use_ad = true
laplace = true
family = LAGRANGE
order = FIRST
supg = true
pspg = true
has_coupled_force = true
[]
[]
[Kernels]
[u_diff]
type = VectorDiffusion
variable = u
[]
[]
[BCs]
[u_left]
type = VectorFunctionDirichletBC
variable = u
boundary = 'left'
function_x = 1
function_y = 1
[]
[u_right]
type = VectorFunctionDirichletBC
variable = u
boundary = 'right'
function_x = -1
function_y = -1
[]
[]
[Materials]
[const]
type = ADGenericConstantMaterial
prop_names = 'rho mu'
prop_values = '1 1'
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_factor_levels -ksp_gmres_restart'
petsc_options_value = 'asm 6 200'
line_search = 'none'
nl_rel_tol = 1e-12
nl_max_its = 6
[]
[Outputs]
[out]
type = Exodus
hide = 'gravity'
[]
[]
[Functions]
[vector_func]
type = ParsedVectorFunction
value_x = '-2*x + 1'
value_y = '-2*x + 1'
[]
[vector_gravity_func]
type = ParsedVectorFunction
value_x = '0'
value_y = '-9.81'
[]
[]
(test/tests/kernels/vector_fe/coupled_vector_gradient.i)
# This example demonstrates ability to set Dirichlet boundary conditions for LAGRANGE_VEC variables
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
family = LAGRANGE_VEC
order = FIRST
[../]
[./v]
family = LAGRANGE_VEC
order = FIRST
[../]
[./w]
family = LAGRANGE_VEC
order = FIRST
[../]
[./s]
family = LAGRANGE_VEC
order = FIRST
[../]
[./q]
[../]
[]
[Kernels]
[./u_diff]
type = VectorDiffusion
variable = u
[../]
[./v_diff]
type = VectorDiffusion
variable = v
[../]
[./w_diff]
type = VectorDiffusion
variable = w
[../]
[./s_diff]
type = VectorDiffusion
variable = s
[../]
[./v_coupled_diff]
type = CoupledVectorDiffusion
variable = v
v = u
[../]
[./w_coupled_diff]
type = CoupledVectorDiffusion
variable = w
v = u
state = old
[../]
[./s_coupled_diff]
type = CoupledVectorDiffusion
variable = s
v = u
state = older
[../]
[./q_diff]
type = Diffusion
variable = q
[../]
[]
[BCs]
[./left_u]
type = VectorDirichletBC
variable = u
values = '0 0 0'
boundary = 'left'
[../]
[./left_v]
type = VectorDirichletBC
variable = v
values = '0 0 0'
boundary = 'left'
[../]
[./left_w]
type = VectorDirichletBC
variable = w
values = '0 0 0'
boundary = 'left'
[../]
[./left_s]
type = VectorDirichletBC
variable = s
values = '0 0 0'
boundary = 'left'
[../]
[./right_u]
type = VectorFunctionDirichletBC
variable = u
boundary = 'right'
function_x = 'x_exact'
function_y = 'y_exact'
[../]
[./right_v]
type = VectorFunctionDirichletBC
variable = v
boundary = 'right'
function_x = 'x_exact'
function_y = 'y_exact'
[../]
[./right_w]
type = VectorFunctionDirichletBC
variable = w
boundary = 'right'
function_x = 'x_exact_old'
function_y = 'y_exact_old'
[../]
[./right_s]
type = VectorFunctionDirichletBC
variable = s
boundary = 'right'
function_x = 'x_exact_older'
function_y = 'y_exact_older'
[../]
[./left_q]
type = DirichletBC
variable = q
boundary = 'left'
value = 1
[../]
[./right_q]
type = NeumannBC
variable = q
boundary = 'right'
value = 1
[../]
[]
[Functions]
[./x_exact]
type = ParsedFunction
value = 't'
[../]
[./y_exact]
type = ParsedFunction
value = 't'
[../]
[./x_exact_old]
type = ParsedFunction
value = 'if(t < 1, 0, t - 1)'
[../]
[./y_exact_old]
type = ParsedFunction
value = 'if(t < 1, 0, t - 1)'
[../]
[./x_exact_older]
type = ParsedFunction
value = 'if(t < 2, 0, t - 2)'
[../]
[./y_exact_older]
type = ParsedFunction
value = 'if(t < 2, 0, t - 2)'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 1
num_steps = 3
solve_type = 'NEWTON'
petsc_options = '-ksp_converged_reason -snes_converged_reason'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '100'
nl_max_its = 3
l_max_its = 100
dtmin = 1
[]
[Outputs]
exodus = true
[]
(modules/navier_stokes/test/tests/ins/coupled-force/gravity-through-coupled-force.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1.0
ymin = 0
ymax = 1.0
nx = 16
ny = 16
[]
[./corner_node]
type = ExtraNodesetGenerator
new_boundary = 'pinned_node'
nodes = '0'
input = gen
[../]
[]
[Variables]
[./velocity]
family = LAGRANGE_VEC
[../]
[./p]
[../]
[u]
family = LAGRANGE_VEC
[]
[]
[AuxVariables]
[gravity]
family = LAGRANGE_VEC
[]
[]
[ICs]
[velocity]
type = VectorConstantIC
x_value = 1e-15
y_value = 1e-15
variable = velocity
[]
[gravity]
type = VectorConstantIC
x_value = '0'
y_value = '-9.81'
variable = gravity
[]
[]
[Kernels]
inactive = 'momentum_coupled_forces_two_vars momentum_coupled_forces_two_funcs'
[./mass]
type = INSADMass
variable = p
[../]
[./mass_pspg]
type = INSADMassPSPG
variable = p
[../]
[./momentum_convection]
type = INSADMomentumAdvection
variable = velocity
[../]
[./momentum_viscous]
type = INSADMomentumViscous
variable = velocity
[../]
[./momentum_pressure]
type = INSADMomentumPressure
variable = velocity
p = p
integrate_p_by_parts = true
[../]
[momentum_coupled_forces_var_and_func]
type = INSADMomentumCoupledForce
variable = velocity
coupled_vector_var = u
vector_function = 'vector_gravity_func'
[]
[momentum_coupled_forces_two_vars]
type = INSADMomentumCoupledForce
variable = velocity
coupled_vector_var = 'u gravity'
[]
[momentum_coupled_forces_two_funcs]
type = INSADMomentumCoupledForce
variable = velocity
vector_function = 'vector_func vector_gravity_func'
[]
[./momentum_supg]
type = INSADMomentumSUPG
variable = velocity
velocity = velocity
[../]
[u_diff]
type = VectorDiffusion
variable = u
[]
[]
[BCs]
[./no_slip]
type = VectorFunctionDirichletBC
variable = velocity
boundary = 'bottom right left top'
[../]
[./pressure_pin]
type = DirichletBC
variable = p
boundary = 'pinned_node'
value = 0
[../]
[u_left]
type = VectorFunctionDirichletBC
variable = u
boundary = 'left'
function_x = 1
function_y = 1
[]
[u_right]
type = VectorFunctionDirichletBC
variable = u
boundary = 'right'
function_x = -1
function_y = -1
[]
[]
[Materials]
[./const]
type = ADGenericConstantMaterial
prop_names = 'rho mu'
prop_values = '1 1'
[../]
[ins_mat]
type = INSADTauMaterial
velocity = velocity
pressure = p
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_factor_levels -ksp_gmres_restart'
petsc_options_value = 'asm 6 200'
line_search = 'none'
nl_rel_tol = 1e-12
nl_max_its = 6
[]
[Outputs]
[out]
type = Exodus
hide = 'gravity'
[]
[]
[Functions]
[vector_func]
type = ParsedVectorFunction
value_x = '-2*x + 1'
value_y = '-2*x + 1'
[]
[vector_gravity_func]
type = ParsedVectorFunction
value_x = '0'
value_y = '-9.81'
[]
[]
(test/tests/kernels/vector_fe/lagrange_vec.i)
# This example reproduces the libmesh vector_fe example 1 results
[Mesh]
type = GeneratedMesh
dim = 2
nx = 15
ny = 15
xmin = -1
ymin = -1
elem_type = QUAD9
[]
[Variables]
[./u]
family = LAGRANGE_VEC
order = SECOND
[../]
[]
[Kernels]
[./diff]
type = VectorDiffusion
variable = u
[../]
[./body_force]
type = VectorBodyForce
variable = u
function_x = 'ffx'
function_y = 'ffy'
[../]
[]
[BCs]
[./bnd]
type = VectorFunctionDirichletBC
variable = u
function_x = 'x_exact_sln'
function_y = 'y_exact_sln'
function_z = '0'
boundary = 'left right top bottom'
[../]
[]
[Functions]
[./x_exact_sln]
type = ParsedFunction
value = 'cos(.5*pi*x)*sin(.5*pi*y)'
[../]
[./y_exact_sln]
type = ParsedFunction
value = 'sin(.5*pi*x)*cos(.5*pi*y)'
[../]
[./ffx]
type = ParsedFunction
value = '.5*pi*pi*cos(.5*pi*x)*sin(.5*pi*y)'
[../]
[./ffy]
type = ParsedFunction
value = '.5*pi*pi*sin(.5*pi*x)*cos(.5*pi*y)'
[../]
[]
[Preconditioning]
[./pre]
type = SMP
[../]
[]
[Executioner]
type = Steady
[]
[Outputs]
exodus = true
[]
(modules/navier_stokes/test/tests/ins/coupled-force/steady.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1.0
ymin = 0
ymax = 1.0
nx = 16
ny = 16
[]
[./corner_node]
type = ExtraNodesetGenerator
new_boundary = 'pinned_node'
nodes = '0'
input = gen
[../]
[]
[Variables]
[./velocity]
family = LAGRANGE_VEC
[../]
[./p]
[../]
[u]
family = LAGRANGE_VEC
[]
[]
[ICs]
[velocity]
type = VectorConstantIC
x_value = 1e-15
y_value = 1e-15
variable = velocity
[]
[]
[Kernels]
[./mass]
type = INSADMass
variable = p
[../]
[./mass_pspg]
type = INSADMassPSPG
variable = p
[../]
[./momentum_convection]
type = INSADMomentumAdvection
variable = velocity
[../]
[./momentum_viscous]
type = INSADMomentumViscous
variable = velocity
[../]
[./momentum_pressure]
type = INSADMomentumPressure
variable = velocity
p = p
integrate_p_by_parts = true
[../]
[momentum_coupled_force]
type = INSADMomentumCoupledForce
variable = velocity
coupled_vector_var = u
[]
[./momentum_supg]
type = INSADMomentumSUPG
variable = velocity
velocity = velocity
[../]
[u_diff]
type = VectorDiffusion
variable = u
[]
[]
[BCs]
[./no_slip]
type = VectorFunctionDirichletBC
variable = velocity
boundary = 'bottom right left top'
[../]
[./pressure_pin]
type = DirichletBC
variable = p
boundary = 'pinned_node'
value = 0
[../]
[u_left]
type = VectorFunctionDirichletBC
variable = u
boundary = 'left'
function_x = 1
function_y = 1
[]
[u_right]
type = VectorFunctionDirichletBC
variable = u
boundary = 'right'
function_x = -1
function_y = -1
[]
[]
[Materials]
[./const]
type = ADGenericConstantMaterial
prop_names = 'rho mu'
prop_values = '1 1'
[../]
[ins_mat]
type = INSADTauMaterial
velocity = velocity
pressure = p
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_factor_levels -ksp_gmres_restart'
petsc_options_value = 'asm 6 200'
line_search = 'none'
nl_rel_tol = 1e-12
nl_max_its = 6
[]
[Outputs]
exodus = true
[]
(test/tests/misc/check_error/vector_kernel_with_standard_var.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./diff]
type = VectorDiffusion
variable = u
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = 1
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = 2
value = 1
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Outputs]
file_base = out
exodus = true
[]
(modules/navier_stokes/test/tests/ins/coupled-force/steady-function.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1.0
ymin = 0
ymax = 1.0
nx = 16
ny = 16
[]
[./corner_node]
type = ExtraNodesetGenerator
new_boundary = 'pinned_node'
nodes = '0'
input = gen
[../]
[]
[Variables]
[./velocity]
family = LAGRANGE_VEC
[../]
[./p]
[../]
[u]
family = LAGRANGE_VEC
[]
[]
[ICs]
[velocity]
type = VectorConstantIC
x_value = 1e-15
y_value = 1e-15
variable = velocity
[]
[]
[Kernels]
[./mass]
type = INSADMass
variable = p
[../]
[./mass_pspg]
type = INSADMassPSPG
variable = p
[../]
[./momentum_convection]
type = INSADMomentumAdvection
variable = velocity
[../]
[./momentum_viscous]
type = INSADMomentumViscous
variable = velocity
[../]
[./momentum_pressure]
type = INSADMomentumPressure
variable = velocity
p = p
integrate_p_by_parts = true
[../]
[momentum_coupled_force]
type = INSADMomentumCoupledForce
variable = velocity
vector_function = 'vector_func'
[]
[./momentum_supg]
type = INSADMomentumSUPG
variable = velocity
velocity = velocity
[../]
[u_diff]
type = VectorDiffusion
variable = u
[]
[]
[BCs]
[./no_slip]
type = VectorFunctionDirichletBC
variable = velocity
boundary = 'bottom right left top'
[../]
[./pressure_pin]
type = DirichletBC
variable = p
boundary = 'pinned_node'
value = 0
[../]
[u_left]
type = VectorFunctionDirichletBC
variable = u
boundary = 'left'
function_x = 1
function_y = 1
[]
[u_right]
type = VectorFunctionDirichletBC
variable = u
boundary = 'right'
function_x = -1
function_y = -1
[]
[]
[Materials]
[./const]
type = ADGenericConstantMaterial
prop_names = 'rho mu'
prop_values = '1 1'
[../]
[ins_mat]
type = INSADTauMaterial
velocity = velocity
pressure = p
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_factor_levels -ksp_gmres_restart'
petsc_options_value = 'asm 6 200'
line_search = 'none'
nl_rel_tol = 1e-12
nl_max_its = 6
[]
[Outputs]
exodus = true
[]
[Functions]
[vector_func]
type = ParsedVectorFunction
value_x = '-2*x + 1'
value_y = '-2*x + 1'
[]
[]
(test/include/kernels/VectorCoefDiffusion.h)
// This file is part of the MOOSE framework
// https://www.mooseframework.org
//
// All rights reserved, see COPYRIGHT for full restrictions
// https://github.com/idaholab/moose/blob/master/COPYRIGHT
//
// Licensed under LGPL 2.1, please see LICENSE for details
// https://www.gnu.org/licenses/lgpl-2.1.html
#pragma once
#include "VectorDiffusion.h"
class VectorCoefDiffusion : public VectorDiffusion
{
public:
static InputParameters validParams();
VectorCoefDiffusion(const InputParameters & parameters);
protected:
virtual Real computeQpResidual() override;
virtual Real computeQpJacobian() override;
const Real & _coef;
};