11 #include "MooseMesh.h"
12 #include "MooseVariable.h"
13 #include "SystemBase.h"
14 #include "FEProblemBase.h"
15 #include "libmesh/numeric_vector.h"
23 InputParameters params = validParams<NodalNormalBC>();
24 params.addRequiredCoupledVar(
"rho_u",
"x-component of velocity");
25 params.addCoupledVar(
"rho_v",
"y-component of velocity");
26 params.addCoupledVar(
"rho_w",
"z-component of velocity");
32 : NodalNormalBC(parameters),
33 _mesh_dimension(_mesh.dimension()),
34 _rho_u(coupledValue(
"rho_u")),
35 _rho_v(_mesh_dimension >= 2 ? coupledValue(
"rho_v") : _zero),
36 _rho_w(_mesh_dimension >= 3 ? coupledValue(
"rho_w") : _zero)
46 return !_fe_problem.currentlyComputingJacobian();
52 for (
auto tag : _vector_tags)
53 if (_sys.hasVector(tag) && _var.isNodalDefined())
55 auto & residual = _sys.getVector(tag);
59 mooseError(
name(),
": Not implemented yet");
63 MooseVariable & rho_u_var = *getVar(
"rho_u", 0);
64 auto && rho_u_dof_idx = rho_u_var.nodalDofIndex();
66 MooseVariable & rho_v_var = *getVar(
"rho_v", 0);
67 auto && rho_v_dof_idx = rho_v_var.nodalDofIndex();
69 Real rho_un = _normal(0) *
_rho_u[0] + _normal(1) *
_rho_v[0];
70 Real Re_u = residual(rho_u_dof_idx);
71 Real Re_v = residual(rho_v_dof_idx);
83 (Re_u * _normal(1) * _normal(1) - Re_v * _normal(0) * _normal(1)) + rho_un * _normal(0);
84 Real rho_v_val = (-Re_u * _normal(0) * _normal(1) + Re_v * _normal(0) * _normal(0)) +
89 residual.set(rho_u_dof_idx, rho_u_val);
90 residual.set(rho_v_dof_idx, rho_v_val);
94 mooseError(
name(),
": Not implemented yet");