hdiff output

r21666/amberinterface.f 2017-01-21 10:32:14.831188235 +0000 r21665/amberinterface.f 2017-01-21 10:32:19.223188235 +0000
875:    CURRENTRESIDUE=0875:    CURRENTRESIDUE=0
876:    OPEN(UNIT=222,file='afterrotamer.xyz',status='old')876:    OPEN(UNIT=222,file='afterrotamer.xyz',status='old')
877:    DO I1=1,NATOM877:    DO I1=1,NATOM
878:       IF(I1==1) THEN878:       IF(I1==1) THEN
879:          RESNUMBER=1879:          RESNUMBER=1
880:       END IF880:       END IF
881:       IF(ix(RESNUMBER+i02-1)==I1) THEN881:       IF(ix(RESNUMBER+i02-1)==I1) THEN
882:          CURRENTRESIDUE=RESNUMBER882:          CURRENTRESIDUE=RESNUMBER
883:          RESNUMBER = RESNUMBER + 1883:          RESNUMBER = RESNUMBER + 1
884:       END IF884:       END IF
885:       READ(222,*) DUMMYX, DUMMYY, DUMMYZ885:       READ(unit=222,*) DUMMYX, DUMMYY, DUMMYZ
886:       IF(RESCHANGEDT(CURRENTRESIDUE)) THEN 886:       IF(RESCHANGEDT(CURRENTRESIDUE)) THEN 
887:          Y(3*I1-2) = DUMMYX887:          Y(3*I1-2) = DUMMYX
888:          Y(3*I1-1) = DUMMYY888:          Y(3*I1-1) = DUMMYY
889:          Y(3*I1  ) = DUMMYZ889:          Y(3*I1  ) = DUMMYZ
890:       ENDIF890:       ENDIF
891:    END DO891:    END DO
892: !  CALL A9DUMPPDB(y(:),'checkreadin')892: !  CALL A9DUMPPDB(y(:),'checkreadin')
893: !  STOP893: !  STOP
894: ENDIF894: ENDIF
895: 895: 


r21666/build.csh 2017-01-21 10:32:17.235188235 +0000 r21665/build.csh 2017-01-21 10:32:21.555188235 +0000
496: endif496: endif
497: if ( $exetype == static ) then497: if ( $exetype == static ) then
498:   echo 'build.csh> exetype = static'498:   echo 'build.csh> exetype = static'
499: else if ( $exetype == dynamic ) then499: else if ( $exetype == dynamic ) then
500:   echo 'build.csh> exetype = dynamic'500:   echo 'build.csh> exetype = dynamic'
501: else501: else
502:   echo 'build.csh> exetype = compiler default'502:   echo 'build.csh> exetype = compiler default'
503: endif503: endif
504: 504: 
505: # get OPTIM version number505: # get OPTIM version number
506: #if (! -e VERSION ) then506: if (! -e VERSION ) then
507: #  echo "build.csh> ERROR: File 'VERSION' was not found - corrupted source directory or invalid path"507:   echo "build.csh> ERROR: File 'VERSION' was not found - corrupted source directory or invalid path"
508: #  exit508:   exit
509: #else509: else
510: #  set version = `cat VERSION`510:   set version = `cat VERSION`
511: #  setenv VERSION $version511:   setenv VERSION $version
512: #  echo "build.csh> version = $version"512:   echo "build.csh> version = $version"
513: #endif513: endif
514: 514: 
515: # generate the name of the executable and appropriate for it make options515: # generate the name of the executable and appropriate for it make options
516: if (! -e ../bin ) mkdir ../bin516: if (! -e ../bin ) mkdir ../bin
517: if (! -e ../bin/$compiler ) mkdir ../bin/$compiler517: if (! -e ../bin/$compiler ) mkdir ../bin/$compiler
518: if ( $target == optim ) then518: if ( $target == optim ) then
519:   set EXE = "../bin/$compiler/$programname"519:   set EXE = "../bin/$compiler/$programname.$version"
520:   set BLAS_EXCLUDE_LIST = ""520:   set BLAS_EXCLUDE_LIST = ""
521:   set CTYPE = ""521:   set CTYPE = ""
522:   set PREFLX = ""522:   set PREFLX = ""
523:   set FCMDIR = ""523:   set FCMDIR = ""
524:   set PREFDIR = ""524:   set PREFDIR = ""
525:   set SRC31 = ""525:   set SRC31 = ""
526:   set LIBDIR31 = ""526:   set LIBDIR31 = ""
527: else if ( $target == amb9optim ) then527: else if ( $target == amb9optim ) then
528:   set EXE = "../bin/$compiler/A9$programname"528:   set EXE = "../bin/$compiler/A9$programname.$version"
529:   set BLAS_EXCLUDE_LIST = ""529:   set BLAS_EXCLUDE_LIST = ""
530:   set CTYPE = ""530:   set CTYPE = ""
531:   set NABHOME = "../../NAB"531:   set NABHOME = "../../NAB"
532:   set PREFLX = ""532:   set PREFLX = ""
533:   set FCMDIR = ""533:   set FCMDIR = ""
534:   set PREFDIR = ""534:   set PREFDIR = ""
535:   set SRC31 = ""535:   set SRC31 = ""
536:   set LIBDIR31 = ""536:   set LIBDIR31 = ""
537: else if ( $target == coptim ) then537: else if ( $target == coptim ) then
538:   set EXE = "../bin/$compiler/C$programname"538:   set EXE = "../bin/$compiler/C$programname.$version"
539:   set BLAS_EXCLUDE_LIST = "dnrm2.o daxpy.o dcopy.o ddot.o"539:   set BLAS_EXCLUDE_LIST = "dnrm2.o daxpy.o dcopy.o ddot.o"
540:   set CTYPE = C31540:   set CTYPE = C31
541:   set c31src = $c31src541:   set c31src = $c31src
542:   echo "build,csh> c31src reset to " $c31src542:   echo "build,csh> c31src reset to " $c31src
543:   set FCMDIR = $c31src"/source/fcm"543:   set FCMDIR = $c31src"/source/fcm"
544:   echo "build.csh> Assuming the platform is 'gnu' when compiling c31"544:   echo "build.csh> Assuming the platform is 'gnu' when compiling c31"
545:   set PREFLX = $c31src"/tool/prefx_gnu"545:   set PREFLX = $c31src"/tool/prefx_gnu"
546:   set PREFDIR = $c31src"/build/gnu"546:   set PREFDIR = $c31src"/build/gnu"
547:   set LIBDIR31 = $c31src"/lib/gnu"547:   set LIBDIR31 = $c31src"/lib/gnu"
548:   set SRC31 = "charmm_main.src energy.src"548:   set SRC31 = "charmm_main.src energy.src"
549: else if ( $target == unoptim ) then549: else if ( $target == unoptim ) then
550:   set EXE = "../bin/$compiler/UN$programname"550:   set EXE = "../bin/$compiler/UN$programname.$version"
551:   set BLAS_EXCLUDE_LIST = ""551:   set BLAS_EXCLUDE_LIST = ""
552:   set CTYPE = ""552:   set CTYPE = ""
553:   set PREFLX = ""553:   set PREFLX = ""
554:   set FCMDIR = ""554:   set FCMDIR = ""
555:   set PREFDIR = ""555:   set PREFDIR = ""
556:   set SRC31 = ""556:   set SRC31 = ""
557:   set LIBDIR31 = ""557:   set LIBDIR31 = ""
558: else if ( $target == amoptim ) then558: else if ( $target == amoptim ) then
559:   set EXE = "../bin/$compiler/AM$programname"559:   set EXE = "../bin/$compiler/AM$programname.$version"
560:   set BLAS_EXCLUDE_LIST = ""560:   set BLAS_EXCLUDE_LIST = ""
561:   set CTYPE = ""561:   set CTYPE = ""
562:   set PREFLX = ""562:   set PREFLX = ""
563:   set FCMDIR = ""563:   set FCMDIR = ""
564:   set PREFDIR = ""564:   set PREFDIR = ""
565:   set SRC31 = ""565:   set SRC31 = ""
566:   set LIBDIR31 = ""566:   set LIBDIR31 = ""
567: else if ( $target == amhoptim ) then567: else if ( $target == amhoptim ) then
568:   set EXE = "../bin/$compiler/AMH$programname"568:   set EXE = "../bin/$compiler/AMH$programname.$version"
569:   set BLAS_EXCLUDE_LIST = ""569:   set BLAS_EXCLUDE_LIST = ""
570:   set CTYPE = ""570:   set CTYPE = ""
571:   set PREFLX = ""571:   set PREFLX = ""
572:   set FCMDIR = ""572:   set FCMDIR = ""
573:   set PREFDIR = ""573:   set PREFDIR = ""
574:   set SRC31 = ""574:   set SRC31 = ""
575:   set LIBDIR31 = ""575:   set LIBDIR31 = ""
576: else if ( $target == jboptim ) then576: else if ( $target == jboptim ) then
577:   if ( $compiler != ifort ) then577:   if ( $compiler != ifort ) then
578:     echo "build.csh> ERROR: can only compile Bowman potential with ifort"578:     echo "build.csh> ERROR: can only compile Bowman potential with ifort"
579:          exit579:          exit
580:   endif580:   endif
581:   set EXE = "../bin/$compiler/JB$programname."581:   set EXE = "../bin/$compiler/JB$programname.$version"
582:   set BLAS_EXCLUDE_LIST = ""582:   set BLAS_EXCLUDE_LIST = ""
583:   set CTYPE = ""583:   set CTYPE = ""
584:   set PREFLX = ""584:   set PREFLX = ""
585:   set FCMDIR = ""585:   set FCMDIR = ""
586:   set PREFDIR = ""586:   set PREFDIR = ""
587:   set SRC31 = ""587:   set SRC31 = ""
588:   set LIBDIR31 = ""588:   set LIBDIR31 = ""
589: else if ( $target == clean || $target == cleanall ) then589: else if ( $target == clean || $target == cleanall ) then
590:   set EXE = $target590:   set EXE = $target
591:   set BLAS_EXCLUDE_LIST = ""591:   set BLAS_EXCLUDE_LIST = ""


