31 real(RP),
parameter ::
c1_3 = 1._rp / 3._rp
32 real(RP),
parameter ::
c2_3 = 2._rp / 3._rp
33 real(RP),
parameter ::
c4_3 = 4._rp / 3._rp
35 real(RP),
parameter ::
c1_6 = 1._rp / 6._rp
36 real(RP),
parameter ::
c11_6 = 11._rp / 6._rp
38 real(RP),
parameter ::
c2_11 = 2._rp / 11._rp
39 real(RP),
parameter ::
c6_11 = 6._rp / 11._rp
40 real(RP),
parameter ::
c9_11 = 9._rp / 11._rp
41 real(RP),
parameter ::
c18_11 = 18._rp / 11._rp
43 real(RP),
parameter ::
c5_12 = 5._rp / 12._rp
44 real(RP),
parameter ::
c16_12 = 16._rp / 12._rp
45 real(RP),
parameter ::
c23_12 = 23._rp / 12._rp
47 real(RP),
parameter ::
c9_16 = 9._rp / 16._rp
49 real(RP),
parameter ::
c1_24 = 1._rp / 24._rp
50 real(RP),
parameter ::
c9_24 = 9._rp / 24._rp
51 real(RP),
parameter ::
c37_24 = 37._rp / 24._rp
52 real(RP),
parameter ::
c55_24 = 55._rp / 24._rp
53 real(RP),
parameter ::
c59_24 = 59._rp / 24._rp
55 real(RP),
parameter ::
c3_25 = 3._rp / 25._rp
56 real(RP),
parameter ::
c12_25 = 12._rp / 25._rp
57 real(RP),
parameter ::
c16_25 = 16._rp / 25._rp
58 real(RP),
parameter ::
c36_25 = 36._rp / 25._rp
59 real(RP),
parameter ::
c48_25 = 48._rp / 25._rp
60 real(RP),
parameter ::
c72_25 = 72._rp / 25._rp
62 real(RP),
parameter ::
c12_137 = 12._rp / 137._rp
63 real(RP),
parameter ::
c60_137 = 60._rp / 137._rp
64 real(RP),
parameter ::
c75_137 = 75._rp / 137._rp
65 real(RP),
parameter ::
c200_137 = 200._rp / 137._rp
66 real(RP),
parameter ::
c300_137 = 300._rp / 137._rp
67 real(RP),
parameter ::
c600_137 = 600._rp / 137._rp
74 integer,
intent(in) :: method
98 integer,
intent(out) :: n_Y, n_FY
99 integer,
intent(in) :: method
134 call quit(
"ode_NL_ms_mod: memSize_ode_NL_ms:& 145 integer,
intent(in) :: method
146 procedure(ode_nl_ms_solver),
pointer :: slv
179 call quit(
"ode_NL_ms_mod: set_solver_ode_NL_ms:& 190 integer ,
intent(in) :: method
196 if (.NOT.bool)
call quit(&
197 &
"ode_NL_ms_mod: create_ode_NL_ms_sol: uncorrect method")
212 real(RP) ,
intent(in) :: t0, T, dt
213 integer ,
intent(in) :: method
215 logical ,
intent(in) :: check_overflow
218 procedure(ode_nl_ms_solver),
pointer :: slv=>null()
220 integer :: ns, ii, jj, n0, n0_F
221 logical :: exit_comp, ierr
224 &
"ode_NL_ms_mod : solve_ode_NL_ms" 226 &
" NonLin multistep solver = ",&
242 ns = int( (t-t0) / dt)
245 tn = t0 +
re(jj-1)*dt
248 call out(tn, sol, exit_comp)
251 &
"ode_NL_ms_mod : solve& 252 & time = ", tn,
': EXIT_COMPp' 258 call slv(sol, dt, pb%N, pb%Na)
265 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY, &
274 call pb%AB( ay(:,n0_f, ii), by(:,n0_f, ii), &
275 & x(:,ii), tn+dt, y(:,n0, ii), pb%N, pb%Na )
282 if (check_overflow)
then 287 &
"ode_NL_ms_mod : solve,& 288 & time = ", tn,
': OVERFLOW Y' 296 &
"ode_NL_ms_mod : solve,& 297 & time = ", tn,
': OVERFLOW BY' 305 &
"ode_NL_ms_mod : solve,& 306 & time = ", tn,
': OVERFLOW AY' 321 elemental subroutine phi_1(z)
322 real(RP),
intent(inout) :: z
325 z = (exp(z) - 1._rp)/z
335 elemental subroutine phi_2(z)
336 real(RP),
intent(inout) :: z
343 z = (exp(z) - z - 1._rp)/z2
355 elemental subroutine phi_3(z)
356 real(RP),
intent(inout) :: z
364 z = (exp(z) - 0.5_rp*z2 - z - 1._rp)/z3
375 elemental subroutine phi_4(z)
376 real(RP),
intent(inout) :: z
378 real(RP) :: z2, z3, z4
385 z = (exp(z) -
c1_6*z3 - 0.5_rp*z2 - z - 1._rp)/z4
398 type(ode_solution),
intent(inout) :: sol
399 real(RP) ,
intent(in) :: dt
400 integer ,
intent(in) :: N, P
403 integer :: n0, nl, n0_F
409 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY )
415 y(1:n, nl, ii) = y(1:n, n0, ii) + dt*by(1:n, n0_f, ii)
416 y(1:p, nl, ii) = y(1:p, nl, ii) / &
417 & (1._rp - dt*ay(1:p, n0_f, ii))
431 type(ode_solution),
intent(inout) :: sol
432 real(RP) ,
intent(in) :: dt
433 integer ,
intent(in) :: N, P
435 real(RP),
dimension(N) :: b
436 real(RP),
dimension(P) :: a
438 integer :: n0, nl, n0_F
444 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY )
457 b(1:p) = a * y(1:p,n0, ii) + b(1:p)
466 y(1:n,nl, ii) = y(1:n,n0, ii) + dt*b
480 type(ode_solution),
intent(inout) :: sol
481 real(RP) ,
intent(in) :: dt
482 integer ,
intent(in) :: N, P
484 real(RP),
dimension(N) :: b
485 real(RP),
dimension(P) :: a
487 integer :: n0, nl, n0_F, n1_F
494 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY )
501 a = ay(1:p,n0_f, ii)*1.5_rp - ay(1:p,n1_f, ii)*0.5_rp
504 b = by(1:n,n0_f, ii)*1.5_rp - by(1:n,n1_f, ii)*0.5_rp
507 b(1:p) = a * y(1:p,n0, ii) + b(1:p)
516 y(1:n,nl, ii) = y(1:n,n0, ii) + dt*b
530 type(ode_solution),
intent(inout) :: sol
531 real(RP) ,
intent(in) :: dt
532 integer ,
intent(in) :: N, P
534 real(RP),
dimension(N) :: b
535 real(RP),
dimension(P) :: a
538 integer :: n0, nl, n0_F, n1_F, n2_F
548 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY )
556 & + ay(1:p,n2_f, ii)*
c5_12 560 & + by(1:n,n2_f, ii)*
c5_12 563 b(1:p) = b(1:p) + h1*ay(1:p,n0_f, ii)*by(1:p,n1_f, ii)
564 b(1:p) = b(1:p) - h1*ay(1:p,n1_f, ii)*by(1:p,n0_f, ii)
567 b(1:p) = a * y(1:p,n0, ii) + b(1:p)
576 y(1:n,nl, ii) = y(1:n,n0, ii) + dt*b
590 type(ode_solution),
intent(inout) :: sol
591 real(RP) ,
intent(in) :: dt
592 integer ,
intent(in) :: N, P
594 real(RP),
dimension(N) :: b
595 real(RP),
dimension(P) :: a
598 integer :: n0, nl, n0_F, n1_F, n2_F, n3_F
600 h3 = 3._rp * dt / 12._rp
610 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY )
619 & + ay(1:p,n2_f, ii)*
c37_24 - ay(1:p,n3_f, ii)*
c9_24 624 & + by(1:n,n2_f, ii)*
c37_24 - by(1:n,n3_f, ii)*
c9_24 627 b(1:p) = b(1:p) + ay(1:p,n0_f, ii) * &
628 & (h3*by(1:p,n1_f, ii) - h1*by(1:p,n2_f, ii))
631 b(1:p) = b(1:p) - by(1:p,n0_f, ii) * &
632 & (h3*ay(1:p,n1_f, ii) - h1*ay(1:p,n2_f, ii))
635 b(1:p) = a * y(1:p,n0, ii) + b(1:p)
644 y(1:n,nl, ii) = y(1:n,n0, ii) + dt*b
658 type(ode_solution),
intent(inout) :: sol
659 real(RP) ,
intent(in) :: dt
660 integer ,
intent(in) :: N, P
662 real(RP),
dimension(N) :: b
663 real(RP),
dimension(P) :: a
666 integer :: n0, n1, nl, n0_F, n1_F
677 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY )
683 b = by(1:n, n0_f, ii)*h4 - by(1:n, n1_f, ii)*h2
685 a = ay(1:p, n0_f, ii) - ay(1:p, n1_f, ii)
686 a = a * y(1:p, n1_f, ii)
688 b(1:p) = b(1:p) + a * h2
690 b = b + y(1:n, n0, ii)*
c4_3 - y(1:n, n1, ii)*
c1_3 692 b(1:p) = b(1:p) / (1._rp - h2*ay(1:p, n0_f, ii))
710 type(ode_solution),
intent(inout) :: sol
711 real(RP) ,
intent(in) :: dt
712 integer ,
intent(in) :: N, P
714 real(RP),
dimension(N) :: b
715 real(RP),
dimension(P) :: a
718 integer :: n0, n1, n2, nl, n0_F, n1_F, n2_F
731 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY )
737 b = by(1:n, n0_f, ii)*h18 - by(1:n, n1_f, ii)*h18 &
738 & + by(1:n, n2_f, ii)*h6
740 a = ay(1:p, n2_f, ii) - ay(1:p, n0_f, ii)
741 a = a * y(1:p, n2_f, ii)
742 b(1:p) = b(1:p) + a * h6
744 a = ay(1:p, n1_f, ii) - ay(1:p, n0_f, ii)
745 a = a * y(1:p, n1_f, ii)
746 b(1:p) = b(1:p) - a * h18
748 b = b + y(1:n, n0, ii)*
c18_11 - y(1:n, n1, ii)*
c9_11 &
749 & + y(1:n, n2, ii)*
c2_11 751 b(1:p) = b(1:p) / (1._rp - h6*ay(1:p, n0_f, ii))
768 type(ode_solution),
intent(inout) :: sol
769 real(RP) ,
intent(in) :: dt
770 integer ,
intent(in) :: N, P
772 real(RP),
dimension(N) :: b
773 real(RP),
dimension(P) :: a
774 real(RP) :: h12, h48, h72
776 integer :: n0, n1, n2, n3, nl, n0_F, n1_F, n2_F, n3_F
792 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY )
798 b = by(1:n, n0_f, ii)*h48 - by(1:n, n1_f, ii)*h72 &
799 & + by(1:n, n2_f, ii)*h48 - by(1:n, n3_f, ii)*h12
801 a = ay(1:p, n3_f, ii) - ay(1:p, n0_f, ii)
802 a = a * y(1:p, n3_f, ii)
803 b(1:p) = b(1:p) - a * h12
805 a = ay(1:p, n2_f, ii) - ay(1:p, n0_f, ii)
806 a = a * y(1:p, n2_f, ii)
807 b(1:p) = b(1:p) + a * h48
809 a = ay(1:p, n1_f, ii) - ay(1:p, n0_f, ii)
810 a = a * y(1:p, n1_f, ii)
811 b(1:p) = b(1:p) - a * h72
816 b(1:p) = b(1:p) / (1._rp - h12*ay(1:p, n0_f, ii))
834 type(ode_solution),
intent(inout) :: sol
835 real(RP) ,
intent(in) :: dt
836 integer ,
intent(in) :: N, P
838 real(RP),
dimension(N) :: b
839 real(RP),
dimension(P) :: a
840 real(RP) :: h60, h300, h600
842 integer :: n0, n1, n2, n3, n4, nl, n0_F, n1_F, n2_F, n3_F, n4_F
860 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY )
866 b = by(1:n, n0_f, ii)*h300 - by(1:n, n1_f, ii)*h600 &
867 & + by(1:n, n2_f, ii)*h600 - by(1:n, n3_f, ii)*h300 &
868 & + by(1:n, n4_f, ii)*h60
870 a = ay(1:p, n4_f, ii) - ay(1:p, n0_f, ii)
871 a = a * y(1:p, n4_f, ii)
872 b(1:p) = b(1:p) + a * h60
874 a = ay(1:p, n3_f, ii) - ay(1:p, n0_f, ii)
875 a = a * y(1:p, n3_f, ii)
876 b(1:p) = b(1:p) - a * h300
878 a = ay(1:p, n2_f, ii) - ay(1:p, n0_f, ii)
879 a = a * y(1:p, n2_f, ii)
880 b(1:p) = b(1:p) + a * h600
882 a = ay(1:p, n1_f, ii) - ay(1:p, n0_f, ii)
883 a = a * y(1:p, n1_f, ii)
884 b(1:p) = b(1:p) - a * h600
890 b(1:p) = b(1:p) / (1._rp - h60*ay(1:p, n0_f, ii))
908 type(ode_solution),
intent(inout) :: sol
909 real(RP) ,
intent(in) :: dt
910 integer ,
intent(in) :: N, P
912 real(RP),
dimension(N) :: b
913 real(RP),
dimension(P) :: a
916 integer :: n0, n1, nl, n0_F, n1_F
927 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY )
934 a = ay(1:p, n0_f, ii) - ay(1:p, n1_f, ii)
935 a = a * y(1:p, n1, ii)
936 a = a + ay(1:p, n0_f, ii)*y(1:p, n0, ii)
939 b = y(1:n, n0, ii) + by(1:n, n0, ii)*h3 &
940 & - by(1:n, n1, ii)*h1
942 b(1:p) = b(1:p) + a*h1
943 b(1:p) = b(1:p) / (1._rp - h1*ay(1:p, n0_f, ii))
960 type(ode_solution),
intent(inout) :: sol
961 real(RP) ,
intent(in) :: dt
962 integer ,
intent(in) :: N, P
964 real(RP),
dimension(N) :: b
965 real(RP),
dimension(P) :: a
966 real(RP) :: h1, h3, CS
968 integer :: n0, n1, nl, n0_F, n1_F
980 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY )
987 a = ay(1:p, n0_f, ii) - ay(1:p, n1_f, ii)
988 a = a * y(1:p, n1, ii)
989 a = a + ay(1:p, n0_f, ii)*y(1:p, n0, ii)*0.75_rp
990 a = a + ay(1:p, n0_f, ii)*y(1:p, n1, ii)*0.125_rp
995 b = y(1:n, n0, ii) + by(1:n, n0, ii)*h3 &
996 & - by(1:n, n1, ii)*h1
998 b(1:p) = b(1:p) + a*h1
999 b(1:p) = b(1:p) / (1._rp - cs*ay(1:p, n0_f, ii))
1017 type(ode_solution),
intent(inout) :: sol
1018 real(RP) ,
intent(in) :: dt
1019 integer ,
intent(in) :: N, P
1021 real(RP),
dimension(N) :: b, w1
1022 real(RP),
dimension(P) :: a
1024 integer :: n0, n1, nl, n0_F, n1_F
1028 nl = sol%Y_i(sol%nY)
1032 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY )
1039 w1 = by(1:n, n0_f, ii)
1040 w1(1:p) = w1(1:p) + ay(1:p, n0_f, ii)*y(1:p, n0, ii)
1043 b = by(1:n, n0_f, ii) - by(1:n, n1_f, ii)
1044 b(1:p) = b(1:p) + y(1:p, n1, ii) * &
1045 & ( ay(1:p, n0_f, ii) - ay(1:p, n1_f, ii) )
1048 a = dt*ay(1:p, n0_f, ii)
1051 b(1:p) = b(1:p) + a*w1(1:p)
1058 b(p+1:n) = b(p+1:n) * 0.5_rp
1064 y(1:n, nl, ii) = y(1:n, n0, ii) + dt*b
1093 type(ode_solution),
intent(inout) :: sol
1094 real(RP) ,
intent(in) :: dt
1095 integer ,
intent(in) :: N, P
1097 real(RP),
dimension(N) :: w1, w2, b, g2, g3
1098 real(RP),
dimension(P) :: a
1100 integer :: n0, n1, n2, nl, n0_F, n1_F, n2_F
1105 nl = sol%Y_i(sol%nY)
1110 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY )
1117 w1 = by(1:n, n0_f, ii)
1120 a = ay(1:p, n0_f, ii)
1123 w2 = by(1:n, n1_f, ii)
1124 w2(1:p) = w2(1:p) + y(1:p, n1, ii) * &
1125 & ( ay(1:p, n1_f, ii) - a)
1128 b = by(1:n, n2_f, ii)
1129 b(1:p) = b(1:p) + y(1:p, n2, ii) * &
1130 & ( ay(1:p, n2_f, ii) - a)
1134 g2 = 1.5_rp*w1 -2._rp*w2 + 0.5_rp*b
1135 g3 = w1 -2._rp*w2 + b
1138 w1(1:p) = w1(1:p) + a*y(1:p, n0, ii)
1145 w2(1:p) = w2(1:p) + a*w1(1:p)
1149 b(1:p) = b(1:p) + a*w2(1:p)
1156 b(p+1:n) = b(p+1:n) *
c1_6 1159 b = w1 + w2*0.5_rp + b
1162 y(1:n, nl, ii) = y(1:n, n0, ii) + dt*b
1191 type(ode_solution),
intent(inout) :: sol
1192 real(RP) ,
intent(in) :: dt
1193 integer ,
intent(in) :: N, P
1195 real(RP),
dimension(N) :: w1, w2, w3, b, g2, g3, g4
1196 real(RP),
dimension(P) :: a
1198 integer :: n0, n1, n2, n3, nl, n0_F, n1_F, n2_F, n3_F
1204 nl = sol%Y_i(sol%nY)
1210 associate( y=>sol%Y, by=>sol%BY, ay=>sol%AY )
1217 w1 = by(1:n, n0_f, ii)
1220 a = ay(1:p, n0_f, ii)
1223 w2 = by(1:n, n1_f, ii)
1224 w2(1:p) = w2(1:p) + y(1:p, n1, ii) * &
1225 & ( ay(1:p, n1_f, ii) - a)
1228 w3 = by(1:n, n2_f, ii)
1229 w3(1:p) = w3(1:p) + y(1:p, n2, ii) * &
1230 & ( ay(1:p, n2_f, ii) - a)
1233 b = by(1:n, n3_f, ii)
1234 b(1:p) = b(1:p) + y(1:p, n3, ii) * &
1235 & ( ay(1:p, n3_f, ii) - a)
1240 g2 =
c11_6*w1 - 3._rp*w2 + 1.5_rp*w3 -
c1_3*b
1241 g3 = 2._rp*w1 - 5._rp*w2 + 4.0_rp*w3 - b
1242 g4 = w1 - 3._rp*w2 + 3.0_rp*w3 - b
1245 w1(1:p) = w1(1:p) + a*y(1:p, n0, ii)
1252 w2(1:p) = w2(1:p) + a*w1(1:p)
1256 w3(1:p) = w3(1:p) + a*w2(1:p)
1260 b(1:p) = b(1:p) + a*w3(1:p)
1267 b(p+1:n) = b(p+1:n) *
c1_24 1270 b = w1 + w2*0.5_rp + w3*
c1_6 + b
1273 y(1:n, nl, ii) = y(1:n, n0, ii) + dt*b
real(rp), parameter c16_12
real(rp), parameter c59_24
real(rp), parameter c23_12
Type ode_solution: data structure to solve ODE/PDE problems.
real(rp), parameter c48_25
real(rp), parameter c12_137
elemental subroutine phi_3(z)
phi_3(z) = (exp(z) - z^2/2 - z - 1)/z^3
real(rp), parameter c6_11
integer, parameter ode_mcnab2
ModifiedCrank Nicholson / Adamns Bashforth 2.
subroutine nl_ms_bdfsbdf4(sol, dt, N, P)
Lines 1 ..P = combined BDF4/SBDF4 Lines P+1..N = SBDF4.
integer, parameter ode_bdfsbdf3
BDF / SBDF 3.
real(rp), parameter c600_137
real(rp), parameter c300_137
DERIVED TYPE ode_problem: definition of ODE/PDE problems
real(rp), parameter c18_11
subroutine nl_ms_rl2(sol, dt, N, P)
Lines 1 ..P = Rush-Larsen 2 Lines P+1..N = AB2.
subroutine nl_ms_mcnab2(sol, dt, N, P)
Lines 1 ..P = combined Modified-CN/AB2 Lines P+1..N = AB2.
real(rp), parameter c55_24
logical function, public check_ode_method_nl_ms(method)
is 'method' a multi-step non-linear ODE solver ?
real(rp), parameter c9_24
real(rp), parameter c72_25
integer, parameter ode_eab4
Exponential Adamns Bashforth 4.
real(rp), parameter c75_137
logical function, public overflow(yy)
Detects overflow.
subroutine nl_ms_eab3(sol, dt, N, P)
Lines 1 ..P = Exponential AB3 Lines P+1..N = AB3.
character(len=15) function, public name_ode_method(method)
Get ODE method name.
real(rp), parameter c37_24
conversion integers or rational to real
REAL NUMBERS PRECISION IN CHORAL: selects simple/double/quad
integer, parameter ode_eab3
Exponential Adamns Bashforth 3.
subroutine, public ode_solution_init_indexes(sol)
initialise the ode_indexes
real(rp), parameter c1_24
integer, parameter ode_fbe
Forward / backward Euler.
real(rp), parameter c60_137
DERIVED TYPE ode_solution: data straucture to solve ODEs
elemental subroutine phi_2(z)
phi_2 = (exp(z) - z - 1._RP)/z^2
elemental subroutine phi_4(z)
phi_4(z) = (exp(z) - z^3/6 - z^2/2 - z - 1)/z^4
subroutine, public memsize_ode_nl_ms(n_Y, n_FY, method)
required sizes to allocate memory
real(rp), parameter c2_11
ALGEBRAIC OPERATIONS ON SETS
integer, parameter ode_erk1
Exponential Euler.
real(rp), parameter c5_12
subroutine nl_ms_rl4(sol, dt, N, P)
Lines 1 ..P = Rush-Larsen 4 Lines P+1..N = AB4.
subroutine nl_ms_erk1(sol, dt, N, P)
Lines 1 ..P = Rush-Larsen 1 Lines P+1..N = Forward Euler.
real(rp), parameter c36_25
subroutine, public solve_ode_nl_ms(sol, pb, t0, T, dt, method, out, check_overflow)
solve with constant time-step
subroutine nl_ms_bdfsbdf5(sol, dt, N, P)
Lines 1 ..P = combined BDF5/SBDF5 Lines P+1..N = SBDF5.
subroutine nl_ms_cnab2(sol, dt, N, P)
Lines 1 ..P = combined CN/AB2 Lines P+1..N = AB2.
subroutine nl_ms_bdfsbdf2(sol, dt, N, P)
Lines 1 ..P = combined BDF2/SBDF2 Lines P+1..N = SBDF2.
integer, parameter ode_bdfsbdf5
BDF / SBDF 5.
BOTTOM LEVEL MODULE FOR ODEs
subroutine nl_ms_fbe(sol, dt, N, P)
Lines 1 ..P = combined FORWARD/BacWard Euler Lines P+1..N = FORWARD Euler.
integer choral_verb
Verbosity level.
real(rp), parameter c200_137
subroutine nl_ms_bdfsbdf3(sol, dt, N, P)
Lines 1 ..P = combined BDF3/SBDF3 Lines P+1..N = SBDF3.
real(rp), parameter c9_11
integer, parameter ode_rl3
Rush Larsen 3.
real(rp), parameter, public real_tol
integer, parameter ode_bdfsbdf4
BDF / SBDF 4.
subroutine, public circperm(E)
Circular permutation of an array of integer.
DEFINITION OF GLOBAL VARIABLES FOR THE LIBRARY CHORAL
subroutine, public set_solver_ode_nl_ms(slv, method)
set the resolution solver
elemental subroutine phi_1(z)
phi_1 = ( exp(z) - 1 ) / z
subroutine nl_ms_rl3(sol, dt, N, P)
Lines 1 ..P = Rush-Larsen 3 Lines P+1..N = AB3.
MULTISTEP SOLVERS FOR NON LINEAR ODEs
subroutine nl_ms_eab2(sol, dt, N, P)
Lines 1 ..P = Exponential AB2 Lines P+1..N = AB2.
integer, parameter ode_cnab2
Crank Nicholson / Adamns Bashforth 2.
real(rp), parameter c11_6
integer, parameter ode_bdfsbdf2
BDF / SBDF 2.
subroutine nl_ms_eab4(sol, dt, N, P)
Lines 1 ..P = Exponential AB4 Lines P+1..N = AB4.
integer, parameter ode_eab2
Exponential Adamns Bashforth 2.
Type ode_problem: definition of ODE/PDE problems.
real(rp), parameter c9_16
real(rp), parameter c16_25
integer, parameter ode_rl2
Rush Larsen 2.
real(rp), parameter c12_25
real(rp), parameter c3_25
subroutine, public create_ode_nl_ms_sol(sol, pb, method)
create memory for the ode_solution structure 'sol'
integer, parameter ode_rl4
Rush Larsen 4.