20 params.
addRequiredParam<SolverVariableName>(
"u",
"The velocity in the x direction.");
21 params.
addParam<SolverVariableName>(
"v",
"The velocity in the y direction.");
22 params.
addParam<SolverVariableName>(
"w",
"The velocity in the z direction.");
23 MooseEnum momentum_component(
"x=0 y=1 z=2");
27 "The component of the momentum equation that this kernel applies to.");
34 _dim(_subproblem.
mesh().dimension()),
36 &_fv_problem.getVariable(_tid, getParam<SolverVariableName>(
"u")))),
37 _v_var(parameters.isParamValid(
"v")
39 &_fv_problem.getVariable(_tid, getParam<SolverVariableName>(
"v")))
41 _w_var(parameters.isParamValid(
"w")
43 &_fv_problem.getVariable(_tid, getParam<SolverVariableName>(
"w")))
45 _index(getParam<
MooseEnum>(
"momentum_component"))
48 paramError(
"u",
"the u velocity must be a MooseLinearVariableFVReal.");
54 "In two or more dimensions, the v velocity must be supplied and it must be a " 55 "MooseLinearVariableFVReal.");
61 "In three-dimensions, the w velocity must be supplied and it must be a " 62 "MooseLinearVariableFVReal.");
77 auto reflected_boundary_value = boundary_value;
81 scaled_normal *= 2 * scaled_normal(
_index);
84 reflected_boundary_value -=
87 return 0.5 * (boundary_value + reflected_boundary_value);
98 Real boundary_normal_grad = 0.0;
102 scaled_normal *= scaled_normal(
_index);
105 boundary_normal_grad +=
117 const auto normal_component_sq = normal_component * normal_component;
118 return 1.0 - normal_component_sq;
131 scaled_normal *= scaled_normal(
_index);
135 const auto normal_component_sq = normal_component * normal_component;
137 return current_bd_value -
146 const auto normal_component_sq = normal_component * normal_component;
163 const auto normal_component_sq = normal_component * normal_component;
Class implementing a symmetry boundary condition for the velocity variable.
void paramError(const std::string ¶m, Args... args) const
Real computeCellToFaceDistance() const
virtual Real computeBoundaryValue() const override
Overriding all of these.
const MooseLinearVariableFVReal *const _u_var
Velocity in direction x.
virtual Real computeBoundaryGradientRHSContribution() const override
Moose::StateArg determineState() const
const ElemInfo * neighborInfo() const
LinearFVVelocitySymmetryBC(const InputParameters ¶meters)
Class constructor.
const ElemInfo * elemInfo() const
virtual Real computeBoundaryGradientMatrixContribution() const override
registerMooseObject("NavierStokesApp", LinearFVVelocitySymmetryBC)
static InputParameters validParams()
FaceInfo::VarFaceNeighbors _current_face_type
const Point & normal() const
std::vector< const MooseLinearVariableFVReal * > _vel_vars
For convenience we organize the velocity variables in a vector.
MooseLinearVariableFV< Real > & _var
const unsigned int _dim
The dimension of the mesh.
const MooseLinearVariableFVReal *const _v_var
Velocity in direction y.
virtual Real computeBoundaryValueMatrixContribution() const override
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const FaceInfo * _current_face_info
virtual Real computeBoundaryValueRHSContribution() const override
Real getElemValue(const ElemInfo &elem_info, const StateArg &state) const
IntRange< T > make_range(T beg, T end)
const MooseLinearVariableFVReal *const _w_var
Velocity in direction z.
static InputParameters validParams()
virtual Real computeBoundaryNormalGradient() const override
const unsigned int _index
Index x|y|z, this is mainly to handle the deviatoric parts correctly in in the stress term...