r21666/compile.csh 2017-01-21 10:32:15.079188235 +0000 r21665/compile.csh 2017-01-21 10:32:19.515188235 +0000
  1: #!/bin/tcsh  1: #!/bin/tcsh
  2:   2: 
  3: ./install.com gnu large PGF90 keepo keepf AMD OPT > build.log  3: ./install.com gnu medium PGF90 keepo keepf AMD OPT > build.log


r21666/header.csh 2017-01-21 10:32:17.491188235 +0000 r21665/header.csh 2017-01-21 10:32:21.787188235 +0000
 18: #   along with this program; if not, write to the Free Software 18: #   along with this program; if not, write to the Free Software
 19: #   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 19: #   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 20: # 20: #
 21:  21: 
 22: echo "MODULE OPTIMHEADER" 22: echo "MODULE OPTIMHEADER"
 23: echo "     implicit none" 23: echo "     implicit none"
 24: echo "     contains" 24: echo "     contains"
 25: echo "          subroutine PrintHeader" 25: echo "          subroutine PrintHeader"
 26: echo "               implicit none" 26: echo "               implicit none"
 27: echo 27: echo
 28: echo "               write(*,'(/a)') ' OPTIM version `bash version.sh`, Copyright (C) 1999-2006 David J. Wales'" 28: echo "               write(*,'(/a)') ' OPTIM version `cat VERSION`, Copyright (C) 1999-2006 David J. Wales'"
 29: echo "               write(*,'(a)') ' OPTIM comes with ABSOLUTELY NO WARRANTY; for details supply WARRANTY as an input keyword.'" 29: echo "               write(*,'(a)') ' OPTIM comes with ABSOLUTELY NO WARRANTY; for details supply WARRANTY as an input keyword.'"
 30: echo "               write(*,'(a)') ' This is free software, and you are welcome to redistribute it'" 30: echo "               write(*,'(a)') ' This is free software, and you are welcome to redistribute it'"
 31: echo "               write(*,'(a/)') ' under certain conditions; provide keyword COPYRIGHT to see the details.'" 31: echo "               write(*,'(a/)') ' under certain conditions; provide keyword COPYRIGHT to see the details.'"
 32: echo "          end subroutine PrintHeader" 32: echo "          end subroutine PrintHeader"
 33: echo "END MODULE OPTIMHEADER" 33: echo "END MODULE OPTIMHEADER"


r21666/main.F 2017-01-21 10:32:18.431188235 +0000 r21665/main.F 2017-01-21 10:32:22.663188235 +0000
  1: svn: E195012: Unable to find repository location for 'svn+ssh://svn.ch.private.cam.ac.uk/groups/wales/trunk/PATHSAMPLE/source/main.F' in revision 21666  1: svn: E195012: Unable to find repository location for 'svn+ssh://svn.ch.private.cam.ac.uk/groups/wales/trunk/PATHSAMPLE/source/main.F' in revision 21665


r21666/Makefile 2017-01-21 10:32:18.103188235 +0000 r21665/Makefile 2017-01-21 10:32:22.331188235 +0000
  1: PROG =        ../bin/pathsample  1: PROG =        ../bin/pathsample.2.1
  2:   2: 
  3: OBJS =        common.o nodes.o porfuncs.o utils.o key.o dock.o main.o keywords.o setup.o input.o \  3: OBJS =        common.o nodes.o porfuncs.o utils.o key.o dock.o main.o keywords.o setup.o input.o \
  4:         KMCcommit.o mysystem.o sort.o KMC.o inertia.o eig.o amhdump.o charmmdump.o \  4:         KMCcommit.o mysystem.o sort.o KMC.o inertia.o eig.o amhdump.o charmmdump.o \
  5:         cycle.o mywait.o submitoptimjob.o connectodata.o mindist.o unresdump.o \  5:         cycle.o mywait.o submitoptimjob.o connectodata.o mindist.o unresdump.o \
  6:         centre.o getnewpath.o addperm.o tssearch.o \  6:         centre.o getnewpath.o addperm.o tssearch.o \
  7:         mindouble.o tsdouble.o Pfold.o NGT.o GT.o getallpaths.o cycle2.o dprand.o sdprnd.o \  7:         mindouble.o tsdouble.o Pfold.o NGT.o GT.o getallpaths.o cycle2.o dprand.o sdprnd.o \
  8:         Dijkstra.o getdpair.o Dijinit.o calcorder.o getrpair.o connectd.o getspair.o \  8:         Dijkstra.o getdpair.o Dijinit.o calcorder.o getrpair.o connectd.o getspair.o \
  9:         getpair.o pairdouble.o donedouble.o newmindist.o mergedb.o getupair.o \  9:         getpair.o pairdouble.o donedouble.o newmindist.o mergedb.o getupair.o \
 10:         GT2.o GT2data.o GT2FibonacciHeap.o GT2DLL.o GT2input.o GT2FreeMemory.o \ 10:         GT2.o GT2data.o GT2FibonacciHeap.o GT2DLL.o GT2input.o GT2FreeMemory.o \
 11:         minperm.o minpermdist.o rigidbodymod.o mathsconstants.o quaternionmatch.o \ 11:         minperm.o minpermdist.o rigidbodymod.o mathsconstants.o quaternionmatch.o \
 13:         probacc.o newconn.o getfreepair.o getfreebarrier.o kshortestpaths.o Dijinitfly.o \ 13:         probacc.o newconn.o getfreepair.o getfreebarrier.o kshortestpaths.o Dijinitfly.o \
 14:         getallmin.o myorient.o getusepair.o NGTmem.o NGTrealloc.o NGTrenorm.o \ 14:         getallmin.o myorient.o getusepair.o NGTmem.o NGTrealloc.o NGTrenorm.o \
 15:         NGTremoveid.o NGTremovei.o swapnode.o mymerge.o rigidb.o diagonalise2.o reweight.o \ 15:         NGTremoveid.o NGTremovei.o swapnode.o mymerge.o rigidb.o diagonalise2.o reweight.o \
 16:         rbperm.o Cv.o DOS.o bulkmindist.o frictionfac.o 16:         rbperm.o Cv.o DOS.o bulkmindist.o frictionfac.o
 17:  17: 
 18: # note that nag64/5.1-216 fails for large memory, but version 365 works 18: # note that nag64/5.1-216 fails for large memory, but version 365 works
 19: # large memory for pgi and ifort requires the -mcmodel flag! 19: # large memory for pgi and ifort requires the -mcmodel flag!
 20:  20: 
 21: # WARNING - points.min and point.ts created with ifort executables cannot be 21: # WARNING - points.min and point.ts created with ifort executables cannot be
 22: # read by NAG or PGI executables, and vice versa. 22: # read by NAG or PGI executables, and vice versa.
 23: # Preprocessing 
 24:    DEFS = 
 25:    CPP = /lib/cpp 
 26:    CPFLAGS = -traditional -P 
 27:    
 28:  23: 
 29: # NAG compiler 24: # NAG compiler
 30: #  use this compiler for nag/64/5.1 25: #  use this compiler for nag/64/5.1
 31:    FC = f95 26: #  FC = f95
 32: #  use this compiler for nag/64/5.2 27: #  use this compiler for nag/64/5.2
 33: #  FC = nagfor 28:    FC = nagfor
 34: #  this line is for garden variety debugging  29: #  this line is for garden variety debugging 
 35: #  FFLAGS = -132 -maxcontin=3000 -C -g -kind=byte -mismatch_all 30: #  FFLAGS = -132 -maxcontin=3000 -C -g -kind=byte -mismatch_all
 36: #  this line is for thorough but slow debugging  31: #  this line is for thorough but slow debugging 
 37: #  FFLAGS = -132 -maxcontin=3000 -C=all -mtrace=all -gline -kind=byte 32: #  FFLAGS = -132 -maxcontin=3000 -C=all -mtrace=all -gline -kind=byte
 38:    FFLAGS = -132 -maxcontin=3000 -mismatch_all -kind=byte -O0 33: #  FFLAGS = -132 -maxcontin=3000 -mismatch_all -kind=byte -O0
 39: #  FFLAGS = -132 -maxcontin=3000 -mismatch_all -kind=byte -O3 -ieee=full 34:    FFLAGS = -132 -maxcontin=3000 -mismatch_all -kind=byte -O3 -ieee=full
 40:    NAGSWITCH = nag 35:    NAGSWITCH = nag
 41:    LIBS = libmyblas.a libmylapack.a libmyblas.a  36:    LIBS = libmyblas.a libmylapack.a libmyblas.a 
 42:    LDFLAGS = -LBLAS -LLAPACK 37:    LDFLAGS = -LBLAS -LLAPACK
 43:  38: 
 44: # pathscale compiler 39: # pathscale compiler
 45: #  FC = pathf95 40: #  FC = pathf95
 46: #  FFLAGS = -extend-source  -g -C 41: #  FFLAGS = -extend-source  -g -C
 47: #  FFLAGS =  -extend-source -O3  42: #  FFLAGS =  -extend-source -O3 
 48: #  NAGSWITCH = pathscale 43: #  NAGSWITCH = pathscale
 49: #  LIBS = libmyblas.a libmylapack.a libmyblas.a  44: #  LIBS = libmyblas.a libmylapack.a libmyblas.a 
 85: # FFLAGS= -ffixed-line-length-132 -O0  80: # FFLAGS= -ffixed-line-length-132 -O0 
 86: # FFLAGS= -ffixed-line-length-132 -O3 -ftree-vectorize 81: # FFLAGS= -ffixed-line-length-132 -O3 -ftree-vectorize
 87: # FFLAGS= -ffixed-line-length-132 -g -fbounds-check -Wuninitialized -O -ftrapv  82: # FFLAGS= -ffixed-line-length-132 -g -fbounds-check -Wuninitialized -O -ftrapv 
 88: # FFLAGS= -ffixed-line-length-132 -g -fbounds-check -Wuninitialized -O -ftrapv -fimplicit-none -fno-automatic 83: # FFLAGS= -ffixed-line-length-132 -g -fbounds-check -Wuninitialized -O -ftrapv -fimplicit-none -fno-automatic
 89: # NOOPT= -O0  84: # NOOPT= -O0 
 90: # NAGSWITCH=gfortran 85: # NAGSWITCH=gfortran
 91: # SEARCH_PATH =  -I.. 86: # SEARCH_PATH =  -I..
 92: # LIBS = libmyblas.a libmylapack.a libmyblas.a  87: # LIBS = libmyblas.a libmylapack.a libmyblas.a 
 93: # LDFLAGS = -LBLAS -LLAPACK 88: # LDFLAGS = -LBLAS -LLAPACK
 94:  89: 
 95: # 
 96: # 
 97: ############################################################################################### 
 98: # Pass the subversion revision number into the code to print it in the output 
 99:    DEFS+=-DSVNVERSION="`./version.sh`" 
