-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqc_system.f90
106 lines (90 loc) · 3.77 KB
/
qc_system.f90
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
module qc_system
implicit none
!--- (JOB INFO) ---
integer, parameter :: job_id_ener = 0
integer, parameter :: job_id_engrad = 1
integer, parameter :: job_id_opt = 2
integer, parameter :: job_id_md = 3
integer, parameter :: job_id_freq = 4
integer, parameter :: job_id_rescale = 5
integer, parameter :: theory_id_scf = 0
integer, parameter :: theory_id_mp2 = 1
integer, parameter :: theory_id_ccsd = 2
integer, parameter :: theory_id_ccsd_pt = 3
integer, parameter :: embed_id_esp = 0
integer, parameter :: embed_id_dipole = 1
integer, parameter :: embed_id_atomdipole = 2
character(len=200) :: code, embedding_field, scratch_top, my_scratch
! optimizer options
integer, parameter :: opt_id_grad = 0
integer, parameter :: opt_id_lbfgs = 1
logical :: l_freezecell
integer :: optimizer_id
integer :: opt_maxiter
real*8 :: atom_gmax, lat_gmax
real*8, parameter :: delta_bohr = 1.0d-3
real*8, parameter :: delta_ang = delta_bohr*0.529177249d0
integer :: n_hess(3)
logical :: l_bq, l_grd, l_frq, l_opt, l_md, l_bsse
character(len=10) :: theory
integer :: theory_id, embed_id
! rescale info
real*8 :: rescale_param(6)
!--- (FRAGMENT) ---
integer :: nfrg
!--- (GEOM)---
integer :: natom, nmol
character(len=2), dimension(:), allocatable :: at_atnm
integer, dimension(:), allocatable :: mol_iatom, mol_nsite, mol_netcharge, mol_ichg, mol_nchg
real*8, dimension(:), allocatable :: at_mass
real*8, dimension(:,:), allocatable :: chg_pos, chg_pos_new, chg_coef
real*8, dimension(:,:), allocatable :: gm_pos, gm_pos_old !
real*8, dimension(:,:), allocatable :: d_rr, corr_d_rr !, d_rq ! gradient; AK : corr_d_rr - MP2 correction to gradient for MTS-MD
!real*8, dimension(:,:,:), allocatable :: d_mbq ! monomer d_bq
!real*8, dimension(:,:,:), allocatable :: d_mrr ! monomer d_rr
real*8, dimension(:,:), allocatable :: d_mr, corr_d_mr ! monomer d_rr
real*8, dimension(:,:), allocatable :: d_bq0
real*8, dimension(:,:), allocatable :: d_mbqi
real*8, dimension(:,:), allocatable :: d_mbqj
real*8 :: m_virt(3,3)
!--- (MD)----
integer :: nequil, nprod, nsave, nstep
real*8, dimension(:,:), allocatable :: vel
integer :: pstart, pend, pstep
real*8 :: temp0, pext0
real*8 :: dt, virt(3,3)
real*8, dimension(3,3) :: Pr, pmom2
integer :: maxnum_pair = 500
integer :: maxnum_bq = 8000
real*8 :: lat_a, lat_b, lat_c !M!
real*8 :: lat_alpha, lat_beta, lat_gamma !M!
integer :: lat_axis !M!
real*8, dimension(3,3) :: lat, lati, lat_old !M!
logical :: a_dim, b_dim, c_dim
real*8 :: rcut_qq2 ! rcut for QM-QM
real*8 :: rcut_bq2 ! rcut for QM-BQ
real*8 :: rcut_lr2 ! rcut for QM-LR !M!
!--- (BIM )--
!real*8, dimension(:), allocatable :: en_list
real*8 :: en_kin
! logical
logical :: ensemble_nvt
logical :: is_temp_tol
logical :: use_respa, xirespa, xorespa
character(len=120) :: fconfig
character(len=30) :: basis_type
character(len=30) :: jname
character(len=240) :: jcmd
! --- (Nose Hoover Method)---
! real*8, dimension(2) :: gnh, vnh, xnh, qmass
! real*8 :: ekin0, gfree0, glogv, vlogv, xlogv, pmass
!
real*8 :: time_system
real*8 :: ekin0, gfree0, glogv, vlogv, xlogv, pmass
integer :: nnos, nresn, nresp ! NRESP - number of multiple timesteps for Verlet
real*8, dimension(:), allocatable :: vnh, xnh, gnh, qmass ! thermostat coordinates, velocities and masses
integer, parameter :: nyosh = 3 ! order of Yoshida integrator
! w_i for Yoshida scheme
real*8, dimension(nyosh) :: wyosh = (/1.0/(2.0 - 2.0**(1.0/3.0)), 1.0 - 2.0 /(2.0 - 2.0**(1.0/3.0)), 1.0/(2.0 - 2.0**(1.0/3.0))/)
real*8, dimension(nyosh) :: wdti2, wdti4, wdti8
end module qc_system