- boundary_2dThe boundary of the 2D heat structure to couple
C++ Type:BoundaryName
Unit:(no unit assumed)
Controllable:No
Description:The boundary of the 2D heat structure to couple
- boundary_3dThe boundary of the 3D heat structure to couple
C++ Type:BoundaryName
Unit:(no unit assumed)
Controllable:No
Description:The boundary of the 3D heat structure to couple
- gap_thermal_conductivityGap thermal conductivity [W/(m-K)] as a function of temperature [K]
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Gap thermal conductivity [W/(m-K)] as a function of temperature [K]
- gap_thicknessGap thickness [m] as a function of temperature [K]
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Gap thickness [m] as a function of temperature [K]
- heat_structure_2dThe 2D heat structure to couple
C++ Type:std::string
Unit:(no unit assumed)
Controllable:No
Description:The 2D heat structure to couple
- heat_structure_3dThe 3D heat structure to couple
C++ Type:std::string
Unit:(no unit assumed)
Controllable:No
Description:The 3D heat structure to couple
HSCoupler2D3D
This component is used to couple a HeatStructureCylindrical and a HeatStructureFromFile3D via gap conduction, radiation, and convection.
Formulation
Overview
Heat fluxes are computed at each quadrature point of each face on the 3D heat structure boundary. These heat fluxes then make contributions to the 2D heat structure side:
where
is the heat flux on the 2D heat structure boundary at the quadrature point at the axial level ,
is the heat flux on the 3D heat structure boundary at a quadrature point at the same axial level and having an azimuthal position ,
is the area corresponding to the 2D quadrature point:
with , , and respectively being the quadrature Jacobian, quadrature weight, and coordinate transformation, and
is the area corresponding to the 3D quadrature point:
This approach guarantees energy conservation of this heat exchange.
The heat flux is composed of three pieces, corresponding to conduction, radiation, and convection:
Before describing these pieces, we describe some preliminaries.
Gap Thickness
The radius of the 2D heat structure boundary, , is provided directly as a constant from the corresponding heat structure component. The radius on the 3D heat structure boundary in general varies with position. However, these radii are not determined from the actual geometric positions. Rather, a gap thickness function is provided, and this is used to determine the radii on the 3D heat structure boundary. The gap thickness function is evaluated for each quadrature point on the 3D heat structure boundary at that point's gap temperature :
where
is the temperature on the 2D heat structure boundary at the quadrature point at the axial level , and
is the temperature on the 3D heat structure boundary at a quadrature point at the same axial level and having an azimuthal position .
This gap thickness is then added to the 2D heat structure boundary radius to get the 3D heat structure boundary radius for a quadrature point:
There is also a gap radius for each quadrature point:
Conduction Heat Flux
The conduction heat flux is computed using the model described in Cylindrical Gap Conduction Heat Flux; the conduction heat flux to the 3D heat structure side is
where the gap thermal conductivity is evaluated at the gap temperature:
Radiation Heat Flux
The radiation heat flux is computed using the model described in Cylindrical Gap Radiation Heat Flux; For each quadrature point on the 3D heat structure boundary, view factors are effectively computed between two surfaces, corresponding to infinitely long, concentric cylinders at the radii and (Incropera et al., 2002). This implies there is no heat transfer between a quadrature point on the 3D heat structure boundary and any other quadrature point on the 3D heat structure boundary. Putting this together,
where is the Stefan-Boltzmann constant.
Convection Heat Flux
The convection heat flux is computed as
where the gap heat transfer coefficient is evaluated at the gap temperature:
Restrictions and Assumptions
Currently, no contact () is permitted, but this restriction is planned to be removed in the future.
The meshes must be aligned, with each face on the 2D heat structure boundary pairing to multiple faces on the 3D heat structure boundary with the exact same axial coordinate. This alignment requirement includes quadrature point locations on each of these faces.
Usage
The parameters "heat_structure_2d" and "heat_structure_3d" specify the names of the 2D and 3D heat structures, respectively. "boundary_2d" and "boundary_3d" specify a single boundary corresponding to each heat structure, at which the heat exchange occurs.
The parameters "emissivity_2d", "emissivity_3d", "gap_thickness", "gap_thermal_conductivity", and "gap_htc" correspond to Functions of the relevant temperature; respectively, these correspond to
,
,
,
, and
.
The temperature values are substituted in place of the time coordinate for these Function
s.
The radiation component of the heat flux can be disabled by setting "include_radiation" to false
, and in this case the parameters "emissivity_2d" and "emissivity_3d" should not be specified.
MOOSE Configuration
Because a 2D surface is being coupled to a 3D surface, there is potentially a large number of degrees of freedom from the 3D surface coupled to degrees of freedom on the 2D surface. This coupling increases with azimuthal refinement of the 3D surface. This component uses automatic differentiation (AD) to compute the Jacobian matrix contributions used in Newton's method for solving the nonlinear system. For performance flexibility, MOOSE has a maximum AD container size, which currently by default is set to 53, which means that if a term like the 2D boundary heat flux depends on more than 53 degrees of freedom, then an error occurs. This maximum AD container size can be increased by configuring MOOSE and recompiling your application. See Maximum AD container size for more information.
For this component, the required size can be estimated as follows:
where is the maximum number of azimuthal divisions at any axial level. The factor of 4 is due to the 4 adjacent nodes for a quadrature point on a quadrilateral face, and the additional 6 is because of the normal coupling for a boundary node on the 2D side.
Input Parameters
- emissivity_2dEmissivity of the 2D heat structure boundary as a function of temperature [K]
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Emissivity of the 2D heat structure boundary as a function of temperature [K]
- emissivity_3dEmissivity of the 3D heat structure boundary as a function of temperature [K]
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Emissivity of the 3D heat structure boundary as a function of temperature [K]
- gap_htc0Gap heat transfer coefficient [W/(m^2-K)] as a function of temperature [K]
Default:0
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Gap heat transfer coefficient [W/(m^2-K)] as a function of temperature [K]
- include_radiationTrueInclude radiation component of heat flux
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Include radiation component of heat flux
Optional Parameters
- 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:No
Description:Set the enabled status of the MooseObject.
Advanced Parameters
Implementation
The implementation strategy for this component is as follows. The component first builds a mapping between the boundaries using MeshAlignment2D3D, where each element/face on the 2D boundary is mapped to several elements/faces on the 3D boundary. Then for each iteration, a StoreVariableByElemIDSideUserObject is executed on the 2D boundary to create a map of the 2D element IDs to the temperature values at each quadrature point on that element/face. Then a HSCoupler2D3DUserObject executes on the 3D boundary and uses the MeshAlignment2D3D
object to get the paired 2D boundary element/face and the StoreVariableByElemIDSideUserObject
to get the corresponding temperature values on the paired element. The heat fluxes are computed and stored by element ID. Finally, HSCoupler2D3DBC is used to apply the heat fluxes computed by HSCoupler2D3DUserObject
to each boundary (2D and 3D).
References
- Frank P. Incropera, David P. DeWitt, Theodore L. Bergman, Adrienne S. Lavine, and others.
Fundamentals of Heat and Mass Transfer.
Wiley New York, sixth edition, 2002.[BibTeX]