hdiff output

r22305/amberinterface.f 2017-03-30 13:30:27.544479664 +0100 r22304/amberinterface.f 2017-03-30 13:30:29.836510126 +0100
666: 666: 
667: 667: 
668: integer JP, itime1, now(3), nmovableatoms,i,j,movableatomlist(nmovableatoms)668: integer JP, itime1, now(3), nmovableatoms,i,j,movableatomlist(nmovableatoms)
669: double precision        :: y(3*natoms), grad(3*natoms), ereal,ligandcentre(3),ligandcoords(3),ligandcoordsrotated(3)669: double precision        :: y(3*natoms), grad(3*natoms), ereal,ligandcentre(3),ligandcoords(3),ligandcoordsrotated(3)
670: double precision        :: rotationmatrix(3,3),twopi,pi,DPRAND,randomphi,randompsi,randomtheta,DIST, dummyz670: double precision        :: rotationmatrix(3,3),twopi,pi,DPRAND,randomphi,randompsi,randomtheta,DIST, dummyz
671: double precision        :: st,ct,sph,cph,sps,cps, VECBAX, VECBAY, VECBAZ, randomx, randomy, randomz, dummyx, dummyy671: double precision        :: st,ct,sph,cph,sps,cps, VECBAX, VECBAY, VECBAZ, randomx, randomy, randomz, dummyx, dummyy
672: logical                 :: ligmovet,mdstept1,randomseedt2,reschangedt(nres)672: logical                 :: ligmovet,mdstept1,randomseedt2,reschangedt(nres)
673: character(len=10)       :: datechar,timechar,zonechar673: character(len=10)       :: datechar,timechar,zonechar
674: integer                 :: values(8),iostatus,restemp,i1,currentresidue,resnumber674: integer                 :: values(8),iostatus,restemp,i1,currentresidue,resnumber
675: character(len=10)       :: rotmaxchangestr,rotpselectstr,rotcutoffstr,rotcentrestr,rotoccuwstr675: character(len=10)       :: rotmaxchangestr,rotpselectstr,rotcutoffstr,rotcentrestr,rotoccuwstr
 676: double precision        :: grouprotangle,grouprotangledeg
676: ! parameters677: ! parameters
677: pi=ATAN(1.0D0)*4678: pi=ATAN(1.0D0)*4
678: twopi=2.0D0*pi679: twopi=2.0D0*pi
679: ! increments with each takestepamber call680: ! increments with each takestepamber call
680: n_amb_calls=n_amb_calls+1681: n_amb_calls=n_amb_calls+1
681: if(nmovableatoms==0.and.ligmovet) then 682: if(nmovableatoms==0.and.ligmovet) then 
682:         write(MYUNITNEW,*)&683:         write(MYUNITNEW,*)&
683:         &        ' takestepamber> ERROR - need to specify movable atoms and use the MOVABLEATOMS keyword!'684:         &        ' takestepamber> ERROR - need to specify movable atoms and use the MOVABLEATOMS keyword!'
684:         STOP685:         STOP
685: end if686: end if
912:          Y(3*I1-2) = DUMMYX913:          Y(3*I1-2) = DUMMYX
913:          Y(3*I1-1) = DUMMYY914:          Y(3*I1-1) = DUMMYY
914:          Y(3*I1  ) = DUMMYZ915:          Y(3*I1  ) = DUMMYZ
915:       ENDIF916:       ENDIF
916:    END DO917:    END DO
917: !  CALL A9DUMPPDB(y(:),'checkreadin')918: !  CALL A9DUMPPDB(y(:),'checkreadin')
918: !  STOP919: !  STOP
919: ENDIF920: ENDIF
920: 921: 
921: ! 6) ATOM GROUP MOVES922: ! 6) ATOM GROUP MOVES
922: ! These have been moved into grouprotation.f90 in the GMIN source, and called923: IF(GROUPROTT.AND.dogrouprot) THEN
923: ! from mc.F924:    DO I1=1,NGROUPS
 925:       IF(ATOMGROUPPSELECT(I1).GE.DPRAND()) THEN
 926: ! Group selected to be rotated - calculate rotation angle
 927:          GROUPROTANGLE=(DPRAND()-0.5)*twopi*ATOMGROUPSCALING(I1)
 928:          GROUPROTANGLEDEG=GROUPROTANGLE*(180/pi)
 929: ! Print some into to GMIN_out for the user
 930:          WRITE(MYUNITNEW,*) 'GROUPROTATION> Rotating group ',TRIM(ADJUSTL(ATOMGROUPNAMES(I1))),' by ',GROUPROTANGLEDEG
 931: ! Call the rotation subroutine
 932:          CALL GROUPROTATION(ATOMGROUPAXIS(I1,1),ATOMGROUPAXIS(I1,2),GROUPROTANGLE,ATOMGROUPS(I1,:),y(:))
 933:       ENDIF
 934:    ENDDO 
 935: ENDIF
 936: 
