Skip to content
Stefano Zaghi edited this page Sep 17, 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];
        • 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;
    • implicit schemes:
      • Runge-Kutta schemes;
  • 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.

Clone this wiki locally