Kokkos UserObjects System
Before reading this documentation, consider reading the following materials first for a better understanding of this documentation:
UserObjects System to understand the MOOSE user object system,
Postprocessors System to understand the MOOSE postprocessor system,
VectorPostprocessors System to understand the MOOSE vector postprocessor system,
Reporters System to understand the MOOSE reporter system,
Getting Started with Kokkos-MOOSE to understand the programming practices for Kokkos-MOOSE,
Kokkos Kernels System to understand the common design pattern of objects in Kokkos-MOOSE.
Currently, the following types of user objects are supported in Kokkos-MOOSE including their derivatives (postprocessors, vector postprocessors, and reporters), which all should be registered with registerKokkosUserObject():
Moose::Kokkos::ElementUserObjectMoose::Kokkos::SideUserObjectMoose::Kokkos::NodalUserObject
The hook method execute() is now defined as an inlined public method with the following signature:
template <typename Derived>
KOKKOS_FUNCTION void execute(Datum & datum) const;
For other CPU APIs, Kokkos-MOOSE user objects share the same interface with the original MOOSE objects except threadJoin(), which is undefined in Kokkos-MOOSE user objects as they have separate parallel loops dispatched by Kokkos.
The dependencies between Kokkos-MOOSE user objects and the original MOOSE user objects are not automatically respected, and it is highly discouraged to have dependencies between them. However, if you need objects from both of those categories to be executed in a specific order, you can manually specify the execution_order_group parameter. A negative group may be specified to execute before the default group (0). For the same group, Kokkos-MOOSE user objects are always executed prior to the original MOOSE user objects. For this reason, the Kokkos version of general user object (Moose::Kokkos::GeneralUserObject) is still provided in case there is a general user object having dependencies with other Kokkos-MOOSE user objects, although it does not execute any parallel loop. A Kokkos-MOOSE general user object should be registered with the standard registerMooseObject() macro.
Different types of Kokkos-MOOSE user objects are executed without any predefined order (dependencies are still respected).
Reducers
Postprocessors, vector postprocessors, and reporters often perform calculations that aggregate data. Such aggregation calculation is also known as reduction operation. If your calculation is considered more suitable for a reduction operation than an ordinary parallel operation, you can make your user object a Reducer object by defining different hook methods, which will use a different parallelization scheme from regular parallel objects.
Reduction operations are not trivial on GPU due to its massively parallel nature that requires the data race to be carefully managed. Therefore, you cannot directly perform reduction operations on your own variables. Instead, the reduction operations should be performed on a preallocated buffer defined by the reducer. Every reducer should allocate the buffer with the desired size by calling allocateReductionBuffer() prior to the calculation, which can be done either in the constructor or in the initialize() hook. It allocates _reduction_buffer, which is a one-dimensional Kokkos::View defined in the CPU space. The hook method is now named as reduce() and receives an additional argument result that points to a buffer where you need to perform your reduction operations. This buffer has the same size with _reduction_buffer, but it is a buffer internally defined by Kokkos and is different from _reduction_buffer:
template <typename Derived>
KOKKOS_FUNCTION void reduce(Datum & datum, Real * result) const;
A reducer also requires two more hook methods to be defined in your derived object, which are join() and init(). They have the following signatures:
template <typename Derived>
KOKKOS_FUNCTION void join(Real * result, const Real * source) const;
template <typename Derived>
KOKKOS_FUNCTION void init(Real * result) const;
join() can be considered as a replacement of threadJoin() in the original MOOSE objects. It combines the values of source into result and should typically implement the same reduction operation with reduce(). init() can be considered as a replacement of initialize() in the original MOOSE objects where you used to initialize your reduction variables. It initializes the Kokkos internal buffer on GPU. Note that initializing _reduction_buffer has no effect on GPU and thus is not required. Once the calculation is complete, the results are stored in _reduction_buffer. You can process the values stored in _reduction_buffer in the finalize() or getValue() hook to compute final values.
It is important to note that the buffer is always provided as the Real type. If you need to implement a reduction operation for a data type other than Real, you need to do type casting or bit casting of the given buffer to the desired type. Typically, the data types used for reductions other than Real are boolean and integer. Boolean operations can be performed with Real, and the integers in the range can be exactly represented by Real. Therefore, the need for a bit-level manipulation will be highly unlikely.
See the following source codes of KokkosIntegralPostprocessor for an example of a postprocessor:
Listing 1: The KokkosIntegralPostprocessor header file.
#pragma once
#include "KokkosElementPostprocessor.h"
#include "KokkosSidePostprocessor.h"
template <typename Base>
class KokkosIntegralPostprocessor : public Base
{
public:
static InputParameters validParams();
KokkosIntegralPostprocessor(const InputParameters & parameters);
virtual void initialize() override;
virtual Real getValue() const override;
virtual void finalize() override;
template <typename Derived>
KOKKOS_FUNCTION void reduce(Datum & datum, Real * result) const;
template <typename Derived>
KOKKOS_FUNCTION void join(Real * result, const Real * source) const;
template <typename Derived>
KOKKOS_FUNCTION void init(Real * result) const;
protected:
const bool _average;
};
template <typename Base>
template <typename Derived>
KOKKOS_FUNCTION void
KokkosIntegralPostprocessor<Base>::reduce(Datum & datum, Real * result) const
{
Real sum = 0;
Real vol = 0;
for (unsigned int qp = 0; qp < datum.n_qps(); ++qp)
{
sum += datum.JxW(qp) * static_cast<const Derived *>(this)->computeQpIntegral(qp, datum);
vol += datum.JxW(qp);
}
result[0] += sum;
if (_average)
result[1] += vol;
}
template <typename Base>
template <typename Derived>
KOKKOS_FUNCTION void
KokkosIntegralPostprocessor<Base>::join(Real * result, const Real * source) const
{
result[0] += source[0];
if (_average)
result[1] += source[1];
}
template <typename Base>
template <typename Derived>
KOKKOS_FUNCTION void
KokkosIntegralPostprocessor<Base>::init(Real * result) const
{
result[0] = 0;
if (_average)
result[1] = 0;
}
typedef KokkosIntegralPostprocessor<Moose::Kokkos::ElementPostprocessor>
KokkosElementIntegralPostprocessor;
typedef KokkosIntegralPostprocessor<Moose::Kokkos::SidePostprocessor>
KokkosSideIntegralPostprocessor;
(framework/include/kokkos/postprocessors/KokkosIntegralPostprocessor.h)Listing 2: The KokkosIntegralPostprocessor source file.
#include "KokkosIntegralPostprocessor.h"
template <typename Base>
InputParameters
KokkosIntegralPostprocessor<Base>::validParams()
{
InputParameters params = Base::validParams();
params.addParam<bool>("average", false, "Whether to compute volume average");
return params;
}
template <typename Base>
KokkosIntegralPostprocessor<Base>::KokkosIntegralPostprocessor(const InputParameters & parameters)
: Base(parameters), _average(Base::template getParam<bool>("average"))
{
}
template <typename Base>
void
KokkosIntegralPostprocessor<Base>::initialize()
{
Base::allocateReductionBuffer(_average ? 2 : 1);
}
template <typename Base>
Real
KokkosIntegralPostprocessor<Base>::getValue() const
{
return _average ? Base::_reduction_buffer[0] / Base::_reduction_buffer[1]
: Base::_reduction_buffer[0];
}
template <typename Base>
void
KokkosIntegralPostprocessor<Base>::finalize()
{
Base::gatherSum(Base::_reduction_buffer[0]);
if (_average)
Base::gatherSum(Base::_reduction_buffer[1]);
}
template class KokkosIntegralPostprocessor<Moose::Kokkos::ElementPostprocessor>;
template class KokkosIntegralPostprocessor<Moose::Kokkos::SidePostprocessor>;
(framework/src/kokkos/postprocessors/KokkosIntegralPostprocessor.K)The reporter values defined by Kokkos-MOOSE postprocessors, vector postprocessors, and reporters are stored in the same database with the original MOOSE objects, so they can be retrieved through the existing interfaces and their names cannot overlap.
Performance Considerations
The Kokkos Reducer concept leveraged to implement Kokkos-MOOSE reducers is suitable for small arrays and "dense" reduction operations. Assume you are reducing a large array, where a single call to reduce() only accumulates values to one or a few entries of the array at most. This can be considered as a "sparse" reduction operation and is not suitable for a reducer. A massively-parallel reduction is implemented by many partial reductions where many temporary buffers are internally created and initialized. Even though most of the entries of a temporary buffer are unused in each partial reduction, it still has to initialize and join all the entries. As a result, the cost of initialization and join can overwhelm the gain from parallelization. In addition, the temporary buffers are typically allocated in configurable caches with limited sizes like shared memory in CUDA, so small arrays are desired. If the array being reduced is too large, you will likely get an error like Kokkos::Impl::ParallelReduce<Cuda> requested too much L0 scratch memory. Such type of reduction operation is therefore better be implemented using atomic operations in an ordinary parallel loop instead of a reduction loop. See the following example of KokkosExtraIDIntegralVectorPostprocessor, which implements both atomic addition and reduction algorithms and provides users an option to choose the calculation mode:
Listing 3: The KokkosExtraIDIntegralVectorPostprocessor header file.
#pragma once
#include "KokkosElementVectorPostprocessor.h"
#include "MooseMesh.h"
class KokkosExtraIDIntegralVectorPostprocessor : public Moose::Kokkos::ElementVectorPostprocessor
{
template <typename T>
using Array = Moose::Kokkos::Array<T>;
template <typename T>
using MaterialProperty = Moose::Kokkos::MaterialProperty<T>;
using VariableValue = Moose::Kokkos::VariableValue;
public:
static InputParameters validParams();
KokkosExtraIDIntegralVectorPostprocessor(const InputParameters & parameters);
virtual void initialSetup() override;
virtual void initialize() override;
virtual void compute() override;
virtual void finalize() override;
template <typename Derived>
KOKKOS_FUNCTION void join(Real * result, const Real * source) const;
template <typename Derived>
KOKKOS_FUNCTION void init(Real * result) const;
template <typename Derived>
KOKKOS_FUNCTION void reduce(Datum & datum, Real * result) const;
template <typename Derived>
KOKKOS_FUNCTION void execute(Datum & datum) const;
protected:
/// MOOSE mesh
const MooseMesh & _mesh;
/// Whether or not to compute volume average
const bool _average;
/// Calculation mode
const MooseEnum _mode;
/// Number of variables to be integrated
const unsigned int _nvar;
/// Number of material properties to be integrated
const unsigned int _nprop;
/// Name of material properties
const std::vector<MaterialPropertyName> _prop_names;
/// Extra IDs in use
const std::vector<ExtraElementIDName> _extra_id;
/// Number of extra IDs in use
const unsigned int _n_extra_id;
/// Map of element IDs to parsed vpp ids
std::unordered_map<dof_id_type, dof_id_type> _unique_vpp_id_map;
/// Map of contiguous element IDs to parsed vpp ids for device
Array<Array<dof_id_type>> _unique_vpp_ids;
/// Quadrature point values of coupled MOOSE variables
VariableValue _var_values;
/// Material properties to be integrated
Array<MaterialProperty<Real>> _props;
/// Vector holding the volume of extra IDs
Array<Real> _volumes;
/// Vectors holding integrals over extra IDs
Array<Array<Real>> _integrals;
/// Vectors holding extra IDs
std::vector<VectorPostprocessorValue *> _extra_ids;
/// Size of the vector
dof_id_type _vector_size;
/// Sum cache size
static constexpr unsigned int _cache_size = 10;
};
template <typename Derived>
KOKKOS_FUNCTION void
KokkosExtraIDIntegralVectorPostprocessor::join(Real * result, const Real * source) const
{
auto size = _vector_size * (_nvar + _nprop + _average);
for (decltype(size) i = 0; i < size; ++i)
result[i] += source[i];
}
template <typename Derived>
KOKKOS_FUNCTION void
KokkosExtraIDIntegralVectorPostprocessor::init(Real * result) const
{
auto size = _vector_size * (_nvar + _nprop + _average);
for (decltype(size) i = 0; i < size; ++i)
result[i] = 0;
}
template <typename Derived>
KOKKOS_FUNCTION void
KokkosExtraIDIntegralVectorPostprocessor::reduce(Datum & datum, Real * result) const
{
const auto ipos = _unique_vpp_ids[datum.subdomain()](datum.elemID());
const auto & var = _var_values.variable();
const auto subdomain = datum.subdomain();
Real sum[_cache_size] = {0};
Real vol = 0;
for (unsigned int qp = 0; qp < datum.n_qps(); ++qp)
{
const auto JxW = datum.JxW(qp);
unsigned int i = 0;
for (unsigned int ivar = 0; ivar < _nvar; ++ivar, ++i)
if (kokkosSystem(var.sys(ivar)).isVariableActive(var.var(ivar), subdomain))
sum[i] += JxW * _var_values(datum, qp, ivar);
for (unsigned int iprop = 0; iprop < _nprop; ++iprop, ++i)
sum[i] += JxW * _props[iprop](datum, qp);
vol += JxW;
}
for (unsigned int i = 0; i < _nvar + _nprop; ++i)
result[ipos + i * _vector_size] += sum[i];
if (_average)
result[ipos + (_nvar + _nprop) * _vector_size] += vol;
}
template <typename Derived>
KOKKOS_FUNCTION void
KokkosExtraIDIntegralVectorPostprocessor::execute(Datum & datum) const
{
const auto ipos = _unique_vpp_ids[datum.subdomain()](datum.elemID());
const auto & var = _var_values.variable();
const auto subdomain = datum.subdomain();
Real sum[_cache_size] = {0};
Real vol = 0;
for (unsigned int qp = 0; qp < datum.n_qps(); ++qp)
{
const auto JxW = datum.JxW(qp);
unsigned int i = 0;
for (unsigned int ivar = 0; ivar < _nvar; ++ivar, ++i)
if (kokkosSystem(var.sys(ivar)).isVariableActive(var.var(ivar), subdomain))
sum[i] += JxW * _var_values(datum, qp, ivar);
for (unsigned int iprop = 0; iprop < _nprop; ++iprop, ++i)
sum[i] += JxW * _props[iprop](datum, qp);
vol += JxW;
}
for (unsigned int i = 0; i < _nvar + _nprop; ++i)
Kokkos::atomic_add(&_integrals[i][ipos], sum[i]);
if (_average)
Kokkos::atomic_add(&_volumes[ipos], vol);
}
(framework/include/kokkos/vectorpostprocessors/KokkosExtraIDIntegralVectorPostprocessor.h)Listing 4: The KokkosExtraIDIntegralVectorPostprocessor source file.
#include "KokkosExtraIDIntegralVectorPostprocessor.h"
#include "MooseVariable.h"
#include "MooseMesh.h"
#include "MooseMeshUtils.h"
#include "libmesh/mesh_base.h"
registerKokkosUserObject("MooseApp", KokkosExtraIDIntegralVectorPostprocessor);
InputParameters
KokkosExtraIDIntegralVectorPostprocessor::validParams()
{
InputParameters params = ElementVectorPostprocessor::validParams();
params.addCoupledVar("variable",
"The names of the variables that this VectorPostprocessor operates on");
params.addParam<std::vector<MaterialPropertyName>>(
"mat_prop", "The names of material properties that this VectorPostprocessor operates on");
params.addRequiredParam<std::vector<ExtraElementIDName>>(
"id_name", "List of extra element ID names by which to separate integral(s).");
params.addParam<bool>("average", false, "Whether or not to compute volume average");
MooseEnum mode("atomic reduction", "atomic");
params.addParam<MooseEnum>("calculation_mode",
mode,
"Whether to use atomic addition or reduction for parallel summation");
params.addClassDescription("Integrates or averages variables based on extra element IDs");
return params;
}
KokkosExtraIDIntegralVectorPostprocessor::KokkosExtraIDIntegralVectorPostprocessor(
const InputParameters & parameters)
: ElementVectorPostprocessor(parameters),
_mesh(_fe_problem.mesh()),
_average(getParam<bool>("average")),
_mode(getParam<MooseEnum>("calculation_mode")),
_nvar(isParamValid("variable") ? coupledComponents("variable") : 0),
_nprop(isParamValid("mat_prop") ? getParam<std::vector<MaterialPropertyName>>("mat_prop").size()
: 0),
_prop_names(isParamValid("mat_prop") ? getParam<std::vector<MaterialPropertyName>>("mat_prop")
: std::vector<MaterialPropertyName>()),
_extra_id(getParam<std::vector<ExtraElementIDName>>("id_name")),
_n_extra_id(_extra_id.size())
{
if (!_nvar && !_nprop)
mooseError("Neither 'variable' nor 'mat_prop' was specified.");
if (_nvar + _nprop > _cache_size)
mooseError("Cannot have more than ",
_cache_size,
" variables and material properties at the same time.");
// create map of element ids to parsed vpp ids
_unique_vpp_id_map =
MooseMeshUtils::getExtraIDUniqueCombinationMap(_mesh.getMesh(), blockIDs(), _extra_id);
// set up variable vector containing parsed extra ids
for (unsigned int i = 0; i < _n_extra_id; ++i)
{
const auto id_type = _extra_id[i];
auto & p = declareVector("Level-" + std::to_string(i) + "-" + id_type);
// collect local map of local vpp id to extra id
std::map<dof_id_type, dof_id_type> extra_ids;
for (const auto elem : _mesh.getMesh().active_local_element_ptr_range())
{
if (!hasBlocks(elem->subdomain_id()))
continue;
auto vpp_id = libmesh_map_find(_unique_vpp_id_map, elem->id());
if (extra_ids.find(vpp_id) == extra_ids.end())
extra_ids[vpp_id] = elem->get_extra_integer(getElementIDIndexByName(id_type));
}
// create global map of local vpp id to extra id
comm().set_union(extra_ids);
p.resize(extra_ids.size());
for (auto it : extra_ids)
p[it.first] = it.second;
_extra_ids.push_back(&p);
}
_vector_size = _extra_ids[0]->size();
std::vector<std::string> vector_names;
_integrals.create(_nvar + _prop_names.size());
_props.create(_prop_names.size());
unsigned int i = 0;
// declare vectors containing variable integral values
for (; i < _nvar; ++i)
{
vector_names.push_back(getVar("variable", i)->name());
auto & p = declareVector(vector_names.back());
p.resize(_vector_size);
if (_mode == "atomic")
_integrals[i].createDevice(p.size());
else
_integrals[i].init(p.size());
_integrals[i].aliasHost(p.data());
}
if (_nvar)
_var_values = kokkosCoupledValues("variable");
// declare vectors containing material property integral values
for (unsigned int iprop = 0; iprop < _nprop; ++iprop, ++i)
{
vector_names.push_back(_prop_names[iprop]);
_props[iprop] = getKokkosMaterialPropertyByName<Real>(vector_names.back());
auto & p = declareVector(vector_names.back());
p.resize(_vector_size);
if (_mode == "atomic")
_integrals[i].createDevice(p.size());
else
_integrals[i].init(p.size());
_integrals[i].aliasHost(p.data());
}
_integrals.copyToDevice();
_props.copyToDevice();
}
void
KokkosExtraIDIntegralVectorPostprocessor::initialSetup()
{
_unique_vpp_ids.create(kokkosMesh().getNumSubdomains());
for (const auto block : blockIDs())
{
const auto sid = kokkosMesh().getContiguousSubdomainID(block);
_unique_vpp_ids[sid].create(kokkosMesh().getNumSubdomainLocalElements(block));
_unique_vpp_ids[sid].offset(*kokkosMesh().getSubdomainContiguousElementIDRange(block).begin());
for (const auto elem : _mesh.getMesh().active_local_subdomain_elements_ptr_range(block))
{
const auto eid = kokkosMesh().getContiguousElementID(elem);
_unique_vpp_ids[sid](eid) = libmesh_map_find(_unique_vpp_id_map, elem->id());
}
_unique_vpp_ids[sid].moveToDevice();
}
_unique_vpp_ids.copyToDevice();
}
void
KokkosExtraIDIntegralVectorPostprocessor::initialize()
{
if (_mode == "atomic")
{
for (auto & integral : _integrals)
integral = 0;
if (_average)
{
_volumes.create(_vector_size);
_volumes = 0;
}
}
else
allocateReductionBuffer((_integrals.size() + _average) * _vector_size);
}
void
KokkosExtraIDIntegralVectorPostprocessor::compute()
{
if (_mode == "atomic")
computeUserObject();
else
computeReducer();
}
void
KokkosExtraIDIntegralVectorPostprocessor::finalize()
{
if (_mode == "atomic")
{
for (auto & integral : _integrals)
{
integral.copyToHost();
libmesh_call_mpi(MPI_Allreduce(MPI_IN_PLACE,
integral.data(),
integral.size(),
libMesh::Parallel::StandardType<Real>(),
libMesh::Parallel::OpFunction<Real>::sum(),
comm().get()));
}
if (_average)
{
_volumes.copyToHost();
libmesh_call_mpi(MPI_Allreduce(MPI_IN_PLACE,
_volumes.data(),
_volumes.size(),
libMesh::Parallel::StandardType<Real>(),
libMesh::Parallel::OpFunction<Real>::sum(),
comm().get()));
for (auto & integral : _integrals)
for (unsigned int i = 0; i < integral.size(); ++i)
integral[i] /= _volumes[i];
}
}
else
{
libmesh_call_mpi(MPI_Allreduce(MPI_IN_PLACE,
_reduction_buffer.data(),
_reduction_buffer.size(),
libMesh::Parallel::StandardType<Real>(),
libMesh::Parallel::OpFunction<Real>::sum(),
comm().get()));
for (unsigned int i = 0; i < _integrals.size(); ++i)
for (unsigned int j = 0; j < _vector_size; ++j)
{
_integrals[i][j] = _reduction_buffer[j + i * _vector_size];
if (_average)
_integrals[i][j] /= _reduction_buffer[j + _integrals.size() * _vector_size];
}
}
}
(framework/src/kokkos/vectorpostprocessors/KokkosExtraIDIntegralVectorPostprocessor.K)User-defined APIs and Virtual Functions
While user objects are intended to embrace user-defined APIs, Kokkos-MOOSE user objects currently require GPU APIs to not rely on virtual dispatch. Namely, you should always retrieve your user objects in their concrete types if you intend to use your own GPU APIs. Using virtual functions on GPU has two prerequisites: enabling the relocatable device code (RDC) option and constructing objects on GPU. The RDC option is currently disabled in Kokkos-MOOSE due to the restrictions imposed by upstream packages (see the discussions on this page), and its resolution is being actively worked on. Even with the RDC option, however, the object vtables are populated with CPU function pointers as all objects in MOOSE are constructed on CPU. As a result, you still cannot call virtual functions of your user objects on GPU unless you directly construct them on GPU (see this page).
In order to realize virtual dispatch with your user objects, therefore, you need to implement a wrapper with virtual functions that can be easily constructed on GPU, and call your own APIs through the wrapper. This wrapper will hold the GPU copy of your user object in its concrete type and the virtual functions that call the corresponding user object functions statically. This approach is implemented in Moose::Kokkos::Function using a registry design pattern and can be found across framework source files such as KokkosFunctionWrapper.h and KokkosFunction.h, but it requires a deep understanding of dynamic polymorphism and GPU backends. Therefore, we plan to explore developing base classes for the wrapper that the users can easily derive from and providing programming guidelines, once the RDC option is in place.
Available Objects
- Moose App
- ADProjectedStatefulMaterialNodalPatchRecoveryRankFourTensorPrepare patches for use in nodal patch recovery based on a material property for material property states projected onto nodal variables.
- ADProjectedStatefulMaterialNodalPatchRecoveryRankTwoTensorPrepare patches for use in nodal patch recovery based on a material property for material property states projected onto nodal variables.
- ADProjectedStatefulMaterialNodalPatchRecoveryRealPrepare patches for use in nodal patch recovery based on a material property for material property states projected onto nodal variables.
- ADProjectedStatefulMaterialNodalPatchRecoveryRealVectorValuePrepare patches for use in nodal patch recovery based on a material property for material property states projected onto nodal variables.
- ActivateElementsByPathDetermine activated elements.
- ActivateElementsCoupledDetermine activated elements.
- CoupledVarThresholdElementSubdomainModifierModify the element subdomain ID if a coupled variable satisfies the criterion for the threshold (above, equal, or below)
- ElemSideNeighborLayersGeomTesterUser object to calculate ghosted elements on a single processor or the union across all processors.
- ElemSideNeighborLayersTesterUser object to calculate ghosted elements on a single processor or the union across all processors.
- ElementIntegralVariableUserObjectcomputes a volume integral of a variable.
- ElementPropertyReadFileUser Object to read property data from an external file and assign it to elements / nodes / subdomains etc.
- ElementQualityCheckerClass to check the quality of each element using different metrics from libmesh.
- FunctionElementIntegralUserObjectComputes a volume integral of a function.
- FunctionLayeredIntegralIntegrates a function in layers
- GeometrySphereSnap nodes to the surface of a sphere either during adaptivity or on execution
- GhostingUserObjectCreates ghosting maps that can be queried by external objects.
- InterfaceQpMaterialPropertyRealUOComputes the value, rate or increment of a Real Material property across an interface. The value, rate or increment is computed according to the provided interface_value_type parameter
- InterfaceQpValueUserObjectComputes the variable value, rate or increment across an interface. The value, rate or increment is computed according to the provided interface_value_type parameter
- JSONFileReaderLoads a JSON file and makes it content available to consumers
- LayeredAverageComputes averages of variables over layers
- LayeredAverageFunctorComputes layered side averages of a functor.
- LayeredExtremumMaterialPropertyCompute material property extrema over layers.
- LayeredIntegralCompute variable integrals over layers.
- LayeredIntegralFunctorComputes layered element integrals of a functor.
- LayeredSideAverageComputes side averages of a variable storing partial sums for the specified number of intervals in a direction (x,y,z).
- LayeredSideAverageFunctorComputes layered side averages of a functor.
- LayeredSideDiffusiveFluxAverageComputes the diffusive flux of a variable on layers alongside a boundary.
- LayeredSideFluxAverageComputes the diffusive flux of a variable on layers alongside a boundary.
- LayeredSideIntegralComputes surface integral of a variable storing partial sums for the specified number of intervals in a direction (x,y,z).
- LayeredSideIntegralFunctorComputes layered side integrals of a functor.
- MOOSEOldPostprocessorToNEML2Gather a MOOSE postprocessor value for insertion into the specified input variable or model parameter of a NEML2 model.
- MOOSEOldRankTwoTensorMaterialPropertyToNEML2Gather a MOOSE material property of type RankTwoTensorTempl<double> for insertion into the specified input or model parameter of a NEML2 model.
- MOOSEOldRealMaterialPropertyToNEML2Gather a MOOSE material property of type double for insertion into the specified input or model parameter of a NEML2 model.
- MOOSEOldRealVectorValueMaterialPropertyToNEML2Gather a MOOSE material property of type libMesh::VectorValue<double> for insertion into the specified input or model parameter of a NEML2 model.
- MOOSEOldSymmetricRankTwoTensorMaterialPropertyToNEML2Gather a MOOSE material property of type SymmetricRankTwoTensorTempl<double> for insertion into the specified input or model parameter of a NEML2 model.
- MOOSEOldVariableToNEML2Gather a MOOSE variable for insertion into the specified input or model parameter of a NEML2 model.
- MOOSEPostprocessorToNEML2Gather a MOOSE postprocessor value for insertion into the specified input variable or model parameter of a NEML2 model.
- MOOSERankTwoTensorMaterialPropertyToNEML2Gather a MOOSE material property of type RankTwoTensorTempl<double> for insertion into the specified input or model parameter of a NEML2 model.
- MOOSERealMaterialPropertyToNEML2Gather a MOOSE material property of type double for insertion into the specified input or model parameter of a NEML2 model.
- MOOSERealVectorValueMaterialPropertyToNEML2Gather a MOOSE material property of type libMesh::VectorValue<double> for insertion into the specified input or model parameter of a NEML2 model.
- MOOSESymmetricRankTwoTensorMaterialPropertyToNEML2Gather a MOOSE material property of type SymmetricRankTwoTensorTempl<double> for insertion into the specified input or model parameter of a NEML2 model.
- MOOSEVariableToNEML2Gather a MOOSE variable for insertion into the specified input or model parameter of a NEML2 model.
- MessageFromInputPrint out a message from the input file
- MoveNodesToSphereSnap nodes to the surface of a sphere either during adaptivity or on execution
- NEML2AssemblyThis user object gathers the JxWxT values from all elements in the assembly and provides them as a neml2 tensor. This is useful for assembling NEML2 models that require the JxWxT values for each element.
- NEML2BatchIndexGeneratorGenerates the element to batch index map for MOOSEToNEML2 gatherers, NEML2ToMOOSE retrievers, and the NEML2 executor
- NEML2FEInterpolationThis user object provides an interface to NEML2 for finite element interpolation of variables and their gradients. It gathers the shape functions and DOF maps for each variable in the assembly and provides them as NEML2 tensors for use in NEML2 models.
- NEML2ModelExecutorExecute the specified NEML2 model
- NearestNodeNumberUOFinds and outputs the nearest node number to a point
- NearestPointAverageCompute element variable averages for nearest-point based subdomains
- NearestPointLayeredAverageComputes averages of a variable storing partial sums for the specified number of intervals in a direction (x,y,z). Given a list of points this object computes the layered average closest to each one of those points.
- NearestPointLayeredIntegralComputes integrals of a variable storing partial sums for the specified number of intervals in a direction (x,y,z). Given a list of points this object computes the layered integral closest to each one of those points.
- NearestPointLayeredSideAverageCompute layered side averages for nearest-point based subdomains
- NearestPointLayeredSideAverageFunctorComputes layered side averages of a functor nearest to a set of points.
- NearestPointLayeredSideDiffusiveFluxAverageCompute layered side diffusive flux averages for nearest-point based subdivisions
- NearestPointLayeredSideFluxAverageCompute layered side diffusive flux averages for nearest-point based subdivisions
- NearestPointLayeredSideIntegralCompute layered side integrals for nearest-point based sidesets
- NearestPointLayeredSideIntegralFunctorComputes layered side integrals of a functor nearest to a set of points.
- NearestRadiusLayeredAverageComputes averages of a variable storing partial sums for the specified number of intervals in a direction (x,y,z). Given a list of points this object computes the layered average closest to each one of those points, where the distance is computed in terms of radius (or distance to the origin in the plane perpendicular to 'direction').
- NodalNormalsCornerComputes nodal normals at boundary corners.
- NodalNormalsEvaluatorHelper object to compute nodal normal values via the NodalNormals input block.
- NodalNormalsPreprocessorAn object that prepares MOOSE for computing nodal normal vectors. This object is automatically created via the [NodalNormals] input block.
- NodalPatchRecoveryMaterialPropertyPrepare patches for use in nodal patch recovery based on a material property.
- NodalPatchRecoveryVariablePerforms patch recovery using a coupled variable.
- PointwiseRenormalizeVectorPointwise renormalize the solution of a set of variables comprising a vector
- PostprocessorSpatialUserObjectUser object (spatial) that holds a postprocessor value.
- ProjectedStatefulMaterialNodalPatchRecoveryRankFourTensorPrepare patches for use in nodal patch recovery based on a material property for material property states projected onto nodal variables.
- ProjectedStatefulMaterialNodalPatchRecoveryRankTwoTensorPrepare patches for use in nodal patch recovery based on a material property for material property states projected onto nodal variables.
- ProjectedStatefulMaterialNodalPatchRecoveryRealPrepare patches for use in nodal patch recovery based on a material property for material property states projected onto nodal variables.
- ProjectedStatefulMaterialNodalPatchRecoveryRealVectorValuePrepare patches for use in nodal patch recovery based on a material property for material property states projected onto nodal variables.
- PropertyReadFileUser Object to read property data from an external file and assign it to elements / nodes / subdomains etc.
- RadialAveragePerform a radial average of a material property
- SidesetAroundSubdomainUpdaterSets up a boundary between inner_subdomains and outer_subdomains
- SolutionUserObjectReads a variable from a mesh in one simulation to another
- TerminatorRequests termination of the current solve based on the evaluation of a parsed logical expression of the Postprocessor value(s).
- TimedSubdomainModifierModify element subdomain ID of entire subdomains for given points in time. This mesh modifier only runs on the undisplaced mesh, and it will modify both the undisplaced and the displaced mesh.
- TorchScriptUserObjectUser-facing object which loads a torch script module.
- VariableValueElementSubdomainModifierModify the element subdomain ID based on the provided variable value.
- VerifyElementUniqueIDVerifies that all element ids are unique.
- VerifyNodalUniqueIDVerifies that all node ids are unique.
- Geochemistry App
- GeochemicalModelDefinitionUser object that parses a geochemical database file, and only retains information relevant to the current geochemical model
- GeochemistryKineticRateUser object that defines a kinetic rate. Note that more than one rate can be prescribed to a single kinetic_species: the sum the individual rates defines the overall rate. GeochemistryKineticRate simply specifies the algebraic form for a kinetic rate: to actually use it in a calculation, you must use it in the GeochemicalModelDefinition. The rate is intrinsic_rate_constant * area_quantity * (optionally, mass of kinetic_species in grams) * kinetic_molalitykinetic_molal_index / (kinetic_molalitykinetic_molal_index + kinetic_half_saturationkinetic_molal_index)kinetic_monod_index * (product_over_promoting_species mpromoting_index / (mpromoting_index + promoting_half_saturationpromiting_index)promoting_monod_index) * |1 - (Q/K)^theta|^eta * exp(activation_energy / R * (1/T0 - 1/T)) * Direction(1 - (Q/K)). Please see the markdown documentation for examples
- GeochemistrySpatialReactorUserObject that controls the space-dependent and time-dependent geochemistry reaction processes
- GeochemistryTimeDependentReactorUserObject that controls the time-dependent geochemistry reaction processes. Spatial dependence is not possible using this class
- GeochemistryTimeIndependentReactorUserObject that controls the time-independent geochemistry reaction processes. Spatial dependence is not possible using this class
- NodalVoidVolumeUserObject to compute the nodal void volume. Take care if you block-restrict this UserObject, since the volumes of the nodes on the block's boundary will not include any contributions from outside the block.
- Level Set App
- LevelSetOlssonTerminatorTool for terminating the reinitialization of the level set equation based on the criteria defined by Olsson et. al. (2007).
- XFEMApp
- CircleCutUserObjectCreates a UserObject for circular cuts on 3D meshes for XFEM
- ComboCutUserObjectCombine multiple geometric cut userobjects.
- CrackMeshCut3DUserObjectCreates a UserObject for a mesh cutter in 3D problems
- CutElementSubdomainModifierChange element subdomain based on CutSubdomainID
- EllipseCutUserObjectCreates a UserObject for elliptical cuts on 3D meshes for XFEM
- InterfaceMeshCut2DUserObjectA userobject to cut a 2D mesh using a 1D cutter mesh.
- InterfaceMeshCut3DUserObjectA userobject to cut a 3D mesh using a 2D cutter mesh.
- LevelSetCutUserObjectXFEM mesh cut by level set function
- LineSegmentCutSetUserObjectCreates a UserObject for a line segment cut on 2D meshes for XFEM
- LineSegmentCutUserObjectCreates a UserObject for a line segment cut on 2D meshes for XFEM
- MeshCut2DFractureUserObjectXFEM mesh cutter for 2D models that defines cuts with amesh and uses fracture integrals to determine growth
- MeshCut2DFunctionUserObjectCreates a UserObject for a mesh cutter in 2D problems where crack growth is specified by functions.
- MeshCut2DRankTwoTensorNucleationNucleate a crack in MeshCut2D UO based on a scalar extracted from a RankTwoTensor
- NodeValueAtXFEMInterfaceObtain field values and gradients on the interface.
- RectangleCutUserObjectCreates a UserObject for planar cuts on 3D meshes for XFEM
- XFEMPhaseTransitionMovingInterfaceVelocitycalculate the interface velocity for a simple phase transition problem.
- XFEMRankTwoTensorMarkerUserObjectMark elements to be cut by XFEM based on a scalar extracted from a RankTwoTensor
- Stochastic Tools App
- InverseMappingEvaluates surrogate models and maps the results back to a full solution field for given variables.
- Rdg App
- AEFVFreeOutflowBoundaryFluxFree outflow BC based boundary flux user object for the advection equation using a cell-centered finite volume method.
- AEFVSlopeLimitingOneDOne-dimensional slope limiting to get the limited slope of cell average variable for the advection equation using a cell-centered finite volume method.
- AEFVUpwindInternalSideFluxUpwind numerical flux scheme for the advection equation using a cell-centered finite volume method.
- Thermal Hydraulics App
- ADBoundaryFlux3EqnFreeOutflowComputes the outflow boundary flux directly for the 1-D, 1-phase, variable-area Euler equations
- ADBoundaryFlux3EqnGhostDensityVelocityComputes boundary flux from density and velocity for the 3-equation model using a ghost cell approach.
- ADBoundaryFlux3EqnGhostMassFlowRateTemperatureComputes a boundary flux from a specified mass flow rate and temperature for the 1-D, 1-phase, variable-area Euler equations using a ghost cell
- ADBoundaryFlux3EqnGhostPressureComputes boundary flux from a specified pressure for the 1-D, 1-phase, variable-area Euler equations
- ADBoundaryFlux3EqnGhostStagnationPressureTemperatureComputes boundary flux from a specified stagnation pressure and temperature for the 1-D, 1-phase, variable-area Euler equations
- ADBoundaryFlux3EqnGhostVelocityTemperatureComputes a boundary flux from a specified velocity and temperature for the 1-D, 1-phase, variable-area Euler equations using a ghost cell
- ADBoundaryFlux3EqnGhostWallWall boundary conditions for the 1-D, 1-phase, variable-area Euler equations
- ADGateValve1PhaseUserObjectGate valve user object for 1-phase flow
- ADHeatFluxFromHeatStructure3EqnUserObjectCache the heat flux between a single phase flow channel and a heat structure
- ADHeatTransferFromHeatStructure3D1PhaseUserObjectCaches heat flux information (fluid temperature and heat transfer coefficient) between flow channel and 3D heat structure.
- ADJunctionOneToOne1PhaseUserObjectComputes flux between two subdomains for 1-phase one-to-one junction
- ADJunctionParallelChannels1PhaseUserObjectComputes and caches flux and residual vectors for a 1-phase junction that connects flow channels that are parallel
- ADNumericalFlux3EqnCenteredComputes internal side flux for the 1-D, 1-phase, variable-area Euler equations using a centered average of the left and right side fluxes
- ADNumericalFlux3EqnHLLCComputes internal side flux for the 1-D, 1-phase, variable-area Euler equations using the HLLC approximate Riemann solver.
- ADPump1PhaseUserObjectComputes and caches flux and residual vectors for a 1-phase pump
- ADShaftConnectedCompressor1PhaseUserObjectComputes and caches flux and residual vectors for a 1-phase compressor. Also computes compressor torque and delta_p which is passed to the connected shaft
- ADShaftConnectedMotorUserObjectComputes the torque and moment of inertia of a shaft connected motor
- ADShaftConnectedPump1PhaseUserObjectComputes and caches flux and residual vectors for a 1-phase pump. Also computes pump torque and head which is passed to the connected shaft
- ADShaftConnectedTurbine1PhaseUserObjectComputes and caches flux and residual vectors for a 1-phase turbine. Also computes turbine torque and delta_p which is passed to the connected shaft
- ADSimpleTurbine1PhaseUserObjectComputes and caches flux and residual vectors for a 1-phase turbine
- ADVolumeJunction1PhaseUserObjectComputes and caches flux and residual vectors for a 1-phase volume junction
- BoundaryFluxGasMixGhostWallWall boundary flux for FlowModelGasMix.
- FunctionElementLoopIntegralUserObjectComputes the integral of a function using an element loop.
- HSCoupler2D2DRadiationUserObjectComputes heat fluxes for HSCoupler2D2D.
- HSCoupler2D3DUserObjectComputes heat fluxes for HSCoupler2D3D.
- LayeredAverageRZComputes layered averages of variable for RZ components in a XY coordinate system
- LayeredFlowAreaChangeThis layered user object computes the change in cross sectional area of a flow channel from the displacement variables. Note: the convention isthat reduction in flow area is negative. For this to be satisfied, normals mustpoint INTO the flow channel.
- NumericalFluxGasMixHLLCComputes internal side flux for the 1-D, 1-phase, variable-area Euler equations using the HLLC approximate Riemann solver.
- ShaftConnectedMotorUserObjectComputes the torque and moment of inertia of a shaft connected motor
- StoreVariableByElemIDSideUserObjectStores variable values at each quadrature point on a side by element ID.
- Heat Transfer App
- ConstantViewFactorSurfaceRadiationConstantViewFactorSurfaceRadiation computes radiative heat transfer between side sets and the view factors are provided in the input file
- FunctorGapFluxModelConductionGap flux model for varying gap conductance using a functor for temperature.
- FunctorGapFluxModelRadiationGap flux model for heat transfer across a gap due to radiation, based on the diffusion approximation. Uses a temperature functor.
- GapFluxModelConductionGap flux model for varying gap conductance using a coupled variable for temperature
- GapFluxModelPressureDependentConductionHeat flux model across a closed gap to calculate the conductance between two solid materials
- GapFluxModelRadiationGap flux model for heat conduction across a gap due to radiation, based on the diffusion approximation. Uses a coupled temperature variable.
- GapFluxModelRadiativeGap flux demonstration model for radiative heat conductance
- GapFluxModelSimpleGap flux model with a constant conductance
- RayTracingViewFactorComputes view factors for arbitrary geometries using raytracing.
- SelfShadowSideUserObjectCompute the illumination status for a self shadowing sideset
- SpecifiedViewFactorView factors specified directly in the input file
- UnobstructedPlanarViewFactorComputes the view factors for planar faces in unubstructed radiative heat transfer.
- ViewFactorObjectSurfaceRadiationViewFactorObjectSurfaceRadiation computes radiative heat transfer between side sets and the view factors are computed by a ViewFactor object
- ViewFactorRayStudyThis ray study is used to compute view factors in cavities with obstruction. It sends out rays from surfaces bounding the radiation cavity into a set of directions determined by an angular quadrature. The rays are tracked and view factors are computed by determining the surface where the ray dies.
- Contact App
- BilinearMixedModeCohesiveZoneModelComputes the bilinear mixed mode cohesive zone model.
- LMWeightedGapUserObjectProvides the mortar normal Lagrange multiplier for constraint enforcement.
- LMWeightedVelocitiesUserObjectProvides the mortar contact Lagrange multipliers (normal and tangential) for constraint enforcement.
- NodalAreaCompute the tributary area for nodes on a surface
- NodalDensityCompute the tributary densities for nodes on a surface
- NodalWaveSpeedCompute the tributary wave speeds for nodes on a surface
- PenaltyFrictionUserObjectComputes the mortar frictional contact force via a penalty approach.
- PenaltyWeightedGapUserObjectComputes the mortar normal contact force via a penalty approach.
- Solid Mechanics App
- AbaqusUExternalDBCoupling user object to use Abaqus UEXTERNALDB subroutines in MOOSE
- AbaqusUserElementCoupling UserObject to use Abaqus UEL plugins in MOOSE
- AnalysisStepUserObjectMaps the time steps and the load step simulation times. It can be used in either direction depending on the simulation setup. It generates steps to be used in StepPeriod to control the enabled/disabled state of objects with user-provided simulation steps.
- CavityPressureUserObjectUses the ideal gas law to compute internal pressure and an initial moles of gas quantity.
- ComputeBlockOrientationByMisorientationThis object computes the orientation of each grain (block) by calculating the maximum misorientation within the grain.
- ComputeBlockOrientationByRotationThis object determines the orientation of each grain (block) by identifying the most common orientation direction among the material points within the grain.
- CrackFrontDefinitionUsed to describe geometric characteristics of the crack front for fracture integral calculations
- CrystalPlasticitySlipRateGSSPhenomenological constitutive model slip rate class. Override the virtual functions in your class
- CrystalPlasticitySlipResistanceGSSPhenomenological constitutive models' slip resistance base class. Override the virtual functions in your class
- CrystalPlasticityStateVarRateComponentGSSPhenomenological constitutive model state variable evolution rate component base class. Override the virtual functions in your class
- CrystalPlasticityStateVarRateComponentVocePhenomenological Voce constitutive model state variable evolution rate component base class.
- CrystalPlasticityStateVariableCrystal plasticity state variable class. Override the virtual functions in your class
- EulerAngleFileReaderRead Euler angle data from a file and provide it to other objects.
- EulerAngleUpdateFromReporterUpdate Euler angle from reporter value.
- GeneralizedPlaneStrainUserObjectGeneralized plane strain UserObject to provide residual and diagonal Jacobian entries.
- GlobalStrainUserObjectGlobal Strain UserObject to provide Residual and diagonal Jacobian entry
- HEVPEqvPlasticStrainUser Object to integrate equivalent plastic strain
- HEVPEqvPlasticStrainRateUser Object computing equivalent plastic strain rate
- HEVPFlowRatePowerLawJ2User object to evaluate power law flow rate and flow direction based on J2
- HEVPLinearHardeningUser Object for linear hardening
- HEVPRambergOsgoodHardeningUser object for Ramberg-Osgood hardening power law hardening
- LinearViscoelasticityManagerManages the updating of the semi-implicit single-step first-order finite difference time-stepping scheme
- NEML2SmallStrainThis user object calculates the small strain from displacement gradients. It requires 1 to 3 displacement variables, which are used to compute the strain tensor.
- NEML2StressDivergenceThis user object calculates the stress divergence for a given set of displacement variables and assemble the contribution into the residual vector.
- SolidMechanicsHardeningConstantNo hardening - the parameter is independent of the internal parameter(s)
- SolidMechanicsHardeningCubicHardening is Cubic
- SolidMechanicsHardeningCutExponentialHardening is Cut-exponential
- SolidMechanicsHardeningExponentialHardening is Exponential
- SolidMechanicsHardeningGaussianHardening is Gaussian
- SolidMechanicsHardeningPowerRuleHardening defined by power rule
- SolidMechanicsPlasticDruckerPragerNon-associative Drucker Prager plasticity with no smoothing of the cone tip.
- SolidMechanicsPlasticDruckerPragerHyperbolicNon-associative Drucker Prager plasticity with hyperbolic smoothing of the cone tip.
- SolidMechanicsPlasticIsotropicSDIsotropicSD plasticity for pressure sensitive materials and also models the strength differential effect
- SolidMechanicsPlasticJ2J2 plasticity, associative, with hardening
- SolidMechanicsPlasticMeanCapClass that limits the mean stress. Yield function = a*mean_stress - strength. mean_stress = (stress_xx + stress_yy + stress_zz)/3
- SolidMechanicsPlasticMeanCapTCAssociative mean-cap tensile and compressive plasticity with hardening/softening
- SolidMechanicsPlasticMohrCoulombNon-associative Mohr-Coulomb plasticity with hardening/softening
- SolidMechanicsPlasticMohrCoulombMultiNon-associative Mohr-Coulomb plasticity with hardening/softening
- SolidMechanicsPlasticOrthotropicOrthotropic plasticity for pressure sensitive materials and also models the strength differential effect
- SolidMechanicsPlasticSimpleTesterClass that can be used for testing multi-surface plasticity models. Yield function = a*stress_yy + b*stress_zz + c*stress_xx + d*(stress_xy + stress_yx)/2 + e*(stress_xz + stress_zx)/2 + f*(stress_yz + stress_zy)/2 - strength
- SolidMechanicsPlasticTensileAssociative tensile plasticity with hardening/softening, and tensile_strength = 1
- SolidMechanicsPlasticTensileMultiAssociative tensile plasticity with hardening/softening
- SolidMechanicsPlasticWeakPlaneShearNon-associative finite-strain weak-plane shear perfect plasticity. Here cohesion = 1, tan(phi) = 1 = tan(psi)
- SolidMechanicsPlasticWeakPlaneTensileAssociative weak-plane tensile plasticity with hardening/softening
- SolidMechanicsPlasticWeakPlaneTensileNAssociative weak-plane tensile plasticity with hardening/softening, with specified, fixed normal vector. (WeakPlaneTensile combined with specifying N in the Material might be preferable to you.)
- TensorMechanicsHardeningConstantNo hardening - the parameter is independent of the internal parameter(s)
- TensorMechanicsHardeningCubicHardening is Cubic
- TensorMechanicsHardeningCutExponentialHardening is Cut-exponential
- TensorMechanicsHardeningExponentialHardening is Exponential
- TensorMechanicsHardeningGaussianHardening is Gaussian
- TensorMechanicsHardeningPowerRuleHardening defined by power rule
- TensorMechanicsPlasticDruckerPragerNon-associative Drucker Prager plasticity with no smoothing of the cone tip.
- TensorMechanicsPlasticDruckerPragerHyperbolicNon-associative Drucker Prager plasticity with hyperbolic smoothing of the cone tip.
- TensorMechanicsPlasticIsotropicSDIsotropicSD plasticity for pressure sensitive materials and also models the strength differential effect
- TensorMechanicsPlasticJ2J2 plasticity, associative, with hardening
- TensorMechanicsPlasticMeanCapClass that limits the mean stress. Yield function = a*mean_stress - strength. mean_stress = (stress_xx + stress_yy + stress_zz)/3
- TensorMechanicsPlasticMeanCapTCAssociative mean-cap tensile and compressive plasticity with hardening/softening
- TensorMechanicsPlasticMohrCoulombNon-associative Mohr-Coulomb plasticity with hardening/softening
- TensorMechanicsPlasticMohrCoulombMultiNon-associative Mohr-Coulomb plasticity with hardening/softening
- TensorMechanicsPlasticOrthotropicOrthotropic plasticity for pressure sensitive materials and also models the strength differential effect
- TensorMechanicsPlasticSimpleTesterClass that can be used for testing multi-surface plasticity models. Yield function = a*stress_yy + b*stress_zz + c*stress_xx + d*(stress_xy + stress_yx)/2 + e*(stress_xz + stress_zx)/2 + f*(stress_yz + stress_zy)/2 - strength
- TensorMechanicsPlasticTensileAssociative tensile plasticity with hardening/softening, and tensile_strength = 1
- TensorMechanicsPlasticTensileMultiAssociative tensile plasticity with hardening/softening
- TensorMechanicsPlasticWeakPlaneShearNon-associative finite-strain weak-plane shear perfect plasticity. Here cohesion = 1, tan(phi) = 1 = tan(psi)
- TensorMechanicsPlasticWeakPlaneTensileAssociative weak-plane tensile plasticity with hardening/softening
- TensorMechanicsPlasticWeakPlaneTensileNAssociative weak-plane tensile plasticity with hardening/softening, with specified, fixed normal vector. (WeakPlaneTensile combined with specifying N in the Material might be preferable to you.)
- Chemical Reactions App
- HenryGasConstantCalculates Henry gas constant of a noble gas
[mol/m3/Pa] - ThermochimicaElementDataProvides access to Thermochimica-calculated data at elements.
- ThermochimicaNodalDataProvides access to Thermochimica-calculated data at nodes.
- Functional Expansion Tools App
- FXBoundaryFluxUserObjectGenerates an Functional Expansion representation for a boundary flux condition using a 'FunctionSeries'-type Function
- FXBoundaryValueUserObjectGenerates an Functional Expansion representation for a boundary value condition using a 'FunctionSeries'-type Function
- FXVolumeUserObjectGenerates an Functional Expansion representation of a variable value over a volume using a 'FunctionSeries'-type Function
- Navier Stokes App
- HLLCUserObjectComputes free-flow wave speeds on internal sides, useful in HLLC contexts
- INSADObjectTrackerUser object used to track the kernels added to an INS simulation and determine what properties to calculate in INSADMaterial
- INSFVRhieChowInterpolatorComputes the Rhie-Chow velocity based on gathered 'a' coefficient data.
- INSFVRhieChowInterpolatorSegregatedComputes H/A and 1/A together with face velocities for segregated momentum-pressure equations.
- NSFVPressurePinPins the pressure after a solve
- NSPressurePinPins the pressure after a solve
- PINSFVRhieChowInterpolatorPerforms interpolations and reconstructions of porosity and computes the Rhie-Chow face velocities.
- PINSFVRhieChowInterpolatorSegregatedComputes H/A and 1/A together with face velocities for segregated porous medium momentum-pressure equations.
- RhieChowMassFluxComputes H/A and 1/A together with face mass fluxes for segregated momentum-pressure equations using linear systems.
- Peridynamics App
- GeneralizedPlaneStrainUserObjectNOSPDClass for calculating the scalar residual and diagonal Jacobian entry of generalized plane strain in the H1NOSPD formulation
- GeneralizedPlaneStrainUserObjectOSPDClass for calculating the scalar residual and diagonal Jacobian entry of generalized plane strain in OSPD formulation
- GhostElemPDClass for ghosting elements accross processors
- NodalDamageIndexPDClass for computing damage index for each material point in peridynamic fracture modeling and simulation
- NodalNumIntactBondsPDClass for computing number of intact bonds for each material point in peridynamic fracture modeling and simulation
- NodalRankTwoComponentPDClass for calculating components of nodal rank-two stress and strain tensors from material properties (stress and strain) for edge elements (i.e., bonds) connected at that node. NOTE: This UserObject only applies to the NOSPD model.
- NodalRankTwoScalarPDClass for calculating scalar quantities of nodal rank-two stress and strain tensors from material properties (stress and strain) for edge elements (i.e., bonds) connected at that node. NOTE: This UserObject only applies to the NOSPD model.
- SingularShapeTensorEliminatorUserObjectPDUserObject to eliminate the existance of singular shape tensor
- Porous Flow App
- AdvectiveFluxCalculatorConstantVelocityCompute K_ij (a measure of advective flux from node i to node j) and R+ and R- (which quantify amount of antidiffusion to add) in the Kuzmin-Turek FEM-TVD multidimensional scheme. Constant advective velocity is assumed
- PorousFlowAdvectiveFluxCalculatorSaturatedComputes the advective flux of fluid of given phase, assuming fully-saturated conditions. Hence this UserObject is only relevant to single-phase situations. Explicitly, the UserObject computes (density / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
- PorousFlowAdvectiveFluxCalculatorSaturatedHeatComputes the advective flux of heat energy in the given phase, assuming fully-saturated conditions. Hence this UserObject is only relevant to single-phase situations. Explicitly, the UserObject computes (density * enthalpy / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
- PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponentComputes the advective flux of fluid of given phase and fluid component. Explicitly, the UserObject computes (mass_fraction * density / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
- PorousFlowAdvectiveFluxCalculatorUnsaturatedComputes the advective flux of fluid of given phase, assuming unsaturated conditions. Hence this UserObject is only relevant to single-phase situations, or multi-phase situations where each fluid component appears in one phase only. Explicitly, the UserObject computes (density * relative_permeability / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
- PorousFlowAdvectiveFluxCalculatorUnsaturatedHeatComputes the advective flux of heat energy in a given phase, assuming unsaturated conditions. Hence this UserObject is only relevant to single-phase situations, or multi-phase situations where each fluid component appears in one phase only. Explicitly, the UserObject computes (density * enthalpy * relative_permeability / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
- PorousFlowAdvectiveFluxCalculatorUnsaturatedMultiComponentComputes the advective flux of fluid of given phase and component. Hence this UserObject is relevant to multi-phase, multi-component situations. Explicitly, the UserObject computes (mass_fraction * density * relative_permeability / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
- PorousFlowBrineCO2Fluid state class for brine and CO2
- PorousFlowCapillaryPressureBCBrooks-Corey capillary pressure
- PorousFlowCapillaryPressureBWBroadbridge and White capillary pressure for negligable Kn
- PorousFlowCapillaryPressureConstConstant capillary pressure
- PorousFlowCapillaryPressureRSCRogers-Stallybrass-Clements version of effective saturation for the water phase, valid for residual saturations = 0, and viscosityOil = 2 * viscosityWater. seff_water = 1 / sqrt(1 + exp((Pc - shift) / scale)), where scale = 0.25 * scale_ratio * oil_viscosity.
- PorousFlowCapillaryPressureVGvan Genuchten capillary pressure
- PorousFlowDictatorHolds information on the PorousFlow variable names
- PorousFlowSumQuantityRecords total mass flowing into a borehole
- PorousFlowWaterNCGFluid state class for water and non-condensable gas
- PorousFlowWaterVaporFluid state class for water and vapor
- Scalar Transport App
- GasLiquidMassTransferCalculates overall liquid mass transfer coefficient
[m/s]. - Phase Field App
- ComputeExternalGrainForceAndTorqueUserobject for calculating force and torque acting on a grain
- ComputeGrainForceAndTorqueUserobject for calculating force and torque acting on a grain
- ConservedMaskedNormalNoiseGaussian normal distributed random number noise provider with an applied spatially dependent material property mask for the ConservedLangevinNoise kernel.
- ConservedMaskedUniformNoiseUniformly distributed random number noise provider with an applied spatially dependent material property mask for the ConservedLangevinNoise kernel.
- ConservedNormalNoiseGaussian normal distributed random number noise provider for the ConservedLangevinNoise kernel.
- ConservedUniformNoiseUniformly distributed random number noise provider for the ConservedLangevinNoise kernel.
- ConstantGrainForceAndTorqueUserobject for calculating force and torque acting on a grain
- DiscreteNucleationFromFileManages the list of currently active nucleation sites and adds new sites according to a predetermined list from a CSV file (use this with sync_times).
- DiscreteNucleationInserterManages the list of currently active nucleation sites and adds new sites according to a given probability function.
- DiscreteNucleationMapGenerates a spatial smoothed map of all nucleation sites with the data of the DiscreteNucleationInserter for use by the DiscreteNucleation material.
- EBSDReaderLoad and manage DREAM.3D EBSD data files for running simulations on reconstructed microstructures.
- EulerAngleUpdaterProvide updated euler angles after rigid body rotation of the grains.
- GrainForceAndTorqueSumUserobject for summing forces and torques acting on a grain
- MaskedGrainForceAndTorqueUserobject for masking/pinning grains and making forces and torques acting on that grain zero
- RandomEulerAngleProviderAssign random Euler angles for each grain.
- SolutionRasterizerProcess an XYZ file of atomic coordinates and filter atoms via threshold or map variable values.
- Fluid Properties App
- FluidPropertiesInterrogatorUser object for querying a single-phase or two-phase fluid properties object
- Optimization App
- AdjointSolutionUserObjectReads a variable from a mesh in one simulation to another specifically for loading forward solution in adjoint simulation during inverse optimization.
- DensityUpdateCompute updated densities based on sensitivities using an optimality criteria method to keep the volume constraint satisified.
- DensityUpdateTwoConstraintsCompute updated densities based on sensitivities using an optimality criteria method to keep the volume and cost constraints satisified.
- SensitivityFilterComputes the filtered sensitivity using a radial average user object.
- Ray Tracing App
- ConeRayStudyRay study that spawns Rays in the direction of a cone from a given set of starting points.
- RepeatableRayStudyA ray tracing study that generates rays from vector of user-input start points and end points/directions.
Available Objects
- Moose App
- ADElementAverageMaterialPropertyComputes the average of a material property over a volume.
- ADElementExtremeFunctorValueFinds either the min or max elemental value of a functor over the domain.
- ADElementExtremeMaterialPropertyDetermines the minimum or maximum of a material property over a volume.
- ADElementIntegralFunctorPostprocessorComputes a volume integral of the specified functor
- ADElementIntegralMaterialPropertyCompute the integral of the material property over the domain
- ADElementL2FunctorErrorComputes L2 error between an 'approximate' functor and an 'exact' functor
- ADInterfaceDiffusiveFluxAverageComputes the diffusive flux on the interface.
- ADInterfaceDiffusiveFluxIntegralComputes the diffusive flux on the interface.
- ADSideAdvectiveFluxIntegralComputes the volumetric advected quantity through a sideset.
- ADSideAverageMaterialPropertyComputes the average of a material property over a side set.
- ADSideDiffusiveFluxAverageComputes the average of the diffusive flux over the specified boundary
- ADSideDiffusiveFluxIntegralComputes the integral of the diffusive flux over the specified boundary
- ADSideFluxAverageComputes the average of the diffusive flux over the specified boundary
- ADSideFluxIntegralComputes the integral of the diffusive flux over the specified boundary
- ADSideIntegralFunctorPostprocessorComputes a surface integral of the specified functor, using the single-sided face argument, which usually means that the functor will be evaluated from a single side of the surface, not interpolated between both sides.
- ADSideIntegralMaterialPropertyCompute the integral of a scalar material property component over the domain.
- ADSideVectorDiffusivityFluxIntegralComputes the integral of the diffusive flux over the specified boundary
- AreaPostprocessorComputes the "area" or dimension - 1 "volume" of a given boundary or boundaries in your mesh.
- AverageElementSizeComputes the average element size.
- AverageNodalVariableValueComputes the average value of a field by sampling all nodal solutions on the domain or within a subdomain
- AverageVariableChangeComputes the volume-weighted L1 or L2 norm of the change of a variable over a time step or between nonlinear iterations.
- AxisymmetricCenterlineAverageValueComputes the average value of a variable on a sideset located along the centerline of an axisymmetric model.
- BoundaryLinearFVFluxIntegralComputes the side integral of selected LinearFVFluxKernel boundary flux contributions.
- ChainControlDataPostprocessorGets a Real or bool chain control value.
- ChangeOverFixedPointPostprocessorComputes the change or relative change in a post-processor value over a single or multiple fixed point iterations
- ChangeOverTimePostprocessorComputes the change or relative change in a post-processor value over a timestep or the entire transient
- ChangeOverTimestepPostprocessorComputes the change or relative change in a post-processor value over a timestep or the entire transient
- ConstantPostprocessorPostprocessor that holds a constant value
- CumulativeValuePostprocessorCreates a cumulative sum of a Postprocessor value with time.
- DifferencePostprocessorComputes the difference between two postprocessors
- DiscreteVariableResidualNormComputes a discrete norm for a block-restricted variable residual.
- ElementArrayL2NormEvaluates L2-norm of a component of an array variable
- ElementAverageMaterialPropertyComputes the average of a material property over a volume.
- ElementAverageSecondTimeDerivativeComputes the element averaged second derivative of variable
- ElementAverageTimeDerivativeComputes a volume integral of the time derivative of a given variable
- ElementAverageValueComputes the volumetric average of a variable
- ElementExtremeFunctorValueFinds either the min or max elemental value of a functor over the domain.
- ElementExtremeMaterialPropertyDetermines the minimum or maximum of a material property over a volume.
- ElementExtremeValueFinds either the min or max elemental value of a variable over the domain.
- ElementH1ErrorComputes the H1 error between a variable and a function
- ElementH1SemiErrorReturns the gradient difference norm part of the H1 error
- ElementHCurlErrorReturns the H(curl)-norm of the difference between a pair of computed and analytical vector-valued solutions.
- ElementHCurlSemiErrorReturns the H(curl)-seminorm of the difference between a pair of computed and analytical vector-valued solutions.
- ElementHDivErrorReturns the H(div)-norm of the difference between a pair of computed and analytical vector-valued solutions.
- ElementHDivSemiErrorReturns the H(div)-seminorm of the difference between a pair of computed and analytical vector-valued solutions.
- ElementIntegralArrayVariablePostprocessorIntegral of one component of an array variable.
- ElementIntegralFunctorPostprocessorComputes a volume integral of the specified functor
- ElementIntegralMaterialPropertyCompute the integral of the material property over the domain
- ElementIntegralVariablePostprocessorComputes a volume integral of the specified variable
- ElementL1ErrorComputes L1 error between an elemental field variable and an analytical function.
- ElementL2DifferenceComputes the element-wise L2 difference between the current variable and a coupled variable.
- ElementL2ErrorComputes L2 error between a field variable and an analytical function
- ElementL2FunctorErrorComputes L2 error between an 'approximate' functor and an 'exact' functor
- ElementL2NormComputes a volume integral of the specified variable
- ElementMaxLevelPostProcessorComputes the maximum element adaptivity level (for either h or p refinement).
- ElementSidesL2NormComputes the L2 norm of a variable over element sides.
- ElementVectorL2ErrorReturns the L2-norm of the difference between a pair of computed and analytical vector-valued solutions.
- ElementW1pErrorComputes the W1p norm of the difference between a variable and an analytic solution, as a function
- ElementalVariableValueOutputs an elemental variable value at a particular location
- EmptyPostprocessorA postprocessor object that returns a value of zero.
- FindValueOnLineFind a specific target value along a sampling line. The variable values along the line should change monotonically. The target value is searched using a bisection algorithm.
- FunctionElementAverageComputes the average of a function over a volume.
- FunctionElementIntegralIntegrates a function over elements
- FunctionSideAverageComputes the average of a function over a boundary.
- FunctionSideIntegralComputes the integral of a function over a boundary.
- FunctionValuePostprocessorComputes the value of a supplied function at a single point (scalable)
- GreaterThanLessThanPostprocessorCount number of DOFs of a non-linear variable that are greater than or less than a given threshold
- InterfaceAverageVariableValuePostprocessorComputes the average value of a variable on an interface. Note that this cannot be used on the centerline of an axisymmetric model.
- InterfaceDiffusiveFluxAverageComputes the diffusive flux on the interface.
- InterfaceDiffusiveFluxIntegralComputes the diffusive flux on the interface.
- InterfaceIntegralVariableValuePostprocessorAdd access to variables and their gradient on an interface.
- InternalSideIntegralVariablePostprocessorComputes an integral on internal sides of the specified variable
- KokkosElementAverageMaterialPropertyCompute the integral of the material property over the domain
- KokkosElementAverageValueComputes a volume integral of the specified variable
- KokkosElementExtremeValueFinds either the min or max elemental value of a variable over the domain.
- KokkosElementIntegralMaterialPropertyCompute the integral of the material property over the domain
- KokkosElementIntegralVariablePostprocessorComputes a volume integral of the specified variable
- KokkosElementL2NormComputes a volume integral of the specified variable
- KokkosNodalExtremeValueFinds either the min or max nodal value of a variable over the domain.
- KokkosNodalL2NormComputes the nodal L2-norm of the coupled variable, which is defined by summing the square of its value at every node and taking the square root.
- KokkosNodalMaxValueIdFinds the node ID with the maximum nodal value across all postprocessors.
- KokkosNodalSumComputes the sum of all of the nodal values of the specified variable. Note: This object sets the default "unique_node_execute" flag to true to avoid double counting nodes between shared blocks.
- KokkosSideAverageMaterialPropertyCompute the integral of the material property over the domain
- KokkosSideAverageValueComputes a volume integral of the specified variable
- KokkosSideExtremeValueFinds either the min or max variable value of a variable over a boundary.
- KokkosSideIntegralMaterialPropertyCompute the integral of the material property over the domain
- KokkosSideIntegralVariablePostprocessorComputes a volume integral of the specified variable
- KokkosSumPostprocessorSums the values of several postprocessors
- LibtorchControlValuePostprocessorReports the value stored in given controlled parameters.
- LinearCombinationPostprocessorComputes a linear combination between an arbitrary number of post-processors
- MFEMComplexVectorPeriodAveragedPostprocessorCalculates the time average of the inner product between two complex MFEM vector FE variables, scaled by an optional scalar coefficient.
- MFEML2ErrorComputes L2 error for gridfunctions using H1 or L2 elements.
- MFEMVectorBoundaryFluxIntegralPostprocessorCalculates the integral of the flux of a vector variable across a boundary.
- MFEMVectorFEInnerProductIntegralPostprocessorCalculates the integral of the inner product of two vector variables within a subdomain.
- MFEMVectorL2ErrorComputes L2 error for vector gridfunctions.
- MatrixSymmetryCheckReport whether a matrix is symmetric or not.
- MemoryUsageMemory usage statistics for the running simulation.
- NearestNodeNumberOutputs the nearest node number to a point
- NodalExtremeValueFinds either the min or max elemental value of a variable over the domain.
- NodalL2ErrorThe L2-norm of the difference between a variable and a function computed at nodes.
- NodalL2NormComputes the nodal L2-norm of the coupled variable, which is defined by summing the square of its value at every node and taking the square root.
- NodalMaxValueComputes the maximum (over all the nodal values) of a variable.
- NodalMaxValueIdFinds the node id with the maximum nodal value across all postprocessors.
- NodalProxyMaxValueFinds the node id with the maximum nodal value across all postprocessors.
- NodalSumComputes the sum of all of the nodal values of the specified variable. Note: This object sets the default "unique_node_execute" flag to true to avoid double counting nodes between shared blocks.
- NodalVariableValueOutputs values of a nodal variable at a particular location
- NumDOFsReturn the number of Degrees of freedom from either the NL, Aux or both systems.
- NumElementsReturn the number of active or total elements in the simulation.
- NumElemsReturn the number of active or total elements in the simulation.
- NumFailedTimeStepsCollects the number of failed time steps from the time stepper.
- NumFixedPointIterationsReturns the number of fixed point iterations taken by the executioner.
- NumLinearIterationsCompute the number of linear iterations.
- NumMeshDivisionsReturn the number of divisions/regions from a MeshDivision object.
- NumNodesReturns the total number of nodes in a simulation (works with DistributedMesh)
- NumNonlinearIterationsOutputs the number of nonlinear iterations
- NumPicardIterationsReturns the number of fixed point iterations taken by the executioner.
- NumPositionsReturn the number of Positions from a Positions object.
- NumRelationshipManagersReturn the number of relationship managers active.
- NumResidualEvaluationsReturns the total number of residual evaluations performed.
- NumTimeStepsReports the timestep number
- NumVarsReturn the number of variables from either the NL, Aux, or both systems.
- ParsedPostprocessorComputes a parsed expression with post-processors
- PercentChangePostprocessorComputes the percent change of a postprocessor value compared to the value at the previous timestep.
- PerfGraphDataRetrieves performance information about a section from the PerfGraph.
- PointValueCompute the value of a variable at a specified location
- PostprocessorComparisonCompares two post-processors and produces a boolean value
- PseudoTimestepComputes pseudo-time steps for obtaining steady-state solutions through a pseudo transient process.
- ReceiverReports the value stored in this processor, which is usually filled in by another object. The Receiver does not compute its own value.
- RelativeDifferencePostprocessorComputes the absolute value of the relative difference between 2 post-processor values.
- RelativeSolutionDifferenceNormComputes the relative norm of the solution difference of two consecutive time steps.
- ResidualReport the non-linear residual.
- ScalarL2ErrorCompute L2 error of a scalar variable using analytic function.
- ScalarVariableReturns the value of a scalar variable as a postprocessor value.
- ScalePostprocessorScales a post-processor by a value
- SideAdvectiveFluxIntegralComputes the volumetric advected quantity through a sideset.
- SideAverageFunctorPostprocessorComputes the average of a functor over a side set.
- SideAverageMaterialPropertyComputes the average of a material property over a side set.
- SideAverageValueComputes the average value of a variable on a sideset. Note that this cannot be used on the centerline of an axisymmetric model.
- SideDiffusiveFluxAverageComputes the average of the diffusive flux over the specified boundary
- SideDiffusiveFluxIntegralComputes the integral of the diffusive flux over the specified boundary
- SideExtremeValueFinds either the min or max variable value of a variable over a boundary.
- SideFVFluxBCIntegralComputes the side integral of different finite volume flux boundary conditions.
- SideFluxAverageComputes the average of the diffusive flux over the specified boundary
- SideFluxIntegralComputes the integral of the diffusive flux over the specified boundary
- SideIntegralFunctorPostprocessorComputes a surface integral of the specified functor, using the single-sided face argument, which usually means that the functor will be evaluated from a single side of the surface, not interpolated between both sides.
- SideIntegralMaterialPropertyCompute the integral of a scalar material property component over the domain.
- SideIntegralVariablePostprocessorComputes a surface integral of the specified variable
- SideVectorDiffusivityFluxIntegralComputes the integral of the diffusive flux over the specified boundary
- SumPostprocessorSums the values of several postprocessors
- TagVectorSumComputes the sum of components of the requested tagged vector
- TimeExtremeValueA postprocessor for reporting the extreme value of another postprocessor over time.
- TimeIntegratedPostprocessorIntegrate a Postprocessor value over time.
- TimePostprocessorReports the current time
- TimestepSizeReports the timestep size
- TotalVariableValueIntegrate a Postprocessor value over time.
- VariableInnerProductComputes a volume integral of the specified variable
- VariableResidualComputes the L2 norm of the residual of a single variable in the solution vector.
- VectorPostprocessorComparisonCompares two vector post-processors of equal size and produces a boolean value
- VectorPostprocessorComponentReturns the value of the specified component of a VectorPostprocessor
- VectorPostprocessorReductionValueTakes a VectorPostprocessor and performs a reduction operation on it (max, min, sum, average) and stores as postprocessor.
- VolumePostprocessorComputes the volume of a specified block
- Sub Channel App
- SCMDuctHeatRatePostprocessorCalculates the heat flow that goes into the coolant through the duct based on aux variable duct_heat_flux
- SCMPinPowerPostprocessorCalculates the total heat rate that goes into the coolant from all the heated fuel-pins based on aux variable q_prime
- SCMPinSurfaceTemperatureReturns the surface temperature of a specific fuel pin at a user defined height. Applies a linear reconstruction for the temperature.
- SCMPlanarMeanCalculates an mass-flow-rate averaged mean of the chosen variable on a z-plane at a user defined height over all subchannels
- SCMTHPowerPostprocessorCalculates the total power of the subchannel assembly via the thermal-hydraulic enthalpy flow rate balance between inlet and outlet.
- SubChannelDeltaCalculates an absolute overall inlet-mass-flow-rate weighted difference, of a chosen variable, for the whole subchannel assembly, from inlet to outlet
- SubChannelPointValuePrints out a user selected value of a specified subchannel at a user selected axial height
- Level Set App
- LevelSetCFLConditionCompute the minimum timestep from the Courant-Friedrichs-Lewy (CFL) condition for the level-set equation.
- LevelSetVolumeCompute the area or volume of the region inside or outside of a level set contour.
- Stochastic Tools App
- AdaptiveSamplingCompletedPostprocessorInforms whether a sampler has finished its sampling (1 = completed, 0 otherwise).
- LibtorchDRLLogProbabilityPostprocessorComputes the logarithmic probability of the action in a given LibtorchDRLController.
- Rdg App
- BoundaryFluxPostprocessorComputes the side integral of a flux entry from a BoundaryFluxBase user object
- RDGBoundaryFluxPostprocessorComputes the side integral of a flux entry from a BoundaryFluxBase user object
- Misc App
- GeneralSensorPostprocessorThis is a GeneralSensorPostprocessor, and functions as a base class for other sensor postprocessors
- InternalVolumeComputes the volume of an enclosed area by performing an integral over a user-supplied boundary.
- ThermocoupleSensorPostprocessorThis is a ThermocoupleSensorPostprocessor for various classes of thermocouples, described by the 'thermocouple_type' parameter
- Thermal Hydraulics App
- ADElementIntegralMaterialPropertyRZComputes the volume integral of a material property for an RZ geometry.
- ADFlowBoundaryFlux1PhaseRetrieves an entry of a flux vector for a connection attached to a 1-phase junction
- ADFlowJunctionFlux1PhaseRetrieves an entry of a flux vector for a connection attached to a 1-phase junction
- ADHeatRateConvection1PhaseComputes convective heat rate into a 1-phase flow channel
- ADHeatRateDirectFlowChannelComputes the heat rate into a flow channel from heat flux material property
- ADHeatStructureEnergyComputes the total energy for a plate heat structure.
- ADHeatStructureEnergy3DComputes the total energy for a 3D heat structure.
- ADHeatStructureEnergyRZComputes the total energy for a cylindrical heat structure.
- ADSideFluxIntegralRZIntegrates a diffusive flux over a boundary of a 2D RZ domain.
- ADSpecificImpulse1PhaseEstimates specific impulse from fluid state at a boundary
- BoolComponentParameterValuePostprocessorPostprocessor for reading a boolean value from the control logic system.
- BoolControlDataValuePostprocessorOutput the value of a boolean ControlData as a postprocessor
- EnergyFluxIntegralComputes the integral of the energy flux over a boundary
- FunctionElementIntegralRZIntegrates a function over elements for RZ geometry modeled by XY domain
- FunctionSideIntegralRZIntegrates a function over sides for RZ geometry modeled by XY domain
- HeatRateConductionRZIntegrates a conduction heat flux over an RZ boundary.
- HeatRateConvectionIntegrates a convective heat flux over a boundary.
- HeatRateConvection1PhaseComputes convective heat rate into a 1-phase flow channel
- HeatRateConvectionRZIntegrates a cylindrical heat structure boundary convective heat flux
- HeatRateDirectFlowChannelComputes the heat rate into a flow channel from heat flux material property
- HeatRateExternalAppConvectionRZIntegrates a cylindrical heat structure boundary convective heat flux from an external application
- HeatRateHeatFluxIntegrates a heat flux function over a boundary
- HeatRateHeatFluxRZIntegrates a heat flux function over a cylindrical boundary in a XYZ coordinate system.
- HeatRateRadiationIntegrates a radiative heat flux over a boundary.
- HeatRateRadiationRZIntegrates a cylindrical heat structure boundary radiative heat flux
- HeatStructureEnergyComputes the total energy for a plate heat structure.
- HeatStructureEnergy3DComputes the total energy for a 3D heat structure.
- HeatStructureEnergyRZComputes the total energy for a cylindrical heat structure.
- MassFluxIntegralComputes the integral of the mass flux over a boundary
- MomentumFluxIntegralComputes the integral of the momentum flux over a boundary
- NodalEnergyFluxPostprocessorCompute the energy flux from the sum of the nodal energy fluxes
- Normalized1PhaseResidualNormComputes a normalized residual norm for the single-phase flow model.
- NormalizedHeatStructureResidualNormComputes a normalized residual norm for a heat structure.
- RealComponentParameterValuePostprocessorPostprocessor for reading a Real (floating point) value from the control logic system.
- RealControlDataValuePostprocessorOutputs the value of a ControlData as a postprocessor
- ShaftConnectedComponentPostprocessorGets torque or moment of inertia for a shaft-connected component.
- ShaftConnectedCompressor1PhasePostprocessorGets various quantities for a ShaftConnectedCompressor1Phase
- SideFluxIntegralRZIntegrates a diffusive flux over a boundary of a 2D RZ domain.
- SpecificImpulse1PhaseEstimates specific impulse from fluid state at a boundary
- VolumeJunctionCoupledFlux1PhasePostprocessorComputes a mass or energy flux for VolumeJunctionCoupledFlux1Phase.
- Heat Transfer App
- ADConvectiveHeatTransferSideIntegralComputes the total convective heat transfer across a boundary.
- ConvectiveHeatTransferSideIntegralComputes the total convective heat transfer across a boundary.
- ExposedSideAverageValueComputes the average value of a variable on the exposed portion of a sideset. Note that this cannot be used on the centerline of an axisymmetric model.
- GrayLambertSurfaceRadiationPPThis postprocessor allows to extract radiosity, heat flux density, and temperature from the GrayLambertSurfaceRadiationBase object.
- HomogenizedThermalConductivityPostprocessor for asymptotic expansion homogenization for thermal conductivity
- ThermalConductivityComputes the effective thermal conductivity averaged on a boundary.
- ViewFactorPPThis postprocessor allows to extract view factors from ViewFactor userobjects.
- Electromagnetics App
- ReflectionCoefficientCURRENTLY ONLY FOR 1D PLANE WAVE SOLVES. Calculate power reflection coefficient for impinging wave on a surface. Assumes that wave of form F = F_incoming + R*F_reflected
- Contact App
- ContactDOFSetSizeOutputs the number of dofs greater than a tolerance threshold indicating mechanical contact
- NumAugmentedLagrangeIterationsGet the number of extra augmented Lagrange loops around the non-linear solve.
- Solid Mechanics App
- ADMassComputes the mass of the solid as the integral of the density material property
- ADMaterialTensorAverageComputes the average of a RankTwoTensor component over a volume.
- ADMaterialTensorIntegralThis postprocessor computes an element integral of a component of a material tensor as specified by the user-supplied indices
- ADSidesetReactionComputes the integrated reaction force in a user-specified direction on a sideset from the surface traction
- AnalysisStepNumberOutputs the current analysis step number.
- AsymptoticExpansionHomogenizationElasticConstantsPostprocessor for asymptotic expansion homogenization for elasticity
- CavityPressurePostprocessorInterfaces with the CavityPressureUserObject to store the initial number of moles of a gas contained within an internal volume.
- CrackFrontDataDetermines which nodes are along the crack front
- CriticalTimeStepComputes and reports the critical time step for the explicit solver.
- MassComputes the mass of the solid as the integral of the density material property
- MaterialTensorAverageComputes the average of a RankTwoTensor component over a volume.
- MaterialTensorIntegralThis postprocessor computes an element integral of a component of a material tensor as specified by the user-supplied indices
- MaterialTimeStepPostprocessorThis postprocessor estimates a timestep that reduces the increment change in a material property below a given threshold.
- NormalBoundaryDisplacementThis postprocessor computes the normal displacement on a given set of boundaries.
- PolarMomentOfInertiaCompute the polar moment of inertia of a sideset w.r.t. a point and a direction
- SidesetReactionComputes the integrated reaction force in a user-specified direction on a sideset from the surface traction
- TorqueReactionTorqueReaction calculates the torque in 2D and 3Dabout a user-specified axis of rotation centeredat a user-specified origin.
- Chemical Reactions App
- TotalMineralVolumeFractionTotal volume fraction of coupled mineral species
- Solid Properties App
- ThermalSolidPropertiesPostprocessorComputes a property from a ThermalSolidProperties object.
- Navier Stokes App
- ADCFLTimeStepSizeComputes a time step size based on a user-specified CFL number
- CFLTimeStepSizeComputes a time step size based on a user-specified CFL number
- INSADElementIntegralEnergyAdvectionComputes the net volumetric balance of energy transported by advection
- INSElementIntegralEnergyAdvectionComputes the net volumetric balance of energy transported by advection
- INSExplicitTimestepSelectorPostprocessor that computes the minimum value of h_min/|u|, where |u| is coupled in as an aux variable.
- IntegralDirectedSurfaceForceComputes the directed force coming from friction and pressure differences on a surface. One can use this object for the computation of the drag and lift coefficient as well.
- MassFluxWeightedFlowRateComputes the mass flux weighted average of the quantity provided by advected_quantity over a boundary.
- MatrixEigenvalueCheckReport the number of zero eigenvalues of a matrix.
- MatrixEqualityCheckReport whether two matrices are the same or not.
- MfrPostprocessorObject for outputting boundary mass fluxes in conjunction with FVFluxBC derived objects that support it
- NSEntropyErrorComputes entropy error.
- PressureDropComputes the pressure drop between an upstream and a downstream boundary.
- RayleighNumberPostprocessor that computes the Rayleigh number for free flow with natural circulation
- VolumetricFlowRateComputes the volumetric flow rate of an advected quantity through a sideset.
- Peridynamics App
- BondStatusConvergedPostprocessorPDPostprocessor to check whether the bond status is converged within a time step
- NodalDisplacementDifferenceL2NormPDClass for computing the L2 norm of the difference between displacements and their analytic solutions
- NodalFunctionsL2NormPDClass for computing the L2 norm of functions
- NodalVariableIntegralPDClass for calculating the domain integral of nodal variables
- Porous Flow App
- ADPorousFlowFluidMassCalculates the mass of a fluid component in a region
- FVPorousFlowFluidMassCalculates the mass of a fluid component in a region
- PorousFlowFluidMassCalculates the mass of a fluid component in a region
- PorousFlowHeatEnergyCalculates the sum of heat energy of fluid phase(s) and/or the porous skeleton in a region
- PorousFlowPlotQuantityExtracts the value from the PorousFlowSumQuantity UserObject
- Phase Field App
- AverageGrainVolumeCalculate average grain area in a polycrystal
- DiscreteNucleationDataOutput diagnostic data on a DiscreteNucleationInserter
- DiscreteNucleationTimeStepReturn a time step limit for nucleation event to be used by IterationAdaptiveDT
- FauxGrainTrackerFake grain tracker object for cases where the number of grains is equal to the number of order parameters.
- FauxPolycrystalVoronoiRandom Voronoi tessellation polycrystal when the number of order parameters equal to the number of grains
- FeatureFloodCountThe object is able to find and count "connected components" in any solution field or number of solution fields. A primary example would be to count "bubbles".
- FeatureVolumeFractionComputes the total feature volume fraction from a vectorpostprocessor computing the feature volume
- GrainBoundaryAreaCalculate total grain boundary length in 2D and area in 3D
- GrainTrackerGrain Tracker object for running reduced order parameter simulations without grain coalescence.
- GrainTrackerElasticityGrain Tracker object for running reduced order parameter simulations without grain coalescence.
- ObtainAvgContactAngleObtain contact angle
- PFCElementEnergyIntegralComputes the integral of the energy from the temperature. Note that the kb factor is missing.
- PolycrystalCirclesPolycrystal circles generated from a vector input or read from a file
- PolycrystalEBSDObject for setting up a polycrystal structure from an EBSD Datafile
- PolycrystalHexPerturbed hexagonal polycrystal
- PolycrystalVoronoiRandom Voronoi tessellation polycrystal (used by PolycrystalVoronoiAction)
- WeightedVariableAverageAverage a variable value using a weight mask given by a material property.
- Ray Tracing App
- RayDataValueObtains a value from the data or aux data of a Ray after tracing has been completed.
- RayIntegralValueObtains the integrated value accumulated into a Ray from an IntegralRayKernel-derived class.
- RayTracingStudyResultGets a result from a RayTracingStudy.
Available Objects
- Moose App
- ArrayVariableValueVolumeHistogramCompute histograms of volume fractions binned according to component values of an array variable.
- CSVReaderConverts columns of a CSV file into vectors of a VectorPostprocessor.
- CSVReaderVectorPostprocessorConverts columns of a CSV file into vectors of a VectorPostprocessor.
- CombinedVectorPostprocessorOutputs the values of an arbitrary user-specified set of vectorpostprocessors as a combined vector in the order specified by the user
- ConstantVectorPostprocessorPopulate constant VectorPostprocessorValue directly from input file.
- CylindricalAverageCompute a cylindrical average of a variableas a function of radius throughout the simulation domain.
- EigenvaluesReturns the Eigen values from the nonlinear Eigen system.
- ElementMaterialSamplerRecords all Real-valued material properties of a material object, or Real-valued material properties of the supplied property names on quadrature points on elements at the indicated execution points.
- ElementValueSamplerSamples values of variables on elements.
- ElementVariablesDifferenceMaxComputes the largest difference between two variable fields.
- ElementsAlongLineOutputs the IDs of every element intersected by a user-defined line
- ElementsAlongPlaneOutputs the IDs of every element intersected by a user-defined plane
- ExtraIDIntegralVectorPostprocessorIntegrates or averages variables based on extra element IDs
- HistogramVectorPostprocessorCompute a histogram for each column of a VectorPostprocessor
- IntersectionPointsAlongLineGet the intersection points for all of the elements that are intersected by a line.
- KokkosExtraIDIntegralVectorPostprocessorIntegrates or averages variables based on extra element IDs
- LeastSquaresFitPerforms a polynomial least squares fit on the data contained in another VectorPostprocessor
- LeastSquaresFitHistoryPerforms a polynomial least squares fit on the data contained in another VectorPostprocessor and stores the full time history of the coefficients
- LineFunctionSamplerSample one or more functions along a line.
- LineMaterialRealSamplerSamples real-valued material properties for all quadrature points in all elements that are intersected by a specified line
- LineValueSamplerSamples variable(s) along a specified line
- MFEMEigenvaluesPostprocessorRetrieves the eigenvalues from an eigensolve for exporting.
- MFEMLineValueSamplerSample an MFEM variable along a specified line.
- MFEMPointValueSamplerSample an MFEM variable at specific points.
- MaterialVectorPostprocessorRecords all Real-valued material properties of a material object, or Real-valued material properties of the supplied property names on quadrature points on elements at the indicated execution points.
- MeshDivisionFunctorReductionVectorPostprocessorPerform reductions on functors based on a per-mesh-division basis
- NearestPointIntegralVariablePostprocessorCompute element variable integrals for nearest-point based subdomains
- NodalValueSamplerSamples values of nodal variable(s).
- PointValueSamplerSample a variable at specific points.
- PositionsFunctorValueSamplerSample one or more functors at points specified by a Positions object.
- SideValueSamplerSample variable(s) along a sideset, internal or external.
- SidesetInfoVectorPostprocessorThis VectorPostprocessor collects meta data for provided sidesets.
- SpatialUserObjectVectorPostprocessorOutputs the values of a spatial user object in the order of the specified spatial points
- SphericalAverageCompute a spherical average of a variable as a function of radius throughout the simulation domain.
- VariableValueVolumeHistogramCompute a histogram of volume fractions binned according to variable values.
- VectorMemoryUsageGet memory stats for all ranks in the simulation
- VectorOfPostprocessorsOutputs the values of an arbitrary user-specified set of postprocessors as a vector in the order specified by the user
- VolumeHistogramCompute a histogram of volume fractions binned according to variable values.
- WorkBalanceComputes several metrics for workload balance per processor
- Phase Field App
- EulerAngleUpdaterCheckProvide updated Euler angles after rigid body rotation of the grains.
- FeatureVolumeVectorPostprocessorThis object is designed to pull information from the data structures of a "FeatureFloodCount" or derived object (e.g. individual feature volumes)
- GrainForcesPostprocessorOutputs the values from GrainForcesPostprocessor
- GrainTextureVectorPostprocessorGives out info on the grain boundary properties
- Thermal Hydraulics App
- ADSampler1DRealSamples material properties at all quadrature points in mesh block(s)
- NumericalFlux3EqnInternalValuesComputes internal fluxes for FlowChannel1Phase.
- Sampler1DRealSamples material properties at all quadrature points in mesh block(s)
- Sampler1DVectorSamples a single component of array material properties at all quadrature points in mesh block(s)
- Heat Transfer App
- SurfaceRadiationVectorPostprocessorVectorPostprocessor for accessing information stored in surface radiation user object
- ViewFactorVectorPostprocessorVectorPostprocessor for accessing view factors from GrayLambertSurfaceRadiationBase UO
- ViewfactorVectorPostprocessorVectorPostprocessor for accessing view factors from GrayLambertSurfaceRadiationBase UO
- Optimization App
- AdjointStrainSymmetricStressGradInnerProductThis component is designed to compute the gradient of the objective function concerning specific properties. It achieves this by computing the inner product of the property derivative obtained a material property and the strain resulting from the forward simulation.
- ElementOptimizationDiffusionCoefFunctionInnerProductCompute the gradient for material inversion by taking the inner product of gradients of the forward and adjoint variables with material gradient
- ElementOptimizationReactionFunctionInnerProductCompute the gradient for reaction material inversion by taking the inner product of the forward and adjoint variables multiplied by the derivative of the optimization function with respect to the controllable parameters.
- ElementOptimizationSourceFunctionInnerProductComputes the inner product of variable with parameterized source function for optimization gradient computation.
- SideOptimizationNeumannFunctionInnerProductComputes the inner product of variable with parameterized Neumann function for optimization gradient computation.
- Stochastic Tools App
- GaussianProcessDataTool for extracting hyperparameter data from gaussian process user object and storing in VectorPostprocessor vectors.
- SamplerDataTool for extracting Sampler object data and storing in VectorPostprocessor vectors.
- SobolStatisticsCompute SOBOL statistics values of a given VectorPostprocessor objects and vectors.
- StatisticsCompute statistical values of a given VectorPostprocessor objects and vectors.
- StochasticResultsStorage container for stochastic simulation results coming from a Postprocessor.
- Ray Tracing App
- PerProcessorRayTracingResultsVectorPostprocessorAccumulates ray tracing results (information about the trace) on a per-processor basis.
- Navier Stokes App
- WaveSpeedVPPExtracts wave speeds from HLLC userobject for a given face
- Solid Mechanics App
- ADInteractionIntegralComputes the interaction integral, which is used to compute various fracture mechanics parameters at a crack tip, including KI, KII, KIII, and the T stress.
- AverageSectionValueSamplerCompute the section's variable average in three-dimensions given a user-defined definition of the cross section.
- BlockOrientationFromUserObjectOutput the Euler angle for each block computed from average of quaternions.
- CrackFrontNonlocalScalarMaterialComputes the average material at points provided by the crack_front_definition vectorpostprocessor.
- CrackFrontNonlocalStressComputes the average stress normal to the crack face.
- InteractionIntegralComputes the interaction integral, which is used to compute various fracture mechanics parameters at a crack tip, including KI, KII, KIII, and the T stress.
- JIntegralComputes the J-Integral, a measure of the strain energy release rate at a crack tip, which can be used as a criterion for fracture growth. It can, alternatively, compute the C(t) integral
- LineMaterialRankTwoSamplerAccess a component of a RankTwoTensor
- LineMaterialRankTwoScalarSamplerCompute a scalar property of a RankTwoTensor
- MixedModeEquivalentKComputes the mixed-mode stress intensity factor given the , , and stress intensity factors
Available Objects
- Moose App
- ADElementExtremeMaterialPropertyReporterDetermines the location of the minimum or maximum value of a material property over a volume, and provides its coordinates and optionally other requested data at that location.
- AccumulateReporterReporter which accumulates the value of a inputted reporter value over time into a vector reporter value of the same type.
- ConstantReporterReporter with constant values to be accessed by other objects, can be modified using transfers.
- ElementExtremeMaterialPropertyReporterDetermines the location of the minimum or maximum value of a material property over a volume, and provides its coordinates and optionally other requested data at that location.
- ElementVariableStatisticsElement reporter to get statistics for a coupled variable. This can be transfered to other apps.
- ExtraIDIntegralReporterThis ExtraIDIntegralReporter source code is to integrate variables based on parsed extra IDs based on reporter system.
- IterationInfoReport the time and iteration information for the simulation.
- KokkosElementVariableStatisticsElement reporter to get statistics for a coupled variable. This can be transfered to other apps.
- KokkosNodalVariableStatisticsNodal reporter to get statistics for a coupled variable. This can be transfered to other apps.
- LibtorchArtificialNeuralNetParametersOutputs the parameters of a LibtorchArtificialNeuralNetwork within a LibtorchNeuralNetControl.
- MeshInfoReport mesh information, such as the number of elements, nodes, and degrees of freedom.
- MeshMetaDataReporterReports the mesh meta data.
- MortarSegmentMeshReporterReports mortar segment mesh statistics (element counts and volume statistics) for all mortar interfaces. One entry per primary-secondary subdomain pair is appended to each output vector.
- NodalVariableStatisticsNodal reporter to get statistics for a coupled variable. This can be transfered to other apps.
- ParsedScalarReporterApplies parsed functions to scalar entries held in reporters.
- ParsedVectorRealReductionReporterUse a parsed function to iterate through a vector and reduce it to a scalar.
- ParsedVectorReporterApply parsed functions to vector entries held in reporters.
- ParsedVectorVectorRealReductionReporterUse a parsed function to iterate through a rows of a vector of vector and reduce it to a vector.
- PerfGraphReporterReports the full performance graph from the PerfGraph.
- RestartableDataReporterReports restartable data and restartable meta data.
- SolutionInvalidityReporterReports the Summary Table of Solution Invalid Counts.
- Optimization App
- OptimizationDataReporter to hold measurement and simulation data for optimization problems
- OptimizationInfoReports Optimization Output
- Stochastic Tools App
- ActiveLearningGPDecisionEvaluates a GP surrogate model, determines its prediction quality, launches full model if GP prediction is inadequate, and retrains GP.
- AdaptiveImportanceStatsReporter to compute statistics corresponding to the AdaptiveImportanceSampler.
- AdaptiveMonteCarloDecisionGeneric reporter which decides whether or not to accept a proposed sample in Adaptive Monte Carlo type of algorithms.
- AffineInvariantDifferentialDecisionPerform decision making for Affine Invariant differential MCMC.
- AffineInvariantStretchDecisionPerform decision making for Affine Invariant stretch MCMC.
- BayesianActiveLearnerA reporter to support parallel active learning for Bayesian UQ tasks.
- BiFidelityActiveLearningGPDecisionPerform active learning decision making in bi-fidelity modeling.
- ConditionalSampleReporterEvaluates parsed function to determine if sample needs to be evaluated, otherwise data is set to a default value.
- CrossValidationScoresTool for extracting cross-validation scores and storing them in a reporter for output.
- DRLControlNeuralNetParametersOutputs the parameters of a LibtorchArtificialNeuralNetwork within a LibtorchDRLControlTrainer.
- DRLRewardReporterReporter containing the reward values of a DRL controller trainer.
- DirectPerturbationReporterCompute local sensitivities using the direct perturbation method.
- EvaluateSurrogateTool for sampling surrogate models.
- GenericActiveLearnerA generic reporter to support parallel active learning: re-trains GP and picks the next best batch.
- IndependentMHDecisionPerform decision making for independent Metropolis-Hastings MCMC.
- MappingReporterA reporter which can map full solution fields to a latent space for given variables.
- MorrisReporterCompute global sensitivities using the Morris method.
- PMCMCDecisionGeneric reporter which decides whether or not to accept a proposed sample in parallel Markov chain Monte Carlo type of algorithms.
- ParallelSolutionStorageParallel container to store serialized solution fields from simulations on sub-applications.
- PolynomialChaosReporterTool for extracting data from PolynomialChaos surrogates and computing statistics.
- SingularTripletReporterTool for accessing and outputting the singular triplets of a singular value decomposition in PODMapping.
- SobolReporterCompute SOBOL statistics values of a given VectorPostprocessor or Reporter objects and vectors.
- SolutionContainerClass responsible for collecting distributed solution vectors into a container. We append a new distributed solution vector (containing all variables) at every execution.
- StatisticsReporterCompute statistical values of a given VectorPostprocessor objects and vectors.
- StochasticMatrixTool for extracting Sampler object data and storing data from stochastic simulations.
- StochasticReporterStorage container for stochastic simulation results coming from Reporters.
- XFEMApp
- ParisLawThis reporter computes the crack growth increment at all active crack front points in the CrackMeshCut3DUserObject for fatigue crack growth based on the Paris Law. Data for crack growth rates in this reporter are stored in the same order as in the fracture integral VectorPostprocessors.
- StressCorrosionCrackingExponentialThis reporter computes the crack growth increment at all active crack front points in the CrackMeshCut3DUserObject for stress corrosion cracking fit to an exponential function. Crack growth rates computed by this reporter are stored in the same order as in the fracture integral VectorPostprocessors.