924: 937: 
925: END SUBROUTINE TAKESTEPAMBER938: END SUBROUTINE TAKESTEPAMBER
926: 939: 
927: 940: 
928: SUBROUTINE A9RESTOATOM(frozenres,frozen,nfreeze,unfreeze)941: SUBROUTINE A9RESTOATOM(frozenres,frozen,nfreeze,unfreeze)
929: ! converts the array of frozen residues into frozen atoms942: ! converts the array of frozen residues into frozen atoms
930: 943: 
931: use modamber9944: use modamber9
932: 945: 
933: implicit none946: implicit none


r22305/commons.f90 2017-03-30 13:30:28.416491251 +0100 r22304/commons.f90 2017-03-30 13:30:30.668521183 +0100
119: ! csw34> PAIRDIST variables119: ! csw34> PAIRDIST variables
120: !120: !
121:       INTEGER :: NPAIRS121:       INTEGER :: NPAIRS
122:       INTEGER, ALLOCATABLE :: PAIRDIST(:,:)122:       INTEGER, ALLOCATABLE :: PAIRDIST(:,:)
123:       LOGICAL :: PAIRDISTT123:       LOGICAL :: PAIRDISTT
124: !124: !
125: ! csw34> Reporter for chirality and cis/trans checks in quench.f125: ! csw34> Reporter for chirality and cis/trans checks in quench.f
126: !126: !
127:       LOGICAL :: GOODSTRUCTURE127:       LOGICAL :: GOODSTRUCTURE
128: 128: 
129: ! GROUP ROTATION MOVE PARAMETERS 
130:       INTEGER :: GROUPROTFREQ, NGROUPS 
131:       LOGICAL :: GROUPROTT, DOGROUPROT=.FALSE. 
132:       CHARACTER(LEN=10), ALLOCATABLE :: ATOMGROUPNAMES(:) 
133:       INTEGER, ALLOCATABLE :: ATOMGROUPAXIS(:,:) 
134:       DOUBLE PRECISION, ALLOCATABLE :: ATOMGROUPSCALING(:),ATOMGROUPPSELECT(:) 
135:       LOGICAL, ALLOCATABLE :: ATOMGROUPS(:,:) 
136:        
137: ! END OF GROUP ROTATION MOVE PARAMETERS 
138:       INTEGER  NGBSITE, NPYSITE, PYBINARYTYPE1, PYSWAP(3), MAXINTERACTIONS129:       INTEGER  NGBSITE, NPYSITE, PYBINARYTYPE1, PYSWAP(3), MAXINTERACTIONS
139:    130:    
140:       DOUBLE PRECISION :: DZP1, DZP2, DZP3, DZP4, DZP5, DZP6, DZP7131:       DOUBLE PRECISION :: DZP1, DZP2, DZP3, DZP4, DZP5, DZP6, DZP7
141:       LOGICAL :: FIELDT, OHT, IHT, TDT, D5HT132:       LOGICAL :: FIELDT, OHT, IHT, TDT, D5HT
142:       DOUBLE PRECISION :: FOH, FIH, FTD, FD5H133:       DOUBLE PRECISION :: FOH, FIH, FTD, FD5H
143: 134: 
144:       CHARACTER(LEN=80) :: SYS135:       CHARACTER(LEN=80) :: SYS
145:       CHARACTER(LEN=80) :: INFILE=''136:       CHARACTER(LEN=80) :: INFILE=''
146:       CHARACTER(LEN=1), ALLOCATABLE :: BEADLETTER(:), BLNSSTRUCT(:)137:       CHARACTER(LEN=1), ALLOCATABLE :: BEADLETTER(:), BLNSSTRUCT(:)
147:       CHARACTER(LEN=130) DUMPFILE, MYFILENAME, INTEDUMPFILE138:       CHARACTER(LEN=130) DUMPFILE, MYFILENAME, INTEDUMPFILE


