MOOSE Newsletter (August 2022)
MOOSE Improvements
HIT format and parser performance improvements
The parsing performance of the HIT (hierarchical input text) file parser - the component that parses MOOSE input files and test spec files - has been substantially improved. The parsing time now scales linearly with the input file length, where it previously had a square dependence. This was mostly noticeable in extremely long input files (e.g. files generated by scripts). As an additional feature the parser now tracks the column position of each parsed token.
The hit format
functionality was improved to better handle the formatting of long and multi line strings. Multiline string can occur in input files when data and parameter entries need to be represented in a particular way - for example, as data tables for PiecewiseLinear
functions. hit format
handled such strings poorly and disrupted careful manual formatting into columns, reducing the input file readability. To alleviate this, two major changes were made:
Single quoted strings
'...'
will stay completely untouched byhit format
. This is useful to preserve long strings, such as PETSc options in the Executioner block, which come as parameter pairs that are often manually formatted to have corresponding key value pairs aligned to the same column positions.Double quoted
"..."
strings will get formatted in the following two ways: - Single line strings get reflowed according to a set maximum line length (useful for long text in test spec requirements) - Multiline strings will only be re-indented through inserting or removing spaces on the lines following the first line, to match any changes in indentation of the first line.
These changes to hit format
are already incorporated in the Moose Language Support VSCode Extension.
Solid properties module added
The Solid Properties module was added to MOOSE, which provides various properties for different solid materials. These properties are implemented in user objects that can then be called wherever needed, such as residual objects or materials. The ThermalSolidProperties hierarchy of user objects defines density, specific heat capacity, and thermal conductivity as functions of temperature alone, and then the corresponding material ThermalSolidPropertiesMaterial provides material properties for each of these quantities.
libMesh-level Changes
2022.08.05
Update
Support reading/writing extra node integers and extra element integers in XDR and XDA files.
Support inverted 1D element orientations when reconstructing mesh neighbors.
--deny_re
command line option for unit test driver, to allow more options for running subsets of the full unit test suite.Eigen
upgrade to 3.4.0; now via a git submodule to make future upgrades easier and more efficient.More internal use of smart pointers for memory management and exception safety.
MetaPhysicL
update to 1.4.0, fixing an intermittent bug in the test suiteTIMPI
update to 1.8.5, giving better compiler error messages for certain user errors, more parallel unit testing, and warning fixes for new compilers.Additional features for
Poly2TriTriangulator
, including triangulation of id-defined subsets of outer boundaries, and verification of boundary non-intersection.New
TriangulatorInterface::Hole::contains()
APIImproved
DistributedMesh
cached object count tracking when deleting objects.BoundaryInfo::renumber_id()
, now supporting automatic handling of id-to-name maps.SIDE_HIERARCHIC
finite-element space support forTET14
geometric elements.New
MeshBase::reinit_ghosting_functors()
APIreconnect_nodes()
API typedef, to enable forward compatibility with future data structure changes.Memory leak fix in
fparser
Fixes for
Poly2TriTriangulator
use withDistributedMesh
, and for many corner casesFix
TET10
numbering withTetgenIO
2022.08.23
Update
More test coverage in examples
Comment clarifications
Build system, version control improvements
Support in
MeshTools::build_square
for quad shell elementsMinor bug fixes
Much more generic
index_range()
support