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
2ee180f4
Commit
2ee180f4
authored
Nov 01, 2020
by
Florian Goth
Browse files
make method 32 configurable by one parameter
parent
3b3d9857
Pipeline
#9440
passed with stage
in 56 seconds
Changes
2
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
Prog/main.f90
View file @
2ee180f4
...
...
@@ -108,7 +108,7 @@ Program Main
Integer
::
Nwrap
,
NSweep
,
NBin
,
NBin_eff
,
Ltau
,
NSTM
,
NT
,
NT1
,
NVAR
,
LOBS_EN
,
LOBS_ST
,
NBC
,
NSW
,
split
,
nodes
Integer
::
NTAU
,
NTAU1
Real
(
Kind
=
Kind
(
0.d0
))
::
CPU_MAX
Real
(
Kind
=
Kind
(
0.d0
))
::
CPU_MAX
,
param
Character
(
len
=
64
)
::
file1
...
...
@@ -118,8 +118,9 @@ Program Main
#endif
! split is the variable that denotes the chosen splitting
! param is a parameter for the methods
! nodes denotes the number of integration nodes
NAMELIST
/
VAR_QMC
/
Nwrap
,
NSweep
,
NBin
,
Ltau
,
split
,
nodes
,
LOBS_EN
,
LOBS_ST
,
CPU_MAX
NAMELIST
/
VAR_QMC
/
Nwrap
,
NSweep
,
NBin
,
Ltau
,
split
,
param
,
nodes
,
LOBS_EN
,
LOBS_ST
,
CPU_MAX
Integer
::
Ierr
,
I
,
nf
,
nst
,
n
...
...
@@ -201,7 +202,7 @@ Program Main
CALL
MPI_BCAST
(
N_Tempering_frequency
,
1
,
MPI_INTEGER
,
0
,
MPI_COMM_WORLD
,
ierr
)
#endif
#endif
call
init_splittings
(
split
)
call
init_splittings
(
split
,
param
)
Call
Ham_set
Call
confin
...
...
Prog/splittings.f90
View file @
2ee180f4
...
...
@@ -40,13 +40,16 @@ end subroutine
!
! This routine initializes the database with the various splittings
!> @ param split this sets the chosensplitting. This is e.g. from a config file.
!> @param myparam a free param
subroutine
init_splittings
(
split
)
subroutine
init_splittings
(
split
,
myparam
)
Integer
,
intent
(
in
)
::
split
real
(
kind
=
kind
(
0.D0
)),
intent
(
in
)
::
myparam
integer
,
parameter
::
dp
=
kind
(
1.d0
)
Integer
::
nrofsplits
,
n
,
beg
,
tmpint
,
i
complex
(
kind
=
kind
(
0.D0
))
::
alpha
,
beta
,
xi
,
lam
,
chi
real
(
kind
=
kind
(
0.D0
))
::
ts
chosensplitting
=
split
nrofsplits
=
41
...
...
@@ -391,16 +394,16 @@ splits(30)%Tcoeffs(17) = splits(30)%Tcoeffs(1)
! 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
/
12.0
*
CMPLX
(
6+1
/(
beta
*
(
beta
-1
)),
-
Sqrt
((
2
*
beta
-1
)
*
(
-1+6
*
beta
*
(
beta
-1
)
**
2
))/(
beta
*
(
beta
-1
)),
dp
)
splits
(
32
)
%
Tcoeffs
(
2
)
=
1.D0
/(
12
*
beta
*
(
beta
-1.0
))
*
CMPLX
(
-1.0
,
sqrt
((
-1+6
*
beta
*
(
beta
-1
)
**
2
)/(
2
*
beta
-1.0
)),
dp
)
ts
=
myparam
splits
(
32
)
%
Tcoeffs
(
1
)
=
1.D0
/
12.0
*
CMPLX
(
6+1
/(
ts
*
(
ts
-1
)),
-
Sqrt
((
2
*
ts
-1
)
*
(
-1+6
*
ts
*
(
ts
-1
)
**
2
))/(
ts
*
(
ts
-1
)),
dp
)
splits
(
32
)
%
Tcoeffs
(
2
)
=
1.D0
/(
12
*
ts
*
(
ts
-1.0
))
*
CMPLX
(
-1.0
,
sqrt
((
-1+6
*
ts
*
(
ts
-1
)
**
2
)/(
2
*
ts
-1.0
)),
dp
)
splits
(
32
)
%
Tcoeffs
(
3
)
=
conjg
(
splits
(
32
)
%
Tcoeffs
(
2
))
splits
(
32
)
%
Tcoeffs
(
4
)
=
conjg
(
splits
(
32
)
%
Tcoeffs
(
1
))
splits
(
32
)
%
Vcoeffs
(
1
)
=
0.D0
splits
(
32
)
%
Vcoeffs
(
2
)
=
beta
splits
(
32
)
%
Vcoeffs
(
3
)
=
1.D0
-
2.D0
*
beta
splits
(
32
)
%
Vcoeffs
(
4
)
=
beta
splits
(
32
)
%
Vcoeffs
(
2
)
=
ts
splits
(
32
)
%
Vcoeffs
(
3
)
=
1.D0
-
2.D0
*
ts
splits
(
32
)
%
Vcoeffs
(
4
)
=
ts
! the variant with m=2 optimized for large step sizes in Blanes 2014, 2. order
! We try to exploit the trace property and reduce the computational effort.
...
...
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