MOOSE Newsletter (January 2025)
MOOSE Improvements
Added ParsedConvergence
ParsedConvergence was added, which allows the user to specify arbitrary convergence and divergence criteria. The parsed expression may include other Convergence objects, Functions, Post-processors, and constant values.
General meshing
The CutMeshByLevelSetGenerator mesh generator was added to be able to modify meshes using general functions, while keeping the cut mesh with a smooth first order surface. Previously, only plane cuts were supported.
Restart capabilities
The SolutionUserObject can now use a fixed transformation on the time that it reads the solution at. This can be used to load a new solution on every time step, but at a different rate than the simulation time.
The old (one timestep prior) and older (two timesteps prior) states of a variable can now be initialized in the initial conditions [ICs]
block.
MOOSE Modules Changes
Thermal hydraulics
A new closure, FunctorClosures, was added that leverages functors to compute the friction coefficients in flow components, the wall heat transfer coefficient, and other thermal hydraulics closures.
Fluid properties
In preparation for using the enthalpy variable in lieu of the temperature variable in computational fluid dynamics solves, the T_from_p_h
routine, used to compute temperature from the fluid pressure and enthalpy, was implemented in the following fluid properties:
HelmholtzFluidProperties, such as CO2FluidProperties, NitrogenFluidProperties, MethaneFluidProperties and HydrogenFluidProperties
TabulatedFluidProperties were improved with the following modifications:
a logarithmic grid in enthalpy can now be used for properties computed from specific volume and specific enthalpy
a specific volume, specific energy tabulation can be read, but still rely on specific volume, specific enthalpy conversions to a pressure and temperature variable sets in order to avoid an iterative solve
the number of out-of-bounds evaluations can now be tallied and reported in the console log
Navier Stokes
The VolumetricFlowRate object was extended to support the linear finite volume discretization.
An option to compute enthalpy directly rather than its approximation by the product of specific heat by temperature has been added in the INSFVEnthalpyFunctorMaterial. This facilitates the problem setup when the approximation is not valid, such as for compressible gases.
The PIMPLE (PISO+SIMPLE) algorithm has been implemented. With this, the linear finite volume capabilities support transient simulations as well. For more information, see PIMPLE.
Reactor module
The ControlDrumMeshGenerator is now integrated in the Reactor Mesh Generator Building (RGMB) workflow. This abbreviated syntax facilitates the use of the mesh generators in the Reactor module to build Cartesian and hexagonal lattice-based reactor cores. It sets all the defaults and additional metadata that are expected by the downstream reactor physics applications (such as Griffin).
Solid Mechanics
The Solid Mechanics QuasiStatic Physics is no longer creating displacement variables without the block restriction of the Physics
. This is intended for being able to restrict the solid mechanics equations to only part of the subdomain. Simulations using multiple solid mechanics Physics
will automatically create the displacement variables using the union of all the block restrictions, if add_variables
is set in the shared [Physics/SolidMechanics/QuasiStatic]
block. Simulations with other Physics
deriving or creating the QuasiStaticSolidMechanicsPhysics
programmatically (such as in BISON) should likely create the displacement variables in a Variables
block.
The method used by the four-node shell elements (Shell elements) to define local coordinate systems has been revised. In the revised version, the user provides a reference direction for the first local coordinate, and that is then projected onto the plane of the shells and used as the first local coordinate direction. An AuxKernel has been added to visualize the local coordinate directions. These changes, together with the correction of a longstanding bug with the calculation of the normal direction, enable the use of these elements for accurate computation of the response of curved shells, as confirmed by multiple regression tests that agree well with published analytical solutions.
The Pressure Action is now controllable. It can be activated and de-activated using the Controls system. The enable status is propagated to the boundary conditions that the Action creates.
XFEM
A new MeshCut2DFractureUserObject was added; it is a 2D mesh based cutting object that will nucleate and grow cracks in XFEM using fracture integrals computed by the Solid Mechanics DomainIntegralAction. The fracture toughness determining when a crack will grow can be defined as a spatially varying field and sampled using the CrackFrontNonlocalScalarMaterial vectorpostprocessor that is used as an input in the MeshCut2DFractureUserObject.
Bug Fixes and Minor Enhancements
MooseDocs SQA has the ability to check against multiple test specification file names (for example,
tests
as well asassessments
) when performing requirement reporting and checks, using thespecs:
parameter insqa_reports.yml
.The ElementMaterialSampler can now be used to sample only selected material properties rather than all properties. from a single
Material
. This can also be used to sample from properties defined by separateMaterials
.A check was added to prevent infinite recursion when using the same input file as part of both the parent and child applications.
A new error was added when a user tries to initialize a variable using an Exodus initial condition and a shorthand
initial_condition
parameter in the relevantVariable
's block.A boolean flag was added to the
Outputs
block to limit the verbosity of the material property output, which is useful for large-dimensional tensor property output.The ParsedGenerateNodeset mesh generator can now work with non-contiguously numbered meshes.
A debug option was added for Controls:
show_controllable
, which will output all the quantities that can be controllable at initialization as well as all the controlled quantities and their current values during the simulation.