Skip to content
Snippets Groups Projects
user avatar
Kaushik Kulkarni authored
e96e98b4
History
Name Last commit Last update
.gitignore
README.md
WENO.F90
setup.cfg
test.py

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.