- TSolid side temperature variable
C++ Type:VariableName
Unit:(no unit assumed)
Controllable:No
Description:Solid side temperature variable
- T_fluidVariable(s) on the solid side into which to transfer the fluid temperature(s)
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Variable(s) on the solid side into which to transfer the fluid temperature(s)
- T_wallVariable on the flow channel side into which to transfer the solid temperature
C++ Type:VariableName
Unit:(no unit assumed)
Controllable:No
Description:Variable on the flow channel side into which to transfer the solid temperature
- boundaryBoundary name(s) on the solid side
C++ Type:std::vector<BoundaryName>
Unit:(no unit assumed)
Controllable:No
Description:Boundary name(s) on the solid side
- htcVariable(s) on the solid side into which to transfer the heat transfer coefficient(s)
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Variable(s) on the solid side into which to transfer the heat transfer coefficient(s)
- multi_appThe name of the multi-app.
C++ Type:std::string
Unit:(no unit assumed)
Controllable:No
Description:The name of the multi-app.
CoupledHeatTransferAction
Description
This action creates many of the low-level objects needed to perform a convective heat transfer multiphysics coupling with a 1-D flow channel. It assumes that the domain external to the flow channel is the master-app, and the application(s) containing the flow channel(s) are the sub-apps. Hereafter the external domain is referred to as the "solid side", and the flow channel is referred to as the "fluid side".
This action is suitable for coupling to either single-phase or multi-phase flow channels. The general formulation it uses for the heat fluxes to the solid side is
(1)where is the fluid phase index, is the solid-side temperature, is the temperature of phase , is the heat transfer coefficient of phase , and is the wall contact fraction of phase .
The action creates the following MOOSE objects:
A CoupledConvectiveHeatFluxBC on the boundaries provided in the "boundary" parameter, which implements the heat flux boundary condition described by Eq. (1).
A NearestPointLayeredSideAverage user object to compute the average of the solid-side temperature variable (specified by the "T" parameter) for each axial layer, corresponding to each of the elements in the flow channel. The layers are determined by the parameters "position", "orientation", "rotation", "length", and "n_elems", which correspond to the parameters of the same names in the coupled flow channel. These parameters should be copied from the sub input file.
A MultiAppUserObjectTransfer to transfer the solid-side temperature layer averages into the sub-app variable provided via the "T_wall" parameter.
A MultiAppUserObjectTransfer to transfer each of the phase temperature layer averages, provided by the user object(s) specified in the "T_fluid_user_objects" parameter, into the master-app variables specified by the "T_fluid" parameter.
A MultiAppUserObjectTransfer to transfer each of the phase heat transfer coefficient layer averages, provided by the user object(s) specified in the "htc_user_objects" parameter, into the master-app variables specified by the "htc" parameter.
If multi-phase, a MultiAppUserObjectTransfer to transfer each of the phase wall contact fraction layer averages, provided by the user object(s) specified in the "kappa_user_objects" parameter, into the master-app variables specified by the "kappa" parameter.
Instructions for the Master Input File
The following must be defined in the master-app input file:
AuxVariables
for the fluid temperature(s), heat transfer coefficient(s), and wall contact fractions (if multi-phase). For example,It is recommended that the FE type match that of the corresponding variables in the coupled flow channel.
MultiApps
for the flow-channel sub-app(s). For example,
Instructions for the Sub Input File
The following must be defined in the sub-app input file:
AuxVariables
for the fluid temperature(s), heat transfer coefficient(s), and wall contact fractions (if multi-phase). For example, for THM's single-phase flow model, the fluid temperature is already available as an aux variable, but the wall heat transfer coefficient is an AD material property. Thus a MaterialRealAux must be created:LayeredAverage user objects for the fluid temperature(s), heat transfer coefficient(s), and wall contact fractions (if multi-phase). For example,
A component to implement the flow channel heat source corresponding to Eq. (1). For example, for THM's single-phase flow model, the HeatTransferFromExternalAppTemperature1Phase component is used.
Input Parameters
- T_fluid_user_objectsSpatial user object(s) holding the fluid temperature values
C++ Type:std::vector<UserObjectName>
Unit:(no unit assumed)
Controllable:No
Description:Spatial user object(s) holding the fluid temperature values
- active__all__ If specified only the blocks named will be visited and made active
Default:__all__
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:If specified only the blocks named will be visited and made active
- fixed_bounding_box_sizeThe 'fixed_bounding_box_size' value to use for each MultiAppGeneralFieldUserObjectTransfer. If this parameter is not provided, a greedy search will be used instead of bounding boxes, which may be slower.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:The 'fixed_bounding_box_size' value to use for each MultiAppGeneralFieldUserObjectTransfer. If this parameter is not provided, a greedy search will be used instead of bounding boxes, which may be slower.
- htc_user_objectsSpatial user object(s) holding the heat transfer coefficient values
C++ Type:std::vector<UserObjectName>
Unit:(no unit assumed)
Controllable:No
Description:Spatial user object(s) holding the heat transfer coefficient values
- inactiveIf specified blocks matching these identifiers will be skipped.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:If specified blocks matching these identifiers will be skipped.
- kappaVariables on the solid side into which to transfer the wall contact fractions
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Variables on the solid side into which to transfer the wall contact fractions
- kappa_user_objectsSpatial user object(s) holding the wall contact fraction values
C++ Type:std::vector<UserObjectName>
Unit:(no unit assumed)
Controllable:No
Description:Spatial user object(s) holding the wall contact fraction values
- lengthLength of each axial section [m]
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Length of each axial section [m]
- n_elemsNumber of elements in each axial section
C++ Type:std::vector<unsigned int>
Unit:(no unit assumed)
Controllable:No
Description:Number of elements in each axial section
- orientationDirection of axis from start position to end position (no need to normalize)
C++ Type:libMesh::VectorValue<double>
Unit:(no unit assumed)
Controllable:No
Description:Direction of axis from start position to end position (no need to normalize)
- positionStart position of axis in 3-D space [m]
C++ Type:libMesh::Point
Unit:(no unit assumed)
Controllable:No
Description:Start position of axis in 3-D space [m]
- positionsSub-app positions. Each set of 3 values represents a Point.
C++ Type:std::vector<libMesh::Point>
Unit:(no unit assumed)
Controllable:No
Description:Sub-app positions. Each set of 3 values represents a Point.
- positions_fileName of file containing sub-app positions. Each set of 3 values represents a Point.
C++ Type:FileName
Unit:(no unit assumed)
Controllable:No
Description:Name of file containing sub-app positions. Each set of 3 values represents a Point.
- rotation0Angle of rotation about the x-axis [degrees]
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Angle of rotation about the x-axis [degrees]
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.
- skip_coordinate_collapsingTrueWhether to skip coordinate collapsing (translation and rotation are still performed, only XYZ, RZ etc collapsing is skipped) when performing mapping and inverse mapping coordinate transformation operations. This parameter should only be set by users who really know what they're doing.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether to skip coordinate collapsing (translation and rotation are still performed, only XYZ, RZ etc collapsing is skipped) when performing mapping and inverse mapping coordinate transformation operations. This parameter should only be set by users who really know what they're doing.
Advanced Parameters
Example
Heat conduction input file:
(contrib/moose/modules/thermal_hydraulics/test/tests/actions/coupled_heat_transfer_action/master.i)Flow channel input file:
(contrib/moose/modules/thermal_hydraulics/test/tests/actions/coupled_heat_transfer_action/sub.i)