hdiff output

r29895/genrigid.f90 2016-02-04 11:30:13.736491393 +0000 r29894/genrigid.f90 2016-02-04 11:30:14.508501571 +0000
2497:            2497:            
2498:         ENDDO2498:         ENDDO
2499:         2499:         
2500:      ENDDO2500:      ENDDO
2501: 2501: 
2502:      NDUMMY = NDUMMY + NPERMSIZE(J1)2502:      NDUMMY = NDUMMY + NPERMSIZE(J1)
2503:   ENDDO2503:   ENDDO
2504: 2504: 
2505: END SUBROUTINE GENRIGID_PERMDIST2505: END SUBROUTINE GENRIGID_PERMDIST
2506: 2506: 
2507: ! --------------------------------------------------------------------------------- 
2508: ! sn402: modified version of minpermdist which aligns only a subset of rigid bodies in the system 
2509: SUBROUTINE ALIGN_RBS(COORDSA, COORDSB, BULKT, TWOD, DISTANCE, DIST2, RMATBEST) 
2510: ! NOTE: I haven't implemented BULKT or TWOD yet, but they should be easy to do. 
2511:  
2512: USE KEY, ONLY: ALIGNRBST, N_TO_ALIGN, TO_ALIGN, BULK_BOXVEC 
2513: USE COMMONS, ONLY: NATOMS, DEBUG 
2514:  
2515: IMPLICIT NONE 
2516:  
2517: DOUBLE PRECISION, INTENT(INOUT) :: COORDSA(:) 
2518: DOUBLE PRECISION, INTENT(IN) :: COORDSB(:) 
2519: LOGICAL, INTENT(IN) :: BULKT, TWOD 
2520: DOUBLE PRECISION, INTENT(OUT) :: DISTANCE, DIST2 
2521: DOUBLE PRECISION, INTENT(OUT) :: RMATBEST(3,3) 
2522:  
2523: INTEGER :: DUMMY_NATOMS 
2524: DOUBLE PRECISION, ALLOCATABLE :: DUMMY_COORDSA(:), DUMMY_COORDSB(:) 
2525: DOUBLE PRECISION :: TRANSLATION(3) 
2526: INTEGER :: J1, J2 
2527:  
2528: IF(DEBUG) WRITE(*,*) "genrigid> aligning subset of rigid bodies" 
2529:  
2530: !DISTANCE=0.0D0 
2531: !DO J1=1,3*NATOMS 
2532: !     DISTANCE=DISTANCE+(COORDSA(J1)-COORDSB(J1))**2 
2533: !ENDDO 
2534: !IF(DEBUG) WRITE(*,*) "genrigid> Total distance before alignment=", SQRT(DISTANCE) 
2535: !write(*,*) "COORDSA before alignment", COORDSA 
2536: !write(*,*) "COORDSB before alignment", COORDSB 
2537:  
2538: DUMMY_NATOMS = 0 
2539: DO J1 = 1, N_TO_ALIGN 
2540:     DUMMY_NATOMS = DUMMY_NATOMS + NSITEPERBODY(TO_ALIGN(J1)) 
2541: ENDDO 
2542:  
2543: ALLOCATE(DUMMY_COORDSA(3*DUMMY_NATOMS),DUMMY_COORDSB(3*DUMMY_NATOMS)) 
2544:  
2545: DO J1 = 1, N_TO_ALIGN 
2546:     DO J2 = 1, NSITEPERBODY(TO_ALIGN(J1)) 
2547:         DUMMY_COORDSA(3*J2-2:3*J2) = COORDSA(3*RIGIDGROUPS(J2,TO_ALIGN(J1))-2:3*RIGIDGROUPS(J2,TO_ALIGN(J1))) 
2548:         DUMMY_COORDSB(3*J2-2:3*J2) = COORDSB(3*RIGIDGROUPS(J2,TO_ALIGN(J1))-2:3*RIGIDGROUPS(J2,TO_ALIGN(J1))) 
2549:     ENDDO 
2550: ENDDO 
2551:  
2552: ALIGNRBST = .FALSE. ! Switch this off temporarily so we don't end up back at this routine (infinite loop) 
2553:  
2554: ! Use MINPERMDIST to obtain RMAT, the rotation matrix that puts DUMMYCOORDSA into the best alignment 
2555: ! with DUMMYCOORDSB 
2556: CALL MINPERMDIST(DUMMY_COORDSB(:),DUMMY_COORDSA(:),DUMMY_NATOMS,.FALSE., & 
2557:           BULK_BOXVEC(1),BULK_BOXVEC(2),BULK_BOXVEC(3),.FALSE.,.FALSE.,DISTANCE,DIST2,.FALSE.,RMATBEST) 
2558:  
2559: IF(DEBUG) WRITE(*,*) "genrigid> Distance for aligned subset=", SQRT(DISTANCE) 
2560:  
2561: ALIGNRBST = .TRUE. 
2562:  
2563: ! MINPERMDIST should also have aligned the centres of mass, so we can extract the required translation from DUMMY_COORDSA 
2564: TRANSLATION(:) = DUMMY_COORDSA(1:3)-COORDSA(3*RIGIDGROUPS(1,TO_ALIGN(1))-2:3*RIGIDGROUPS(1,TO_ALIGN(1))) 
2565:  
2566: DIST2 = 0.0D0 
2567: DO J1 = 1,NATOMS 
2568:     COORDSA(3*J1-2:3*J1) = COORDSA(3*J1-2:3*J1)+TRANSLATION(:) 
2569:     COORDSA(3*J1-2:3*J1) = MATMUL(RMATBEST,COORDSA(3*J1-2:3*J1)) 
2570:     DIST2 = DIST2 + (COORDSA(3*J1-2)-COORDSB(3*J1-2))**2 + & 
2571:                     (COORDSA(3*J1-1)-COORDSB(3*J1-1))**2 + & 
2572:                     (COORDSA(3*J1)-COORDSB(3*J1))**2 
2573: ENDDO 
2574:  
2575: DISTANCE=SQRT(DIST2) 
2576:  
2577: IF(DEBUG) WRITE(*,*) "genrigid> Total distance after alignment=", DISTANCE 
2578:  
2579: RETURN 
2580:  
2581: END SUBROUTINE 
2582: 2507: 
2583: ! ---------------------------------------------------------------------------------2508: ! ---------------------------------------------------------------------------------
2584: ! sn402: angle-axis distance measure for rigid body systems2509: ! sn402: angle-axis distance measure for rigid body systems
2585: SUBROUTINE RB_DISTANCE(RB_DIST, RBCOORDS1, RBCOORDS2, GRAD1, GRAD2, GRADT)2510: SUBROUTINE RB_DISTANCE(RB_DIST, RBCOORDS1, RBCOORDS2, GRAD1, GRAD2, GRADT)
2586: USE COMMONS, ONLY: NATOMS, DEBUG2511: USE COMMONS, ONLY: NATOMS, DEBUG
2587: USE KEY, ONLY: PERMDIST2512: USE KEY, ONLY: PERMDIST
2588: IMPLICIT NONE2513: IMPLICIT NONE
2589: 2514: 
2590: ! RBCOORDS1, RBCOORDS2 are angle-axis coordinates for two poses of the entire rigid-body2515: ! RBCOORDS1, RBCOORDS2 are angle-axis coordinates for two poses of the entire rigid-body
2591: ! system.2516: ! system.


r29895/key.f90 2016-02-04 11:30:13.928493926 +0000 r29894/key.f90 2016-02-04 11:30:14.700504114 +0000
 15:      &        NRBTRIES, REDOTSIM, REDOBFGSSTEPS, RPIMAGES, RPDOF, SDOXYGEN, SDHYDROGEN, SDCHARGE, BOWMANPES, & 15:      &        NRBTRIES, REDOTSIM, REDOBFGSSTEPS, RPIMAGES, RPDOF, SDOXYGEN, SDHYDROGEN, SDCHARGE, BOWMANPES, &
 16:      &        INTCONSEP, PATOM1, PATOM2, INTREPSEP, NCONSTRAINTON, CPREPSEP, CPCONSEP, NCONGEOM, & 16:      &        INTCONSEP, PATOM1, PATOM2, INTREPSEP, NCONSTRAINTON, CPREPSEP, CPCONSEP, NCONGEOM, &
 17:      &        NCPREPULSIVE, NCPCONSTRAINT, MAXCONUSE, INTCONSTEPS, INTRELSTEPS, INTSTEPS1, INTLJSTEPS, & 17:      &        NCPREPULSIVE, NCPCONSTRAINT, MAXCONUSE, INTCONSTEPS, INTRELSTEPS, INTSTEPS1, INTLJSTEPS, &
 18:      &        NTRAPPOW, MAXINTIMAGE, CHECKDID, CHECKREPINTERVAL, INTFREEZEMIN, INTNTRIESMAX, INTIMAGEINCR, & 18:      &        NTRAPPOW, MAXINTIMAGE, CHECKDID, CHECKREPINTERVAL, INTFREEZEMIN, INTNTRIESMAX, INTIMAGEINCR, &
 19:      &        NCONSTRAINTFIX, INTIMAGECHECK, NREPULSIVEFIX, NRANROT, NENDDUP, LOCALPERMNEIGH, & 19:      &        NCONSTRAINTFIX, INTIMAGECHECK, NREPULSIVEFIX, NRANROT, NENDDUP, LOCALPERMNEIGH, &
 20:      &        LOCALPERMMAXSEP, NONEDAPBC, STRUC, QCHEMESNAO, QCHEMESNMO, QCHEMESNZERO, QCHEMESNELEC, PMPATHINR, & 20:      &        LOCALPERMMAXSEP, NONEDAPBC, STRUC, QCHEMESNAO, QCHEMESNMO, QCHEMESNZERO, QCHEMESNELEC, PMPATHINR, &
 21:      &        MULTISUNIT, MULTIFUNIT,NIMAGEINST,NGLJ,ST_TSSTEP,LANSTEP,NONFREEZE, & 21:      &        MULTISUNIT, MULTIFUNIT,NIMAGEINST,NGLJ,ST_TSSTEP,LANSTEP,NONFREEZE, &
 22:      &        MCPATHBINS,MCPATHEQUIL,MCPATHSTEPS,MCPATHPRTFRQ,MCPATHTS,MCPATHSCHECK,RPHSLICES,RPHQBINS, & 22:      &        MCPATHBINS,MCPATHEQUIL,MCPATHSTEPS,MCPATHPRTFRQ,MCPATHTS,MCPATHSCHECK,RPHSLICES,RPHQBINS, &
 23:      &        ITWIST, JTWIST, KTWIST, LTWIST, MCPATHSTART, MCPATHBLOCK, MCPATHOVER, NCPU, MCPATHDOBLOCK, MCMERGES, MCMERGEQ, & 23:      &        ITWIST, JTWIST, KTWIST, LTWIST, MCPATHSTART, MCPATHBLOCK, MCPATHOVER, NCPU, MCPATHDOBLOCK, MCMERGES, MCMERGEQ, &
 24:      &        MCMERGEI,GAUSSIANCHARGE,GAUSSIANMULTI,ITG03, REDOTS, QCIPERMCHECKINT, & 24:      &        MCMERGEI,GAUSSIANCHARGE,GAUSSIANMULTI,ITG03, REDOTS, QCIPERMCHECKINT, &
 25:      &        MLPIN, MLPOUT, MLPHIDDEN, MLPDATA, NMLP, N_TO_ALIGN 25:      &        MLPIN, MLPOUT, MLPHIDDEN, MLPDATA, NMLP
 26:  26: 
 27:       LOGICAL :: DTEST, MASST, RTEST, EFSTEPST, VECTORST, SUMMARYT, DUMPV, DUMPMAG, FREEZE, FREEZERANGE, GRADSQ, & 27:       LOGICAL :: DTEST, MASST, RTEST, EFSTEPST, VECTORST, SUMMARYT, DUMPV, DUMPMAG, FREEZE, FREEZERANGE, GRADSQ, &
 28:      &        PGRAD, VALUEST, ADMT, BFGSMINT, BFGSTST, CHECKINDEX, TOSI, CONTAINER, & 28:      &        PGRAD, VALUEST, ADMT, BFGSMINT, BFGSTST, CHECKINDEX, TOSI, CONTAINER, &
 29:      &        GAUSSIAN, CADPAC, PRESSURE, FTEST, DCHECK, CP2K, DFTP, CPMD, CPMDC, FREEZERES, DF1T, & 29:      &        GAUSSIAN, CADPAC, PRESSURE, FTEST, DCHECK, CP2K, DFTP, CPMD, CPMDC, FREEZERES, DF1T, &
 30:      &        VARIABLES, FIELDT, OHT, IHT, TDT, D5HT, TWOENDS, PV, FRACTIONAL, BLNT, HYBRIDMINT, & 30:      &        VARIABLES, FIELDT, OHT, IHT, TDT, D5HT, TWOENDS, PV, FRACTIONAL, BLNT, HYBRIDMINT, &
 31:      &        INDEXT, LANCZOST, NOSHIFT, GAMESSUS, GAMESSUK, PVTS, RIGIDBODY, CASTEP, ONETEP, QCHEM, QCHEMES, VASP, & 31:      &        INDEXT, LANCZOST, NOSHIFT, GAMESSUS, GAMESSUK, PVTS, RIGIDBODY, CASTEP, ONETEP, QCHEM, QCHEMES, VASP, &
 32:      &        BFGSSTEP, BULKT, HUPDATE, NOHESS, READV, NOIT, THOMSONT, SIO2T, SIO2C6T, BISECTT, BISECTDEBUG, & 32:      &        BFGSSTEP, BULKT, HUPDATE, NOHESS, READV, NOIT, THOMSONT, SIO2T, SIO2C6T, BISECTT, BISECTDEBUG, &
 33:      &        TOSIC6, TOSIPOL, FIXIMAGE, DFTBT, CHECKCONT, CHECKDT, SHIFTED, READSP, DUMPSP, NOFRQS, & 33:      &        TOSIC6, TOSIPOL, FIXIMAGE, DFTBT, CHECKCONT, CHECKDT, SHIFTED, READSP, DUMPSP, NOFRQS, &
 34:      &        ALLSTEPS, ALLVECTORS, MWVECTORS, WELCH, BINARY, READHESS, MOVIE, NORESET, TWOD, & 34:      &        ALLSTEPS, ALLVECTORS, MWVECTORS, WELCH, BINARY, READHESS, MOVIE, NORESET, TWOD, &
 35:      &        DOUBLET, REOPT, PARALLEL, LINEMIN, FIXD, KEEPINDEX, BSMIN, PRINTPTS, RKMIN, REPELTST,& 35:      &        DOUBLET, REOPT, PARALLEL, LINEMIN, FIXD, KEEPINDEX, BSMIN, PRINTPTS, RKMIN, REPELTST,&
 44:      &        CHECKCONINT, ATOMMATCHFULL, NIH2LEPST,NIHEAM7T,NIHLEPST, NIHPAIRONLYT, & 44:      &        CHECKCONINT, ATOMMATCHFULL, NIH2LEPST,NIHEAM7T,NIHLEPST, NIHPAIRONLYT, &
 45:      &        QSPCFWT, QTIP4PFT, CFUSIONT, DUMPINTXYZ, DUMPINTEOS, INTLJT, INTTST, EYTRAPT, OHCELLT, MKTRAPT, & 45:      &        QSPCFWT, QTIP4PFT, CFUSIONT, DUMPINTXYZ, DUMPINTEOS, INTLJT, INTTST, EYTRAPT, OHCELLT, MKTRAPT, &
 46:      &        INTFREEZET, LPERMDIST, CHECKNEGATIVET, CHECKOVERLAPT, ACK1, ACK2, CONDATT, USERPOTT, & 46:      &        INTFREEZET, LPERMDIST, CHECKNEGATIVET, CHECKOVERLAPT, ACK1, ACK2, CONDATT, USERPOTT, &
 47:      &        CONCUTFRACT, CONCUTABST, ENDNUMHESS2, CHARMMDFTBT, PAIRCOLOURT, REVERSEUPHILLT, WHOLEDNEB, & 47:      &        CONCUTFRACT, CONCUTABST, ENDNUMHESS2, CHARMMDFTBT, PAIRCOLOURT, REVERSEUPHILLT, WHOLEDNEB, &
 48:      &        NONEBMAX, READMASST, ONEDAPBCT, ONEDPBCT, INVTONEDPBCT, INVTTWODPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, & 48:      &        NONEBMAX, READMASST, ONEDAPBCT, ONEDPBCT, INVTONEDPBCT, INVTTWODPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, &
 49:      &        THREEDPBCT, FOURDAPBCT, FOURDPBCT, MODEDOWNT, CHEMSHIFT, TTM3T, & 49:      &        THREEDPBCT, FOURDAPBCT, FOURDPBCT, MODEDOWNT, CHEMSHIFT, TTM3T, &
 50:      &        NOINVERSION, INVERTPT, KNOWVECS, PMPATHT, AAORIENTT, MULTIJOBT, QUIPARGSTRT, QUIPPARAMST, HESSDUMPT, & 50:      &        NOINVERSION, INVERTPT, KNOWVECS, PMPATHT, AAORIENTT, MULTIJOBT, QUIPARGSTRT, QUIPPARAMST, HESSDUMPT, &
 51:      &        CLASSICALRATEST, TSPLITTINGT, HESSREADT, INSTANTONOPTT,INSTANTONSTARTDUMPT,VARSTEPOPTT, MOLPRO, REAXFFT, & 51:      &        CLASSICALRATEST, TSPLITTINGT, HESSREADT, INSTANTONOPTT,INSTANTONSTARTDUMPT,VARSTEPOPTT, MOLPRO, REAXFFT, &
 52:      &        EIGENONLY,OVERCONV, GLJT,CLSTRINGT,CLSTRINGTST, PHI4MODT, EX1DT, MCPATHT, MCBIAST, RPHT, TWISTT, MCPATH2T, & 52:      &        EIGENONLY,OVERCONV, GLJT,CLSTRINGT,CLSTRINGTST, PHI4MODT, EX1DT, MCPATHT, MCBIAST, RPHT, TWISTT, MCPATH2T, &
 53:      &        PBST, SSHT, GAUSSIAN03, CPPNEBT, CUDAT, CUDATIMET, TRUSTMODET,MODELOST, METRICTENSOR, INTSPRINGACTIVET, & 53:      &        PBST, SSHT, GAUSSIAN03, CPPNEBT, CUDAT, CUDATIMET, TRUSTMODET,MODELOST, METRICTENSOR, INTSPRINGACTIVET, &
 54:      &        PERMGUESS, QCIPERMCHECK, DUMPFRQST, MULTIPOTT, MLP3T, MLPB3T, DUMPBESTPATH, ALIGNRBST 54:      &        PERMGUESS, QCIPERMCHECK, DUMPFRQST, MULTIPOTT, MLP3T, MLPB3T, DUMPBESTPATH
 55:  55: 
 56: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted) 56: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted)
 57:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential? 57:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential?
 58:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z) 58:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z)
 59:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1 59:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1
 60:       LOGICAL :: HARMPOLYT = .FALSE. ! add harmonic bonds between the beads 60:       LOGICAL :: HARMPOLYT = .FALSE. ! add harmonic bonds between the beads
 61:       DOUBLE PRECISION :: HARMPOLY_BONLEN = 0.0d0 ! equilibrium length of springs between beads 61:       DOUBLE PRECISION :: HARMPOLY_BONLEN = 0.0d0 ! equilibrium length of springs between beads
 62:       DOUBLE PRECISION :: HARMPOLY_K = 1.0d2 ! force constant of the springs 62:       DOUBLE PRECISION :: HARMPOLY_K = 1.0d2 ! force constant of the springs
 63:  63: 
 64: ! hk286 > generalised THOMSON problem 64: ! hk286 > generalised THOMSON problem