100: ####################################### RULES AND TARGETS ###################################### 
101:  
102: # END OF COMPILER SPECIFIC STUFF 90: # END OF COMPILER SPECIFIC STUFF
103:  91: 
104: .SUFFIXES: 92: .SUFFIXES:
105: .SUFFIXES: .o .f .F .f90 .c 93: .SUFFIXES: .o .f .f90 .c
106:  94: 
107: .f90.o: 95: .f90.o:
108:         $(FC) $(FFLAGS) -c $< 96:         $(FC) $(FFLAGS) -c $<
109: .f.o: 97: .f.o:
110:         $(FC) $(FFLAGS) -c $< 98:         $(FC) $(FFLAGS) -c $<
111: .c.o: 99: .c.o:
112:         $(CC) -c $<100:         $(CC) -c $<
113: .F.f:101: 
114:         $(CPP) $(CPFLAGS) $(DEFS) $< > $@ 
115:                  
116: # first target encountered is the default build102: # first target encountered is the default build
117: 103: 
118: default: $(PROG) 104: default: $(PROG) 
119: 105: 
120: $(PROG): $(OBJS) blas_lapack106: $(PROG): $(OBJS) blas_lapack
121:         $(FC) $(FFLAGS) -o $@ $(OBJS) $(LDFLAGS) $(LIBS)107:         $(FC) $(FFLAGS) -o $@ $(OBJS) $(LDFLAGS) $(LIBS)
122: 108: 
123: blas_lapack: libmyblas.a libmylapack.a109: blas_lapack: libmyblas.a libmylapack.a
124: libmyblas.a:110: libmyblas.a:
125:         cd ../../BLAS; make double FC="${FC}" FFLAGS="${FFLAGS}" BLAS_EXCLUDE_LIST="${BLAS_EXCLUDE_LIST}";\111:         cd ../../BLAS; make double FC="${FC}" FFLAGS="${FFLAGS}" BLAS_EXCLUDE_LIST="${BLAS_EXCLUDE_LIST}";\
126:         cp libmyblas.a ../PATHSAMPLE/source112:         cp libmyblas.a ../PATHSAMPLE/source
127: 113: 
128: libmylapack.a:114: libmylapack.a:
129:         cd ../../LAPACK; make selection FC="${FC}" FFLAGS="${FFLAGS}" NOOPT="${NOOPT}";\115:         cd ../../LAPACK; make selection FC="${FC}" FFLAGS="${FFLAGS}" NOOPT="${NOOPT}";\
130:         cp libmylapack.a ../PATHSAMPLE/source116:         cp libmylapack.a ../PATHSAMPLE/source
131: 117: 
132: porfuncs.f90: porfuncs.csh118: porfuncs.f90: porfuncs.csh
133:         ./porfuncs.csh ${NAGSWITCH} > porfuncs.f90119:         ./porfuncs.csh ${NAGSWITCH} > porfuncs.f90
134: 120: 
135: clean:121: clean:
136:         rm -f $(PROG) $(OBJS) *.mod porfuncs.f90 main.f *.lst *.a122:         rm -f $(PROG) $(OBJS) *.mod porfuncs.f90 *.lst *.a
137:         cd ../../BLAS; make clean123:         cd ../../BLAS; make clean
138:         cd ../../LAPACK; make clean124:         cd ../../LAPACK; make clean
139: $(OBJS): libmyblas.a libmylapack.a125: $(OBJS): libmyblas.a libmylapack.a
140: KMC.o:     porfuncs.o common.o126: KMC.o:     porfuncs.o common.o
141: KMCcommit.o:      common.o porfuncs.o127: KMCcommit.o:      common.o porfuncs.o
142: addperm.o:      porfuncs.o common.o128: addperm.o:      porfuncs.o common.o
143: centre.o:      common.o129: centre.o:      common.o
144: charmmdump.o:      key.o common.o utils.o130: charmmdump.o:      key.o common.o utils.o
145: connectodata.o:    key.o common.o131: connectodata.o:    key.o common.o
146: dock.o:         porfuncs.o key.o common.o nodes.o132: dock.o:         porfuncs.o key.o common.o nodes.o
147: getallpaths.o:     porfuncs.o common.o key.o133: getallpaths.o:     porfuncs.o common.o key.o
148: getallmin.o:     porfuncs.o common.o key.o134: getallmin.o:     porfuncs.o common.o key.o
149: getnewpath.o:      porfuncs.o common.o key.o135: getnewpath.o:      porfuncs.o common.o key.o
150: inertia.o:         common.o rigidbodymod.o136: inertia.o:         common.o rigidbodymod.o
151: keywords.o:      porfuncs.o nodes.o key.o common.o rigidbodymod.o137: keywords.o:      porfuncs.o nodes.o key.o common.o rigidbodymod.o
152: main.f: main.F  
153: main.o:      common.o porfuncs.o rigidbodymod.o dock.o138: main.o:      common.o porfuncs.o rigidbodymod.o dock.o
154: nodes.o:     porfuncs.o common.o139: nodes.o:     porfuncs.o common.o
155: setup.o:      porfuncs.o utils.o key.o common.o140: setup.o:      porfuncs.o utils.o key.o common.o
156: tssearch.o:   porfuncs.o key.o common.o141: tssearch.o:   porfuncs.o key.o common.o
157: unresdump.o:  common.o142: unresdump.o:  common.o
158: Pfold.o:    common.o porfuncs.o143: Pfold.o:    common.o porfuncs.o
159: cycle.o:    common.o porfuncs.o144: cycle.o:    common.o porfuncs.o
160: cycle2.o:    common.o porfuncs.o145: cycle2.o:    common.o porfuncs.o
161: mind.o: porfuncs.o146: mind.o: porfuncs.o
162: mindouble.o: common.o147: mindouble.o: common.o


