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_recommand line option for unit test driver, to allow more options for running subsets of the full unit test suite.Eigenupgrade 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.
MetaPhysicLupdate to 1.4.0, fixing an intermittent bug in the test suiteTIMPIupdate 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
DistributedMeshcached object count tracking when deleting objects.BoundaryInfo::renumber_id(), now supporting automatic handling of id-to-name maps.SIDE_HIERARCHICfinite-element space support forTET14geometric elements.New
MeshBase::reinit_ghosting_functors()APIreconnect_nodes()API typedef, to enable forward compatibility with future data structure changes.Memory leak fix in
fparserFixes for
Poly2TriTriangulatoruse withDistributedMesh, and for many corner casesFix
TET10numbering withTetgenIO
2022.08.23 Update
More test coverage in examples
Comment clarifications
Build system, version control improvements
Support in
MeshTools::build_squarefor quad shell elementsMinor bug fixes
Much more generic
index_range()support