r22305/GMIN.tex 2017-03-30 13:30:27.848483698 +0100 r22304/GMIN.tex 2017-03-30 13:30:30.120513903 +0100
592: Subtoutine {\bf FS} was coded by Ja,es Elliott in April 2009.592: Subtoutine {\bf FS} was coded by Ja,es Elliott in April 2009.
593: 593: 
594: \item {\it GROUND\/}: when combined with keywords {\it NEON\/} or {\it ARGON\/}594: \item {\it GROUND\/}: when combined with keywords {\it NEON\/} or {\it ARGON\/}
595: uses an accurate (Aziz) potential to model the ground state neutral cluster.595: uses an accurate (Aziz) potential to model the ground state neutral cluster.
596: 596: 
597: \item {\it GROUPROTATION (freq) (offset)\/}: specifies group rotation moves for groups of atoms defined in {\rm atomgroups}. {\it freq\/} 597: \item {\it GROUPROTATION (freq) (offset)\/}: specifies group rotation moves for groups of atoms defined in {\rm atomgroups}. {\it freq\/} 
598: (optional) specified the frequency with which these moves should be made. The default, 1, specified group rotations be made every 1 steps. 598: (optional) specified the frequency with which these moves should be made. The default, 1, specified group rotations be made every 1 steps. 
599: {\it offset\/} (optional) can be used for systems with consistant ligand or cofactors to allow the ligand/cofactor group numbering to be599: {\it offset\/} (optional) can be used for systems with consistant ligand or cofactors to allow the ligand/cofactor group numbering to be
600: system independant. For example, if there are 3500 atoms in a protein, and the ligand starts at atom 3501, setting {\it offset} to 3500 means600: system independant. For example, if there are 3500 atoms in a protein, and the ligand starts at atom 3501, setting {\it offset} to 3500 means
601: that the GROUP in {\textrm atomgroups} numbering starts at 1 again. The default {\it offset\/} is 0. Currently this is only usable with 601: that the GROUP in {\textrm atomgroups} numbering starts at 1 again. The default {\it offset\/} is 0. Currently this is only usable with 
602: {\it AMBER9\/} and {\it CHARMM\/}.602: {\it AMBER9\/}.
603: 603: 
604: The {\textrm atomgroups} file is formatted as follows:604: The {\textrm atomgroups} file is formatted as follows:
605: 605: 
606: {\it GROUP name bondatom1 bondatom2 groupsize rotationscalefactor probselect}606: {\it GROUP name bondatom1 bondatom2 groupsize rotationscalefactor probselect}
607: 607: 
608: {\it groupatom1}608: {\it groupatom1}
609: 609: 
610: {\it groupatom2}610: {\it groupatom2}
611: 611: 
612: {\it groupatom3}612: {\it groupatom3}


r22305/grouprotation.f90 2017-03-30 13:30:28.700495028 +0100 r22304/grouprotation.f90 2017-03-30 13:30:30.964525130 +0100
 17: !   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 17: !   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 18: ! 18: !
 19: !  19: ! 
 20: ! The GROUPROTATION subroutine allows for almost any rotation of a defined set of atoms. 20: ! The GROUPROTATION subroutine allows for almost any rotation of a defined set of atoms.
 21: ! The rotation axis is defined by two atoms (BATOMS1 and BATOM2), the group of atoms to  21: ! The rotation axis is defined by two atoms (BATOMS1 and BATOM2), the group of atoms to 
 22: ! rotate is defined by the logical array ATOMINGROUP (if element is .TRUE., that atom is 22: ! rotate is defined by the logical array ATOMINGROUP (if element is .TRUE., that atom is
 23: ! in the group), ANGLE is the rotation angle in radians and STEPCOORDS contains the current 23: ! in the group), ANGLE is the rotation angle in radians and STEPCOORDS contains the current
 24: ! atomic coordinates. 24: ! atomic coordinates.
 25: ! 25: !
 26:  26: 
 27: ! NEW ROUTINE TO DRIVE GROUPROTATION MOVES 
 28: ! JP is the parallel run ID so that only the appropriate coordinates are 
 29: ! altered during parallel runs. 
 30:       SUBROUTINE GROUPROTSTEP(JP) 
 31:       USE commons 
 32:       IMPLICIT NONE 
 33:       DOUBLE PRECISION :: DPRAND, PI, TWOPI, GROUPROTANGLE, GROUPROTANGLEDEG 
 34:       INTEGER :: I1,JP 
 35: ! Some helpful parameters 
 36:       PI=ATAN(1.0D0)*4 
 37:       TWOPI=2.0D0*PI 
 38: ! For each group....       
 39:       DO I1=1,NGROUPS 
 40:          IF(ATOMGROUPPSELECT(I1).GE.DPRAND()) THEN 
 41: ! Group selected to be rotated - calculate rotation angle 
 42:             GROUPROTANGLE=(DPRAND()-0.5)*twopi*ATOMGROUPSCALING(I1) 
 43:             GROUPROTANGLEDEG=GROUPROTANGLE*(180/pi) 
 44: ! Print some into to GMIN_out for the user 
 45:             WRITE(MYUNIT,*) 'GROUPROTATION> Rotating group ',TRIM(ADJUSTL(ATOMGROUPNAMES(I1))),' by ',GROUPROTANGLEDEG 
 46: ! Call the rotation subroutine 
 47:             CALL GROUPROTATION(ATOMGROUPAXIS(I1,1),ATOMGROUPAXIS(I1,2),GROUPROTANGLE,ATOMGROUPS(I1,:),COORDS(:,JP)) 
 48:          ENDIF 
 49:       ENDDO  
 50:       END SUBROUTINE GROUPROTSTEP 
 51:  
 52:       SUBROUTINE GROUPROTATION(BATOM1,BATOM2,ANGLE,ATOMINGROUP,STEPCOORDS) 27:       SUBROUTINE GROUPROTATION(BATOM1,BATOM2,ANGLE,ATOMINGROUP,STEPCOORDS)
 53:       USE commons 28:       USE commons
 54:       IMPLICIT NONE 29:       IMPLICIT NONE
 55:       INTEGER :: BATOM1, BATOM2, I1 30:       INTEGER :: BATOM1, BATOM2, I1
 56:       DOUBLE PRECISION :: BVECTOR(3), LENGTH, ANGLE, DUMMYMAT(3,3)=0.0D0, ROTMAT(3,3) 31:       DOUBLE PRECISION :: BVECTOR(3), LENGTH, ANGLE, DUMMYMAT(3,3)=0.0D0, ROTMAT(3,3)
 57:       DOUBLE PRECISION :: GROUPATOM(3), GROUPATOMROT(3), STEPCOORDS(3*NATOMS) 32:       DOUBLE PRECISION :: GROUPATOM(3), GROUPATOMROT(3), STEPCOORDS(3*NATOMS)
 58:       LOGICAL :: ATOMINGROUP(NATOMS) 33:       LOGICAL :: ATOMINGROUP(NATOMS)
 59: ! STEP 1 34: ! STEP 1
 60: ! Produce notmalised bond vector corresponding to the rotation axis 35: ! Produce notmalised bond vector corresponding to the rotation axis
 61: ! BATOM1 and BATOM2 are the atoms defining this vector 36: ! BATOM1 and BATOM2 are the atoms defining this vector