166:       INTEGER, ALLOCATABLE :: ORDERI(:), ORDERJ(:), REPPOW(:)166:       INTEGER, ALLOCATABLE :: ORDERI(:), ORDERJ(:), REPPOW(:)
167:       INTEGER, ALLOCATABLE :: CONI(:), CONJ(:), CONION(:), CONJON(:)167:       INTEGER, ALLOCATABLE :: CONI(:), CONJ(:), CONION(:), CONJON(:)
168:       INTEGER, ALLOCATABLE :: CONIFIX(:), CONJFIX(:), REPIFIX(:), REPJFIX(:)168:       INTEGER, ALLOCATABLE :: CONIFIX(:), CONJFIX(:), REPIFIX(:), REPJFIX(:)
169:       INTEGER, ALLOCATABLE :: REPI(:), REPJ(:)169:       INTEGER, ALLOCATABLE :: REPI(:), REPJ(:)
170:       INTEGER, ALLOCATABLE :: CPCONI(:), CPCONJ(:)170:       INTEGER, ALLOCATABLE :: CPCONI(:), CPCONJ(:)
171:       INTEGER, ALLOCATABLE :: CPREPI(:), CPREPJ(:)171:       INTEGER, ALLOCATABLE :: CPREPI(:), CPREPJ(:)
172:       DOUBLE PRECISION, ALLOCATABLE :: REPCUT(:), NREPCUT(:), CPREPCUT(:), REPCUTFIX(:)172:       DOUBLE PRECISION, ALLOCATABLE :: REPCUT(:), NREPCUT(:), CPREPCUT(:), REPCUTFIX(:)
173:       INTEGER, ALLOCATABLE :: NREPI(:), NREPJ(:)173:       INTEGER, ALLOCATABLE :: NREPI(:), NREPJ(:)
174:       INTEGER, ALLOCATABLE :: BESTPERM(:)174:       INTEGER, ALLOCATABLE :: BESTPERM(:)
175:       INTEGER, ALLOCATABLE :: RBGROUP(:), RBNINGROUP(:)175:       INTEGER, ALLOCATABLE :: RBGROUP(:), RBNINGROUP(:)
176:       INTEGER, ALLOCATABLE :: TO_ALIGN(:) 
177:       LOGICAL :: SETCHIRAL=.FALSE.176:       LOGICAL :: SETCHIRAL=.FALSE.
178: !BLN/Go parameters177: !BLN/Go parameters
179:       LOGICAL :: GOTYPE=.FALSE.178:       LOGICAL :: GOTYPE=.FALSE.
180:       DOUBLE PRECISION :: GOFACTOR=0D0179:       DOUBLE PRECISION :: GOFACTOR=0D0
181: ! Single ended TS search dihedral twisting180: ! Single ended TS search dihedral twisting
182:       DOUBLE PRECISION :: PSRANDOM181:       DOUBLE PRECISION :: PSRANDOM
183:       INTEGER :: NTWISTABLE182:       INTEGER :: NTWISTABLE
184:       INTEGER, ALLOCATABLE :: DIHETOTWIST(:)183:       INTEGER, ALLOCATABLE :: DIHETOTWIST(:)
185: ! ONEDAPB184: ! ONEDAPB
186:       DOUBLE PRECISION, ALLOCATABLE     :: XYPHI(:)185:       DOUBLE PRECISION, ALLOCATABLE     :: XYPHI(:)


