hdiff output

r30659/SBM.f 2016-07-06 15:35:43.143327179 +0100 r30658/SBM.f 2016-07-06 15:35:43.499331992 +0100
390: 390: 
391: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<391: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
392: !* SBMANGL  computes the Force due to the bond angles                   *392: !* SBMANGL  computes the Force due to the bond angles                   *
393: !* This code is modeled after how AMBER performs angle forces           *393: !* This code is modeled after how AMBER performs angle forces           *
394: !***********************************************************************394: !***********************************************************************
395: 395: 
396:       SUBROUTINE SBMANGL(x,y,z,grad, energy, NATOMS,IT, JT, KT, 396:       SUBROUTINE SBMANGL(x,y,z,grad, energy, NATOMS,IT, JT, KT, 
397:      Q ANTC, Tk,NTA)397:      Q ANTC, Tk,NTA)
398:       USE KEY398:       USE KEY
399:       implicit NONE399:       implicit NONE
400:       integer NATOMS,C1400:       integer NATOMS
401:       DOUBLE PRECISION x(NATOMS), y(NATOMS), z(NATOMS), grad(3*NATOMS),401:       DOUBLE PRECISION x(NATOMS), y(NATOMS), z(NATOMS), grad(3*NATOMS),
402:      Q energy402:      Q energy
403:       integer NTA403:       integer I, N, J, NTA
404:       LOGICAL SKIP,NOCRST404:       LOGICAL SKIP,NOCRST
405: 405: 
406:       DOUBLE PRECISION RIJ,RKJ,RIK,ANT,XIJ,YIJ,406:       DOUBLE PRECISION CST,EAW,RIJ,RKJ,RIK,DFW,ANT,XIJ,YIJ,
407:      + ZIJ,XKJ,YKJ,ZKJ, DF,etemp,gradOMP407:      + ZIJ,XKJ,YKJ,
408:       DIMENSION gradOMP(3*NATOMS)408:      + ZKJ, DF
409:       DOUBLE PRECISION CT0, CT1, CT2, DA, ST, 409:       dimension  XIJ(NTA),YIJ(NTA),ZIJ(NTA),XKJ(NTA),YKJ(NTA),
410:      + CIK, CII, CKK, DT1, DT2, DT3, DT4, DT5, DT6, DT7, DT8, DT9,  STH410:      + ZKJ(NTA),CST(NTA),EAW(NTA),RIJ(NTA),RKJ(NTA),RIK(NTA),
 411:      + DFW(NTA),ANT(NTA)
 412:       DOUBLE PRECISION CT0, CT1, CT2, RIJ0, RKJ0, RIK0, ANT0, DA, ST, 
 413:      + CIK, CII, CKK, DT1, DT2, DT3, DT4, DT5, DT6, DT7, DT8, DT9, pt999
 414:      Q , ebal,STH
411: 415: 
412: 416: 
413:         DOUBLE PRECISION ANTC(NTA), Tk(NTA)417:         DOUBLE PRECISION ANTC(NTA), Tk(NTA)
414:         INTEGER II, IT(NTA), JT(NTA), KT(NTA)418:         INTEGER II, IT(NTA), JT(NTA), KT(NTA)
415:         INTEGER I3, J3, K3419:         INTEGER I3, J3, K3
416: 420: 
417:       do II=1,NATOMS421:       data pt999 /1.0d0/
418:          gradOMP(II*3)=0422:       ebal= 0.0d0
419:          gradOMP(II*3-1)=0423: 
420:          gradOMP(II*3-2)=0424: 
421:       enddo 
422:  
423:         etemp=0 
424: !$OMP PARALLEL PRIVATE(RIJ,RKJ,RIK,ANT,XIJ,YIJ,ZIJ,XKJ,YKJ, 
425: !$OMP&  ZKJ,DF,CT0,CT1,CT2,DA,ST,CIK,CII,CKK,DT1,DT2,DT3,DT4, 
426: !$OMP&  DT5,DT6,DT7,DT8,DT9,STH) REDUCTION(+:etemp,gradOMP) 
427: !$OMP DO 
428:           DO II = 1, nTA425:           DO II = 1, nTA
429:             I3 = IT(II)426:             I3 = IT(II)
430:             J3 = JT(II)427:             J3 = JT(II)
431:             K3 = KT(II)428:             K3 = KT(II)
432:             XIJ = X(I3)-X(J3)429: 
433:             YIJ = Y(I3)-Y(J3)430:             XIJ(II) = X(I3)-X(J3)
434:             ZIJ = Z(I3)-Z(J3)431:             YIJ(II) = Y(I3)-Y(J3)
435:             XKJ = X(K3)-X(J3)432:             ZIJ(II) = Z(I3)-Z(J3)
436:             YKJ = Y(K3)-Y(J3)433:             XKJ(II) = X(K3)-X(J3)
437:             ZKJ = Z(K3)-Z(J3)434:             YKJ(II) = Y(K3)-Y(J3)
438:             RIJ = XIJ*XIJ+YIJ*YIJ+ZIJ*ZIJ435:             ZKJ(II) = Z(K3)-Z(J3)
439:             RKJ = XKJ*XKJ+YKJ*YKJ+ZKJ*ZKJ436:           END DO
440:             RIK = SQRT(RIJ*RKJ)437:           DO II = 1,nTA
441:             CT0 = (XIJ*XKJ+YIJ*YKJ+ZIJ*ZKJ)/RIK438:             RIJ0 = XIJ(II)*XIJ(II)+YIJ(II)*YIJ(II)+ZIJ(II)*ZIJ(II)
442:             CT1 = MAX(-1.0,CT0)439:             RKJ0 = XKJ(II)*XKJ(II)+YKJ(II)*YKJ(II)+ZKJ(II)*ZKJ(II)
443:             CT2 = MIN(1.0,CT1)440:             RIK0 = SQRT(RIJ0*RKJ0)
444:             ANT = ACOS(CT2)441:             CT0 = (XIJ(II)*XKJ(II)+YIJ(II)*YKJ(II)+ZIJ(II)*ZKJ(II))/RIK0
445:             DA = ANT - ANTC(II)442:             CT1 = MAX(-pt999,CT0)
 443:             CT2 = MIN(pt999,CT1)
 444:             CST(II) = CT2
 445:             ANT(II) = ACOS(CT2)
 446:             RIJ(II) = RIJ0
 447:             RKJ(II) = RKJ0
 448:             RIK(II) = RIK0
 449:           END DO
 450: 
 451: ! end of insertion
 452: 
 453: 
 454:           DO II = 1,nTA
 455:             ANT0 = ANT(II)
 456:             DA = ANT0 - ANTC(II)
446:             DF = TK(II)*DA457:             DF = TK(II)*DA
447:             ST = -(DF)/SIN(ANT)458: 
448:             STH = ST*CT2459: 
449:             CIK = ST/RIK460:             DFW(II) = -(DF)/SIN(ANT0)
450:             CII = STH/RIJ461: 
451:             CKK = STH/RKJ462:           END DO
452:             DT1 = CIK*XKJ-CII*XIJ463:           DO II = 1,nTA
453:             DT2 = CIK*YKJ-CII*YIJ464:             I3 = IT(II)
454:             DT3 = CIK*ZKJ-CII*ZIJ465:             J3 = JT(II)
455:             DT7 = CIK*XIJ-CKK*XKJ466:             K3 = KT(II)
456:             DT8 = CIK*YIJ-CKK*YKJ467:             ST = DFW(II)
457:             DT9 = CIK*ZIJ-CKK*ZKJ468:             STH = ST*CST(II)
 469:             CIK = ST/RIK(II)
 470:             CII = STH/RIJ(II)
 471:             CKK = STH/RKJ(II)
 472:             DT1 = CIK*XKJ(II)-CII*XIJ(II)
 473:             DT2 = CIK*YKJ(II)-CII*YIJ(II)
 474:             DT3 = CIK*ZKJ(II)-CII*ZIJ(II)
 475:             DT7 = CIK*XIJ(II)-CKK*XKJ(II)
 476:             DT8 = CIK*YIJ(II)-CKK*YKJ(II)
 477:             DT9 = CIK*ZIJ(II)-CKK*ZKJ(II)
458:             DT4 = -DT1-DT7478:             DT4 = -DT1-DT7
459:             DT5 = -DT2-DT8479:             DT5 = -DT2-DT8
460:             DT6 = -DT3-DT9480:             DT6 = -DT3-DT9
461:             gradOMP(I3*3-2) = gradOMP(I3*3-2)+ DT1481: C
462:             gradOMP(I3*3-1) = gradOMP(I3*3-1)+ DT2482: 
463:             gradOMP(I3*3)   = gradOMP(I3*3)  + DT3483:             grad(I3*3-2) = grad(I3*3-2)+ DT1
464:             gradOMP(J3*3-2) = gradOMP(J3*3-2)+ DT4484:             grad(I3*3-1) = grad(I3*3-1)+ DT2
465:             gradOMP(J3*3-1) = gradOMP(J3*3-1)+ DT5485:             grad(I3*3)   = grad(I3*3)  + DT3
466:             gradOMP(J3*3)   = gradOMP(J3*3)  + DT6486:             grad(J3*3-2) = grad(J3*3-2)+ DT4
467:             gradOMP(K3*3-2) = gradOMP(K3*3-2)+ DT7487:             grad(J3*3-1) = grad(J3*3-1)+ DT5
468:             gradOMP(K3*3-1) = gradOMP(K3*3-1)+ DT8488:             grad(J3*3)   = grad(J3*3)  + DT6
469:             gradOMP(K3*3)   = gradOMP(K3*3)  + DT9489:             grad(K3*3-2) = grad(K3*3-2)+ DT7
470:             etemp = etemp + TK(II)*(ANTC(II)- ANT)**2/2.0490:             grad(K3*3-1) = grad(K3*3-1)+ DT8
 491:             grad(K3*3)   = grad(K3*3)  + DT9
 492: 
471:           END DO493:           END DO
472: !$OMP END DO494: ! Energy Calculations
473: !$OMP END PARALLEL495: 
474:         energy=energy+etemp  
475:         do C1=1,NATOMS 
476:               grad(C1*3-2) = grad(C1*3-2)+ gradOMP(C1*3-2)  
477:               grad(C1*3-1) = grad(C1*3-1)+ gradOMP(C1*3-1)  
478:               grad(C1*3)   = grad(C1*3)  + gradOMP(C1*3)    
479:         enddo 
480: 496: 
 497:           do i=1, nTA
 498:              energy = energy + TK(i)*(ANTC(i)- ANT(i))**2/2.0
 499:           end do
481: 500: 
482:        RETURN501:        RETURN
483:        END502:        END
484: 503: 
485: !^^^^^^^^^^^^^^^^^^^^^^^^End of SBMANGL^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^504: !^^^^^^^^^^^^^^^^^^^^^^^^End of SBMANGL^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
486: 505: 
487: 506: 
488: 507: 
489: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<508: !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
490: !* SBMdihedral computes the dihedral angles and the forces due to them *509: !* SBMdihedral computes the dihedral angles and the forces due to them *


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0