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")),
63 _phase(getParam<
MooseEnum>(
"phase").getEnum<
NS::phase::PhaseEnum>()),
64 _split_type(getParam<
MooseEnum>(
"splitting").getEnum<
NS::splitting::SplittingEnum>()),
65 _locality(getParam<
MooseEnum>(
"locality").getEnum<
NS::settings::LocalityEnum>()),
67 _average_eps(_locality ==
NS::settings::global &&
68 _split_type !=
NS::splitting::thermal_conductivity
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 &&
75 _split_type ==
NS::splitting::thermal_conductivity
76 ? &getPostprocessorValue(
"average_k_solid")
78 _average_kappa_s(_locality ==
NS::settings::global &&
79 _split_type ==
NS::splitting::effective_thermal_conductivity
80 ? &getPostprocessorValue(
"average_kappa_solid")
82 _average_kappa(_locality ==
NS::settings::global &&
83 _split_type ==
NS::splitting::effective_thermal_conductivity
84 ? &getPostprocessorValue(
"average_kappa")
87 _eps(_locality ==
NS::settings::local && _split_type !=
NS::splitting::thermal_conductivity
90 _k_f(_locality ==
NS::settings::local && _split_type !=
NS::splitting::porosity
93 _k_s(_locality ==
NS::settings::local && _split_type ==
NS::splitting::thermal_conductivity
96 _kappa(_locality ==
NS::settings::local &&
97 _split_type ==
NS::splitting::effective_thermal_conductivity
100 _kappa_s(_locality ==
NS::settings::local &&
101 _split_type ==
NS::splitting::effective_thermal_conductivity
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;
146 if ((MooseUtils::absoluteFuzzyEqual((*
_kappa)(face_arg, state)(0), 0)) &&
147 (MooseUtils::absoluteFuzzyEqual((*
_kappa)(face_arg, state)(1), 0)) &&
148 (MooseUtils::absoluteFuzzyEqual((*
_kappa)(face_arg, state)(2), 0)))
151 kappa = (*_kappa)(face_arg, state).norm() / std::sqrt(3.0);
153 ADReal d = (*_eps)(face_arg, state) * kappa + (*
_kappa_s)(face_arg, state);
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;
DualNumber< Real, DNDerivativeType, true > ADReal
MooseEnum getLocalityEnum()
MooseEnum getSplittingEnum()
registerADMooseObject("NavierStokesApp", NSFVFunctorHeatFluxBC)
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
static InputParameters validParams()
This boundary condition sets a constant heat flux with a splitting between the fluid and solid phases...
const PostprocessorValue * _average_k_s
Domain-average solid thermal conductivity.
const Moose::Functor< ADRealVectorValue > * _kappa
Fluid effective thermal conductivity.
const Moose::Functor< ADReal > * _kappa_s
Solid effective thermal conductivity.
const NS::phase::PhaseEnum _phase
Which phase this boundary condition is applied to, i.e. 'fluid' or 'solid'.
virtual ADReal computeQpResidual() override
const PostprocessorValue * _average_eps
Domain-average porosity.
const PostprocessorValue * _average_k_f
Domain-average fluid thermal conductivity.
const NS::settings::LocalityEnum _locality
Where the values used in computing the splitting are pulled from, i.e.
const NS::splitting::SplittingEnum _split_type
What parameters are used to split the heat flux, i.e.
static InputParameters validParams()
const Moose::Functor< ADReal > * _k_s
Solid thermal conductivity.
const Real & _value
Value of the heat flux.
NSFVFunctorHeatFluxBC(const InputParameters ¶meters)
Moose::StateArg determineState() const
@ effective_thermal_conductivity
static const Real k_epsilon
static const std::string kappa_s
static const std::string k_s
static const std::string k
static const std::string kappa
static const std::string porosity