r29895/keywords.f 2016-02-04 11:30:14.124496509 +0000 r29894/keywords.f 2016-02-04 11:30:14.896506688 +0000
163:          !ds656> Initialise NTYPEA here163:          !ds656> Initialise NTYPEA here
164:          NTYPEA=NATOMS164:          NTYPEA=NATOMS
165:          !165:          !
166:          ! hk286 - initialise to stationary frame166:          ! hk286 - initialise to stationary frame
167:          RBAANORMALMODET = .FALSE.167:          RBAANORMALMODET = .FALSE.
168:          ! generalised rigid body168:          ! generalised rigid body
169:          ATOMRIGIDCOORDT = .TRUE.169:          ATOMRIGIDCOORDT = .TRUE.
170:          RIGIDINIT = .FALSE.170:          RIGIDINIT = .FALSE.
171:          AACONVERGENCET = .FALSE.171:          AACONVERGENCET = .FALSE.
172: 172: 
173:          ALIGNRBST = .FALSE. 
174:  
175:          ! Multiple potential scheme173:          ! Multiple potential scheme
176:          MULTIPOTT= .FALSE.174:          MULTIPOTT= .FALSE.
177: 175: 
178:          ! Thomson problem176:          ! Thomson problem
179:          GTHOMSONT = .FALSE.177:          GTHOMSONT = .FALSE.
180:          GTHOMPOT = 1178:          GTHOMPOT = 1
181: 179: 
182:          DESMAXEJUMP = HUGE(1.0D0)180:          DESMAXEJUMP = HUGE(1.0D0)
183:          DESMAXAVGE = HUGE(1.0D0)181:          DESMAXAVGE = HUGE(1.0D0)
184:          UNSTRING='UNDEFINED'182:          UNSTRING='UNDEFINED'
967:             CALL READF(KADJUSTTOL)965:             CALL READF(KADJUSTTOL)
968:             CALL READF(KADJUSTFRAC)966:             CALL READF(KADJUSTFRAC)
969: ! 967: ! 
970: ! ADM [OFF | ON n] prints the atomic distance matrix every n968: ! ADM [OFF | ON n] prints the atomic distance matrix every n
971: ! if switched on                 cycles       - default n=20969: ! if switched on                 cycles       - default n=20
972: ! 970: ! 
973:          ELSE IF (WORD .EQ. 'ADM') THEN971:          ELSE IF (WORD .EQ. 'ADM') THEN
974:             ADMT=.TRUE.972:             ADMT=.TRUE.
975:             CALL READI(NADM)973:             CALL READI(NADM)
976: 974: 
977:  
978: ! Keyword for use with RIGIDINIT instructing minpermdist to perform a global alignment 
979: ! based only on aligning the specified rigid bodies. This was designed for the plate folding  
980: ! potential, and is unlikely to be very useful for systems which aren't composed mostly of 
981: ! large rigid bodies that are strongly bonded together. 
982:  
983:         ELSE IF (WORD .EQ. 'ALIGNRBS') THEN 
984:             ALIGNRBST = .TRUE. 
985:             N_TO_ALIGN = NITEMS 
986:             ALLOCATE(TO_ALIGN(N_TO_ALIGN)) 
987:             DO J1 = 1, N_TO_ALIGN 
988:                 CALL READI(TO_ALIGN(J1)) 
989:             ENDDO 
990:  
991: ! Keywork ALPHA enables exponent values to be set for the averaged975: ! Keywork ALPHA enables exponent values to be set for the averaged
992: ! Gaussian and Morse potentials. All defaults = 6.976: ! Gaussian and Morse potentials. All defaults = 6.
993: ! 977: ! 
994:          ELSE IF (WORD.EQ.'ALPHA') THEN978:          ELSE IF (WORD.EQ.'ALPHA') THEN
995:             CALL READF(GALPHA)979:             CALL READF(GALPHA)
996:             IF (NITEMS.GT.2) THEN980:             IF (NITEMS.GT.2) THEN
997:                CALL READF(MALPHA1)981:                CALL READF(MALPHA1)
998:             ENDIF982:             ENDIF
999:             IF (NITEMS.GT.3) THEN983:             IF (NITEMS.GT.3) THEN
1000:                CALL READF(MALPHA2)984:                CALL READF(MALPHA2)


