Skip to content
Stefano Zaghi edited this page Oct 21, 2015 · 4 revisions

FOODIE has many features, here the main ones are listed.

  • Pure Fortran implementation;
  • KISS and user-friendly:
    • simple API, presently based on the Rouson's Abstract Data Type Pattern [8];
    • easy building and porting on heterogeneous architectures;
  • comprehensive solvers set out-of-the-box:
    • explicit schemes:
      • Adams-Bashforth schemes see [7]:
        • 1 step, namely the forward explicit Euler scheme, 1st order accurate;
        • 2 steps, 2nd accurate;
        • 3 steps, 3rd accurate;
      • Euler scheme, 1st order accurate;
      • Leapfrog, 2nd order accurate:
        • unfiltered leapfrog, 2nd order accurate, mostly unstable, see [4];
        • Robert-Asselin filtered leapfrog, 1st order accurate, see [4, 5, 6];
        • Robert-Asselin-Williams filtered leapfrog, 3rd order accurate, see [5, 6];
      • Runge-Kutta schemes:
        • low-storage schemes, see [1, 2, 3]:
          • 1 stage, namely the forward explicit Euler scheme, 1st order accurate;
          • 2 stages;
          • 3 stages;
          • 4 stages;
          • 5 stages, 4th order accurate, 2N registers, see [3];
          • 6 stages, 4th order accurate, 2N registers, see [9];
          • 7 stages, 4th order accurate, 2N registers, see [9];
          • 12 stages, 4th order accurate, 2N registers, see [10];
          • 13 stages, 4th order accurate, 2N registers, see [10];
          • 14 stages, 4th order accurate, 2N registers, see [10];
        • TVD/SSP schemes, see [1]:
        • TVD/SSP schemes, see [1]:
          • 1 stage, namely the forward explicit Euler scheme, 1st order accurate;
          • 2 stages, 2nd order accurate;
          • 3 stages, 3rd order accurate;
          • 4 stages;
          • 5 stages, 4th order accurate;
        • embedded (adaptive) schemes:
          • Runge-Kutta-Fehlberg, 5 stages, 4th order accurate;
          • Runge-Kutta-Cash-Karp, 5 stages, 4th order accurate;
          • Prince-Dormand, 7 stages, 4th order accurate, see [11];
    • implicit schemes:
      • Runge-Kutta schemes;
    • predictor-corrector schemes:
      • Adams-Bashforth-Moulton schemes:
        • 1 step, AB(1)-AM(0), 1st order accurate;
        • 2 steps, AB(2)-AM(1), 2nd accurate;
        • 3 steps, AB(3)-AM(2), 3rd accurate;
        • 4 steps, AB(4)-AM(3), 4th accurate;
  • efficient:
    • high scalability on parallel architectures:
      • support for shared memory multi/many cores architecture;
      • support for distributed memory cluster;
      • support for GPGPU/accelerators device;
  • Tests-Driven Developed (TDD):
  • well documented:
  • collaborative developed on GitHub;
  • FOSS licensed;

Any feature request is welcome.

Bibliography

[1] High Order Strong Stability Preserving Time Discretizations, Gottlieb, S., Ketcheson, D. I., Shu, C.W., Journal of Scientific Computing, vol. 38, N. 3, 2009, pp. 251--289.

[2] Low-Storage Runge-Kutta Schemes, J. H. Williamson, Journal of Computational Physics, vol. 35, 1980, pp. 48--56.

[3] Fourth-Order 2N-Storage Runge-Kutta Schemes, Mark H. Carpenter, Christopher A. Kennedy, NASA Technical Memorandum 109112, June 1994.

[4] Numerical methods used in atmospheric models, Mesinger F. and A. Arakawa, Global Atmospheric Research Programme (GARP), Technical Report, 1976.

[5] A Proposed Modification to the Robert-Asselin Time Filter, Williams, P. D., Mon. Wea. Rev., vol. 137, pp. 2538--2546, 2009, doi: http://dx.doi.org/10.1175/2009MWR2724.1.

[6] The RAW filter: An improvement to the Robert-Asselin filter in semi-implicit integrations, Williams, P.D., Monthly Weather Review, vol. 139(6), pages 1996--2007, June 2011.

[7] Linear multistep method, wikipedia article.

[8] Scientific Software Design: The Object-Oriented Way, Rouson, Damian and Xia, Jim and Xu, Xiaofeng, 2011, ISBN 9780521888134, Cambridge University Press, New York, NY, USA.

[9] High-accuracy large-step explicit Runge–Kutta (HALE-RK) schemes for computational aeroacoustics, Vasanth Allampalli and Ray Hixon and M. Nallasamy and Scott D. Sawyer, Journal of Computational Physics, vol. 228, 2009, pp. 3837--3850.

[10] Efficient low-storage Runge–Kutta schemes with optimized stability regions, Jens Niegemann and Richard Diehl and Kurt Busch, Journal of Computational Physics, vol. 231, 2012, pp. 364--372.

[11] A family of embedded Runge-Kutta formulae, Dormand, J. R.; Prince, P. J. (1980), , Journal of Computational and Applied Mathematics 6 (1): 19--26, doi:10.1016/0771-050X(80)90013-3.

Clone this wiki locally