MOOSE Newsletter (August 2023)

MOOSE Improvements

Fin heat transfer enhancement functor materials added

FinEnhancementFactorFunctorMaterial and FinEfficiencyFunctorMaterial were added, which are functor materials that are used to compute the enhancement in convective heat transfer due to the presence of fins or other extended surfaces on a surface. The former computes the factor by which the bare-surface boundary condition should be multiplied to account for the fins, and the latter provides a definition of the fin efficiency, which is an input to the former.

Generating images on-the-fly in MooseDocs

The media extension now supports generating an image on-the-fly with a python plot script. This is useful for frequently-regenerated plots such as assessment results, which is undesirable to repeatedly modify in a git repository. See Images Generated On-the-fly with Plot Scripts for details and an example.

Functor Neumann boundary condition

FunctorNeumannBC was added, which implements a Neumann boundary condition with an imposed functor and optional functor coefficient.

Cylindrical gap heat flux functor material

CylindricalGapHeatFluxFunctorMaterial was added to compute the heat flux across a cylindrical gap, based on the surface radii, temperatures, and emissivities, as well as the gap thermal conductivity, all provided via functors. Note that this approach differs from existing approaches in the heat transfer module due to having the gap distance be based on user input rather than mesh information. This makes it ideal for situations in which one of the surfaces is 2D, or if thermal expansion is provided as a direct user model instead of having the mesh be deformable. Additionally, the use of functors makes this model very flexible.

Nearest-point layered side averages for functors

LayeredSideIntegralFunctor, LayeredSideAverageFunctor, and NearestPointLayeredSideAverageFunctor have been added, which extend LayeredSideIntegral, LayeredSideAverage, and NearestPointLayeredSideAverage to accept any functor, not just variables.

Post-processors can now be used in functor parameters

Post-processors can now be used in functor parameters, so functor parameters now support the following inputs, allowing for great flexibility:

Component to apply heat flux from an external application

The component HSBoundaryExternalAppHeatFlux was created in the thermal hydraulics module for applying a heat flux to a heat structure boundary from a variable transferred from another application.

Parsed functor material

ParsedFunctorMaterial was added, which creates a functor material property with a user-defined mathematical expression of functors, the spatial point, and the time.

Time interval times

The Times object TimeIntervalTimes was added, which allows the user to specify times between a start time and end time using a time interval. This is useful for specifying an output interval via "sync_times_object" to avoid having to manually list out all times in "sync_times".

Mesh repairs during the mesh generation / loading phase

The MeshRepairGenerator was created to perform simple fixes on the mesh, such as stitching overlapping nodes, flipping negative volume elements, separating elements of a different type in distinct subdomains. Additional operations will be implemented in this object and activated with their respective parameter.

Bug Fixes and Minor Enhancements

  • The ParsedGenerateSideset is now capable of selecting only external sides when creating new sidesets, in addition to being able to look at element & neighbor subdomains and evaluating complex parsed expressions.

  • The SolutionUserObject error messages and parameter documentation were improved to guide the user when using checkpoint files to store the solution.

  • Disclaimers were added to the SideDiffusiveFluxAverage and DiffusionFluxAux documentation to warn the user that the diffusive flux calculated by these postprocessing tools are only exact if the diffusive flux discretization is the same between the user's kernels and these tools.

  • The parameter "sync_times_object" in outputs was not forcing solution to occur at these times, which has been fixed.