hdiff output

r30660/SBM.f 2016-07-06 15:35:43.883337189 +0100 r30659/SBM.f 2016-07-06 15:35:44.243342057 +0100
332:       end332:       end
333: 333: 
334: 334: 
335: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<335: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
336: !* SBMBonds  computes the hookean force and energy between chosen atoms *336: !* SBMBonds  computes the hookean force and energy between chosen atoms *
337: !***********************************************************************337: !***********************************************************************
338: 338: 
339:       subroutine SBMBonds(x,y,z,grad,energy, natoms,Ib1, Ib2,Rb, bK,NBA)339:       subroutine SBMBonds(x,y,z,grad,energy, natoms,Ib1, Ib2,Rb, bK,NBA)
340:       USE KEY340:       USE KEY
341:       implicit NONE341:       implicit NONE
342:       integer I2,J2,outE,I,N,J,NATOMS,NBA,C1342:       integer I2, J2,  outE,I, N, J, NATOMS, NBA
343:       DOUBLE PRECISION x(NATOMS), y(NATOMS), z(NATOMS), grad(3*NATOMS),343:       DOUBLE PRECISION x(NATOMS), y(NATOMS), z(NATOMS), grad(3*NATOMS),
344:      Q energy,ETEMP344:      Q energy
345:       DOUBLE PRECISION r2, f, r1345:       DOUBLE PRECISION r2, f, r1
346:       DOUBLE PRECISION dx,dy,dz346:       DOUBLE PRECISION dx,dy,dz
347:       DOUBLE PRECISION Rb(NBA), bK(NBA),GRADOMP(3*NATOMS)347:       real f2
348:       INTEGER Ib1(NBA), Ib2(NBA)348:         DOUBLE PRECISION Rb(NBA), bK(NBA)
349: 349:         INTEGER Ib1(NBA), Ib2(NBA)
350:       do I=1,NATOMS350: 
351:          gradOMP(I*3)=0351: 
352:          gradOMP(I*3-1)=0352:         do 1 i=1, nBA
353:          gradOMP(I*3-2)=0353:            I2 = Ib1(i)
354:       enddo354:            J2 = Ib2(i)
355: 355:         dx = X(I2) - X(J2)
356: !$OMP PARALLEL PRIVATE(I,I2,J2,DX,DY,DZ,R1,R2,F)REDUCTION(+:etemp,gradOMP)356:         dy = Y(I2) - Y(J2)
357: !$OMP DO357:         dz = Z(I2) - Z(J2)
358:         DO I=1, nBA358: 
359:            I2 = Ib1(I)359:           r2 = dx**2 + dy**2 + dz**2
360:            J2 = Ib2(I)360:           r1 = sqrt(r2)
361:            dx = X(I2) - X(J2)361: ! energy calculation
362:            dy = Y(I2) - Y(J2)362:              Energy = Energy + bk(i)*(r1-Rb(i))**2/2.0
363:            dz = Z(I2) - Z(J2)363: 
364:            r2 = dx**2 + dy**2 + dz**2364: ! End energy calculation
365:            r1 = sqrt(r2)365: 
366:            etemp = etemp + bk(I)*(r1-Rb(I))**2/2.0366: ! f_over_r is the force over the magnitude of r so there is no need to resolve
367:            f = -bk(I)*(r1-Rb(I))/r1367: ! the dx, dy and dz into unit vectors
368:            gradOMP(I2*3-2) = gradOMP(I2*3-2) - f * dx368: 
369:            gradOMP(I2*3-1) = gradOMP(I2*3-1) - f * dy369: ! the index i indicates the interaction between particle i and i+1
370:            gradOMP(I2*3)   = gradOMP(I2*3)   - f * dz370: 
371:            gradOMP(J2*3-2) = gradOMP(J2*3-2) + f * dx371:              f = -bk(i)*(r1-Rb(i))/r1
372:            gradOMP(J2*3-1) = gradOMP(J2*3-1) + f * dy372:              !   f2=f*r1
373:            gradOMP(J2*3)   = gradOMP(J2*3)   + f * dz373: !            f = Rb(i)*bK(i)/r1 - bK(i)
374:        ENDDO 374:         !write(*,*) i, f
375: !$OMP END DO375:             ! now add the force
376: !$OMP END PARALLEL376:               grad(I2*3-2) = grad(I2*3-2) - f * dx
377:         energy=energy+etemp 377:               grad(I2*3-1) = grad(I2*3-1) - f * dy
378:         do C1=1,NATOMS378:               grad(I2*3)   = grad(I2*3)   - f * dz
379:               grad(C1*3-2) = grad(C1*3-2)+ gradOMP(C1*3-2) 379: ! the negative sign is due to the computation of dx, dy and dz
380:               grad(C1*3-1) = grad(C1*3-1)+ gradOMP(C1*3-1) 380:               grad(J2*3-2) = grad(J2*3-2) + f * dx
381:               grad(C1*3)   = grad(C1*3)  + gradOMP(C1*3)   381:               grad(J2*3-1) = grad(J2*3-1) + f * dy
382:         enddo382:               grad(J2*3)   = grad(J2*3)   + f * dz
383:  
384: 383: 
 384: 1         continue
 385:       !STOP
