https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
INSFVTKEDWallFunctionBC Class Reference

Applies a wall function to the turbulent kinetic energy dissipation rate. More...

#include <INSFVTKEDWallFunctionBC.h>

Inheritance diagram for INSFVTKEDWallFunctionBC:
[legend]

Public Types

enum  TEST_TYPE
 
enum  ResidualTagType { ResidualTagType::NonReference, ResidualTagType::Reference }
 
typedef DataFileName DataFileParameterType
 

Public Member Functions

 INSFVTKEDWallFunctionBC (const InputParameters &parameters)
 
ADReal boundaryValue (const FaceInfo &fi, const Moose::StateArg &state) const override
 
const SubProblemsubProblem () const
 
const MooseVariableFV< Real > & variable () const
 
bool hasFaceSide (const FaceInfo &fi, bool fi_elem_side) const override
 
virtual bool enabled () const
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
virtual const std::string & name () const
 
std::string typeAndName () const
 
std::string errorPrefix (const std::string &error_type) const
 
void callMooseError (std::string msg, const bool with_prefix) const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
const InputParametersparameters () const
 
MooseObjectName uniqueName () const
 
const T & getParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const T * queryParam (const std::string &name) const
 
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 
getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &nm) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void mooseError (Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
virtual const std::set< BoundaryID > & boundaryIDs () const
 
const std::vector< BoundaryName > & boundaryNames () const
 
unsigned int numBoundaryIDs () const
 
bool hasBoundary (const BoundaryName &name) const
 
bool hasBoundary (const std::vector< BoundaryName > &names) const
 
bool hasBoundary (const BoundaryID &id) const
 
bool hasBoundary (const std::vector< BoundaryID > &ids, TEST_TYPE type=ALL) const
 
bool hasBoundary (const std::set< BoundaryID > &ids, TEST_TYPE type=ALL) const
 
bool isBoundarySubset (const std::set< BoundaryID > &ids) const
 
bool isBoundarySubset (const std::vector< BoundaryID > &ids) const
 
bool hasBoundaryMaterialProperty (const std::string &prop_name) const
 
virtual bool boundaryRestricted () const
 
const std::set< BoundaryID > & meshBoundaryIDs () const
 
virtual bool checkVariableBoundaryIntegrity () const
 
virtual void initialSetup ()
 
virtual void timestepSetup ()
 
virtual void jacobianSetup ()
 
virtual void residualSetup ()
 
virtual void subdomainSetup ()
 
virtual void customSetup (const ExecFlagType &)
 
const ExecFlagEnumgetExecuteOnEnum () const
 
const FunctiongetFunction (const std::string &name) const
 
const FunctiongetFunctionByName (const FunctionName &name) const
 
bool hasFunction (const std::string &param_name) const
 
bool hasFunctionByName (const FunctionName &name) const
 
UserObjectName getUserObjectName (const std::string &param_name) const
 
const T & getUserObject (const std::string &param_name, bool is_dependency=true) const
 
const T & getUserObjectByName (const UserObjectName &object_name, bool is_dependency=true) const
 
const UserObjectgetUserObjectBase (const std::string &param_name, bool is_dependency=true) const
 
const UserObjectgetUserObjectBaseByName (const UserObjectName &object_name, bool is_dependency=true) const
 
bool isImplicit ()
 
Moose::StateArg determineState () const
 
bool isDefaultPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
bool hasPostprocessor (const std::string &param_name, const unsigned int index=0) const
 
bool hasPostprocessorByName (const PostprocessorName &name) const
 
std::size_t coupledPostprocessors (const std::string &param_name) const
 
const PostprocessorName & getPostprocessorName (const std::string &param_name, const unsigned int index=0) const
 
const VectorPostprocessorValuegetVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
bool hasVectorPostprocessor (const std::string &param_name, const std::string &vector_name) const
 
bool hasVectorPostprocessor (const std::string &param_name) const
 
bool hasVectorPostprocessorByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
bool hasVectorPostprocessorByName (const VectorPostprocessorName &name) const
 
const VectorPostprocessorName & getVectorPostprocessorName (const std::string &param_name) const
 
PenetrationLocatorgetPenetrationLocator (const BoundaryName &primary, const BoundaryName &secondary, Order order)
 
PenetrationLocatorgetQuadraturePenetrationLocator (const BoundaryName &primary, const BoundaryName &secondary, Order order)
 
NearestNodeLocatorgetNearestNodeLocator (const BoundaryName &primary, const BoundaryName &secondary)
 
NearestNodeLocatorgetQuadratureNearestNodeLocator (const BoundaryName &primary, const BoundaryName &secondary)
 
bool requiresGeometricSearch () const
 
virtual void meshChanged ()
 
void useVectorTag (const TagName &tag_name, VectorTagsKey)
 
void useVectorTag (TagID tag_id, VectorTagsKey)
 
void useMatrixTag (const TagName &tag_name, MatrixTagsKey)
 
void useMatrixTag (TagID tag_id, MatrixTagsKey)
 
bool isVectorTagged ()
 
bool isMatrixTagged ()
 
bool hasVectorTags () const
 
const std::set< TagID > & getVectorTags (VectorTagsKey) const
 
const std::set< TagID > & getMatrixTags (MatrixTagsKey) const
 
MooseVariableBasemooseVariableBase () const
 
MooseVariableField< Real > & mooseVariableField ()
 
MooseVariableFE< Real > * mooseVariable () const
 
MooseVariableFV< Real > * mooseVariableFV () const
 
MooseLinearVariableFV< Real > * mooseLinearVariableFV () const
 
const std::set< MooseVariableFieldBase *> & getMooseVariableDependencies () const
 
std::set< MooseVariableFieldBase *> checkAllVariables (const DofObjectType &dof_object, const std::set< MooseVariableFieldBase * > &vars_to_omit={})
 
std::set< MooseVariableFieldBase *> checkVariables (const DofObjectType &dof_object, const std::set< MooseVariableFieldBase * > &vars_to_check)
 
void addMooseVariableDependency (MooseVariableFieldBase *var)
 
void addMooseVariableDependency (const std::vector< MooseVariableFieldBase * > &vars)
 
Moose::FaceArg makeFace (const FaceInfo &fi, const Moose::FV::LimiterType limiter_type, const bool elem_is_upwind, const bool correct_skewness=false, const Moose::StateArg *state_limiter=nullptr) const
 
Moose::FaceArg makeCDFace (const FaceInfo &fi, const bool correct_skewness=false) const
 
const DistributiongetDistribution (const std::string &name) const
 
const T & getDistribution (const std::string &name) const
 
const DistributiongetDistribution (const std::string &name) const
 
const T & getDistribution (const std::string &name) const
 
const DistributiongetDistributionByName (const DistributionName &name) const
 
const T & getDistributionByName (const std::string &name) const
 
const DistributiongetDistributionByName (const DistributionName &name) const
 
const T & getDistributionByName (const std::string &name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
const PostprocessorValuegetPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOld (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOld (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOlder (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOlder (const std::string &param_name, const unsigned int index=0) const
 
virtual const PostprocessorValuegetPostprocessorValueByName (const PostprocessorName &name) const
 
virtual const PostprocessorValuegetPostprocessorValueByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOldByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOldByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOlderByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOlderByName (const PostprocessorName &name) const
 
bool isVectorPostprocessorDistributed (const std::string &param_name) const
 
bool isVectorPostprocessorDistributed (const std::string &param_name) const
 
bool isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const
 
bool isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static InputParameters validParams ()
 
static bool restricted (const std::set< BoundaryID > &ids)
 
static std::string deduceFunctorName (const std::string &name, const InputParameters &params)
 

Public Attributes

 ALL
 
 ANY
 
const ConsoleStream _console
 

Protected Member Functions

std::string deduceFunctorName (const std::string &name) const
 
Moose::FaceArg singleSidedFaceArg (const FaceInfo *fi=nullptr, Moose::FV::LimiterType limiter_type=Moose::FV::LimiterType::CentralDifference, bool correct_skewness=false, const Moose::StateArg *state_limiter=nullptr) const
 
bool hasBoundaryMaterialPropertyHelper (const std::string &prop_name) const
 
virtual void addUserObjectDependencyHelper (const UserObject &) const
 
virtual void addPostprocessorDependencyHelper (const PostprocessorName &) const
 
virtual void addVectorPostprocessorDependencyHelper (const VectorPostprocessorName &) const
 
void prepareVectorTag (Assembly &assembly, unsigned int ivar)
 
void prepareVectorTag (Assembly &assembly, unsigned int ivar, ResidualTagType tag_type)
 
void prepareVectorTag (Assembly &assembly, unsigned int ivar, ResidualTagType tag_type)
 
void prepareVectorTagNeighbor (Assembly &assembly, unsigned int ivar)
 
void prepareVectorTagLower (Assembly &assembly, unsigned int ivar)
 
void prepareMatrixTag (Assembly &assembly, unsigned int ivar, unsigned int jvar)
 
void prepareMatrixTag (Assembly &assembly, unsigned int ivar, unsigned int jvar, DenseMatrix< Number > &k) const
 
void prepareMatrixTagNonlocal (Assembly &assembly, unsigned int ivar, unsigned int jvar)
 
void prepareMatrixTagNeighbor (Assembly &assembly, unsigned int ivar, unsigned int jvar, Moose::DGJacobianType type)
 
void prepareMatrixTagNeighbor (Assembly &assembly, unsigned int ivar, unsigned int jvar, Moose::DGJacobianType type, DenseMatrix< Number > &k) const
 
void prepareMatrixTagLower (Assembly &assembly, unsigned int ivar, unsigned int jvar, Moose::ConstraintJacobianType type)
 
void accumulateTaggedLocalResidual ()
 
void assignTaggedLocalResidual ()
 
void accumulateTaggedLocalMatrix ()
 
void accumulateTaggedLocalMatrix (Assembly &assembly, unsigned int ivar, unsigned int jvar, const DenseMatrix< Number > &k)
 
void accumulateTaggedLocalMatrix (Assembly &assembly, unsigned int ivar, unsigned int jvar, Moose::DGJacobianType type, const DenseMatrix< Number > &k)
 
void accumulateTaggedNonlocalMatrix ()
 
void assignTaggedLocalMatrix ()
 
void addResiduals (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 
void addResiduals (Assembly &assembly, const DenseVector< T > &residuals, const Indices &dof_indices, Real scaling_factor)
 
void addResiduals (Assembly &assembly, const ADResidualsPacket &packet)
 
void addResidualsAndJacobian (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 
void addResidualsAndJacobian (Assembly &assembly, const ADResidualsPacket &packet)
 
void addJacobian (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 
void addJacobian (Assembly &assembly, const ADResidualsPacket &packet)
 
void addJacobian (Assembly &assembly, DenseMatrix< Real > &local_k, const std::vector< dof_id_type > &row_indices, const std::vector< dof_id_type > &column_indices, Real scaling_factor)
 
void addResidualsWithoutConstraints (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 
void addResidualsAndJacobianWithoutConstraints (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 
void addJacobianWithoutConstraints (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 
void addJacobianElement (Assembly &assembly, Real value, dof_id_type row_index, dof_id_type column_index, Real scaling_factor)
 
void setResidual (SystemBase &sys, const T &residual, MooseVariableFE< T > &var)
 
void setResidual (SystemBase &sys, Real residual, dof_id_type dof_index)
 
void setResidual (SystemBase &sys, SetResidualFunctor set_residual_functor)
 
virtual const OutputTools< Real >::VariableValuevalue ()
 
virtual const OutputTools< Real >::VariableValuevalueOld ()
 
virtual const OutputTools< Real >::VariableValuevalueOlder ()
 
virtual const OutputTools< Real >::VariableValuedot ()
 
virtual const OutputTools< Real >::VariableValuedotDot ()
 
virtual const OutputTools< Real >::VariableValuedotOld ()
 
virtual const OutputTools< Real >::VariableValuedotDotOld ()
 
virtual const VariableValuedotDu ()
 
virtual const VariableValuedotDotDu ()
 
virtual const OutputTools< Real >::VariableGradientgradient ()
 
virtual const OutputTools< Real >::VariableGradientgradientOld ()
 
virtual const OutputTools< Real >::VariableGradientgradientOlder ()
 
virtual const OutputTools< Real >::VariableSecondsecond ()
 
virtual const OutputTools< Real >::VariableSecondsecondOld ()
 
virtual const OutputTools< Real >::VariableSecondsecondOlder ()
 
virtual const OutputTools< Real >::VariableTestSecondsecondTest ()
 
virtual const OutputTools< Real >::VariableTestSecondsecondTestFace ()
 
virtual const OutputTools< Real >::VariablePhiSecondsecondPhi ()
 
virtual const OutputTools< Real >::VariablePhiSecondsecondPhiFace ()
 
const Moose::Functor< T > & getFunctor (const std::string &name)
 
const Moose::Functor< T > & getFunctor (const std::string &name, THREAD_ID tid)
 
const Moose::Functor< T > & getFunctor (const std::string &name, SubProblem &subproblem)
 
const Moose::Functor< T > & getFunctor (const std::string &name, SubProblem &subproblem, THREAD_ID tid)
 
bool isFunctor (const std::string &name) const
 
bool isFunctor (const std::string &name, const SubProblem &subproblem) const
 
Moose::ElemArg makeElemArg (const Elem *elem, bool correct_skewnewss=false) const
 
void checkFunctorSupportsSideIntegration (const std::string &name, bool qp_integration)
 

Protected Attributes

MooseVariableFV< Real > & _var
 
SubProblem_subproblem
 
FEProblemBase_fv_problem
 
SystemBase_sys
 
THREAD_ID _tid
 
Assembly_assembly
 
MooseMesh_mesh
 
const FaceInfo_face_info
 
const bool & _enabled
 
MooseApp_app
 
const std::string _type
 
const std::string _name
 
const InputParameters_pars
 
Factory_factory
 
ActionFactory_action_factory
 
const ExecFlagEnum_execute_enum
 
const ExecFlagType_current_execute_flag
 
const InputParameters_ti_params
 
FEProblemBase_ti_feproblem
 
bool _is_implicit
 
Real_t
 
const Real_t_old
 
int_t_step
 
Real_dt
 
Real_dt_old
 
bool _is_transient
 
GeometricSearchData_geometric_search_data
 
bool _requires_geometric_search
 
FEProblemBase_mci_feproblem
 
DenseVector< Number_local_re
 
DenseMatrix< Number_local_ke
 
DenseMatrix< Number_nonlocal_ke
 
bool _nodal
 
MooseVariableFE< Real > * _variable
 
MooseVariableFV< Real > * _fv_variable
 
MooseLinearVariableFV< Real > * _linear_fv_variable
 
MooseVariableField< Real > * _field_variable
 
Assembly_mvi_assembly
 
const Parallel::Communicator & _communicator
 

Private Attributes

const unsigned int _dim
 the dimension of the domain More...
 
const Moose::Functor< ADReal > & _u_var
 x-velocity More...
 
const Moose::Functor< ADReal > * _v_var
 y-velocity More...
 
const Moose::Functor< ADReal > * _w_var
 z-velocity More...
 
const Moose::Functor< ADReal > & _rho
 Density. More...
 
const Moose::Functor< ADReal > & _mu
 Dynamic viscosity. More...
 
const Moose::Functor< ADReal > & _mu_t
 Turbulent dynamic viscosity. More...
 
const Moose::Functor< ADReal > & _k
 Turbulent kinetic energy. More...
 
const Moose::Functor< ADReal > & _C_mu
 C_mu turbulent coefficient. More...
 
const bool _newton_solve
 Whether we are using a newton solve. More...
 

Detailed Description

Applies a wall function to the turbulent kinetic energy dissipation rate.

Definition at line 20 of file INSFVTKEDWallFunctionBC.h.

Constructor & Destructor Documentation

◆ INSFVTKEDWallFunctionBC()

INSFVTKEDWallFunctionBC::INSFVTKEDWallFunctionBC ( const InputParameters parameters)

Definition at line 37 of file INSFVTKEDWallFunctionBC.C.

38  : FVDirichletBCBase(params),
40  _u_var(getFunctor<ADReal>("u")),
41  _v_var(params.isParamValid("v") ? &(getFunctor<ADReal>("v")) : nullptr),
42  _w_var(params.isParamValid("w") ? &(getFunctor<ADReal>("w")) : nullptr),
43  _rho(getFunctor<ADReal>(NS::density)),
44  _mu(getFunctor<ADReal>(NS::mu)),
45  _mu_t(getFunctor<ADReal>(NS::mu_t)),
46  _k(getFunctor<ADReal>(NS::TKE)),
47  _C_mu(getFunctor<ADReal>("C_mu")),
48  _newton_solve(getParam<bool>("newton_solve"))
49 {
50 }
const Moose::Functor< ADReal > & _rho
Density.
virtual MooseMesh & mesh()=0
const Moose::Functor< ADReal > & _mu
Dynamic viscosity.
static const std::string mu_t
Definition: NS.h:125
const Moose::Functor< ADReal > & _mu_t
Turbulent dynamic viscosity.
static const std::string density
Definition: NS.h:33
static const std::string TKE
Definition: NS.h:176
const Moose::Functor< ADReal > & _C_mu
C_mu turbulent coefficient.
const unsigned int _dim
the dimension of the domain
const Moose::Functor< ADReal > * _v_var
y-velocity
const Moose::Functor< ADReal > & _k
Turbulent kinetic energy.
const Moose::Functor< ADReal > & _u_var
x-velocity
virtual unsigned int dimension() const
static const std::string mu
Definition: NS.h:123
SubProblem & _subproblem
const Moose::Functor< ADReal > * _w_var
z-velocity
const bool _newton_solve
Whether we are using a newton solve.
FVDirichletBCBase(const InputParameters &parameters)

Member Function Documentation

◆ boundaryValue()

ADReal INSFVTKEDWallFunctionBC::boundaryValue ( const FaceInfo fi,
const Moose::StateArg state 
) const
overridevirtual

Implements FVDirichletBCBase.

Definition at line 53 of file INSFVTKEDWallFunctionBC.C.

54 {
55  const Real dist = std::abs((fi.elemCentroid() - fi.faceCentroid()) * fi.normal());
56  const Elem & _current_elem = fi.elem();
57  const auto mu = _mu(makeElemArg(&_current_elem), state);
58  const auto rho = _rho(makeElemArg(&_current_elem), state);
59 
60  // Assign boundary weights to element
61  // This is based on the theory of linear TKE development for each boundary
62  // This is, it assumes no interaction across turbulence production from boundaries
63  Real weight = 0.0;
64  for (unsigned int i_side = 0; i_side < _current_elem.n_sides(); ++i_side)
65  weight += static_cast<Real>(_subproblem.mesh().getBoundaryIDs(&_current_elem, i_side).size());
66 
67  // Get the velocity vector
68  ADRealVectorValue velocity(_u_var(makeElemArg(&_current_elem), state));
69  if (_v_var)
70  velocity(1) = (*_v_var)(makeElemArg(&_current_elem), state);
71  if (_w_var)
72  velocity(2) = (*_w_var)(makeElemArg(&_current_elem), state);
73 
74  // Compute the velocity and direction of the velocity component that is parallel to the wall
75  const ADReal parallel_speed =
76  NS::computeSpeed(velocity - velocity * (fi.normal()) * (fi.normal()));
77 
78  // Get friction velocity
79  const ADReal u_star = NS::findUStar(mu, rho, parallel_speed, dist);
80 
81  // Get associated non-dimensional wall distance
82  const ADReal y_plus = dist * u_star * rho / mu;
83 
84  const auto TKE = _k(makeElemArg(&_current_elem), state);
85 
86  if (y_plus <= 5.0) // sub-laminar layer
87  {
88  const auto laminar_value = 2.0 * weight * TKE * mu / std::pow(dist, 2);
89  if (!_newton_solve)
90  return laminar_value;
91  else
92  // Additional zero term to make sure new derivatives are not introduced as y_plus
93  // changes
94  return laminar_value + 0 * _mu_t(makeElemArg(&_current_elem), state);
95  }
96  else if (y_plus >= 30.0) // log-layer
97  {
98  const auto turbulent_value = weight * _C_mu(makeElemArg(&_current_elem), state) *
99  std::pow(std::abs(TKE), 1.5) /
100  (_mu_t(makeElemArg(&_current_elem), state) * dist);
101  if (!_newton_solve)
102  return turbulent_value;
103  else
104  // Additional zero term to make sure new derivatives are not introduced as y_plus changes
105  return turbulent_value + 0 * mu;
106  }
107  else // blending function
108  {
109  const auto laminar_value = 2.0 * weight * TKE * mu / std::pow(dist, 2);
110  const auto turbulent_value = weight * _C_mu(makeElemArg(&_current_elem), state) *
111  std::pow(std::abs(TKE), 1.5) /
112  (_mu_t(makeElemArg(&_current_elem), state) * dist);
113  const auto interpolation_coef = (y_plus - 5.0) / 25.0;
114  return (interpolation_coef * (turbulent_value - laminar_value) + laminar_value);
115  }
116 }
const Moose::Functor< ADReal > & _rho
Density.
virtual MooseMesh & mesh()=0
const Moose::Functor< ADReal > & _mu
Dynamic viscosity.
const Moose::Functor< ADReal > & _mu_t
Turbulent dynamic viscosity.
const Elem & elem() const
const Point & faceCentroid() const
static const std::string TKE
Definition: NS.h:176
const Moose::Functor< ADReal > & _C_mu
C_mu turbulent coefficient.
const Moose::Functor< ADReal > * _v_var
y-velocity
DualNumber< Real, DNDerivativeType, true > ADReal
const Moose::Functor< ADReal > & _k
Turbulent kinetic energy.
const Moose::Functor< ADReal > & _u_var
x-velocity
Moose::ElemArg makeElemArg(const Elem *elem, bool correct_skewnewss=false) const
const Point & elemCentroid() const
dof_id_type weight(const MeshBase &mesh, const processor_id_type pid)
static const std::string mu
Definition: NS.h:123
SubProblem & _subproblem
const Point & normal() const
const Moose::Functor< ADReal > * _w_var
z-velocity
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const bool _newton_solve
Whether we are using a newton solve.
static const std::string velocity
Definition: NS.h:45
ADReal findUStar(const ADReal &mu, const ADReal &rho, const ADReal &u, Real dist)
Finds the friction velocity using standard velocity wall functions formulation.
std::vector< BoundaryID > getBoundaryIDs(const Elem *const elem, const unsigned short int side) const
ADReal computeSpeed(const ADRealVectorValue &velocity)
Compute the speed (velocity norm) given the supplied velocity.
MooseUnits pow(const MooseUnits &, int)

◆ validParams()

InputParameters INSFVTKEDWallFunctionBC::validParams ( )
static

Definition at line 18 of file INSFVTKEDWallFunctionBC.C.

19 {
21  params.addClassDescription("Adds Reichardt extrapolated wall values to set up directly the"
22  "Dirichlet BC for the turbulent kinetic energy dissipation rate.");
23  params.addRequiredParam<MooseFunctorName>("u", "The velocity in the x direction.");
24  params.addParam<MooseFunctorName>("v", "The velocity in the y direction.");
25  params.addParam<MooseFunctorName>("w", "The velocity in the z direction.");
26  params.addRequiredParam<MooseFunctorName>(NS::density, "Density");
27  params.addRequiredParam<MooseFunctorName>(NS::mu, "Dynamic viscosity.");
28  params.addRequiredParam<MooseFunctorName>(NS::mu_t, "The turbulent viscosity.");
29  params.addRequiredParam<MooseFunctorName>("k", "The turbulent kinetic energy.");
30  params.deprecateParam("k", NS::TKE, "01/01/2025");
31  params.addParam<MooseFunctorName>("C_mu", 0.09, "Coupled turbulent kinetic energy closure.");
32  params.addParam<bool>("newton_solve", false, "Whether a Newton nonlinear solve is being used");
33  params.addParamNamesToGroup("newton_solve", "Advanced");
34  return params;
35 }
static const std::string mu_t
Definition: NS.h:125
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
static const std::string density
Definition: NS.h:33
static const std::string TKE
Definition: NS.h:176
void addRequiredParam(const std::string &name, const std::string &doc_string)
static InputParameters validParams()
void deprecateParam(const std::string &old_name, const std::string &new_name, const std::string &removal_date)
static const std::string mu
Definition: NS.h:123
void addClassDescription(const std::string &doc_string)
void addParamNamesToGroup(const std::string &space_delim_names, const std::string group_name)

Member Data Documentation

◆ _C_mu

const Moose::Functor<ADReal>& INSFVTKEDWallFunctionBC::_C_mu
private

C_mu turbulent coefficient.

Definition at line 51 of file INSFVTKEDWallFunctionBC.h.

Referenced by boundaryValue().

◆ _dim

const unsigned int INSFVTKEDWallFunctionBC::_dim
private

the dimension of the domain

Definition at line 31 of file INSFVTKEDWallFunctionBC.h.

◆ _k

const Moose::Functor<ADReal>& INSFVTKEDWallFunctionBC::_k
private

Turbulent kinetic energy.

Definition at line 48 of file INSFVTKEDWallFunctionBC.h.

Referenced by boundaryValue().

◆ _mu

const Moose::Functor<ADReal>& INSFVTKEDWallFunctionBC::_mu
private

Dynamic viscosity.

Definition at line 43 of file INSFVTKEDWallFunctionBC.h.

Referenced by boundaryValue().

◆ _mu_t

const Moose::Functor<ADReal>& INSFVTKEDWallFunctionBC::_mu_t
private

Turbulent dynamic viscosity.

Definition at line 45 of file INSFVTKEDWallFunctionBC.h.

Referenced by boundaryValue().

◆ _newton_solve

const bool INSFVTKEDWallFunctionBC::_newton_solve
private

Whether we are using a newton solve.

Definition at line 54 of file INSFVTKEDWallFunctionBC.h.

Referenced by boundaryValue().

◆ _rho

const Moose::Functor<ADReal>& INSFVTKEDWallFunctionBC::_rho
private

Density.

Definition at line 41 of file INSFVTKEDWallFunctionBC.h.

Referenced by boundaryValue().

◆ _u_var

const Moose::Functor<ADReal>& INSFVTKEDWallFunctionBC::_u_var
private

x-velocity

Definition at line 34 of file INSFVTKEDWallFunctionBC.h.

Referenced by boundaryValue().

◆ _v_var

const Moose::Functor<ADReal>* INSFVTKEDWallFunctionBC::_v_var
private

y-velocity

Definition at line 36 of file INSFVTKEDWallFunctionBC.h.

Referenced by boundaryValue().

◆ _w_var

const Moose::Functor<ADReal>* INSFVTKEDWallFunctionBC::_w_var
private

z-velocity

Definition at line 38 of file INSFVTKEDWallFunctionBC.h.

Referenced by boundaryValue().


The documentation for this class was generated from the following files: