!----------------------------------------------------------------------- ! ! support module for test.f90 sample program to demonstrate the ! sderk.f90 stochastic integrator ! !----------------------------------------------------------------------- module sderk_support integer, parameter :: sderk_prec = selected_real_kind(p=14) integer, parameter :: wp = sderk_prec integer, parameter :: sderk_mf = 23 integer, parameter :: sderk_rand_mf = 301 real(wp), parameter :: sderk_tol = epsilon(1.0_wp) * 100 real(wp), dimension(1), save, target :: sderk_y real(wp), dimension(1), save :: & sderk_a, sderk_b, sderk_c, sderk_ybar, & sderk_aybarp, sderk_aybarm, sderk_bybarp, sderk_bybarm, & sderk_aphip, sderk_aphim, sderk_bphip, sderk_bphim real(wp) :: alpha, beta contains ! Subroutines that implement equations of motion, to be called ! by sderk subroutine sderk_func_a(t, y, ydot) implicit none real(wp) :: t real(wp), dimension(1) :: y, ydot ! this is the Ito form ! return deterministic derivative ydot = (-1.0_wp) * (alpha+beta*beta*y) * (1.0_wp - y*y) return end subroutine sderk_func_a subroutine sderk_func_b(t, y, ydot) implicit none real(wp) :: t real(wp), dimension(1) :: y, ydot ! return stochastic derivative ydot = beta * (1.0_wp - y*y) return end subroutine sderk_func_b end module sderk_support