Skip to content

Commit

Permalink
Merge pull request idaholab#29154 from cticenhour/nov-news-11447
Browse files Browse the repository at this point in the history
Make November 2024 news public, add December template
  • Loading branch information
cticenhour authored Dec 5, 2024
2 parents f7c1bc7 + 8856c70 commit 42cb95a
Show file tree
Hide file tree
Showing 3 changed files with 120 additions and 7 deletions.
110 changes: 103 additions & 7 deletions modules/doc/content/newsletter/2024/2024_11.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,54 @@
# MOOSE Newsletter (November 2024)

!alert! construction title=In Progress
This MOOSE Newsletter edition is in progress. Please check back in December 2024
for a complete description of all MOOSE changes.
!alert-end!

## MOOSE Improvements

## libMesh-level Changes
### Default support for multiple solver systems in the Steady and Transient executioners

The [Steady.md] and [Transient.md] executioner, as well as any `Executioner` relying on a [FEProblemSolve.md] solve object
can now solve multiple solver systems, e.g. nonlinear or linear systems. A variable can be placed in a solver system
using the `solver_sys` parameter of the `Variable`.

The solve of multiple systems can be iterated using the [!param](/Executioner/Transient/multi_system_fixed_point) parameter.
A [Convergence object](syntax/Convergence/index.md) must then be specified to the `Executioner` to assess the convergence
of the multi-system fixed point iteration.

This support was also extended to the [Physics system](syntax/Physics/index.md), in which the `Physics` equations can be
set to be solved in their own solver system

### Interface for finding data files

Parameters with the string-derived type `DataFileName` will now search the application's data folder, as well as the
local simulation folder, for the files mentioned in the parameter. They will then return the absolute path to those files.
This is intended to simplify the inclusion of data in an application, data which can be referred to in the input files.

### New ChainControl system for handling complex/chained Control logic

The new [ChainControl system](syntax/ChainControls/index.md) was added to MOOSE. It uses `ChainControlData` which can be of arbitrary
types, and which can be operated on by each `ChainControl` object. This enables creating limiters, PID controllers, etc.,
and chaining these operations to control parameters in the input file.
This will replace the `ControlLogic` system in the thermal-hydraulics module after a transition period.

## MOOSE Modules Changes

### Execution of MultiApps within the SIMPLE algorithm for solving the Navier Stokes equation

The [SIMPLE.md] executioner was reworked to use a `SolveObject`, `SIMPLESolve`, to perform the execution.
This allowed nesting the solution algorithm inside the fixed-point iteration loop with [MultiApps](syntax/MultiApps/index.md).
This enables converging multi-physics problems. The `SIMPLE` executioner is currently limited to
steady state simulations.

### Re-implementation of the finite volume face flux limiters

A new implementation of the finite volume face flux limiters was performed. This new implementation presents the
expected second order convergence across additional limiters, and adds the `Venkatakrishnan` limiter.
It was demonstrated on the classical scalar-advection dispersion case and showed reduced numerical dispersion.

### Implementation of the Navier Stokes energy conservation equation using the linear finite volume discretization

Kernels and boundary conditions were added to the Navier Stokes module to discretize the energy conservation
equation using the linear finite volume discretization. The [SIMPLE.md] executioner, now relying on the `SIMPLESolve` class,
can then solve the energy conservation equation after each pressure-velocity coupling iteration.
Only steady state simulations are currently supported.

### `2024.11.20` Update

Expand Down Expand Up @@ -62,6 +103,61 @@ for a complete description of all MOOSE changes.

## PETSc-level Changes

PETSc has been updated to 3.22.1. Changes in this release include:

