## hdiff output

r30687/SBM.f 2016-07-06 15:38:23.925500892 +0100 r30686/SBM.f 2016-07-06 15:38:24.257505391 +0100
202:           if(CONTACTTYPE(I) .eq. 1)then ! 6-12 interaction202:           if(CONTACTTYPE(I) .eq. 1)then ! 6-12 interaction
203:             CONCOEF(I*6-5)=ARG2*ARG1**12203:             CONCOEF(I*6-5)=ARG2*ARG1**12
204:             CONCOEF(I*6-4)=2*ARG2*ARG1**6204:             CONCOEF(I*6-4)=2*ARG2*ARG1**6
205:           elseif(CONTACTTYPE(I) .eq. 2)then ! 10-12205:           elseif(CONTACTTYPE(I) .eq. 2)then ! 10-12
206:             CONCOEF(I*6-5)=5*ARG2*ARG1**12206:             CONCOEF(I*6-5)=5*ARG2*ARG1**12
207:             CONCOEF(I*6-4)=6*ARG2*ARG1**10207:             CONCOEF(I*6-4)=6*ARG2*ARG1**10
208:           elseif(CONTACTTYPE(I) .eq. 5)then ! bare Gaussian208:           elseif(CONTACTTYPE(I) .eq. 5)then ! bare Gaussian
209:             CONCOEF(I*6-5)=ARG1209:             CONCOEF(I*6-5)=ARG1
210:             CONCOEF(I*6-4)=ARG2210:             CONCOEF(I*6-4)=ARG2
212:             CONCOEF(I*6-3)=1/(2*ARG1**2)212:             CONCOEF(I*6-3)=1/2*ARG1**2
213:           elseif(CONTACTTYPE(I) .eq. 6)then ! Gaussian with wall213:           elseif(CONTACTTYPE(I) .eq. 6)then ! Gaussian with wall
214:             CONCOEF(I*6-5)=ARG1214:             CONCOEF(I*6-5)=ARG1
215:             CONCOEF(I*6-4)=ARG2215:             CONCOEF(I*6-4)=ARG2
217:             CONCOEF(I*6-3)=1/(2*ARG1**2)217:             CONCOEF(I*6-3)=1/2*ARG1**2
218:             CONCOEF(I*6-2)=ARG2/CONCOEF(I*6-5)218:             CONCOEF(I*6-2)=ARG2/CONCOEF(I*6-5)
219:           elseif(CONTACTTYPE(I) .eq. 7)then ! Dual gaussian219:           elseif(CONTACTTYPE(I) .eq. 7)then ! Dual gaussian
220:             CONCOEF(I*6-5)=ARG1220:             CONCOEF(I*6-5)=ARG1
221:             CONCOEF(I*6-4)=ARG2221:             CONCOEF(I*6-4)=ARG2
223:             CONCOEF(I*6-3)=1/(2*ARG1**2)223:             CONCOEF(I*6-3)=1/2*ARG1**2
224:             CONCOEF(I*6-2)=ARG2224:             CONCOEF(I*6-2)=ARG2
225:             CONCOEF(I*6-1)=1/(2*ARG3**2)225:             CONCOEF(I*6-1)=2*ARG3**2
226:             CONCOEF(I*6)=ARG4/CONCOEF(I*6-5)226:             CONCOEF(I*6)=ARG4/CONCOEF(I*6-5)
227:           else227:           else
228:             write(*,*) 'ERROR: Unrecognized contacttype:',CONTACTTYPE(I)228:             write(*,*) 'ERROR: Unrecognized contacttype:',CONTACTTYPE(I)
229:             STOP229:             STOP
230:           endif230:           endif
231:         end do231:         end do
232: ! make a function to check and add232: ! make a function to check and add
233: 233:
500:        ENDDO 500:        ENDDO
501: !\$OMP END DO501: !\$OMP END DO
502: !\$OMP END PARALLEL502: !\$OMP END PARALLEL
503: 503:
504:
504:       END505:       END
505: 506:
506: !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^END OF SBMBONDS^^^^^^^^^^^^^^^^^^^^^^^^^^^^^507: !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^END OF SBMBONDS^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
507: 508:
508: 509:
509: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<510: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
510: !* SBMANGL  computes the Force due to the bond angles                   *511: !* SBMANGL  computes the Force due to the bond angles                   *
511: !* This code is modeled after how AMBER performs angle forces           *512: !* This code is modeled after how AMBER performs angle forces           *
512: !***********************************************************************513: !***********************************************************************
513: 514:
762: !***********************************************************************763: !***********************************************************************
763: 764:
765:      Q NATOMS,IC,JC,CONCOEF,NC,CONTACTTYPE)766:      Q NATOMS,IC,JC,CONCOEF,NC,CONTACTTYPE)
766:       USE KEY767:       USE KEY
767:       implicit NONE768:       implicit NONE
768:       integer I, NATOMS,NC769:       integer I, NATOMS,NC
769: 770:
770:       DOUBLE PRECISION x(NATOMS), y(NATOMS), z(NATOMS), 771:       DOUBLE PRECISION x(NATOMS), y(NATOMS), z(NATOMS),
772:       DOUBLE PRECISION dx,dy,dz,CO1,CO2,CO3,CO4,CO5,CO6,E1,G1,G2,E1D,G1D,G2D,ET773:       DOUBLE PRECISION dx,dy,dz,CO1,CO2,CO3,CO4,CO5,CO6,E1,G1,G2,E1D,G1D,G2D
773: 774:
774:       integer C1, C2 775:       integer C1, C2
775:       DOUBLE PRECISION  r2,rm2,rm10,rm12,rm6,f_over_r,r1 776:       DOUBLE PRECISION  r2,rm2,rm10,rm12,rm6,f_over_r,r1
776: 777:
777:         DOUBLE PRECISION CONCOEF(NC*6)778:         DOUBLE PRECISION CONCOEF(NC*6)
778:         INTEGER IC(NC), JC(NC),CONTACTTYPE(NC)779:         INTEGER IC(NC), JC(NC),CONTACTTYPE(NC)
779: 780:
780: ! type 1 is 6-12781: ! type 1 is 6-12
781: ! type 2 is 12-12782: ! type 2 is 12-12
782: ! implement type 3 as gaussian783: ! implement type 3 as gaussian
783: ! implement type 4 as dual-basin gaussian784: ! implement type 4 as dual-basin gaussian
784: ! question: Should type be part of the interaction, or should they be organized785: ! question: Should type be part of the interaction, or should they be organized
785: ! into separate lists?786: ! into separate lists?
786: ! type 1 is 6-12 interaction787: ! type 1 is 6-12 interaction
787: !\$OMP PARALLEL PRIVATE(I,CO1,CO2,CO3,CO4,CO5,CO6,C1,C2,DX,DY,DZ,788: !\$OMP PARALLEL PRIVATE(I,CO1,CO2,CO3,CO4,CO5,CO6,C1,C2,DX,DY,DZ,
789: !\$OMP DO790: !\$OMP DO
790:           do i=1, NC791:           do i=1, NC
791:             C1 = IC(i)792:             C1 = IC(i)
792:             C2 = JC(i)793:             C2 = JC(i)
793:             dx = X(C1) - X(C2)794:             dx = X(C1) - X(C2)
794:             dy = Y(C1) - Y(C2)795:             dy = Y(C1) - Y(C2)
795:             dz = Z(C1) - Z(C2)796:             dz = Z(C1) - Z(C2)
796:             r2 = dx**2 + dy**2 + dz**2797:             r2 = dx**2 + dy**2 + dz**2
797:             if(CONTACTTYPE(I) .eq. 1)then798:             if(CONTACTTYPE(I) .eq. 1)then
798:               ! type 1 is 6-12 interaction799:               ! type 1 is 6-12 interaction
847:               CO3=CONCOEF(I*6-3) !1/(2*sigma1**2)848:               CO3=CONCOEF(I*6-3) !1/(2*sigma1**2)
848:               CO4=CONCOEF(I*6-2) !mu2849:               CO4=CONCOEF(I*6-2) !mu2
849:               CO5=CONCOEF(I*6-1) !1/(2*sigma2**2)850:               CO5=CONCOEF(I*6-1) !1/(2*sigma2**2)
850:               CO6=CONCOEF(I*6)   ! a/A (excluded volume amplitude/gaussian amplitude)851:               CO6=CONCOEF(I*6)   ! a/A (excluded volume amplitude/gaussian amplitude)
851:               E1=1+CO6*rm12852:               E1=1+CO6*rm12
852:               G1=1-exp(-CO3*(r1-CO2)**2)853:               G1=1-exp(-CO3*(r1-CO2)**2)
853:               G2=1-exp(-CO5*(r1-CO4)**2)854:               G2=1-exp(-CO5*(r1-CO4)**2)
854:               E1D= -12*CO6*rm12*rm2855:               E1D= -12*CO6*rm12*rm2
855:               G1D=CO3*2*(1-CO2/r1)*exp(-CO3*(r1-CO2)**2)856:               G1D=CO3*2*(1-CO2/r1)*exp(-CO3*(r1-CO2)**2)
856:               G2D=CO5*2*(1-CO4/r1)*exp(-CO5*(r1-CO4)**2)857:               G2D=CO5*2*(1-CO4/r1)*exp(-CO5*(r1-CO4)**2)
857:               ENERGY = ENERGY + CO1*( E1 * G1 * G2-1) 858:               ENERGY = ENERGY + CO1*( E1 * G1 * G2)
858:               f_over_r = CO1*(E1D*G1*G2 859:               f_over_r = CO1*(E1D*G1*G2
859:      Q        +  E1 * G1D * G2860:      Q        +  E1 * G1D * G2
860:      Q        +  E1 * G1 * G2D)861:      Q        +  E1 * G1 * G2D)
861:             else862:             else
862:               WRITE(*,*) 'ERROR: Contact type not recognized:', CONTACTTYPE(I)863:               WRITE(*,*) 'ERROR: Contact type not recognized:', CONTACTTYPE(I)
863:               STOP864:               STOP
864:             endif865:             endif
865: 866: