24 "Represents the matrix and right hand side contributions of a "
25 "diffusion term for a turbulent variable in a partial differential equation.");
28 "scaling_coeff", 1.0,
"The scaling coefficient for the diffusion term.");
30 params.
addParam<std::vector<BoundaryName>>(
31 "walls", {},
"Boundaries that correspond to solid walls.");
37 _scaling_coeff(getFunctor<Real>(
"scaling_coeff")),
38 _wall_boundary_names(getParam<
std::vector<BoundaryName>>(
"walls"))
84 mooseAssert(diff_bc,
"This should be a valid BC!");
86 auto grad_contrib = diff_bc->computeBoundaryGradientMatrixContribution() *
_current_face_area;
89 if (!diff_bc->includesMaterialPropertyMultiplier())
103 mooseAssert(diff_bc,
"This should be a valid BC!");
107 auto grad_contrib = diff_bc->computeBoundaryGradientRHSContribution() *
_current_face_area;
111 if (!diff_bc->includesMaterialPropertyMultiplier())
118 const auto correction_vector =
172 "We should only have one boundary on every face.");
190 else if ((
_current_face_type == FaceInfo::VarFaceNeighbors::NEIGHBOR) && !(bounded_neigh))
192 const auto dof_id_neighbor =
236 "We should only have one boundary on every face.");
254 else if ((
_current_face_type == FaceInfo::VarFaceNeighbors::NEIGHBOR) && !(bounded_neigh))
256 const auto dof_id_neighbor =
registerMooseObject("NavierStokesApp", LinearFVTurbulentDiffusion)
bool hasBlocks(const SubdomainName &name) const
virtual const std::set< SubdomainID > & blockIDs() const
SubdomainID subdomain_id() const
const std::vector< std::vector< dof_id_type > > & dofIndices() const
Moose::FaceArg makeCDFace(const FaceInfo &fi, const bool correct_skewness=false) const
const Point & normal() const
const Point & eCN() const
const std::set< BoundaryID > & boundaryIDs() const
const Elem * neighborPtr() const
const ElemInfo * elemInfo() const
const ElemInfo * neighborInfo() const
const Elem * elemPtr() const
void setupFaceData(const FaceInfo *face_info, const FaceInfo::VarFaceNeighbors face_type)
const bool _use_nonorthogonal_correction
static InputParameters validParams()
Real computeFluxMatrixContribution()
Real computeFluxRHSContribution()
const Moose::Functor< Real > & _diffusion_coeff
virtual void initialSetup() override
FaceInfo::VarFaceNeighbors _current_face_type
Moose::FaceArg singleSidedFaceArg(const FaceInfo *fi, Moose::FV::LimiterType limiter_type=Moose::FV::LimiterType::CentralDifference, bool correct_skewness=false) const
DenseMatrix< Real > _matrix_contribution
DenseVector< Real > _rhs_contribution
DenseVector< dof_id_type > _dof_indices
const bool _force_boundary_execution
const FaceInfo * _current_face_info
MooseLinearVariableFV< Real > & _var
const unsigned int _sys_num
const unsigned int _var_num
Kernel that adds contributions from a diffusion term of the turbulent variables, limited in the near-...
static InputParameters validParams()
LinearFVTurbulentDiffusion(const InputParameters ¶ms)
Class constructor.
const std::vector< BoundaryName > & _wall_boundary_names
Wall boundaries.
virtual void initialSetup() override
virtual void addRightHandSideContribution() override
virtual void addMatrixContribution() override
virtual Real computeElemMatrixContribution() override
std::unordered_set< const Elem * > _wall_bounded
List for wall bounded elements.
virtual Real computeNeighborRightHandSideContribution() override
virtual Real computeBoundaryRHSContribution(const LinearFVBoundaryCondition &bc) override
virtual Real computeBoundaryMatrixContribution(const LinearFVBoundaryCondition &bc) override
virtual Real computeElemRightHandSideContribution() override
const Moose::Functor< Real > & _scaling_coeff
The functor for the scaling coefficient for the diffusion term.
virtual Real computeNeighborMatrixContribution() override
FEProblemBase & _fe_problem
libMesh::LinearImplicitSystem & _linear_system
void computeCellGradients()
LinearFVBoundaryCondition * getBoundaryCondition(const BoundaryID bd_id) const
VectorValue< Real > gradSln(const ElemInfo &elem_info, const StateArg &state) const
Moose::StateArg determineState() const
std::vector< T > & get_values()
NumericVector< Number > * rhs
SparseMatrix< Number > * matrix
void getWallBoundedElements(const std::vector< BoundaryName > &wall_boundary_name, const FEProblemBase &fe_problem, const SubProblem &subproblem, const std::set< SubdomainID > &block_ids, std::unordered_set< const Elem * > &wall_bounded)
Map marking wall bounded elements The map passed in wall_bounded_map gets cleared and re-populated.