- Add `MatCopyHashToXAIJ()` which allows assembling an XAIJ matrix in hash table
form into another XAIJ matrix. Additionally added `MatResetHash()` which
allows resetting an XAIJ matrix to use a hash table. Both of these
developments will be leveraged in libMesh and MOOSE for simulations in which
the sparsity pattern changes dynamically, rendering an initial preallocation
invalid. By using a hash table in these cases as opposed to a preallocation,
we can avoid new nonzero allocations which can sometimes slow simulations down by orders
of magnitude
- Add `PetscCtxDestroyFn` as the prototype for all context destroy functions. It is `PetscErrorCode
()(void **)`. Previously some context destructor setters took `PetscErrorCode ()(void *)`. But
these would not work directly with PETSc objects as contexts and having two different context
destructor models added unneeded complexity to the library. This change is not backward compatible
- Deprecate `PetscContainerSetUserDestroy()` with `PetscContainerSetCtxDestroy()`, updating will
require a small change in calling code
- Deprecate `PetscContainerCtxDestroyDefault` with `PetscCtxDestroyDefault()`
- Add `PetscIntViewNumColumns()`, `PetscScalarViewNumColumns()`, and `PetscRealViewNumColumns()`
- Update `--download-pastix` to use CMake build, with additional dependency on LAPACKE and CBLAS,
can use for ex. MKL with `--with-blaslapack-dir=${MKLROOT}`, or Netlib LAPACK with
`--download-netlib-lapack --with-netlib-lapack-c-bindings`
- Add option `--with-library-name-suffix=<suffix>`
- Add `PetscCIntCast()`
- Add `PetscObjectHasFunction()` to query for the presence of a composed method
- Add `ISGetCompressOutput()` and `ISSetCompressOutput()`
- Deprecate `DMGetSection()` and `DMSetSection()` for existing `DMGetLocalSection()` and
`DMSetLocalSection()`
- Add `DMSwarmSortRestorePointsPerCell()`
- Change `DMSwarmVectorGetField()` and add `DMSwarmVectorDefineFields()` to handle multiple fields
- Add `DMSwarmGetCoordinateField()` and `DMSwarmSetCoordinateField()`
- Add `DMSwarmComputeMoments()`
- Add `DMSwarmPushCellDM()` and `DMSwarmPopCellDM()`
- Add `DMPlexTransformGetMatchStrata()` and `DMPlexTransformSetMatchStrata()`
- Deprecate `DMPlexSetGlobalToNaturalSF()` and `DMPlexGetGlobalToNaturalSF()` for existing
`DMSetNaturalSF()` and `DMGetNaturalSF()`
- Add `-dm_plex_box_label_bd` to setup isoperiodicity when using `-dm_plex_box_label_bd`


## Bug Fixes and Minor Enhancements

## Conda Package Changes
- [Periodic boundary conditions](syntax/BCs/Periodic/index.md) are now more
verbose. They will now output intermediate setup data in their [!param](/BCs/Periodic/AddPeriodicBCAction/auto_direction)
mode, and will error with a helpful error message if used using conflicting parameters, or with a
non-existing primary or secondary boundary.
- All `Sampler` vectorpostprocessors (VPPs) will now correctly detect and throw an error when used with
vector and array variables, which they currently do not support. New `Sampler` VPPs could be created
to support them.
- [ProjectionAux.md] can now handle 1D elements in a multi-dimensional mesh - for example, when
using 1D thermal hydraulic channels in a multi-dimensional loop.
- A [NumTimeSteps.md] postprocessor was added to count the number of time steps elapsed in a simulation.
- Lower-D elements created using the [!param](/Mesh/FileMesh/build_all_side_lowerd_mesh) parameter are now
separated in multiple blocks depending on the full-dimensional block they are located next to. However,
block-restriction of certain kernels to only part of the lower-D blocks is not supported.
- Several mesh diagnostics were added to detect whether a mesh is fully englobed by sidesets, by which
we mean that all external sides are part of a sideset, whether a mesh is fully englobed by nodesets,
and whether there are any overlapping element edges in a mesh.
- The dynamic pressure can now be used in lieu of the total pressure in the nonlinear finite volume
discretization of the Navier Stokes equations for weakly compressible flow.
16 changes: 16 additions & 0 deletions modules/doc/content/newsletter/2024/2024_12.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# MOOSE Newsletter (December 2024)

!alert! construction title=In Progress
This MOOSE Newsletter edition is in progress. Please check back in January 2025
for a complete description of all MOOSE changes.
!alert-end!

## MOOSE Improvements

## libMesh-level Changes

## PETSc-level Changes

## Bug Fixes and Minor Enhancements

## Conda Package Changes
1 change: 1 addition & 0 deletions modules/doc/content/newsletter/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ monthly to the [MOOSE discussion forum](contact_us.md) as well as provided below

## 2024

- [November, 2024](2024_11.md)
- [October, 2024](2024_10.md)
- [September, 2024](2024_09.md)
- [August, 2024](2024_08.md)
Expand Down

0 comments on commit 42cb95a

Please sign in to comment.