2 C This source code is part of
6 C Copyright (c) 1991-2000, University of Groningen, The Netherlands.
7 C Copyright (c) 2001-2009, The GROMACS Development Team
9 C Gromacs is a library for molecular simulation and trajectory analysis,
10 C written by Erik Lindahl, David van der Spoel, Berk Hess, and others - for
11 C a full list of developers and information, check out http://www.gromacs.org
13 C This program is free software; you can redistribute it and/or modify it under
14 C the terms of the GNU Lesser General Public License as published by the Free
15 C Software Foundation; either version 2 of the License, or (at your option) any
17 C As a special exception, you may use this file as part of a free software
18 C library without restriction. Specifically, if other files instantiate
19 C templates or use macros or inline functions from this file, or you compile
20 C this file and link it with other files to produce an executable, this
21 C file does not by itself cause the resulting executable to be covered by
22 C the GNU Lesser General Public License.
24 C In plain-speak: do not worry about classes/macros/templates either - only
25 C changes to the library have to be LGPL, not an application linking with it.
27 C To help fund GROMACS development, we humbly ask that you cite
28 C the papers people have written on it - you can find them on the website!
36 # define gmxreal real*8
38 # define gmxreal real*4
44 C Gromacs nonbonded kernel pwr6kernel322
45 C Coulomb interaction: Tabulated
46 C VdW interaction: Buckingham
47 C water optimization: pairs of SPC/TIP3P interactions
48 C Calculate forces: yes
50 subroutine pwr6kernel322(
83 integer*4 nri,iinr(*),jindex(*),jjnr(*),shift(*)
84 gmxreal shiftvec(*),fshift(*),pos(*),faction(*)
85 integer*4 gid(*),type(*),ntype
86 gmxreal charge(*),facel,krf,crf,Vc(*),vdwparam(*)
87 gmxreal Vvdw(*),tabscale,VFtab(*)
88 gmxreal invsqrta(*),dvda(*),gbtabscale,GBtab(*)
89 integer*4 nthreads,count,mtx,outeriter,inneriter
92 integer*4 n,ii,is3,ii3,k,nj0,nj1,jnr,j3,ggid
93 integer*4 nn0,nn1,nouter,ninner
95 gmxreal fscal,tx,ty,tz
97 gmxreal qq,vcoul,vctot
100 gmxreal Vvdw6,Vvdwtot
101 gmxreal r,rt,eps,eps2
103 gmxreal Y,F,Geps,Heps2,Fp,VV
107 gmxreal ix1,iy1,iz1,fix1,fiy1,fiz1
108 gmxreal ix2,iy2,iz2,fix2,fiy2,fiz2
109 gmxreal ix3,iy3,iz3,fix3,fiy3,fiz3
110 gmxreal jx1,jy1,jz1,fjx1,fjy1,fjz1
111 gmxreal jx2,jy2,jz2,fjx2,fjy2,fjz2
112 gmxreal jx3,jy3,jz3,fjx3,fjy3,fjz3
113 gmxreal dx11,dy11,dz11,rsq11,rinv11
114 gmxreal dx12,dy12,dz12,rsq12,rinv12
115 gmxreal dx13,dy13,dz13,rsq13,rinv13
116 gmxreal dx21,dy21,dz21,rsq21,rinv21
117 gmxreal dx22,dy22,dz22,rsq22,rinv22
118 gmxreal dx23,dy23,dz23,rsq23,rinv23
119 gmxreal dx31,dy31,dz31,rsq31,rinv31
120 gmxreal dx32,dy32,dz32,rsq32,rinv32
121 gmxreal dx33,dy33,dz33,rsq33,rinv33
122 gmxreal qO,qH,qqOO,qqOH,qqHH
123 gmxreal c6,cexp1,cexp2
126 C Initialize water data
133 tj = 3*(ntype+1)*type(ii)+1
135 cexp1 = vdwparam(tj+1)
136 cexp2 = vdwparam(tj+2)
139 C Reset outer and inner iteration counters
143 C Loop over thread workunits
144 10 call pwr6kernelsync(mtx,count,nri,nthreads,nn0,nn1)
145 if(nn1.gt.nri) nn1=nri
147 C Start outer loop over neighborlists
151 C Load shift vector for this list
154 shY = shiftvec(is3+1)
155 shZ = shiftvec(is3+2)
157 C Load limits for loop over neighbors
161 C Get outer coordinate index
165 C Load i atom data, add shift vector
166 ix1 = shX + pos(ii3+0)
167 iy1 = shY + pos(ii3+1)
168 iz1 = shZ + pos(ii3+2)
169 ix2 = shX + pos(ii3+3)
170 iy2 = shY + pos(ii3+4)
171 iz2 = shZ + pos(ii3+5)
172 ix3 = shX + pos(ii3+6)
173 iy3 = shY + pos(ii3+7)
174 iz3 = shZ + pos(ii3+8)
176 C Zero the potential energy for this list
180 C Clear i atom forces
193 C Get j neighbor index, and coordinate index
197 C load j atom coordinates
212 rsq11 = dx11*dx11+dy11*dy11+dz11*dz11
216 rsq12 = dx12*dx12+dy12*dy12+dz12*dz12
220 rsq13 = dx13*dx13+dy13*dy13+dz13*dz13
224 rsq21 = dx21*dx21+dy21*dy21+dz21*dz21
228 rsq22 = dx22*dx22+dy22*dy22+dz22*dz22
232 rsq23 = dx23*dx23+dy23*dy23+dz23*dz23
236 rsq31 = dx31*dx31+dy31*dy31+dz31*dz31
240 rsq32 = dx32*dx32+dy32*dy32+dz32*dz32
244 rsq33 = dx33*dx33+dy33*dy33+dz33*dz33
246 C Calculate 1/r and 1/r2
248 C PowerPC intrinsics 1/sqrt lookup table
250 rinv11 = frsqrtes(rsq11)
252 rinv11 = frsqrte(dble(rsq11))
254 rinv11 = (0.5*rinv11*(3.0-((rsq11*rinv11)
257 rinv11 = (0.5*rinv11*(3.0-((rsq11*rinv11)
261 C PowerPC intrinsics 1/sqrt lookup table
263 rinv12 = frsqrtes(rsq12)
265 rinv12 = frsqrte(dble(rsq12))
267 rinv12 = (0.5*rinv12*(3.0-((rsq12*rinv12)
270 rinv12 = (0.5*rinv12*(3.0-((rsq12*rinv12)
274 C PowerPC intrinsics 1/sqrt lookup table
276 rinv13 = frsqrtes(rsq13)
278 rinv13 = frsqrte(dble(rsq13))
280 rinv13 = (0.5*rinv13*(3.0-((rsq13*rinv13)
283 rinv13 = (0.5*rinv13*(3.0-((rsq13*rinv13)
287 C PowerPC intrinsics 1/sqrt lookup table
289 rinv21 = frsqrtes(rsq21)
291 rinv21 = frsqrte(dble(rsq21))
293 rinv21 = (0.5*rinv21*(3.0-((rsq21*rinv21)
296 rinv21 = (0.5*rinv21*(3.0-((rsq21*rinv21)
300 C PowerPC intrinsics 1/sqrt lookup table
302 rinv22 = frsqrtes(rsq22)
304 rinv22 = frsqrte(dble(rsq22))
306 rinv22 = (0.5*rinv22*(3.0-((rsq22*rinv22)
309 rinv22 = (0.5*rinv22*(3.0-((rsq22*rinv22)
313 C PowerPC intrinsics 1/sqrt lookup table
315 rinv23 = frsqrtes(rsq23)
317 rinv23 = frsqrte(dble(rsq23))
319 rinv23 = (0.5*rinv23*(3.0-((rsq23*rinv23)
322 rinv23 = (0.5*rinv23*(3.0-((rsq23*rinv23)
326 C PowerPC intrinsics 1/sqrt lookup table
328 rinv31 = frsqrtes(rsq31)
330 rinv31 = frsqrte(dble(rsq31))
332 rinv31 = (0.5*rinv31*(3.0-((rsq31*rinv31)
335 rinv31 = (0.5*rinv31*(3.0-((rsq31*rinv31)
339 C PowerPC intrinsics 1/sqrt lookup table
341 rinv32 = frsqrtes(rsq32)
343 rinv32 = frsqrte(dble(rsq32))
345 rinv32 = (0.5*rinv32*(3.0-((rsq32*rinv32)
348 rinv32 = (0.5*rinv32*(3.0-((rsq32*rinv32)
352 C PowerPC intrinsics 1/sqrt lookup table
354 rinv33 = frsqrtes(rsq33)
356 rinv33 = frsqrte(dble(rsq33))
358 rinv33 = (0.5*rinv33*(3.0-((rsq33*rinv33)
361 rinv33 = (0.5*rinv33*(3.0-((rsq33*rinv33)
365 C Load parameters for j atom
367 rinvsq = rinv11*rinv11
369 C Calculate table index
372 C Calculate table index
379 C Tabulated coulomb interaction
382 Geps = eps*VFtab(nnn+2)
383 Heps2 = eps2*VFtab(nnn+3)
386 FF = Fp+Geps+2.0*Heps2
389 vctot = vctot + vcoul
391 C Buckingham interaction
392 rinvsix = rinvsq*rinvsq*rinvsq
394 br = cexp2*rsq11*rinv11
395 Vvdwexp = cexp1*exp(-br)
396 Vvdwtot = Vvdwtot+Vvdwexp-Vvdw6
397 fscal = (br*Vvdwexp-6.0*Vvdw6)*rinvsq
398 & -((fijC)*tabscale)*rinv11
400 C Calculate temporary vectorial force
405 C Increment i atom force
410 C Decrement j atom force
411 fjx1 = faction(j3+0) - tx
412 fjy1 = faction(j3+1) - ty
413 fjz1 = faction(j3+2) - tz
415 C Load parameters for j atom
418 C Calculate table index
421 C Calculate table index
428 C Tabulated coulomb interaction
431 Geps = eps*VFtab(nnn+2)
432 Heps2 = eps2*VFtab(nnn+3)
435 FF = Fp+Geps+2.0*Heps2
438 vctot = vctot + vcoul
439 fscal = -((fijC)*tabscale)*rinv12
441 C Calculate temporary vectorial force
446 C Increment i atom force
451 C Decrement j atom force
452 fjx2 = faction(j3+3) - tx
453 fjy2 = faction(j3+4) - ty
454 fjz2 = faction(j3+5) - tz
456 C Load parameters for j atom
459 C Calculate table index
462 C Calculate table index
469 C Tabulated coulomb interaction
472 Geps = eps*VFtab(nnn+2)
473 Heps2 = eps2*VFtab(nnn+3)
476 FF = Fp+Geps+2.0*Heps2
479 vctot = vctot + vcoul
480 fscal = -((fijC)*tabscale)*rinv13
482 C Calculate temporary vectorial force
487 C Increment i atom force
492 C Decrement j atom force
493 fjx3 = faction(j3+6) - tx
494 fjy3 = faction(j3+7) - ty
495 fjz3 = faction(j3+8) - tz
497 C Load parameters for j atom
500 C Calculate table index
503 C Calculate table index
510 C Tabulated coulomb interaction
513 Geps = eps*VFtab(nnn+2)
514 Heps2 = eps2*VFtab(nnn+3)
517 FF = Fp+Geps+2.0*Heps2
520 vctot = vctot + vcoul
521 fscal = -((fijC)*tabscale)*rinv21
523 C Calculate temporary vectorial force
528 C Increment i atom force
533 C Decrement j atom force
538 C Load parameters for j atom
541 C Calculate table index
544 C Calculate table index
551 C Tabulated coulomb interaction
554 Geps = eps*VFtab(nnn+2)
555 Heps2 = eps2*VFtab(nnn+3)
558 FF = Fp+Geps+2.0*Heps2
561 vctot = vctot + vcoul
562 fscal = -((fijC)*tabscale)*rinv22
564 C Calculate temporary vectorial force
569 C Increment i atom force
574 C Decrement j atom force
579 C Load parameters for j atom
582 C Calculate table index
585 C Calculate table index
592 C Tabulated coulomb interaction
595 Geps = eps*VFtab(nnn+2)
596 Heps2 = eps2*VFtab(nnn+3)
599 FF = Fp+Geps+2.0*Heps2
602 vctot = vctot + vcoul
603 fscal = -((fijC)*tabscale)*rinv23
605 C Calculate temporary vectorial force
610 C Increment i atom force
615 C Decrement j atom force
620 C Load parameters for j atom
623 C Calculate table index
626 C Calculate table index
633 C Tabulated coulomb interaction
636 Geps = eps*VFtab(nnn+2)
637 Heps2 = eps2*VFtab(nnn+3)
640 FF = Fp+Geps+2.0*Heps2
643 vctot = vctot + vcoul
644 fscal = -((fijC)*tabscale)*rinv31
646 C Calculate temporary vectorial force
651 C Increment i atom force
656 C Decrement j atom force
657 faction(j3+0) = fjx1 - tx
658 faction(j3+1) = fjy1 - ty
659 faction(j3+2) = fjz1 - tz
661 C Load parameters for j atom
664 C Calculate table index
667 C Calculate table index
674 C Tabulated coulomb interaction
677 Geps = eps*VFtab(nnn+2)
678 Heps2 = eps2*VFtab(nnn+3)
681 FF = Fp+Geps+2.0*Heps2
684 vctot = vctot + vcoul
685 fscal = -((fijC)*tabscale)*rinv32
687 C Calculate temporary vectorial force
692 C Increment i atom force
697 C Decrement j atom force
698 faction(j3+3) = fjx2 - tx
699 faction(j3+4) = fjy2 - ty
700 faction(j3+5) = fjz2 - tz
702 C Load parameters for j atom
705 C Calculate table index
708 C Calculate table index
715 C Tabulated coulomb interaction
718 Geps = eps*VFtab(nnn+2)
719 Heps2 = eps2*VFtab(nnn+3)
722 FF = Fp+Geps+2.0*Heps2
725 vctot = vctot + vcoul
726 fscal = -((fijC)*tabscale)*rinv33
728 C Calculate temporary vectorial force
733 C Increment i atom force
738 C Decrement j atom force
739 faction(j3+6) = fjx3 - tx
740 faction(j3+7) = fjy3 - ty
741 faction(j3+8) = fjz3 - tz
743 C Inner loop uses 417 flops/iteration
747 C Add i forces to mem and shifted force list
748 faction(ii3+0) = faction(ii3+0) + fix1
749 faction(ii3+1) = faction(ii3+1) + fiy1
750 faction(ii3+2) = faction(ii3+2) + fiz1
751 faction(ii3+3) = faction(ii3+3) + fix2
752 faction(ii3+4) = faction(ii3+4) + fiy2
753 faction(ii3+5) = faction(ii3+5) + fiz2
754 faction(ii3+6) = faction(ii3+6) + fix3
755 faction(ii3+7) = faction(ii3+7) + fiy3
756 faction(ii3+8) = faction(ii3+8) + fiz3
757 fshift(is3) = fshift(is3)+fix1+fix2+fix3
758 fshift(is3+1) = fshift(is3+1)+fiy1+fiy2+fiy3
759 fshift(is3+2) = fshift(is3+2)+fiz1+fiz2+fiz3
761 C Add potential energies to the group for this list
763 Vc(ggid) = Vc(ggid) + vctot
764 Vvdw(ggid) = Vvdw(ggid) + Vvdwtot
766 C Increment number of inner iterations
767 ninner = ninner + nj1 - nj0
769 C Outer loop uses 29 flops/iteration
773 C Increment number of outer iterations
774 nouter = nouter + nn1 - nn0
775 if(nn1.lt.nri) goto 10
777 C Write outer/inner iteration count to pointers
789 C Gromacs nonbonded kernel pwr6kernel322nf
790 C Coulomb interaction: Tabulated
791 C VdW interaction: Buckingham
792 C water optimization: pairs of SPC/TIP3P interactions
793 C Calculate forces: no
795 subroutine pwr6kernel322nf(
828 integer*4 nri,iinr(*),jindex(*),jjnr(*),shift(*)
829 gmxreal shiftvec(*),fshift(*),pos(*),faction(*)
830 integer*4 gid(*),type(*),ntype
831 gmxreal charge(*),facel,krf,crf,Vc(*),vdwparam(*)
832 gmxreal Vvdw(*),tabscale,VFtab(*)
833 gmxreal invsqrta(*),dvda(*),gbtabscale,GBtab(*)
834 integer*4 nthreads,count,mtx,outeriter,inneriter
837 integer*4 n,ii,is3,ii3,k,nj0,nj1,jnr,j3,ggid
838 integer*4 nn0,nn1,nouter,ninner
841 gmxreal qq,vcoul,vctot
844 gmxreal Vvdw6,Vvdwtot
845 gmxreal r,rt,eps,eps2
847 gmxreal Y,F,Geps,Heps2,Fp,VV
855 gmxreal dx11,dy11,dz11,rsq11,rinv11
856 gmxreal dx12,dy12,dz12,rsq12,rinv12
857 gmxreal dx13,dy13,dz13,rsq13,rinv13
858 gmxreal dx21,dy21,dz21,rsq21,rinv21
859 gmxreal dx22,dy22,dz22,rsq22,rinv22
860 gmxreal dx23,dy23,dz23,rsq23,rinv23
861 gmxreal dx31,dy31,dz31,rsq31,rinv31
862 gmxreal dx32,dy32,dz32,rsq32,rinv32
863 gmxreal dx33,dy33,dz33,rsq33,rinv33
864 gmxreal qO,qH,qqOO,qqOH,qqHH
865 gmxreal c6,cexp1,cexp2
868 C Initialize water data
875 tj = 3*(ntype+1)*type(ii)+1
877 cexp1 = vdwparam(tj+1)
878 cexp2 = vdwparam(tj+2)
881 C Reset outer and inner iteration counters
885 C Loop over thread workunits
886 10 call pwr6kernelsync(mtx,count,nri,nthreads,nn0,nn1)
887 if(nn1.gt.nri) nn1=nri
889 C Start outer loop over neighborlists
893 C Load shift vector for this list
896 shY = shiftvec(is3+1)
897 shZ = shiftvec(is3+2)
899 C Load limits for loop over neighbors
903 C Get outer coordinate index
907 C Load i atom data, add shift vector
908 ix1 = shX + pos(ii3+0)
909 iy1 = shY + pos(ii3+1)
910 iz1 = shZ + pos(ii3+2)
911 ix2 = shX + pos(ii3+3)
912 iy2 = shY + pos(ii3+4)
913 iz2 = shZ + pos(ii3+5)
914 ix3 = shX + pos(ii3+6)
915 iy3 = shY + pos(ii3+7)
916 iz3 = shZ + pos(ii3+8)
918 C Zero the potential energy for this list
922 C Clear i atom forces
926 C Get j neighbor index, and coordinate index
930 C load j atom coordinates
945 rsq11 = dx11*dx11+dy11*dy11+dz11*dz11
949 rsq12 = dx12*dx12+dy12*dy12+dz12*dz12
953 rsq13 = dx13*dx13+dy13*dy13+dz13*dz13
957 rsq21 = dx21*dx21+dy21*dy21+dz21*dz21
961 rsq22 = dx22*dx22+dy22*dy22+dz22*dz22
965 rsq23 = dx23*dx23+dy23*dy23+dz23*dz23
969 rsq31 = dx31*dx31+dy31*dy31+dz31*dz31
973 rsq32 = dx32*dx32+dy32*dy32+dz32*dz32
977 rsq33 = dx33*dx33+dy33*dy33+dz33*dz33
979 C Calculate 1/r and 1/r2
981 C PowerPC intrinsics 1/sqrt lookup table
983 rinv11 = frsqrtes(rsq11)
985 rinv11 = frsqrte(dble(rsq11))
987 rinv11 = (0.5*rinv11*(3.0-((rsq11*rinv11)
990 rinv11 = (0.5*rinv11*(3.0-((rsq11*rinv11)
994 C PowerPC intrinsics 1/sqrt lookup table
996 rinv12 = frsqrtes(rsq12)
998 rinv12 = frsqrte(dble(rsq12))
1000 rinv12 = (0.5*rinv12*(3.0-((rsq12*rinv12)
1003 rinv12 = (0.5*rinv12*(3.0-((rsq12*rinv12)
1007 C PowerPC intrinsics 1/sqrt lookup table
1008 #ifndef GMX_BLUEGENE
1009 rinv13 = frsqrtes(rsq13)
1011 rinv13 = frsqrte(dble(rsq13))
1013 rinv13 = (0.5*rinv13*(3.0-((rsq13*rinv13)
1016 rinv13 = (0.5*rinv13*(3.0-((rsq13*rinv13)
1020 C PowerPC intrinsics 1/sqrt lookup table
1021 #ifndef GMX_BLUEGENE
1022 rinv21 = frsqrtes(rsq21)
1024 rinv21 = frsqrte(dble(rsq21))
1026 rinv21 = (0.5*rinv21*(3.0-((rsq21*rinv21)
1029 rinv21 = (0.5*rinv21*(3.0-((rsq21*rinv21)
1033 C PowerPC intrinsics 1/sqrt lookup table
1034 #ifndef GMX_BLUEGENE
1035 rinv22 = frsqrtes(rsq22)
1037 rinv22 = frsqrte(dble(rsq22))
1039 rinv22 = (0.5*rinv22*(3.0-((rsq22*rinv22)
1042 rinv22 = (0.5*rinv22*(3.0-((rsq22*rinv22)
1046 C PowerPC intrinsics 1/sqrt lookup table
1047 #ifndef GMX_BLUEGENE
1048 rinv23 = frsqrtes(rsq23)
1050 rinv23 = frsqrte(dble(rsq23))
1052 rinv23 = (0.5*rinv23*(3.0-((rsq23*rinv23)
1055 rinv23 = (0.5*rinv23*(3.0-((rsq23*rinv23)
1059 C PowerPC intrinsics 1/sqrt lookup table
1060 #ifndef GMX_BLUEGENE
1061 rinv31 = frsqrtes(rsq31)
1063 rinv31 = frsqrte(dble(rsq31))
1065 rinv31 = (0.5*rinv31*(3.0-((rsq31*rinv31)
1068 rinv31 = (0.5*rinv31*(3.0-((rsq31*rinv31)
1072 C PowerPC intrinsics 1/sqrt lookup table
1073 #ifndef GMX_BLUEGENE
1074 rinv32 = frsqrtes(rsq32)
1076 rinv32 = frsqrte(dble(rsq32))
1078 rinv32 = (0.5*rinv32*(3.0-((rsq32*rinv32)
1081 rinv32 = (0.5*rinv32*(3.0-((rsq32*rinv32)
1085 C PowerPC intrinsics 1/sqrt lookup table
1086 #ifndef GMX_BLUEGENE
1087 rinv33 = frsqrtes(rsq33)
1089 rinv33 = frsqrte(dble(rsq33))
1091 rinv33 = (0.5*rinv33*(3.0-((rsq33*rinv33)
1094 rinv33 = (0.5*rinv33*(3.0-((rsq33*rinv33)
1098 C Load parameters for j atom
1100 rinvsq = rinv11*rinv11
1102 C Calculate table index
1105 C Calculate table index
1112 C Tabulated coulomb interaction
1115 Geps = eps*VFtab(nnn+2)
1116 Heps2 = eps2*VFtab(nnn+3)
1120 vctot = vctot + vcoul
1122 C Buckingham interaction
1123 rinvsix = rinvsq*rinvsq*rinvsq
1125 br = cexp2*rsq11*rinv11
1126 Vvdwexp = cexp1*exp(-br)
1127 Vvdwtot = Vvdwtot+Vvdwexp-Vvdw6
1129 C Load parameters for j atom
1132 C Calculate table index
1135 C Calculate table index
1142 C Tabulated coulomb interaction
1145 Geps = eps*VFtab(nnn+2)
1146 Heps2 = eps2*VFtab(nnn+3)
1150 vctot = vctot + vcoul
1152 C Load parameters for j atom
1155 C Calculate table index
1158 C Calculate table index
1165 C Tabulated coulomb interaction
1168 Geps = eps*VFtab(nnn+2)
1169 Heps2 = eps2*VFtab(nnn+3)
1173 vctot = vctot + vcoul
1175 C Load parameters for j atom
1178 C Calculate table index
1181 C Calculate table index
1188 C Tabulated coulomb interaction
1191 Geps = eps*VFtab(nnn+2)
1192 Heps2 = eps2*VFtab(nnn+3)
1196 vctot = vctot + vcoul
1198 C Load parameters for j atom
1201 C Calculate table index
1204 C Calculate table index
1211 C Tabulated coulomb interaction
1214 Geps = eps*VFtab(nnn+2)
1215 Heps2 = eps2*VFtab(nnn+3)
1219 vctot = vctot + vcoul
1221 C Load parameters for j atom
1224 C Calculate table index
1227 C Calculate table index
1234 C Tabulated coulomb interaction
1237 Geps = eps*VFtab(nnn+2)
1238 Heps2 = eps2*VFtab(nnn+3)
1242 vctot = vctot + vcoul
1244 C Load parameters for j atom
1247 C Calculate table index
1250 C Calculate table index
1257 C Tabulated coulomb interaction
1260 Geps = eps*VFtab(nnn+2)
1261 Heps2 = eps2*VFtab(nnn+3)
1265 vctot = vctot + vcoul
1267 C Load parameters for j atom
1270 C Calculate table index
1273 C Calculate table index
1280 C Tabulated coulomb interaction
1283 Geps = eps*VFtab(nnn+2)
1284 Heps2 = eps2*VFtab(nnn+3)
1288 vctot = vctot + vcoul
1290 C Load parameters for j atom
1293 C Calculate table index
1296 C Calculate table index
1303 C Tabulated coulomb interaction
1306 Geps = eps*VFtab(nnn+2)
1307 Heps2 = eps2*VFtab(nnn+3)
1311 vctot = vctot + vcoul
1313 C Inner loop uses 269 flops/iteration
1317 C Add i forces to mem and shifted force list
1319 C Add potential energies to the group for this list
1321 Vc(ggid) = Vc(ggid) + vctot
1322 Vvdw(ggid) = Vvdw(ggid) + Vvdwtot
1324 C Increment number of inner iterations
1325 ninner = ninner + nj1 - nj0
1327 C Outer loop uses 11 flops/iteration
1331 C Increment number of outer iterations
1332 nouter = nouter + nn1 - nn0
1333 if(nn1.lt.nri) goto 10
1335 C Write outer/inner iteration count to pointers