MOOSE Newsletter (June 2023)
MOOSE Improvements
General axisymmetric coordinates
The RZ
coordinate system was extended to enable using general coordinate axes. Before this, the RZ
coordinate system was limited in the following ways:
The origin of the coordinate system was restricted to be only.
The direction of the axisymmetric axis was restricted to be the or direction.
Only a single axisymmetric coordinate system could be defined.
Now arbitrary axisymmetric coordinate systems may be specified on a per-subdomain basis: for each subdomain using RZ
, the axis origin and direction are specified. See Coordinate Systems for more information.
Added HSCoupler2D3D component
The HSCoupler2D3D component was added to the Thermal Hydraulics module. This component fully couples a 2D heat structure boundary to a 3D heat structure boundary via a simplified gap heat transfer formulation. Using this component can avoid the need to create MultiApps for simulations solving transient heat conduction between a 3D domain like an assembly matrix and 2D heat structure components. The main caveat is that the application needs to be configured with a sufficient AD container size, due to coupling 2D elements to arbitrary numbers of 3D elements. See the component documentation for more information.
Fluid properties improvements
Several new function definitions were added in the fluid properties of the fluid properties module:
for helium: specific energy computed from pressure and density
for lead and lead-bismuth eutectic: temperature computed from pressure and enthalpy
for tabulated fluid properties: temperature and density from pressure and specific entropy
For the sodium-potassium eutectic, the computation of temperature from pressure and enthalpy now relies on an analytical inversion of the enthalpy equation rather than a Newton method-based solve.
Projections in the auxiliary system
The ProjectionAux auxiliary kernel was created, replacing the SelfAux
auxiliary kernel. It enables a variety of projections for a variable, auxiliary or nonlinear, to an auxiliary variable that minimizes the L2-norm of the difference.
It notably enables conversions, with a projection error, between variables with all their degrees of freedom at nodes (for example linear Lagrange) and variables defined through degrees of freedom on the element (for example a constant monomial).
libMesh-level Changes
2023.06.19
Update
Avoid using direct
new
calls or C-style casts in examples and unit testsRBConstruction
: Re-throw exceptions on all procs in parallelAdded
QBase::size()
for more generic algorithm compatibilityOptimization of
LAGRANGE
Hex and especiallyRATIONAL_BERNSTEIN
shape function and derivative evaluationsUpdated
reduced_basis
APIs, including vectorization of RBParameters values and optimization workEquationSystems
I/O can now be done to anyistream
/ostream
, not just directly to files; this is in support of future serialization improvements in MOOSEFEAbstract::add_p_level_in_reinit()
API to allowFE
objects to individually ignoreElem
p-refinement levels; this is a prerequisite to p-refinement support in MOOSEBetter error checking and handling in
ExodusII_IO
input and mesh stitchingEigenSystem
(as opposed toCondensedEigenSystem
solves of constrained systems now throw errors, rather than risking returning non-physical eigenmodesMajor bug fixes for certain triangulation refinement cases with
Poly2TriTriangulator
Assorted bug fixes -
all_second_order()
leaves untouched any elements in the range that are already second-order - build system console output cleaned up; - Fixes, workarounds to pass-fsanitize=integer
builds -CouplingMatrix
is now compatible with hundreds of thousands of variable fields -Elem::key()
is now 64-bit for 64-bitdof_id_type
builds, improving performance by reducing hash conflicts -ExodusII_IO
output now handles matching sideset and shellface set ids -DistributedMesh
can handle nodes being not-quite-orphaned by user code element deletion - Mesh copying and cloning now handles missing entries in boundary id to name maps, as well as better preserving partitioning settings
TIMPI changes: - Fixes, workarounds to pass -fsanitize=integer
builds: correct signed-vs-unsigned use, explicit casts when converting, etc. - Test coverage for vector<bool>
reductions, test updates to remove deprecated code - Cleaner vector<bool>
unpacking code
2023.06.23
Update
Un-condensed Eigensystem solves of constrained systems now throw warnings, not errors, for the sake of downstream apps getting away with it so far.
PETSc DM interface error messages now use proper format strings for 32-bit builds too
PETSc-level Changes
Bug Fixes and Minor Enhancements
FillBetweenSidesetsGenerator and SideSetsFromPointsGenerator are now compatible with DistributedMesh.
SideSetsFromPointsGenerator now detects and cleanly errors if given a point that can only determine a sideset ambiguously.
ElementDeletionGeneratorBase (used for BlockDeletionGenerator and PlaneDeletionGenerator now has a delete\_exteriors option, which can be set to false to retain the boundary elements of interior elements being deleted.
XYDelaunayGenerator now detects and cleanly errors in all cases where users mistakenly selected a hole for both refinement and stitching.
In the Navier Stokes finite volume implementation of weakly compressible flow, the user will now be able to compute face velocities on INITIAL by making the Rhie Chow interpolation default to a linear interpolation.
Object documentation was added to the Thermal Hydraulics module for its materials, postprocessors, a closure, constraints, controls, auxiliary kernels, scalar auxkernels, initial conditions and actions.
The object documentation index was re-organized with separate categories for FunctorMaterials, ControlLogic. Syntax documentation was added for boundary conditions
A LayeredExtremumMaterialProperty user object was created to be able to compute extremum of material properties on spatial layers.