module~~foodie~~UsesGraph
module~foodie
foodie
module~foodie_integrator_adams_bashforth
foodie_integrator_adams_bashforth
module~foodie_integrator_adams_bashforth->module~foodie
module~foodie_integrator_adams_bashforth_moulton
foodie_integrator_adams_bashforth_moulton
module~foodie_integrator_adams_bashforth->module~foodie_integrator_adams_bashforth_moulton
module~foodie_integrator_ms_runge_kutta_ssp
foodie_integrator_ms_runge_kutta_ssp
module~foodie_integrator_ms_runge_kutta_ssp->module~foodie
module~foodie_error_codes
foodie_error_codes
module~foodie_error_codes->module~foodie
module~foodie_error_codes->module~foodie_integrator_adams_bashforth
module~foodie_error_codes->module~foodie_integrator_ms_runge_kutta_ssp
module~foodie_integrator_lmm_ssp
foodie_integrator_lmm_ssp
module~foodie_error_codes->module~foodie_integrator_lmm_ssp
module~foodie_integrator_euler_explicit
foodie_integrator_euler_explicit
module~foodie_error_codes->module~foodie_integrator_euler_explicit
module~foodie_integrator_runge_kutta_emd
foodie_integrator_runge_kutta_emd
module~foodie_error_codes->module~foodie_integrator_runge_kutta_emd
module~foodie_error_codes->module~foodie_integrator_adams_bashforth_moulton
module~foodie_integrator_adams_moulton
foodie_integrator_adams_moulton
module~foodie_error_codes->module~foodie_integrator_adams_moulton
module~foodie_integrator_runge_kutta_lssp
foodie_integrator_runge_kutta_lssp
module~foodie_error_codes->module~foodie_integrator_runge_kutta_lssp
module~foodie_integrator_lmm_ssp_vss
foodie_integrator_lmm_ssp_vss
module~foodie_error_codes->module~foodie_integrator_lmm_ssp_vss
module~foodie_integrator_runge_kutta_ssp
foodie_integrator_runge_kutta_ssp
module~foodie_error_codes->module~foodie_integrator_runge_kutta_ssp
module~foodie_integrator_runge_kutta_low_storage
foodie_integrator_runge_kutta_low_storage
module~foodie_error_codes->module~foodie_integrator_runge_kutta_low_storage
module~foodie_integrator_leapfrog
foodie_integrator_leapfrog
module~foodie_error_codes->module~foodie_integrator_leapfrog
module~foodie_integrator_backward_differentiation_formula
foodie_integrator_backward_differentiation_formula
module~foodie_error_codes->module~foodie_integrator_backward_differentiation_formula
module~foodie_integrator_lmm_ssp->module~foodie
module~foodie_integrator_euler_explicit->module~foodie
module~foodie_integrator_multistep_object
foodie_integrator_multistep_object
module~foodie_integrator_multistep_object->module~foodie
module~foodie_integrator_multistep_object->module~foodie_integrator_adams_bashforth
module~foodie_integrator_multistep_object->module~foodie_integrator_lmm_ssp
module~foodie_integrator_multistep_object->module~foodie_integrator_adams_bashforth_moulton
module~foodie_integrator_multistep_object->module~foodie_integrator_adams_moulton
module~foodie_integrator_multistep_object->module~foodie_integrator_lmm_ssp_vss
module~foodie_integrator_multistep_object->module~foodie_integrator_leapfrog
module~foodie_integrator_multistep_object->module~foodie_integrator_backward_differentiation_formula
module~foodie_integrator_runge_kutta_emd->module~foodie
module~foodie_integrator_adams_bashforth_moulton->module~foodie
iso_fortran_env
iso_fortran_env
iso_fortran_env->module~foodie
iso_fortran_env->module~foodie_integrator_multistep_object
module~foodie_integrator_multistage_object
foodie_integrator_multistage_object
iso_fortran_env->module~foodie_integrator_multistage_object
module~foodie_integrator_multistage_multistep_object
foodie_integrator_multistage_multistep_object
iso_fortran_env->module~foodie_integrator_multistage_multistep_object
module~foodie_integrator_object
foodie_integrator_object
iso_fortran_env->module~foodie_integrator_object
penf
penf
penf->module~foodie
penf->module~foodie_integrator_adams_bashforth
penf->module~foodie_integrator_ms_runge_kutta_ssp
penf->module~foodie_error_codes
penf->module~foodie_integrator_lmm_ssp
penf->module~foodie_integrator_euler_explicit
penf->module~foodie_integrator_multistep_object
penf->module~foodie_integrator_runge_kutta_emd
penf->module~foodie_integrator_adams_bashforth_moulton
penf->module~foodie_integrator_adams_moulton
penf->module~foodie_integrator_runge_kutta_lssp
penf->module~foodie_integrator_lmm_ssp_vss
penf->module~foodie_integrator_runge_kutta_ssp
module~foodie_integrand_object
foodie_integrand_object
penf->module~foodie_integrand_object
penf->module~foodie_integrator_runge_kutta_low_storage
penf->module~foodie_integrator_multistage_object
penf->module~foodie_integrator_leapfrog
penf->module~foodie_integrator_multistage_multistep_object
penf->module~foodie_integrator_object
penf->module~foodie_integrator_backward_differentiation_formula
module~foodie_integrator_adams_moulton->module~foodie
module~foodie_integrator_adams_moulton->module~foodie_integrator_adams_bashforth_moulton
module~foodie_integrator_runge_kutta_lssp->module~foodie
module~foodie_integrator_lmm_ssp_vss->module~foodie
module~foodie_integrator_runge_kutta_ssp->module~foodie
module~foodie_integrand_object->module~foodie
module~foodie_integrand_object->module~foodie_integrator_adams_bashforth
module~foodie_integrand_object->module~foodie_integrator_ms_runge_kutta_ssp
module~foodie_integrand_object->module~foodie_integrator_lmm_ssp
module~foodie_integrand_object->module~foodie_integrator_euler_explicit
module~foodie_integrand_object->module~foodie_integrator_multistep_object
module~foodie_integrand_object->module~foodie_integrator_runge_kutta_emd
module~foodie_integrand_object->module~foodie_integrator_adams_bashforth_moulton
module~foodie_integrand_object->module~foodie_integrator_adams_moulton
module~foodie_integrand_object->module~foodie_integrator_runge_kutta_lssp
module~foodie_integrand_object->module~foodie_integrator_lmm_ssp_vss
module~foodie_integrand_object->module~foodie_integrator_runge_kutta_ssp
module~foodie_integrand_object->module~foodie_integrator_runge_kutta_low_storage
module~foodie_integrand_object->module~foodie_integrator_multistage_object
module~foodie_integrand_object->module~foodie_integrator_leapfrog
module~foodie_integrand_object->module~foodie_integrator_multistage_multistep_object
module~foodie_integrand_object->module~foodie_integrator_backward_differentiation_formula
module~foodie_integrator_runge_kutta_low_storage->module~foodie
module~foodie_integrator_multistage_object->module~foodie
module~foodie_integrator_multistage_object->module~foodie_integrator_euler_explicit
module~foodie_integrator_multistage_object->module~foodie_integrator_runge_kutta_emd
module~foodie_integrator_multistage_object->module~foodie_integrator_runge_kutta_lssp
module~foodie_integrator_multistage_object->module~foodie_integrator_runge_kutta_ssp
module~foodie_integrator_multistage_object->module~foodie_integrator_runge_kutta_low_storage
module~foodie_integrator_leapfrog->module~foodie
module~foodie_integrator_multistage_multistep_object->module~foodie
module~foodie_integrator_multistage_multistep_object->module~foodie_integrator_ms_runge_kutta_ssp
module~foodie_integrator_object->module~foodie
module~foodie_integrator_object->module~foodie_integrator_adams_bashforth
module~foodie_integrator_object->module~foodie_integrator_ms_runge_kutta_ssp
module~foodie_integrator_object->module~foodie_integrator_lmm_ssp
module~foodie_integrator_object->module~foodie_integrator_euler_explicit
module~foodie_integrator_object->module~foodie_integrator_multistep_object
module~foodie_integrator_object->module~foodie_integrator_runge_kutta_emd
module~foodie_integrator_object->module~foodie_integrator_adams_bashforth_moulton
module~foodie_integrator_object->module~foodie_integrator_adams_moulton
module~foodie_integrator_object->module~foodie_integrator_runge_kutta_lssp
module~foodie_integrator_object->module~foodie_integrator_lmm_ssp_vss
module~foodie_integrator_object->module~foodie_integrator_runge_kutta_ssp
module~foodie_integrator_object->module~foodie_integrator_runge_kutta_low_storage
module~foodie_integrator_object->module~foodie_integrator_multistage_object
module~foodie_integrator_object->module~foodie_integrator_leapfrog
module~foodie_integrator_object->module~foodie_integrator_multistage_multistep_object
module~foodie_integrator_object->module~foodie_integrator_backward_differentiation_formula
module~foodie_integrator_backward_differentiation_formula->module~foodie
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a parent (sub)module to the submodule which is
descended from it. Dashed arrows point from a module being used to the
module or program unit using it.
FOODIE, Fortran Object oriented Ordinary Differential Equations integration library.
FOODIE is a KISS library for solving systems of Ordinary Differential Equation (ODE) into the Initial Values Problems (IVP)
contest. The mathematical formulation of the problem is:
$$U_t = R(t,U)$$
$$U_0 = F(0)$$
where \(U_t = \frac{dU}{dt}\), U is the vector of state variables being a function of the time-like independent variable
t , R is the (vectorial) residual function and F is the (vectorial) initial conditions function.
FOODIE is aimed to the time-like integration of the above system of ODE. To this aim, different numerical schemes are provided:
see FOODIE home page for more details about available integrators.
FOODIE schemes must be applied to only subclass extensions of the abstract class integrand .
To use FOODIE you must:
For example for the Lorenz' ODE system
type , extends ( integrand_object ) :: lorenz
!< Lorenz equations field.
!<
!< It is a FOODIE integrand class.
private
real ( R_P ), dimension (:), allocatable :: state !< Solution vector.
real ( R_P ) :: sigma = 0._R_P !< Lorenz \(\sigma\).
real ( R_P ) :: rho = 0._R_P !< Lorenz \(\rho\).
real ( R_P ) :: beta = 0._R_P !< Lorenz \(\beta\).
contains
procedure , pass ( self ), public :: t => dLorenz_dt !< Time derivate, resiuduals function.
procedure , pass ( lhs ), public :: integrand_multiply_real => lorenz_multiply_real !< lorenz * real operator.
procedure , pass ( rhs ), public :: real_multiply_integrand => real_multiply_lorenz !< Real * Lorenz operator.
procedure , pass ( lhs ), public :: add => add_lorenz !< Lorenz + Lorenz oprator.
procedure , pass ( lhs ), public :: assign_integrand => lorenz_assign_lorenz !< Lorenz = Lorenz.
procedure , pass ( lhs ), public :: assign_real => lorenz_assign_real !< Lorenz = real.
...
endtype lorenz
For example using the forward explicit Euler scheme to the above Lorenz' ODE system
use foodie , only : integrator_euler_explicit
use type_lorenz , only : lorenz
type ( integrator_euler_explicit ) :: euler_integrator
type ( lorenz ) :: attractor
real :: dt = 0.01
do step = 1 , num_steps
call euler_integrator % integrate ( field = attractor , dt = dt )
enddo
Used By
module~~foodie~~UsedByGraph
module~foodie
foodie
program~integrate_burgers
integrate_burgers
module~foodie->program~integrate_burgers
program~integrate_lorenz
integrate_lorenz
module~foodie->program~integrate_lorenz
module~type_euler_1d
type_euler_1D
module~foodie->module~type_euler_1d
module~foodie_test_integrand_tester_object
foodie_test_integrand_tester_object
module~foodie->module~foodie_test_integrand_tester_object
module~foodie_test_lcce_test
foodie_test_lcce_test
module~foodie->module~foodie_test_lcce_test
module~type_euler_1d_openmp
type_euler_1D_openmp
module~foodie->module~type_euler_1d_openmp
program~integrate_euler_1d_caf~2
integrate_euler_1D_caf
module~foodie->program~integrate_euler_1d_caf~2
module~foodie_test_oscillation_test
foodie_test_oscillation_test
module~foodie->module~foodie_test_oscillation_test
program~integrate_euler_1d
integrate_euler_1D
module~foodie->program~integrate_euler_1d
module~foodie_test_object
foodie_test_object
module~foodie->module~foodie_test_object
module~foodie_test_integrand_oscillation
foodie_test_integrand_oscillation
module~foodie->module~foodie_test_integrand_oscillation
module~foodie_test_integrand_lcce
foodie_test_integrand_lcce
module~foodie->module~foodie_test_integrand_lcce
module~type_euler_1d_caf
type_euler_1D_caf
module~foodie->module~type_euler_1d_caf
module~type_burgers
type_burgers
module~foodie->module~type_burgers
module~foodie_test_integrand_ladvection
foodie_test_integrand_ladvection
module~foodie->module~foodie_test_integrand_ladvection
program~integrate_euler_1d_openmp
integrate_euler_1D_openmp
module~foodie->program~integrate_euler_1d_openmp
module~type_lorenz
type_lorenz
module~foodie->module~type_lorenz
module~type_euler_1d->program~integrate_euler_1d
module~foodie_test_integrand_tester_object->module~foodie_test_object
module~foodie_test_integrand_tester_object->module~foodie_test_integrand_oscillation
module~foodie_test_integrand_tester_object->module~foodie_test_integrand_lcce
module~foodie_test_integrand_tester_object->module~foodie_test_integrand_ladvection
program~foodie_test_lcce
foodie_test_lcce
module~foodie_test_lcce_test->program~foodie_test_lcce
module~type_euler_1d_openmp->program~integrate_euler_1d_openmp
program~foodie_test_oscillation
foodie_test_oscillation
module~foodie_test_oscillation_test->program~foodie_test_oscillation
program~foodie_tester
foodie_tester
module~foodie_test_object->program~foodie_tester
module~foodie_test_integrand_oscillation->module~foodie_test_oscillation_test
module~foodie_test_integrand_oscillation->module~foodie_test_object
module~foodie_test_integrand_lcce->module~foodie_test_lcce_test
module~foodie_test_integrand_lcce->module~foodie_test_object
module~type_euler_1d_caf->program~integrate_euler_1d_caf~2
module~type_burgers->program~integrate_burgers
module~foodie_test_integrand_ladvection->module~foodie_test_object
module~type_lorenz->program~integrate_lorenz
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a parent (sub)module to the submodule which is
descended from it. Dashed arrows point from a module being used to the
module or program unit using it.
Functions
Return the list of available intergrator class of schemes names.
Arguments
None
Return Value character(len=99),
allocatable, (:)
Available integrator class names.
Return the list of all available intergrator schemes, or only the schemes belonging to the given class name.
Arguments
Type
Intent Optional
Attributes Name
character(len=*),
intent(in),
optional
::
class_name Return only the schemes belogn to the given class.
Return Value character(len=99),
allocatable, (:)
Available integrators.
Return .true. if the given scheme (or class of schemes name) is available in the FOODIE library.
Arguments
Type
Intent Optional
Attributes Name
character(len=*),
intent(in)
::
scheme Selected integrator given.
Return Value logical
Availability result.
Return .true. if the given class of schemes name is available.
Arguments
Type
Intent Optional
Attributes Name
character(len=*),
intent(in)
::
scheme Selected integrator given.
Return Value logical
Availability result.
Return .true. if the given scheme (class name) is available in the FOODIE library.
Arguments
Type
Intent Optional
Attributes Name
character(len=*),
intent(in)
::
scheme Selected integrator given.
Return Value logical
Availability result.
Subroutines
Return a concrete instance of integrator_object given a scheme selection.
Arguments
Type
Intent Optional
Attributes Name
character(len=*),
intent(in)
::
scheme Selected integrator given.
class(integrator_object ),
intent(out),
allocatable ::
integrator The FOODIE integrator.
integer(kind=I_P),
intent(in),
optional
::
stages Stages of multi-stage methods.
real(kind=R_P),
intent(in),
optional
::
tolerance Tolerance on the local truncation error.
real(kind=R_P),
intent(in),
optional
::
nu Williams-Robert-Asselin filter coefficient.
real(kind=R_P),
intent(in),
optional
::
alpha Robert-Asselin filter coefficient.
integer(kind=I_P),
intent(in),
optional
::
iterations Implicit iterations.
logical,
intent(in),
optional
::
autoupdate Enable cyclic autoupdate for multistep.
class(integrand_object ),
intent(in),
optional
::
U Integrand molding prototype.