module_abmv5.f90 Source File


This file depends on

sourcefile~~module_abmv5.f90~~EfferentGraph sourcefile~module_abmv5.f90 module_abmv5.f90 sourcefile~module_kinds.f90 module_kinds.f90 sourcefile~module_abmv5.f90->sourcefile~module_kinds.f90 sourcefile~module_mol.f90 module_mol.f90 sourcefile~module_abmv5.f90->sourcefile~module_mol.f90 sourcefile~module_mol.f90->sourcefile~module_kinds.f90 sourcefile~module_equations.f90 module_equations.f90 sourcefile~module_mol.f90->sourcefile~module_equations.f90 sourcefile~module_equations.f90->sourcefile~module_kinds.f90

Files dependent on this one

sourcefile~~module_abmv5.f90~~AfferentGraph sourcefile~module_abmv5.f90 module_abmv5.f90 sourcefile~module_all_integrators.f90 module_all_integrators.f90 sourcefile~module_all_integrators.f90->sourcefile~module_abmv5.f90 sourcefile~submodule_abmv5_implementation.f90 submodule_abmv5_implementation.f90 sourcefile~submodule_abmv5_implementation.f90->sourcefile~module_abmv5.f90 sourcefile~submodule_geod_schw_implementation.f90 submodule_geod_schw_implementation.f90 sourcefile~submodule_geod_schw_implementation.f90->sourcefile~module_all_integrators.f90 sourcefile~submodule_osc_schw_implementation.f90 submodule_osc_schw_implementation.f90 sourcefile~submodule_osc_schw_implementation.f90->sourcefile~module_all_integrators.f90 sourcefile~submodule_scalar_schw_implementation.f90 submodule_scalar_schw_implementation.f90 sourcefile~submodule_scalar_schw_implementation.f90->sourcefile~module_all_integrators.f90 sourcefile~test.f90 test.f90 sourcefile~test.f90->sourcefile~module_all_integrators.f90

Contents

Source Code


Source Code

module abmv5_integrator
!! Module that provides a 5th order Adams-Bashford-Moulton multi-value ODE
!! integrator.
!!
!! The implementation is found in [[submodule_abmv5_implementation.f90]].

  use kinds
  use method_of_lines

  implicit none

  type, extends(integrator) :: abmv5
  !! An Adams-Bashford-Moulton multi-value ODE integrator class.
    integer(ip) :: ntmp = 10
    !! 10 levels of temporary storage are required.
    integer(ip) :: order = 5
    !! The order of the method is 5.
    real(wp) :: last_dt
    !! Variable that keeps track of the last timestep.
  contains
    procedure :: ntemp => abmv5_ntemp
    !! Routine to provide information about temporary storage levels is
    !! provided by [[abmv5_ntemp]].
    procedure :: init => abmv5_init
    !! Initialization routine is provided by [[abmv5_init]].
    procedure :: step => abmv5_step
    !! Stepping routine is provided by [[abmv5_step]].
    procedure :: shutdown => abmv5_shutdown
    !! Shut down routine is provided by [[abmv5_shutdown]].
  end type abmv5

  interface
    module function abmv5_ntemp ( this ) result (ntemp)
    !! Routine that reports how many temporary storage levels are needed.
      class(abmv5), intent(in) :: this
      !! The routine is called on this object.
      integer(ip) :: ntemp
      !! The return value is the number of required temorary storage levels.
    end function abmv5_ntemp

    module subroutine abmv5_init ( this, eqs )
    !! Routine that initializes the integrator.
      class(abmv5), intent(inout) :: this
      !! The routine is called on this object.
      type(equation_pointer), dimension(:), intent(in) :: eqs
      !! A 1d-array of pointers to equations that will be integrated.
    end subroutine abmv5_init

    module subroutine abmv5_step ( this )
    !! Routine that takes a time step.
      class(abmv5), intent(inout) :: this
      !! The routine is called on this object.
    end subroutine abmv5_step

    module subroutine abmv5_shutdown ( this )
    !! Routine that shuts downs the integrator.
      class(abmv5), intent(inout) :: this
      !! The routine is called on this object.
    end subroutine abmv5_shutdown
  end interface

end module abmv5_integrator