Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Florian Goth
splitALF
Commits
4795e123
Commit
4795e123
authored
Mar 21, 2020
by
Florian Goth
Browse files
fix more methods
parent
03c5cade
Pipeline
#6829
passed with stage
in 1 minute and 25 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Prog/splittings.f90
View file @
4795e123
...
...
@@ -66,11 +66,12 @@ subroutine init_splittings(split)
splits
(
2
)
%
Vcoeffs
(
1
)
=
1.0
!T-V-T leapfrog
call
createsplit
(
splits
(
3
),
2
,
1
)
call
createsplit
(
splits
(
3
),
2
,
2
)
splits
(
3
)
%
Tcoeffs
(
1
)
=
0.5
splits
(
3
)
%
Tcoeffs
(
2
)
=
0.5
splits
(
3
)
%
Vcoeffs
(
1
)
=
1.0
splits
(
3
)
%
Vcoeffs
(
1
)
=
0.0
splits
(
3
)
%
Vcoeffs
(
2
)
=
1.0
!V-T-V leapfrog
call
createsplit
(
splits
(
4
),
2
,
2
)
...
...
@@ -87,9 +88,9 @@ subroutine init_splittings(split)
splits
(
5
)
%
Tcoeffs
(
2
)
=
(
1.0
-
2
*
0.1931833275037836
)
splits
(
5
)
%
Tcoeffs
(
3
)
=
0.1931833275037836
splits
(
5
)
%
Vcoeffs
(
1
)
=
0.
5
splits
(
5
)
%
Vcoeffs
(
1
)
=
0.
0
splits
(
5
)
%
Vcoeffs
(
2
)
=
0.5
splits
(
5
)
%
Vcoeffs
(
3
)
=
0.
0
splits
(
5
)
%
Vcoeffs
(
3
)
=
0.
5
! S_6 4 from http://personales.upv.es/serblaza/2011EncyclopediaSplittingMethods.pdf
...
...
@@ -166,10 +167,10 @@ subroutine init_splittings(split)
splits
(
10
)
%
Tcoeffs
(
3
)
=
splits
(
10
)
%
Tcoeffs
(
2
)
splits
(
10
)
%
Tcoeffs
(
4
)
=
splits
(
10
)
%
Tcoeffs
(
1
)
splits
(
10
)
%
Vcoeffs
(
1
)
=
alpha
splits
(
10
)
%
Vcoeffs
(
2
)
=
bet
a
splits
(
10
)
%
Vcoeffs
(
3
)
=
alph
a
splits
(
10
)
%
Vcoeffs
(
4
)
=
0.0
splits
(
10
)
%
Vcoeffs
(
1
)
=
0.0
splits
(
10
)
%
Vcoeffs
(
2
)
=
alph
a
splits
(
10
)
%
Vcoeffs
(
3
)
=
bet
a
splits
(
10
)
%
Vcoeffs
(
4
)
=
alpha
! Another variant of symmetric with symmetric by Suzuki
call
createsplit
(
splits
(
11
),
6
,
6
)
...
...
@@ -270,10 +271,10 @@ subroutine init_splittings(split)
splits
(
24
)
%
Tcoeffs
(
3
)
=
splits
(
24
)
%
Tcoeffs
(
2
)
splits
(
24
)
%
Tcoeffs
(
4
)
=
splits
(
24
)
%
Tcoeffs
(
1
)
splits
(
24
)
%
Vcoeffs
(
1
)
=
beta
splits
(
24
)
%
Vcoeffs
(
2
)
=
1.D0
-
2.D0
*
beta
splits
(
24
)
%
Vcoeffs
(
3
)
=
beta
splits
(
24
)
%
Vcoeffs
(
4
)
=
0.D0
splits
(
24
)
%
Vcoeffs
(
1
)
=
0.0
splits
(
24
)
%
Vcoeffs
(
2
)
=
beta
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
call
createsplit
(
splits
(
25
),
5
,
5
)
...
...
@@ -287,21 +288,22 @@ subroutine init_splittings(split)
splits
(
25
)
%
Tcoeffs
(
4
)
=
splits
(
25
)
%
Tcoeffs
(
2
)
splits
(
25
)
%
Tcoeffs
(
5
)
=
splits
(
25
)
%
Tcoeffs
(
1
)
splits
(
25
)
%
Vcoeffs
(
1
)
=
chi
splits
(
25
)
%
Vcoeffs
(
2
)
=
1.D0
/
2.D0
-
chi
splits
(
25
)
%
Vcoeffs
(
3
)
=
splits
(
25
)
%
Vcoeffs
(
2
)
splits
(
25
)
%
Vcoeffs
(
4
)
=
splits
(
25
)
%
Vcoeffs
(
1
)
splits
(
25
)
%
Vcoeffs
(
5
)
=
0.D0
splits
(
25
)
%
Vcoeffs
(
1
)
=
0.0
splits
(
25
)
%
Vcoeffs
(
2
)
=
chi
splits
(
25
)
%
Vcoeffs
(
3
)
=
1.D0
/
2.D0
-
chi
splits
(
25
)
%
Vcoeffs
(
4
)
=
splits
(
25
)
%
Vcoeffs
(
3
)
splits
(
25
)
%
Vcoeffs
(
5
)
=
splits
(
25
)
%
Vcoeffs
(
2
)
call
createsplit
(
splits
(
26
),
3
,
2
)
!hermitian third order method with entirely complex coefficients
call
createsplit
(
splits
(
26
),
3
,
3
)
!hermitian third order method with entirely complex coefficients
, find the paper by Blanes I think...
alpha
=
CMPLX
(
1.D0
/
2.D0
,
Sqrt
(
3.D0
)/
6.D0
,
kind
=
kind
(
0.D0
))
beta
=
1.D0
-
alpha
splits
(
26
)
%
Tcoeffs
(
1
)
=
alpha
/
2.D0
splits
(
26
)
%
Tcoeffs
(
2
)
=
1.D0
/
2.D0
splits
(
26
)
%
Tcoeffs
(
3
)
=
conjg
(
splits
(
26
)
%
Tcoeffs
(
1
))
splits
(
26
)
%
Vcoeffs
(
1
)
=
alpha
splits
(
26
)
%
Vcoeffs
(
2
)
=
conjg
(
alpha
)
splits
(
26
)
%
Vcoeffs
(
1
)
=
0.0
splits
(
26
)
%
Vcoeffs
(
2
)
=
alpha
splits
(
26
)
%
Vcoeffs
(
3
)
=
conjg
(
alpha
)
! The simple Order-4 method from here: http://www.gicas.uji.es/Research/splitting-complex.html
call
createsplit
(
splits
(
27
),
5
,
5
)
...
...
@@ -312,10 +314,8 @@ subroutine init_splittings(split)
splits
(
27
)
%
Tcoeffs
(
4
)
=
CMPLX
(
4.D0
/
15
,
+2.D0
/
15
,
kind
=
kind
(
0.D0
))
splits
(
27
)
%
Tcoeffs
(
5
)
=
CMPLX
(
1.D0
/
10
,
-1.D0
/
30
,
kind
=
kind
(
0.D0
))
splits
(
27
)
%
Vcoeffs
(
1
)
=
1.D0
/
4.D0
splits
(
27
)
%
Vcoeffs
(
2
)
=
1.D0
/
4.D0
splits
(
27
)
%
Vcoeffs
(
3
)
=
1.D0
/
4.D0
splits
(
27
)
%
Vcoeffs
(
4
)
=
1.D0
/
4.D0
splits
(
27
)
%
Vcoeffs
(
1
)
=
0.0
splits
(
27
)
%
Vcoeffs
=
1.D0
/
4.D0
! The optimized Order-4 method from here: http://www.gicas.uji.es/Research/splitting-complex.html
call
createsplit
(
splits
(
28
),
5
,
5
)
...
...
@@ -350,6 +350,7 @@ subroutine init_splittings(split)
call
createsplit
(
splits
(
30
),
17
,
17
)
splits
(
30
)
%
Vcoeffs
=
1.D0
/
16
splits
(
30
)
%
Vcoeffs
(
1
)
=
0
splits
(
30
)
%
Tcoeffs
(
1
)
=
CMPLX
(
0.0246948760870180646409108649968422478386
,
-0.0078747955629068770581715779495269421632
,
dp
)
splits
(
30
)
%
Tcoeffs
(
2
)
=
CMPLX
(
0.0638134740213026997793663041882001469632
,
0.0353657610341433278046294046497147418127
,
dp
)
splits
(
30
)
%
Tcoeffs
(
3
)
=
CMPLX
(
0.0684250940303164419703970078217446840585
,
-0.0622622444507486769953325406444475960461
,
dp
)
...
...
@@ -371,8 +372,8 @@ splits(30)%Tcoeffs(17) = splits(30)%Tcoeffs(1)
! My first own second order method, designed to be a hermitian sequence of Operators
call
createsplit
(
splits
(
31
),
4
,
4
)
beta
=
1.D0
/
3.D0
splits
(
31
)
%
Tcoeffs
(
1
)
=
CMPLX
(
1.D0
/
4
,
-1.D0
/
6.D0
,
dp
)
splits
(
31
)
%
Tcoeffs
(
2
)
=
CMPLX
(
1.D0
/
4
,
1.D0
/
2.D0
,
dp
)
splits
(
31
)
%
Tcoeffs
(
1
)
=
CMPLX
(
1.D0
/
4
.D0
,
-1.D0
/
6.D0
,
dp
)
splits
(
31
)
%
Tcoeffs
(
2
)
=
CMPLX
(
1.D0
/
4
.D0
,
1.D0
/
2.D0
,
dp
)
splits
(
31
)
%
Tcoeffs
(
3
)
=
conjg
(
splits
(
31
)
%
Tcoeffs
(
2
))
splits
(
31
)
%
Tcoeffs
(
4
)
=
conjg
(
splits
(
31
)
%
Tcoeffs
(
1
))
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment