53 const std::string kernel_type =
_use_ad ?
"ADHeatConduction" :
"HeatConduction";
60 params.
set<MaterialPropertyName>(
"diffusion_coefficient") =
61 getParam<MaterialPropertyName>(
"thermal_conductivity");
66 const std::string kernel_type =
_use_ad ?
"ADCoupledForce" :
"CoupledForce";
69 params.
set<std::vector<VariableName>>(
"v") = {getParam<VariableName>(
"heat_source_var")};
71 params.
set<std::vector<SubdomainName>>(
"block") =
72 getParam<std::vector<SubdomainName>>(
"heat_source_blocks");
79 const std::string kernel_type =
"BodyForce";
82 params.
set<std::vector<SubdomainName>>(
"block") =
83 getParam<std::vector<SubdomainName>>(
"heat_source_blocks");
87 const auto & functor_name = getParam<MooseFunctorName>(
"heat_source_functor");
89 params.
set<Real>(
"value") = std::stod(functor_name);
90 else if (
getProblem().hasFunction(functor_name))
91 params.
set<FunctionName>(
"function") = functor_name;
93 params.
set<PostprocessorName>(
"postprocessor") = functor_name;
95 paramError(
"heat_source_functor",
"Unsupported functor type.");
100 const std::string kernel_type =
101 _use_ad ?
"ADHeatConductionTimeDerivative" :
"SpecificHeatConductionTimeDerivative";
106 params.
set<MaterialPropertyName>(
"density_name") = getParam<MaterialPropertyName>(
"density");
120 const std::string bc_type =
"FunctorNeumannBC";
124 const auto & heat_flux_boundaries = getParam<std::vector<BoundaryName>>(
"heat_flux_boundaries");
125 const auto & boundary_heat_fluxes =
126 getParam<std::vector<MooseFunctorName>>(
"boundary_heat_fluxes");
128 if (std::set<MooseFunctorName>(boundary_heat_fluxes.begin(), boundary_heat_fluxes.end())
130 heat_flux_boundaries.size() > 1)
132 params.
set<std::vector<BoundaryName>>(
"boundary") = heat_flux_boundaries;
133 params.
set<MooseFunctorName>(
"functor") = boundary_heat_fluxes[0];
139 for (
const auto i : index_range(heat_flux_boundaries))
141 params.
set<std::vector<BoundaryName>>(
"boundary") = {heat_flux_boundaries[i]};
142 params.
set<MooseFunctorName>(
"functor") = boundary_heat_fluxes[i];
145 heat_flux_boundaries[i],
152 const std::string bc_type =
"FunctorDirichletBC";
156 const auto & temperature_boundaries =
157 getParam<std::vector<BoundaryName>>(
"fixed_temperature_boundaries");
158 const auto & boundary_temperatures =
159 getParam<std::vector<MooseFunctorName>>(
"boundary_temperatures");
161 if (std::set<MooseFunctorName>(boundary_temperatures.begin(), boundary_temperatures.end())
163 temperature_boundaries.size() > 1)
165 params.
set<std::vector<BoundaryName>>(
"boundary") = temperature_boundaries;
166 params.
set<MooseFunctorName>(
"functor") = boundary_temperatures[0];
172 for (
const auto i : index_range(temperature_boundaries))
174 params.
set<std::vector<BoundaryName>>(
"boundary") = {temperature_boundaries[i]};
175 params.
set<MooseFunctorName>(
"functor") = boundary_temperatures[i];
178 temperature_boundaries[i],
185 const std::string bc_type =
"ADConvectiveHeatFluxBC";
189 const auto & convective_boundaries =
190 getParam<std::vector<BoundaryName>>(
"fixed_convection_boundaries");
191 const auto & boundary_T_fluid =
192 getParam<std::vector<MooseFunctorName>>(
"fixed_convection_T_fluid");
193 const auto & boundary_htc = getParam<std::vector<MooseFunctorName>>(
"fixed_convection_htc");
195 if (!
_use_ad && convective_boundaries.size())
196 paramInfo(
"use_automatic_differentiation",
197 "No-AD is not implemented for convection boundaries");
200 if (std::set<MooseFunctorName>(boundary_T_fluid.begin(), boundary_T_fluid.end()).size() == 1 &&
201 std::set<MooseFunctorName>(boundary_htc.begin(), boundary_htc.end()).size() == 1 &&
202 convective_boundaries.size() > 1)
204 params.
set<std::vector<BoundaryName>>(
"boundary") = convective_boundaries;
205 params.
set<MooseFunctorName>(
"T_infinity_functor") = boundary_T_fluid[0];
206 params.
set<MooseFunctorName>(
"heat_transfer_coefficient_functor") = boundary_htc[0];
213 if (convective_boundaries.size() != boundary_T_fluid.size())
215 "Should be as many convection boundaries (" +
216 std::to_string(convective_boundaries.size()) +
217 ") as fixed convection temperatures (" +
218 std::to_string(boundary_T_fluid.size()) +
")");
219 if (convective_boundaries.size() != boundary_htc.size())
221 "Should be as many convection boundaries (" +
222 std::to_string(convective_boundaries.size()) +
223 ") as fixed convection heat exchange coefficients (" +
224 std::to_string(boundary_htc.size()) +
")");
225 for (
const auto i : index_range(convective_boundaries))
227 params.
set<std::vector<BoundaryName>>(
"boundary") = {convective_boundaries[i]};
228 params.
set<MooseFunctorName>(
"T_infinity_functor") = boundary_T_fluid[i];
229 params.
set<MooseFunctorName>(
"heat_transfer_coefficient_functor") = boundary_htc[i];
232 convective_boundaries[i],