hdiff output

r29249/CMakeLists.txt 2015-11-17 23:32:40.820247520 +0000 r29248/CMakeLists.txt 2015-11-17 23:32:42.372268335 +0000
238:   set_target_properties(A9OPTIM PROPERTIES LINKER_LANGUAGE "Fortran")238:   set_target_properties(A9OPTIM PROPERTIES LINKER_LANGUAGE "Fortran")
239:   set_target_properties(A9OPTIM PROPERTIES COMPILE_DEFINITIONS "${COMPILE_DEFINITIONS};DUMMY_AMBER12;DUMMY_CUDA;__SPARSE")239:   set_target_properties(A9OPTIM PROPERTIES COMPILE_DEFINITIONS "${COMPILE_DEFINITIONS};DUMMY_AMBER12;DUMMY_CUDA;__SPARSE")
240:   target_link_libraries(A9OPTIM optimlib240:   target_link_libraries(A9OPTIM optimlib
241:                                 AMBER_LIB241:                                 AMBER_LIB
242:                                 NAB_LIB242:                                 NAB_LIB
243:                                 ${MYLAPACK_LIBS}243:                                 ${MYLAPACK_LIBS}
244:                                 ${BOWMAN_LIBS} )244:                                 ${BOWMAN_LIBS} )
245: endif(WITH_AMBER9)245: endif(WITH_AMBER9)
246: 246: 
247: # For A12OPTIM or CUDAOPTIM, we need to build and add the AMBER 12 interface.247: # For A12OPTIM or CUDAOPTIM, we need to build and add the AMBER 12 interface.
248: # We also need to install networkx, for the chirality and cis/trans scripts. 
249: if(WITH_AMBER12 OR WITH_CUDA)248: if(WITH_AMBER12 OR WITH_CUDA)
250:   add_subdirectory(${SVN_ROOT}/AMBER12 AMBER12_interface)249:   add_subdirectory(${SVN_ROOT}/AMBER12 AMBER12_interface)
251:   find_program(PYTHON "python") 
252:   if (PYTHON) 
253:     add_custom_command(TARGET optimlib 
254:                        POST_BUILD 
255:                        COMMAND easy_install --user networkx) 
256:   else(PYTHON) 
257:     message(FATAL_ERROR "CMake cannot find Python.") 
258:   endif(PYTHON) 
259: endif()250: endif()
260: 251: 
261: # A12OPTIM  252: # A12OPTIM  
262: option(WITH_AMBER12 "Enable Amber OPTIM with AMBER12 compilation" OFF)253: option(WITH_AMBER12 "Enable Amber OPTIM with AMBER12 compilation" OFF)
263: # A12OPTIM and CUDAOPTIM both use the same Amber interface. Thus, we can only build the CPU version or the254: # A12OPTIM and CUDAOPTIM both use the same Amber interface. Thus, we can only build the CPU version or the
264: # GPU version at any given time.255: # GPU version at any given time.
265: if(WITH_AMBER12 AND NOT WITH_CUDA)256: if(WITH_AMBER12 AND NOT WITH_CUDA)
266:   SET(EXTRA_SOURCES ${ALL_EXTRA_SOURCES})257:   SET(EXTRA_SOURCES ${ALL_EXTRA_SOURCES})
267:   add_executable(A12OPTIM getparams.f258:   add_executable(A12OPTIM getparams.f
268:                           ${EXTRA_SOURCES})259:                           ${EXTRA_SOURCES})


r29249/connect.f 2015-11-17 23:32:41.400255299 +0000 r29248/connect.f 2015-11-17 23:32:42.952276114 +0000
2134:                WRITE(*,*) 2134:                WRITE(*,*) 
2135:      &          ' connect> Possible cis-trans isomerisation detected wrt. the starting ribose structure, rejecting'2135:      &          ' connect> Possible cis-trans isomerisation detected wrt. the starting ribose structure, rejecting'
2136:                NTS=NTS-12136:                NTS=NTS-1
2137:                CALL TRYAGAIN(NATOMS,GUESSTST,TRYNEB,IGUESS,NGUESS,NIMAGE,NIMAGEMAX,NIMAGESAVE,2137:                CALL TRYAGAIN(NATOMS,GUESSTST,TRYNEB,IGUESS,NGUESS,NIMAGE,NIMAGEMAX,NIMAGESAVE,
2138:      1                       JREMOVE,NMIN,NOPT,QSAVE,CON,EMIN,WHICHTS,NMAXMIN,TSUSED,NMAXTS,REVERSET,STOPFIRST)2138:      1                       JREMOVE,NMIN,NOPT,QSAVE,CON,EMIN,WHICHTS,NMAXMIN,TSUSED,NMAXTS,REVERSET,STOPFIRST)
2139:                GT10=.TRUE.2139:                GT10=.TRUE.
2140:                RETURN2140:                RETURN
2141:             ENDIF2141:             ENDIF
2142: ! Otherwise, check for cis/trans flips of peptide bonds2142: ! Otherwise, check for cis/trans flips of peptide bonds
2143:           ELSE2143:           ELSE
2144: !            CALL INIT_CIS_TRANS(QSTART) ! Already called in keywords2144:             CALL INIT_CIS_TRANS(QSTART)
2145:             CALL CIS_TRANS_CHECK(Q, GOODSTRUCTURE1)2145:             CALL CIS_TRANS_CHECK(Q, GOODSTRUCTURE1)
2146:             CALL CIS_TRANS_CHECK(QPLUS, GOODSTRUCTURE2)2146:             CALL CIS_TRANS_CHECK(Q, GOODSTRUCTURE2)
2147:             IF (.NOT. (GOODSTRUCTURE1 .OR. GOODSTRUCTURE2)) THEN2147:             IF (.NOT. (GOODSTRUCTURE1 .OR. GOODSTRUCTURE2)) THEN
2148:                WRITE(*,'(A)') ' connect> Cis-trans isomerisation of a peptide bond detected, rejecting'2148:                WRITE(*,'(A)') ' connect> Cis-trans isomerisation of a peptide bond detected, rejecting'
2149:                NTS=NTS-12149:                NTS=NTS-1
2150:                CALL TRYAGAIN(NATOMS,GUESSTST,TRYNEB,IGUESS,NGUESS,NIMAGE,NIMAGEMAX,NIMAGESAVE,2150:                CALL TRYAGAIN(NATOMS,GUESSTST,TRYNEB,IGUESS,NGUESS,NIMAGE,NIMAGEMAX,NIMAGESAVE,
2151:      1                       JREMOVE,NMIN,NOPT,QSAVE,CON,EMIN,WHICHTS,NMAXMIN,TSUSED,NMAXTS,REVERSET,STOPFIRST)2151:      1                       JREMOVE,NMIN,NOPT,QSAVE,CON,EMIN,WHICHTS,NMAXMIN,TSUSED,NMAXTS,REVERSET,STOPFIRST)
2152:                GT10=.TRUE.2152:                GT10=.TRUE.
2153:                RETURN2153:                RETURN
2154:             ENDIF2154:             ENDIF
2155:           END IF2155:           END IF
2156:       ENDIF2156:       ENDIF
2162:          IF (.NOT.GOODSTRUCTURE1.OR..NOT.GOODSTRUCTURE2) THEN2162:          IF (.NOT.GOODSTRUCTURE1.OR..NOT.GOODSTRUCTURE2) THEN
2163:             WRITE(*,'(A)') ' connect> Chirality inversion detected in at least one of the carbon centres, rejecting'2163:             WRITE(*,'(A)') ' connect> Chirality inversion detected in at least one of the carbon centres, rejecting'
2164:             NTS=NTS-12164:             NTS=NTS-1
2165:             CALL TRYAGAIN(NATOMS,GUESSTST,TRYNEB,IGUESS,NGUESS,NIMAGE,NIMAGEMAX,NIMAGESAVE,2165:             CALL TRYAGAIN(NATOMS,GUESSTST,TRYNEB,IGUESS,NGUESS,NIMAGE,NIMAGEMAX,NIMAGESAVE,
2166:      1                   JREMOVE,NMIN,NOPT,QSAVE,CON,EMIN,WHICHTS,NMAXMIN,TSUSED,NMAXTS,REVERSET,STOPFIRST)2166:      1                   JREMOVE,NMIN,NOPT,QSAVE,CON,EMIN,WHICHTS,NMAXMIN,TSUSED,NMAXTS,REVERSET,STOPFIRST)
2167:             GT10=.TRUE.2167:             GT10=.TRUE.
2168:             RETURN2168:             RETURN
2169:          ENDIF2169:          ENDIF
2170: ! Equivalent for AMBER122170: ! Equivalent for AMBER12
2171:       ELSE IF (CHECKCHIRALT .AND. AMBER12T) THEN2171:       ELSE IF (CHECKCHIRALT .AND. AMBER12T) THEN
2172:          GOODSTRUCTURE1 = .TRUE. 
2173:          GOODSTRUCTURE2 = .TRUE. 
2174:          CALL CHIRALITY_CHECK(Q, GOODSTRUCTURE1)2172:          CALL CHIRALITY_CHECK(Q, GOODSTRUCTURE1)
2175:          CALL CHIRALITY_CHECK(QPLUS, GOODSTRUCTURE2)2173:          CALL CHIRALITY_CHECK(QPLUS, GOODSTRUCTURE2)
2176:          IF (.NOT.GOODSTRUCTURE1.OR..NOT.GOODSTRUCTURE2) THEN2174:          IF (.NOT.GOODSTRUCTURE1.OR..NOT.GOODSTRUCTURE2) THEN
2177:             WRITE(*,'(A)') ' connect> Chirality inversion detected in at least one of the carbon centres, rejecting'2175:             WRITE(*,'(A)') ' connect> Chirality inversion detected in at least one of the carbon centres, rejecting'
2178:             NTS=NTS-12176:             NTS=NTS-1
2179:             CALL TRYAGAIN(NATOMS,GUESSTST,TRYNEB,IGUESS,NGUESS,NIMAGE,NIMAGEMAX,NIMAGESAVE,2177:             CALL TRYAGAIN(NATOMS,GUESSTST,TRYNEB,IGUESS,NGUESS,NIMAGE,NIMAGEMAX,NIMAGESAVE,
2180:      1                   JREMOVE,NMIN,NOPT,QSAVE,CON,EMIN,WHICHTS,NMAXMIN,TSUSED,NMAXTS,REVERSET,STOPFIRST)2178:      1                   JREMOVE,NMIN,NOPT,QSAVE,CON,EMIN,WHICHTS,NMAXMIN,TSUSED,NMAXTS,REVERSET,STOPFIRST)
2181:             GT10=.TRUE.2179:             GT10=.TRUE.
2182:             RETURN2180:             RETURN
2183:          ENDIF2181:          ENDIF


