HeatStructureCylindrical

This component is a 2D heat structure that has axisymmetry; thus it is either a cylinder or cylindrical shell.

Usage

The initial temperature is given by the function parameter "initial_T".

The parameters "position", "orientation", "length", "n_elems", and "axial_region_names" are discussed in Axial Discretization.

The parameters "names", "widths", and "n_part_elems" are discussed in Radial Discretization.

There are two options for specification of the thermal properties on the heat structure:

  • Create a SolidProperties object for each unique heat structure material, and then provide "solid_properties" which corresponds to the SolidProperties object to use in each transverse region (each entry corresponds to the equally indexed entry in "names") and "solid_properties_T_ref", which provides the temperatures at which to evaluate the densities, since a constant density is to be used in each region, due to heat structures having a non-deformable mesh.

  • Create Materials object(s) supplying the following material properties on all blocks (see Blocks and Boundaries) of the heat structure mesh:

    Material PropertySymbolDescription
    densityρ\rhoDensity [kg/m3^3]
    specific_heatcpc_pSpecific heat capacity [J/(kg-K)]
    thermal_conductivitykkThermal conductivity [W/(m-K)]

If the domain has some inner radius, then this is specified with "inner_radius"; otherwise, it is assumed to be a solid cylinder.

Input Parameters

  • 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

  • n_part_elemsNumber of elements of each radial region

    C++ Type:std::vector<unsigned int>

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of elements of each radial region

  • namesName of each radial region

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of each radial region

  • 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]

  • widthsWidth of each radial region [m]

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Width of each radial region [m]

Required Parameters

  • axial_region_namesNames to assign to axial regions

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:Names to assign to axial regions

  • initial_TInitial temperature [K]

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:Initial temperature [K]

  • inner_radius0Inner radius of the heat structure [m]

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Inner radius of the heat structure [m]

  • num_rods1Number of rods represented by this heat structure

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of rods represented by this heat structure

  • offset_mesh_by_inner_radiusFalseOffset the mesh by the inner radius?

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Offset the mesh by the inner radius?

  • 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]

  • scaling_factor_temperature1Scaling factor for solid temperature variable.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Scaling factor for solid temperature variable.

  • solid_propertiesSolid properties object name for each radial region

    C++ Type:std::vector<UserObjectName>

    Unit:(no unit assumed)

    Controllable:No

    Description:Solid properties object name for each radial region

  • solid_properties_T_refDensity reference temperatures for each radial region. This is required if 'solid_properties' is provided. The density in each region will be a constant value computed by evaluating the density function at the reference temperature.

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Density reference temperatures for each radial region. This is required if 'solid_properties' is provided. The density in each region will be a constant value computed by evaluating the density function at the reference temperature.

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

Mesh

Axial Discretization

This component generates a mesh along a line segment in 3D space. The line segment is defined with a "start" point xstart\mathbf{x}_\text{start}, corresponding to either end, the direction d\mathbf{d} to the other end, and the distance in that direction, LL. Thus the other end of the line segment is

xend=xstart+Ld\eqp\mathbf{x}_\text{end} = \mathbf{x}_\text{start} + L \mathbf{d} \eqp

These quantities are defined using the following parameters:

  • "position": the "start" point xstart\mathbf{x}_\text{start},

  • "orientation": the direction d\mathbf{d} (which gets automatically normalized), and

  • "length": the length(s) that sum to LL.

The most basic mesh specification is given by a single value for the parameters "length" and "n_elems", which correspond to the length of the component and number of uniformly-sized elements to use. For example, the following parameters would specify a total length L=50L = 50 m, divided into 100 elements (each with width 0.5 m):

length = 50
n_elems = 100

The "length" and "n_elems" parameters can also be supplied with multiple values. Multiple values correspond to splitting the length into segments that can have different element sizes. However, within each segment, the discretization is assumed uniform. The numbers of elements in each segment are specified with the parameter "n_elems", with entries corresponding to the entries in "length". For example, the following would also specify a total length L=50L = 50 m with 100 total elements, but in this case the first 10 m have 40 elements of size 0.25 m, whereas the last 40 m have 60 elements of size 0.6ˉ0.\bar{6} m.

length = '10 40'
n_elems = '40 60'

When using more than one entry in the "length" and "n_elems" parameters, the parameter "axial_region_names" is used to provide names that are used in the generation of corresponding block and boundary names (see Blocks and Boundaries).

Radial Discretization

The domain may be divided up into any number (say, nn) of regions in the radial direction, which each get their own subdomain names and may use different thermal properties. For example, if the domain were a fuel rod, two regions could be used: the fuel itself and the cladding. The parameters "names", "widths", and "n_part_elems" are all lists of size nn, with entries corresponding to each radial region, ordered from the side closest to the axis of the component. "names" is a list of names to assign to each region, which will be used to create subdomain names and to refer to the regions in some objects. The radial width (thickness) of each region is specified using "widths", and the number of radial elements in each region is given by "n_part_elems".

Blocks and Boundaries

This component creates the following blocks, where <cname> is the user-given name of the component:

BlockDescription
<cname>:<rname>The radial region <rname>

This component creates the following boundaries:

BoundaryDescription
<cname>:innerThe innermost radial boundary
<cname>:outerThe outermost radial boundary
<cname>:<aname>:innerThe innermost radial boundary in the axial section <aname>
<cname>:<aname>:outerThe outermost radial boundary in the axial section <aname>
<cname>:startThe axial boundary of the end corresponding to the position parameter
<cname>:endThe axial boundary of the end opposite to the position parameter
<cname>:<rname>:startThe axial boundary of the end corresponding to the position parameter in the radial region <rname>
<cname>:<rname>:endThe axial boundary of the end opposite to the position parameter in the radial region <rname>
<cname>:<rname1>:<rname2>The radial boundary between the radial regions <rname1> and <rname2>
<cname>:<rname>:<aname1>:<aname2>The axial boundary in radial region <rname> between the axial regions <aname1> and <aname2>

Variables

The following variables are created:

VariableSymbolDescription
T_solidTTTemperature [K]

Formulation

The heat conduction equation is the following: ρcp\pdTt(kT)=q\eqc \rho c_p \pd{T}{t} - \nabla \cdot (k \nabla T) = q''' \eqc where

  • ρ\rho is density,

  • cpc_p is specific heat capacity,

  • kk is thermal conductivity,

  • TT is temperature, and

  • qq''' is a volumetric heat source.

Multiplying by a test function ϕi\phi_i and integrating by parts over the domain Ω\Omega gives \prρcp\pdTt,ϕiΩ+\prkT,ϕiΩkT,ϕinΩ=\prq,ϕiΩ\eqc \pr{\rho c_p \pd{T}{t}, \phi_i}_\Omega + \pr{k \nabla T, \nabla\phi_i}_\Omega - \left\langle k \nabla T, \phi_i\mathbf{n}\right\rangle_{\partial\Omega} = \pr{q''', \phi_i}_\Omega \eqc where Ω\partial\Omega is the boundary of the domain Ω\Omega.