r21666/OPTIM.F 2017-01-21 10:32:16.475188235 +0000 r21665/OPTIM.F 2017-01-21 10:32:20.595188235 +0000
  1: C   OPTIM: A program for optimizing geometries and calculating reaction pathways  1: svn: E195012: Unable to find repository location for 'svn+ssh://svn.ch.private.cam.ac.uk/groups/wales/trunk/OPTIM/source/OPTIM.F' in revision 21665
  2: C   Copyright (C) 1999-2006 David J. Wales 
  3: C   This file is part of OPTIM. 
  4: C 
  5: C   OPTIM is free software; you can redistribute it and/or modify 
  6: C   it under the terms of the GNU General Public License as published by 
  7: C   the Free Software Foundation; either version 2 of the License, or 
  8: C   (at your option) any later version. 
  9: C 
 10: C   OPTIM is distributed in the hope that it will be useful, 
 11: C   but WITHOUT ANY WARRANTY; without even the implied warranty of 
 12: C   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 13: C   GNU General Public License for more details. 
 14: C 
 15: C   You should have received a copy of the GNU General Public License 
 16: C   along with this program; if not, write to the Free Software 
 17: C   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 18: C 
 19:       SUBROUTINE OPTIM(F1,F2,FLSTRING) 
 20:       USE COMMONS 
 21:       USE KEY 
 22:       USE MODTWOEND 
 23:       USE MODHESS 
 24:       USE MODNEB 
 25:       USE VECCK 
 26:       USE ZWK 
 27:       USE MODCHARMM 
 28:       USE MODUNRES 
 29:       USE NEWNEBMODULE 
 30:       USE NEWCONNECTMODULE 
 31:       USE KEYNEB, NNNIMAGE=>NIMAGE 
 32:       USE MODGUESS 
 33:       USE MODMEC 
 34:       USE PORFUNCS 
 35:       USE CHARUTILS 
 36:       USE INTCOMMONS, ONLY : INTINTERPT, DESMINT, NATINT, INTMINPERMT !msb50 remove last 
 37:       USE INTCUTILS, ONLY : INTSETUP, INTCLEANUP ! msb50 last 
 38: !     USE BENCHMARKS, ONLY : MINBMT, MINBM 
 39:  
 40:       IMPLICIT NONE 
 41:       INTEGER J1, J2, NPCALL, ECALL, FCALL, SCALL, HORDER, NATOMSSAVE, F1, F2 
 42:       DOUBLE PRECISION VNEW(3*NATOMS), ENERGY, EVALMIN, RMS, VECS(3*NATOMS), QSAVE(3*NATOMS), 
 43:      1  QPLUS(3*NATOMS), LGDUMMY(3*NATOMS),RMSINITIAL,RMSFINAL,E1,E2, RMAT(3,3), 
 44:      2  DIST, OVEC(3), H1VEC(3), H2VEC(3), Q(3*NATOMS), EINITIAL, EFINAL,  
 45:      3  ETIME, FTIME, STIME, DPRAND, DCOORDS(3*NATOMS),  
 46:      4  ETS, EPLUS, EMINUS, SLENGTH, DISP, GAMMA, NTILDE,  
 47:      5  FRQSTS(3*NATOMS), FRQSPLUS(3*NATOMS), FRQSMINUS(3*NATOMS), QMINUS(3*NATOMS), DISTSF 
 48:       CHARACTER ESTRING*87, GPSTRING*80, NSTRING*80, FSTRING*80, FNAME*13, FNAMEV*18,  
 49:      1          ITSTRING*22, EOFSSTRING*15 
 50:       CHARACTER(LEN=80) FNAMEF 
 51:       CHARACTER(LEN=20) EFNAME 
 52:       DOUBLE PRECISION, ALLOCATABLE, DIMENSION(:) :: QW 
 53:       LOGICAL LDUMMY, BFGSTSSAVE 
 54:       INTEGER FRAME 
 55:       LOGICAL PVFLAG 
 56:       COMMON /PVF/ PVFLAG 
 57: C     COMMON /VN/ VNEW   !  common SV was also deleted 
 58:       COMMON /STRINGS/ ESTRING, GPSTRING, NSTRING, FSTRING 
 59:       COMMON /PCALL/ NPCALL, ECALL, FCALL, SCALL, ETIME, FTIME, STIME 
 60:       LOGICAL PATHT, DRAGT 
 61:       INTEGER NPATHFRAME, NCDONE 
 62:       COMMON /RUNTYPE/ DRAGT, PATHT, NPATHFRAME 
 63:       LOGICAL CONNECTT, DUMPPATH, READPATH, CALCRATES, STOPFIRST 
 64:       DOUBLE PRECISION TEMPERATURE, HRED, INERTIA(3,3), DIST2, DPFCT, DU(3) 
 65:       INTEGER NCONNECT, ISTAT, VERSIONTEMP 
 66:       COMMON /CONN/ STOPFIRST, CONNECTT, NCONNECT, DUMPPATH, READPATH, CALCRATES, TEMPERATURE, HRED 
 67:       LOGICAL KNOWE, KNOWG, KNOWH 
 68:       COMMON /KNOWN/ KNOWE, KNOWG, KNOWH 
 69:       CHARACTER(LEN=5) ZSYMSAVE 
 70:       CHARACTER(LEN=80) FLSTRING 
 71:       COMMON /SYS/ ZSYMSAVE 
 72:       LOGICAL PATHFAILT ! JMC 
 73: !msb50 for test 
 74: !     DOUBLE PRECISION X(3*NATOMS*60) 
 75:       COMMON /EPATH/ ETS,EPLUS,EMINUS 
 76:  
 77: ! Print OPTIM version in the output 
 78:       VERSIONTEMP=SVNVERSION 
 79:       WRITE(*, '(A,I5)') 'OPTIM version r',VERSIONTEMP 
 80: C 
 81: C  Dynamic memory allocation 
 82: C 
 83:       ALLOCATE (FROZEN(NATOMS),ZSYM(NATOMS),NR(NATOMS),STPMAX(3*NATOMS)) 
 84:       ALLOCATE (FROZENRES(NATOMS)) 
 85: C      STPMAX(:)=0.0D0 
 86:       FILTH=F1 
 87:       FILTH2=F2 
 88:       FILTHSTR=TRIM(ADJUSTL(FLSTRING)) 
 89:  
 90:       KNOWE=.FALSE. 
 91:       KNOWG=.FALSE. 
 92:       KNOWH=.FALSE. 
 93:       CALL KEYWORDS(Q) 
 94:       IF (UNRST.AND.(RKMIN.OR.BSMIN.OR.(INR.GT.-1))) THEN 
 95:          PRINT '(A)','UNRES not coded for requested optimisation option' 
 96:          CALL FLUSH(6,ISTAT) 
 97:          STOP 
 98:       ENDIF 
 99:       IF (PYGPERIODICT.OR.PYBINARYT) CALL INITIALISEPYGPERIODIC 