r22305/Makefile 2017-03-30 13:30:28.120487319 +0100 r22304/Makefile 2017-03-30 13:30:30.404517675 +0100
390: 390: 
391: #read_cmd_args.f90: read_cmd_args.F90391: #read_cmd_args.f90: read_cmd_args.F90
392: 392: 
393: # }}}393: # }}}
394: ###################################### DEPENDENCIES ###################################### {{{394: ###################################### DEPENDENCIES ###################################### {{{
395: ${GPROG}: libmyblas.a libmylapack.a395: ${GPROG}: libmyblas.a libmylapack.a
396: ${CPROG}: libmyblas.a libmylapack.a libcharmm.a396: ${CPROG}: libmyblas.a libmylapack.a libcharmm.a
397: ${AMHPROG}: commons.o libmyblas.a libmylapack.a libamh.a397: ${AMHPROG}: commons.o libmyblas.a libmylapack.a libamh.a
398: ${AMBPROG}: libmyblas.a libmylapack.a libamber.a porfuncs.o398: ${AMBPROG}: libmyblas.a libmylapack.a libamber.a porfuncs.o
399: libcharmm.a: commons.o modcharmm.o modmxatms.o399: libcharmm.a: commons.o modcharmm.o modmxatms.o
400: libamber.a: commons.o modamber9.o porfuncs.o 400: libamber.a: commons.o modamber9.o porfuncs.o grouprotation.o
401: #${OBJS2}: ${OBJS1} 401: #${OBJS2}: ${OBJS1} 
402: 402: 
403: Alglue.o:      commons.o403: Alglue.o:      commons.o
404: BLJcluster.o:  commons.o404: BLJcluster.o:  commons.o
405: EAMLJ_sub.o:   commons.o405: EAMLJ_sub.o:   commons.o
406: EAMal.o:       commons.o406: EAMal.o:       commons.o
407: Gupta.o:       commons.o407: Gupta.o:       commons.o
408: MSorig.o:      commons.o modconsts.o dist.o408: MSorig.o:      commons.o modconsts.o dist.o
409: MSorigc.o:     commons.o modconsts.o dist.o409: MSorigc.o:     commons.o modconsts.o dist.o
410: MStrans.97.o:  commons.o modconsts_trans_97.o dist.o410: MStrans.97.o:  commons.o modconsts_trans_97.o dist.o