r29895/minpermdist.f90 2016-02-04 11:30:14.316499041 +0000 r29894/minpermdist.f90 2016-02-04 11:30:15.092509273 +0000
 50: !  The centres of coordinates for COORDSA and COORDSB can be anywhere. On return, the 50: !  The centres of coordinates for COORDSA and COORDSB can be anywhere. On return, the
 51: !  centre of coordinates of COORDSA will be the same as for COORDSB, unless we 51: !  centre of coordinates of COORDSA will be the same as for COORDSB, unless we
 52: !  are doing an ion trap potential. 52: !  are doing an ion trap potential.
 53: ! 53: !
 54: SUBROUTINE MINPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGID,RMATBEST) 54: SUBROUTINE MINPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGID,RMATBEST)
 55: USE KEY,ONLY : NPERMGROUP, NPERMSIZE, PERMGROUP, NSETS, SETS, STOCKT, GEOMDIFFTOL, AMBERT, & 55: USE KEY,ONLY : NPERMGROUP, NPERMSIZE, PERMGROUP, NSETS, SETS, STOCKT, GEOMDIFFTOL, AMBERT, &
 56:   &            NFREEZE, NABT, RBAAT, ANGLEAXIS2, BESTPERM, LOCALPERMDIST, PULLT, EFIELDT, NTSITES, & 56:   &            NFREEZE, NABT, RBAAT, ANGLEAXIS2, BESTPERM, LOCALPERMDIST, PULLT, EFIELDT, NTSITES, &
 57:   &            RIGIDBODY, PERMDIST, OHCELLT, LPERMDIST, EYTRAPT, MKTRAPT, LOCALPERMCUT, LOCALPERMCUT2, & 57:   &            RIGIDBODY, PERMDIST, OHCELLT, LPERMDIST, EYTRAPT, MKTRAPT, LOCALPERMCUT, LOCALPERMCUT2, &
 58:   &            LOCALPERMCUTINC, NOINVERSION, MIEFT, & 58:   &            LOCALPERMCUTINC, NOINVERSION, MIEFT, &
 59:   &            EDIFFTOL, GMAX, CONVR, ATOMMATCHDIST, NRANROT, GTHOMSONT, GTHOMMET, & ! hk286 59:   &            EDIFFTOL, GMAX, CONVR, ATOMMATCHDIST, NRANROT, GTHOMSONT, GTHOMMET, & ! hk286
 60:   &            PHI4MODT, MCPATHT, AMBER12T, VARIABLES, MKTRAPT, ALIGNRBST 60:   &            PHI4MODT, MCPATHT, AMBER12T, VARIABLES, MKTRAPT
 61: USE COMMONS,ONLY : NOPT 61: USE COMMONS,ONLY : NOPT
 62: USE MODCHARMM,ONLY : CHRMMT 62: USE MODCHARMM,ONLY : CHRMMT
 63: USE MODAMBER9, ONLY: NOPERMPROCHIRAL, PROCHIRALH 63: USE MODAMBER9, ONLY: NOPERMPROCHIRAL, PROCHIRALH
 64: USE INTCOMMONS, ONLY : INTMINPERMT, INTINTERPT, DESMINT, OLDINTMINPERMT, INTDISTANCET 64: USE INTCOMMONS, ONLY : INTMINPERMT, INTINTERPT, DESMINT, OLDINTMINPERMT, INTDISTANCET
 65: USE INTCUTILS, ONLY : INTMINPERM, OLD_INTMINPERM, INTMINPERM_CHIRAL, INTDISTANCE 65: USE INTCUTILS, ONLY : INTMINPERM, OLD_INTMINPERM, INTMINPERM_CHIRAL, INTDISTANCE
 66: USE GENRIGID 66: USE GENRIGID
 67: USE AMBER12_INTERFACE_MOD 67: USE AMBER12_INTERFACE_MOD
 68: USE CHIRALITY 68: USE CHIRALITY
 69: IMPLICIT NONE 69: IMPLICIT NONE
 70:  70: 
