Skip to content

WENO Version 3.1

Compare
Choose a tag to compare
@JanGaertner JanGaertner released this 20 Apr 10:44
· 83 commits to master since this release

WENO Version 3.1

In version 3.1 compilation, testing and scalar transport are improved. Compilation of the library is now handled with CMake instead OpenFOAM wmake to simplify the extension to other third party libraries and the usage of third party code.
A major change has been applied to the stencil collection algorithm which now uses a stencil based compact sorting instead of the previous naive cell based approach.

Stencil Collection Algorithm

The stencil collection has been rewritten to use a stencil based compact approach instead of a naive cell based version [1]. The stencil based compact approach delivers more compact stencils and improved matrix conditions.
Additionally, the stencils are sorted consistently for different cells with the same shape. This means that the order of cells in a stencil do no longer depend on the randomly chosen base point but are consistently sorted, also for cells with the same distance. Before, the order of cells with the same distance to the base point have been random, now it is deterministic. This allows the matrix data bank system to recognize that cells with equal stencils have the same matrix leading to an improved memory reduction.

Specialized Scalar Transport Scheme

To transport a scalar between 0 and 1 a specialized version is implemented called WENOUpwindFit01, following the naming convention of OpenFOAM. This scheme uses the proposed limiter of Zhang and Shu [2].

The general WENO scheme uses a cell limited approach if the limiter option is enabled with WENOUpwindFit 3 1.

Compilation with CMake

The library is now compiled with CMake giving more flexibility than the OpenFOAM wmake version. Further, it simplifies the usage of the library in other CMake projects and to include additional third party code into the library.

Testing and Continuous Integration

More test cases have been added and the test program has been generalized to work for the different test cases. In addition, the test cases are executed by GitHub Actions for the OpenFOAM versions 5.x, 7, 8 and OpenFOAM v1912. The passing of the tests is displayed at the top of the README file.

The test cases can be executed locally using the provided Makefile and targets, for further details see the README.

Open Issues

  • Accuracy at fixed value boundary conditions is significantly lower than in other regions of the mesh. Possibly due to the central stencil being not symmetric and only covering a section.
  • Stencil collection for cyclic boundaries is still the same as it would be a normal patch.
  • Treatment of AMI boundary conditions, e.g. cyclicAMI patches.

Other minor fixes

  • Treatment of cyclic patches is now improved by treating it similar to a processor boundary. [f07bc57]
  • Checking of LS matrices can be deactivated. This is useful for some meshes that would otherwise generate a large number of badly conditioned matrices, e.g. structured wedge meshes [521a310]

References

[1] Tsoutsanis, P. (2019). Stencil selection algorithms for WENO schemes on unstructured meshes. Journal of Computational Physics: X, 4, 100037. https://doi.org/10.1016/j.jcpx.2019.100037
[2] Zhang, X., & Shu, C.-W. (2010). On maximum-principle-satisfying high order schemes for scalar conservation laws q. https://doi.org/10.1016/j.jcp.2009.12.030