- boundaryThe list of boundary IDs from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Unit:(no unit assumed)
Controllable:No
Description:The list of boundary IDs from the mesh where this object applies
- emissivityEmissivities for each boundary.
C++ Type:std::vector<FunctionName>
Unit:(no unit assumed)
Controllable:No
Description:Emissivities for each boundary.
- temperatureThe coupled temperature variable.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The coupled temperature variable.
- view_factorsThe view factors from sideset i to sideset j.
C++ Type:std::vector<std::vector<double>>
Unit:(no unit assumed)
Controllable:No
Description:The view factors from sideset i to sideset j.
ConstantViewFactorSurfaceRadiation
Description
ConstantViewFactorSurfaceRadiation
implements the exchange of heat by radiation between sidesets by the net radiation method. The net radiation method is valid if the surfaces are gray, diffuse radiators. The purpose of the ConstantViewFactorSurfaceRadiation
is to provide the means to model radiative exchange for coarse-grained model. ConstantViewFactorSurfaceRadiation
does not compute radiative exchange between element surfaces, but it computes radiative transfer only in an average sense between sidesets.
The ConstantViewFactorSurfaceRadiation
allows coupling radiative heat transfer to regions where the heat equation is solved. The net heat transfer caused by radiative heat transfer is coupled to the temperature field by GrayLambertNeumannBC
. ConstantViewFactorSurfaceRadiation
also supports the definition of adiabatic and fixed temperature sidesets. The temperature variable, i.e. the variable of the heat conduction equation, does not need to be defined on adiabatic and fixed temperature boundaries. This is particularly useful in cavities, where temperature is only defined on sidesets immediately adjacent to the heat conduction domain and not on the adiabatic and isothermal walls enclosing the cavity. There are three different types of boundary conditions in ConstantViewFactorSurfaceRadiation
:
VARIABLE_TEMPERATURE
are sidesets where temperature is provided by thetemperature
variable. The heat equation is coupled to theConstantViewFactorSurfaceRadiation
through these boundaries.FIXED_TEMPERATURE
are sidesets with temperature given as a function. The difference toVARIABLE_TEMPERATURE
is that we do not need to solve for temperature onFIXED_TEMPERATURE
.FIXED_TEMPERATURE
sidesets can for example be the outside of a cavity that is in radiative heat transfer with the domain but is kept at constant temperature by being in contact with an effective coolant.ADIABATIC
sidesets have a zero net heat-flux. This implies that the inflow of radiation has to equal the outflow of radiation. The surface temperature assumes the value at which this condition is true.ADIABATIC
sidesets do not require the temperature variable to be defined.
Explanation of the input parameters
This paragraph describes the input structure of the ConstantViewFactorSurfaceRadiation
object. The following parameters are defined in detail:
temperature
: the user must provide the name of the temperature variable as thetemperature
parameter.temperature
is the variable that the heat conduction equation solves for.boundary
contains the names of _all_ sidesets that participate in the radiative heat exchange.fixed_temperature_boundary
should list all sidesets that are fixed temperature boundaries.fixed_temperature_boundary
must be a subset of theboundary
array.fixed_boundary_temperatures
contains function names specifying the temperatures on the fixed temperature boundaries.fixed_boundary_temperatures
must be the same length asfixed_temperature_boundary
.adiabatic_boundary
should list all sidesets that are adiabatic boundaries.adiabatic_boundary
must be a subset of theboundary
array.view_factors
lists the view factors from sideset to sideset . The ordering of theview_factors
follows the ordering inboundary
. View factors must be added as square arrays. This may appear redundant because missing view factors can be computed using reciprocity, but this makes it impossible to check that each row of the view factor matrix sums to 1. This is absolutely necessary for conserving energy and ensuring stability of a coupled radiative transfer, heat conduction calculation. Row sums that are less than 5 percent off, are corrected to sum to 1. If the row sum is off by more than this threshold, an error is thrown. This is an example of the format ofview_factors
for three surfaces:
Example Input syntax
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 2
nx = 1
ny = 1
[]
[Problem]
kernel_coverage_check = false
[]
[Variables]
[./temperature]
initial_condition = 300
[../]
[]
[UserObjects]
[./gray_lambert]
type = ConstantViewFactorSurfaceRadiation
boundary = 'bottom top left right'
fixed_temperature_boundary = 'bottom top'
fixed_boundary_temperatures = '550 300'
adiabatic_boundary = 'right left'
emissivity = '1 0.75 0.75 0.75'
temperature = temperature
view_factors = '0 0.123 0.6928 0.1841;
0.123 0 0.1841 0.6928;
0.2771 0.0736 0.4458 0.2035;
0.0736 0.2771 0.2035 0.4458'
[../]
[]
[VectorPostprocessors]
[./lambert_vpp]
type = SurfaceRadiationVectorPostprocessor
surface_radiation_object_name = gray_lambert
information = 'temperature emissivity radiosity heat_flux_density'
[../]
[./view_factors]
type = ViewfactorVectorPostprocessor
surface_radiation_object_name = gray_lambert
[../]
[]
[Postprocessors]
[./heat_flux_density_bottom]
type = GrayLambertSurfaceRadiationPP
surface_radiation_object_name = gray_lambert
return_type = HEAT_FLUX_DENSITY
boundary = bottom
[../]
[./temperature_left]
type = GrayLambertSurfaceRadiationPP
surface_radiation_object_name = gray_lambert
return_type = TEMPERATURE
boundary = left
[../]
[./temperature_right]
type = GrayLambertSurfaceRadiationPP
surface_radiation_object_name = gray_lambert
return_type = TEMPERATURE
boundary = right
[../]
[./brightness_top]
type = GrayLambertSurfaceRadiationPP
surface_radiation_object_name = gray_lambert
return_type = RADIOSITY
boundary = top
[../]
[]
[Executioner]
type = Transient
num_steps = 1
[]
(moose/modules/heat_transfer/test/tests/gray_lambert_radiator/gray_lambert_cavity.i)Input Parameters
- adiabatic_boundaryThe list of boundary IDs from the mesh that are adiabatic.
C++ Type:std::vector<BoundaryName>
Unit:(no unit assumed)
Controllable:No
Description:The list of boundary IDs from the mesh that are adiabatic.
- execute_onTIMESTEP_ENDThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
Default:TIMESTEP_END
C++ Type:ExecFlagEnum
Unit:(no unit assumed)
Controllable:No
Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
- 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 list of boundary IDs from the mesh with fixed temperatures.
C++ Type:std::vector<BoundaryName>
Unit:(no unit assumed)
Controllable:No
Description:The list of boundary IDs from the mesh with fixed temperatures.
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- stefan_boltzmann_constant5.67037e-08The Stefan-Boltzmann constant. Default value is in units of [W / m^2 K^4].
Default:5.67037e-08
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The Stefan-Boltzmann constant. Default value is in units of [W / m^2 K^4].
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Optional Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
Default:0
C++ Type:int
Unit:(no unit assumed)
Controllable:No
Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
- force_postauxFalseForces the UserObject to be executed in POSTAUX
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in POSTAUX
- force_preauxFalseForces the UserObject to be executed in PREAUX
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in PREAUX
- force_preicFalseForces the UserObject to be executed in PREIC during initial setup
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in PREIC during initial setup
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.