Commit c550aeb7 authored by Florian Goth's avatar Florian Goth
Browse files

use the notation from the paper in the code

parent feb74df4
Pipeline #7767 passed with stage
in 1 minute and 9 seconds
......@@ -52,20 +52,20 @@ subroutine init_splittings(split)
nrofsplits = 41
Allocate(splits(nrofsplits))
! V-T Euler
! V-T Euler / NS_1 1
call createsplit(splits(1), 1, 1)
splits(1)%Tcoeffs(1) = 1.0
splits(1)%Vcoeffs(1) = 1.0
! T - V Euler
! T - V Euler
call createsplit(splits(2), 2, 1)
splits(2)%Tcoeffs(1) = 0.0
splits(2)%Tcoeffs(2) = 1.0
splits(2)%Vcoeffs(1) = 1.0
!T-V-T leapfrog
!T-V-T leapfrog S_1 2
call createsplit(splits(3), 2, 2)
splits(3)%Tcoeffs(1) = 0.5
splits(3)%Tcoeffs(2) = 0.5
......@@ -82,7 +82,7 @@ subroutine init_splittings(split)
splits(4)%Vcoeffs(2) = 0.5
! The MacLachlan/Omelyan Integrator. A derivation can be found here https://www.massey.ac.nz/~rmclachl/sisc95.pdf
! The MacLachlan/Omelyan Integrator, S_2 2. A derivation can be found here https://www.massey.ac.nz/~rmclachl/sisc95.pdf
call createsplit(splits(5), 3, 3)
splits(5)%Tcoeffs(1) = 0.1931833275037836
splits(5)%Tcoeffs(2) = (1.0 - 2*0.1931833275037836)
......@@ -159,7 +159,7 @@ subroutine init_splittings(split)
! Symmetric from symmetric
! This corresponds to the classical Forest/Ruth algorithm
! S_3 4 This corresponds to the classical Forest/Ruth algorithm
call createsplit(splits(10), 4, 4)
alpha = 1/(2-2**(1.D0/3.D0) )
beta = 1.D0-2.D0*alpha
......@@ -173,7 +173,7 @@ subroutine init_splittings(split)
splits(10)%Vcoeffs(3) = beta
splits(10)%Vcoeffs(4) = alpha
! Another variant of symmetric with symmetric by Suzuki
! SS_5 4 Another variant of symmetric with symmetric by Suzuki
call createsplit(splits(11), 6, 6)
alpha = 1.D0/(4-4**(1.D0/3.D0) )
beta = 1 - 4*alpha
......@@ -192,7 +192,7 @@ subroutine init_splittings(split)
splits(11)%Vcoeffs(6) = splits(11)%Vcoeffs(2)
! fourth order method from Omelyan, 2001, previously discovered by McLachlan 1995
! S_5 4 fourth order method from Omelyan, 2001, previously discovered by McLachlan 1995
call createsplit(splits(12), 5, 5)
xi = 0.1720865590295143
lam = -0.09156203075515678
......@@ -255,7 +255,7 @@ subroutine init_splittings(split)
splits(beg + n)%Vcoeffs(tmpint) = 0
enddo
! the variant with m=2 optimized for large step sizes in Blanes 2014, 2. order
! SE_2 2 the variant with m=2 optimized for large step sizes in Blanes 2014, 2. order
call createsplit(splits(23), 3, 3)
splits(23)%Tcoeffs(1) = 0.21178
splits(23)%Tcoeffs(2) = (1.0 - 2.0*splits(23)%Tcoeffs(1))
......@@ -264,7 +264,7 @@ subroutine init_splittings(split)
splits(23)%Vcoeffs = 0.5
splits(23)%Vcoeffs(1) = 0.0
! the variant with m=3 optimized for large step sizes in Blanes 2014, 2. Order
! SE_3 2 the variant with m=3 optimized for large step sizes in Blanes 2014, 2. Order
call createsplit(splits(24), 4, 4)
alpha = 0.11888010966548
beta = 0.29619504261126
......@@ -278,7 +278,7 @@ subroutine init_splittings(split)
splits(24)%Vcoeffs(3) = 1.D0 - 2.D0*beta
splits(24)%Vcoeffs(4) = beta
! the variant with m=4 optimized for large step sizes in Blanes 2014, 2. Order
! SE_4 2 the variant with m=4 optimized for large step sizes in Blanes 2014, 2. Order
call createsplit(splits(25), 5, 5)
xi = 0.071353913450279725904
lam = 0.268548791161230105820
......@@ -296,8 +296,9 @@ subroutine init_splittings(split)
splits(25)%Vcoeffs(4) = splits(25)%Vcoeffs(3)
splits(25)%Vcoeffs(5) = splits(25)%Vcoeffs(2)
call createsplit(splits(26), 3, 3) !hermitian third order method with entirely complex coefficients
! , originally found by Suzuki 1990. Can be found in Blanes 2010
! CH_2 3 hermitian third order method with entirely complex coefficients,
! originally found by Suzuki 1990. Can be found in Blanes 2010
call createsplit(splits(26), 3, 3)
alpha = CMPLX(1.D0/2.D0, Sqrt(3.D0)/6.D0, kind=kind(0.D0))
splits(26)%Tcoeffs(1) = alpha/2.D0
splits(26)%Tcoeffs(2) = 1.D0/2.D0
......@@ -322,7 +323,7 @@ subroutine init_splittings(split)
splits(27)%Vcoeffs(4) = 1.D0/4.D0
splits(27)%Vcoeffs(5) = 1.D0/4.D0
! The optimized Order-4 method from here: http://www.gicas.uji.es/Research/splitting-complex.html
! CSR_4 4, The optimized Order-4 method from here: http://www.gicas.uji.es/Research/splitting-complex.html
call createsplit(splits(28), 5, 5)
splits(28)%Tcoeffs(1) = CMPLX(0.060078275263542357774, -0.060314841253378523039, kind=kind(0.D0))
......@@ -351,7 +352,7 @@ subroutine init_splittings(split)
splits(29)%Vcoeffs(3) = 0.2992014902086648372346181686254076026253
splits(29)%Vcoeffs(4) = 0.2007985097913351627653818313745923973747
! The order 6 method: http://www.gicas.uji.es/Research/splitting-complex.html
! CSR_16 6 The order 6 method: http://www.gicas.uji.es/Research/splitting-complex.html
call createsplit(splits(30), 17, 17)
splits(30)%Vcoeffs = 1.D0/16
splits(30)%Vcoeffs(1) = 0
......@@ -388,7 +389,7 @@ splits(30)%Tcoeffs(17) = splits(30)%Tcoeffs(1)
splits(31)%Vcoeffs(4) = beta
! My first own third order method, designed to be a hermitian sequence of Operators
! CHR_3 3 My first own third order method, designed to be a hermitian sequence of Operators
call createsplit(splits(32), 4, 4)
beta = 1.D0/3.D0
splits(32)%Tcoeffs(1) = 1.D0/24.D0*CMPLX(3.D0, -Sqrt(3.D0), dp)
......@@ -411,7 +412,7 @@ splits(30)%Tcoeffs(17) = splits(30)%Tcoeffs(1)
splits(33)%Vcoeffs(1) = 0.5
splits(33)%Vcoeffs(2) = 0.5
! H_5 4 hermitian splitting with positive b's designed by me
! CHR_5 4 hermitian splitting with positive b's designed by me
call createsplit(splits(34), 6, 6)
splits(34)%Tcoeffs(1) = CMPLX(0.077032770903379296850,-0.018324799648727332496, dp)
......@@ -428,7 +429,7 @@ splits(30)%Tcoeffs(17) = splits(30)%Tcoeffs(1)
splits(34)%Vcoeffs(5) = splits(34)%Vcoeffs(3)
splits(34)%Vcoeffs(6) = splits(34)%Vcoeffs(2)
! A hermitian fourth order method as given in Suzuki 1990
! CH_4 4 A hermitian fourth order method as given in Suzuki 1990
call createsplit(splits(35), 5, 5)
alpha = CMPLX(1.D0/2.D0, Sqrt(3.D0)/6.D0, kind=kind(0.D0))
beta = CMPLX(1.D0/2.D0, 0.2071067811865, dp)
......@@ -444,7 +445,7 @@ splits(30)%Tcoeffs(17) = splits(30)%Tcoeffs(1)
splits(35)%Vcoeffs(4) = beta*conjg(alpha)
splits(35)%Vcoeffs(5) = beta*alpha
! The real sixth order method from Blanes 2002
! S_10 6 The real sixth order method from Blanes 2002
call createsplit(splits(36), 11, 11)
splits(36)%Tcoeffs(1) = 0.0502627644003922
splits(36)%Tcoeffs(2) = 0.413514300428344
......@@ -475,7 +476,7 @@ splits(30)%Tcoeffs(17) = splits(30)%Tcoeffs(1)
splits(36)%Vcoeffs(10) = splits(36)%Vcoeffs(3)
splits(36)%Vcoeffs(11) = splits(36)%Vcoeffs(2)
! The phi(1,3) method in Hansen 2009
! CS_3 4 The phi(1,3) method in Hansen 2009
call createsplit(splits(37), 6, 6)
alpha = cmplx(0.3243964040201712, 0.1345862724908067, dp)
beta = 1.D0 - 2.D0*alpha
......@@ -521,7 +522,7 @@ splits(30)%Tcoeffs(17) = splits(30)%Tcoeffs(1)
splits(39)%Vcoeffs(4) = conjg(splits(39)%Vcoeffs(3))
splits(39)%Vcoeffs(5) = conjg(splits(39)%Vcoeffs(2))
! The hermitian fifth order method
! CHR_9 5 The hermitian fifth order method
call createsplit(splits(40), 10, 10)
splits(40)%Tcoeffs(1)=CMPLX(0.048475520387300861784614942150004872732496275960676605704430, &
& 0.004320853677325454041666651926455479652308652682908398349854853, dp)
......@@ -553,7 +554,7 @@ splits(30)%Tcoeffs(17) = splits(30)%Tcoeffs(1)
! The hermitian sixth order method
! CHR_15 6 The hermitian sixth order method
call createsplit(splits(41), 16, 16)
splits(41)%Tcoeffs(1)=CMPLX(0.095194656759747098611056828381842973876432181037008757210040895, &
&-0.03705839851161959800834474467108207397222103451188259084113901385692675627401, dp)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment