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 pwr6kernel324
45 C Coulomb interaction: Tabulated
46 C VdW interaction: Buckingham
47 C water optimization: pairs of TIP4P interactions
48 C Calculate forces: yes
50 subroutine pwr6kernel324(
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 ix4,iy4,iz4,fix4,fiy4,fiz4
112 gmxreal jx2,jy2,jz2,fjx2,fjy2,fjz2
113 gmxreal jx3,jy3,jz3,fjx3,fjy3,fjz3
114 gmxreal jx4,jy4,jz4,fjx4,fjy4,fjz4
115 gmxreal dx11,dy11,dz11,rsq11,rinv11
116 gmxreal dx22,dy22,dz22,rsq22,rinv22
117 gmxreal dx23,dy23,dz23,rsq23,rinv23
118 gmxreal dx24,dy24,dz24,rsq24,rinv24
119 gmxreal dx32,dy32,dz32,rsq32,rinv32
120 gmxreal dx33,dy33,dz33,rsq33,rinv33
121 gmxreal dx34,dy34,dz34,rsq34,rinv34
122 gmxreal dx42,dy42,dz42,rsq42,rinv42
123 gmxreal dx43,dy43,dz43,rsq43,rinv43
124 gmxreal dx44,dy44,dz44,rsq44,rinv44
125 gmxreal qH,qM,qqMM,qqMH,qqHH
126 gmxreal c6,cexp1,cexp2
129 C Initialize water data
136 tj = 3*(ntype+1)*type(ii)+1
138 cexp1 = vdwparam(tj+1)
139 cexp2 = vdwparam(tj+2)
142 C Reset outer and inner iteration counters
146 C Loop over thread workunits
147 10 call pwr6kernelsync(mtx,count,nri,nthreads,nn0,nn1)
148 if(nn1.gt.nri) nn1=nri
150 C Start outer loop over neighborlists
154 C Load shift vector for this list
157 shY = shiftvec(is3+1)
158 shZ = shiftvec(is3+2)
160 C Load limits for loop over neighbors
164 C Get outer coordinate index
168 C Load i atom data, add shift vector
169 ix1 = shX + pos(ii3+0)
170 iy1 = shY + pos(ii3+1)
171 iz1 = shZ + pos(ii3+2)
172 ix2 = shX + pos(ii3+3)
173 iy2 = shY + pos(ii3+4)
174 iz2 = shZ + pos(ii3+5)
175 ix3 = shX + pos(ii3+6)
176 iy3 = shY + pos(ii3+7)
177 iz3 = shZ + pos(ii3+8)
178 ix4 = shX + pos(ii3+9)
179 iy4 = shY + pos(ii3+10)
180 iz4 = shZ + pos(ii3+11)
182 C Zero the potential energy for this list
186 C Clear i atom forces
202 C Get j neighbor index, and coordinate index
206 C load j atom coordinates
224 rsq11 = dx11*dx11+dy11*dy11+dz11*dz11
228 rsq22 = dx22*dx22+dy22*dy22+dz22*dz22
232 rsq23 = dx23*dx23+dy23*dy23+dz23*dz23
236 rsq24 = dx24*dx24+dy24*dy24+dz24*dz24
240 rsq32 = dx32*dx32+dy32*dy32+dz32*dz32
244 rsq33 = dx33*dx33+dy33*dy33+dz33*dz33
248 rsq34 = dx34*dx34+dy34*dy34+dz34*dz34
252 rsq42 = dx42*dx42+dy42*dy42+dz42*dz42
256 rsq43 = dx43*dx43+dy43*dy43+dz43*dz43
260 rsq44 = dx44*dx44+dy44*dy44+dz44*dz44
262 C Calculate 1/r and 1/r2
264 C PowerPC intrinsics 1/sqrt lookup table
266 rinv11 = frsqrtes(rsq11)
268 rinv11 = frsqrte(dble(rsq11))
270 rinv11 = (0.5*rinv11*(3.0-((rsq11*rinv11)
273 rinv11 = (0.5*rinv11*(3.0-((rsq11*rinv11)
277 C PowerPC intrinsics 1/sqrt lookup table
279 rinv22 = frsqrtes(rsq22)
281 rinv22 = frsqrte(dble(rsq22))
283 rinv22 = (0.5*rinv22*(3.0-((rsq22*rinv22)
286 rinv22 = (0.5*rinv22*(3.0-((rsq22*rinv22)
290 C PowerPC intrinsics 1/sqrt lookup table
292 rinv23 = frsqrtes(rsq23)
294 rinv23 = frsqrte(dble(rsq23))
296 rinv23 = (0.5*rinv23*(3.0-((rsq23*rinv23)
299 rinv23 = (0.5*rinv23*(3.0-((rsq23*rinv23)
303 C PowerPC intrinsics 1/sqrt lookup table
305 rinv24 = frsqrtes(rsq24)
307 rinv24 = frsqrte(dble(rsq24))
309 rinv24 = (0.5*rinv24*(3.0-((rsq24*rinv24)
312 rinv24 = (0.5*rinv24*(3.0-((rsq24*rinv24)
316 C PowerPC intrinsics 1/sqrt lookup table
318 rinv32 = frsqrtes(rsq32)
320 rinv32 = frsqrte(dble(rsq32))
322 rinv32 = (0.5*rinv32*(3.0-((rsq32*rinv32)
325 rinv32 = (0.5*rinv32*(3.0-((rsq32*rinv32)
329 C PowerPC intrinsics 1/sqrt lookup table
331 rinv33 = frsqrtes(rsq33)
333 rinv33 = frsqrte(dble(rsq33))
335 rinv33 = (0.5*rinv33*(3.0-((rsq33*rinv33)
338 rinv33 = (0.5*rinv33*(3.0-((rsq33*rinv33)
342 C PowerPC intrinsics 1/sqrt lookup table
344 rinv34 = frsqrtes(rsq34)
346 rinv34 = frsqrte(dble(rsq34))
348 rinv34 = (0.5*rinv34*(3.0-((rsq34*rinv34)
351 rinv34 = (0.5*rinv34*(3.0-((rsq34*rinv34)
355 C PowerPC intrinsics 1/sqrt lookup table
357 rinv42 = frsqrtes(rsq42)
359 rinv42 = frsqrte(dble(rsq42))
361 rinv42 = (0.5*rinv42*(3.0-((rsq42*rinv42)
364 rinv42 = (0.5*rinv42*(3.0-((rsq42*rinv42)
368 C PowerPC intrinsics 1/sqrt lookup table
370 rinv43 = frsqrtes(rsq43)
372 rinv43 = frsqrte(dble(rsq43))
374 rinv43 = (0.5*rinv43*(3.0-((rsq43*rinv43)
377 rinv43 = (0.5*rinv43*(3.0-((rsq43*rinv43)
381 C PowerPC intrinsics 1/sqrt lookup table
383 rinv44 = frsqrtes(rsq44)
385 rinv44 = frsqrte(dble(rsq44))
387 rinv44 = (0.5*rinv44*(3.0-((rsq44*rinv44)
390 rinv44 = (0.5*rinv44*(3.0-((rsq44*rinv44)
394 C Load parameters for j atom
395 rinvsq = rinv11*rinv11
397 C Buckingham interaction
398 rinvsix = rinvsq*rinvsq*rinvsq
400 br = cexp2*rsq11*rinv11
401 Vvdwexp = cexp1*exp(-br)
402 Vvdwtot = Vvdwtot+Vvdwexp-Vvdw6
403 fscal = (br*Vvdwexp-6.0*Vvdw6)*rinvsq
405 C Calculate temporary vectorial force
410 C Increment i atom force
415 C Decrement j atom force
416 faction(j3+0) = faction(j3+0) - tx
417 faction(j3+1) = faction(j3+1) - ty
418 faction(j3+2) = faction(j3+2) - tz
420 C Load parameters for j atom
423 C Calculate table index
426 C Calculate table index
433 C Tabulated coulomb interaction
436 Geps = eps*VFtab(nnn+2)
437 Heps2 = eps2*VFtab(nnn+3)
440 FF = Fp+Geps+2.0*Heps2
443 vctot = vctot + vcoul
444 fscal = -((fijC)*tabscale)*rinv22
446 C Calculate temporary vectorial force
451 C Increment i atom force
456 C Decrement j atom force
457 fjx2 = faction(j3+3) - tx
458 fjy2 = faction(j3+4) - ty
459 fjz2 = faction(j3+5) - tz
461 C Load parameters for j atom
464 C Calculate table index
467 C Calculate table index
474 C Tabulated coulomb interaction
477 Geps = eps*VFtab(nnn+2)
478 Heps2 = eps2*VFtab(nnn+3)
481 FF = Fp+Geps+2.0*Heps2
484 vctot = vctot + vcoul
485 fscal = -((fijC)*tabscale)*rinv23
487 C Calculate temporary vectorial force
492 C Increment i atom force
497 C Decrement j atom force
498 fjx3 = faction(j3+6) - tx
499 fjy3 = faction(j3+7) - ty
500 fjz3 = faction(j3+8) - tz
502 C Load parameters for j atom
505 C Calculate table index
508 C Calculate table index
515 C Tabulated coulomb interaction
518 Geps = eps*VFtab(nnn+2)
519 Heps2 = eps2*VFtab(nnn+3)
522 FF = Fp+Geps+2.0*Heps2
525 vctot = vctot + vcoul
526 fscal = -((fijC)*tabscale)*rinv24
528 C Calculate temporary vectorial force
533 C Increment i atom force
538 C Decrement j atom force
539 fjx4 = faction(j3+9) - tx
540 fjy4 = faction(j3+10) - ty
541 fjz4 = faction(j3+11) - tz
543 C Load parameters for j atom
546 C Calculate table index
549 C Calculate table index
556 C Tabulated coulomb interaction
559 Geps = eps*VFtab(nnn+2)
560 Heps2 = eps2*VFtab(nnn+3)
563 FF = Fp+Geps+2.0*Heps2
566 vctot = vctot + vcoul
567 fscal = -((fijC)*tabscale)*rinv32
569 C Calculate temporary vectorial force
574 C Increment i atom force
579 C Decrement j atom force
584 C Load parameters for j atom
587 C Calculate table index
590 C Calculate table index
597 C Tabulated coulomb interaction
600 Geps = eps*VFtab(nnn+2)
601 Heps2 = eps2*VFtab(nnn+3)
604 FF = Fp+Geps+2.0*Heps2
607 vctot = vctot + vcoul
608 fscal = -((fijC)*tabscale)*rinv33
610 C Calculate temporary vectorial force
615 C Increment i atom force
620 C Decrement j atom force
625 C Load parameters for j atom
628 C Calculate table index
631 C Calculate table index
638 C Tabulated coulomb interaction
641 Geps = eps*VFtab(nnn+2)
642 Heps2 = eps2*VFtab(nnn+3)
645 FF = Fp+Geps+2.0*Heps2
648 vctot = vctot + vcoul
649 fscal = -((fijC)*tabscale)*rinv34
651 C Calculate temporary vectorial force
656 C Increment i atom force
661 C Decrement j atom force
666 C Load parameters for j atom
669 C Calculate table index
672 C Calculate table index
679 C Tabulated coulomb interaction
682 Geps = eps*VFtab(nnn+2)
683 Heps2 = eps2*VFtab(nnn+3)
686 FF = Fp+Geps+2.0*Heps2
689 vctot = vctot + vcoul
690 fscal = -((fijC)*tabscale)*rinv42
692 C Calculate temporary vectorial force
697 C Increment i atom force
702 C Decrement j atom force
703 faction(j3+3) = fjx2 - tx
704 faction(j3+4) = fjy2 - ty
705 faction(j3+5) = fjz2 - tz
707 C Load parameters for j atom
710 C Calculate table index
713 C Calculate table index
720 C Tabulated coulomb interaction
723 Geps = eps*VFtab(nnn+2)
724 Heps2 = eps2*VFtab(nnn+3)
727 FF = Fp+Geps+2.0*Heps2
730 vctot = vctot + vcoul
731 fscal = -((fijC)*tabscale)*rinv43
733 C Calculate temporary vectorial force
738 C Increment i atom force
743 C Decrement j atom force
744 faction(j3+6) = fjx3 - tx
745 faction(j3+7) = fjy3 - ty
746 faction(j3+8) = fjz3 - tz
748 C Load parameters for j atom
751 C Calculate table index
754 C Calculate table index
761 C Tabulated coulomb interaction
764 Geps = eps*VFtab(nnn+2)
765 Heps2 = eps2*VFtab(nnn+3)
768 FF = Fp+Geps+2.0*Heps2
771 vctot = vctot + vcoul
772 fscal = -((fijC)*tabscale)*rinv44
774 C Calculate temporary vectorial force
779 C Increment i atom force
784 C Decrement j atom force
785 faction(j3+9) = fjx4 - tx
786 faction(j3+10) = fjy4 - ty
787 faction(j3+11) = fjz4 - tz
789 C Inner loop uses 440 flops/iteration
793 C Add i forces to mem and shifted force list
794 faction(ii3+0) = faction(ii3+0) + fix1
795 faction(ii3+1) = faction(ii3+1) + fiy1
796 faction(ii3+2) = faction(ii3+2) + fiz1
797 faction(ii3+3) = faction(ii3+3) + fix2
798 faction(ii3+4) = faction(ii3+4) + fiy2
799 faction(ii3+5) = faction(ii3+5) + fiz2
800 faction(ii3+6) = faction(ii3+6) + fix3
801 faction(ii3+7) = faction(ii3+7) + fiy3
802 faction(ii3+8) = faction(ii3+8) + fiz3
803 faction(ii3+9) = faction(ii3+9) + fix4
804 faction(ii3+10) = faction(ii3+10) + fiy4
805 faction(ii3+11) = faction(ii3+11) + fiz4
806 fshift(is3) = fshift(is3)+fix1+fix2+fix3+fix4
807 fshift(is3+1) = fshift(is3+1)+fiy1+fiy2+fiy3+fiy4
808 fshift(is3+2) = fshift(is3+2)+fiz1+fiz2+fiz3+fiz4
810 C Add potential energies to the group for this list
812 Vc(ggid) = Vc(ggid) + vctot
813 Vvdw(ggid) = Vvdw(ggid) + Vvdwtot
815 C Increment number of inner iterations
816 ninner = ninner + nj1 - nj0
818 C Outer loop uses 38 flops/iteration
822 C Increment number of outer iterations
823 nouter = nouter + nn1 - nn0
824 if(nn1.lt.nri) goto 10
826 C Write outer/inner iteration count to pointers
838 C Gromacs nonbonded kernel pwr6kernel324nf
839 C Coulomb interaction: Tabulated
840 C VdW interaction: Buckingham
841 C water optimization: pairs of TIP4P interactions
842 C Calculate forces: no
844 subroutine pwr6kernel324nf(
877 integer*4 nri,iinr(*),jindex(*),jjnr(*),shift(*)
878 gmxreal shiftvec(*),fshift(*),pos(*),faction(*)
879 integer*4 gid(*),type(*),ntype
880 gmxreal charge(*),facel,krf,crf,Vc(*),vdwparam(*)
881 gmxreal Vvdw(*),tabscale,VFtab(*)
882 gmxreal invsqrta(*),dvda(*),gbtabscale,GBtab(*)
883 integer*4 nthreads,count,mtx,outeriter,inneriter
886 integer*4 n,ii,is3,ii3,k,nj0,nj1,jnr,j3,ggid
887 integer*4 nn0,nn1,nouter,ninner
890 gmxreal qq,vcoul,vctot
893 gmxreal Vvdw6,Vvdwtot
894 gmxreal r,rt,eps,eps2
896 gmxreal Y,F,Geps,Heps2,Fp,VV
906 gmxreal dx11,dy11,dz11,rsq11,rinv11
907 gmxreal dx22,dy22,dz22,rsq22,rinv22
908 gmxreal dx23,dy23,dz23,rsq23,rinv23
909 gmxreal dx24,dy24,dz24,rsq24,rinv24
910 gmxreal dx32,dy32,dz32,rsq32,rinv32
911 gmxreal dx33,dy33,dz33,rsq33,rinv33
912 gmxreal dx34,dy34,dz34,rsq34,rinv34
913 gmxreal dx42,dy42,dz42,rsq42,rinv42
914 gmxreal dx43,dy43,dz43,rsq43,rinv43
915 gmxreal dx44,dy44,dz44,rsq44,rinv44
916 gmxreal qH,qM,qqMM,qqMH,qqHH
917 gmxreal c6,cexp1,cexp2
920 C Initialize water data
927 tj = 3*(ntype+1)*type(ii)+1
929 cexp1 = vdwparam(tj+1)
930 cexp2 = vdwparam(tj+2)
933 C Reset outer and inner iteration counters
937 C Loop over thread workunits
938 10 call pwr6kernelsync(mtx,count,nri,nthreads,nn0,nn1)
939 if(nn1.gt.nri) nn1=nri
941 C Start outer loop over neighborlists
945 C Load shift vector for this list
948 shY = shiftvec(is3+1)
949 shZ = shiftvec(is3+2)
951 C Load limits for loop over neighbors
955 C Get outer coordinate index
959 C Load i atom data, add shift vector
960 ix1 = shX + pos(ii3+0)
961 iy1 = shY + pos(ii3+1)
962 iz1 = shZ + pos(ii3+2)
963 ix2 = shX + pos(ii3+3)
964 iy2 = shY + pos(ii3+4)
965 iz2 = shZ + pos(ii3+5)
966 ix3 = shX + pos(ii3+6)
967 iy3 = shY + pos(ii3+7)
968 iz3 = shZ + pos(ii3+8)
969 ix4 = shX + pos(ii3+9)
970 iy4 = shY + pos(ii3+10)
971 iz4 = shZ + pos(ii3+11)
973 C Zero the potential energy for this list
977 C Clear i atom forces
981 C Get j neighbor index, and coordinate index
985 C load j atom coordinates
1003 rsq11 = dx11*dx11+dy11*dy11+dz11*dz11
1007 rsq22 = dx22*dx22+dy22*dy22+dz22*dz22
1011 rsq23 = dx23*dx23+dy23*dy23+dz23*dz23
1015 rsq24 = dx24*dx24+dy24*dy24+dz24*dz24
1019 rsq32 = dx32*dx32+dy32*dy32+dz32*dz32
1023 rsq33 = dx33*dx33+dy33*dy33+dz33*dz33
1027 rsq34 = dx34*dx34+dy34*dy34+dz34*dz34
1031 rsq42 = dx42*dx42+dy42*dy42+dz42*dz42
1035 rsq43 = dx43*dx43+dy43*dy43+dz43*dz43
1039 rsq44 = dx44*dx44+dy44*dy44+dz44*dz44
1041 C Calculate 1/r and 1/r2
1043 C PowerPC intrinsics 1/sqrt lookup table
1044 #ifndef GMX_BLUEGENE
1045 rinv11 = frsqrtes(rsq11)
1047 rinv11 = frsqrte(dble(rsq11))
1049 rinv11 = (0.5*rinv11*(3.0-((rsq11*rinv11)
1052 rinv11 = (0.5*rinv11*(3.0-((rsq11*rinv11)
1056 C PowerPC intrinsics 1/sqrt lookup table
1057 #ifndef GMX_BLUEGENE
1058 rinv22 = frsqrtes(rsq22)
1060 rinv22 = frsqrte(dble(rsq22))
1062 rinv22 = (0.5*rinv22*(3.0-((rsq22*rinv22)
1065 rinv22 = (0.5*rinv22*(3.0-((rsq22*rinv22)
1069 C PowerPC intrinsics 1/sqrt lookup table
1070 #ifndef GMX_BLUEGENE
1071 rinv23 = frsqrtes(rsq23)
1073 rinv23 = frsqrte(dble(rsq23))
1075 rinv23 = (0.5*rinv23*(3.0-((rsq23*rinv23)
1078 rinv23 = (0.5*rinv23*(3.0-((rsq23*rinv23)
1082 C PowerPC intrinsics 1/sqrt lookup table
1083 #ifndef GMX_BLUEGENE
1084 rinv24 = frsqrtes(rsq24)
1086 rinv24 = frsqrte(dble(rsq24))
1088 rinv24 = (0.5*rinv24*(3.0-((rsq24*rinv24)
1091 rinv24 = (0.5*rinv24*(3.0-((rsq24*rinv24)
1095 C PowerPC intrinsics 1/sqrt lookup table
1096 #ifndef GMX_BLUEGENE
1097 rinv32 = frsqrtes(rsq32)
1099 rinv32 = frsqrte(dble(rsq32))
1101 rinv32 = (0.5*rinv32*(3.0-((rsq32*rinv32)
1104 rinv32 = (0.5*rinv32*(3.0-((rsq32*rinv32)
1108 C PowerPC intrinsics 1/sqrt lookup table
1109 #ifndef GMX_BLUEGENE
1110 rinv33 = frsqrtes(rsq33)
1112 rinv33 = frsqrte(dble(rsq33))
1114 rinv33 = (0.5*rinv33*(3.0-((rsq33*rinv33)
1117 rinv33 = (0.5*rinv33*(3.0-((rsq33*rinv33)
1121 C PowerPC intrinsics 1/sqrt lookup table
1122 #ifndef GMX_BLUEGENE
1123 rinv34 = frsqrtes(rsq34)
1125 rinv34 = frsqrte(dble(rsq34))
1127 rinv34 = (0.5*rinv34*(3.0-((rsq34*rinv34)
1130 rinv34 = (0.5*rinv34*(3.0-((rsq34*rinv34)
1134 C PowerPC intrinsics 1/sqrt lookup table
1135 #ifndef GMX_BLUEGENE
1136 rinv42 = frsqrtes(rsq42)
1138 rinv42 = frsqrte(dble(rsq42))
1140 rinv42 = (0.5*rinv42*(3.0-((rsq42*rinv42)
1143 rinv42 = (0.5*rinv42*(3.0-((rsq42*rinv42)
1147 C PowerPC intrinsics 1/sqrt lookup table
1148 #ifndef GMX_BLUEGENE
1149 rinv43 = frsqrtes(rsq43)
1151 rinv43 = frsqrte(dble(rsq43))
1153 rinv43 = (0.5*rinv43*(3.0-((rsq43*rinv43)
1156 rinv43 = (0.5*rinv43*(3.0-((rsq43*rinv43)
1160 C PowerPC intrinsics 1/sqrt lookup table
1161 #ifndef GMX_BLUEGENE
1162 rinv44 = frsqrtes(rsq44)
1164 rinv44 = frsqrte(dble(rsq44))
1166 rinv44 = (0.5*rinv44*(3.0-((rsq44*rinv44)
1169 rinv44 = (0.5*rinv44*(3.0-((rsq44*rinv44)
1173 C Load parameters for j atom
1174 rinvsq = rinv11*rinv11
1176 C Buckingham interaction
1177 rinvsix = rinvsq*rinvsq*rinvsq
1179 br = cexp2*rsq11*rinv11
1180 Vvdwexp = cexp1*exp(-br)
1181 Vvdwtot = Vvdwtot+Vvdwexp-Vvdw6
1183 C Load parameters for j atom
1186 C Calculate table index
1189 C Calculate table index
1196 C Tabulated coulomb interaction
1199 Geps = eps*VFtab(nnn+2)
1200 Heps2 = eps2*VFtab(nnn+3)
1204 vctot = vctot + vcoul
1206 C Load parameters for j atom
1209 C Calculate table index
1212 C Calculate table index
1219 C Tabulated coulomb interaction
1222 Geps = eps*VFtab(nnn+2)
1223 Heps2 = eps2*VFtab(nnn+3)
1227 vctot = vctot + vcoul
1229 C Load parameters for j atom
1232 C Calculate table index
1235 C Calculate table index
1242 C Tabulated coulomb interaction
1245 Geps = eps*VFtab(nnn+2)
1246 Heps2 = eps2*VFtab(nnn+3)
1250 vctot = vctot + vcoul
1252 C Load parameters for j atom
1255 C Calculate table index
1258 C Calculate table index
1265 C Tabulated coulomb interaction
1268 Geps = eps*VFtab(nnn+2)
1269 Heps2 = eps2*VFtab(nnn+3)
1273 vctot = vctot + vcoul
1275 C Load parameters for j atom
1278 C Calculate table index
1281 C Calculate table index
1288 C Tabulated coulomb interaction
1291 Geps = eps*VFtab(nnn+2)
1292 Heps2 = eps2*VFtab(nnn+3)
1296 vctot = vctot + vcoul
1298 C Load parameters for j atom
1301 C Calculate table index
1304 C Calculate table index
1311 C Tabulated coulomb interaction
1314 Geps = eps*VFtab(nnn+2)
1315 Heps2 = eps2*VFtab(nnn+3)
1319 vctot = vctot + vcoul
1321 C Load parameters for j atom
1324 C Calculate table index
1327 C Calculate table index
1334 C Tabulated coulomb interaction
1337 Geps = eps*VFtab(nnn+2)
1338 Heps2 = eps2*VFtab(nnn+3)
1342 vctot = vctot + vcoul
1344 C Load parameters for j atom
1347 C Calculate table index
1350 C Calculate table index
1357 C Tabulated coulomb interaction
1360 Geps = eps*VFtab(nnn+2)
1361 Heps2 = eps2*VFtab(nnn+3)
1365 vctot = vctot + vcoul
1367 C Load parameters for j atom
1370 C Calculate table index
1373 C Calculate table index
1380 C Tabulated coulomb interaction
1383 Geps = eps*VFtab(nnn+2)
1384 Heps2 = eps2*VFtab(nnn+3)
1388 vctot = vctot + vcoul
1390 C Inner loop uses 283 flops/iteration
1394 C Add i forces to mem and shifted force list
1396 C Add potential energies to the group for this list
1398 Vc(ggid) = Vc(ggid) + vctot
1399 Vvdw(ggid) = Vvdw(ggid) + Vvdwtot
1401 C Increment number of inner iterations
1402 ninner = ninner + nj1 - nj0
1404 C Outer loop uses 14 flops/iteration
1408 C Increment number of outer iterations
1409 nouter = nouter + nn1 - nn0
1410 if(nn1.lt.nri) goto 10
1412 C Write outer/inner iteration count to pointers