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 pwr6kernel334
45 C Coulomb interaction: Tabulated
46 C VdW interaction: Tabulated
47 C water optimization: pairs of TIP4P interactions
48 C Calculate forces: yes
50 subroutine pwr6kernel334(
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
96 gmxreal qq,vcoul,vctot
100 gmxreal r,rt,eps,eps2
102 gmxreal Y,F,Geps,Heps2,Fp,VV
106 gmxreal ix1,iy1,iz1,fix1,fiy1,fiz1
107 gmxreal ix2,iy2,iz2,fix2,fiy2,fiz2
108 gmxreal ix3,iy3,iz3,fix3,fiy3,fiz3
109 gmxreal ix4,iy4,iz4,fix4,fiy4,fiz4
111 gmxreal jx2,jy2,jz2,fjx2,fjy2,fjz2
112 gmxreal jx3,jy3,jz3,fjx3,fjy3,fjz3
113 gmxreal jx4,jy4,jz4,fjx4,fjy4,fjz4
114 gmxreal dx11,dy11,dz11,rsq11,rinv11
115 gmxreal dx22,dy22,dz22,rsq22,rinv22
116 gmxreal dx23,dy23,dz23,rsq23,rinv23
117 gmxreal dx24,dy24,dz24,rsq24,rinv24
118 gmxreal dx32,dy32,dz32,rsq32,rinv32
119 gmxreal dx33,dy33,dz33,rsq33,rinv33
120 gmxreal dx34,dy34,dz34,rsq34,rinv34
121 gmxreal dx42,dy42,dz42,rsq42,rinv42
122 gmxreal dx43,dy43,dz43,rsq43,rinv43
123 gmxreal dx44,dy44,dz44,rsq44,rinv44
124 gmxreal qH,qM,qqMM,qqMH,qqHH
128 C Initialize water data
135 tj = 2*(ntype+1)*type(ii)+1
140 C Reset outer and inner iteration counters
144 C Loop over thread workunits
145 10 call pwr6kernelsync(mtx,count,nri,nthreads,nn0,nn1)
146 if(nn1.gt.nri) nn1=nri
148 C Start outer loop over neighborlists
152 C Load shift vector for this list
155 shY = shiftvec(is3+1)
156 shZ = shiftvec(is3+2)
158 C Load limits for loop over neighbors
162 C Get outer coordinate index
166 C Load i atom data, add shift vector
167 ix1 = shX + pos(ii3+0)
168 iy1 = shY + pos(ii3+1)
169 iz1 = shZ + pos(ii3+2)
170 ix2 = shX + pos(ii3+3)
171 iy2 = shY + pos(ii3+4)
172 iz2 = shZ + pos(ii3+5)
173 ix3 = shX + pos(ii3+6)
174 iy3 = shY + pos(ii3+7)
175 iz3 = shZ + pos(ii3+8)
176 ix4 = shX + pos(ii3+9)
177 iy4 = shY + pos(ii3+10)
178 iz4 = shZ + pos(ii3+11)
180 C Zero the potential energy for this list
184 C Clear i atom forces
200 C Get j neighbor index, and coordinate index
204 C load j atom coordinates
222 rsq11 = dx11*dx11+dy11*dy11+dz11*dz11
226 rsq22 = dx22*dx22+dy22*dy22+dz22*dz22
230 rsq23 = dx23*dx23+dy23*dy23+dz23*dz23
234 rsq24 = dx24*dx24+dy24*dy24+dz24*dz24
238 rsq32 = dx32*dx32+dy32*dy32+dz32*dz32
242 rsq33 = dx33*dx33+dy33*dy33+dz33*dz33
246 rsq34 = dx34*dx34+dy34*dy34+dz34*dz34
250 rsq42 = dx42*dx42+dy42*dy42+dz42*dz42
254 rsq43 = dx43*dx43+dy43*dy43+dz43*dz43
258 rsq44 = dx44*dx44+dy44*dy44+dz44*dz44
260 C Calculate 1/r and 1/r2
262 C PowerPC intrinsics 1/sqrt lookup table
264 rinv11 = frsqrtes(rsq11)
266 rinv11 = frsqrte(dble(rsq11))
268 rinv11 = (0.5*rinv11*(3.0-((rsq11*rinv11)
271 rinv11 = (0.5*rinv11*(3.0-((rsq11*rinv11)
275 C PowerPC intrinsics 1/sqrt lookup table
277 rinv22 = frsqrtes(rsq22)
279 rinv22 = frsqrte(dble(rsq22))
281 rinv22 = (0.5*rinv22*(3.0-((rsq22*rinv22)
284 rinv22 = (0.5*rinv22*(3.0-((rsq22*rinv22)
288 C PowerPC intrinsics 1/sqrt lookup table
290 rinv23 = frsqrtes(rsq23)
292 rinv23 = frsqrte(dble(rsq23))
294 rinv23 = (0.5*rinv23*(3.0-((rsq23*rinv23)
297 rinv23 = (0.5*rinv23*(3.0-((rsq23*rinv23)
301 C PowerPC intrinsics 1/sqrt lookup table
303 rinv24 = frsqrtes(rsq24)
305 rinv24 = frsqrte(dble(rsq24))
307 rinv24 = (0.5*rinv24*(3.0-((rsq24*rinv24)
310 rinv24 = (0.5*rinv24*(3.0-((rsq24*rinv24)
314 C PowerPC intrinsics 1/sqrt lookup table
316 rinv32 = frsqrtes(rsq32)
318 rinv32 = frsqrte(dble(rsq32))
320 rinv32 = (0.5*rinv32*(3.0-((rsq32*rinv32)
323 rinv32 = (0.5*rinv32*(3.0-((rsq32*rinv32)
327 C PowerPC intrinsics 1/sqrt lookup table
329 rinv33 = frsqrtes(rsq33)
331 rinv33 = frsqrte(dble(rsq33))
333 rinv33 = (0.5*rinv33*(3.0-((rsq33*rinv33)
336 rinv33 = (0.5*rinv33*(3.0-((rsq33*rinv33)
340 C PowerPC intrinsics 1/sqrt lookup table
342 rinv34 = frsqrtes(rsq34)
344 rinv34 = frsqrte(dble(rsq34))
346 rinv34 = (0.5*rinv34*(3.0-((rsq34*rinv34)
349 rinv34 = (0.5*rinv34*(3.0-((rsq34*rinv34)
353 C PowerPC intrinsics 1/sqrt lookup table
355 rinv42 = frsqrtes(rsq42)
357 rinv42 = frsqrte(dble(rsq42))
359 rinv42 = (0.5*rinv42*(3.0-((rsq42*rinv42)
362 rinv42 = (0.5*rinv42*(3.0-((rsq42*rinv42)
366 C PowerPC intrinsics 1/sqrt lookup table
368 rinv43 = frsqrtes(rsq43)
370 rinv43 = frsqrte(dble(rsq43))
372 rinv43 = (0.5*rinv43*(3.0-((rsq43*rinv43)
375 rinv43 = (0.5*rinv43*(3.0-((rsq43*rinv43)
379 C PowerPC intrinsics 1/sqrt lookup table
381 rinv44 = frsqrtes(rsq44)
383 rinv44 = frsqrte(dble(rsq44))
385 rinv44 = (0.5*rinv44*(3.0-((rsq44*rinv44)
388 rinv44 = (0.5*rinv44*(3.0-((rsq44*rinv44)
392 C Load parameters for j atom
394 C Calculate table index
397 C Calculate table index
404 C Tabulated VdW interaction - dispersion
408 Geps = eps*VFtab(nnn+2)
409 Heps2 = eps2*VFtab(nnn+3)
412 FF = Fp+Geps+2.0*Heps2
416 C Tabulated VdW interaction - repulsion
420 Geps = eps*VFtab(nnn+2)
421 Heps2 = eps2*VFtab(nnn+3)
424 FF = Fp+Geps+2.0*Heps2
427 Vvdwtot = Vvdwtot+ Vvdw6 + Vvdw12
428 fscal = -((fijD+fijR)*tabscale)*rinv11
430 C Calculate temporary vectorial force
435 C Increment i atom force
440 C Decrement j atom force
441 faction(j3+0) = faction(j3+0) - tx
442 faction(j3+1) = faction(j3+1) - ty
443 faction(j3+2) = faction(j3+2) - tz
445 C Load parameters for j atom
448 C Calculate table index
451 C Calculate table index
458 C Tabulated coulomb interaction
461 Geps = eps*VFtab(nnn+2)
462 Heps2 = eps2*VFtab(nnn+3)
465 FF = Fp+Geps+2.0*Heps2
468 vctot = vctot + vcoul
469 fscal = -((fijC)*tabscale)*rinv22
471 C Calculate temporary vectorial force
476 C Increment i atom force
481 C Decrement j atom force
482 fjx2 = faction(j3+3) - tx
483 fjy2 = faction(j3+4) - ty
484 fjz2 = faction(j3+5) - tz
486 C Load parameters for j atom
489 C Calculate table index
492 C Calculate table index
499 C Tabulated coulomb interaction
502 Geps = eps*VFtab(nnn+2)
503 Heps2 = eps2*VFtab(nnn+3)
506 FF = Fp+Geps+2.0*Heps2
509 vctot = vctot + vcoul
510 fscal = -((fijC)*tabscale)*rinv23
512 C Calculate temporary vectorial force
517 C Increment i atom force
522 C Decrement j atom force
523 fjx3 = faction(j3+6) - tx
524 fjy3 = faction(j3+7) - ty
525 fjz3 = faction(j3+8) - tz
527 C Load parameters for j atom
530 C Calculate table index
533 C Calculate table index
540 C Tabulated coulomb interaction
543 Geps = eps*VFtab(nnn+2)
544 Heps2 = eps2*VFtab(nnn+3)
547 FF = Fp+Geps+2.0*Heps2
550 vctot = vctot + vcoul
551 fscal = -((fijC)*tabscale)*rinv24
553 C Calculate temporary vectorial force
558 C Increment i atom force
563 C Decrement j atom force
564 fjx4 = faction(j3+9) - tx
565 fjy4 = faction(j3+10) - ty
566 fjz4 = faction(j3+11) - tz
568 C Load parameters for j atom
571 C Calculate table index
574 C Calculate table index
581 C Tabulated coulomb interaction
584 Geps = eps*VFtab(nnn+2)
585 Heps2 = eps2*VFtab(nnn+3)
588 FF = Fp+Geps+2.0*Heps2
591 vctot = vctot + vcoul
592 fscal = -((fijC)*tabscale)*rinv32
594 C Calculate temporary vectorial force
599 C Increment i atom force
604 C Decrement j atom force
609 C Load parameters for j atom
612 C Calculate table index
615 C Calculate table index
622 C Tabulated coulomb interaction
625 Geps = eps*VFtab(nnn+2)
626 Heps2 = eps2*VFtab(nnn+3)
629 FF = Fp+Geps+2.0*Heps2
632 vctot = vctot + vcoul
633 fscal = -((fijC)*tabscale)*rinv33
635 C Calculate temporary vectorial force
640 C Increment i atom force
645 C Decrement j atom force
650 C Load parameters for j atom
653 C Calculate table index
656 C Calculate table index
663 C Tabulated coulomb interaction
666 Geps = eps*VFtab(nnn+2)
667 Heps2 = eps2*VFtab(nnn+3)
670 FF = Fp+Geps+2.0*Heps2
673 vctot = vctot + vcoul
674 fscal = -((fijC)*tabscale)*rinv34
676 C Calculate temporary vectorial force
681 C Increment i atom force
686 C Decrement j atom force
691 C Load parameters for j atom
694 C Calculate table index
697 C Calculate table index
704 C Tabulated coulomb interaction
707 Geps = eps*VFtab(nnn+2)
708 Heps2 = eps2*VFtab(nnn+3)
711 FF = Fp+Geps+2.0*Heps2
714 vctot = vctot + vcoul
715 fscal = -((fijC)*tabscale)*rinv42
717 C Calculate temporary vectorial force
722 C Increment i atom force
727 C Decrement j atom force
728 faction(j3+3) = fjx2 - tx
729 faction(j3+4) = fjy2 - ty
730 faction(j3+5) = fjz2 - tz
732 C Load parameters for j atom
735 C Calculate table index
738 C Calculate table index
745 C Tabulated coulomb interaction
748 Geps = eps*VFtab(nnn+2)
749 Heps2 = eps2*VFtab(nnn+3)
752 FF = Fp+Geps+2.0*Heps2
755 vctot = vctot + vcoul
756 fscal = -((fijC)*tabscale)*rinv43
758 C Calculate temporary vectorial force
763 C Increment i atom force
768 C Decrement j atom force
769 faction(j3+6) = fjx3 - tx
770 faction(j3+7) = fjy3 - ty
771 faction(j3+8) = fjz3 - tz
773 C Load parameters for j atom
776 C Calculate table index
779 C Calculate table index
786 C Tabulated coulomb interaction
789 Geps = eps*VFtab(nnn+2)
790 Heps2 = eps2*VFtab(nnn+3)
793 FF = Fp+Geps+2.0*Heps2
796 vctot = vctot + vcoul
797 fscal = -((fijC)*tabscale)*rinv44
799 C Calculate temporary vectorial force
804 C Increment i atom force
809 C Decrement j atom force
810 faction(j3+9) = fjx4 - tx
811 faction(j3+10) = fjy4 - ty
812 faction(j3+11) = fjz4 - tz
814 C Inner loop uses 433 flops/iteration
818 C Add i forces to mem and shifted force list
819 faction(ii3+0) = faction(ii3+0) + fix1
820 faction(ii3+1) = faction(ii3+1) + fiy1
821 faction(ii3+2) = faction(ii3+2) + fiz1
822 faction(ii3+3) = faction(ii3+3) + fix2
823 faction(ii3+4) = faction(ii3+4) + fiy2
824 faction(ii3+5) = faction(ii3+5) + fiz2
825 faction(ii3+6) = faction(ii3+6) + fix3
826 faction(ii3+7) = faction(ii3+7) + fiy3
827 faction(ii3+8) = faction(ii3+8) + fiz3
828 faction(ii3+9) = faction(ii3+9) + fix4
829 faction(ii3+10) = faction(ii3+10) + fiy4
830 faction(ii3+11) = faction(ii3+11) + fiz4
831 fshift(is3) = fshift(is3)+fix1+fix2+fix3+fix4
832 fshift(is3+1) = fshift(is3+1)+fiy1+fiy2+fiy3+fiy4
833 fshift(is3+2) = fshift(is3+2)+fiz1+fiz2+fiz3+fiz4
835 C Add potential energies to the group for this list
837 Vc(ggid) = Vc(ggid) + vctot
838 Vvdw(ggid) = Vvdw(ggid) + Vvdwtot
840 C Increment number of inner iterations
841 ninner = ninner + nj1 - nj0
843 C Outer loop uses 38 flops/iteration
847 C Increment number of outer iterations
848 nouter = nouter + nn1 - nn0
849 if(nn1.lt.nri) goto 10
851 C Write outer/inner iteration count to pointers
863 C Gromacs nonbonded kernel pwr6kernel334nf
864 C Coulomb interaction: Tabulated
865 C VdW interaction: Tabulated
866 C water optimization: pairs of TIP4P interactions
867 C Calculate forces: no
869 subroutine pwr6kernel334nf(
902 integer*4 nri,iinr(*),jindex(*),jjnr(*),shift(*)
903 gmxreal shiftvec(*),fshift(*),pos(*),faction(*)
904 integer*4 gid(*),type(*),ntype
905 gmxreal charge(*),facel,krf,crf,Vc(*),vdwparam(*)
906 gmxreal Vvdw(*),tabscale,VFtab(*)
907 gmxreal invsqrta(*),dvda(*),gbtabscale,GBtab(*)
908 integer*4 nthreads,count,mtx,outeriter,inneriter
911 integer*4 n,ii,is3,ii3,k,nj0,nj1,jnr,j3,ggid
912 integer*4 nn0,nn1,nouter,ninner
914 gmxreal qq,vcoul,vctot
916 gmxreal Vvdw6,Vvdwtot
918 gmxreal r,rt,eps,eps2
920 gmxreal Y,F,Geps,Heps2,Fp,VV
929 gmxreal dx11,dy11,dz11,rsq11,rinv11
930 gmxreal dx22,dy22,dz22,rsq22,rinv22
931 gmxreal dx23,dy23,dz23,rsq23,rinv23
932 gmxreal dx24,dy24,dz24,rsq24,rinv24
933 gmxreal dx32,dy32,dz32,rsq32,rinv32
934 gmxreal dx33,dy33,dz33,rsq33,rinv33
935 gmxreal dx34,dy34,dz34,rsq34,rinv34
936 gmxreal dx42,dy42,dz42,rsq42,rinv42
937 gmxreal dx43,dy43,dz43,rsq43,rinv43
938 gmxreal dx44,dy44,dz44,rsq44,rinv44
939 gmxreal qH,qM,qqMM,qqMH,qqHH
943 C Initialize water data
950 tj = 2*(ntype+1)*type(ii)+1
955 C Reset outer and inner iteration counters
959 C Loop over thread workunits
960 10 call pwr6kernelsync(mtx,count,nri,nthreads,nn0,nn1)
961 if(nn1.gt.nri) nn1=nri
963 C Start outer loop over neighborlists
967 C Load shift vector for this list
970 shY = shiftvec(is3+1)
971 shZ = shiftvec(is3+2)
973 C Load limits for loop over neighbors
977 C Get outer coordinate index
981 C Load i atom data, add shift vector
982 ix1 = shX + pos(ii3+0)
983 iy1 = shY + pos(ii3+1)
984 iz1 = shZ + pos(ii3+2)
985 ix2 = shX + pos(ii3+3)
986 iy2 = shY + pos(ii3+4)
987 iz2 = shZ + pos(ii3+5)
988 ix3 = shX + pos(ii3+6)
989 iy3 = shY + pos(ii3+7)
990 iz3 = shZ + pos(ii3+8)
991 ix4 = shX + pos(ii3+9)
992 iy4 = shY + pos(ii3+10)
993 iz4 = shZ + pos(ii3+11)
995 C Zero the potential energy for this list
999 C Clear i atom forces
1003 C Get j neighbor index, and coordinate index
1007 C load j atom coordinates
1021 C Calculate distance
1025 rsq11 = dx11*dx11+dy11*dy11+dz11*dz11
1029 rsq22 = dx22*dx22+dy22*dy22+dz22*dz22
1033 rsq23 = dx23*dx23+dy23*dy23+dz23*dz23
1037 rsq24 = dx24*dx24+dy24*dy24+dz24*dz24
1041 rsq32 = dx32*dx32+dy32*dy32+dz32*dz32
1045 rsq33 = dx33*dx33+dy33*dy33+dz33*dz33
1049 rsq34 = dx34*dx34+dy34*dy34+dz34*dz34
1053 rsq42 = dx42*dx42+dy42*dy42+dz42*dz42
1057 rsq43 = dx43*dx43+dy43*dy43+dz43*dz43
1061 rsq44 = dx44*dx44+dy44*dy44+dz44*dz44
1063 C Calculate 1/r and 1/r2
1065 C PowerPC intrinsics 1/sqrt lookup table
1066 #ifndef GMX_BLUEGENE
1067 rinv11 = frsqrtes(rsq11)
1069 rinv11 = frsqrte(dble(rsq11))
1071 rinv11 = (0.5*rinv11*(3.0-((rsq11*rinv11)
1074 rinv11 = (0.5*rinv11*(3.0-((rsq11*rinv11)
1078 C PowerPC intrinsics 1/sqrt lookup table
1079 #ifndef GMX_BLUEGENE
1080 rinv22 = frsqrtes(rsq22)
1082 rinv22 = frsqrte(dble(rsq22))
1084 rinv22 = (0.5*rinv22*(3.0-((rsq22*rinv22)
1087 rinv22 = (0.5*rinv22*(3.0-((rsq22*rinv22)
1091 C PowerPC intrinsics 1/sqrt lookup table
1092 #ifndef GMX_BLUEGENE
1093 rinv23 = frsqrtes(rsq23)
1095 rinv23 = frsqrte(dble(rsq23))
1097 rinv23 = (0.5*rinv23*(3.0-((rsq23*rinv23)
1100 rinv23 = (0.5*rinv23*(3.0-((rsq23*rinv23)
1104 C PowerPC intrinsics 1/sqrt lookup table
1105 #ifndef GMX_BLUEGENE
1106 rinv24 = frsqrtes(rsq24)
1108 rinv24 = frsqrte(dble(rsq24))
1110 rinv24 = (0.5*rinv24*(3.0-((rsq24*rinv24)
1113 rinv24 = (0.5*rinv24*(3.0-((rsq24*rinv24)
1117 C PowerPC intrinsics 1/sqrt lookup table
1118 #ifndef GMX_BLUEGENE
1119 rinv32 = frsqrtes(rsq32)
1121 rinv32 = frsqrte(dble(rsq32))
1123 rinv32 = (0.5*rinv32*(3.0-((rsq32*rinv32)
1126 rinv32 = (0.5*rinv32*(3.0-((rsq32*rinv32)
1130 C PowerPC intrinsics 1/sqrt lookup table
1131 #ifndef GMX_BLUEGENE
1132 rinv33 = frsqrtes(rsq33)
1134 rinv33 = frsqrte(dble(rsq33))
1136 rinv33 = (0.5*rinv33*(3.0-((rsq33*rinv33)
1139 rinv33 = (0.5*rinv33*(3.0-((rsq33*rinv33)
1143 C PowerPC intrinsics 1/sqrt lookup table
1144 #ifndef GMX_BLUEGENE
1145 rinv34 = frsqrtes(rsq34)
1147 rinv34 = frsqrte(dble(rsq34))
1149 rinv34 = (0.5*rinv34*(3.0-((rsq34*rinv34)
1152 rinv34 = (0.5*rinv34*(3.0-((rsq34*rinv34)
1156 C PowerPC intrinsics 1/sqrt lookup table
1157 #ifndef GMX_BLUEGENE
1158 rinv42 = frsqrtes(rsq42)
1160 rinv42 = frsqrte(dble(rsq42))
1162 rinv42 = (0.5*rinv42*(3.0-((rsq42*rinv42)
1165 rinv42 = (0.5*rinv42*(3.0-((rsq42*rinv42)
1169 C PowerPC intrinsics 1/sqrt lookup table
1170 #ifndef GMX_BLUEGENE
1171 rinv43 = frsqrtes(rsq43)
1173 rinv43 = frsqrte(dble(rsq43))
1175 rinv43 = (0.5*rinv43*(3.0-((rsq43*rinv43)
1178 rinv43 = (0.5*rinv43*(3.0-((rsq43*rinv43)
1182 C PowerPC intrinsics 1/sqrt lookup table
1183 #ifndef GMX_BLUEGENE
1184 rinv44 = frsqrtes(rsq44)
1186 rinv44 = frsqrte(dble(rsq44))
1188 rinv44 = (0.5*rinv44*(3.0-((rsq44*rinv44)
1191 rinv44 = (0.5*rinv44*(3.0-((rsq44*rinv44)
1195 C Load parameters for j atom
1197 C Calculate table index
1200 C Calculate table index
1207 C Tabulated VdW interaction - dispersion
1211 Geps = eps*VFtab(nnn+2)
1212 Heps2 = eps2*VFtab(nnn+3)
1217 C Tabulated VdW interaction - repulsion
1221 Geps = eps*VFtab(nnn+2)
1222 Heps2 = eps2*VFtab(nnn+3)
1226 Vvdwtot = Vvdwtot+ Vvdw6 + Vvdw12
1228 C Load parameters for j atom
1231 C Calculate table index
1234 C Calculate table index
1241 C Tabulated coulomb interaction
1244 Geps = eps*VFtab(nnn+2)
1245 Heps2 = eps2*VFtab(nnn+3)
1249 vctot = vctot + vcoul
1251 C Load parameters for j atom
1254 C Calculate table index
1257 C Calculate table index
1264 C Tabulated coulomb interaction
1267 Geps = eps*VFtab(nnn+2)
1268 Heps2 = eps2*VFtab(nnn+3)
1272 vctot = vctot + vcoul
1274 C Load parameters for j atom
1277 C Calculate table index
1280 C Calculate table index
1287 C Tabulated coulomb interaction
1290 Geps = eps*VFtab(nnn+2)
1291 Heps2 = eps2*VFtab(nnn+3)
1295 vctot = vctot + vcoul
1297 C Load parameters for j atom
1300 C Calculate table index
1303 C Calculate table index
1310 C Tabulated coulomb interaction
1313 Geps = eps*VFtab(nnn+2)
1314 Heps2 = eps2*VFtab(nnn+3)
1318 vctot = vctot + vcoul
1320 C Load parameters for j atom
1323 C Calculate table index
1326 C Calculate table index
1333 C Tabulated coulomb interaction
1336 Geps = eps*VFtab(nnn+2)
1337 Heps2 = eps2*VFtab(nnn+3)
1341 vctot = vctot + vcoul
1343 C Load parameters for j atom
1346 C Calculate table index
1349 C Calculate table index
1356 C Tabulated coulomb interaction
1359 Geps = eps*VFtab(nnn+2)
1360 Heps2 = eps2*VFtab(nnn+3)
1364 vctot = vctot + vcoul
1366 C Load parameters for j atom
1369 C Calculate table index
1372 C Calculate table index
1379 C Tabulated coulomb interaction
1382 Geps = eps*VFtab(nnn+2)
1383 Heps2 = eps2*VFtab(nnn+3)
1387 vctot = vctot + vcoul
1389 C Load parameters for j atom
1392 C Calculate table index
1395 C Calculate table index
1402 C Tabulated coulomb interaction
1405 Geps = eps*VFtab(nnn+2)
1406 Heps2 = eps2*VFtab(nnn+3)
1410 vctot = vctot + vcoul
1412 C Load parameters for j atom
1415 C Calculate table index
1418 C Calculate table index
1425 C Tabulated coulomb interaction
1428 Geps = eps*VFtab(nnn+2)
1429 Heps2 = eps2*VFtab(nnn+3)
1433 vctot = vctot + vcoul
1435 C Inner loop uses 268 flops/iteration
1439 C Add i forces to mem and shifted force list
1441 C Add potential energies to the group for this list
1443 Vc(ggid) = Vc(ggid) + vctot
1444 Vvdw(ggid) = Vvdw(ggid) + Vvdwtot
1446 C Increment number of inner iterations
1447 ninner = ninner + nj1 - nj0
1449 C Outer loop uses 14 flops/iteration
1453 C Increment number of outer iterations
1454 nouter = nouter + nn1 - nn0
1455 if(nn1.lt.nri) goto 10
1457 C Write outer/inner iteration count to pointers