23 "phase",
getPhaseEnum(),
"'fluid' or 'solid' phase to which this BC is applied.");
30 "whether to use local (at the boundary) or global (domain-averaged) " 34 params.
addParam<PostprocessorName>(
"average_porosity",
35 "postprocessor that provides domain-averaged proosity");
46 "average_k_fluid",
"postprocessor that provides domain-averaged fluid thermal conductivity");
48 "average_kappa",
"postprocessor that provides domain-averaged fluid thermal dispersion");
50 "average_k_solid",
"postprocessor that provides domain-averaged solid thermal conductivity");
52 "average_kappa_solid",
53 "postprocessor that provides domain-averaged solid effective thermal " 56 "for fluid and solid energy equations");
62 _value(getParam<
Real>(
"value")),
67 _average_eps(_locality ==
NS::settings::
global &&
69 ? &getPostprocessorValue(
"average_porosity")
71 _average_k_f(_locality ==
NS::settings::
global && _split_type !=
NS::splitting::
porosity 72 ? &getPostprocessorValue(
"average_k_fluid")
74 _average_k_s(_locality ==
NS::settings::
global &&
76 ? &getPostprocessorValue(
"average_k_solid")
78 _average_kappa_s(_locality ==
NS::settings::
global &&
80 ? &getPostprocessorValue(
"average_kappa_solid")
82 _average_kappa(_locality ==
NS::settings::
global &&
84 ? &getPostprocessorValue(
"average_kappa")
96 _kappa(_locality ==
NS::settings::
local &&
100 _kappa_s(_locality ==
NS::settings::
local &&
128 fraction = (*_eps)(face_arg, state);
133 ADReal d = (*_k_f)(face_arg, state) + (*
_k_s)(face_arg, state);
134 fraction =
d >
tol ? (*_k_f)(face_arg, state) /
d : 0.5;
151 kappa = (*_kappa)(face_arg, state).
norm() / std::sqrt(3.0);
154 fraction =
d >
tol ? (*_eps)(face_arg, state) *
kappa /
d : 0.5;
176 ADReal d = (*_average_eps) * (*_average_kappa) + (*_average_kappa_s);
177 fraction =
d >
tol ? (*_average_eps) * (*_average_kappa) /
d : 0.5;
184 return (1.0 - fraction) * -
_value;
186 return fraction * -
_value;
static const std::string kappa_s
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
This boundary condition sets a constant heat flux with a splitting between the fluid and solid phases...
static InputParameters validParams()
const NS::settings::LocalityEnum _locality
Where the values used in computing the splitting are pulled from, i.e.
Moose::StateArg determineState() const
NSFVFunctorHeatFluxBC(const InputParameters ¶meters)
virtual ADReal computeQpResidual() override
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
const NS::phase::PhaseEnum _phase
Which phase this boundary condition is applied to, i.e. 'fluid' or 'solid'.
DualNumber< Real, DNDerivativeType, true > ADReal
static const std::string k_s
static const std::string porosity
const PostprocessorValue * _average_k_s
Domain-average solid thermal conductivity.
const PostprocessorValue * _average_k_f
Domain-average fluid thermal conductivity.
const Moose::Functor< ADRealVectorValue > * _kappa
Fluid effective thermal conductivity.
static InputParameters validParams()
MooseEnum getLocalityEnum()
const NS::splitting::SplittingEnum _split_type
What parameters are used to split the heat flux, i.e.
static const std::string kappa
const PostprocessorValue * _average_eps
Domain-average porosity.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
registerADMooseObject("NavierStokesApp", NSFVFunctorHeatFluxBC)
static const Real k_epsilon
MooseEnum getSplittingEnum()
const Real & _value
Value of the heat flux.
static const std::string k
const Moose::Functor< ADReal > * _k_s
Solid thermal conductivity.
const Moose::Functor< ADReal > * _kappa_s
Solid effective thermal conductivity.