hdiff output

r31232/amberinterface.f 2016-10-02 21:30:19.017848130 +0100 r31231/amberinterface.f 2016-10-02 21:30:19.277851614 +0100
660: !IF(.NOT.(ereal>-1.0D20 .AND. ereal<1.0D20)) THEN660: !IF(.NOT.(ereal>-1.0D20 .AND. ereal<1.0D20)) THEN
661: !        write(MYUNITNEW,*) 'sf344> in amberenergies: cold fusion detected ',ereal!,natom,y(1:3*natom)661: !        write(MYUNITNEW,*) 'sf344> in amberenergies: cold fusion detected ',ereal!,natom,y(1:3*natom)
662: !!     call checkdistances662: !!     call checkdistances
663: !        ereal = 1.0D7663: !        ereal = 1.0D7
664: !        grad(1:3*natom) = 1.0D0664: !        grad(1:3*natom) = 1.0D0
665: !END IF665: !END IF
666: 666: 
667: END SUBROUTINE AMBERENERGIES667: END SUBROUTINE AMBERENERGIES
668: 668: 
669: 669: 
670: SUBROUTINE TAKESTEPAMBER(JP,y,movableatomlist1,nmovableatoms,ligmovet,mdstept1,randomseedt2,blockmovet,nblocks,atomsinblock1,LOCALSTEP)670: SUBROUTINE TAKESTEPAMBER(JP,y,movableatomlist1,nmovableatoms,ligmovet,mdstept1,randomseedt2,blockmovet,nblocks,atomsinblock1)
671: !671: !
672: ! Takestep routine for the AMBER interface.  672: ! Takestep routine for the AMBER interface.  
673: ! Short MD steps are being taken, controlled by min_md.in, followed by random xyz moves.673: ! Short MD steps are being taken, controlled by min_md.in, followed by random xyz moves.
674: ! The random xyz moves are being taken in subroutine TAKESTEP, which is being called 674: ! The random xyz moves are being taken in subroutine TAKESTEP, which is being called 
675: ! after this routine.675: ! after this routine.
676: !676: !
677: ! LIGAND ROTATION is now implemented as well. This seems to be way more efficient 677: ! LIGAND ROTATION is now implemented as well. This seems to be way more efficient 
678: !  than random xyz moves or MD runs to sample the energy landscape of a docked ligand + protein. 678: !  than random xyz moves or MD runs to sample the energy landscape of a docked ligand + protein. 
679: !  The atoms of the ligand have to be specified in the file 'movableatoms', the keywords679: !  The atoms of the ligand have to be specified in the file 'movableatoms', the keywords
680: !  'MOVABLEATOMS' and 'LIGMOVE' also need to be present in the data file.680: !  'MOVABLEATOMS' and 'LIGMOVE' also need to be present in the data file.
681: !  If one wants to explore the ligand configuration space only by rotation, it is advised681: !  If one wants to explore the ligand configuration space only by rotation, it is advised
682: !  to keep the stepsize small (STEP 0.01) and use 'AMBERMDSTEPS' as well, setting the number682: !  to keep the stepsize small (STEP 0.01) and use 'AMBERMDSTEPS' as well, setting the number
683: !  of MD steps in the min_md.in file to 1, and ntr/ntwx also to 1. In this way each starting 683: !  of MD steps in the min_md.in file to 1, and ntr/ntwx also to 1. In this way each starting 
684: !  configuration is being dumped in the coords.mdcrd file, which can be useful if one wants to 684: !  configuration is being dumped in the coords.mdcrd file, which can be useful if one wants to 
685: !  check how extensive the movement of the ligand is in the pocket.685: !  check how extensive the movement of the ligand is in the pocket.
686: use modamber9686: use modamber9
687: use commons, only : natoms, change_temp, newres_temp, perct, perccut687: use commons, only : natoms, change_temp, newres_temp, perct, perccut, step
688: use nblist, only : nbflag, skinnb688: use nblist, only : nbflag, skinnb
689: use porfuncs689: use porfuncs
690: 690: 
691: implicit none691: implicit none
692: 692: 
693: 693: 
694: integer JP, itime1, now(3), nmovableatoms,i,j,movableatomlist1(nmovableatoms),nblocks,atomsinblock1(nblocks),offset1,k694: integer JP, itime1, now(3), nmovableatoms,i,j,movableatomlist1(nmovableatoms),nblocks,atomsinblock1(nblocks),offset1,k
695: double precision        :: y(3*natoms), grad(3*natoms), ereal,ligandcentre(3),ligandcoords(3),ligandcoordsrotated(3)695: double precision        :: y(3*natoms), grad(3*natoms), ereal,ligandcentre(3),ligandcoords(3),ligandcoordsrotated(3)
696: double precision        :: twopi,pi,DPRAND,randomphi,randompsi,randomtheta,DIST, dummyz696: double precision        :: twopi,pi,DPRAND,randomphi,randompsi,randomtheta,DIST, dummyz
697: double precision        :: st,ct,sph,cph,sps,cps, VECBAX, VECBAY, VECBAZ, randomx, randomy, randomz, dummyx, dummyy697: double precision        :: st,ct,sph,cph,sps,cps, VECBAX, VECBAY, VECBAZ, randomx, randomy, randomz, dummyx, dummyy
698: double precision        :: distancematrix(natoms,natoms), ysave(3*natoms),cartstepsave,transstepsave,localstep698: double precision        :: distancematrix(natoms,natoms), ysave(3*natoms),cartstepsave,transstepsave
699: logical                 :: ligmovet,mdstept1,randomseedt2,reschangedt(nres),blockmovet,overlapt699: logical                 :: ligmovet,mdstept1,randomseedt2,reschangedt(nres),blockmovet,overlapt
700: logical                 :: includedatom(natoms)700: logical                 :: includedatom(natoms)
701: character(len=10)       :: datechar,timechar,zonechar701: character(len=10)       :: datechar,timechar,zonechar
702: integer                 :: values(8),iostatus,restemp,i1,currentresidue,resnumber,overlaparray(natoms,natoms)702: integer                 :: values(8),iostatus,restemp,i1,currentresidue,resnumber,overlaparray(natoms,natoms)
703: integer                 :: overlaparraysave(natoms,natoms),nretries703: integer                 :: overlaparraysave(natoms,natoms),nretries
704: character(len=10)       :: rotmaxchangestr,rotpselectstr,rotcutoffstr,rotcentrestr,rotoccuwstr704: character(len=10)       :: rotmaxchangestr,rotpselectstr,rotcutoffstr,rotcentrestr,rotoccuwstr
705: integer, allocatable    :: movableatomlist(:), atomsinblock(:) 705: integer, allocatable    :: movableatomlist(:), atomsinblock(:) 
706: double precision, allocatable :: atomblockcentre(:,:), rotationmatrix(:,:,:)706: double precision, allocatable :: atomblockcentre(:,:), rotationmatrix(:,:,:)
707: 707: 
708: 708: 
980:               y(3*j  )=y(3*j  )+2*randomz*ligcartstep-ligcartstep980:               y(3*j  )=y(3*j  )+2*randomz*ligcartstep-ligcartstep
981:            enddo981:            enddo
982:         endif982:         endif
983: ! 3) RIGID LIGAND TRANSLATION983: ! 3) RIGID LIGAND TRANSLATION
984:         if ((LIGMOVET).and.(ligtransstep.gt.0).and..not.BLOCKMOVET) then984:         if ((LIGMOVET).and.(ligtransstep.gt.0).and..not.BLOCKMOVET) then
985:            randomx=DPRAND()985:            randomx=DPRAND()
986:            randomy=DPRAND()986:            randomy=DPRAND()
987:            randomz=DPRAND()987:            randomz=DPRAND()
988:            do i=1,nmovableatoms988:            do i=1,nmovableatoms
989:               j=movableatomlist(i)989:               j=movableatomlist(i)
990:               y(3*j-2)=y(3*j-2)+2*randomx*ligtransstep*LOCALSTEP-ligtransstep*LOCALSTEP990:               y(3*j-2)=y(3*j-2)+2*randomx*ligtransstep*STEP(JP)-ligtransstep*STEP(JP)
991:               y(3*j-1)=y(3*j-1)+2*randomy*ligtransstep*LOCALSTEP-ligtransstep*LOCALSTEP991:               y(3*j-1)=y(3*j-1)+2*randomy*ligtransstep*STEP(JP)-ligtransstep*STEP(JP)
992:               y(3*j  )=y(3*j  )+2*randomz*ligtransstep*LOCALSTEP-ligtransstep*LOCALSTEP992:               y(3*j  )=y(3*j  )+2*randomz*ligtransstep*STEP(JP)-ligtransstep*STEP(JP)
993:            enddo993:            enddo
994:         endif994:         endif
995:         if ((LIGMOVET).and.(ligtransstep.gt.0).and.BLOCKMOVET) then995:         if ((LIGMOVET).and.(ligtransstep.gt.0).and.BLOCKMOVET) then
996:           offset1=0996:           offset1=0
997: !          WRITE(*,*) 'nblocks ', nblocks997: !          WRITE(*,*) 'nblocks ', nblocks
998:           do i=1,nblocks998:           do i=1,nblocks
999:              if(i>1) offset1=offset1+atomsinblock(i-1)999:              if(i>1) offset1=offset1+atomsinblock(i-1)
1000:              randomx=DPRAND()1000:              randomx=DPRAND()
1001:              randomy=DPRAND()1001:              randomy=DPRAND()
1002:              randomz=DPRAND()1002:              randomz=DPRAND()
1003:              do k=1,atomsinblock(i)1003:              do k=1,atomsinblock(i)
1004:                 j=movableatomlist(k+offset1)1004:                 j=movableatomlist(k+offset1)
1005:                 y(3*j-2)=y(3*j-2)+2*randomx*ligtransstep*LOCALSTEP-ligtransstep*LOCALSTEP1005:                 y(3*j-2)=y(3*j-2)+2*randomx*ligtransstep*STEP(JP)-ligtransstep*STEP(JP)
1006:                 y(3*j-1)=y(3*j-1)+2*randomy*ligtransstep*LOCALSTEP-ligtransstep*LOCALSTEP1006:                 y(3*j-1)=y(3*j-1)+2*randomy*ligtransstep*STEP(JP)-ligtransstep*STEP(JP)
1007:                 y(3*j  )=y(3*j  )+2*randomz*ligtransstep*LOCALSTEP-ligtransstep*LOCALSTEP1007:                 y(3*j  )=y(3*j  )+2*randomz*ligtransstep*STEP(JP)-ligtransstep*STEP(JP)
1008:              end do1008:              end do
1009:           end do1009:           end do
1010:         end if1010:         end if
1011:  ! check for percolation, and take a new step until we start off from a percolated structure1011:  ! check for percolation, and take a new step until we start off from a percolated structure
1012:         IF(MACROIONT) THEN1012:         IF(MACROIONT) THEN
1013:               PERCT=.TRUE.1013:               PERCT=.TRUE.
1014:               CALL PERC(y,NATOMS,PERCCUT,PERCT,.FALSE.,MYUNITNEW,.FALSE.)1014:               CALL PERC(y,NATOMS,PERCCUT,PERCT,.FALSE.,MYUNITNEW,.FALSE.)
1015: !              WRITE(*,*) 'perccut=', perccut1015: !              WRITE(*,*) 'perccut=', perccut
1016:               IF(.NOT.PERCT) then1016:               IF(.NOT.PERCT) then
1017: !               write(MYUNITNEW,*) ' takestepamber> disconnected structure detected, undoing step'1017: !               write(MYUNITNEW,*) ' takestepamber> disconnected structure detected, undoing step'


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0