100:       RBATOMSMAX=10 
101:       IF (LOCALPERMDIST) ALLOCATE(RBGROUP(RBATOMSMAX)) 
102:       IF (LOCALPERMDIST) ALLOCATE(RBNINGROUP(NATOMS)) 
103:  
104:       CALL CPU_TIME(TSTART) 
105: C     IF (CONNECTT.AND.NEWNEBT) THEN 
106: C        PRINT*,'WARNING - cannot use old connect with new neb, changing to old neb' 
107: C        NEWNEBT=.FALSE. 
108: C        NEBT=.TRUE. 
109: C     ENDIF 
110:       IF ((FILTH2.EQ.0).AND.(FILTH.NE.0)) WRITE(FILTHSTR,'(I10)') FILTH ! otherwise FILTHSTR isn;t set correctly. 
111:       IF (REPELTST) ALLOCATE(REPELTS(3*NATOMS,100)) ! PREVIOUS TS GEOMETRIES TO AVOID 
112:       IF (CHECKINDEX) ALLOCATE(VECCHK(3*NATOMS,MAX(NUSEEV,HINDEX,1))) ! vectors to orthogonise to 
113:       ALLOCATE(ZWORK(3*NATOMS,MAX(NUSEEV,HINDEX,1)))                  ! partial eigenvectors storage 
114:       IF (TWOENDS.OR.CONNECTT.OR.NEWNEBT.OR.DRAGT.OR.GUESSPATHT.OR.MECCANOT.OR.MORPHT.OR.GREATCIRCLET.OR.BHINTERPT.OR.BISECTT)  
115:      &               ALLOCATE(FIN(3*NATOMS),START(3*NATOMS)) 
116:  
117:       NPCALL=0 
118:       ECALL=0 
119:       FCALL=0 
120:       SCALL=0 
121:       ETIME=0 
122:       FTIME=0 
123:       STIME=0 
124:       FRAME=1 
125:       IF (FILTH.EQ.0) THEN 
126:          FNAME='points' 
127:          FNAMEF='points.final' 
128:          FNAMEV='vector.dump' 
129:          EFNAME='energies' 
130:       ELSE 
131:          WRITE(FNAME,'(A)') 'points.'//TRIM(ADJUSTL(FILTHSTR)) 
132:          WRITE(FNAMEF,'(A)') 'points.final.'//TRIM(ADJUSTL(FILTHSTR)) 
133:          WRITE(FNAMEV,'(A)') 'vector.dump.'//TRIM(ADJUSTL(FILTHSTR)) 
134:          WRITE(EFNAME,'(A)') 'energies.'//TRIM(ADJUSTL(FILTHSTR)) 
135:       ENDIF 
136:  
137:       IF (PRINTPTS.OR.MORPHT) THEN 
138:          OPEN(UNIT=1,FILE=FNAME,STATUS='UNKNOWN') 
139:          OPEN(UNIT=2,FILE=EFNAME,STATUS='UNKNOWN') 
140:       ENDIF 
141:  
142:       IF (BFGSSTEP) NSTEPS=NSTEPS+1 
143:       IF (DUMPV) OPEN(UNIT=44,FILE=FNAMEV,STATUS='UNKNOWN') 
144:       CALL FETCHZ(Q) 
145:  
146:       IF (BLNT) THEN ! PUT THE FULL BLN LETTERS INTO ZSYM 
147:          DO J1=1,NATOMS 
148:             ZSYM(J1)=BEADLETTER(J1) // 'L' 
149:          ENDDO 
150:       ENDIF 
151:       ZSYMSAVE=ZSYM(NATOMS) 
152:       IF (UNRST) ALLOCATE(INTSTEP(NINTS)) 
153:  
154:       IF (INTMINT.OR.DESMINT.OR.INTINTERPT.OR.NATINT) THEN 
155:          CALL INTSETUP 
156:       ENDIF 
157:  
158: C ----- TESTING AND BENCHMARKS HERE ---- 
159: !     IF (MINBMT) CALL MINBM 
160: C--------------------------------------- 
161: C 
162: C  The next line is needed for parallel runs of clean/dirty maidens. 
163: C 
164:       CALL SYSTEM('echo junk > odata.read') 
165: C     BULKT=.FALSE. 
166:       IF ((ZSYMSAVE.EQ.'TT').AND.(PARAM1.NE.0.0D0)) BULKT=.TRUE. 
167:       IF ((ZSYMSAVE.EQ.'SW').AND.(PARAM1.NE.0.0D0)) BULKT=.TRUE. 
168:       IF ((ZSYMSAVE.EQ.'Z2').AND.(PARAM1.NE.0.0D0)) BULKT=.TRUE. 
169:       IF ((ZSYMSAVE.EQ.'ZF').AND.(PARAM1.NE.0.0D0)) BULKT=.TRUE. 
170:       IF ((ZSYMSAVE.EQ.'SM').AND.(PARAM1.NE.0.0D0)) BULKT=.TRUE. 
171: C     LDUMMY=(NATOMS.EQ.64).AND.(ZSYMSAVE(1:1).EQ.'W')  
172:       BULKT=(BULKT.OR. 
173:      1      (ZSYMSAVE.EQ.'ME').OR.(ZSYMSAVE.EQ.'P6').OR. 
174:      2      (ZSYMSAVE.EQ.'SC').OR.(ZSYMSAVE.EQ.'MS').OR. 
175:      3      (ZSYMSAVE.EQ.'MP').OR.(ZSYMSAVE.EQ.'JM').OR. 
176:      3      (ZSYMSAVE.EQ.'DS').OR. 
177:      4      (ZSYMSAVE.EQ.'LP').OR.(ZSYMSAVE.EQ.'LS').OR.(ZSYMSAVE.EQ.'LC').OR. 
178:      5      (ZSYMSAVE.EQ.'LK')) 
179: C     NOSHIFT=(FIELDT.OR.BFGSMINT.OR.BSMIN.OR.RKMIN.OR.NOHESS.OR.BFGSSTEP) 
180: C     IF (INR.GE.0) NOSHIFT=.FALSE. ! changed INR default value in keywords to -1 
181: C                                     This isn;t good enough - if we are doing a path and 
182: C                                     EFOL is called once to get the eigenvalues and eigenvectors 
183: C                                     then we need to SHIFT. 
184: C  Shifting only needs to be turned off if we are doing VARIABLES or BFGSTS without NOIT; 
185: C  account for this in BFGSTS. 
186: C     IF (NOIT) NOSHIFT=.FALSE. 
187: C     IF (VARIABLES) NOSHIFT=.TRUE. 
188: C     NOSHIFT=(FIELDT.OR.BFGSMINT.OR.BSMIN.OR.RKMIN.OR.NOHESS.OR.BFGSSTEP) 
189: C     IF (INR.GE.0) NOSHIFT=.FALSE. ! changed INR default value in keywords to -1 
190: C     IF (NOIT) NOSHIFT=.FALSE. 
191: C     IF (VARIABLES) NOSHIFT=.TRUE. 
192: C 
193: C  Resize the system if required. 
194: C 
195:       IF (RESIZE.NE.1.0D0) THEN 
196:          PRINT*,'Scaling coordinates by ',RESIZE 
197:          IF (ZSYMSAVE(1:1).EQ.'W') THEN 
198:             DO J1=1,3*(NATOMS/2) 
199:                Q(J1)=Q(J1)*RESIZE 
200:             ENDDO 
201:          ELSE 
202:             DO J1=1,NOPT 
203:                Q(J1)=Q(J1)*RESIZE 
204:             ENDDO 
205:          ENDIF 
206:       ENDIF 
207:       IF (CASTEP.AND.PRESSURE) CALL CLATMIN(Q,VNEW) 
208: C 
209: C  Rescale distances if we are doing LJ (input assumed for SIG=3.4 A) 
210: C 
211:       IF ((ZSYMSAVE.EQ.'AR').AND.(ZSYM(1).NE.'CA')) THEN 
212:          DO J1=1,NATOMS 
213:             Q(3*(J1-1)+1)=Q(3*(J1-1)+1)/3.4D0 
214:             Q(3*(J1-1)+2)=Q(3*(J1-1)+2)/3.4D0 
215:             Q(3*(J1-1)+3)=Q(3*(J1-1)+3)/3.4D0 
216:          ENDDO 
217:       ENDIF 
218: C 
219: C  Scale side chain bond lengths for CHARMM or AMBER for connection runs 
220: C 
221:       IF (REDUCEDBONDLENGTHT) THEN 
222:          IF (CHRMMT) CALL CHREDUCEDBONDLENGTH(Q,BLFACTOR,CBT) 
223: C         IF (AMBERT.OR.NABT) CALL AMREDUCEDBONDLENGTH(Q,BLFACTOR,CBT) 
224:       ENDIF 
225: C 
226: C     J2=0 
227: C     DO J1=1,NATOMS 
228: C        IF (IATNUM(J1).NE.0) J2=J2+1 
229: C     ENDDO 
230: C     NREAL=J2 
231: C 
232: C     CALL GMETRY(0,VEC,Q) 
233: C 
234: C  Don't call symmetry if we're doing Fenske-Hall 
235: C 
236:       IF ((ZSYMSAVE.NE.'FH').AND.(.NOT.VARIABLES).AND.(.NOT.AMBER).AND.(.NOT.AMBERT).AND.(.NOT.CHRMMT).AND. 
237:      1 (.NOT.NABT).AND.(.NOT.UNRST).AND.(.NOT.RINGPOLYMERT)) THEN 
238: C 
239: C  For W1/W2/W3/W4 potentials Q contains the centre of mass coordinates 
240: C  followed by the Euler angles and the number of molecules is NATOMS/2 
241: C 
242:          IF (ZSYMSAVE(1:1).EQ.'W') THEN 
243:  
244:             ALLOCATE(QW(9*(NATOMS/2))) 
245: C           DO J2=1,NOPT+IADD 
246: C              QSAVE(J2)=Q(J2) 
247: C           ENDDO 
248: C           DO J2=1,NATOMS  !  WCOMMENT 
249:             DO J2=1,NATOMS/2 
250:                CALL CONVERT(Q(3*(J2-1)+1),Q(3*(J2-1)+2),Q(3*(J2-1)+3), 
251: C    1                      Q(3*(NATOMS+J2-1)+1),Q(3*(NATOMS+J2-1)+2),Q(3*(NATOMS+J2-1)+3), 
252:      1                      Q(3*(NATOMS/2+J2-1)+1),Q(3*(NATOMS/2+J2-1)+2),Q(3*(NATOMS/2+J2-1)+3), 
253:      2                      OVEC,H1VEC,H2VEC) 
254:                QW(9*(J2-1)+1)=OVEC(1) 
255:                QW(9*(J2-1)+2)=OVEC(2) 
256:                QW(9*(J2-1)+3)=OVEC(3) 
257:                QW(9*(J2-1)+4)=H1VEC(1) 
258:                QW(9*(J2-1)+5)=H1VEC(2) 
259:                QW(9*(J2-1)+6)=H1VEC(3) 
260:                QW(9*(J2-1)+7)=H2VEC(1) 
261:                QW(9*(J2-1)+8)=H2VEC(2) 
262:                QW(9*(J2-1)+9)=H2VEC(3) 
263:             ENDDO 
264:  
265: !            QW(1:3) = (/0.000000000000000, 0.000000000000000, -6.5098030735366103E-002/)  
266: !            QW(4:6) = (/0.000000000000000, 0.7569503272636612, 0.5207842458829288/)       
267: !            QW(7:9) = (/0.000000000000000,-0.7569503272636612, 0.5207842458829288/) 
268:  
269: C           NATOMS=NATOMS*3  ! WCOMMENT 
270:             NATOMSSAVE=NATOMS 
271:             NATOMS=(NATOMS/2)*3 
272:             CALL SYMMETRY(HORDER,.TRUE.,QW,INERTIA) 
273: C           NATOMS=NATOMS/3  ! WCOMMENT 
274:             NATOMS=NATOMSSAVE 
275: C           DO J2=1,NOPT+IADD 
276: C              Q(J2)=QSAVE(J2) 
277: C           ENDDO 
278:  
279:          ELSE IF (NTIPT) THEN 
280:  
281:             CALL DEFTIP4(DC6CC, DC6CC, DC6CC) 
282:             ALLOCATE(QW(9*(NATOMS/2))) 
283:             J2       = NRBSITES 
284:             NRBSITES = 3 
285:             CALL SITEPOS(Q, QW) 
286:             NRBSITES = J2 
287:  
288:             NATOMSSAVE=NATOMS 
289:             NATOMS=(NATOMS/2)*3 
290:             CALL SYMMETRY(HORDER,.TRUE.,QW,INERTIA) 
291:             NATOMS=NATOMSSAVE 
292:  
293:          ELSE IF (PAHAT) THEN 
294:  
295:             ALLOCATE(QW(3*NRBSITES*(NATOMS/2))) 
296:  
297:             CALL SITEPOS(Q, QW) 
298:  
299:             NATOMSSAVE=NATOMS 
300:             NATOMS=(NATOMS/2)*NRBSITES 
301:  
302:             CALL SYMMETRY(HORDER,.TRUE.,QW,INERTIA) 
303:  
304:             NATOMS=NATOMSSAVE 
305:  
306:          ELSE IF (STOCKAAT) THEN 
307:  
308:             CALL DEFSTOCK(STOCKMU, DU, DPFCT) 
309:             ALLOCATE(QW(3*NRBSITES*(NATOMS/2))) 
310:             CALL SITEPOS(Q, QW) 
311:  
312:             NATOMSSAVE=NATOMS 
313:             NATOMS=(NATOMS/2)*NRBSITES 
314:             CALL SYMMETRY(HORDER,.TRUE.,QW,INERTIA) 
315:             NATOMS=NATOMSSAVE 
316:  
317:          ELSE 
318:             CALL SYMMETRY(HORDER,.TRUE.,Q,INERTIA) 
319:          ENDIF 
320:       ENDIF 
321:       IF (ADMT) CALL ADM(Q) 
322: C     IF ((AMBER).AND.(MOVIE)) CALL amoviedump(frame) 
323: C 
324: C  Eigenvalue shifting 
325: C 
326:       DO J1=1,6 
327:          SHIFTL(J1)=0.0D0 
328:       ENDDO 
329: ! 
330: ! Set the  SHIFTL elements even if NOHESS is .TRUE.  
331: ! This should do nothing if we never use a Hessian, but allows for a second-order 
332: ! pathway search even if NOHESS is used for the transition state search. 
333: ! 
334:       IF (ZSYM(1).EQ.'CK') THEN 
335:          WRITE(*,'(A,G20.10)') ' OPTIM> Using z rotational ev shift=',SHIFTV 
336:          SHIFTL(6)=SHIFTV 
337:       ELSE IF (PULLT.OR.EFIELDT) THEN 
338:          WRITE(*,'(A,G20.10)') ' OPTIM> Using x,y,z trans and z rotation ev shift=',SHIFTV 
339:          SHIFTL(1)=SHIFTV 
340:          SHIFTL(2)=SHIFTV 
341:          SHIFTL(3)=SHIFTV 
342:          SHIFTL(6)=SHIFTV 
343:          WRITE(*,'(A)') ' OPTIM> x,y translational and z rotational ev shifting' 
344:       ELSE IF (RTEST) THEN 
345:          IF (JZ.NE.0.0D0) THEN 
346:             WRITE(*,'(A,G20.10)') ' OPTIM> Using trans/z rotation ev shift=',SHIFTV 
347:             SHIFTL(3)=SHIFTV 
348:             SHIFTL(6)=SHIFTV 
349:          ELSE 
350:             WRITE(*,'(A,G20.10)') ' OPTIM> Using z rotation ev shift=',SHIFTV 
351:             SHIFTL(6)=SHIFTV 
352:          ENDIF 
353: C     ELSE IF (NOSHIFT) THEN 
354: C        WRITE(*,'(A)') 'No ev shifting' 
355:       ELSE IF (TWOD) THEN ! z components are shifted in potential.f 
356:          IF (ZSYMSAVE.EQ.'BE') THEN 
357:             SHIFTL(6)=SHIFTV 
358:             WRITE(*,'(A)') ' OPTIM> z rotational ev shifting' 
359:          ELSE IF (.NOT.BULKT) THEN 
360:             SHIFTL(1)=SHIFTV 
361:             SHIFTL(2)=SHIFTV 
362:             SHIFTL(6)=SHIFTV 
363:             WRITE(*,'(A)') ' OPTIM> x,y translational and z rotational ev shifting' 
364:          ELSE 
365:             SHIFTL(1)=SHIFTV 
366:             SHIFTL(2)=SHIFTV 
367:             WRITE(*,'(A)') ' OPTIM> x,y translational ev shifting' 
368:          ENDIF 
369:       ELSE IF (ZSYMSAVE.EQ.'BE') THEN 
370:          SHIFTL(4)=SHIFTV 
371:          SHIFTL(5)=SHIFTV 
372:          SHIFTL(6)=SHIFTV 
373:          WRITE(*,'(A,G20.10)') ' OPTIM> Using rotational ev shift=',SHIFTV 
374:       ELSE IF (BULKT) THEN 
375:          WRITE(*,'(A,G20.10)') ' OPTIM> Using translational ev shift=',SHIFTV 
376:          DO J1=1,3 
377:             SHIFTL(J1)=SHIFTV 
378:          ENDDO 
379:       ELSE IF (ZSYM(NATOMS).EQ.'TH') THEN 
380:          WRITE(*,'(A)') ' OPTIM> Using rotational ev shifting' 
381:          SHIFTL(4)=SHIFTV 
382:          SHIFTL(5)=SHIFTV 
383:          SHIFTL(6)=SHIFTV 
384:       ELSE 
385:          WRITE(*,'(A,G20.10)') ' OPTIM> Using translational/rotational ev shift=',SHIFTV 
386:          DO J1=1,6 
387:             SHIFTL(J1)=SHIFTV 
388:          ENDDO 
389:       ENDIF 
390:  
391:       IF ((INR.EQ.6).OR.(INR.EQ.7).OR.(INR.EQ.8)) ISTCRT=3 
392:  
393:       IF ((NSTEPS.EQ.0).AND.(.NOT.(ENDHESS.OR.ENDNUMHESS))) THEN 
394:          CALL FLUSH(6,ISTAT) 
395:          STOP 
396:       ENDIF 
397:  
398: C     J2=0 
399: C     DO J1=1,NATOMS 
400: C        IF (IATNUM(J1).NE.0) J2=J2+1 
401: C     ENDDO 
402: C     NREAL=J2 
403:  
404: 555   CONTINUE ! JUMP BACK TO HERE AFTER REOPTIMISATION OF BAD ENDPOINTS 
405:       IF (CALCRATES.AND.READPATH) THEN 
406:          CALL RATES(NATOMS,NINTS) ! JMC IF UNRES, THEN HAVE NON-ZERO NINTS, OTHERWISE JUST PASS 0 
407:       ELSE IF (GUESSPATHT.AND.(.NOT.CONNECTT)) THEN 
408:          CALL NEWMINDIST(FIN,Q,NATOMS,DISTSF,BULKT,TWOD,ZSYMSAVE,.FALSE.,RIGIDBODY,DEBUG,RMAT) 
409:          WRITE(*,'(A,F12.2)') ' OPTIM> distance between start and finish=',DISTSF 
410:          IF (UNRST) THEN 
411:             DO J1=1,NRES 
412:                C(1,J1)=Q(6*(J1-1)+1) 
413:                C(2,J1)=Q(6*(J1-1)+2) 
414:                C(3,J1)=Q(6*(J1-1)+3) 
415:                C(1,J1+NRES)=Q(6*(J1-1)+4) 
416:                C(2,J1+NRES)=Q(6*(J1-1)+5) 
417:                C(3,J1+NRES)=Q(6*(J1-1)+6) 
418:             ENDDO 
419:             CALL UPDATEDC 
420:             CALL INT_FROM_CART(.TRUE.,.FALSE.) 
421:             CALL GEOM_TO_VAR(NINTS,Q(1:NINTS)) 
422:             DO J1=1,NRES 
423:                C(1,J1)=FIN(6*(J1-1)+1) 
424:                C(2,J1)=FIN(6*(J1-1)+2) 
425:                C(3,J1)=FIN(6*(J1-1)+3) 
426:                C(1,J1+NRES)=FIN(6*(J1-1)+4) 
427:                C(2,J1+NRES)=FIN(6*(J1-1)+5) 
428:                C(3,J1+NRES)=FIN(6*(J1-1)+6) 
429:             ENDDO 
430:             CALL UPDATEDC 
431:             CALL INT_FROM_CART(.TRUE.,.FALSE.) 
432:             CALL GEOM_TO_VAR(NINTS,FIN(1:NINTS)) 
433: C           CALL UNGUESSPATH(Q,FIN,NINTS,EDIFFTOL,NATOMS) 
434:             CALL GUESSPATH(Q,FIN,NINTS,EDIFFTOL,NATOMS) 
435:          ELSE 
436:             CALL GUESSPATH(Q,FIN,NOPT,EDIFFTOL,NATOMS) 
437:          ENDIF 
438:       ELSE IF (CONNECTT.OR.BHINTERPT.OR.BISECTT) THEN 
439: C        IF (TWOENDS) THEN 
440: C           CALL CONNECTTWO 
441: C        ELSE 
442:          IF (NEWCONNECTT.OR.BHINTERPT.OR.BISECTT) THEN 
443:             IF (UNRST) THEN 
444:                 DO J1=1,NRES 
445:                    C(1,J1)=Q(6*(J1-1)+1) 
446:                    C(2,J1)=Q(6*(J1-1)+2) 
447:                    C(3,J1)=Q(6*(J1-1)+3) 
448:                    C(1,J1+NRES)=Q(6*(J1-1)+4) 
449:                    C(2,J1+NRES)=Q(6*(J1-1)+5) 
450:                    C(3,J1+NRES)=Q(6*(J1-1)+6) 
451:                 ENDDO 
452:                 CALL UPDATEDC 
453:                 CALL INT_FROM_CART(.TRUE.,.FALSE.) 
454:                 CALL CHAINBUILD 
455:             ENDIF 
456:             IF(CHRMMT.AND.ACESOLV) NCHENCALLS=ACEUPSTEP-1 
457:             CALL POTENTIAL(Q,EINITIAL,LGDUMMY,.TRUE.,.FALSE.,RMSINITIAL,.FALSE.,.FALSE.) 
458:             WRITE(*,'(a,2(g20.10,a))') ' OPTIM> Initial energy=',EINITIAL,' RMS force=',RMSinitial 
459:             IF (UNRST) THEN 
460:                 DO J1=1,NRES 
461:                    C(1,J1)=FIN(6*(J1-1)+1) 
462:                    C(2,J1)=FIN(6*(J1-1)+2) 
463:                    C(3,J1)=FIN(6*(J1-1)+3) 
464:                    C(1,J1+NRES)=FIN(6*(J1-1)+4) 
465:                    C(2,J1+NRES)=FIN(6*(J1-1)+5) 
466:                    C(3,J1+NRES)=FIN(6*(J1-1)+6) 
467:                 ENDDO 
468:                 CALL UPDATEDC 
469:                 CALL INT_FROM_CART(.TRUE.,.FALSE.) 
470:                 CALL CHAINBUILD 
471:             ENDIF 
472:             IF(CHRMMT.AND.ACESOLV) NCHENCALLS=ACEUPSTEP-1 
473:             CALL POTENTIAL(FIN,EFINAL,LGDUMMY,.TRUE.,.FALSE.,RMSFINAL,.FALSE.,.FALSE.) 
474:             WRITE(*,'(a,2(g20.10,a))') ' OPTIM> Final energy  =',  EFINAL,' RMS force=',RMSfinal 
475:             IF (MAX(RMSINITIAL,RMSFINAL)>GMAX.AND.(BFGSMINT.OR.BSMIN.OR.RKMIN)) THEN ! SAT 
476:                PRINT *, 'Bad endpoints supplied - RMS force too big!' 
477:                PRINT *, 'Acceptable RMS force would be less or equal to ',GMAX 
478:                IF (REOPTIMISEENDPOINTS) THEN 
479:                   IF (RMSINITIAL>GMAX.AND.(BFGSMINT.OR.BSMIN.OR.RKMIN)) THEN 
480:                      KNOWE=.FALSE. 
481:                      KNOWG=.FALSE. 
482:                      BFGSTSSAVE=BFGSTST 
483:                      BFGSTST=.FALSE. 
484:                      CALL GEOPT(FNAMEF,EFNAME,Q) 
485:                      BFGSTST=BFGSTSSAVE 
486:                   ENDIF 
487:                   IF (RMSFINAL>GMAX.AND.(BFGSMINT.OR.BSMIN.OR.RKMIN)) THEN 
488:                      KNOWE=.FALSE. 
489:                      KNOWG=.FALSE. 
490:                      BFGSTSSAVE=BFGSTST 
491:                      BFGSTST=.FALSE. 
492:                      CALL GEOPT(FNAMEF,EFNAME,FIN) 
493:                      BFGSTST=BFGSTSSAVE 
494:                   ENDIF 
495:                   KNOWE=.FALSE. 
496:                   KNOWG=.FALSE. 
497:                   KNOWH=.FALSE. 
498:                   REOPTIMISEENDPOINTS=.FALSE. 
499:                   GOTO 555 
500:                ELSE 
501:                   CALL TSUMMARY 
502:                   CALL FLUSH(6,ISTAT) 
503:                   STOP 
504:                ENDIF 
505:             ELSE IF (MAX(RMSINITIAL,RMSFINAL)>CONVR) THEN ! SAT 
506:                PRINT *, 'Bad endpoints supplied - RMS force too big!' 
507:                PRINT *, 'Acceptable RMS force would be less or equal to ',CONVR 
508:                IF (REOPTIMISEENDPOINTS) THEN 
509:                   IF (RMSINITIAL>CONVR) THEN 
510:                      CALL GEOPT(FNAMEF,EFNAME,Q) 
511:                   ENDIF 
512:                   IF (RMSFINAL>CONVR) THEN 
513:                      CALL GEOPT(FNAMEF,EFNAME,FIN) 
514:                   ENDIF 
515:                   REOPTIMISEENDPOINTS=.FALSE. 
516:                   GOTO 555 
517:                ELSE 
518:                   CALL TSUMMARY 
519:                   CALL FLUSH(6,ISTAT) 
520:                   STOP 
521:                ENDIF 
522:             ENDIF 
523: !           IF (FREEZE) THEN 
524: !              CALL NEWMINDIST(Q,FIN,NATOMS,DIST,BULKT,TWOD,ZSYM(1),.FALSE.,RIGIDBODY,DEBUG,RMAT) 
525:             IF (PERMDIST) THEN 
526:               ! msb50 
527:               !PRINT*,"msb50 remove in OPTIM" 
528:               !IF (INTMINPERMT) THEN 
529:               !       INTMINPERMT=.FALSE.    
530:               !       CALL MINPERMDIST(Q,FIN,NATOMS,DEBUG,PARAM1,PARAM2,PARAM3,BULKT,TWOD,DIST,DIST2,RIGIDBODY,RMAT) 
531:               !       INTMINPERMT = .TRUE. 
532:               ! ENDIF !end msb50 
533:                CALL MINPERMDIST(Q,FIN,NATOMS,DEBUG,PARAM1,PARAM2,PARAM3,BULKT,TWOD,DIST,DIST2,RIGIDBODY,RMAT) 
534:                DIST=SQRT(DIST) 
535:             ELSE 
536:                CALL NEWMINDIST(Q,FIN,NATOMS,DIST,BULKT,TWOD,ZSYM(1),.FALSE.,RIGIDBODY,DEBUG,RMAT) 
537:             ENDIF 
538:             IF (PERMDISTINIT) PERMDIST=.FALSE. 
539:             IF (BISECTT) THEN 
540:                CALL BISECT(NATOMS,EINITIAL,Q,EFINAL,FIN,DIST) 
541:             ELSE 
542:                IF (ALLOCATED(SAVES)) DEALLOCATE(SAVES) 
543:                IF (ALLOCATED(SAVEF)) DEALLOCATE(SAVEF) 
544:                ALLOCATE(SAVES(NOPT),SAVEF(NOPT)) 
545:                SAVES(1:NOPT)=Q(1:NOPT) 
546:                SAVEF(1:NOPT)=FIN(1:NOPT) 
547:                CALL NEWCONNECT(NATOMS,EINITIAL,Q,EFINAL,FIN,DIST,.TRUE.,REDOPATH,REDOPATHXYZ) 
548:                DEALLOCATE(SAVES,SAVEF) 
549:             ENDIF 
550:          ELSE 
551:             CALL CONNECT(NCDONE,Q) 
552:          ENDIF 
553:          IF (CALCRATES) CALL RATES(NATOMS,NINTS) ! JMC 
554:       ELSE IF (MECCANOT) THEN 
555:          IF (UNRST) THEN 
556:             DO J1=1,NRES 
557:                C(1,J1)=Q(6*(J1-1)+1) 
558:                C(2,J1)=Q(6*(J1-1)+2) 
559:                C(3,J1)=Q(6*(J1-1)+3) 
560:                C(1,J1+NRES)=Q(6*(J1-1)+4) 
561:                C(2,J1+NRES)=Q(6*(J1-1)+5) 
562:                C(3,J1+NRES)=Q(6*(J1-1)+6) 
563:             ENDDO 
564:             CALL UPDATEDC 
565:             CALL INT_FROM_CART(.TRUE.,.FALSE.) 
566:             CALL GEOM_TO_VAR(NINTS,Q(1:NINTS)) 
567:             CALL CHAINBUILD 
568:             CALL POTENTIAL(Q,E1,LGDUMMY,.TRUE.,.FALSE.,RMSINITIAL,.FALSE.,.FALSE.) 
569:             DO J1=1,NRES 
570:                C(1,J1)=FIN(6*(J1-1)+1) 
571:                C(2,J1)=FIN(6*(J1-1)+2) 
572:                C(3,J1)=FIN(6*(J1-1)+3) 
573:                C(1,J1+NRES)=FIN(6*(J1-1)+4) 
574:                C(2,J1+NRES)=FIN(6*(J1-1)+5) 
575:                C(3,J1+NRES)=FIN(6*(J1-1)+6) 
576:             ENDDO 
577:             CALL UPDATEDC 
578:             CALL INT_FROM_CART(.TRUE.,.FALSE.) 
579:             CALL GEOM_TO_VAR(NINTS,FIN(1:NINTS)) 
580:             CALL CHAINBUILD 
581:             CALL POTENTIAL(FIN,E2,LGDUMMY,.TRUE.,.FALSE.,RMSFINAL,.FALSE.,.FALSE.) 
582:             IF (DEBUG) WRITE(*,'(A,F20.10,A,F15.6,A,F20.10,A,F15.6)')  
583:      1           ' OPTIM> Initial energy=',E1,' RMS force=',RMSINITIAL,' final energy=',E2,' RMS=',RMSFINAL 
584:             CALL UNMECCANO(.FALSE.,.TRUE.,ENERGY,.FALSE.,Q,FIN,E1,E2,RMSINITIAL,RMSFINAL) 
585:          ELSE 
586:             IF (.NOT.VARIABLES) CALL NEWMINDIST(Q,FIN,NATOMS,DIST,BULKT,TWOD,ZSYM(1),.FALSE.,RIGIDBODY,DEBUG,RMAT) 
587:             CALL POTENTIAL(Q,E1,LGDUMMY,.TRUE.,.FALSE.,RMSINITIAL,.FALSE.,.FALSE.) 
588:             CALL POTENTIAL(FIN,E2,LGDUMMY,.TRUE.,.FALSE.,RMSFINAL,.FALSE.,.FALSE.) 
589:             IF (DEBUG) WRITE(*,'(A,F20.10,A,F15.6,A,F20.10,A,F15.6)')  
590:             DIST=0.0D0 
591:             DO J1=1,NOPT 
592:                DIST=DIST+(Q(J1)-FIN(J1))**2 
593:             ENDDO 
594:             DIST=SQRT(DIST) 
595:             NNNIMAGE=NINT(MIN(MECIMDENS*DIST,MECMAXIMAGES*1.0D0)) ! IMAGE DENSITY TIMES DISTANCE 
596:             IF (NNNIMAGE < 1       ) NNNIMAGE=1 
597:             NITERMAX=NINT(MIN(NNNIMAGE*MECITDENS,MECMAXIT*1.0D0)) ! NUMBER OF IMAGES TIMES ITERATION DENSITY 
598:             CALL MECCANO(.FALSE.,.TRUE.,ENERGY,.FALSE.,Q,FIN,E1,E2,RMSINITIAL,RMSFINAL) 
599:          ENDIF 
600:       ELSE IF (NEWNEBT.OR.NEBT) THEN 
601:          IF (NEBMIND) THEN 
602:             IF (PERMDIST) THEN 
603:                CALL MINPERMDIST(Q,FIN,NATOMS,DEBUG,PARAM1,PARAM2,PARAM3,BULKT,TWOD,DIST,DIST2,RIGIDBODY,RMAT) 
604:                DIST=SQRT(DIST) 
605:             ELSE  
606:                CALL NEWMINDIST(Q,FIN,NATOMS,DIST,BULKT,TWOD,ZSYM(1),.FALSE.,RIGIDBODY,DEBUG,RMAT) 
607:             ENDIF 
608:             REALSTR=WR(DIST,3) 
609:             WRITE(*,'(a,f12.2)')' OPTIM> Structures were put in the closest coincidence, distance = '//trim(RealStr) 
610:          ENDIF 
611:          IF (UNRST) THEN 
612:              DO J1=1,NRES 
613:                 C(1,J1)=Q(6*(J1-1)+1) 
614:                 C(2,J1)=Q(6*(J1-1)+2) 
615:                 C(3,J1)=Q(6*(J1-1)+3) 
616:                 C(1,J1+NRES)=Q(6*(J1-1)+4) 
617:                 C(2,J1+NRES)=Q(6*(J1-1)+5) 
618:                 C(3,J1+NRES)=Q(6*(J1-1)+6) 
619:              ENDDO 
620:              CALL UPDATEDC 
621:              CALL INT_FROM_CART(.TRUE.,.FALSE.) 
622:              CALL CHAINBUILD 
623:          ENDIF 
624:          IF(CHRMMT.AND.ACESOLV) NCHENCALLS=ACEUPSTEP-1 
625:          CALL POTENTIAL(Q,EINITIAL,LGDUMMY,.TRUE.,.FALSE.,RMSINITIAL,.FALSE.,.FALSE.) 
626:          WRITE(*,'(a,2(g20.10,a))') ' OPTIM> Initial energy=',EINITIAL,' RMS force=',RMSinitial 
627:          IF (UNRST) THEN 
628:              DO J1=1,NRES 
629:                 C(1,J1)=FIN(6*(J1-1)+1) 
630:                 C(2,J1)=FIN(6*(J1-1)+2) 
631:                 C(3,J1)=FIN(6*(J1-1)+3) 
632:                 C(1,J1+NRES)=FIN(6*(J1-1)+4) 
633:                 C(2,J1+NRES)=FIN(6*(J1-1)+5) 
634:                 C(3,J1+NRES)=FIN(6*(J1-1)+6) 
635:              ENDDO 
636:              CALL UPDATEDC 
637:              CALL INT_FROM_CART(.TRUE.,.FALSE.) 
638:              CALL CHAINBUILD 
639:          ENDIF 
640:          IF (CHRMMT.AND.ACESOLV) NCHENCALLS=ACEUPSTEP-1 
641:          CALL POTENTIAL(FIN,EFINAL,LGDUMMY,.TRUE.,.FALSE.,RMSFINAL,.FALSE.,.FALSE.) 
642:          WRITE(*,'(a,2(g20.10,a))') ' OPTIM> Final energy  =',  EFINAL,' RMS force=',RMSfinal 
643:          IF (NEWNEBT) THEN 
644:               CALL NEWNEB(.FALSE.,DCOORDS,EINITIAL,Q,EFINAL,FIN,.TRUE.) 
645:          ELSE 
646:               CALL OLDNEB(.TRUE.,.TRUE.,ENERGY,VNEW,.FALSE.,Q) 
647:          ENDIF 
648:       ELSE IF (PATHT) THEN 
649:          IF(ORDERPARAMT.OR.RINGPOLYMERT) QSAVE(1:3*NATOMS)=Q(1:3*NATOMS) 
650:          IF (FILTH.EQ.0) THEN 
651:             EOFSSTRING='EofS' 
652:             ITSTRING='points.path.xyz' 
653:          ELSE 
654:             WRITE(EOFSSTRING,'(A)') 'EofS.'//TRIM(ADJUSTL(FILTHSTR)) 
655:             WRITE(ITSTRING,'(A)') 'points.path.xyz.'//TRIM(ADJUSTL(FILTHSTR)) 
656:          ENDIF 
657:  
658:          DO J1=1,NOPT 
659:             FRQSTS(J1)=0.0D0 
660:             FRQSMINUS(J1)=0.0D0 
661:             FRQSPLUS(J1)=0.0D0 
662:          ENDDO 
663: ! initialise VECS in case this doesn't happen elsewhere 
664:          IF (UNRST) THEN 
665:             DO J1=1,NINTS 
666:                VECS(J1)=DPRAND()*2-1.0D0 
667:             ENDDO 
668:             CALL VECNORM(VECS,NINTS) 
669:          ELSE 
670:             DO J1=1,NOPT 
671:                VECS(J1)=DPRAND()*2-1.0D0 
672:             ENDDO 
673:             CALL VECNORM(VECS,NOPT) 
674:          ENDIF 
675:          CALL PATH(Q,ENERGY,VNEW,RMS,EVALMIN,VECS,.TRUE.,QPLUS,QMINUS,.TRUE.,ETS,EPLUS,EMINUS, 
676:      1             SLENGTH,DISP,GAMMA,NTILDE,FRQSTS,FRQSPLUS,FRQSMINUS,ITSTRING,EOFSSTRING,PATHFAILT)  
677:               ! jmc added arg PATHFAILT 
678:          IF (PATHFAILT) THEN 
679:             CALL FLUSH(6,ISTAT) 
680:             STOP 
681:          ENDIF 
682:          IF (CALCRATES) CALL RATES(NATOMS,NINTS) ! JMC 
683:          IF (ORDERPARAMT) THEN 
684:             Q(1:3*NATOMS)=QSAVE(1:3*NATOMS) 
685:             CALL GEOPT(FNAMEF,EFNAME,Q) !bs360 
686:          ENDIF 
687:          IF (RINGPOLYMERT.AND.(ENDHESS.OR.ENDNUMHESS)) THEN  
688:             Q(1:3*NATOMS)=QSAVE(1:3*NATOMS) 
689:             NSTEPS=0 ! will avoid geometry optimisation - need ENDHESS or ENDNUMHESS 
690:             IF (.NOT.(ENDHESS.OR.ENDNUMHESS)) THEN 
691:                PRINT '(A)',' OPTIM> Neither ENDHESS nor ENDNUMHESS keywords are set - making ENDHESS true' 
692:             ENDIF 
693:             CALL GEOPT(FNAMEF,EFNAME,Q) ! to get the instanton rates. 
694:          ENDIF 
695:  
696: C     ELSE IF (DRAGT) THEN 
697: C        CALL DRAG 
698:       ELSE 
699:          CALL GEOPT(FNAMEF,EFNAME,Q) 
700:       ENDIF 
701:       CLOSE(1) 
702:       CLOSE(2) 
703:       IF (DUMPV) CLOSE(44) 
704:  
705:       CALL TSUMMARY 
706:  
707:       IF (INTMINT.OR.DESMINT.OR.INTINTERPT.OR.NATINT) CALL INTCLEANUP 
708:  
709:       IF (UNRST) DEALLOCATE(UREFCOORD,UREFPPSANGLE,INTSTEP) 
710:       IF (ZSYM(NATOMS).EQ.'SV') call cleanMemory 
711:       DEALLOCATE (FROZEN,ZSYM,NR,STPMAX) 
712:       IF (ALLOCATED(REPELTS)) DEALLOCATE(REPELTS)  
713:       IF (ALLOCATED(VECCHK)) DEALLOCATE(VECCHK) 
714:       DEALLOCATE(ZWORK) 
715:       IF (ALLOCATED(FIN)) DEALLOCATE(FIN) 
716:       IF (ALLOCATED(START)) DEALLOCATE(START) 
717:       IF (ALLOCATED(QW)) DEALLOCATE(QW) 
718:  
719:       CALL FLUSH(6,ISTAT) ! should not be necessary, but ... 
720:       STOP 
721:       END 
722:  
723:       SUBROUTINE TSUMMARY 
724:       USE KEY,ONLY : TSTART 
725:       IMPLICIT NONE 
726:       INTEGER NPCALL, ECALL, FCALL, SCALL 
727:       DOUBLE PRECISION ETIME, FTIME, STIME, TFINISH 
728:       COMMON /PCALL/ NPCALL, ECALL, FCALL, SCALL, ETIME, FTIME, STIME 
729:  
730:       CALL MYCPU_TIME(TFINISH,.FALSE.) 
731:       TFINISH=TFINISH-TSTART 
732:  
733:       PRINT* 
734:       WRITE(*,'(A,F15.2)') ' Elapsed time=                      ',TFINISH 
735:       IF (TFINISH.NE.0.0D0) THEN 
736:          WRITE(*,'(A,I10,A,F15.2,A,F5.1)') ' OPTIM> # of energy calls=                 ',ECALL,' time=',ETIME, 
737:      1         ' %=',ETIME*100.0D0/TFINISH 
738:          WRITE(*,'(A,I10,A,F15.2,A,F5.1)') ' OPTIM> # of energy+gradient calls=        ',FCALL,' time=',FTIME, 
739:      1         ' %=',FTIME*100.0D0/TFINISH 
740:          WRITE(*,'(A,I10,A,F15.2,A,F5.1)') ' OPTIM> # of energy+gradient+Hessian calls=',SCALL,' time=',STIME, 
741:      1         ' %=',STIME*100/TFINISH 
742:       ENDIF 
743:  
744:       RETURN 
745:       END 