r22305/mc.F 2017-03-30 13:30:29.260502483 +0100 r22304/mc.F 2017-03-30 13:30:31.508532354 +0100
 27: !> \param SCALEFAC 27: !> \param SCALEFAC
 28: !> \param SCREENC 28: !> \param SCREENC
 29: ! }}} 29: ! }}}
 30: !op226>===================================  30: !op226>=================================== 
 31:       SUBROUTINE MC(NSTEPS,SCALEFAC,SCREENC) 31:       SUBROUTINE MC(NSTEPS,SCALEFAC,SCREENC)
 32: !op226> Declarations {{{  32: !op226> Declarations {{{ 
 33:       USE COMMONS 33:       USE COMMONS
 34:       USE qmodule , only : qmin, QMINP, INTEQMIN 34:       USE qmodule , only : qmin, QMINP, INTEQMIN
 35:       USE modcharmm 35:       USE modcharmm
 36:       USE modamber9, only : mdstept,cisarray1,cisarray2,chiarray1,chiarray2,nocistransdna,nocistransrna, 36:       USE modamber9, only : mdstept,cisarray1,cisarray2,chiarray1,chiarray2,nocistransdna,nocistransrna,
 37:      &                      setchiral,amchpmax,doligmove,ligmovefreq, amchnmax 37:      &                      setchiral,amchpmax,doligmove,ligmovefreq, grouprott, grouprotfreq, dogrouprot,
  38:      &                      amchnmax
 38:       USE porfuncs 39:       USE porfuncs
 39:       USE AMHGLOBALS, ONLY: NMRES,OMOVI,AVEP,NUMPRO,IRES 40:       USE AMHGLOBALS, ONLY: NMRES,OMOVI,AVEP,NUMPRO,IRES
 40:       USE AMH_INTERFACES, ONLY:E_WRITE 41:       USE AMH_INTERFACES, ONLY:E_WRITE
 41:  42: 
 42:       IMPLICIT NONE 43:       IMPLICIT NONE
 43: #ifdef MPI 44: #ifdef MPI
 44:       INTEGER  MPIERR 45:       INTEGER  MPIERR
 45:       INCLUDE 'mpif.h' 46:       INCLUDE 'mpif.h'
 46:       INTEGER IS(MPI_STATUS_SIZE) 47:       INTEGER IS(MPI_STATUS_SIZE)
 47: #endif 48: #endif
519:                IF (CHANGEDE.AND.NEWRESTART) THEN520:                IF (CHANGEDE.AND.NEWRESTART) THEN
520:                   CALL NEWRES(J1,JP,JBEST,EBEST,BESTCOORDS,EPPREV,POTEL,ITERATIONS,TIME,RCOORDS,521:                   CALL NEWRES(J1,JP,JBEST,EBEST,BESTCOORDS,EPPREV,POTEL,ITERATIONS,TIME,RCOORDS,
521:      1                  RMIN,RVAT,BRUN,SCREENC,QDONE,JACCPREV,NSUCCESS,NFAIL,NFAILT,NSUCCESST)522:      1                  RMIN,RVAT,BRUN,SCREENC,QDONE,JACCPREV,NSUCCESS,NFAIL,NFAILT,NSUCCESST)
522:                ENDIF523:                ENDIF
523:             ELSEIF (ABS(ELASTSYM(JP)-EPREV(JP)).GT.ECONV) THEN ! Markov minimum has changed, but SYMMETRY not called524:             ELSEIF (ABS(ELASTSYM(JP)-EPREV(JP)).GT.ECONV) THEN ! Markov minimum has changed, but SYMMETRY not called
524:                NSYMREM=0                                       ! Should therefore reset NSYMREM.525:                NSYMREM=0                                       ! Should therefore reset NSYMREM.
525:             ENDIF526:             ENDIF
526: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!527: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
527: ! START OF STEP TAKING CALLS!                                                                            528: ! START OF STEP TAKING CALLS!                                                                            
528: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!529: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
529: ! Set switch variables for moves that are not always performed 
530:                IF(GROUPROTT.AND.MOD(J1,GROUPROTFREQ).EQ.0) THEN 
531:                        DOGROUPROT=.TRUE. 
532:                ENDIF 
533: !530: !
534: ! csw34> Coordinates are saved so that moves can be undone531: ! csw34> Coordinates are saved so that moves can be undone
535: !532: !
536:                   SAVECOORDS(1:3*NATOMS)=COORDS(1:3*NATOMS,JP)533:                   SAVECOORDS(1:3*NATOMS)=COORDS(1:3*NATOMS,JP)
537: ! csw34> If you want to look at the effect of moves, you can dump out534: ! csw34> If you want to look at the effect of moves, you can dump out
538: ! the structure BEFORE the move here.535: ! the structure BEFORE the move here.
539: !                 CALL A9DUMPPDB(COORDS(:,JP),"beforemove")536: !                 CALL A9DUMPPDB(COORDS(:,JP),"beforemove")
540: !                 CALL CHARMMDUMP(COORDS(:,JP),'beforemove')537: !                 CALL CHARMMDUMP(COORDS(:,JP),'beforemove')
541: 538: 
542: !539: !
543: ! CHARMM STEP TAKING540: ! CHARMM STEP TAKING
544: !541: !
545:                IF (CHRMMT) THEN542:                IF (CHRMMT) THEN
546:                   IF (CHMDT.AND.MOD(J1,CHMDFREQ).EQ.0) THEN543:                   IF (CHMDT.AND.MOD(J1,CHMDFREQ).EQ.0) THEN
547:                      CALL CHMD(JP)544:                      CALL CHMD(JP)
548:                   ELSE545:                   ELSE
549: !                    CALL CHARMMDUMP(COORDS(1:3*NATOMS,JP),'beforestep')546: !                    CALL CHARMMDUMP(COORDS(1:3*NATOMS,JP),'beforestep')
550:                      IF (CHRIGIDTRANST.AND.MOD(J1,FTRANS).EQ.0) CALL MKRIGIDTRANS(JP)547:                      IF (CHRIGIDTRANST.AND.MOD(J1,FTRANS).EQ.0) CALL MKRIGIDTRANS(JP)
551:                      IF (CHRIGIDROTT.AND.MOD(J1,FROT).EQ.0) CALL MKRIGIDROT(JP)548:                      IF (CHRIGIDROTT.AND.MOD(J1,FROT).EQ.0) CALL MKRIGIDROT(JP)
552:                      IF (MOD(J1,CHFREQ).EQ.0) CALL TAKESTEPCH(JP)549:                      IF (MOD(J1,CHFREQ).EQ.0) CALL TAKESTEPCH(JP)
553: ! Do group rotation moves 
554:                      IF(GROUPROTT.AND.DOGROUPROT) CALL GROUPROTSTEP(JP)  
555:  
556: ! bs360: check the perturbed structure prior minimization (for debugging reasons)550: ! bs360: check the perturbed structure prior minimization (for debugging reasons)
557: !#ifdef MPI551: !#ifdef MPI
558: !                     CALL CHARMMDUMP(COORDS(1:3*NATOMS,JP),'afterstep.'//TRIM(ADJUSTL(ISTR)))552: !                     CALL CHARMMDUMP(COORDS(1:3*NATOMS,JP),'afterstep.'//TRIM(ADJUSTL(ISTR)))
559: !#else553: !#else
560: !                     CALL CHARMMDUMP(COORDS(1:3*NATOMS,JP),'afterstep')554: !                     CALL CHARMMDUMP(COORDS(1:3*NATOMS,JP),'afterstep')
561: !#endif555: !#endif
562: !               seed the random number generator with system time  + MYNODE (for MPI runs)556: !               seed the random number generator with system time  + MYNODE (for MPI runs)
563:                      IF (RANDOMSEEDT) THEN557:                      IF (RANDOMSEEDT) THEN
564:                          CALL DATE_AND_TIME(datechar,timechar,zonechar,values)558:                          CALL DATE_AND_TIME(datechar,timechar,zonechar,values)
565:                          itime1= values(6)*60 + values(7)559:                          itime1= values(6)*60 + values(7)
637:                      ALLOCATE(MOVABLEATOMLIST(NATOMS))631:                      ALLOCATE(MOVABLEATOMLIST(NATOMS))
638:                      NMOVABLEATOMS=NATOMS632:                      NMOVABLEATOMS=NATOMS
639:                   ENDIF633:                   ENDIF
640:                   DISTOK=.FALSE.634:                   DISTOK=.FALSE.
641:                   LOCALCOUNT=0635:                   LOCALCOUNT=0
642:                   DO WHILE (.NOT.DISTOK)636:                   DO WHILE (.NOT.DISTOK)
643:                      LOCALCOUNT=LOCALCOUNT+1637:                      LOCALCOUNT=LOCALCOUNT+1
644:                      IF (LIGMOVET.AND.MOD(J1,ligmovefreq).EQ.0) THEN638:                      IF (LIGMOVET.AND.MOD(J1,ligmovefreq).EQ.0) THEN
645:                         doligmove=.TRUE.639:                         doligmove=.TRUE.
646:                      ENDIF640:                      ENDIF
 641:                      IF(GROUPROTT.AND.MOD(J1,grouprotfreq).EQ.0) THEN
 642:                         dogrouprot=.TRUE.
 643:                      ENDIF
647:                      644:                      
648:                      IF (DEBUG) THEN645:                      IF (DEBUG) THEN
649:                         WRITE(MYUNIT, '(A)') '=== PRE-TAKESTEP COORDS ENERGY ==='646:                         WRITE(MYUNIT, '(A)') '=== PRE-TAKESTEP COORDS ENERGY ==='
650:                         CALL POTENTIAL(COORDS(:,JP),GRAD,OPOTEL,.FALSE.,.FALSE.)647:                         CALL POTENTIAL(COORDS(:,JP),GRAD,OPOTEL,.FALSE.,.FALSE.)
651:                         WRITE(MYUNIT, '(A, F20.10)') 'Energy = ', OPOTEL648:                         WRITE(MYUNIT, '(A, F20.10)') 'Energy = ', OPOTEL
652:                         WRITE(MYUNIT, '(A)') '=== PRE-TAKESTEP COORDSO ENERGY ==='649:                         WRITE(MYUNIT, '(A)') '=== PRE-TAKESTEP COORDSO ENERGY ==='
653:                         CALL POTENTIAL(COORDSO(:,JP),GRAD,OPOTEL,.FALSE.,.FALSE.)650:                         CALL POTENTIAL(COORDSO(:,JP),GRAD,OPOTEL,.FALSE.,.FALSE.)
654:                         WRITE(MYUNIT, '(A, F20.10)') 'Energy = ', OPOTEL651:                         WRITE(MYUNIT, '(A, F20.10)') 'Energy = ', OPOTEL
655: 652: 
656:                         OPEN(1473, FILE="prestepcoordsfile", POSITION="APPEND", STATUS="unknown", form="formatted")653:                         OPEN(1473, FILE="prestepcoordsfile", POSITION="APPEND", STATUS="unknown", form="formatted")
681:                      678:                      
682:                         WRITE(MYUNIT, '(A)') '=== POST-TAKESTEP COORDS ENERGY ==='679:                         WRITE(MYUNIT, '(A)') '=== POST-TAKESTEP COORDS ENERGY ==='
683:                         CALL POTENTIAL(COORDS(:,JP),GRAD,OPOTEL,.FALSE.,.FALSE.)680:                         CALL POTENTIAL(COORDS(:,JP),GRAD,OPOTEL,.FALSE.,.FALSE.)
684:                         WRITE(MYUNIT, '(A, F20.10)') 'Energy = ', OPOTEL681:                         WRITE(MYUNIT, '(A, F20.10)') 'Energy = ', OPOTEL
685:                         WRITE(MYUNIT, '(A)') '=== POST-TAKESTEP COORDSO ENERGY ==='682:                         WRITE(MYUNIT, '(A)') '=== POST-TAKESTEP COORDSO ENERGY ==='
686:                         CALL POTENTIAL(COORDSO(:,JP),GRAD,OPOTEL,.FALSE.,.FALSE.)683:                         CALL POTENTIAL(COORDSO(:,JP),GRAD,OPOTEL,.FALSE.,.FALSE.)
687:                         WRITE(MYUNIT, '(A, F20.10)') 'Energy = ', OPOTEL684:                         WRITE(MYUNIT, '(A, F20.10)') 'Energy = ', OPOTEL
688:                      END IF685:                      END IF
689:                      686:                      
690:                      doligmove=.FALSE.687:                      doligmove=.FALSE.
 688:                      dogrouprot=.FALSE.
691: !689: !
692: !  seed the random number generator with system time + MYNODE (for MPI runs)690: !  seed the random number generator with system time + MYNODE (for MPI runs)
693: !691: !
694:                      IF (RANDOMSEEDT) THEN692:                      IF (RANDOMSEEDT) THEN
695:                         CALL DATE_AND_TIME(DATECHAR,TIMECHAR,ZONECHAR,VALUES)693:                         CALL DATE_AND_TIME(DATECHAR,TIMECHAR,ZONECHAR,VALUES)
696:                         ITIME1= VALUES(6)*60 + VALUES(7)694:                         ITIME1= VALUES(6)*60 + VALUES(7)
697:                         CALL SDPRND(ITIME1+MYNODE)695:                         CALL SDPRND(ITIME1+MYNODE)
698:                      ENDIF696:                      ENDIF
699:                      IF (AMCHPMAX.EQ.0) THEN697:                      IF (AMCHPMAX.EQ.0) THEN
700:                         CALL TAKESTEP(JP)698:                         CALL TAKESTEP(JP)
701:                      ELSE699:                      ELSE
702: !     msb50> New AMBER dihedral move routine700: !     msb50> New AMBER dihedral move routine
703:                         CALL TAKESTEPAMM(COORDS(:,JP), DEBUG, STEP(JP))701:                         CALL TAKESTEPAMM(COORDS(:,JP), DEBUG, STEP(JP))
704:                      ENDIF702:                      ENDIF
705: ! Do group rotation moves 
706:                      IF(GROUPROTT.AND.DOGROUPROT) CALL GROUPROTSTEP(JP)  
707: !     csw34> Check distances for groups defined in movableatoms file703: !     csw34> Check distances for groups defined in movableatoms file
708: !            If A->B > ABTHRESH or A->C > ACTHRESH, the step is discarded and we try again 704: !            If A->B > ABTHRESH or A->C > ACTHRESH, the step is discarded and we try again 
709:                      IF (LOCALSAMPLET) THEN705:                      IF (LOCALSAMPLET) THEN
710:                         CALL A9DISTCHECK(COORDS(:,JP),DISTOK)706:                         CALL A9DISTCHECK(COORDS(:,JP),DISTOK)
711:                         IF (.NOT.DISTOK) COORDS(:,JP)=SAVECOORDS(:)707:                         IF (.NOT.DISTOK) COORDS(:,JP)=SAVECOORDS(:)
712:                      ELSE708:                      ELSE
713:                         DISTOK=.TRUE.709:                         DISTOK=.TRUE.
714:                      ENDIF710:                      ENDIF
715:                   ENDDO711:                   ENDDO
716: !712: !
739: ! Same for DONTMOVE atoms735: ! Same for DONTMOVE atoms
740: ! 736: ! 
741:                   IF(DONTMOVET) THEN737:                   IF(DONTMOVET) THEN
742:                      DO J2=1,NATOMS738:                      DO J2=1,NATOMS
743:                         IF (DONTMOVE(J2)) THEN739:                         IF (DONTMOVE(J2)) THEN
744:                            COORDS(3*(J2-1)+1:3*(J2-1)+3,JP)=SAVECOORDS(3*(J2-1)+1:3*(J2-1)+3)740:                            COORDS(3*(J2-1)+1:3*(J2-1)+3,JP)=SAVECOORDS(3*(J2-1)+1:3*(J2-1)+3)
745:                         ENDIF741:                         ENDIF
746:                      ENDDO742:                      ENDDO
747:                   ENDIF743:                   ENDIF
748:                ENDIF744:                ENDIF
749:   
750: ! 
751: ! Reset switch variables for steps not done every time 
752: ! 
753:                      dogrouprot=.FALSE. 
754:                745:                
755: !!!!!!!!!!!!!!!!!!!!!!!!!!!746: !!!!!!!!!!!!!!!!!!!!!!!!!!!
756: ! END OF STEP TAKING CALLS!747: ! END OF STEP TAKING CALLS!
757: !!!!!!!!!!!!!!!!!!!!!!!!!!!748: !!!!!!!!!!!!!!!!!!!!!!!!!!!
758: !749: !
759: ! csw34> If you want to look at the effect of moves, you can dump out750: ! csw34> If you want to look at the effect of moves, you can dump out
760: ! the structure AFTER the move here.751: ! the structure AFTER the move here.
761: !              CALL A9DUMPPDB(COORDS(:,JP),"aftermove")752: !              CALL A9DUMPPDB(COORDS(:,JP),"aftermove")
762: !              CALL CHARMMDUMP(COORDS(:,JP),"aftermove")753: !              CALL CHARMMDUMP(COORDS(:,JP),"aftermove")
763:             754:             


r22305/modamber9.f90 2017-03-30 13:30:29.532506085 +0100 r22304/modamber9.f90 2017-03-30 13:30:31.792536127 +0100
 37: ! rotoccuw = the amount the occupation frequency affects the rotamer selection i.e. 37: ! rotoccuw = the amount the occupation frequency affects the rotamer selection i.e.
 38: !            rotoccuw = 0.0 -> all rotamers possible 38: !            rotoccuw = 0.0 -> all rotamers possible
 39: !            rotoccuw = 0.004 -> only rotamers with a > 0.4% occupation selected 39: !            rotoccuw = 0.004 -> only rotamers with a > 0.4% occupation selected
 40: ! rotcentre = residue id used to specify centre of rotamer moves (ligand maybe?) 40: ! rotcentre = residue id used to specify centre of rotamer moves (ligand maybe?)
 41: ! rotcuttoff = selection probability decays linearly from the centre (above) to the cutoff 41: ! rotcuttoff = selection probability decays linearly from the centre (above) to the cutoff
 42:       LOGICAL :: ROTAMERT 42:       LOGICAL :: ROTAMERT
 43:       INTEGER :: ROTMAXCHANGE, ROTCENTRE 43:       INTEGER :: ROTMAXCHANGE, ROTCENTRE
 44:       DOUBLE PRECISION :: ROTPSELECT, ROTOCCUW, ROTCUTOFF  44:       DOUBLE PRECISION :: ROTPSELECT, ROTOCCUW, ROTCUTOFF 
 45: ! END OF ROTAMER MOVE PARAMETERS 45: ! END OF ROTAMER MOVE PARAMETERS
 46:  46: 
  47: ! GROUP ROTATION MOVE PARAMETERS
  48:       INTEGER :: GROUPROTFREQ, NGROUPS
  49:       LOGICAL :: GROUPROTT, DOGROUPROT=.FALSE.
  50:       CHARACTER(LEN=10), ALLOCATABLE :: ATOMGROUPNAMES(:)
  51:       INTEGER, ALLOCATABLE :: ATOMGROUPAXIS(:,:)
  52:       DOUBLE PRECISION, ALLOCATABLE :: ATOMGROUPSCALING(:),ATOMGROUPPSELECT(:)
  53:       LOGICAL, ALLOCATABLE :: ATOMGROUPS(:,:)
  54:       
  55: ! END OF GROUP ROTATION MOVE PARAMETERS
 47:       INTEGER :: n_amb_calls=0       56:       INTEGER :: n_amb_calls=0      
 48: !      CHARACTER(20) AMBERPRMTOP  57: !      CHARACTER(20) AMBERPRMTOP 
 49: !      DOUBLE PRECISION xbar, ybar, zbar 58: !      DOUBLE PRECISION xbar, ybar, zbar
 50: !   DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE        :: y 59: !   DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE        :: y
 51:    double precision,  dimension(:), allocatable :: x 60:    double precision,  dimension(:), allocatable :: x
 52:    integer, dimension(:), allocatable :: ix, ipairs 61:    integer, dimension(:), allocatable :: ix, ipairs
 53:    character(len=4), dimension(:), allocatable :: ih 62:    character(len=4), dimension(:), allocatable :: ih
 54:    integer :: myunitnew,myunit2,mdcrd_unit,mdinfo_unit,ambpdb_unit,ambxyz_unit,ambrst_unit,ambfinalio_node 63:    integer :: myunitnew,myunit2,mdcrd_unit,mdinfo_unit,ambpdb_unit,ambxyz_unit,ambrst_unit,ambfinalio_node
 55: logical master 64: logical master
 56: common/extra_logical/master 65: common/extra_logical/master


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0