4
c This software is being made available for internal testing and
5
c evaluation purposes only. This software is a pre-release test version
6
c which has not yet been authenticated and cleared for publication. Adherence
7
c to this notice may be necessary for the author, Battelle Memorial
8
c Institute, to successfully assert copyright in and commercialize this
9
c software. This software is not intended for duplication or distribution
10
c to third parties without the permission of the Manager of Software
11
c Products at Pacific Northwest Laboratory, Richland, Washington, 99352.
14
#include "mafdecls.fh"
21
integer MAXNRG,MAXNB,MAXAT,MAXTIM
23
integer MD_MAXPROC,MAXBINS
24
parameter (MAXNRG=50, MAXNB=100)
25
parameter (MAXAT = 40000)
27
parameter (NSTES=1000)
28
parameter (MAXBINS = 2000)
29
parameter (MD_MAXPROC=1024)
31
c Arrays containing locally held atoms and their properties. atot is
32
c the total number of atoms and antot is the number of locally held
33
c atoms. aidx is an array containing the absolute atomic index of
34
c each locally held atom. at is an array containing an index to the
35
c atom type, and ra is an array containing the coordinates, velocities,
36
c and forces of each locally held atom. The array ra contains
37
c ra(i,j,1): periodic coordinates that all are within the
39
c ra(i,j,2): velocities
40
c ra(i,j,3): accelerations
41
c ra(i,j,4): forces (not including constraint forces)
43
c ra(i,j,6): absolute coordinates
44
c ra(i,j,7): complete forces from previous timestep
45
c ra(i,j,8): temporary storage to construct accelations with
48
common /syspar/ ra(MAXAT,3,8),mass(MAXAT),at(MAXAT),aidx(MAXAT),
50
double precision ra,mass
51
integer at,aidx,atot,antot
53
c Global array handles and utility arrays for moving data around
55
common /ga_data/ g_size, gsize_lo(0:MD_MAXPROC), gsize_hi,
56
+ g_coords, gcoords_lo(2,0:MD_MAXPROC),
58
+ g_frc, gfrc_lo(2,0:MD_MAXPROC), gfrc_hi(2),
59
+ g_acc, gacc_lo(2,0:MD_MAXPROC), gacc_hi(2),
60
+ g_index, gindex_lo(0:MD_MAXPROC), gindex_hi,
61
+ g_iat, giat_lo(2,0:MD_MAXPROC), giat_hi(2),
62
+ g_rvec, grvec_lo(0:MD_MAXPROC), grvec_hi
63
integer g_size, gsize_lo, gsize_hi, g_coords,gcoords_lo,
64
+ gcoords_hi, g_frc, gfrc_hi, gfrc_lo, g_acc, gacc_lo,
65
+ gacc_hi, g_index, gindex_lo, gindex_hi, g_iat, giat_hi,
66
+ giat_lo, g_rvec, grvec_lo, grvec_hi
67
common /md_par/ tau,dftmp,dfprs,dftm,dfpm,rsc(20,4),
68
+ tmprtr,prssr,tmass,pmass,tvol,tavg,tmstrt,
69
+ nsc,nstep,istep,ilist,dflalg,isc(20,4),istart,
70
+ istop,tmpflg,prsflg,ptflg,istat,itarg,itavg,
71
+ ipmode,iseed,mbflg,cmflg
72
double precision tau,dftmp,dfprs,dftm,dfpm,rsc,
73
+ tmprtr,prssr,tmass,pmass,tvol,tavg
74
integer tmstrt,nsc,nstep,istep,ilist,dflalg,isc
75
integer istart,istop,istat,itarg
76
integer itavg,ipmode,iseed
77
logical tmpflg,prsflg,ptflg,mbflg,cmflg
78
common /simpar/ xbox,ybox,zbox,xbox2,ybox2,zbox2,
79
+ vol1,vol2,vol3,scal1,scal2,scal3,
80
+ alen1(3),alen2(3),alen3(3)
81
double precision xbox,ybox,zbox,xbox2,ybox2,zbox2,
82
+ vol1,vol2,vol3,scal1,scal2,scal3,alen1,alen2,alen3
83
common /nrgpar/ nrg(MAXNRG),anrg(MAXNRG),anrg2(MAXNRG),
84
+ presf,presfx,presfy,presfz,esvr,esvd,esvoh,
85
+ esva,asev(MAXAT),nrgcnt,nrg2ct
86
double precision nrg,anrg,anrg2,presf,esvr,esvd,esvoh,esva,asev,
87
+ presfx,presfy,presfz
89
common /apars/ amass(50),e12(50,50),e6(50,50),
90
+ dcorr(50,50),rcorr(50,50),
91
+ frcorr(50,50),fdcorr(50,50),
92
+ rcut,acut(50,50),acut2(50,50),rcmax,icut,atnum
93
double precision amass,e12,e6,dcorr,rcorr,frcorr,fdcorr,acut,rcut,
96
common /md_timer/ tmstat(MAXTIM)
97
double precision tmstat
98
common /espar/ pmvac(NSTES),tmvac(NSTES),ipmvac(NSTES),
99
+ itmvac(NSTES),esinc,esstps,esflg
100
double precision pmvac,tmvac
101
integer ipmvac,itmvac,esinc,esstps
104
c coordinates of atoms that are not held locally are stored in xcrc,
105
c ycrd, zcrd, similarly, forces for atoms not held locally are stored
106
c in xfrc, yfrc, zfrc
108
common /md_buffer/xcrd(MAXAT),ycrd(MAXAT),zcrd(MAXAT),xfrc(MAXAT),
109
+ yfrc(MAXAT),zfrc(MAXAT),xacc(MAXAT),yacc(MAXAT),
110
+ zacc(MAXAT),mbuf(MAXAT),bidx(MAXAT),bat(MAXAT),
112
double precision xcrd,ycrd,zcrd,xfrc,yfrc,zfrc,xacc,yacc,zacc,mbuf
113
integer bidx,bat,btot,savtot
115
common /md_cell/rcell,kcmax,nix(2000),niy(2000),niz(2000)
116
double precision rcell
117
integer kcmax,nix,niy,niz
119
c the xgru, xgrd etc. buffers keep track of which atoms are within a
120
c cutoff distance of the upper (u) and lower (d) boundaries of the
121
c cell. The ygbu, ygbd etc. buffers keep track of which buffer atoms
122
c are within a cutoff distance of the boundaries (these buffers are
123
c not needed for the x-direction updates). The ygbu, etc. buffers are
124
c used in the gather routine. The ysbu, etc. buffers are used in a
125
c similar way in the scatter routine.
127
common /svlist/ xgru(MAXAT),xgrd(MAXAT),ygru(MAXAT),ygrd(MAXAT),
128
+ zgru(MAXAT),zgrd(MAXAT),
129
+ ygbu(MAXAT),ygbd(MAXAT),zgbu(MAXAT),zgbd(MAXAT),
130
+ xsbu(MAXAT),xsbd(MAXAT),ysbu(MAXAT),ysbd(MAXAT),
131
+ zsbu(MAXAT),zsbd(MAXAT),
133
+ ixgru,ixgrd,iygru,iygrd,izgru,izgrd,
134
+ iygbu,iygbd,izgbu,izgbd
135
integer xgru,xgrd,ygru,ygrd,zgru,zgrd,
136
+ ygbu,ygbd,zgbu,zgbd,
137
+ ixgru,ixgrd,iygru,iygrd,izgru,izgrd,
138
+ iygbu,iygbd,izgbu,izgbd,ixsbu,ixsbd,iysbu,iysbd,
140
logical xsbu,xsbd,ysbu,ysbd,zsbu,zsbd
143
common /neighbors/ nblist(MAXAT*MAXNB),nalast(MAXAT),
144
+ nblast(MAXAT),nafirst(MAXAT),nbfirst(MAXAT),
145
+ blist(3*MAXAT),balast(MAXAT),
146
+ bblast(MAXAT),bafirst(MAXAT),bbfirst(MAXAT)
147
integer nblist,nalast,nblast,nafirst,nbfirst
148
integer blist,balast,bblast,bafirst,bbfirst
150
common /clusterpar/ cl_cmx, cl_cmy, cl_cmz, r_cluster, cl_sep,
151
+ cl_vcmx, cl_vcmy, cl_vcmz,
152
+ cl_acmx, cl_acmy, cl_acmz,
153
+ cl_prssr, cl_mass, r_cluster_old,
154
+ cl_old(MAXAT,3,3), cl_cm_old(3),
155
+ cl_vcm_old(3), cl_vol1_old, cl_vol2_old,
156
+ cl_box_old(3), cl_alen1_old(3),
157
+ cl_alen2_old(3), cl_scal1_old, cl_scal2_old,
158
+ cl_at(MAXAT), cl_tot, ctot, nocluster
159
double precision cl_cmx, cl_cmy, cl_cmz, r_cluster, cl_sep,
160
+ cl_vcmx, cl_vcmy, cl_vcmz,
161
+ cl_acmx, cl_acmy, cl_acmz,
162
+ cl_prssr, cl_mass, cl_old, r_cluster_old,
163
+ cl_cm_old, cl_vcm_old, cl_vol1_old, cl_vol2_old,
164
+ cl_box_old, cl_alen1_old, cl_alen2_old,
165
+ cl_scal1_old, cl_scal2_old
166
integer cl_at, ctot, cl_tot
168
common /solventpar/ sl_old(MAXAT,3,3),sl_at(MAXAT),sl_tot
169
double precision sl_old
170
integer sl_at, sl_tot
171
common /equil_protocol/ r_confine, equil_1, equil_2, equil_3,
173
double precision r_confine
174
integer equil_1, equil_2, equil_3, window_1, window_2
175
common /cllsnpar/ mmass, cllsn_idx, l_cllsn, cllsn_cnt,
176
+ cllsn_isav, failcount
177
double precision mmass
178
integer cllsn_idx, cllsn_cnt, cllsn_isav, failcount
180
common /mcpar/ cl_lower, cl_upper, mc_step, mc_tmprtr, mc_dr,
181
+ r_distr(0:MAXBINS,10), r_cnt(10), mcbins, mcfreq,
183
double precision cl_lower, cl_upper, mc_step, mc_tmprtr, mc_dr
184
integer r_distr, r_cnt, mcbins, mcfreq, mc_cnt, mc_start
185
common /taskpar/ task_id, g_counter
186
integer task_id, g_counter
187
common /iopar/ l_stdio, l_rad, l_rst, l_step, l_oldcfg
188
logical l_stdio, l_rad, l_rst, l_step, l_oldcfg
189
common /adapt/ t_done, t_rmndr
190
double precision t_done, t_rmndr
191
common /hashpar/ link_a(MAXAT), top_a(MAXAT), hash_key_a(MAXAT),
192
+ hash_value_a(MAXAT), a_cnt
193
integer link_a, top_a, hash_key_a, hash_value_a, a_cnt