r21666/version.sh 2017-01-21 10:32:18.935188235 +0000 r21665/version.sh 2017-01-21 10:32:23.355188235 +0000
  1: # SVN VERSION SCRIPT  1: svn: E195012: Unable to find repository location for 'svn+ssh://svn.ch.private.cam.ac.uk/groups/wales/trunk/PATHSAMPLE/source/version.sh' in revision 21665
  2: # To be run on compilation - returns the current version of the code. 
  3: # This script should be called from within the Makefile, and the results passed to the preprocessor 
  4: # For example: 
  5: # DEFS+=-DSVNVERSION="`./version.sh`" 
  6:  
  7: # First, we try to run svnversion to get the version number 
  8: svnversion . | sed 's/.*://' | sed 's/M//' > version.tmp 
  9: # svnversion returns 'exported' if you have it installed but run it in a non svn directory. 
 10: # If svnversion is not installed at all, the file will be empty. In either case, we want to 
 11: # use the version number recorded previously.  
 12: if [ "`cat version.tmp`" != "exported" ] && [ "`cat version.tmp`" != "" ]; then  
 13: # If we are working with svn however, we want to overwrite the version number with the current one. 
 14:     cp version.tmp VERSION 
 15: fi 
 16: # Remove the temporary file 
 17: rm version.tmp 
 18: # Return the version from the VERSION file 
 19: cat VERSION 


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0