https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
RadiationTransferAction Class Reference

#include <RadiationTransferAction.h>

Inheritance diagram for RadiationTransferAction:
[legend]

Public Types

typedef DataFileName DataFileParameterType
 

Public Member Functions

 RadiationTransferAction (const InputParameters &params)
 
virtual void act () override
 
void timedAct ()
 
virtual void addRelationshipManagers (Moose::RelationshipManagerType when_type)
 
MooseObjectName uniqueActionName () const
 
const std::string & specificTaskName () const
 
const std::set< std::string > & getAllTasks () const
 
void appendTask (const std::string &task)
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
const std::string & name () const
 
std::string typeAndName () const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
MooseObjectName uniqueName () const
 
const InputParametersparameters () const
 
const hit::Node * getHitNode () const
 
bool hasBase () const
 
const std::string & getBase () const
 
const TgetParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const TqueryParam (const std::string &name) const
 
const TgetRenamedParam (const std::string &old_name, const std::string &new_name) const
 
T getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &name) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (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
 
std::string messagePrefix (const bool hit_prefix=true) const
 
std::string errorPrefix (const std::string &) const
 
void mooseError (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecatedNoTrace (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
void callMooseError (std::string msg, const bool with_prefix, const hit::Node *node=nullptr, const bool show_trace=true) 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
 
PerfGraphperfGraph ()
 
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 void callMooseError (MooseApp *const app, const InputParameters &params, std::string msg, const bool with_prefix, const hit::Node *node, const bool show_trace=true)
 

Public Attributes

 usingCombinedWarningSolutionWarnings
 
const ConsoleStream _console
 

Static Public Attributes

static const std::string unique_action_name_param
 
static const std::string type_param
 
static const std::string name_param
 
static const std::string unique_name_param
 
static const std::string app_param
 
static const std::string moose_base_param
 
static const std::string kokkos_object_param
 
static constexpr auto SYSTEM
 
static constexpr auto NAME
 

Protected Member Functions

void checkBoundaryParameterIsSubset (const std::string &param) const
 Checks that param boundaries are in the 'boundary' parameter.
 
void addMeshGenerator ()
 
void addRadiationObject () const
 
void addViewFactorObject () const
 
void addRadiationBCs () const
 
void addRayStudyObject () const
 
void addRayBCs () const
 
void addHeatFluxAuxVariable () const
 
void addHeatFluxAuxKernel () const
 
std::vector< std::vector< std::string > > radiationPatchNames () const
 
std::vector< std::vector< std::string > > bcRadiationPatchNames () const
 
std::vector< BoundaryName > patchBoundaryNames (const std::vector< BoundaryName > &boundary_names) const
 
std::vector< BoundaryName > radiationPatchBoundaryNames () const
 
std::vector< BoundaryName > adiabaticPatchBoundaryNames () const
 
UserObjectName viewFactorObjectName () const
 
UserObjectName radiationObjectName () const
 
UserObjectName rayStudyName () const
 
std::string rayBCName () const
 
std::string symmetryRayBCName () const
 
MeshGeneratorName meshGeneratorName (unsigned int j) const
 
unsigned int nPatch (unsigned int j) const
 provides the updated number of patches for this boundary
 
bool addRelationshipManagers (Moose::RelationshipManagerType when_type, const InputParameters &moose_object_pars)
 
void associateWithParameter (const std::string &param_name, InputParameters &params) const
 
void associateWithParameter (const InputParameters &from_params, const std::string &param_name, InputParameters &params) const
 
const TgetMeshProperty (const std::string &data_name, const std::string &prefix)
 
const TgetMeshProperty (const std::string &data_name)
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name) const
 
bool hasMeshProperty (const std::string &data_name) const
 
std::string meshPropertyName (const std::string &data_name) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const
 
std::string timedSectionName (const std::string &section_name) const
 
void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 

Static Protected Member Functions

static std::string meshPropertyName (const std::string &data_name, const std::string &prefix)
 

Protected Attributes

const std::vector< BoundaryName > _boundary_names
 the boundary names participating in the radiative heat transfer
 
const MooseEnum _view_factor_calculator
 the type of view factor calculation being performed
 
const bool _add_heat_flux_aux
 Whether to add heat flux aux.
 
VariableName _heat_flux_variable
 Heat flux aux name.
 
std::vector< SubdomainName > _heat_flux_aux_block
 Blocks to use for heat flux aux.
 
std::string _registered_identifier
 
std::string _specific_task_name
 
std::set< std::string > _all_tasks
 
ActionWarehouse_awh
 
const std::string & _current_task
 
std::shared_ptr< MooseMesh > & _mesh
 
std::shared_ptr< MooseMesh > & _displaced_mesh
 
std::shared_ptr< FEProblemBase > & _problem
 
PerfID _act_timer
 
MooseApp_app
 
Factory_factory
 
ActionFactory_action_factory
 
const std::string & _type
 
const std::string & _name
 
const InputParameters_pars
 
MooseApp_pg_moose_app
 
const std::string _prefix
 
const Parallel::Communicator & _communicator
 

Private Member Functions

bool addRelationshipManager (Moose::RelationshipManagerType input_rm_type, const InputParameters &moose_object_pars, std::string rm_name, Moose::RelationshipManagerType rm_type, Moose::RelationshipManagerInputParameterCallback rm_input_parameter_func, Moose::RMSystemType sys_type=Moose::RMSystemType::NONE)
 
virtual std::string meshPropertyPrefix (const std::string &data_name) const
 
const RestartableDataValuegetMeshPropertyInternal (const std::string &data_name, const std::string &prefix) const
 
void mooseErrorInternal (Args &&... args) const
 

Static Private Member Functions

static const hit::Node * getHitNode (const InputParameters &params)
 
static std::string messagePrefix (const InputParameters &params, const bool hit_prefix)
 

Private Attributes

const ParallelParamObject_parent
 
MooseApp_meta_data_app
 
const MooseObject *const _meta_data_object
 
const MooseBase_si_moose_base
 
const FEProblemBase_si_problem
 

Detailed Description

Definition at line 16 of file RadiationTransferAction.h.

Constructor & Destructor Documentation

◆ RadiationTransferAction()

RadiationTransferAction::RadiationTransferAction ( const InputParameters params)

Definition at line 121 of file RadiationTransferAction.C.

122 : Action(params),
123 _boundary_names(getParam<std::vector<BoundaryName>>("boundary")),
124 _view_factor_calculator(getParam<MooseEnum>("view_factor_calculator")),
125 _add_heat_flux_aux(getParam<bool>("add_heat_flux_aux"))
126{
127 const auto & symmetry_names = getParam<std::vector<BoundaryName>>("symmetry_boundary");
128
129 if (_view_factor_calculator != "ray_tracing")
130 {
131 for (const auto & param_name : {"polar_quad_order",
132 "azimuthal_quad_order",
133 "ray_tracing_face_type",
134 "ray_tracing_face_order"})
135 if (params.isParamSetByUser(param_name))
136 paramWarning(param_name,
137 "Only used for view_factor_calculator = ray_tracing. It is ignored for this "
138 "calculation.");
139
140 if (symmetry_names.size())
141 paramError("symmetry_boundary",
142 "Symmetry boundaries are only supported with view_factor_calculator = "
143 "ray_tracing.");
144 }
145 else
146 {
147 // check that there is no overlap between sidesets and symmetry sidesets
148 for (const auto & name : _boundary_names)
149 if (std::find(symmetry_names.begin(), symmetry_names.end(), name) != symmetry_names.end())
150 paramError("boundary",
151 "Boundary ",
152 name,
153 " is present in parameter boundary and symmetry_boundary.");
154 }
155
157 {
158 if (isParamValid("heat_flux_variable"))
159 _heat_flux_variable = getParam<VariableName>("heat_flux_variable");
160 else
161 paramError("heat_flux_variable",
162 "If 'add_heat_flux_aux' is true, then this parameter must be provided.");
163
164 if (isParamValid("heat_flux_aux_block"))
165 _heat_flux_aux_block = getParam<std::vector<SubdomainName>>("heat_flux_aux_block");
166 else
167 paramError("heat_flux_aux_block",
168 "If 'add_heat_flux_aux' is true, then this parameter must be provided.");
169 }
170
171 checkBoundaryParameterIsSubset("adiabatic_boundary");
172 checkBoundaryParameterIsSubset("fixed_temperature_boundary");
173}
bool isParamSetByUser(const std::string &name) const
void paramWarning(const std::string &param, Args... args) const
const std::string & name() const
void paramError(const std::string &param, Args... args) const
const T & getParam(const std::string &name) const
bool isParamValid(const std::string &name) const
const bool _add_heat_flux_aux
Whether to add heat flux aux.
const MooseEnum _view_factor_calculator
the type of view factor calculation being performed
VariableName _heat_flux_variable
Heat flux aux name.
const std::vector< BoundaryName > _boundary_names
the boundary names participating in the radiative heat transfer
void checkBoundaryParameterIsSubset(const std::string &param) const
Checks that param boundaries are in the 'boundary' parameter.
std::vector< SubdomainName > _heat_flux_aux_block
Blocks to use for heat flux aux.
KOKKOS_INLINE_FUNCTION const T * find(const T &target, const T *const begin, const T *const end)
if(subdm)

Member Function Documentation

◆ act()

void RadiationTransferAction::act ( )
overridevirtual

Implements Action.

Definition at line 185 of file RadiationTransferAction.C.

186{
187 if (_current_task == "append_mesh_generator")
189 else if (_current_task == "add_user_object")
190 {
194 }
195 else if (_current_task == "add_bc")
197 else if (_current_task == "add_ray_boundary_condition")
198 addRayBCs();
199 else if (_current_task == "add_aux_variable" && _add_heat_flux_aux)
201 else if (_current_task == "add_aux_kernel" && _add_heat_flux_aux)
203}
const std::string & _current_task

◆ addHeatFluxAuxKernel()

void RadiationTransferAction::addHeatFluxAuxKernel ( ) const
protected

Definition at line 593 of file RadiationTransferAction.C.

594{
595 const std::string class_name = "GrayLambertRadiationHeatFluxAux";
596 InputParameters params = _factory.getValidParams(class_name);
597 params.set<AuxVariableName>("variable") = _heat_flux_variable;
598 params.set<std::vector<BoundaryName>>("boundary") = radiationPatchBoundaryNames();
599 params.set<UserObjectName>("surface_radiation_object") = radiationObjectName();
600 params.set<ExecFlagEnum>("execute_on") = {EXEC_INITIAL, EXEC_TIMESTEP_END};
601 _problem->addAuxKernel(class_name, "radiation_heat_flux_aux_kernel", params);
602}
const ExecFlagType EXEC_TIMESTEP_END
const ExecFlagType EXEC_INITIAL
std::shared_ptr< FEProblemBase > & _problem
InputParameters getValidParams(const std::string &name) const
T & set(const std::string &name, bool quiet_mode=false)
Factory & _factory
UserObjectName radiationObjectName() const
std::vector< BoundaryName > radiationPatchBoundaryNames() const

Referenced by act().

◆ addHeatFluxAuxVariable()

void RadiationTransferAction::addHeatFluxAuxVariable ( ) const
protected

Definition at line 582 of file RadiationTransferAction.C.

583{
584 const std::string var_type = "MooseVariable";
585 auto params = _factory.getValidParams(var_type);
586 params.set<std::vector<SubdomainName>>("block") = _heat_flux_aux_block;
587 params.set<MooseEnum>("order") = "CONSTANT";
588 params.set<MooseEnum>("family") = "MONOMIAL";
589 _problem->addAuxVariable(var_type, _heat_flux_variable, params);
590}

Referenced by act().

◆ addMeshGenerator()

void RadiationTransferAction::addMeshGenerator ( )
protected

Definition at line 517 of file RadiationTransferAction.C.

518{
519 std::vector<unsigned int> n_patches = getParam<std::vector<unsigned int>>("n_patches");
520 MultiMooseEnum partitioners = getParam<MultiMooseEnum>("partitioners");
521 if (!_pars.isParamSetByUser("partitioners"))
522 {
523 partitioners.clearSetValues();
524 for (unsigned int j = 0; j < _boundary_names.size(); ++j)
525 partitioners.setAdditionalValue("metis");
526 }
527
528 MultiMooseEnum direction = getParam<MultiMooseEnum>("centroid_partitioner_directions");
529
530 // check input parameters
531 if (_boundary_names.size() != n_patches.size())
532 mooseError("n_patches parameter must have same length as boundary parameter.");
533
534 if (_boundary_names.size() != partitioners.size())
535 mooseError("partitioners parameter must have same length as boundary parameter.");
536
537 for (unsigned int j = 0; j < partitioners.size(); ++j)
538 if (partitioners[j] == "centroid" && direction.size() != _boundary_names.size())
540 "centroid partitioner is selected for at least one sideset. "
541 "centroid_partitioner_directions parameter must have same length as boundary parameter.");
542
543 // check if mesh is a MeshGeneratorMesh
544 std::shared_ptr<MeshGeneratorMesh> mg_mesh = std::dynamic_pointer_cast<MeshGeneratorMesh>(_mesh);
545 if (!mg_mesh)
546 mooseError("This action adds MeshGenerator objects and therefore only works with a "
547 "MeshGeneratorMesh.");
548
549 for (unsigned int j = 0; j < _boundary_names.size(); ++j)
550 {
551 InputParameters params = _factory.getValidParams("PatchSidesetGenerator");
552 params.set<BoundaryName>("boundary") = _boundary_names[j];
553 params.set<unsigned int>("n_patches") = n_patches[j];
554 params.set<MooseEnum>("partitioner") = partitioners[j];
555
556 if (partitioners[j] == "centroid")
557 params.set<MooseEnum>("centroid_partitioner_direction") = direction[j];
558
559 _app.appendMeshGenerator("PatchSidesetGenerator", meshGeneratorName(j), params);
560 }
561}
std::shared_ptr< MooseMesh > & _mesh
MooseApp & _app
const MeshGenerator & appendMeshGenerator(const std::string &type, const std::string &name, InputParameters params)
void mooseError(Args &&... args) const
const InputParameters & _pars
unsigned int size() const
MeshGeneratorName meshGeneratorName(unsigned int j) const

Referenced by act().

◆ addRadiationBCs()

void RadiationTransferAction::addRadiationBCs ( ) const
protected

Definition at line 206 of file RadiationTransferAction.C.

207{
208 InputParameters params = _factory.getValidParams("GrayLambertNeumannBC");
209
210 // set boundary
211 std::vector<std::vector<std::string>> radiation_patch_names = bcRadiationPatchNames();
212 std::vector<BoundaryName> boundary_names;
213 for (auto & e1 : radiation_patch_names)
214 for (auto & e2 : e1)
215 boundary_names.push_back(e2);
216
217 params.set<std::vector<BoundaryName>>("boundary") = boundary_names;
218
219 // set temperature variable
220 params.set<NonlinearVariableName>("variable") = getParam<VariableName>("temperature");
221
222 // set radiationuserobject
223 params.set<UserObjectName>("surface_radiation_object_name") = radiationObjectName();
224
225 _problem->addBoundaryCondition("GrayLambertNeumannBC", "gray_lamber_neumann_bc_" + _name, params);
226}
for(PetscInt i=0;i< nvars;++i)
const std::string & _name
std::vector< std::vector< std::string > > bcRadiationPatchNames() const

Referenced by act().

◆ addRadiationObject()

void RadiationTransferAction::addRadiationObject ( ) const
protected

Definition at line 339 of file RadiationTransferAction.C.

340{
341 std::vector<std::vector<std::string>> radiation_patch_names = radiationPatchNames();
342
343 // input parameter check
344 std::vector<FunctionName> emissivity = getParam<std::vector<FunctionName>>("emissivity");
345 if (emissivity.size() != _boundary_names.size())
346 mooseError("emissivity parameter needs to be the same size as the boundary parameter.");
347
348 // the action only sets up ViewFactorObjectSurfaceRadiation, because after splitting
349 // faces auotmatically, it makes no sense to require view factor input by hand.
350 InputParameters params = _factory.getValidParams("ViewFactorObjectSurfaceRadiation");
351 params.set<std::vector<VariableName>>("temperature") = {getParam<VariableName>("temperature")};
352
353 std::vector<FunctionName> extended_emissivity;
354 for (unsigned int j = 0; j < _boundary_names.size(); ++j)
355 for (unsigned int i = 0; i < nPatch(j); ++i)
356 extended_emissivity.push_back(emissivity[j]);
357 params.set<std::vector<FunctionName>>("emissivity") = extended_emissivity;
358
359 // add boundary parameter
360 params.set<std::vector<BoundaryName>>("boundary") = radiationPatchBoundaryNames();
361
362 // add adiabatic_boundary parameter if required
363 if (isParamValid("adiabatic_boundary"))
364 params.set<std::vector<BoundaryName>>("adiabatic_boundary") = adiabaticPatchBoundaryNames();
365
366 // add isothermal sidesets if required
367 if (isParamValid("fixed_temperature_boundary"))
368 {
369 if (!isParamValid("fixed_boundary_temperatures"))
370 mooseError("fixed_temperature_boundary is provided so fixed_boundary_temperatures must be "
371 "provided too");
372
373 std::vector<BoundaryName> fixed_T_boundary_names =
374 getParam<std::vector<BoundaryName>>("fixed_temperature_boundary");
375
376 std::vector<FunctionName> fixed_T_funcs =
377 getParam<std::vector<FunctionName>>("fixed_boundary_temperatures");
378
379 // check length of fixed_boundary_temperatures
380 if (fixed_T_funcs.size() != fixed_T_boundary_names.size())
381 mooseError("Size of parameter fixed_boundary_temperatures and fixed_temperature_boundary "
382 "must be equal.");
383
384 std::vector<BoundaryName> fixed_T_patch_names;
385 std::vector<FunctionName> fixed_T_function_names;
386 for (unsigned int k = 0; k < fixed_T_boundary_names.size(); ++k)
387 {
388 BoundaryName bnd_name = fixed_T_boundary_names[k];
389
390 // find the right entry in _boundary_names
391 auto it = std::find(_boundary_names.begin(), _boundary_names.end(), bnd_name);
392
393 // check if entry was found: it must be found or an error would occur later
394 if (it == _boundary_names.end())
395 mooseError("Fixed temperature sideset ", bnd_name, " not present in boundary.");
396
397 // this is the position in the _boundary_names vector; this is what
398 // we are really after
399 auto index = std::distance(_boundary_names.begin(), it);
400
401 // collect the correct boundary names
402 for (auto & e : radiation_patch_names[index])
403 {
404 fixed_T_patch_names.push_back(e);
405 fixed_T_function_names.push_back(fixed_T_funcs[k]);
406 }
407 }
408 params.set<std::vector<BoundaryName>>("fixed_temperature_boundary") = fixed_T_patch_names;
409 params.set<std::vector<FunctionName>>("fixed_boundary_temperatures") = fixed_T_function_names;
410 }
411
412 // the view factor userobject name
413 params.set<UserObjectName>("view_factor_object_name") = viewFactorObjectName();
414
415 // this userobject needs to be executed on linear and timestep end
417 exec_enum = {EXEC_LINEAR, EXEC_TIMESTEP_END};
418 params.set<ExecFlagEnum>("execute_on") = exec_enum;
419
420 // add the object
421 _problem->addUserObject("ViewFactorObjectSurfaceRadiation", radiationObjectName(), params);
422}
const ExecFlagType EXEC_LINEAR
std::vector< std::vector< std::string > > radiationPatchNames() const
std::vector< BoundaryName > adiabaticPatchBoundaryNames() const
UserObjectName viewFactorObjectName() const
unsigned int nPatch(unsigned int j) const
provides the updated number of patches for this boundary
ExecFlagEnum getDefaultExecFlagEnum()

Referenced by act().

◆ addRayBCs()

void RadiationTransferAction::addRayBCs ( ) const
protected

Definition at line 283 of file RadiationTransferAction.C.

284{
285 if (_view_factor_calculator == "analytical")
286 return;
287
288 {
289 InputParameters params = _factory.getValidParams("ViewFactorRayBC");
290 params.set<std::vector<BoundaryName>>("boundary") = radiationPatchBoundaryNames();
291 params.set<RayTracingStudy *>("_ray_tracing_study") =
293 _problem->addObject<RayBoundaryConditionBase>("ViewFactorRayBC", rayBCName(), params);
294 }
295
296 // add symmetry BCs if applicable
297 const auto & symmetry_names = getParam<std::vector<BoundaryName>>("symmetry_boundary");
298 if (symmetry_names.size() > 0)
299 {
300 InputParameters params = _factory.getValidParams("ReflectRayBC");
301 params.set<std::vector<BoundaryName>>("boundary") = symmetry_names;
302 params.set<RayTracingStudy *>("_ray_tracing_study") =
304 _problem->addObject<RayBoundaryConditionBase>("ReflectRayBC", symmetryRayBCName(), params);
305 }
306}
std::string symmetryRayBCName() const
UserObjectName rayStudyName() const
Base class for the RayBC syntax.
Base class for Ray tracing studies that will generate Rays and then propagate all of them to terminat...
const T & getUserObject(const std::string &param_name, bool is_dependency=true) const
RayTracingStudy used to generate Rays for view factor computation using the angular quadrature method...

Referenced by act().

◆ addRayStudyObject()

void RadiationTransferAction::addRayStudyObject ( ) const
protected

Definition at line 258 of file RadiationTransferAction.C.

259{
260 if (_view_factor_calculator == "analytical")
261 return;
262
263 InputParameters params = _factory.getValidParams("ViewFactorRayStudy");
264
265 params.set<std::vector<BoundaryName>>("boundary") = radiationPatchBoundaryNames();
266
267 // set this object to be execute on initial only
269 exec_enum = {EXEC_INITIAL};
270 params.set<ExecFlagEnum>("execute_on") = exec_enum;
271
272 // set face order
273 params.set<MooseEnum>("face_order") = getParam<MooseEnum>("ray_tracing_face_order");
274 params.set<MooseEnum>("face_type") = getParam<MooseEnum>("ray_tracing_face_type");
275
276 // set angular quadrature
277 params.set<unsigned int>("polar_quad_order") = getParam<unsigned int>("polar_quad_order");
278 params.set<unsigned int>("azimuthal_quad_order") = getParam<unsigned int>("azimuthal_quad_order");
279 _problem->addUserObject("ViewFactorRayStudy", rayStudyName(), params);
280}

Referenced by act().

◆ addViewFactorObject()

void RadiationTransferAction::addViewFactorObject ( ) const
protected

Definition at line 229 of file RadiationTransferAction.C.

230{
231 // this userobject is only executed on initial
233 exec_enum = {EXEC_INITIAL};
234
235 if (_view_factor_calculator == "analytical")
236 {
237 // this branch adds the UnobstructedPlanarViewFactor
238 InputParameters params = _factory.getValidParams("UnobstructedPlanarViewFactor");
239 params.set<std::vector<BoundaryName>>("boundary") = radiationPatchBoundaryNames();
240 params.set<ExecFlagEnum>("execute_on") = exec_enum;
241
242 _problem->addUserObject("UnobstructedPlanarViewFactor", viewFactorObjectName(), params);
243 }
244 else if (_view_factor_calculator == "ray_tracing")
245 {
246 // this branch adds the ray tracing UO
247 InputParameters params = _factory.getValidParams("RayTracingViewFactor");
248 params.set<std::vector<BoundaryName>>("boundary") = radiationPatchBoundaryNames();
249 params.set<ExecFlagEnum>("execute_on") = exec_enum;
250 params.set<UserObjectName>("ray_study_name") = rayStudyName();
251 params.set<bool>("print_view_factor_info") = getParam<bool>("print_view_factor_info");
252 params.set<bool>("normalize_view_factor") = getParam<bool>("normalize_view_factor");
253 _problem->addUserObject("RayTracingViewFactor", viewFactorObjectName(), params);
254 }
255}

Referenced by act().

◆ adiabaticPatchBoundaryNames()

std::vector< BoundaryName > RadiationTransferAction::adiabaticPatchBoundaryNames ( ) const
protected

Definition at line 507 of file RadiationTransferAction.C.

508{
509 std::vector<BoundaryName> patch_boundary_names;
510 if (isParamValid("adiabatic_boundary"))
511 patch_boundary_names =
512 patchBoundaryNames(getParam<std::vector<BoundaryName>>("adiabatic_boundary"));
513 return patch_boundary_names;
514}
std::vector< BoundaryName > patchBoundaryNames(const std::vector< BoundaryName > &boundary_names) const

Referenced by addRadiationObject().

◆ bcRadiationPatchNames()

std::vector< std::vector< std::string > > RadiationTransferAction::bcRadiationPatchNames ( ) const
protected

Definition at line 446 of file RadiationTransferAction.C.

447{
448 auto ad_bnd_names = getParam<std::vector<BoundaryName>>("adiabatic_boundary");
449 auto ft_bnd_names = getParam<std::vector<BoundaryName>>("fixed_temperature_boundary");
450 std::vector<std::vector<std::string>> radiation_patch_names;
451 std::vector<BoundaryID> boundary_ids = _mesh->getBoundaryIDs(_boundary_names);
452 for (unsigned int j = 0; j < boundary_ids.size(); ++j)
453 {
454 boundary_id_type bid = boundary_ids[j];
455 BoundaryName bnd_name = _boundary_names[j];
456
457 // check if this sideset is adiabatic or isothermal
458 auto it_a = std::find(ad_bnd_names.begin(), ad_bnd_names.end(), bnd_name);
459 auto it_t = std::find(ft_bnd_names.begin(), ft_bnd_names.end(), bnd_name);
460 if (it_a != ad_bnd_names.end() || it_t != ft_bnd_names.end())
461 continue;
462
463 std::string base_name = _mesh->getBoundaryName(bid);
464 std::vector<std::string> bnames;
465 for (unsigned int i = 0; i < nPatch(j); ++i)
466 {
467 std::stringstream ss;
468 ss << base_name << "_" << i;
469 bnames.push_back(ss.str());
470 }
471 radiation_patch_names.push_back(bnames);
472 }
473 return radiation_patch_names;
474}
int8_t boundary_id_type

Referenced by addRadiationBCs().

◆ checkBoundaryParameterIsSubset()

void RadiationTransferAction::checkBoundaryParameterIsSubset ( const std::string &  param) const
protected

Checks that param boundaries are in the 'boundary' parameter.

Definition at line 176 of file RadiationTransferAction.C.

177{
178 const auto boundary_names = getParam<std::vector<BoundaryName>>(param);
179 for (const auto & bname : boundary_names)
180 if (std::find(_boundary_names.begin(), _boundary_names.end(), bname) == _boundary_names.end())
181 paramError(param, "The boundaries in '" + param + "' must be a subset of 'boundary'.");
182}

Referenced by RadiationTransferAction().

◆ meshGeneratorName()

MeshGeneratorName RadiationTransferAction::meshGeneratorName ( unsigned int  j) const
protected

Definition at line 574 of file RadiationTransferAction.C.

575{
576 std::stringstream ss;
577 ss << "patch_side_set_generator_" << _boundary_names[j];
578 return ss.str();
579}

Referenced by addMeshGenerator(), and nPatch().

◆ nPatch()

unsigned int RadiationTransferAction::nPatch ( unsigned int  j) const
protected

provides the updated number of patches for this boundary

Definition at line 564 of file RadiationTransferAction.C.

565{
567 const PatchSidesetGenerator * psg = dynamic_cast<const PatchSidesetGenerator *>(mg);
568 if (!psg)
569 mooseError("Failed to convert mesh generator ", mg->name(), " to PatchSidesetGenerator.");
570 return psg->nPatches();
571}
const MeshGenerator & getMeshGenerator(const std::string &name) const
Subdivides a sidesets into smaller patches each of which is going to be a new patch.
unsigned int nPatches() const

Referenced by addRadiationObject(), bcRadiationPatchNames(), patchBoundaryNames(), and radiationPatchNames().

◆ patchBoundaryNames()

std::vector< BoundaryName > RadiationTransferAction::patchBoundaryNames ( const std::vector< BoundaryName > &  boundary_names) const
protected

Definition at line 477 of file RadiationTransferAction.C.

479{
480 std::vector<BoundaryName> patch_boundary_names;
481 std::vector<BoundaryID> ids = _mesh->getBoundaryIDs(boundary_names_or_ids);
482 for (const auto i : index_range(boundary_names_or_ids))
483 {
484 const auto boundary_name_or_id = boundary_names_or_ids[i];
485 const auto it = std::find(_boundary_names.begin(), _boundary_names.end(), boundary_name_or_id);
486 mooseAssert(it != _boundary_names.end(), boundary_name_or_id + " not found in 'boundary'.");
487 const auto boundary_index = std::distance(_boundary_names.begin(), it);
488 const auto n_patches = nPatch(boundary_index);
489 const auto boundary_name = _mesh->getBoundaryName(ids[i]);
490 for (const auto j : make_range(n_patches))
491 {
492 std::stringstream ss;
493 ss << boundary_name << "_" << j;
494 patch_boundary_names.push_back(ss.str());
495 }
496 }
497 return patch_boundary_names;
498}
auto index_range(const T &sizable)
IntRange< T > make_range(T beg, T end)

Referenced by adiabaticPatchBoundaryNames(), and radiationPatchBoundaryNames().

◆ radiationObjectName()

UserObjectName RadiationTransferAction::radiationObjectName ( ) const
protected

Definition at line 333 of file RadiationTransferAction.C.

334{
335 return "view_factor_surface_radiation_" + _name;
336}

Referenced by addHeatFluxAuxKernel(), addRadiationBCs(), and addRadiationObject().

◆ radiationPatchBoundaryNames()

std::vector< BoundaryName > RadiationTransferAction::radiationPatchBoundaryNames ( ) const
protected

◆ radiationPatchNames()

std::vector< std::vector< std::string > > RadiationTransferAction::radiationPatchNames ( ) const
protected

Definition at line 425 of file RadiationTransferAction.C.

426{
427 std::vector<std::vector<std::string>> radiation_patch_names(_boundary_names.size());
428 std::vector<BoundaryID> boundary_ids = _mesh->getBoundaryIDs(_boundary_names);
429 for (unsigned int j = 0; j < boundary_ids.size(); ++j)
430 {
431 boundary_id_type bid = boundary_ids[j];
432 std::string base_name = _mesh->getBoundaryName(bid);
433 std::vector<std::string> bnames;
434 for (unsigned int i = 0; i < nPatch(j); ++i)
435 {
436 std::stringstream ss;
437 ss << base_name << "_" << i;
438 bnames.push_back(ss.str());
439 }
440 radiation_patch_names[j] = bnames;
441 }
442 return radiation_patch_names;
443}

Referenced by addRadiationObject().

◆ rayBCName()

std::string RadiationTransferAction::rayBCName ( ) const
protected

Definition at line 315 of file RadiationTransferAction.C.

316{
317 return "ray_bc_" + _name;
318}

Referenced by addRayBCs().

◆ rayStudyName()

UserObjectName RadiationTransferAction::rayStudyName ( ) const
protected

Definition at line 309 of file RadiationTransferAction.C.

310{
311 return "ray_study_uo_" + _name;
312}

Referenced by addRayBCs(), addRayStudyObject(), and addViewFactorObject().

◆ symmetryRayBCName()

std::string RadiationTransferAction::symmetryRayBCName ( ) const
protected

Definition at line 321 of file RadiationTransferAction.C.

322{
323 return "symmetry_ray_bc_" + _name;
324}

Referenced by addRayBCs().

◆ validParams()

InputParameters RadiationTransferAction::validParams ( )
static

Definition at line 27 of file RadiationTransferAction.C.

28{
31 "This action sets up the net radiation calculation between specified sidesets.");
32
33 params.addRequiredParam<std::vector<BoundaryName>>(
34 "boundary", "The boundaries that participate in the radiative exchange.");
35
36 params.addParam<std::vector<BoundaryName>>(
37 "adiabatic_boundary",
38 {},
39 "The adiabatic boundaries that participate in the radiative exchange.");
40
41 params.addParam<std::vector<BoundaryName>>(
42 "fixed_temperature_boundary",
43 {},
44 "The fixed temperature boundaries that participate in the radiative exchange.");
45
46 params.addParam<std::vector<FunctionName>>(
47 "fixed_boundary_temperatures", {}, "The temperatures of the fixed boundary.");
48
49 params.addRequiredParam<std::vector<unsigned int>>("n_patches",
50 "Number of radiation patches per sideset.");
51 MultiMooseEnum partitioning(
52 "default=-3 metis=-2 parmetis=-1 linear=0 centroid hilbert_sfc morton_sfc", "default");
53 partitioning.addValidName("grid");
55 "partitioners",
56 partitioning,
57 "Specifies a mesh partitioner to use when preparing the radiation patches.");
58
59 MultiMooseEnum direction("x y z radial");
60 params.addParam<MultiMooseEnum>("centroid_partitioner_directions",
61 direction,
62 "Specifies the sort direction if using the centroid partitioner. "
63 "Available options: x, y, z, radial");
64
65 params.addRequiredParam<VariableName>("temperature", "The coupled temperature variable.");
66 params.addRequiredParam<std::vector<FunctionName>>("emissivity",
67 "Emissivities for each boundary.");
68
69 MooseEnum view_factor_calculator("analytical ray_tracing", "ray_tracing");
70 params.addParam<MooseEnum>(
71 "view_factor_calculator", view_factor_calculator, "The view factor calculator being used.");
72
73 params.addParam<bool>(
74 "print_view_factor_info", false, "Flag to print information about computed view factors.");
75 params.addParam<bool>("normalize_view_factor",
76 true,
77 "Determines if view factors are normalized to sum to one (consistent with "
78 "their definition).");
79
80 std::vector<BoundaryName> empty = {};
81 params.addParam<std::vector<BoundaryName>>(
82 "symmetry_boundary",
83 empty,
84 "The sidesets that represent symmetry lines/planes for the problem. These sidesets do not "
85 "participate in the radiative exchange"
86 "so they should not be listed in the sidesets parameter.");
87
88 MooseEnum qtypes("GAUSS GRID", "GRID");
89 params.addParam<MooseEnum>(
90 "ray_tracing_face_type", qtypes, "The face quadrature rule type used for ray tracing.");
91
92 MooseEnum qorders("CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH "
93 "ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH "
94 "EIGHTTEENTH NINTEENTH TWENTIETH",
95 "CONSTANT");
96 params.addParam<MooseEnum>(
97 "ray_tracing_face_order", qorders, "The face quadrature rule order used for ray tracing.");
98
99 params.addParam<unsigned int>(
100 "polar_quad_order",
101 16,
102 "Order of the polar quadrature [polar angle is between ray and normal]. Must be even. Only "
103 "used if view_factor_calculator = ray_tracing.");
104 params.addParam<unsigned int>(
105 "azimuthal_quad_order",
106 8,
107 "Order of the azimuthal quadrature per quadrant [azimuthal angle is measured in "
108 "a plane perpendicular to the normal]. Only used if view_factor_calculator = "
109 "ray_tracing.");
110
111 params.addParam<bool>("add_heat_flux_aux", false, "If true, add a heat flux aux variable");
112 params.addParam<VariableName>(
113 "heat_flux_variable",
114 "Heat flux aux variable name; this must be provided if 'add_heat_flux_aux' is true");
115 params.addParam<std::vector<SubdomainName>>(
116 "heat_flux_aux_block", "Subdomains to use for heat flux aux if 'add_heat_flux_aux' is true");
117
118 return params;
119}
static InputParameters validParams()
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)

