forked from qutip/qutip
/
qutraj_run.pyf
133 lines (132 loc) · 7.29 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
130
131
132
133
! -*- 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 :: n_e_ops = 0
integer, optional :: n_c_ops = 0
integer, optional :: unravel_type = 2
logical, optional :: average_states = .true.
logical, optional :: average_expect = .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_result(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_result
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,show_progress) ! in :qutraj_run:qutraj_run.f90:qutraj_run
integer intent(in) :: instanceno
integer intent(in) :: rngseed
integer intent(in) :: show_progress
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