Solid Properties Module
The Solid Properties module provides a consistent interface to solid properties. Unlike fluid properties that are oftentimes only a function of pressure and temperature (or two other state variables), solid properties are frequently a function of many other parameters in addition to temperature, such as accumulated radiation damage, oxidation state, and microstructure. Some commonly-used properties in physics simulations include thermal properties such as specific heat, thermal conductivity, and emissivity; and mechanical properties such as elastic modulus and Poisson ratio.
This module provides a consistent interface to define solid material properties. A flexible design permits extension by other applications to include custom properties. This module allows different solids to be used in a physics simulation by simply swapping the name of the solid properties userobject in a plug-and-play manner.
Always verify that the material properties provided in this module agree with the system you are modeling. The selection of particular correlations here does not constitute an endorsement of the accuracy of those correlations.
This module provides solid properties for different solids, organized according to the overall type of property. The overall design of this module is as follows:
UserObjects contain functions to compute various solid properties in terms of dependent quantities (temperature, porosity, etc.). Different "categories" of solid properties are grouped together into different userobjects. For example, common solid properties used in thermal simulations (specific heat, thermal conductivity), are provided by derived classes of the ThermalSolidProperties userobject. Mechanics properties (Young's modulus, Poisson ratio), would be provided by a separate "family" of userobjects.
Materials call these userobject functions to compute the material properties at quadrature points. Like the userobjects, these materials are grouped into "categories." For example, common solid properties for thermal simulations are evaluated by the ThermalSolidPropertiesMaterial.
Thermal properties
Thermal properties (density, specific heat, and thermal conductivity) are computed by userobjects inheriting from the ThermalSolidProperties base class. This class defines functions to compute these properties as a function of temperature:
compute isobaric specific heat -
Real cp_from_T(const Real & T)
compute thermal conductivity -
Real k_from_T(const Real & T)
compute density -
Real rho_from_T(const Real & T)
Functions to compute derivatives of these properties as a function of temperature are also available:
compute isobaric specific heat and its temperature derivative -
void cp_from_T(const Real & T, Real & cp, Real & dcp_dT)
compute thermal conductivity and its temperature derivative -
void k_from_T(const Real & T, Real & k, Real & dk_dT)
compute density and its temperature derivative -
void rho_from_T(const Real & T, Real & rho, Real & drho_dT)
Userobjects available in the Solid Properties module that provide thermal properties are:
An example will be provided later on this page for creating a new solid userobject.
On their own, these userobjects do not execute; their functions must be called from other objects. Some potentially useful classes that call them are:
ThermalSolidPropertiesFunctorMaterial: A functor material that declares functor material properties for density, thermal conductivity, isobaric specific heat, and specific internal energy. An option is provided for using a constant density. This functor material can have its functor material properties converted to regular AD or non-AD material properties by using it in conjunction with (AD)MaterialFunctorConverter.
ThermalSolidPropertiesMaterial and ConstantDensityThermalSolidPropertiesMaterial, which declare AD or non-AD material properties for density, thermal conductivity, and isobaric specific heat, using variable density and constant density, respectively.
ThermalSolidPropertiesPostprocessor evaluates density, thermal conductivity, or isobaric specific heat at a single temperature value.
Usage
The solid properties material can be accessed in MOOSE objects through the usual Material interface. Here, we show an example where thermal conductivity is needed in a kernel named HeatDiffusion
.
Source
To access the properties defined in the Solid Properties module in a MOOSE object, add the desired material properties to the class members:
(contrib/moose/modules/solid_properties/test/src/kernels/HeatDiffusion.C)In the header file of the MOOSE object where a solid material property is needed, const
references to the material properties are required:
The name _k
is arbitrary, and may be selected as desired per application. Then, material properties are used just as other MOOSE materials are used. For example, the weak residual for the heat diffusion kernel grabs the value of thermal conductivity at the present quadrature point.
Input file syntax
The userobjects defining the material properties are set up in the UserObjects
block. For example, to use stainless steel 316 thermal properties to provide the thermal conductivity in the HeatDiffusion
kernel above, the input file syntax would be:
Due to the consistent interface for solid properties, a different solid can be substituted in the input file by changing the type of the userobject. For example, to set thermal properties with a general functional dependence instead, the solid property module section of the input file is:
Creating additional solids
New solids can be added by inheriting from the userobject base class appropriate to the formulation and overriding the methods that describe the solid properties.
For example, suppose new thermal solid properties were desired for granite. The first step is to create a userobject named ThermalGraniteProperties
by inheriting from ThermalSolidProperties and overriding all methods that you would like to implement. The header file for your new userobject indicates all methods that will be defined.
Next, implement those methods in a ThermalGraniteProperties
userobject. You can provide a class description to make it clear what properties this new material provides.
Then, the remainder of the source file includes the material-specific implementations of the methods defined in the header file for granite.
Objects, Actions, and Syntax
FunctorMaterials
- Solid Properties App
- ThermalSolidPropertiesFunctorMaterialComputes solid thermal properties as a function of temperature
Materials
- Solid Properties App
- ADConstantDensityThermalSolidPropertiesMaterialComputes solid thermal properties as a function of temperature but with a constant density.
- ADThermalSolidPropertiesMaterialComputes solid thermal properties as a function of temperature
- ConstantDensityThermalSolidPropertiesMaterialComputes solid thermal properties as a function of temperature but with a constant density.
- ThermalSolidPropertiesMaterialComputes solid thermal properties as a function of temperature
Modules
- Solid Properties App
- SolidProperties
Modules/SolidProperties
- Solid Properties App
- ThermalCompositeSiCPropertiesComposite silicon carbide thermal properties.
- ThermalFunctionSolidPropertiesFunction-based thermal properties.
- ThermalGraphitePropertiesGraphite thermal properties.
- ThermalMonolithicSiCPropertiesMonolithic silicon carbide thermal properties.
- ThermalSS316PropertiesStainless steel 316 thermal properties.
- ThermalUCPropertiesUranium Carbide (UC) thermal properties (SI units).
Postprocessors
- Solid Properties App
- ThermalSolidPropertiesPostprocessorComputes a property from a ThermalSolidProperties object.
SolidProperties
- Solid Properties App
- ThermalCompositeSiCPropertiesComposite silicon carbide thermal properties.
- ThermalFunctionSolidPropertiesFunction-based thermal properties.
- ThermalGraphitePropertiesGraphite thermal properties.
- ThermalMonolithicSiCPropertiesMonolithic silicon carbide thermal properties.
- ThermalSS316PropertiesStainless steel 316 thermal properties.
- ThermalUCPropertiesUranium Carbide (UC) thermal properties (SI units).