forked from arnelg/qutipf90mc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
qutraj_run.pyf
129 lines (128 loc) · 7.08 KB
/
qutraj_run.pyf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
! -*- f90 -*-
! Note: the context of this file is case sensitive.
python module qutraj_run ! in
interface ! in :qutraj_run
module qutraj_run ! in :qutraj_run:qutraj_run.f90
use qutraj_precision
use qutraj_general
use qutraj_hilbert
use qutraj_evolve
use qutraj_linalg
use mt19937
use linked_list
integer, optional :: ntraj=1
integer, optional :: unravel_type=2
logical, optional :: mc_avg = .true.
double precision, allocatable,dimension(:) :: tlist
integer, optional :: order=0
integer, optional :: nsteps=0
double precision, optional :: first_step=0
double precision, optional :: min_step=0
double precision, optional :: max_step=0
complex(kind=wp), allocatable,dimension(:) :: psi0
!integer, optional :: norm_steps=5
!real(kind=wp), optional :: norm_tol=0.001
logical, optional :: rho_return_sparse = .true.
complex(kind=wp), allocatable,dimension(:,:,:,:) :: sol
complex(kind=wp), allocatable,dimension(:) :: csr_val
integer, allocatable,dimension(:) :: csr_col
integer, allocatable,dimension(:) :: csr_ptr
integer :: csr_nrows
integer :: csr_ncols
real(kind=wp), allocatable,dimension(:) :: col_times
integer, allocatable,dimension(:) :: col_which
integer, allocatable,dimension(:) :: psi0_dims1
integer, allocatable,dimension(:) :: ptrace_sel
integer :: rho_reduced_dim
logical, optional :: calc_entropy = .false.
real(kind=wp), allocatable,dimension(:) :: reduced_state_entropy
subroutine init_tlist(val,n) ! in :qutraj_run:qutraj_run.f90:qutraj_run
use qutraj_precision
real(kind=wp) dimension(n),intent(in) :: val
integer, optional,intent(in),check(len(val)>=n),depend(val) :: n=len(val)
end subroutine init_tlist
subroutine init_psi0(val,n) ! in :qutraj_run:qutraj_run.f90:qutraj_run
use qutraj_precision
complex(kind=wp) dimension(n),intent(in) :: val
integer, optional,intent(in),check(len(val)>=n),depend(val) :: n=len(val)
end subroutine init_psi0
subroutine init_ptrace_stuff(dims,sel,reduced_dim,ndims,nsel) ! in :qutraj_run:qutraj_run.f90:qutraj_run
integer dimension(ndims),intent(in) :: dims
integer dimension(nsel),intent(in) :: sel
integer,intent(in) :: reduced_dim
integer, optional,intent(in),check(len(dims)>=ndims),depend(dims) :: ndims=len(dims)
integer, optional,intent(in),check(len(sel)>=nsel),depend(sel) :: nsel=len(sel)
end subroutine init_ptrace_stuff
subroutine init_hamiltonian(val,col,ptr,m,k,nnz,nptr) ! in :qutraj_run:qutraj_run.f90:qutraj_run
use qutraj_precision
complex(kind=wp) dimension(nnz),intent(in) :: val
integer dimension(nnz),intent(in),depend(nnz) :: col
integer dimension(nptr),intent(in) :: ptr
integer intent(in) :: m
integer intent(in) :: k
integer, optional,intent(in),check(len(val)>=nnz),depend(val) :: nnz=len(val)
integer, optional,intent(in),check(len(ptr)>=nptr),depend(ptr) :: nptr=len(ptr)
!integer intent(in) :: nnz
!integer intent(in) :: nptr
end subroutine init_hamiltonian
subroutine init_c_ops(i,n,val,col,ptr,m,k,first,nnz,nptr) ! in :qutraj_run:qutraj_run.f90:qutraj_run
use qutraj_precision
integer intent(in) :: i
integer intent(in) :: n
complex(kind=wp) dimension(nnz),intent(in) :: val
integer dimension(nnz),intent(in),depend(nnz) :: col
integer dimension(nptr),intent(in) :: ptr
integer intent(in) :: m
integer intent(in) :: k
integer, optional,intent(in),check(len(val)>=nnz),depend(val) :: nnz=len(val)
integer, optional,intent(in),check(len(ptr)>=nptr),depend(ptr) :: nptr=len(ptr)
logical, optional :: first
end subroutine init_c_ops
subroutine init_e_ops(i,n,val,col,ptr,m,k,first,nnz,nptr) ! in :qutraj_run:qutraj_run.f90:qutraj_run
use qutraj_precision
integer intent(in) :: i
integer intent(in) :: n
complex(kind=wp) dimension(nnz),intent(in) :: val
integer dimension(nnz),intent(in),depend(nnz) :: col
integer dimension(nptr),intent(in) :: ptr
integer intent(in) :: m
integer intent(in) :: k
integer, optional,intent(in),check(len(val)>=nnz),depend(val) :: nnz=len(val)
integer, optional,intent(in),check(len(ptr)>=nptr),depend(ptr) :: nptr=len(ptr)
logical, optional :: first
end subroutine init_e_ops
subroutine init_odedata(neq,atol,rtol,mf,norm_steps,norm_tol,lzw,lrw,liw,ml,mu,natol,nrtol) ! in :qutraj_run:qutraj_run.f90:qutraj_run
use qutraj_precision
integer intent(in) :: neq
double precision dimension(natol),intent(in) :: atol
double precision dimension(nrtol),intent(in) :: rtol
integer, optional,intent(in) :: mf = 0
integer, optional,intent(in) :: norm_steps = 0
real(kind=wp), optional,intent(in) :: norm_tol = 0.0
integer, optional,intent(in) :: lzw = 0
integer, optional,intent(in) :: lrw = 0
integer, optional,intent(in) :: liw = 0
integer, optional,intent(in) :: ml = 0
integer, optional,intent(in) :: mu = 0
integer, optional,intent(in),check(len(atol)>=natol),depend(atol) :: natol=len(atol)
integer, optional,intent(in),check(len(rtol)>=nrtol),depend(rtol) :: nrtol=len(rtol)
end subroutine init_odedata
subroutine get_rho_sparse(i)
integer intent(in) :: i
end subroutine get_rho_sparse
subroutine get_collapses(traj)
integer intent(in) :: traj
end subroutine get_collapses
subroutine evolve(instanceno,rngseed) ! in :qutraj_run:qutraj_run.f90:qutraj_run
integer intent(in) :: instanceno
integer intent(in) :: rngseed
end subroutine evolve
subroutine finalize_work ! in :qutraj_run:qutraj_run.f90:qutraj_run
end subroutine finalize_work
subroutine finalize_sol ! in :qutraj_run:qutraj_run.f90:qutraj_run
end subroutine finalize_sol
subroutine test_real_precision ! in :qutraj_run:qutraj_run.f90:qutraj_run
use qutraj_precision
end subroutine test_real_precision
end module qutraj_run
end python module qutraj_run