◆ viewFactorObjectName()

UserObjectName RadiationTransferAction::viewFactorObjectName ( ) const
protected

Definition at line 327 of file RadiationTransferAction.C.

328{
329 return "view_factor_uo_" + _name;
330}

Referenced by addRadiationObject(), and addViewFactorObject().

Member Data Documentation

◆ _add_heat_flux_aux

const bool RadiationTransferAction::_add_heat_flux_aux
protected

Whether to add heat flux aux.

Definition at line 60 of file RadiationTransferAction.h.

Referenced by act(), and RadiationTransferAction().

◆ _boundary_names

const std::vector<BoundaryName> RadiationTransferAction::_boundary_names
protected

◆ _heat_flux_aux_block

std::vector<SubdomainName> RadiationTransferAction::_heat_flux_aux_block
protected

Blocks to use for heat flux aux.

Definition at line 64 of file RadiationTransferAction.h.

Referenced by addHeatFluxAuxVariable(), and RadiationTransferAction().

◆ _heat_flux_variable

VariableName RadiationTransferAction::_heat_flux_variable
protected

Heat flux aux name.

Definition at line 62 of file RadiationTransferAction.h.

Referenced by addHeatFluxAuxKernel(), addHeatFluxAuxVariable(), and RadiationTransferAction().

◆ _view_factor_calculator

const MooseEnum RadiationTransferAction::_view_factor_calculator
protected

the type of view factor calculation being performed

Definition at line 57 of file RadiationTransferAction.h.

Referenced by addRayBCs(), addRayStudyObject(), addViewFactorObject(), and RadiationTransferAction().


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