MOOSE Newsletter (July 2023)

MOOSE Improvements

Support for p-refinement

MOOSE now supports p-refinement, e.g. refining or coarsening the order of the finite element basis functions. In order to use p-refinement, you can simply set switch_h_to_p_refinement=true in the Adaptivity block. As suggested by the parameter name, only one of h- or p-refinement may be used in a single simulation.

Console time formatting

MOOSE now has a parameter for Console outputs, "time_format", to control how times are printed during transient simulations. Internally, MOOSE has no default unit for time, but, with this change, MOOSE can now print different units to the console output for convenience. The new parameter can accept one of the six options: plain, second, minute, hour, day and dtime, and it can be used with the following input syntax:


[Outputs]
  [console]
    type = Console
    time_format = plain
  []
[]

A few other details to note on this new formatting feature include:

  • plain is the default option, with which MOOSE will simply print the time without any unit.

  • MOOSE will append "s" for the time if second is used.

  • MOOSE will apply the proper factors for minute, hour and day options along with the unit.

  • Using the dtime option, MOOSE will print the time in DTIME format, similar to:

    
    Time Step 59, time = 1d 03:46:40.0000, dt = 02:17:39.8000
    

This capability can make the console output more intuitive when the simulation times are large.

Parallel Bayesian uncertainty quantification (UQ) capabilities

Predictive models need to be validated with experimental data. In the validation process, three sources of uncertainties are encountered: (1) model parameters that are not known precisely; (2) model inadequacy due to missing physics compared to the experiments; and (3) noise in the observed experimental data itself. To quantify these sources of uncertainties, Bayesian UQ capabilities have been implemented in the MOOSE Stochastic Tools Module (STM). When dealing with computationally expensive finite element models, it is known that Bayesian UQ can become expensive. To this end, the Bayesian UQ capabilities in the STM are massively parallelizable, reducing the overall elapsed time for the UQ with the aid of parallel computing. Some salient features of these new UQ implementation include:

  • Parallel Markov chain Monte Carlo (MCMC) methods under the parallel Metropolis-Hastings and Ensemble class of samplers.

  • Parallel scalability tested up to 50 parallel proposals.

  • UQ quality scales linearly with the parallel proposals.

  • For the same UQ quality, number of serial model evaluations decreases as 1/P (P is the parallel proposals)

  • Nuclear applications include TRISO fuel silver release and MATPRO creep rate prediction

More details can be found in this NEAMS report.

libMesh-level Changes

2023.07.26 Update

  • HIERARCHIC and L2_HIERARCHIC Finite Element families now support prism elements

  • Added NumericVector::l2_norm_diff(), to enable calculation of vector differences without creating a temporary vector.

  • Fixes for MeshedHole (and thereby XYDelaunayGenerator calculations and error reporting when an input mesh contains both 2D and 1D elements.

  • Metis and Parmetis are now IsoGeometric-Analysis-aware, and produce much better-scaling partitionings of IGA meshes.

  • More understandable error reporting if a user's environment mixes DEBUG and NDEBUG flags into the same build.

Bug Fixes and Minor Enhancements

New option for time-stepping past the last time in time sequence steppers

The various time sequence steppers (TimeSequenceStepper, CSVTimeSequenceStepper, and ExodusTimeSequenceStepper) compute time step size from a sequence of time values. Past the final time value, they previously could only make a single time step directly to the simulation end time. Now an option use_last_dt_after_last_t has been added, which when true, will instead use the final time step size in the provided sequence past the last time in the sequence.