MOOSE Newsletter (Febuary 2020)

MOOSE/BISON Receive "Effective" NQA-1 Rating

From Richard Martineau, Director of Nuclear Modeling and Simulation:

I am happy to share some very good news. On February 13, two highly-credentialed external software quality assessors (from ASME's NQA-1 committee) completed their assessment of MOOSE and BISON and presented an out-brief that affirms that the MOOSE and BISON teams are doing an excellent job in implementing software quality in their software development processes and practices. A final report will be available in mid-March.

I specifically invited the assessors to evaluate MOOSE and BISON against the strictest criteria to ensure that Department of Energy and ASME Nuclear Quality Assurance (NQA-1) requirements are being met, and that MOOSE and BISON can be used in safety software applications (QL-1 and QL-2), including at the ATR, which requires an NQA-1 pedigree. I am extremely proud that these teams earned a final grade of "EFFECTIVE".

Python 2 Support Removed

All MOOSE utilities written in python (e.g., peacock, run_tests, and MOOSEDocs) now require python 3.6 or greater. If you still have python 2 you can update by following the Getting Started instructions.

More Automatic Scaling Options

Residual-based scaling

Automatic scaling now supports scaling based on residuals, as well as hybrid scaling based on both preconditioner/Jacobian diagonal entries and residual entries. The blend of residual/Jacobian scaling is based on the Executioner parameter resid_vs_jac_scaling_param. resid_vs_jac_scaling_param = 0 corresponds to pure Jacobian scaling, which is the default. resid_vs_jac_scaling_param = 1 corresponds to pure residual scaling. A value of 0.5 gives a nice blend of both and is an excellent choice for multiphysics simulations where residual scales may differ dramatically between physics.

Scaling grouping

MOOSE users may now also group variables for the purpose of computing scaling factors. This is useful and recommended** when multiple variables represent the same physics as in solid mechanics or Navier-Stokes. Experimentation suggests that using different scaling factors for different displacement variables for example can actually degrade solve performance. To group variables together for scaling, the user can specify semicolon separated variable lists, e.g. Executioner/scaling_group_variables='disp_x disp_y; vel_x vel_y'.


We have added capability and improved the performance of MOOSEDocs in support of our ongoing effort to implement and document our development processes to an NQA-1 level standard. Mainly, we have added a connection from the requirements to the CIVET testing results, see Framework Requirements Traceability Matrix.

CSV Validation Tester

A new tester is now available for users doing validation work. Currently it can only test steady-state results, but transient support is planned in near future. The tester computes mean and standard deviation of the error between the measured and computed values and users can setup tolerances on both values, see more at CSVValidationTester.

Multilevel MultiApp Restart

During a Picard iteration, multilevel subApps can restart using the latest solution via the parameter keep_solution_during_restore=true as the initial guess. This can potentially accelerate a simulation.