1c
2c
3c     ###################################################
4c     ##  COPYRIGHT (C)  2017  by  Jay William Ponder  ##
5c     ##              All Rights Reserved              ##
6c     ###################################################
7c
8c     ##############################################################
9c     ##                                                          ##
10c     ##  subroutine ommdata  --  transfer Tinker data to OpenMM  ##
11c     ##                                                          ##
12c     ##############################################################
13c
14c
15c     "ommdata" uses calls to the OpenMM interface to copy data
16c     from Tinker modules to the corresponding OpenMM structures
17c
18c
19      subroutine ommdata ()
20      use angbnd
21      use angpot
22      use angtor
23      use atomid
24      use atoms
25      use bath
26      use bitor
27      use bndpot
28      use bndstr
29      use bound
30      use boxes
31      use cell
32      use charge
33      use chgpot
34      use couple
35      use deriv
36      use energi
37      use ewald
38      use freeze
39      use group
40      use imptor
41      use inform
42      use ktrtor
43      use kvdwpr
44      use kvdws
45      use limits
46      use mdstuf
47      use molcul
48      use moldyn
49      use mplpot
50      use mpole
51      use mutant
52      use nonpol
53      use opbend
54      use openmm
55      use pitors
56      use pme
57      use polar
58      use polgrp
59      use polopt
60      use polpot
61      use potent
62      use restrn
63      use sizes
64      use solpot
65      use solute
66      use stodyn
67      use strbnd
68      use strtor
69      use torpot
70      use tors
71      use tortor
72      use units
73      use urey
74      use urypot
75      use usage
76      use vdw
77      use vdwpot
78      implicit none
79c
80c
81c     use C++ interface calls to map Tinker variables to OpenMM
82c
83      call set_angbnd_data (nangle,iang,ak,anat,afld)
84      call set_angpot_data (angunit,stbnunit,aaunit,opbunit,opdunit,
85     &                      cang,qang,pang,sang,copb,qopb,popb,sopb,
86     &                      copd,qopd,popd,sopd,opbtyp,angtyp)
87      call set_angtor_data (nangtor,iat,kant)
88      call set_atomid_data (tag,class,atomic,valence,mass,name,story)
89      call set_atoms_data (n,type,x,y,z)
90      call set_bath_data (maxnose,voltrial,kelvin,atmsph,tautemp,
91     &                    taupres,compress,collide,eta,volmove,vbar,
92     &                    qbar,gbar,vnh,qnh,gnh,isothermal,isobaric,
93     &                    anisotrop,volscale,barostat,thermostat)
94      call set_bitor_data (nbitor,ibitor)
95      call set_bndpot_data (cbnd,qbnd,bndunit,bndtyp)
96      call set_bndstr_data (nbond,ibnd,bk,bl)
97      call set_bound_data (polycut,polycut2,use_bounds,use_replica,
98     &                     use_polymer)
99      call set_boxes_data (xbox,ybox,zbox,alpha,beta,gamma,xbox2,
100     &                     ybox2,zbox2,box23,volbox,alpha_sin,alpha_cos,
101     &                     beta_sin,beta_cos,gamma_sin,gamma_cos,
102     &                     beta_term,gamma_term,lvec,recip,orthogonal,
103     &                     monoclinic,triclinic,octahedron,dodecadron,
104     &                     nonprism,spacegrp)
105      call set_cell_data (ncell,icell,xcell,ycell,zcell,
106     &                    xcell2,ycell2,zcell2)
107      call set_charge_data (nion,iion,jion,kion,pchg)
108      call set_chgpot_data (electric,dielec,ebuffer,c2scale,c3scale,
109     &                      c4scale,c5scale,neutnbr,neutcut)
110      call set_couple_data (n12,n13,n14,n15,i12,i13,i14,i15)
111      call set_deriv_data (desum,deb,dea,deba,deub,deaa,deopb,deopd,
112     &                     deid,deit,det,dept,debt,deat,dett,dev,der,
113     &                     dedsp,dec,decd,ded,dem,dep,dect,derxf,
114     &                     des,delf,deg,dex)
115      call set_energi_data (esum,eb,ea,eba,eub,eaa,eopb,eopd,eid,eit,
116     &                      et,ept,ebt,eat,ett,ev,er,edsp,ec,ecd,ed,
117     &                      em,ep,ect,erxf,es,elf,eg,ex)
118      call set_ewald_data (aewald,aeewald,apewald,adewald,boundary)
119      call set_freeze_data (nrat,nratx,iratx,kratx,irat,rateps,
120     &                      krat,use_rattle,ratimage)
121      call set_group_data (ngrp,kgrp,grplist,igrp,grpmass,wgrp,
122     &                     use_group,use_intra,use_inter)
123      call set_imptor_data (nitors,iitors,itors1,itors2,itors3)
124      call set_inform_data (maxask,digits,iprint,iwrite,isend,
125     &                      silent,verbose,debug,holdup,abort)
126      call set_ktrtor_data (maxntt,maxtgrd,maxtgrd2,tnx,tny,
127     &                      ttx,tty,tbf,tbx,tby,tbxy,ktt)
128      call set_kvdwpr_data (maxnvp,radpr,epspr,kvpr)
129      call set_kvdws_data (rad,eps,rad4,eps4,reduct)
130      call set_limits_data (vdwcut,repcut,dispcut,chgcut,dplcut,
131     &                      mpolecut,ctrncut,vdwtaper,reptaper,
132     &                      disptaper,chgtaper,dpltaper,mpoletaper,
133     &                      ctrntaper,ewaldcut,dewaldcut,usolvcut,
134     &                      use_ewald,use_dewald,use_lights,use_list,
135     &                      use_vlist,use_dlist,use_clist,use_mlist,
136     &                      use_ulist)
137      call set_mdstuf_data (nfree,irest,bmnmix,arespa,dorest,integrate)
138      call set_molcul_data (nmol,imol,kmol,molcule,totmass,molmass)
139      call set_moldyn_data (v,a,aalt)
140      call set_mplpot_data (m2scale,m3scale,m4scale,m5scale,use_chgpen)
141      call set_mpole_data (maxpole,npole,ipole,polsiz,pollist,
142     &                     zaxis,xaxis,yaxis,pole,rpole,spole,
143     &                     srpole,polaxe)
144      call set_mutant_data (nmut,vcouple,imut,type0,class0,type1,
145     &                      class1,lambda,tlambda,vlambda,elambda,
146     &                      scexp,scalpha,mut)
147      call set_nonpol_data (epso,epsh,rmino,rminh,awater,slevy,
148     &                      solvprs,surften,spcut,spoff,stcut,
149     &                      stoff,rcav,rdisp,cdisp)
150      call set_opbend_data (nopbend,iopb,opbk)
151      call set_openmm_data (ommHandle,cudaPrecision,
152     &                      ommPlatform,cudaDevice)
153      call set_pitors_data (npitors,ipit,kpit)
154      call set_pme_data (nfft1,nfft2,nfft3,nefft1,nefft2,nefft3,ndfft1,
155     &                   ndfft2,ndfft3,bsorder,bseorder,bsporder,
156     7                   bsdorder,igrid,bsmod1,bsmod2,bsmod3,bsbuild,
157     &                   thetai1,thetai2,thetai3,qgrid,qfac)
158      call set_polar_data (npolar,ipolar,polarity,thole,dirdamp,pdamp,
159     &                     udir,udirp,udirs,udirps,uind,uinp,uinds,
160     &                     uinps,uexact,douind)
161      call set_polgrp_data (maxp11,maxp12,maxp13,maxp14,np11,
162     &                      np12,np13,np14,ip11,ip12,ip13,ip14)
163      call set_polopt_data (maxopt,optorder,optlevel,copt,copm,
164     &                      uopt,uoptp,uopts,uoptps,fopt,foptp)
165      call set_polpot_data (politer,poleps,p2scale,p3scale,p4scale,
166     &                      p5scale,p2iscale,p3iscale,p4iscale,p5iscale,
167     &                      d1scale,d2scale,d3scale,d4scale,u1scale,
168     &                      u2scale,u3scale,u4scale,w2scale,w3scale,
169     &                      w4scale,w5scale,udiag,polprt,dpequal,
170     &                      use_thole,use_dirdamp,poltyp)
171      call set_potent_data (use_bond,use_angle,use_strbnd,use_urey,
172     &                      use_angang,use_opbend,use_opdist,use_improp,
173     &                      use_imptor,use_tors,use_pitors,use_strtor,
174     &                      use_angtor,use_tortor,use_vdw,use_repuls,
175     &                      use_disp,use_charge,use_chgdpl,use_dipole,
176     &                      use_mpole,use_polar,use_chgtrn,use_chgflx,
177     &                      use_rxnfld,use_solv,use_metal,use_geom,
178     &                      use_extra,use_born,use_orbit)
179      call set_restrn_data (npfix,ndfix,nafix,ntfix,ngfix,nchir,ipfix,
180     &                      kpfix,idfix,iafix,itfix,igfix,ichir,depth,
181     &                      width,rwall,xpfix,ypfix,zpfix,pfix,dfix,
182     &                      afix,tfix,gfix,chir,use_basin,use_wall)
183      call set_sizes_data (maxatm,maxtyp,maxclass,maxval,maxref,
184     &                     maxgrp,maxres,maxfix)
185      call set_solpot_data (solvtyp,borntyp)
186      call set_solute_data (doffset,p1,p2,p3,p4,p5,rsolv,asolv,rborn,
187     &                      drb,drbp,drobc,gpol,shct,aobc,bobc,gobc,
188     &                      vsolv,wace,s2ace,uace)
189      call set_stodyn_data (friction,fgamma,use_sdarea)
190      call set_strbnd_data (nstrbnd,isb,sbk)
191      call set_strtor_data (nstrtor,ist,kst)
192      call set_torpot_data (idihunit,itorunit,torsunit,ptorunit,
193     &                      storunit,atorunit,ttorunit)
194      call set_tors_data (ntors,itors,tors1,tors2,tors3,
195     &                    tors4,tors5,tors6)
196      call set_tortor_data (ntortor,itt)
197      call set_units_data (avogadro,lightspd,boltzmann,gasconst,elemchg,
198     &                     vacperm,emass,planck,joule,ekcal,bohr,
199     &                     hartree,evolt,efreq,coulomb,debye,prescon)
200      call set_urey_data (nurey,iury,uk,ul)
201      call set_urypot_data (cury,qury,ureyunit)
202      call set_usage_data (nuse,iuse,use)
203      call set_vdw_data (nvdw,ivdw,jvdw,ired,kred,xred,yred,zred,radmin,
204     &                   epsilon,radmin4,epsilon4,radhbnd,epshbnd)
205      call set_vdwpot_data (maxgauss,ngauss,igauss,abuck,bbuck,cbuck,
206     &                      ghal,dhal,v2scale,v3scale,v4scale,v5scale,
207     &                      use_vcorr,vdwindex,radtyp,radsiz,gausstyp,
208     &                      radrule,epsrule,vdwtyp)
209      return
210      end
211