-
Notifications
You must be signed in to change notification settings - Fork 30
Main features
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];
- low-storage schemes, see [1, 2, 3]:
- Adams-Bashforth schemes see [7]:
- 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;
- Adams-Bashforth-Moulton schemes:
- explicit 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;
- high scalability on parallel architectures:
- Tests-Driven Developed (TDD):
- well documented:
- clear documentation of schemes implementations, e.g. see Adams-Bashforth API documentation;
- complete API reference;
- comprehensive wiki:
- collaborative developed on GitHub;
- FOSS licensed;
Any feature request is welcome.
[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.