r29249/genrigid.f90 2015-11-17 23:32:41.588257820 +0000 r29248/genrigid.f90 2015-11-17 23:32:43.144278689 +0000
1556:   ! If we had any serious errors detected during the construction of the inverse metric tensor, stop now.1556:   ! If we had any serious errors detected during the construction of the inverse metric tensor, stop now.
1557:   IF(DEBUG .AND. NFAILS .GT. 0) THEN1557:   IF(DEBUG .AND. NFAILS .GT. 0) THEN
1558:     WRITE(*,*) "GENRIGID_NORMALMODES> Construction of the IMT failed ", NFAILS, "times"1558:     WRITE(*,*) "GENRIGID_NORMALMODES> Construction of the IMT failed ", NFAILS, "times"
1559:     STOP1559:     STOP
1560:   ENDIF1560:   ENDIF
1561: 1561: 
1562:   ! Now we need to compute the correct rigid body hessian1562:   ! Now we need to compute the correct rigid body hessian
1563:   RBAANORMALMODET = .TRUE. ! This is used in TRANSFORMHESSIAN and similar. I need to work out exactly how.1563:   RBAANORMALMODET = .TRUE. ! This is used in TRANSFORMHESSIAN and similar. I need to work out exactly how.
1564:   XCOORDS(1:DEGFREEDOMS) = XRIGIDCOORDS(1:DEGFREEDOMS)1564:   XCOORDS(1:DEGFREEDOMS) = XRIGIDCOORDS(1:DEGFREEDOMS)
1565:   XCOORDS(DEGFREEDOMS+1:3*NATOMS) = 0.0D01565:   XCOORDS(DEGFREEDOMS+1:3*NATOMS) = 0.0D0
1566:   IF (ENDNUMHESS .OR. AMBERT .OR. AMBER12T) THEN1566:   IF (ENDNUMHESS .OR. AMBERT) THEN
1567:      CALL GENRIGID_MAKENUMHESS(XCOORDS,NATOMS,DEGFREEDOMS)1567:      CALL GENRIGID_MAKENUMHESS(XCOORDS,NATOMS,DEGFREEDOMS)
1568:   ELSE1568:   ELSE
1569:     write(*,*) "Calling potential in GENRIGID_NORMALMODES"1569:     write(*,*) "Calling potential in GENRIGID_NORMALMODES"
1570:      CALL POTENTIAL(XCOORDS,ENERGY,G,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)1570:      CALL POTENTIAL(XCOORDS,ENERGY,G,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
1571:   ENDIF1571:   ENDIF
1572:   RBAANORMALMODET = .FALSE.1572:   RBAANORMALMODET = .FALSE.
1573: 1573: 
1574:   ! We need to left-multiply the Hessian by the inverse MT we calculated earlier, then find its eigenvalues and1574:   ! We need to left-multiply the Hessian by the inverse MT we calculated earlier, then find its eigenvalues and
1575:   ! eigenvectors. See eq.31 in the paper.1575:   ! eigenvectors. See eq.31 in the paper.
1576:   METRICHESS(:,:) = MATMUL(INVERSE_METRIC_TENSOR,HESS(1:DEGFREEDOMS,1:DEGFREEDOMS))1576:   METRICHESS(:,:) = MATMUL(INVERSE_METRIC_TENSOR,HESS(1:DEGFREEDOMS,1:DEGFREEDOMS))


r29249/modcudabfgsts.f90 2015-11-17 23:32:41.780260396 +0000 r29248/modcudabfgsts.f90 2015-11-17 23:32:43.712286308 +0000
 14: USE ZWK, ONLY : NUP, ZWORK 14: USE ZWK, ONLY : NUP, ZWORK
 15:  15: 
 16: USE MODNEB, ONLY : NEWCONNECTT, NEWNEBT 16: USE MODNEB, ONLY : NEWCONNECTT, NEWNEBT
 17:  17: 
 18: USE INTCOMMONS, ONLY : BONDSFROMFILE 18: USE INTCOMMONS, ONLY : BONDSFROMFILE
 19:  19: 
 20: USE INTERNALS_WRAPPER, ONLY : INTWRAP_USEINTERNALS 20: USE INTERNALS_WRAPPER, ONLY : INTWRAP_USEINTERNALS
 21:  21: 
 22: USE MODAMBER9, ONLY : CHECKCISTRANSALWAYS, CHECKCISTRANSALWAYSDNA, CHECKCISTRANSALWAYSRNA 22: USE MODAMBER9, ONLY : CHECKCISTRANSALWAYS, CHECKCISTRANSALWAYSDNA, CHECKCISTRANSALWAYSRNA
 23:  23: 
  24: USE MODCHARMM, ONLY : CHECKCHIRALT
  25: 
 24: USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_PTR, C_INT, C_DOUBLE, C_BOOL, C_CHAR 26: USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_PTR, C_INT, C_DOUBLE, C_BOOL, C_CHAR
 25:  27: 
 26: IMPLICIT NONE 28: IMPLICIT NONE
 27:  29: 
 28: INTERFACE 30: INTERFACE
 29:     SUBROUTINE CUDA_BFGSTS(C_NATOMS, C_COORDS, C_CEIG, C_MFLAG, C_ENERGY, C_NEVS, ITMAX, C_ITER, C_MAXXBFGS, C_XMAXERISE, C_RMS, & 31:     SUBROUTINE CUDA_BFGSTS(C_NATOMS, C_COORDS, C_CEIG, C_MFLAG, C_ENERGY, C_NEVS, ITMAX, C_ITER, C_MAXXBFGS, C_XMAXERISE, C_RMS, &
 30:                           C_CUDAPOT, C_DEBUG, C_CUDATIMET, NCALLS, C_CFUSIONT, C_COLDFUSIONLIMIT, C_XDGUESS, C_XMUPDATE, & 32:                           C_CUDAPOT, C_DEBUG, C_CUDATIMET, NCALLS, C_CFUSIONT, C_COLDFUSIONLIMIT, C_XDGUESS, C_XMUPDATE, &
 31:                           C_EVALMIN, C_VECS, C_ATOMRIGIDCOORDT, C_DEGFREEDOMS, C_NRIGIDBODY, C_NSITEPERBODY, C_RIGIDGROUPS, & 33:                           C_EVALMIN, C_VECS, C_ATOMRIGIDCOORDT, C_DEGFREEDOMS, C_NRIGIDBODY, C_NSITEPERBODY, C_RIGIDGROUPS, &
 32:                           C_MAXSITE, C_SITESRIGIDBODY, C_RIGIDSINGLES, C_IINVERSE, C_NSECDIAG, C_EVPC, & 34:                           C_MAXSITE, C_SITESRIGIDBODY, C_RIGIDSINGLES, C_IINVERSE, C_NSECDIAG, C_EVPC, &
 33:                           C_PUSHCUT, C_PUSHOFF, C_STPMAX, C_MAXMAX, C_MINMAX, C_TRAD, C_NBFGSMAX1, C_NBFGSMAX2, C_BFGSTSTOL, & 35:                           C_PUSHCUT, C_PUSHOFF, C_STPMAX, C_MAXMAX, C_MINMAX, C_TRAD, C_NBFGSMAX1, C_NBFGSMAX2, C_BFGSTSTOL, &
131:         ! Therefore uninitialised C types are passed in and converted types are copied back after the call133:         ! Therefore uninitialised C types are passed in and converted types are copied back after the call
132: 134: 
133:         INTEGER :: I, J, K, ITER, FCALL, NPCALL, ECALL, SCALL135:         INTEGER :: I, J, K, ITER, FCALL, NPCALL, ECALL, SCALL
134:         DOUBLE PRECISION :: ENERGY, RMS, EVALMIN, FTIME, ETIME, STIME136:         DOUBLE PRECISION :: ENERGY, RMS, EVALMIN, FTIME, ETIME, STIME
135:         DOUBLE PRECISION, DIMENSION(3*NATOMS) :: COORDS, VECS137:         DOUBLE PRECISION, DIMENSION(3*NATOMS) :: COORDS, VECS
136:         LOGICAL :: MFLAG, KNOWE, KNOWG, KNOWH, DRAGT, DOINTERNALSTRANSFORM138:         LOGICAL :: MFLAG, KNOWE, KNOWG, KNOWH, DRAGT, DOINTERNALSTRANSFORM
137:         COMMON /PCALL/ NPCALL, ECALL, FCALL, SCALL, ETIME, FTIME, STIME139:         COMMON /PCALL/ NPCALL, ECALL, FCALL, SCALL, ETIME, FTIME, STIME
138:         COMMON /KNOWN/ KNOWE, KNOWG, KNOWH140:         COMMON /KNOWN/ KNOWE, KNOWG, KNOWH
139:         COMMON /RUNTYPE/ DRAGT141:         COMMON /RUNTYPE/ DRAGT
140: 142: 
141:         IF (CHECKCISTRANSALWAYSDNA .OR. CHECKCISTRANSALWAYSRNA) THEN143:         IF (CHECKCISTRANSALWAYSDNA .OR. CHECKCISTRANSALWAYSRNA .OR. CHECKCHIRALT) THEN
142:             WRITE(*,'(A)') " modcudabfgsts> Warning: Subroutine CHIRALITY_CHECK not implemented for BFGSTS on GPU. "144:             WRITE(*,'(A)') " modcudabfgsts> Warning: Subroutine CHIRALITY_CHECK not implemented for BFGSTS on GPU. "
143:         END IF145:         END IF
144: 146: 
145:         IF (CHECKCISTRANSALWAYS) THEN147:         IF (CHECKCISTRANSALWAYS) THEN
146:             WRITE(*,'(A)') " modcudabfgsts> Warning: Subroutine CIS_TRANS_CHECK not implemented for BFGSTS on GPU. "148:             WRITE(*,'(A)') " modcudabfgsts> Warning: Subroutine CIS_TRANS_CHECK not implemented for BFGSTS on GPU. "
147:         END IF149:         END IF
148: 150: 
149:         IF (.NOT. NOHESS) THEN151:         IF (.NOT. NOHESS) THEN
150:             WRITE(*,'(A)') " modcudabfgsts> Keyword NOHESS must be used. "152:             WRITE(*,'(A)') " modcudabfgsts> Keyword NOHESS must be used. "
151:             STOP153:             STOP


r29249/modcudalbfgs.f90 2015-11-17 23:32:41.968262919 +0000 r29248/modcudalbfgs.f90 2015-11-17 23:32:43.904288882 +0000
  7:   7: 
  8: USE GENRIGID, ONLY : ATOMRIGIDCOORDT, DEGFREEDOMS, NRIGIDBODY, NSITEPERBODY, RIGIDGROUPS, MAXSITE, SITESRIGIDBODY, &   8: USE GENRIGID, ONLY : ATOMRIGIDCOORDT, DEGFREEDOMS, NRIGIDBODY, NSITEPERBODY, RIGIDGROUPS, MAXSITE, SITESRIGIDBODY, & 
  9:                      RIGIDSINGLES, IINVERSE  9:                      RIGIDSINGLES, IINVERSE
 10:  10: 
 11: USE INTCOMMONS, ONLY : BONDSFROMFILE 11: USE INTCOMMONS, ONLY : BONDSFROMFILE
 12:  12: 
 13: USE INTERNALS_WRAPPER, ONLY : INTWRAP_USEINTERNALS 13: USE INTERNALS_WRAPPER, ONLY : INTWRAP_USEINTERNALS
 14:  14: 
 15: USE MODAMBER9, ONLY : CHECKCISTRANSALWAYS, CHECKCISTRANSALWAYSDNA, CHECKCISTRANSALWAYSRNA 15: USE MODAMBER9, ONLY : CHECKCISTRANSALWAYS, CHECKCISTRANSALWAYSDNA, CHECKCISTRANSALWAYSRNA
 16:  16: 
  17: USE MODCHARMM, ONLY : CHECKCHIRALT
  18: 
 17: USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_PTR, C_INT, C_DOUBLE, C_BOOL, C_CHAR 19: USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_PTR, C_INT, C_DOUBLE, C_BOOL, C_CHAR
 18:  20: 
 19: IMPLICIT NONE 21: IMPLICIT NONE
 20:  22: 
 21: INTERFACE 23: INTERFACE
 22:     SUBROUTINE CUDA_LBFGS(N, C_XCOORDS, C_GMAX, C_MFLAG, C_ENERGY, ITMAX, C_ITDONE, C_MAXBFGS, C_MAXERISE, C_RMS, C_CUDAPOT, &  24:     SUBROUTINE CUDA_LBFGS(N, C_XCOORDS, C_GMAX, C_MFLAG, C_ENERGY, ITMAX, C_ITDONE, C_MAXBFGS, C_MAXERISE, C_RMS, C_CUDAPOT, & 
 23:                          C_DEBUG, C_CUDATIMET, NCALLS, C_COLDFUSION, C_COLDFUSIONLIMIT, C_DGUESS, MUPDATE, C_ATOMRIGIDCOORDT, &  25:                          C_DEBUG, C_CUDATIMET, NCALLS, C_COLDFUSION, C_COLDFUSIONLIMIT, C_DGUESS, MUPDATE, C_ATOMRIGIDCOORDT, & 
 24:                          C_DEGFREEDOMS, C_NRIGIDBODY, C_NSITEPERBODY, C_RIGIDGROUPS, C_MAXSITE, C_SITESRIGIDBODY, C_RIGIDSINGLES, &  26:                          C_DEGFREEDOMS, C_NRIGIDBODY, C_NSITEPERBODY, C_RIGIDGROUPS, C_MAXSITE, C_SITESRIGIDBODY, C_RIGIDSINGLES, & 
 25:                          C_BQMAX, C_IINVERSE, PROJECT, C_FREEZE, C_FROZEN, C_NFREEZE, POTENTIALTIME) BIND(C,NAME="setup_lbfgs") 27:                          C_BQMAX, C_IINVERSE, PROJECT, C_FREEZE, C_FROZEN, C_NFREEZE, POTENTIALTIME) BIND(C,NAME="setup_lbfgs")
 26:  28: 
115:         ! Therefore uninitialised C types are passed in and converted types are copied back after the call117:         ! Therefore uninitialised C types are passed in and converted types are copied back after the call
116: 118: 
117:         INTEGER :: I, J, K, ITDONE, FCALL, NPCALL, ECALL, SCALL119:         INTEGER :: I, J, K, ITDONE, FCALL, NPCALL, ECALL, SCALL
118:         DOUBLE PRECISION :: ENERGY, RMS, FTIME, ETIME, STIME120:         DOUBLE PRECISION :: ENERGY, RMS, FTIME, ETIME, STIME
119:         DOUBLE PRECISION, DIMENSION(N) :: XCOORDS121:         DOUBLE PRECISION, DIMENSION(N) :: XCOORDS
120:         LOGICAL :: MFLAG, KNOWE, KNOWG, KNOWH, DRAGT, DOINTERNALSTRANSFORM122:         LOGICAL :: MFLAG, KNOWE, KNOWG, KNOWH, DRAGT, DOINTERNALSTRANSFORM
121:         COMMON /PCALL/ NPCALL, ECALL, FCALL, SCALL, ETIME, FTIME, STIME123:         COMMON /PCALL/ NPCALL, ECALL, FCALL, SCALL, ETIME, FTIME, STIME
122:         COMMON /KNOWN/ KNOWE, KNOWG, KNOWH124:         COMMON /KNOWN/ KNOWE, KNOWG, KNOWH
123:         COMMON /RUNTYPE/ DRAGT125:         COMMON /RUNTYPE/ DRAGT
124: 126: 
125:         IF (CHECKCISTRANSALWAYSDNA .OR. CHECKCISTRANSALWAYSRNA) THEN127:         IF (CHECKCISTRANSALWAYSDNA .OR. CHECKCISTRANSALWAYSRNA .OR. CHECKCHIRALT) THEN
126:             WRITE(*,'(A)') " modcudalbfgs> Warning: Subroutine CHIRALITY_CHECK not implemented for LBFGS on GPU. "128:             WRITE(*,'(A)') " modcudalbfgs> Warning: Subroutine CHIRALITY_CHECK not implemented for LBFGS on GPU. "
127:         END IF129:         END IF
128: 130: 
129:         IF (CHECKCISTRANSALWAYS) THEN131:         IF (CHECKCISTRANSALWAYS) THEN
130:             WRITE(*,'(A)') " modcudalbfgs> Warning: Subroutine CIS_TRANS_CHECK not implemented for LBFGS on GPU. "132:             WRITE(*,'(A)') " modcudalbfgs> Warning: Subroutine CIS_TRANS_CHECK not implemented for LBFGS on GPU. "
131:         END IF133:         END IF
132: 134: 
133:         DOINTERNALSTRANSFORM = INTWRAP_USEINTERNALS()135:         DOINTERNALSTRANSFORM = INTWRAP_USEINTERNALS()
134: 136: 
135:         IF (PRINTPTS) THEN137:         IF (PRINTPTS) THEN


r29249/ncutils.f90 2015-11-17 23:32:41.012250096 +0000 r29248/ncutils.f90 2015-11-17 23:32:42.564270911 +0000
2230: 2230: 
2231: !2231: !
2232: !  First dump the + minimum.2232: !  First dump the + minimum.
2233: !  2233: !  
2234:      IF (UNRST.AND.CALCDIHE) THEN2234:      IF (UNRST.AND.CALCDIHE) THEN
2235:         CALL UNRESCALCDIHEREF(DIHE,ALLANG,QPLUS)2235:         CALL UNRESCALCDIHEREF(DIHE,ALLANG,QPLUS)
2236:         WRITE(88,'(3F25.15)') EPLUS, DIHE2236:         WRITE(88,'(3F25.15)') EPLUS, DIHE
2237:      ELSE2237:      ELSE
2238:         WRITE(88,'(F25.15)') EPLUS2238:         WRITE(88,'(F25.15)') EPLUS
2239:      ENDIF2239:      ENDIF
2240:      IF ((.NOT.MINFRQDONE).OR.TWOD.OR.CHRMMT.OR.UNRST.OR.AMBERT.OR.NABT.OR.AMBER12T) THEN2240:      IF ((.NOT.MINFRQDONE).OR.TWOD.OR.CHRMMT.OR.UNRST.OR.AMBERT.OR.NABT) THEN
2241:         IF (UNRST) THEN ! JMC UPDATE COORDS2241:         IF (UNRST) THEN ! JMC UPDATE COORDS
2242:            DO K1=1,NRES 2242:            DO K1=1,NRES 
2243:               C(1:3,K1)=QPLUS(6*(K1-1)+1:6*(K1-1)+3)2243:               C(1:3,K1)=QPLUS(6*(K1-1)+1:6*(K1-1)+3)
2244:               C(1:3,K1+NRES)=QPLUS(6*(K1-1)+4:6*(K1-1)+6)2244:               C(1:3,K1+NRES)=QPLUS(6*(K1-1)+4:6*(K1-1)+6)
2245:            ENDDO2245:            ENDDO
2246:            CALL UPDATEDC()2246:            CALL UPDATEDC()
2247:            CALL INT_FROM_CART(.TRUE.,.FALSE.)2247:            CALL INT_FROM_CART(.TRUE.,.FALSE.)
2248:            CALL CHAINBUILD()2248:            CALL CHAINBUILD()
2249:         ENDIF2249:         ENDIF
2250:         IF (CHRMMT) THEN2250:         IF (CHRMMT) THEN
2568:          ENDIF2568:          ENDIF
2569:      ENDIF2569:      ENDIF
2570: !2570: !
2571: ! now the transition state2571: ! now the transition state
2572: !2572: !
2573:      IF (MACHINE) THEN2573:      IF (MACHINE) THEN
2574:           WRITE(88) ETS2574:           WRITE(88) ETS
2575:      ELSE2575:      ELSE
2576:           WRITE(88,'(F25.15)') ETS2576:           WRITE(88,'(F25.15)') ETS
2577:      ENDIF2577:      ENDIF
2578:      IF ((.NOT.TSFRQDONE).OR.TWOD.OR.CHRMMT.OR.UNRST.OR.AMBERT.OR.NABT.OR.AMBER12T) THEN2578:      IF ((.NOT.TSFRQDONE).OR.TWOD.OR.CHRMMT.OR.UNRST.OR.AMBERT.OR.NABT) THEN
2579:         IF (UNRST) THEN ! JMC UPDATE COORDS2579:         IF (UNRST) THEN ! JMC UPDATE COORDS
2580:            DO K1=1,NRES 2580:            DO K1=1,NRES 
2581:               C(1:3,K1)=QTS(6*(K1-1)+1:6*(K1-1)+3)2581:               C(1:3,K1)=QTS(6*(K1-1)+1:6*(K1-1)+3)
2582:               C(1:3,K1+NRES)=QTS(6*(K1-1)+4:6*(K1-1)+6)2582:               C(1:3,K1+NRES)=QTS(6*(K1-1)+4:6*(K1-1)+6)
2583:            ENDDO2583:            ENDDO
2584:            CALL UPDATEDC()2584:            CALL UPDATEDC()
2585:            CALL INT_FROM_CART(.TRUE.,.FALSE.)2585:            CALL INT_FROM_CART(.TRUE.,.FALSE.)
2586:            CALL CHAINBUILD()2586:            CALL CHAINBUILD()
2587:         ENDIF2587:         ENDIF
2588:         IF (CHRMMT) THEN2588:         IF (CHRMMT) THEN
2923:      ENDIF2923:      ENDIF
2924: !2924: !
2925: !  Finally dump the - minimum.2925: !  Finally dump the - minimum.
2926: !2926: !
2927:      IF (UNRST.AND.CALCDIHE) THEN2927:      IF (UNRST.AND.CALCDIHE) THEN
2928:         CALL UNRESCALCDIHEREF(DIHE,ALLANG,QMINUS)2928:         CALL UNRESCALCDIHEREF(DIHE,ALLANG,QMINUS)
2929:         WRITE(88,'(3F25.15)') EMINUS, DIHE2929:         WRITE(88,'(3F25.15)') EMINUS, DIHE
2930:      ELSE2930:      ELSE
2931:         WRITE(88,'(F25.15)') EMINUS2931:         WRITE(88,'(F25.15)') EMINUS
2932:      ENDIF2932:      ENDIF
2933:      IF ((.NOT.MINFRQDONE).OR.TWOD.OR.CHRMMT.OR.UNRST.OR.AMBERT.OR.NABT.OR.AMBER12T) THEN2933:      IF ((.NOT.MINFRQDONE).OR.TWOD.OR.CHRMMT.OR.UNRST.OR.AMBERT.OR.NABT) THEN
2934:         IF (UNRST) THEN ! JMC UPDATE COORDS2934:         IF (UNRST) THEN ! JMC UPDATE COORDS
2935:            DO K1=1,NRES2935:            DO K1=1,NRES
2936:               C(1:3,K1)=QMINUS(6*(K1-1)+1:6*(K1-1)+3)2936:               C(1:3,K1)=QMINUS(6*(K1-1)+1:6*(K1-1)+3)
2937:               C(1:3,K1+NRES)=QMINUS(6*(K1-1)+4:6*(K1-1)+6)2937:               C(1:3,K1+NRES)=QMINUS(6*(K1-1)+4:6*(K1-1)+6)
2938:            ENDDO2938:            ENDDO
2939:            CALL UPDATEDC()2939:            CALL UPDATEDC()
2940:            CALL INT_FROM_CART(.TRUE.,.FALSE.)2940:            CALL INT_FROM_CART(.TRUE.,.FALSE.)
2941:            CALL CHAINBUILD()2941:            CALL CHAINBUILD()
2942:         ENDIF2942:         ENDIF
2943:         IF (CHRMMT) THEN2943:         IF (CHRMMT) THEN


r29249/potential.f 2015-11-17 23:32:42.160265492 +0000 r29248/potential.f 2015-11-17 23:32:44.096291457 +0000
2919:                WRITE(*,10) ' potential> Energy for last cycle=',ENERGY,' eV'2919:                WRITE(*,10) ' potential> Energy for last cycle=',ENERGY,' eV'
2920:                WRITE(ESTRING,10) 'Energy for last cycle=',ENERGY,' eV'2920:                WRITE(ESTRING,10) 'Energy for last cycle=',ENERGY,' eV'
2921:             ENDIF2921:             ENDIF
2922:          ELSE IF (AMBER12T) THEN2922:          ELSE IF (AMBER12T) THEN
2923:             VNEW = 0.0D02923:             VNEW = 0.0D0
2924:             IF (RIGIDINIT .AND. (.NOT. ATOMRIGIDCOORDT)) THEN2924:             IF (RIGIDINIT .AND. (.NOT. ATOMRIGIDCOORDT)) THEN
2925:                XRIGIDCOORDS(1:DEGFREEDOMS) = COORDS(1:DEGFREEDOMS)2925:                XRIGIDCOORDS(1:DEGFREEDOMS) = COORDS(1:DEGFREEDOMS)
2926:                CALL TRANSFORMRIGIDTOC(1, NRIGIDBODY, COORDS, XRIGIDCOORDS)2926:                CALL TRANSFORMRIGIDTOC(1, NRIGIDBODY, COORDS, XRIGIDCOORDS)
2927:             ENDIF2927:             ENDIF
2928: ! Check cis/trans isomerisation - actually, chirality of sugar ring carbons for nucleic acids2928: ! Check cis/trans isomerisation - actually, chirality of sugar ring carbons for nucleic acids
2929:             IF (CHECKCISTRANSALWAYSDNA .OR. CHECKCISTRANSALWAYSRNA) THEN ! CHECKCHIRALT removed from IF statement2929:             IF (CHECKCISTRANSALWAYSDNA .OR. CHECKCISTRANSALWAYSRNA .OR. CHECKCHIRALT) THEN
2930:                CALL CHIRALITY_CHECK(COORDS, GOODSTRUCTURE1)2930:                CALL CHIRALITY_CHECK(COORDS, GOODSTRUCTURE1)
2931:             END IF2931:             END IF
2932: ! Check cis/trans isomerisation for proteins2932: ! Check cis/trans isomerisation for proteins
2933:             IF (CHECKCISTRANSALWAYS) THEN2933:             IF (CHECKCISTRANSALWAYS) THEN
2934:                CALL CIS_TRANS_CHECK(COORDS, GOODSTRUCTURE1)2934:                CALL CIS_TRANS_CHECK(COORDS, GOODSTRUCTURE1)
2935:             END IF2935:             END IF
2936:             IF (CUDAT) THEN2936:             IF (CUDAT) THEN
2937:                ! This call copies CPU coordinates to GPU, calculates energy/gradient and copies energy/gradient back to CPU2937:                ! This call copies CPU coordinates to GPU, calculates energy/gradient and copies energy/gradient back to CPU
2938:                CALL CUDA_ENEGRAD_WRAPPER(NATOMS, COORDS, ENERGY, VNEW(1:3*NATOMS))2938:                CALL CUDA_ENEGRAD_WRAPPER(NATOMS, COORDS, ENERGY, VNEW(1:3*NATOMS))
2939:             ELSE2939:             ELSE


r29249/tryconnect.f90 2015-11-17 23:32:41.208252724 +0000 r29248/tryconnect.f90 2015-11-17 23:32:42.760273539 +0000
 38:           USE MODCHARMM, ONLY : CHRMMT,NCHENCALLS,CHECKOMEGAT,CHECKCHIRALT,NOCISTRANS,MINOMEGA 38:           USE MODCHARMM, ONLY : CHRMMT,NCHENCALLS,CHECKOMEGAT,CHECKCHIRALT,NOCISTRANS,MINOMEGA
 39:           USE MODAMBER9, ONLY : NOCISTRANSRNA, NOCISTRANSDNA, GOODSTRUCTURE1, GOODSTRUCTURE2, CISARRAY1, CISARRAY2,CHIARRAY1,CHIARRAY2 39:           USE MODAMBER9, ONLY : NOCISTRANSRNA, NOCISTRANSDNA, GOODSTRUCTURE1, GOODSTRUCTURE2, CISARRAY1, CISARRAY2,CHIARRAY1,CHIARRAY2
 40:           USE MODMEC 40:           USE MODMEC
 41:           USE KEYUTILS 41:           USE KEYUTILS
 42:           USE COMMONS, ONLY : NINTS, PARAM1, PARAM2, PARAM3, ZSYM, EVDISTTHRESH, REDOPATHNEB, DEBUG 42:           USE COMMONS, ONLY : NINTS, PARAM1, PARAM2, PARAM3, ZSYM, EVDISTTHRESH, REDOPATHNEB, DEBUG
 43:           USE PORFUNCS 43:           USE PORFUNCS
 44:           USE AMHGLOBALS, ONLY : NMRES 44:           USE AMHGLOBALS, ONLY : NMRES
 45:           USE GSDATA, ONLY : GSITERDENSITY, GSCURITERD=>ITERD 45:           USE GSDATA, ONLY : GSITERDENSITY, GSCURITERD=>ITERD
 46: ! hk286 46: ! hk286
 47:           USE GENRIGID 47:           USE GENRIGID
 48:           USE CHIRALITY, ONLY: CIS_TRANS_CHECK, CHIRALITY_CHECK 
 49:           IMPLICIT NONE 48:           IMPLICIT NONE
 50:           DOUBLE PRECISION RMAT(3,3), DISTFAC 49:           DOUBLE PRECISION RMAT(3,3), DISTFAC
 51:  50: 
 52:           INTEGER,INTENT(IN) :: JS,JF 51:           INTEGER,INTENT(IN) :: JS,JF
 53:           LOGICAL,INTENT(IN) :: USEINT, USEINTLJ 52:           LOGICAL,INTENT(IN) :: USEINT, USEINTLJ
 54:           LOGICAL, ALLOCATABLE :: FOUNDBEFORE(:), DOAGAIN(:) 53:           LOGICAL, ALLOCATABLE :: FOUNDBEFORE(:), DOAGAIN(:)
 55:            54:           
 56:           INTEGER         :: I,UNIQUE=0,MINPLUSPOS,MINMINUSPOS,J1,NC1,NC2,GLY_COUNT,LINTIMAGE,SAMEAS,ISTAT 55:           INTEGER         :: I,UNIQUE=0,MINPLUSPOS,MINMINUSPOS,J1,NC1,NC2,GLY_COUNT,LINTIMAGE,SAMEAS,ISTAT
 57:           DOUBLE PRECISION         :: EDUMMY,EDUMMY2,TMPTS(3*NATOMS),SAVEPUSHOFF,SAVEMAXBFGS 56:           DOUBLE PRECISION         :: EDUMMY,EDUMMY2,TMPTS(3*NATOMS),SAVEPUSHOFF,SAVEMAXBFGS
 58:           DOUBLE PRECISION,POINTER :: QPLUS(:),QMINUS(:),EPLUS,EMINUS 57:           DOUBLE PRECISION,POINTER :: QPLUS(:),QMINUS(:),EPLUS,EMINUS
662:                      ENDDO661:                      ENDDO
663:                   ENDDO662:                   ENDDO
664: 99                CONTINUE663: 99                CONTINUE
665:                   IF (DEBUG) PRINT '(A,G20.10)','Eplus=',EPLUS664:                   IF (DEBUG) PRINT '(A,G20.10)','Eplus=',EPLUS
666:                   IF (DEBUG) PRINT '(A,G20.10)','Eminus=',Eminus665:                   IF (DEBUG) PRINT '(A,G20.10)','Eminus=',Eminus
667:                   PRINT '(A,G20.10,A,G20.10)',' tryconnect> E+=',Eplus,'                      E-=',Eminus666:                   PRINT '(A,G20.10,A,G20.10)',' tryconnect> E+=',Eplus,'                      E-=',Eminus
668:                   CLOSE(89)667:                   CLOSE(89)
669:                ENDIF668:                ENDIF
670:                DEALLOCATE(TS(I)%DATA%VECS)669:                DEALLOCATE(TS(I)%DATA%VECS)
671: ! AMBER 12670: ! AMBER 12
672:                IF (AMBER12T.AND.NOCISTRANS) THEN671:                IF ((AMBERT.OR.NABT).AND.NOCISTRANS) THEN
673:                    GOODSTRUCTURE1=.TRUE.672:                  IF(NOCISTRANSRNA) THEN
674:                    GOODSTRUCTURE2=.TRUE.673:                    CALL CHECK_CISTRANS_RNA(QPLUS,NATOMS,ZSYM,GOODSTRUCTURE1)
675: ! Check for chiral inversions in DNA/RNA, since cis/trans refers to the substituents on the ribose rings.674:                    CALL CHECK_CISTRANS_RNA(QMINUS,NATOMS,ZSYM,GOODSTRUCTURE2)
676:                  IF(NOCISTRANSRNA.OR.NOCISTRANSDNA) THEN675:                    IF(.NOT.GOODSTRUCTURE1.OR..NOT.GOODSTRUCTURE2) THEN
677:                    CALL CHIRALITY_CHECK(QPLUS, GOODSTRUCTURE1)676:                     PRINT '(A,G20.10,A)',' tryconnect> Transition state with energy ',TS(I)%DATA%E, &
678:                    CALL CHIRALITY_CHECK(QMINUS, GOODSTRUCTURE2)677:   &                                     ' ignored, cis-trans isomerisation detected in the RNA ribose ring.'
679:                    IF((.NOT.GOODSTRUCTURE1).OR.(.NOT.GOODSTRUCTURE2)) THEN678:                     DEALLOCATE(TS(I)%DATA%EVALMIN)
 679:                     DEALLOCATE(QPLUS,QMINUS,EPLUS,EMINUS)
 680:                     TS(I)%DATA%BAD=.TRUE.
 681:                     CYCLE
 682:                    END IF
 683:                  ELSE IF(NOCISTRANSDNA) THEN
 684:                    CALL CHECK_CISTRANS_DNA(QPLUS,NATOMS,ZSYM,GOODSTRUCTURE1)
 685:                    CALL CHECK_CISTRANS_DNA(QMINUS,NATOMS,ZSYM,GOODSTRUCTURE2)
 686:                    IF(.NOT.GOODSTRUCTURE1.OR..NOT.GOODSTRUCTURE2) THEN
680:                     PRINT '(A,G20.10,A)',' tryconnect> Transition state with energy ',TS(I)%DATA%E, &687:                     PRINT '(A,G20.10,A)',' tryconnect> Transition state with energy ',TS(I)%DATA%E, &
681:   &                                     ' ignored, cis-trans isomerisation in (deoxy)ribose ring or chirality inversion detected.'688:   &                                     ' ignored, cis-trans isomerisation detected in the DNA deoxyribose ring.'
682:                     DEALLOCATE(TS(I)%DATA%EVALMIN)689:                     DEALLOCATE(TS(I)%DATA%EVALMIN)
683:                     DEALLOCATE(QPLUS,QMINUS,EPLUS,EMINUS)690:                     DEALLOCATE(QPLUS,QMINUS,EPLUS,EMINUS)
684:                     TS(I)%DATA%BAD=.TRUE.691:                     TS(I)%DATA%BAD=.TRUE.
685:                     CYCLE692:                     CYCLE
686:                    END IF693:                    END IF
687:                  ELSE694:                  ELSE
688: ! Otherwise, check for cis/trans flips of peptide bonds695:                    CALL CHECK_CISTRANS_PROTEIN(MI(1)%DATA%X(1:3*NATOMS),NATOMS,GOODSTRUCTURE1,MINOMEGA,CISARRAY2)
689:                    CALL CIS_TRANS_CHECK(QMINUS, GOODSTRUCTURE1)696:                    CALL CHECK_CISTRANS_PROTEIN(QMINUS,NATOMS,GOODSTRUCTURE2,MINOMEGA,CISARRAY1)
690:                    CALL CIS_TRANS_CHECK(QPLUS, GOODSTRUCTURE2)697:                    CISARRAY1=CISARRAY1-CISARRAY2
 698:                    GOODSTRUCTURE1=.TRUE.
 699:                    DO J1=1,NATOMS
 700:                     IF(CISARRAY1(J1)/=0) THEN
 701:                       GOODSTRUCTURE1=.FALSE.
 702:                       WRITE(*,'(A,I6)') ' tryconnect> MINUS minimum: cis-trans isomerisation '// &
 703:   &                                                   'of a peptide bond detected involving atom ', J1
 704:                     END IF
 705:                    END DO
691: 706: 
692:                    IF((.NOT.GOODSTRUCTURE1).OR.(.NOT.GOODSTRUCTURE2)) THEN707:                    CALL CHECK_CISTRANS_PROTEIN(QPLUS,NATOMS,GOODSTRUCTURE2,MINOMEGA,CISARRAY1)
 708:                    CISARRAY1=CISARRAY1-CISARRAY2
 709:                    GOODSTRUCTURE2=.TRUE.
 710:                    DO J1=1,NATOMS
 711:                     IF(CISARRAY1(J1)/=0) THEN
 712:                       GOODSTRUCTURE2=.FALSE.
 713:                       WRITE(*,'(A,I6)') ' tryconnect> PLUS minimum: cis-trans isomerisation '// &
 714:   &                                                   'of a peptide bond detected involving atom ', J1
 715:                     END IF
 716:                    END DO
 717:                    IF(.NOT.GOODSTRUCTURE1.OR..NOT.GOODSTRUCTURE2) THEN
693:                       WRITE(*,'(A)') ' tryconnect> Cis-trans isomerisation of a peptide bond detected '//&718:                       WRITE(*,'(A)') ' tryconnect> Cis-trans isomerisation of a peptide bond detected '//&
694:   &                                                '(wrt. the original structure), rejecting'719:   &                                                '(wrt. the original structure), rejecting'
695:                     PRINT '(A,G20.10,A)',' tryconnect> Transition state with energy ',TS(I)%DATA%E, &720:                     PRINT '(A,G20.10,A)',' tryconnect> Transition state with energy ',TS(I)%DATA%E, &
696:   &                                     ' ignored, cis-trans isomerisation detected in one or more peptide bonds.'721:   &                                     ' ignored, cis-trans isomerisation detected in one or more peptide bonds.'
697:                     DEALLOCATE(TS(I)%DATA%EVALMIN)722:                     DEALLOCATE(TS(I)%DATA%EVALMIN)
698:                     DEALLOCATE(QPLUS,QMINUS,EPLUS,EMINUS)723:                     DEALLOCATE(QPLUS,QMINUS,EPLUS,EMINUS)
699:                     TS(I)%DATA%BAD=.TRUE.724:                     TS(I)%DATA%BAD=.TRUE.
700:                     CYCLE725:                     CYCLE
701:                    END IF726:                    END IF
702:                  END IF727:                  END IF
703:                END IF728:                END IF
704:                IF ((CHECKCHIRALT.OR.SETCHIRAL).AND.AMBER12T) THEN729:                IF (CHECKCHIRALT.AND.(AMBERT.OR.NABT)) THEN
705:                   GOODSTRUCTURE1=.TRUE.730:                   CALL CHECK_CHIRALITY(QMINUS,NATOMS,GOODSTRUCTURE1)
706:                   GOODSTRUCTURE2=.TRUE.731:                   CALL CHECK_CHIRALITY(QPLUS,NATOMS,GOODSTRUCTURE2)
707:                   CALL CHIRALITY_CHECK(QMINUS, GOODSTRUCTURE1)732:                   IF (.NOT.GOODSTRUCTURE1.OR..NOT.GOODSTRUCTURE2) THEN
708:                   CALL CHIRALITY_CHECK(QPLUS, GOODSTRUCTURE2) 
709:                   IF ((.NOT.GOODSTRUCTURE1).OR.(.NOT.GOODSTRUCTURE2)) THEN 
710:                     WRITE(*,'(A)') ' connect> Chirality inversion detected in at least one of the carbon centres, rejecting'733:                     WRITE(*,'(A)') ' connect> Chirality inversion detected in at least one of the carbon centres, rejecting'
711:                     DEALLOCATE(TS(I)%DATA%EVALMIN)734:                     DEALLOCATE(TS(I)%DATA%EVALMIN)
712:                     DEALLOCATE(QPLUS,QMINUS,EPLUS,EMINUS)735:                     DEALLOCATE(QPLUS,QMINUS,EPLUS,EMINUS)
713:                     TS(I)%DATA%BAD=.TRUE.736:                     TS(I)%DATA%BAD=.TRUE.
714:                     CYCLE737:                     CYCLE
715:                   ENDIF738:                   ENDIF
716:                ENDIF739:                ENDIF
717: ! AMBER 9740: ! AMBER 9
718:                IF ((AMBERT.OR.NABT).AND.NOCISTRANS) THEN741:                IF ((AMBERT.OR.NABT).AND.NOCISTRANS) THEN
719:                  IF(NOCISTRANSRNA) THEN742:                  IF(NOCISTRANSRNA) THEN


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0