Skip to content

FOODIEFortran Object-Oriented Differential-equations Integration Environment

Write your system once as an integrand type, integrate it with 86 explicit, implicit, multistage and multistep schemes selected by name. Pure Fortran 2008, built on the Abstract Data Type pattern of Rouson.

What FOODIE solves ​

FOODIE integrates in time the initial value problem

{Ut=R(t,U)U(t0)=U0

where Ut=dUdt, U is the vector of state variables, function of the time-like independent variable t, and R is the (vectorial) residual function, possibly nonlinear in U. FOODIE is tailored to the systems arising from the semi-discretization of PDEs (the method of lines), but it is not limited to them.

A first integration ​

A concrete integrand, here the linear equation Ut=aU+b of the tests suite, is integrated by any scheme through the factory:

fortran
use foodie, only : foodie_integrator_factory, integrator_object, integrator_multistage_object
...
class(integrator_object), allocatable :: integrator

call foodie_integrator_factory(scheme='runge_kutta_ssp_stages_3_order_3', integrator=integrator, U=integrand)
select type(integrator)
class is(integrator_multistage_object)
   do step=1, 100
      call integrator%integrate(U=integrand, Dt=0.01_R_P, t=time)
      time = time + 0.01_R_P
   enddo
endselect

The quick start builds the integrand and the loop step by step; the catalogue lists every scheme with its order and its references.

Authors ​

Contributions are welcome — see the Contributing page.

Copyrights ​

This project is distributed under a multi-licensing system:

Anyone interested in using, developing, or contributing to this project is welcome — pick the license that best fits your needs.

Released under the GPL v3, BSD 2-Clause, BSD 3-Clause and MIT licenses.