Skip to content
Snippets Groups Projects

PSAAP3 WENO

Standalone Fortran WENO code with Loopy transformations.

Notes

  • The WENO scheme is taken from [1]
  • The Roe matrix implementation follows the internal PlasCom2 documentation
  • Boundary conditions are not really handled correctly at all
  • A declaration of "real" is not intended to suggest single precision
  • This implementation does not include the severe shock correction proposed by [1]
  • Current assumption for metrics is that metrics(i,j) = (\xi_i)_(x_j)
  • It's not immediately obvious, but there might be some wasted work in the frozen generalized flux computation
  • Right now the specific gas constant gamma is implemented as a magic number (1.4) -- this should be generalized

Fortran dialect wishlist

  • Automatic line continuation in parentheses
  • Array-valued expressions
  • In-place operators
  • Slicing that automatically picks an increment of -1 when appropriate
    • (e.g. 2:0 instead of 2:0:-1)
  • Scalars with intent(out)

Note: Tag 'nice' references the code at a point where several of these items are used

Testing plan

Plan to test the following routines directly:

  • compute_flux_derivatives
  • convert_to_generalized
  • convert_to_generalized_frozen
  • convert_from_generalized
  • roe_eigensystem
  • pointwise_eigenvalues
  • lax_wavespeeds
  • split_characteristic_fluxes
  • weno_flux
  • consistent_part
  • dissipation_part_pos
  • dissipation_part_neg

References

[1] Nonomura, T., Terakado, D., Abe, Y., & Fujii, K. (2015). A new technique for freestream preservation of finite-difference WENO on curvilinear grid. Computers and Fluids, 107, 242–255.