- boundaryThe boundaries that participate in the radiative exchange.
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The boundaries that participate in the radiative exchange.
- emissivityEmissivities for each boundary.
C++ Type:std::vector<FunctionName>
Unit:(no unit assumed)
Controllable:No
Description:Emissivities for each boundary.
- n_patchesNumber of radiation patches per sideset.
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Number of radiation patches per sideset.
- temperatureThe coupled temperature variable.
C++ Type:VariableName
Unit:(no unit assumed)
Controllable:No
Description:The coupled temperature variable.
The Net Radiation Method System
The GrayDiffuseRadiation
syntax invokes the Radiation Transfer Action. It simplifies setting up gray, diffuse radiative exchange problems. It requires the user to provide boundaries, emissivities on these boundaries, and the type of boundary: ADIABATIC
, FIXED_TEMPERATURE
, VARIABLE_TEMPERATURE
; VARIABLE_TEMPERATURE
are all boundaries that are not listed in the union of "adiabatic_boundary" and "fixed_temperature_boundary".
The GrayDiffuseRadiation
syntax allows to split the boundaries into radiation patches using the "n_patches" parameter. This allows the computation of more accurate view factors between participating boundaries.
Assumed geometry
The GrayDiffuseRadiation
syntax assumes that radiation is exchanged in a cavity that is filled by a vacuum or a medium that is transparent to thermal radiation. The cavity must be enclosed by the boundaries specified in parameter "boundary". If the cavity is not enclosed, the result of the computation may be incorrect without MOOSE issuing a warning or error.
By default, MOOSE's raytracing module is used for calculating view factors. The method is discussed in detail in RayTracingViewFactor. The parameter "view_factor_calculator" can be set to "analytical" to force the use of UnobstructedPlanarViewFactor; at this point this is maintained as backward compatibility option and it may be removed in the future.
The "ray_tracing_face_order" parameter is important because it controls the accuracy of the view factor computation. The raytracing computation uses the QGRID
quadrature available in libMesh which places quadrature points at uniform distances on the from and to boundary faces. Increasing the "ray_tracing_face_order" increases the accuracy of the view factors. Note, that mesh refinement also enhances the accuracy of view factors, but at the expense of more elements being crossed during the raytracing procedure. Uniformly increasing the number of quadrature points using "ray_tracing_face_order" is essentially equivalent to selectively refining the mesh on the faces in radiative transfer.
Available Actions
- Heat Transfer App
- RadiationTransferActionThis action sets up the net radiation calculation between specified sidesets.
Example Input syntax
[Problem<<<{"href": "../Problem/index.html"}>>>]
kernel_coverage_check = false
[]
[Mesh<<<{"href": "../Mesh/index.html"}>>>]
type = MeshGeneratorMesh
[./cmg]
type = CartesianMeshGenerator<<<{"description": "This CartesianMeshGenerator creates a non-uniform Cartesian mesh.", "href": "../../source/meshgenerators/CartesianMeshGenerator.html"}>>>
dim<<<{"description": "The dimension of the mesh to be generated"}>>> = 2
dx<<<{"description": "Intervals in the X direction"}>>> = '1 1.3 1.9'
ix<<<{"description": "Number of grids in all intervals in the X direction (default to all one)"}>>> = '3 3 3'
dy<<<{"description": "Intervals in the Y direction (required when dim>1 otherwise ignored)"}>>> = '2 1.2 0.9'
iy<<<{"description": "Number of grids in all intervals in the Y direction (default to all one)"}>>> = '3 3 3'
subdomain_id<<<{"description": "Block IDs (default to all zero)"}>>> = '0 1 0
4 5 2
0 3 0'
[../]
[./inner_bottom]
type = SideSetsBetweenSubdomainsGenerator<<<{"description": "MeshGenerator that creates a sideset composed of the nodes located between two or more subdomains.", "href": "../../source/meshgenerators/SideSetsBetweenSubdomainsGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = cmg
primary_block<<<{"description": "The primary set of blocks for which to draw a sideset between"}>>> = 1
paired_block<<<{"description": "The paired set of blocks for which to draw a sideset between"}>>> = 5
new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = 'inner_bottom'
[../]
[./inner_left]
type = SideSetsBetweenSubdomainsGenerator<<<{"description": "MeshGenerator that creates a sideset composed of the nodes located between two or more subdomains.", "href": "../../source/meshgenerators/SideSetsBetweenSubdomainsGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = inner_bottom
primary_block<<<{"description": "The primary set of blocks for which to draw a sideset between"}>>> = 4
paired_block<<<{"description": "The paired set of blocks for which to draw a sideset between"}>>> = 5
new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = 'inner_left'
[../]
[./inner_right]
type = SideSetsBetweenSubdomainsGenerator<<<{"description": "MeshGenerator that creates a sideset composed of the nodes located between two or more subdomains.", "href": "../../source/meshgenerators/SideSetsBetweenSubdomainsGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = inner_left
primary_block<<<{"description": "The primary set of blocks for which to draw a sideset between"}>>> = 2
paired_block<<<{"description": "The paired set of blocks for which to draw a sideset between"}>>> = 5
new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = 'inner_right'
[../]
[./inner_top]
type = SideSetsBetweenSubdomainsGenerator<<<{"description": "MeshGenerator that creates a sideset composed of the nodes located between two or more subdomains.", "href": "../../source/meshgenerators/SideSetsBetweenSubdomainsGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = inner_right
primary_block<<<{"description": "The primary set of blocks for which to draw a sideset between"}>>> = 3
paired_block<<<{"description": "The paired set of blocks for which to draw a sideset between"}>>> = 5
new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = 'inner_top'
[../]
[./rename]
type = RenameBlockGenerator<<<{"description": "Changes the block IDs and/or block names for a given set of blocks defined by either block ID or block name. The changes are independent of ordering. The merging of blocks is supported.", "href": "../../source/meshgenerators/RenameBlockGenerator.html"}>>>
old_block<<<{"description": "Elements with these block ID(s)/name(s) will be given the new block information specified in 'new_block'"}>>> = '1 2 3 4'
new_block<<<{"description": "The new block ID(s)/name(s) to be given by the elements defined in 'old_block'."}>>> = '0 0 0 0'
input<<<{"description": "The mesh we want to modify"}>>> = inner_top
[../]
[]
[Variables<<<{"href": "../Variables/index.html"}>>>]
[./temperature]
block = 0
[../]
[]
[Kernels<<<{"href": "../Kernels/index.html"}>>>]
[./heat_conduction]
type = HeatConduction<<<{"description": "Diffusive heat conduction term $-\\nabla\\cdot(k\\nabla T)$ of the thermal energy conservation equation", "href": "../../source/kernels/HeatConduction.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = temperature
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 0
diffusion_coefficient<<<{"description": "Property name of the diffusion coefficient"}>>> = 5
[../]
[]
[GrayDiffuseRadiation<<<{"href": "index.html"}>>>]
[./cavity]
boundary<<<{"description": "The boundaries that participate in the radiative exchange."}>>> = '4 5 6 7'
emissivity<<<{"description": "Emissivities for each boundary."}>>> = '0.9 0.8 0.4 1'
n_patches<<<{"description": "Number of radiation patches per sideset."}>>> = '2 2 2 3'
partitioners<<<{"description": "Specifies a mesh partitioner to use when preparing the radiation patches."}>>> = 'centroid centroid centroid centroid'
centroid_partitioner_directions<<<{"description": "Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial"}>>> = 'x y y x'
temperature<<<{"description": "The coupled temperature variable."}>>> = temperature
adiabatic_boundary<<<{"description": "The adiabatic boundaries that participate in the radiative exchange."}>>> = '7'
fixed_temperature_boundary<<<{"description": "The fixed temperature boundaries that participate in the radiative exchange."}>>> = '4'
fixed_boundary_temperatures<<<{"description": "The temperatures of the fixed boundary."}>>> = '1200'
view_factor_calculator<<<{"description": "The view factor calculator being used."}>>> = analytical
[../]
[]
[BCs<<<{"href": "../BCs/index.html"}>>>]
[./left]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = temperature
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = left
value<<<{"description": "Value of the BC"}>>> = 600
[../]
[./right]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = temperature
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = right
value<<<{"description": "Value of the BC"}>>> = 300
[../]
[]
[Postprocessors<<<{"href": "../Postprocessors/index.html"}>>>]
[./average_T_inner_right]
type = SideAverageValue<<<{"description": "Computes the average value of a variable on a sideset. Note that this cannot be used on the centerline of an axisymmetric model.", "href": "../../source/postprocessors/SideAverageValue.html"}>>>
variable<<<{"description": "The name of the variable which this postprocessor integrates"}>>> = temperature
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = inner_right
[../]
[]
[Executioner<<<{"href": "../Executioner/index.html"}>>>]
type = Steady
[]
[Outputs<<<{"href": "../Outputs/index.html"}>>>]
exodus<<<{"description": "Output the results using the default settings for Exodus output."}>>> = true
[]
(moose/modules/heat_transfer/test/tests/radiation_transfer_action/radiative_transfer_action.i)Input Parameters
- active__all__ If specified only the blocks named will be visited and made active
Default:__all__
C++ Type:std::vector<std::string>
Controllable:No
Description:If specified only the blocks named will be visited and made active
- adiabatic_boundaryThe adiabatic boundaries that participate in the radiative exchange.
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The adiabatic boundaries that participate in the radiative exchange.
- azimuthal_quad_order8Order of the azimuthal quadrature per quadrant [azimuthal angle is measured in a plane perpendicular to the normal]. Only used if view_factor_calculator = ray_tracing.
Default:8
C++ Type:unsigned int
Controllable:No
Description:Order of the azimuthal quadrature per quadrant [azimuthal angle is measured in a plane perpendicular to the normal]. Only used if view_factor_calculator = ray_tracing.
- centroid_partitioner_directionsSpecifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial
C++ Type:MultiMooseEnum
Controllable:No
Description:Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial
- fixed_boundary_temperaturesThe temperatures of the fixed boundary.
C++ Type:std::vector<FunctionName>
Unit:(no unit assumed)
Controllable:No
Description:The temperatures of the fixed boundary.
- fixed_temperature_boundaryThe fixed temperature boundaries that participate in the radiative exchange.
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The fixed temperature boundaries that participate in the radiative exchange.
- inactiveIf specified blocks matching these identifiers will be skipped.
C++ Type:std::vector<std::string>
Controllable:No
Description:If specified blocks matching these identifiers will be skipped.
- normalize_view_factorTrueDetermines if view factors are normalized to sum to one (consistent with their definition).
Default:True
C++ Type:bool
Controllable:No
Description:Determines if view factors are normalized to sum to one (consistent with their definition).
- partitionersdefaultSpecifies a mesh partitioner to use when preparing the radiation patches.
Default:default
C++ Type:MultiMooseEnum
Controllable:No
Description:Specifies a mesh partitioner to use when preparing the radiation patches.
- polar_quad_order16Order of the polar quadrature [polar angle is between ray and normal]. Must be even. Only used if view_factor_calculator = ray_tracing.
Default:16
C++ Type:unsigned int
Controllable:No
Description:Order of the polar quadrature [polar angle is between ray and normal]. Must be even. Only used if view_factor_calculator = ray_tracing.
- print_view_factor_infoFalseFlag to print information about computed view factors.
Default:False
C++ Type:bool
Controllable:No
Description:Flag to print information about computed view factors.
- ray_tracing_face_orderCONSTANTThe face quadrature rule order used for ray tracing.
Default:CONSTANT
C++ Type:MooseEnum
Controllable:No
Description:The face quadrature rule order used for ray tracing.
- ray_tracing_face_typeGRIDThe face quadrature rule type used for ray tracing.
Default:GRID
C++ Type:MooseEnum
Controllable:No
Description:The face quadrature rule type used for ray tracing.
- symmetry_boundaryThe sidesets that represent symmetry lines/planes for the problem. These sidesets do not participate in the radiative exchangeso they should not be listed in the sidesets parameter.
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The sidesets that represent symmetry lines/planes for the problem. These sidesets do not participate in the radiative exchangeso they should not be listed in the sidesets parameter.
- view_factor_calculatorray_tracingThe view factor calculator being used.
Default:ray_tracing
C++ Type:MooseEnum
Controllable:No
Description:The view factor calculator being used.
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.