Materials System
The material system is the primary mechanism for defining spatially varying properties. The system allows properties to be defined in a single object (a Material) and shared among the many other systems such as the Kernel or BoundaryCondition systems. Material objects are designed to directly couple to solution variables as well as other materials and therefore allow for capturing the true nonlinear behavior of the equations.
The material system relies on a producer/consumer relationship: Material objects produce properties and other objects (including materials) consume these properties.
The properties are produced on demand, thus the computed values are always up to date. For example, a property that relies on a solution variable (e.g., thermal conductivity as function of temperature) will be computed with the current temperature during the solve iterations, so the properties are tightly coupled.
The material system supports the use of automatic differentiation for property calculations, as such there are two approaches for producing and consuming properties: with and without automatic differentiation. The following sections detail the producing and consuming properties using the two approaches. To further understand automatic differentiation, please refer to the Automatic Differentiation page for more information.
The proceeding sections briefly describe the different aspects of a Material object for producing and computing the properties as well as how other objects consume the properties. For an example of how a Material object is created and used please refer to ex08_materials.md.
Producing/Computing Properties
Properties must be produced by a Material object by declaring the property with one of two methods:
declareProperty<TYPE>("property_name")declares a property with a name "property_name" to be computed by theMaterialobject.declareADProperty<TYPE>declares a property with a name "property_name" to be computed by theMaterialobject that will include automatic differentiation.
The TYPE is any valid C++ type such an int or Real or std::vector<Real>. The properties must then be computed within the computeQpProperties method defined within the object.
The property name is an arbitrary name of the property, this name should be set such that it corresponds to the value be computed (e.g., "diffusivity"). The name provided here is the same name that will be used for consuming the property. More information on names is provided in Property Names section below.
For example, consider a simulation that requires a diffusivity term. In the Material object header a property is declared (in the C++ since) as follows.
MaterialProperty<Real> & _diffusivity;
(moose/examples/ex08_materials/include/materials/ExampleMaterial.h)All properties will either be a MaterialProperty<TYPE> or ADMaterialProperty<TYPE> and must be a non-const reference. Again, the TYPE can be any C++ type. In this example, a scalar Real number is being used.
In the source file the reference is initialized in the initialization list using the aforementioned declare functions as follows. This declares the property (in the material property sense) to be computed.
_diffusivity(declareProperty<Real>("diffusivity")),
(moose/examples/ex08_materials/src/materials/ExampleMaterial.C)The final step for producing a property is to compute the value. The computation occurs within a Material object computeQpProperties method. As the method name suggests, the purpose of the method is to compute the values of properties at a quadrature point. This method is a virtual method that must be overridden. To do this, in the header the virtual method is declared (again in the C++ sense).
virtual void computeQpProperties() override;
(moose/examples/ex08_materials/include/materials/ExampleMaterial.h)In the source file the method is defined. For the current example this definition computes the "diffusivity" as well another term, refer to ex08_materials.md.
ExampleMaterial::computeQpProperties()
{
// Diffusivity is the value of the interpolated piece-wise function described by the user
_diffusivity[_qp] = _piecewise_func.sample(_q_point[_qp](2));
// Convection velocity is set equal to the gradient of the variable set by the user.
_convection_velocity[_qp] = _diffusion_gradient[_qp];
}
(moose/examples/ex08_materials/src/materials/ExampleMaterial.C)The purpose of the content of this method is to assign values for the properties at a quadrature point. Recall that "_diffusivity" is a reference to a MaterialProperty type. The MaterialProperty type is a container that stores the values of a property for each quadrature point. Therefore, this container must be indexed by _qp to compute the value for a specific quadrature point.
ExampleMaterial can call isPropertyActive(_diffusivity.id()) in its computeQpProperties to check whether this property is consumed during the run-time. This function provides a capability of skipping evaluations of certain material properties within a material when such evaluations are costly for performance optimization. MOOSE calls materials to do the evaluations when needed. This isPropertyActive routine gives code developers a finer control on the material property evaluation.
Consuming Properties
Objects that require material properties consume them using one of two functions
getMaterialProperty<TYPE>("property_name")retrieves a property with a name "property_name" to be consumed by the object.getADMaterialProperty<TYPE>("property_name")retrieves a property with a name "property_name" to be consumed by the object that will include automatic differentiation.
For an object to consume a property the same basic procedure is followed. First in the consuming objects header file a MaterialProperty with the correct type (e.g., Real for the diffusivity example) is declared (in the C++ sense) as follows. Notice, that the member variable is a const reference. The const is important. Consuming objects cannot modify a property, it only uses the property so it is marked to be constant.
const MaterialProperty<Real> & _diffusivity;
(moose/examples/ex08_materials/include/kernels/ExampleDiffusion.h)In the source file the reference is initialized in the initialization list using the aforementioned get methods. This method initializes the _diffusivity member variable to reference the desired value of the property as computed by the material object.
: Diffusion(parameters), _diffusivity(getMaterialProperty<Real>("diffusivity"))
(moose/examples/ex08_materials/src/kernels/ExampleDiffusion.C)The name used in the get method, "diffusivity", in this case is not arbitrary. This name corresponds with the name used to declare the property in the material object.
If a material property is declared for automatic differentiation (AD) using declareADProperty then it must be consumed with the getADMaterialProperty. The same is true for non-automatic differentiation; properties declared with declareProperty must be consumed with the getMaterialProperty method.
Optional Properties
Objects can weakly couple to material properties that may or may not exist.
getOptionalMaterialProperty<TYPE>("property_name")retrieves an optional property with a name "property_name" to be consumed by the object.getOptionalADMaterialProperty<TYPE>("property_name")retrieves an optional property with a name "property_name" to be consumed by the object that will include automatic differentiation.
This API returns a reference to an optional material property (OptionalMaterialProperty or OptionalADMaterialProperty). If the requested property is not provided by any material this reference will evaluate to false. It is the consuming object's responsibility to check for this before accessing the material property data. Note that the state of the returned reference is only finalized _after_ all materials have been constructed, so a validity check must _not_ be made in the constructor of a material class but either at time of first use in computeQpProperties or in initialSetup.
Property Names
When creating a Material object and declaring the properties that shall be computed, it is often desirable to allow for the property name to be changed via the input file. This may be accomplished by adding an input parameter for assigning the name. For example, considering the example above the following code snippet adds an input parameter, "diffusivity_name", that allows the input file to set the name of the diffusivity property, but by default the name remains "diffusivity".
params.addParam<MaterialPropertyName>("diffusivity_name", "diffusivity",
"The name of the diffusivity material property.");
In the material object, the declare function is simply changed to use the parameter name rather than string by itself. By default a property will be declared with the name "diffusivity".
_diffusivity_name(declareProperty<Real>("diffusivity_name")),
(moose/examples/ex08_materials/src/materials/ExampleMaterial.C)However, if the user wants to alter this name to something else, such as "not_diffusivity" then the input parameter "diffusivity_name" is simply added to the input file block for the material.
[Materials]
[example]
type = ExampleMaterial
diffusivity_name = not_diffusivity
[]
[]
On the consumer side, the get method will now be required to use the name "not_diffusivity" to retrieve the property. Consuming objects can also use the same procedure to allow for custom property names by adding a parameter and using the parameter name in the get method in the same fashion.
Default Material Properties
The MaterialPropertyName input parameter also provides the ability to set default values for scalar (Real) properties. In the above example, the input file can use number or parsed function (see ParsedFunction) to define a the property value. For example, the input snippet above could set a constant value.
[Materials]
[example]
type = ExampleMaterial
diffusivity_name = 12345
[]
[]
Stateful Material Properties
In general properties are computed on demand and not stored. However, in some cases values of material properties from a previous timestep may be required. To access properties two methods exist:
getMaterialPropertyOld<TYPE>returns a reference to the property from the previous timestep.getMaterialPropertyOlder<TYPE>returns a reference to the property from two timesteps before the current.
This is often referred to as a "state" variable, in MOOSE we refer to them as "stateful material properties." As stated, material properties are usually computed on demand.
When a stateful property is requested through one of the above methods this is no longer the case. When it is computed the value is also stored for every quadrature point on every element. As such, stateful properties can become memory intensive, especially if the property being stored is a vector or tensor value.
Material Property Output
Output of Material properties is enabled by setting the "outputs" parameter. The following example creates two additional variables called "mat1" and "mat2" that will show up in the output file. In this example, the exodus name is a special keyword used to signal to MOOSE that the material properties should be outputted to the output object created when setting Outputs/exodus=true.
[Materials<<<{"href": "index.html"}>>>]
[block_1]
type = OutputTestMaterial
block = 1
output_properties = 'real_property tensor_property'
outputs = exodus
variable = u
[]
[block_2]
type = OutputTestMaterial
block = 2
output_properties = 'vector_property tensor_property'
outputs = exodus
variable = u
[]
[]
[Outputs<<<{"href": "../Outputs/index.html"}>>>]
exodus<<<{"description": "Output the results using the default settings for Exodus output."}>>> = true
[](moose/test/tests/materials/output/output_block.i)If multiple output objects exist in the [Outputs] block, one or more names can be provided to the "outputs" parameter. Alternatively, the reserved output name all can be used to output the material property to all output objects in the [Outputs] block, while the reserved output name none can be used to prevent the material property from being outputted to any output object. If all or none is specified in the outputs parameter, no other additional names should be specified. In the following example, data from block_1 will be outputted to both exodus1 and exodus2 output Exodus objects, while block_2 will only be outputted to the exodus2 object.
[Materials<<<{"href": "index.html"}>>>]
[block_1]
type = OutputTestMaterial
block = 1
output_properties = 'real_property'
outputs = all
variable = u
[]
[block_2]
type = OutputTestMaterial
block = 2
output_properties = 'vector_property'
outputs = exodus2
variable = u
[]
[]
[Outputs<<<{"href": "../Outputs/index.html"}>>>]
[exodus1]
type = Exodus<<<{"description": "Object for output data in the Exodus format", "href": "../../source/outputs/Exodus.html"}>>>
hide<<<{"description": "A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names)."}>>> = u
[]
[exodus2]
type = Exodus<<<{"description": "Object for output data in the Exodus format", "href": "../../source/outputs/Exodus.html"}>>>
hide<<<{"description": "A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names)."}>>> = u
[]
[](moose/test/tests/materials/output/output_multiple_files.i)Material properties can be of arbitrary (C++) type, but not all types can be output. The following table lists the types of properties that are available for automatic output.
| Type | AuxKernel | Variable Name(s) |
|---|---|---|
| Real | MaterialRealAux | prop |
| RealVectorValue | MaterialRealVectorValueAux | prop_1, prop_2, and prop_3 |
| RealTensorValue | MaterialRealTensorValueAux | prop_11, prop_12, prop_13, prop_21, etc. |
Material sorting
Materials are sorted such that one material may consume a property produced by another material and know that the consumed property will be up-to-date, e.g. the producer material will execute before the consumer material. If a cyclic dependency is detected between two materials, then MOOSE will produce an error.
Functor Material Properties
Functor materials are a special kind of materials used for on-the-fly material property evaluation. Please refer to the syntax page for FunctorMaterials for more information.
Advanced Topics
Evaluation of Material Properties on Element Faces
MOOSE creates three copies of a non-boundary restricted material for evaluations on quadrature points of elements, element faces on both the current element side and the neighboring element side. The name of the element interior material is the material name from the input file, while the name of the element face material is the material name appended with _face and the name of the neighbor face material is the material name appended with _neighbor. The element material can be identified in a material with its member variable _bnd=false. The other two copies have _bnd=true. The element face material and neighbor face material differentiate with each other by the value of another member variable _neighbor. If a material declares multiple material properties and some of them are not needed on element faces, users can switch off their declaration and evaluation based on member variable _bnd.
Interface Material Objects
MOOSE allows a material to be defined on an internal boundary of a mesh with a specific material type InterfaceMaterial. Material properties declared in interface materials are available on both sides of the boundary. Interface materials allows users to evaluate the properties on element faces based on quantities on both sides of the element face. Interface materials are often used along with InterfaceKernel.
Discrete Material Objects
A "Discrete" Material is an object that may be detached from MOOSE and computed explicitly from other objects. An object inheriting from MaterialPropertyInterface may explicitly call the compute methods of a Material object via the getMaterial method.
The following should be considered when computing Material properties explicitly.
It is possible to disable the automatic computation of a
Materialobject by MOOSE by setting thecompute=falseparameter.When
compute=falseis set the compute method (computeQpProperties) is not called by MOOSE, instead it must be called explicitly in your application using thecomputePropertiesmethod that accepts a quadrature point index.When
compute=falsean additional method should be defined,resetQpProperties, which sets the properties to a safe value (e.g., 0) for later calls to the compute method. Not doing this can lead to erroneous material properties values.
The original intent for this functionality was to enable to ability for material properties to be computed via iteration by another object, as in the following example. First, consider define a material (RecomputeMaterial) that computes the value of a function and its derivative.
and
where v is known value and not a function of p. The following is the compute portion of this object.
void
RecomputeMaterial::computeQpProperties()
{
Real x = _p[_qp];
_f[_qp] = x * x - _constant;
_f_prime[_qp] = 2 * x;
}
(moose/test/src/materials/RecomputeMaterial.C)Second, define another material (NewtonMaterial) that computes the value of using Newton iterations. This material declares a material property (_p) which is what is solved for by iterating on the material properties containing f and f' from RecomputeMaterial. The _discrete member is a reference to a Material object retrieved with getMaterial.
void
NewtonMaterial::computeQpProperties()
{
_p[_qp] = 0.5; // initial guess
// Only attempt to solve if iterations are to be taken. This is usually not required, but needed
// here to retain the old test behavior that would not trigger a discrete material evaluation. The
// NestedSolve class will always evaluate the residual for the initial guess (and will return a
// success state if the initial guess was exact).
if (getParam<unsigned int>("max_iterations") > 0)
_nested_solve.nonlinear(
_p[_qp],
// Lambda function to compute residual and jacobian. The initial guess is not
// used here as it (_p) is directly coupled in the discrete material.
[&](const Real & /*guess*/, Real & r, Real & j)
{
_discrete->computePropertiesAtQp(_qp);
r = _f[_qp];
j = _f_prime[_qp];
});
}
(moose/test/src/materials/NewtonMaterial.C)To create and use a "Discrete" Material use the following to guide the process.
Create a
Materialobject by, in typical MOOSE fashion, inheriting from theMaterialobject in your own application.In your input file, set
compute=falsefor this new object.From within another object (e.g., another Material) that inherits from
MaterialPropertyInterfacecall thegetMaterialmethod. Note, this method returns a reference to aMaterialobject, be sure to include&when calling or declaring the variable.When needed, call the
computePropertiesmethod of theMaterialbeing sure to provide the current quadrature point index to the method (_qpin most cases).
Available Objects
- Moose App
- ADCoupledGradientMaterialCreates a gradient material equal to the gradient of the coupled variable times a scalar material property.
- ADCoupledValueFunctionMaterialCompute a function value from coupled variables
- ADDerivativeParsedMaterialParsed Function Material with automatic derivatives.
- ADDerivativeSumMaterialMeta-material to sum up multiple derivative materials
- ADFluxFromGradientMaterialComputes a flux vector material property based on the gradient of a coupled variable and a scalar diffusivity.
- ADFunctorChangeFunctorMaterialAdds a functor material property that computes the change in a functor value over a time step, fixed point iteration, or nonlinear iteration.
- ADGenericConstant2DArrayA material evaluating one material property in type of RealEigenMatrix
- ADGenericConstantFunctorMaterialFunctorMaterial object for declaring properties that are populated by evaluation of a Functor (a constant, variable, function or functor material property) objects.
- ADGenericConstantMaterialDeclares material properties based on names and values prescribed by input parameters.
- ADGenericConstantRankTwoTensorObject for declaring a constant rank two tensor as a material property.
- ADGenericConstantRealVectorValueObject for declaring a constant 3-vector as a material property.
- ADGenericConstantStdVectorMaterialDeclares material properties based on names and vector values prescribed by input parameters.
- ADGenericConstantSymmetricRankTwoTensorObject for declaring a constant symmetric rank two tensor as a material property.
- ADGenericConstantVectorFunctorMaterialFunctorMaterial object for declaring vector properties that are populated by evaluation of functor (constants, functions, variables, matprops) object.
- ADGenericConstantVectorMaterialDeclares material properties based on names and vector values prescribed by input parameters.
- ADGenericFunctionFunctorMaterialFunctorMaterial object for declaring properties that are populated by evaluation of a Functor (a constant, variable, function or functor material property) objects.
- ADGenericFunctionMaterialMaterial object for declaring properties that are populated by evaluation of Function object.
- ADGenericFunctionRankTwoTensorMaterial object for defining rank two tensor properties using functions.
- ADGenericFunctionVectorMaterialMaterial object for declaring vector properties that are populated by evaluation of Function objects.
- ADGenericFunctorGradientMaterialFunctorMaterial object for declaring properties that are populated by evaluation of gradients of Functors (a constant, variable, function or functor material property) objects.
- ADGenericFunctorMaterialFunctorMaterial object for declaring properties that are populated by evaluation of a Functor (a constant, variable, function or functor material property) objects.
- ADGenericFunctorTimeDerivativeMaterialFunctorMaterial object for declaring properties that are populated by evaluation of time derivatives of Functors objects. (such as variables, constants, postprocessors). The time derivative is only returned if the 'dot' functor routine is implemented.
- ADGenericVectorFunctorMaterialFunctorMaterial object for declaring vector properties that are populated by evaluation of functor (constants, functions, variables, matprops) object.
- ADParsedFunctorMaterialComputes a functor material from a parsed expression of other functors.
- ADParsedMaterialParsed expression Material.
- ADPiecewiseByBlockFunctorMaterialComputes a property value on a per-subdomain basis
- ADPiecewiseByBlockVectorFunctorMaterialComputes a property value on a per-subdomain basis
- ADPiecewiseConstantByBlockMaterialComputes a property value on a per-subdomain basis
- ADPiecewiseLinearInterpolationMaterialCompute a property using a piecewise linear interpolation to define its dependence on a variable
- ADVectorFromComponentVariablesMaterialComputes a vector material property from coupled variables
- ADVectorMagnitudeFunctorMaterialThis class takes up to three scalar-valued functors corresponding to vector components or a single vector functor and computes the Euclidean norm.
- CoupledGradientMaterialCreates a gradient material equal to the gradient of the coupled variable times a scalar material property.
- CoupledValueFunctionMaterialCompute a function value from coupled variables
- DerivativeParsedMaterialParsed Function Material with automatic derivatives.
- DerivativeSumMaterialMeta-material to sum up multiple derivative materials
- FVADPropValPerSubdomainMaterialComputes a property value on a per-subdomain basis
- FVPropValPerSubdomainMaterialComputes a property value on a per-subdomain basis
- FunctorADConverterConverts regular functors to AD functors and AD functors to regular functors
- FunctorChangeFunctorMaterialAdds a functor material property that computes the change in a functor value over a time step, fixed point iteration, or nonlinear iteration.
- FunctorSmootherCreates smoother functor(s) using various averaging techniques
- GenericConstant2DArrayA material evaluating one material property in type of RealEigenMatrix
- GenericConstantArrayA material evaluating one material property in type of RealEigenVector
- GenericConstantFunctorMaterialFunctorMaterial object for declaring properties that are populated by evaluation of a Functor (a constant, variable, function or functor material property) objects.
- GenericConstantMaterialDeclares material properties based on names and values prescribed by input parameters.
- GenericConstantRankTwoTensorObject for declaring a constant rank two tensor as a material property.
- GenericConstantRealVectorValueObject for declaring a constant 3-vector as a material property.
- GenericConstantStdVectorMaterialDeclares material properties based on names and vector values prescribed by input parameters.
- GenericConstantSymmetricRankTwoTensorObject for declaring a constant symmetric rank two tensor as a material property.
- GenericConstantVectorFunctorMaterialFunctorMaterial object for declaring vector properties that are populated by evaluation of functor (constants, functions, variables, matprops) object.
- GenericConstantVectorMaterialDeclares material properties based on names and vector values prescribed by input parameters.
- GenericFunctionFunctorMaterialFunctorMaterial object for declaring properties that are populated by evaluation of a Functor (a constant, variable, function or functor material property) objects.
- GenericFunctionMaterialMaterial object for declaring properties that are populated by evaluation of Function object.
- GenericFunctionRankTwoTensorMaterial object for defining rank two tensor properties using functions.
- GenericFunctionVectorMaterialMaterial object for declaring vector properties that are populated by evaluation of Function objects.
- GenericFunctorGradientMaterialFunctorMaterial object for declaring properties that are populated by evaluation of gradients of Functors (a constant, variable, function or functor material property) objects.
- GenericFunctorMaterialFunctorMaterial object for declaring properties that are populated by evaluation of a Functor (a constant, variable, function or functor material property) objects.
- GenericFunctorTimeDerivativeMaterialFunctorMaterial object for declaring properties that are populated by evaluation of time derivatives of Functors objects. (such as variables, constants, postprocessors). The time derivative is only returned if the 'dot' functor routine is implemented.
- GenericVectorFunctorMaterialFunctorMaterial object for declaring vector properties that are populated by evaluation of functor (constants, functions, variables, matprops) object.
- InterpolatedStatefulMaterialRankFourTensorAccess old state from projected data.
- InterpolatedStatefulMaterialRankTwoTensorAccess old state from projected data.
- InterpolatedStatefulMaterialRealAccess old state from projected data.
- InterpolatedStatefulMaterialRealVectorValueAccess old state from projected data.
- MaterialADConverterConverts regular material properties to AD properties and vice versa
- MaterialConverterConverts regular material properties to AD properties and vice versa
- MaterialFunctorConverterConverts functor to non-AD and AD regular material properties
- NEML2ToMOOSERankFourTensorMaterialPropertyProvide an output (or its derivative) from a NEML2 model as a MOOSE material property of type RankFourTensorTempl<double>.
- NEML2ToMOOSERankTwoTensorMaterialPropertyProvide an output (or its derivative) from a NEML2 model as a MOOSE material property of type RankTwoTensorTempl<double>.
- NEML2ToMOOSERealMaterialPropertyProvide an output (or its derivative) from a NEML2 model as a MOOSE material property of type double.
- NEML2ToMOOSERealVectorValueMaterialPropertyProvide an output (or its derivative) from a NEML2 model as a MOOSE material property of type libMesh::VectorValue<double>.
- NEML2ToMOOSESymmetricRankFourTensorMaterialPropertyProvide an output (or its derivative) from a NEML2 model as a MOOSE material property of type SymmetricRankFourTensorTempl<double>.
- NEML2ToMOOSESymmetricRankTwoTensorMaterialPropertyProvide an output (or its derivative) from a NEML2 model as a MOOSE material property of type SymmetricRankTwoTensorTempl<double>.
- ParsedFunctorMaterialComputes a functor material from a parsed expression of other functors.
- ParsedMaterialParsed expression Material.
- PiecewiseByBlockFunctorMaterialComputes a property value on a per-subdomain basis
- PiecewiseByBlockVectorFunctorMaterialComputes a property value on a per-subdomain basis
- PiecewiseConstantByBlockMaterialComputes a property value on a per-subdomain basis
- PiecewiseLinearInterpolationMaterialCompute a property using a piecewise linear interpolation to define its dependence on a variable
- RankFourTensorMaterialADConverterConverts regular material properties to AD properties and vice versa
- RankFourTensorMaterialConverterConverts regular material properties to AD properties and vice versa
- RankTwoTensorFromComponentPropertiesAssembles a RankTwoTensor from scalar material properties or constants
- RankTwoTensorMaterialADConverterConverts regular material properties to AD properties and vice versa
- RankTwoTensorMaterialConverterConverts regular material properties to AD properties and vice versa
- VectorFromComponentVariablesMaterialComputes a vector material property from coupled variables
- VectorFunctorADConverterConverts regular functors to AD functors and AD functors to regular functors
- VectorMagnitudeFunctorMaterialThis class takes up to three scalar-valued functors corresponding to vector components or a single vector functor and computes the Euclidean norm.
- VectorMaterialFunctorConverterConverts functor to non-AD and AD regular material properties
- Misc App
- ADArrheniusMaterialPropertyArbitrary material property of the sum of an arbitary number () of Arrhenius functions , where is the frequency factor, is the activation energy, and is the gas constant.
- ADDensityCreates density material property. This class is deprecated, and its functionalityis replaced by StrainAdjustedDensity for cases when the density should be adjustedto account for material deformation. If it is not desired to adjust the density fordeformation, a variety of general-purpose Materials, such as GenericConstantMaterialor ParsedMaterial can be used to define the density. A StrainAdjustedDensity can also be used with '0 0 0' for the displacements.
- ArrheniusMaterialPropertyArbitrary material property of the sum of an arbitary number () of Arrhenius functions , where is the frequency factor, is the activation energy, and is the gas constant.
- DensityCreates density material property. This class is deprecated, and its functionalityis replaced by StrainAdjustedDensity for cases when the density should be adjustedto account for material deformation. If it is not desired to adjust the density fordeformation, a variety of general-purpose Materials, such as GenericConstantMaterialor ParsedMaterial can be used to define the density. A StrainAdjustedDensity can also be used with '0 0 0' for the displacements.
- Fluid Properties App
- ADSaturationPressureMaterialComputes saturation pressure at some temperature.
- ADSaturationTemperatureMaterialComputes saturation temperature at some pressure
- ADSurfaceTensionMaterialComputes surface tension at some temperature
- FluidPropertiesMaterialComputes fluid properties using (specific internal energy, specific volume) formulation
- FluidPropertiesMaterialPTFluid properties using the (pressure, temperature) formulation
- FluidPropertiesMaterialVEComputes fluid properties using (specific internal energy, specific volume) formulation
- SaturationPressureMaterialComputes saturation pressure at some temperature.
- SodiumPropertiesMaterialMaterial properties for liquid sodium sampled from SodiumProperties.
- Navier Stokes App
- ADDittusBoelterFunctorMaterialComputes wall heat transfer coefficient using Dittus-Boelter equation
- ADFunctorEffectiveDynamicViscosityComputes the effective dynamic viscosity mu_eff = mu + mu_t / factor
- AirAir.
- ConservedVarValuesMaterialProvides access to variables for a conserved variable set of density, total fluid energy, and momentum
- DittusBoelterFunctorMaterialComputes wall heat transfer coefficient using Dittus-Boelter equation
- ExponentialFrictionFunctorMaterialComputes a Reynolds number-exponential friction factor.
- ExponentialFrictionMaterialComputes a Reynolds number-exponential friction factor.
- FunctorEffectiveDynamicViscosityComputes the effective dynamic viscosity mu_eff = mu + mu_t / factor
- FunctorErgunDragCoefficientsMaterial providing linear and quadratic drag coefficients based on the correlation developed by Ergun.
- FunctorKappaFluidZero-thermal dispersion conductivity
- GeneralFluidPropsComputes fluid properties using a (P, T) formulation
- GeneralFunctorFluidPropsCreates functor fluid properties using a (P, T) formulation
- GenericPorousMediumMaterialComputes generic material properties related to simulation of fluid flow in a porous medium
- INSAD3EqnThis material computes properties needed for stabilized formulations of the mass, momentum, and energy equations.
- INSADMaterialThis is the material class used to compute some of the strong residuals for the INS equations.
- INSADStabilized3EqnThis is the material class used to compute the stabilization parameter tau for momentum and tau_energy for the energy equation.
- INSADTauMaterialThis is the material class used to compute the stabilization parameter tau.
- INSFEMaterialComputes generic material properties related to simulation of fluid flow
- INSFVEnthalpyFunctorMaterialThis is the material class used to compute enthalpy for the incompressible/weakly-compressible finite-volume implementation of the Navier-Stokes equations.
- INSFVEnthalpyMaterialThis is the material class used to compute enthalpy for the incompressible/weakly-compressible finite-volume implementation of the Navier-Stokes equations.
- INSFVMushyPorousFrictionFunctorMaterialComputes the mushy zone porous resistance for solidification/melting problems.
- INSFVMushyPorousFrictionMaterialComputes the mushy zone porous resistance for solidification/melting problems.
- INSFVkEpsilonViscosityFunctorMaterialComputes the turbulent dynamic viscosity given k and epsilon.
- INSFVkEpsilonViscosityMaterialComputes the turbulent dynamic viscosity given k and epsilon.
- LinearFVEnthalpyFunctorMaterialCreates functors for conversions between specific enthalpy and temperature
- LinearFrictionFactorFunctorMaterialMaterial class used to compute a friction factor of the form A * f(r, t) + B * g(r, t) * |v_I| with A, B vector constants, f(r, t) and g(r, t) functors of space and time, and |v_I| the interstitial speed
- MDFluidMaterialComputes generic material properties related to simulation of fluid flow
- MixingLengthTurbulentViscosityFunctorMaterialComputes the material property corresponding to the total viscositycomprising the mixing length model turbulent total_viscosityand the molecular viscosity.
- MixingLengthTurbulentViscosityMaterialComputes the material property corresponding to the total viscositycomprising the mixing length model turbulent total_viscosityand the molecular viscosity.
- NSFVDispersePhaseDragFunctorMaterialComputes drag coefficient for dispersed phase.
- NSFVFrictionFlowDiodeFunctorMaterialIncreases the anistropic friction coefficients, linear or quadratic, by K_i * |direction_i| when the diode is turned on with a boolean
- NSFVFrictionFlowDiodeMaterialIncreases the anistropic friction coefficients, linear or quadratic, by K_i * |direction_i| when the diode is turned on with a boolean
- NSFVMixtureFunctorMaterialCompute the arithmetic mean of material properties using a phase fraction.
- NSFVMixtureMaterialCompute the arithmetic mean of material properties using a phase fraction.
- NSFVPumpFunctorMaterialComputes the effective pump body force.
- NSFVPumpMaterialComputes the effective pump body force.
- NonADGeneralFunctorFluidPropsCreates functor fluid properties using a (P, T) formulation
- PINSFEMaterialComputes generic material properties related to simulation of fluid flow in a porous medium
- PINSFVSpeedFunctorMaterialThis is the material class used to compute the interstitial velocity norm for the incompressible and weakly compressible primitive superficial finite-volume implementation of porous media equations.
- PorousConservedVarMaterialProvides access to variables for a conserved variable set of density, total fluid energy, and momentum
- PorousMixedVarMaterialProvides access to variables for a primitive variable set of pressure, temperature, and superficial velocity
- PorousPrimitiveVarMaterialProvides access to variables for a primitive variable set of pressure, temperature, and superficial velocity
- ReynoldsNumberFunctorMaterialComputes a Reynolds number.
- RhoFromPTFunctorMaterialComputes the density from coupled pressure and temperature functors (variables, functions, functor material properties
- SoundspeedMatComputes the speed of sound
- ThermalDiffusivityFunctorMaterialComputes the thermal diffusivity given the thermal conductivity, specific heat capacity, and fluid density.
- WCNSFV2PSlipVelocityFunctorMaterialComputes the slip velocity for two-phase mixture model.
- WCNSLinearFVMixtureFunctorMaterialCompute the arithmetic mean of material properties using a phase fraction.
- Rdg App
- AEFVMaterialA material kernel for the advection equation using a cell-centered finite volume method.
- Heat Transfer App
- ADAnisoHeatConductionMaterialGeneral-purpose material model for anisotropic heat conduction
- ADChurchillChuHTCFunctorMaterialComputes a heat transfer coefficient using the Churchill-Chu correlation for natural convection.
- ADConvectionHeatFluxFunctorMaterialComputes a convection heat flux from a solid surface to a fluid.
- ADCylindricalGapHeatFluxFunctorMaterialComputes cylindrical gap heat flux due to conduction and radiation.
- ADElectricalConductivityCalculates resistivity and electrical conductivity as a function of temperature, using copper for parameter defaults.
- ADFinEfficiencyFunctorMaterialComputes fin efficiency.
- ADFinEnhancementFactorFunctorMaterialComputes a heat transfer enhancement factor for fins.
- ADHeatConductionMaterialGeneral-purpose material model for heat conduction
- ADRadiativeP1DiffusionCoefficientMaterialComputes the P1 diffusion coefficient from the opacity and effective scattering cross section.
- AnisoHeatConductionMaterialGeneral-purpose material model for anisotropic heat conduction
- ChurchillChuHTCFunctorMaterialComputes a heat transfer coefficient using the Churchill-Chu correlation for natural convection.
- ConvectionHeatFluxFunctorMaterialComputes a convection heat flux from a solid surface to a fluid.
- CylindricalGapHeatFluxFunctorMaterialComputes cylindrical gap heat flux due to conduction and radiation.
- ElectricalConductivityCalculates resistivity and electrical conductivity as a function of temperature, using copper for parameter defaults.
- ElectromagneticHeatingMaterialMaterial class used to provide the electric field as a material property and computes the residual contributions for electromagnetic/electrostatic heating objects.
- FinEfficiencyFunctorMaterialComputes fin efficiency.
- FinEnhancementFactorFunctorMaterialComputes a heat transfer enhancement factor for fins.
- FunctionPathEllipsoidHeatSourceDouble ellipsoid volumetric source heat with function path.
- GapConductanceMaterial to compute an effective gap conductance based on the thermal conductivity of the gap and diffusive approximation to the radiative heat transfer.
- GapConductanceConstantMaterial to compute a constant, prescribed gap conductance
- HeatConductionMaterialGeneral-purpose material model for heat conduction
- RadiativeP1DiffusionCoefficientMaterialComputes the P1 diffusion coefficient from the opacity and effective scattering cross section.
- SemiconductorLinearConductivityCalculates electrical conductivity of a semiconductor from temperature
- SideSetHeatTransferMaterialThis material constructs the necessary coefficients and properties for SideSetHeatTransferKernel.
- ThermalComplianceComputes cost sensitivity needed for multimaterial SIMP method.
- ThermalSensitivityComputes cost sensitivity needed for multimaterial SIMP method.
Available Actions
- Moose App
- AddMaterialActionAdd a Material object to the simulation.