166:       CALL GENRIGID_POTENTIAL(COORDSB,BINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)166:       CALL GENRIGID_POTENTIAL(COORDSB,BINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
167: !jdf43> loop167: !jdf43> loop
168:    ELSE168:    ELSE
169:       CALL POTENTIAL(COORDSB,BINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)169:       CALL POTENTIAL(COORDSB,BINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
170:    ENDIF170:    ENDIF
171:    PRINT '(2(A,F25.15))',' initial energy for minimum B=             ',BINIT,' RMS=',RMS171:    PRINT '(2(A,F25.15))',' initial energy for minimum B=             ',BINIT,' RMS=',RMS
172:    IF ((.NOT.MCPATHT).AND.(RMS-MAX(GMAX,CONVR).GT.1.0D-6)) THEN172:    IF ((.NOT.MCPATHT).AND.(RMS-MAX(GMAX,CONVR).GT.1.0D-6)) THEN
173:       PRINT '(A)',' minpermdist> WARNING *** RMS for structure B is outside tolerance - QCI/DNEB endpoint alignment?'173:       PRINT '(A)',' minpermdist> WARNING *** RMS for structure B is outside tolerance - QCI/DNEB endpoint alignment?'
174:    ENDIF174:    ENDIF
175: ENDIF175: ENDIF
176:  
177:  
178: IF (RIGIDINIT .AND. ALIGNRBST) THEN 
179:     CALL ALIGN_RBS(COORDSA, COORDSB, BULKT, TWOD, DISTANCE, DIST2, RMATBEST) 
180:     RETURN 
181: ENDIF 
182:  
183: !176: !
184: ! For angle-axis coordinates with PERMDIST: 177: ! For angle-axis coordinates with PERMDIST: 
185: ! (1) use MINPERM to permute the centre-of-mass coordinates in the usual way,178: ! (1) use MINPERM to permute the centre-of-mass coordinates in the usual way,
186: !     using a metric based on just the centre of mass. These coordinates are179: !     using a metric based on just the centre of mass. These coordinates are
187: !     stored in the first 3*NATOMS entries.180: !     stored in the first 3*NATOMS entries.
188: ! (2) for each reorientation of the centre of mass corrdinates we have to181: ! (2) for each reorientation of the centre of mass corrdinates we have to
189: !     rotate the orientational coordinates. Then we need a loop over the182: !     rotate the orientational coordinates. Then we need a loop over the
190: !     rigid bodies to minimise the distance metric based upon all the sites183: !     rigid bodies to minimise the distance metric based upon all the sites
191: !     for the allowed internal symmetry operations of every rigid body.184: !     for the allowed internal symmetry operations of every rigid body.
192: !185: !


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0