MOOSE Newsletter (November 2019)

Mesh MetaData Store

MOOSE has gained a new feature that makes it easier to manage mesh related attributes during simulation setup, namely the mesh "MetaData" Store. The purpose of this object is to hold any kind of attribute or property that a developer may wish to publish about the mesh for use in other objects.

There are a few reasons why you may want to use the MetaData store:

- No need to dynamic cast the underlying mesh object to gain access to methods or attributes. - Solves the problem of not having access to MeshGenerator during recover. - No need to handle getting parameters from the mesh differently for normal startup vs recover runs.

Storing properties in the store means that you won't have to dynamic cast the underlying mesh object to get access to specific APIs or properties on your mesh. Another benefit of using the store is that you don't have to treat your normal simulation and recover simulations any differently from one and other. You'll be able to retrieve properties the same way in either case simplifying your startup code. This makes a lot of difference if you are using the MeshGeneration system to build your mesh programatically. The MetaData store is populated very early on recover runs so the data is available during the execution of any custom Actions that you might create.

Interface Material

MOOSE now has the ability to create IntefaceMaterial objects. InterfaceMaterials are capable of grabbing element face and neighbor face variable values as well as element face and neighbor face material properties, allowing for creation of truly interfacial properties that are a blend of the quantities on the connected subdomains. An example application of InterfaceMaterials is for cohesive zone modelling. Example input files include interface_value_material.i, interface_value_material_split_mesh.i, and interface_value_material_split_mesh_stateful.i. Source examples of InterfaceMaterial derived objects are InterfaceValueMaterial.C and JumpInterfaceMaterial.C. Header examples can be found at InterfaceValueMaterial.h and JumpInterfaceMaterial.h.

libpng detection test has moved to MOOSE's configure

Does anyone remember when MOOSE got a proper configure system? No? Good, then that means we did our job correctly. The test for the existence of libpng, which was hacked into one of the MOOSE Makefiles was moved to MOOSE's configure system for better reliability. It turns out that the detection failed in rare cases but it was annoying to deal with on systems where it did. Now, we run this test during configure so that we can reliably work with or without it based on the configure result.

MOOSE's configure system

We managed to make it 10 years without a configure script. We did this because we wanted to keep the build process simple for our developers and we were able to delegate all of our configure needs to libMesh's configure system. Well we finally caved and added a full-blown configure system to MOOSE. We are using the GNU Autotools for now, but the most important part is that nobody needs to change their work flow to accommodate the new configure script. It is completely optional at this point and we hope to keep it that way indefinitely.

There are a few optional library configurations that you may choose to activate by running the script yourself. You can always check out what options are available by going to the framework directory and running ./configure --help.

Miscellaneous enhancements and bug fixes

  • The TestHarness properly skips tests that require the presence of libpng.

Kernels for eigenvalue system

We made all kernels in the eigenvalue system consistent with those used in the nonlinear system. That being said, any existing kernels for regular nonlinear calculations can be used in the eigenvalue system without any changes.

Conservative transfer with L2 Lagrange

Conservative transfer supports L2 Lagrange nonlinear variable now.

IntegralBC support in eigenvalue system

We enhanced the eigenvalue system to support the IntegralBC. This help neutron transport calculations where the IntegralBC boundary conditions are often used in eigenvalue calculations.