385:       END386:       END
386: 387: 
387: !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^END OF SBMBONDS^^^^^^^^^^^^^^^^^^^^^^^^^^^^^388: !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^END OF SBMBONDS^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
388: 389: 
389: 390: 
390: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<391: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
391: !* SBMANGL  computes the Force due to the bond angles                   *392: !* SBMANGL  computes the Force due to the bond angles                   *
392: !* This code is modeled after how AMBER performs angle forces           *393: !* This code is modeled after how AMBER performs angle forces           *
393: !***********************************************************************394: !***********************************************************************
394: 395: 
683:       subroutine SBMcontacts(x,y,z,grad,energy,684:       subroutine SBMcontacts(x,y,z,grad,energy,
684:      Q NATOMS,IC,JC,Sigma,EpsC,NC,CONTACTTYPE)685:      Q NATOMS,IC,JC,Sigma,EpsC,NC,CONTACTTYPE)
685:       USE KEY686:       USE KEY
686:       implicit NONE687:       implicit NONE
687:       integer I, N, J,NATOMS,NC688:       integer I, N, J,NATOMS,NC
688: 689: 
689:       DOUBLE PRECISION x(NATOMS), y(NATOMS), z(NATOMS) 690:       DOUBLE PRECISION x(NATOMS), y(NATOMS), z(NATOMS) 
690:      Q , grad(3*NATOMS), energy691:      Q , grad(3*NATOMS), energy
691:       DOUBLE PRECISION dx,dy,dz692:       DOUBLE PRECISION dx,dy,dz
692: 693: 
693:       integer C1, C2, ConfID, Q, SC1, SC2, Cf1694:       integer C1, C2, ConfID, Q, SC1, SC2, Cf1, cf2
694:       DOUBLE PRECISION  r2, rm2, rm10, rm6,f_over_r, dsig, deps, 695:       DOUBLE PRECISION  r2, rm2, rm10, rm6,f_over_r, dsig, deps, 
695:      Q s1, s2, ep1, ep2, r1, rc,r, summm696:      Q s1, s2, ep1, ep2, r1, rc,r, summm
696: 697: 
697:         DOUBLE PRECISION Sigma(NC), EpsC(NC)698:         DOUBLE PRECISION Sigma(NC), EpsC(NC)
698:         INTEGER IC(NC), JC(NC),CONTACTTYPE699:         INTEGER IC(NC), JC(NC),CONTACTTYPE
699: 700: 
700: ! implement type 3 as gaussian701: ! implement type 3 as gaussian
701: ! implement type 4 as dual-basin gaussian702: ! implement type 4 as dual-basin gaussian
702: ! question: Should type be part of the interaction, or should they be organized703: ! question: Should type be part of the interaction, or should they be organized
703: ! into separate lists?704: ! into separate lists?


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0