hdiff output

r29221/modcudabfgsts.f90 2015-11-17 23:32:35.424175151 +0000 r29220/modcudabfgsts.f90 2015-11-17 23:32:35.808180301 +0000
  1: MODULE MODCUDABFGSTS  1: MODULE MODCUDABFGSTS
  2:   2: 
  3: USE COMMONS, ONLY : NATOMS, DEBUG, NOPT, STPMAX, REDOPATH, IVEC  3: USE COMMONS, ONLY : NATOMS, DEBUG, NOPT, STPMAX, REDOPATH, IVEC
  4:   4: 
  5: USE KEY, ONLY : CUDAPOT, GMAX, CONVU, CONVR, MINMAX, MXSTP, MAXXBFGS, XMAXERISE, CUDATIMET, CFUSIONT, COLDFUSIONLIMIT, XDGUESS, &   5: USE KEY, ONLY : CUDAPOT, GMAX, CONVU, CONVR, MINMAX, MXSTP, MAXXBFGS, XMAXERISE, CUDATIMET, CFUSIONT, COLDFUSIONLIMIT, XDGUESS, & 
  6:                 XMUPDATE, HINDEX, MASST, SHIFTED, CHECKINDEX, REVERSEUPHILLT, GRADSQ, FREEZE, READV, DUMPV, FIXD, EIGENONLY, &   6:                 XMUPDATE, MYUNIT, HINDEX, MASST, SHIFTED, CHECKINDEX, REVERSEUPHILLT, GRADSQ, FREEZE, READV, DUMPV, FIXD, &
  7:                 NSECDIAG, EVPC, CEIG, NEVS, CHECKOVERLAPT, CHECKNEGATIVET, REOPT, BFGSSTEP, PUSHCUT, PUSHOFF, MAXMAX, TRAD, &   7:                 EIGENONLY, NSECDIAG, EVPC, CEIG, NEVS, CHECKOVERLAPT, CHECKNEGATIVET, REOPT, BFGSSTEP, PUSHCUT, PUSHOFF, MAXMAX, &
  8:                 NBFGSMAX1, NBFGSMAX2, BFGSTSTOL, REPELTST, MUPDATE, MAXBFGS, MAXERISE, DGUESS, NOIT, VARIABLES, NOHESS, FROZEN, &   8:                 TRAD, NBFGSMAX1, NBFGSMAX2, BFGSTSTOL, REPELTST, MUPDATE, MAXBFGS, MAXERISE, DGUESS, NOIT, VARIABLES, NOHESS, & 
  9:                 NFREEZE, PV, FIXAFTER, CPMD, PRINTPTS, TWOENDS, DUMPMAG, NSTEPMIN, AMBER12T  9:                 FROZEN, NFREEZE, PV, FIXAFTER, CPMD, PRINTPTS, TWOENDS, DUMPMAG, NSTEPMIN, AMBER12T
 10:  10: 
 11: USE GENRIGID, ONLY : RIGIDINIT, ATOMRIGIDCOORDT, DEGFREEDOMS, NRIGIDBODY, NSITEPERBODY, RIGIDGROUPS, MAXSITE, SITESRIGIDBODY, & 11: USE GENRIGID, ONLY : RIGIDINIT, ATOMRIGIDCOORDT, DEGFREEDOMS, NRIGIDBODY, NSITEPERBODY, RIGIDGROUPS, MAXSITE, SITESRIGIDBODY, &
 12:                      RIGIDSINGLES, IINVERSE 12:                      RIGIDSINGLES, IINVERSE
 13:  13: 
 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 
 23:  
 24: USE MODCHARMM, ONLY : CHECKCHIRALT 
 25:  
 26: USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_PTR, C_INT, C_DOUBLE, C_BOOL, C_CHAR 22: USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_PTR, C_INT, C_DOUBLE, C_BOOL, C_CHAR
 27:  23: 
 28: IMPLICIT NONE 24: IMPLICIT NONE
 29:  25: 
 30: INTERFACE 26: INTERFACE
 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, & 27:     SUBROUTINE CUDA_BFGSTS(C_NATOMS, C_COORDS, C_CEIG, C_MFLAG, C_ENERGY, C_NEVS, ITMAX, C_ITER, C_MAXXBFGS, C_XMAXERISE, C_RMS, &
 32:                           C_CUDAPOT, C_DEBUG, C_CUDATIMET, NCALLS, C_CFUSIONT, C_COLDFUSIONLIMIT, C_XDGUESS, C_XMUPDATE, & 28:                           C_CUDAPOT, C_DEBUG, C_CUDATIMET, NCALLS, C_CFUSIONT, C_COLDFUSIONLIMIT, C_XDGUESS, C_XMUPDATE, &
 33:                           C_EVALMIN, C_VECS, C_ATOMRIGIDCOORDT, C_DEGFREEDOMS, C_NRIGIDBODY, C_NSITEPERBODY, C_RIGIDGROUPS, & 29:                           C_EVALMIN, C_VECS, C_ATOMRIGIDCOORDT, C_DEGFREEDOMS, C_NRIGIDBODY, C_NSITEPERBODY, C_RIGIDGROUPS, &
 34:                           C_MAXSITE, C_SITESRIGIDBODY, C_RIGIDSINGLES, C_IINVERSE, C_NSECDIAG, C_EVPC, & 30:                           C_MAXSITE, C_SITESRIGIDBODY, C_RIGIDSINGLES, C_IINVERSE, C_NSECDIAG, C_EVPC, &
 35:                           C_PUSHCUT, C_PUSHOFF, C_STPMAX, C_MAXMAX, C_MINMAX, C_TRAD, C_NBFGSMAX1, C_NBFGSMAX2, C_BFGSTSTOL, & 31:                           C_PUSHCUT, C_PUSHOFF, C_STPMAX, C_MAXMAX, C_MINMAX, C_TRAD, C_NBFGSMAX1, C_NBFGSMAX2, C_BFGSTSTOL, &
133:         ! Therefore uninitialised C types are passed in and converted types are copied back after the call129:         ! Therefore uninitialised C types are passed in and converted types are copied back after the call
134: 130: 
135:         INTEGER :: I, J, K, ITER, FCALL, NPCALL, ECALL, SCALL131:         INTEGER :: I, J, K, ITER, FCALL, NPCALL, ECALL, SCALL
136:         DOUBLE PRECISION :: ENERGY, RMS, EVALMIN, FTIME, ETIME, STIME132:         DOUBLE PRECISION :: ENERGY, RMS, EVALMIN, FTIME, ETIME, STIME
137:         DOUBLE PRECISION, DIMENSION(3*NATOMS) :: COORDS, VECS133:         DOUBLE PRECISION, DIMENSION(3*NATOMS) :: COORDS, VECS
138:         LOGICAL :: MFLAG, KNOWE, KNOWG, KNOWH, DRAGT, DOINTERNALSTRANSFORM134:         LOGICAL :: MFLAG, KNOWE, KNOWG, KNOWH, DRAGT, DOINTERNALSTRANSFORM
139:         COMMON /PCALL/ NPCALL, ECALL, FCALL, SCALL, ETIME, FTIME, STIME135:         COMMON /PCALL/ NPCALL, ECALL, FCALL, SCALL, ETIME, FTIME, STIME
140:         COMMON /KNOWN/ KNOWE, KNOWG, KNOWH136:         COMMON /KNOWN/ KNOWE, KNOWG, KNOWH
141:         COMMON /RUNTYPE/ DRAGT137:         COMMON /RUNTYPE/ DRAGT
142: 138: 
143:         IF (CHECKCISTRANSALWAYSDNA .OR. CHECKCISTRANSALWAYSRNA .OR. CHECKCHIRALT) THEN 
144:             WRITE(*,'(A)') " modcudabfgsts> Warning: Subroutine CHIRALITY_CHECK not implemented for BFGSTS on GPU. " 
145:         END IF 
146:  
147:         IF (CHECKCISTRANSALWAYS) THEN 
148:             WRITE(*,'(A)') " modcudabfgsts> Warning: Subroutine CIS_TRANS_CHECK not implemented for BFGSTS on GPU. " 
149:         END IF 
150:  
151:         IF (.NOT. NOHESS) THEN139:         IF (.NOT. NOHESS) THEN
152:             WRITE(*,'(A)') " modcudabfgsts> Keyword NOHESS must be used. "140:             WRITE(MYUNIT,'(A)') "modcudabfgsts> Keyword NOHESS must be used. "
153:             STOP141:             STOP
154:         END IF142:         END IF
155: 143: 
156:         DOINTERNALSTRANSFORM = INTWRAP_USEINTERNALS()144:         DOINTERNALSTRANSFORM = INTWRAP_USEINTERNALS()
157: 145: 
158:         IF (MASST .OR. CHECKINDEX .OR. REVERSEUPHILLT .OR. GRADSQ .OR. READV .OR. DUMPV .OR. &146:         IF (MASST .OR. CHECKINDEX .OR. REVERSEUPHILLT .OR. GRADSQ .OR. READV .OR. DUMPV .OR. &
159:             EIGENONLY .OR. FIXD .OR. CHECKOVERLAPT .OR. CHECKNEGATIVET .OR. REDOPATH .OR. REOPT.OR.BFGSSTEP.OR. &147:             EIGENONLY .OR. FIXD .OR. CHECKOVERLAPT .OR. CHECKNEGATIVET .OR. REDOPATH .OR. REOPT.OR.BFGSSTEP.OR. &
160:             REPELTST .OR. NOIT .OR. VARIABLES .OR. (FIXAFTER .GT. 0) .OR. PV .OR. (IVEC .NE. 0) .OR. CPMD .OR. DRAGT .OR. & 148:             REPELTST .OR. NOIT .OR. VARIABLES .OR. (FIXAFTER .GT. 0) .OR. PV .OR. (IVEC .NE. 0) .OR. CPMD .OR. DRAGT .OR. & 
161:             TWOENDS .OR. DOINTERNALSTRANSFORM .OR. BONDSFROMFILE .OR. DUMPMAG .OR. (NSTEPMIN .GT. 0)) THEN149:             TWOENDS .OR. DOINTERNALSTRANSFORM .OR. BONDSFROMFILE .OR. DUMPMAG .OR. (NSTEPMIN .GT. 0)) THEN
162:             WRITE(*,'(A)') " modcudabfgsts> Keywords MASS, CHECKINDEX, REVERSEUPHILLT, GRADSQ, READVEC, &150:             WRITE(MYUNIT,'(A)') "modcudabfgsts> Keywords MASS, CHECKINDEX, REVERSEUPHILLT, GRADSQ, READVEC, &
163:                                  DUMPVECTOR, FIXD, EIGENONLY, CHECKOVERLAPT, CHECKNEGATIVET, REDOPATH, REOPT, BFGSSTEP, REPELTST, &151:                                  DUMPVECTOR, FIXD, EIGENONLY, CHECKOVERLAPT, CHECKNEGATIVET, REDOPATH, REOPT, BFGSSTEP, REPELTST, &
164:                                  NOIT, VARIABLES, FIXAFTER, PV, MODE, MODEDOWN, CPMD, DRAG, TWOENDS, INTMIN, BONDSFROMFILE, & 152:                                  NOIT, VARIABLES, FIXAFTER, PV, MODE, MODEDOWN, CPMD, DRAG, TWOENDS, INTMIN, BONDSFROMFILE, & 
165:                                  DUMPMAG, STEPMIN are not yet supported. & 153:                                  DUMPMAG, STEPMIN are not yet supported. & 
166:                                  Contact rgm38 if you would like a feature to be added. "154:                                  Contact rgm38 if you would like a feature to be added. "
167:             WRITE(*,'(A)') " modcudabfgsts> Disclaimer: this list might not be exhaustive! "155:             WRITE(MYUNIT,'(A)') "modcudabfgsts> Disclaimer: this list might not be exhaustive! "
168:             STOP156:             STOP
169:         END IF157:         END IF
170: 158: 
171:         IF (PRINTPTS) THEN159:         IF (PRINTPTS) THEN
172:             WRITE(*,'(A)') " modcudabfgsts> Keyword NOPOINTS must be used. & 160:             WRITE(MYUNIT,'(A)') "modcudabfgsts> Keyword NOPOINTS must be used. & 
173:                                  Functionality to print coordinates/energies will be added at some point in the future. "161:                                  Functionality to print coordinates/energies will be added at some point in the future. "
174:             STOP162:             STOP
175:         END IF163:         END IF
176: 164: 
177:         IF (SHIFTED) THEN165:         IF (SHIFTED) THEN
178:             WRITE(*,'(A)') " modcudabfgsts> Zeros are shifted in lowest eigenvector. "166:             WRITE(MYUNIT,'(A)') "modcudabfgsts> Zeros are shifted in lowest eigenvector. "
179:             STOP167:             STOP
180:         END IF168:         END IF
181: 169: 
182:         ! Check for consistent convergence criteria on RMS gradient in LBFGS and EF part170:         ! Check for consistent convergence criteria on RMS gradient in LBFGS and EF part
183:         IF (GMAX.NE.CONVR) THEN171:         IF (GMAX.NE.CONVR) THEN
184:             IF (DEBUG) THEN 172:             IF (DEBUG) THEN 
185:                 PRINT '(2(A,G20.10),A)', " modcudabfgsts> WARNING - GMAX ", GMAX, " is different from CONVR ", CONVR, " - resetting. "173:                 PRINT '(2(A,G20.10),A)',' modcudabfgsts> WARNING - GMAX ',GMAX,' is different from CONVR ',CONVR,' - resetting'
186:             END IF174:             END IF
187:             GMAX=MIN(CONVR,GMAX)175:             GMAX=MIN(CONVR,GMAX)
188:             CONVR=MIN(CONVR,GMAX)176:             CONVR=MIN(CONVR,GMAX)
189:         ENDIF177:         ENDIF
190:         IF (MINMAX.GE.CONVU) THEN178:         IF (MINMAX.GE.CONVU) THEN
191:             IF (DEBUG) THEN 179:             IF (DEBUG) THEN 
192:                 PRINT '(2(A,G20.10),A)', " modcudabfgsts> WARNING - CONVU <= MINMAX - resetting CONVU. "180:                 PRINT '(2(A,G20.10),A)',' modcudabfgsts> WARNING - CONVU <= MINMAX - resetting CONVU'
193:             END IF181:             END IF
194:             CONVU=2*MINMAX182:             CONVU=2*MINMAX
195:         ENDIF183:         ENDIF
196: 184: 
197:         !  Reset maximum step sizes in case this isn't the first call185:         !  Reset maximum step sizes in case this isn't the first call
198:         IF (DEBUG) THEN 186:         IF (DEBUG) THEN 
199:             PRINT '(A,G20.10)', " modcudabfgsts> resetting maximum step sizes to ", MXSTP187:             PRINT '(A,G20.10)',' modcudabfgsts> resetting maximum step sizes to ',MXSTP
200:         END IF188:         END IF
201:         DO I=1,NOPT189:         DO I=1,NOPT
202:             STPMAX(I)=MXSTP190:             STPMAX(I)=MXSTP
203:         ENDDO191:         ENDDO
204: 192: 
205:         NUP=HINDEX193:         NUP=HINDEX
206: 194: 
207:         ! Variables from common blocks or modules with intent in or inout are copied into C types195:         ! Variables from common blocks or modules with intent in or inout are copied into C types
208: 196: 
209:         ! CUDA_BFGSTS currently only supports finding one eigenvector using Rayleigh-Ritz minimization197:         ! CUDA_BFGSTS currently only supports finding one eigenvector using Rayleigh-Ritz minimization
210:         IF ((SIZE(ZWORK) .NE. (3*NATOMS)) .OR. (NUP .NE. 1)) THEN198:         IF ((SIZE(ZWORK) .NE. (3*NATOMS)) .OR. (NUP .NE. 1)) THEN
211:             WRITE(*,'(A)') " modcudabfgsts> HINDEX>1 is not supported as second derivatives are not available for AMBER with CUDA. " 199:             WRITE(MYUNIT,'(A)') "modcudabfgsts> HINDEX>1 is not supported as second derivatives are not available for AMBER with CUDA." 
212:             STOP200:             STOP
213:         END IF201:         END IF
214: 202: 
215:         DO K = 1,NRIGIDBODY203:         DO K = 1,NRIGIDBODY
216:             DO J = 1,3204:             DO J = 1,3
217:                 DO I = 1,MAXSITE205:                 DO I = 1,MAXSITE
218:                      C_SITESRIGIDBODY((K - 1)*3*MAXSITE + (J - 1)*MAXSITE + I) = SITESRIGIDBODY(I,J,K)206:                      C_SITESRIGIDBODY((K - 1)*3*MAXSITE + (J - 1)*MAXSITE + I) = SITESRIGIDBODY(I,J,K)
219:                 END DO207:                 END DO
220:             END DO208:             END DO
221:         END DO209:         END DO


r29221/modcudalbfgs.f90 2015-11-17 23:32:35.612177672 +0000 r29220/modcudalbfgs.f90 2015-11-17 23:32:35.996182823 +0000
  1: MODULE MODCUDALBFGS  1: MODULE MODCUDALBFGS
  2:   2: 
  3: USE KEY, ONLY : GMAX, CUDATIMET, CUDAPOT, MAXBFGS, MAXERISE, CFUSIONT, COLDFUSIONLIMIT, DGUESS, GRADSQ, FREEZE, REVERSEUPHILLT, &   3: USE KEY, ONLY : GMAX, CUDATIMET, CUDAPOT, MAXBFGS, MAXERISE, CFUSIONT, COLDFUSIONLIMIT, DGUESS, MYUNIT, GRADSQ, FREEZE, & 
  4:                 FREEZE, FROZEN, NFREEZE, PRINTPTS, TWOENDS, PV, DUMPMAG, NSTEPMIN, FIXAFTER, AMBER12T  4:                 REVERSEUPHILLT, FREEZE, FROZEN, NFREEZE, PRINTPTS, TWOENDS, PV, DUMPMAG, NSTEPMIN, FIXAFTER, AMBER12T
  5:   5: 
  6: USE COMMONS, ONLY : DEBUG  6: USE COMMONS, ONLY : DEBUG
  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 
 16:  
 17: USE MODCHARMM, ONLY : CHECKCHIRALT 
 18:  
 19: USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_PTR, C_INT, C_DOUBLE, C_BOOL, C_CHAR 15: USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_PTR, C_INT, C_DOUBLE, C_BOOL, C_CHAR
 20:  16: 
 21: IMPLICIT NONE 17: IMPLICIT NONE
 22:  18: 
 23: INTERFACE 19: INTERFACE
 24:     SUBROUTINE CUDA_LBFGS(N, C_XCOORDS, C_GMAX, C_MFLAG, C_ENERGY, ITMAX, C_ITDONE, C_MAXBFGS, C_MAXERISE, C_RMS, C_CUDAPOT, &  20:     SUBROUTINE CUDA_LBFGS(N, C_XCOORDS, C_GMAX, C_MFLAG, C_ENERGY, ITMAX, C_ITDONE, C_MAXBFGS, C_MAXERISE, C_RMS, C_CUDAPOT, & 
 25:                          C_DEBUG, C_CUDATIMET, NCALLS, C_COLDFUSION, C_COLDFUSIONLIMIT, C_DGUESS, MUPDATE, C_ATOMRIGIDCOORDT, &  21:                          C_DEBUG, C_CUDATIMET, NCALLS, C_COLDFUSION, C_COLDFUSIONLIMIT, C_DGUESS, MUPDATE, C_ATOMRIGIDCOORDT, & 
 26:                          C_DEGFREEDOMS, C_NRIGIDBODY, C_NSITEPERBODY, C_RIGIDGROUPS, C_MAXSITE, C_SITESRIGIDBODY, C_RIGIDSINGLES, &  22:                          C_DEGFREEDOMS, C_NRIGIDBODY, C_NSITEPERBODY, C_RIGIDGROUPS, C_MAXSITE, C_SITESRIGIDBODY, C_RIGIDSINGLES, & 
 27:                          C_BQMAX, C_IINVERSE, PROJECT, C_FREEZE, C_FROZEN, C_NFREEZE, POTENTIALTIME) BIND(C,NAME="setup_lbfgs") 23:                          C_BQMAX, C_IINVERSE, PROJECT, C_FREEZE, C_FROZEN, C_NFREEZE, POTENTIALTIME) BIND(C,NAME="setup_lbfgs")
 28:  24: 
117:         ! Therefore uninitialised C types are passed in and converted types are copied back after the call113:         ! Therefore uninitialised C types are passed in and converted types are copied back after the call
118: 114: 
119:         INTEGER :: I, J, K, ITDONE, FCALL, NPCALL, ECALL, SCALL115:         INTEGER :: I, J, K, ITDONE, FCALL, NPCALL, ECALL, SCALL
120:         DOUBLE PRECISION :: ENERGY, RMS, FTIME, ETIME, STIME116:         DOUBLE PRECISION :: ENERGY, RMS, FTIME, ETIME, STIME
121:         DOUBLE PRECISION, DIMENSION(N) :: XCOORDS117:         DOUBLE PRECISION, DIMENSION(N) :: XCOORDS
122:         LOGICAL :: MFLAG, KNOWE, KNOWG, KNOWH, DRAGT, DOINTERNALSTRANSFORM118:         LOGICAL :: MFLAG, KNOWE, KNOWG, KNOWH, DRAGT, DOINTERNALSTRANSFORM
123:         COMMON /PCALL/ NPCALL, ECALL, FCALL, SCALL, ETIME, FTIME, STIME119:         COMMON /PCALL/ NPCALL, ECALL, FCALL, SCALL, ETIME, FTIME, STIME
124:         COMMON /KNOWN/ KNOWE, KNOWG, KNOWH120:         COMMON /KNOWN/ KNOWE, KNOWG, KNOWH
125:         COMMON /RUNTYPE/ DRAGT121:         COMMON /RUNTYPE/ DRAGT
126: 122: 
127:         IF (CHECKCISTRANSALWAYSDNA .OR. CHECKCISTRANSALWAYSRNA .OR. CHECKCHIRALT) THEN 
128:             WRITE(*,'(A)') " modcudalbfgs> Warning: Subroutine CHIRALITY_CHECK not implemented for LBFGS on GPU. " 
129:         END IF 
130:  
131:         IF (CHECKCISTRANSALWAYS) THEN 
132:             WRITE(*,'(A)') " modcudalbfgs> Warning: Subroutine CIS_TRANS_CHECK not implemented for LBFGS on GPU. " 
133:         END IF 
134:  
135:         DOINTERNALSTRANSFORM = INTWRAP_USEINTERNALS()123:         DOINTERNALSTRANSFORM = INTWRAP_USEINTERNALS()
136: 124: 
137:         IF (PRINTPTS) THEN125:         IF (PRINTPTS) THEN
138:             WRITE(*,'(A)') " modcudalbfgs> Keyword NOPOINTS must be used. &126:             WRITE(MYUNIT,'(A)') "modcudalbfgs> Keyword NOPOINTS must be used. &
139:                                  Functionality to print coordinates/energies will be added at some point in the future. "127:                                  Functionality to print coordinates/energies will be added at some point in the future. "
140:             STOP128:             STOP
141:         END IF129:         END IF
142: 130: 
143:         IF (REVERSEUPHILLT .OR. GRADSQ .OR. DRAGT .OR. TWOENDS .OR. DOINTERNALSTRANSFORM .OR. BONDSFROMFILE .OR. PV .OR. & 131:         IF (REVERSEUPHILLT .OR. GRADSQ .OR. DRAGT .OR. TWOENDS .OR. DOINTERNALSTRANSFORM .OR. BONDSFROMFILE .OR. PV .OR. & 
144:             DUMPMAG .OR. (NSTEPMIN .GT. 0) .OR. (FIXAFTER .GT. 0)) THEN132:             DUMPMAG .OR. (NSTEPMIN .GT. 0) .OR. (FIXAFTER .GT. 0)) THEN
145:             WRITE(*,'(A)') " modcudalbfgs> Keywords REVERSEUPHILLT, GRADSQ, DRAG, TWOENDS, INTMIN, BONDSFROMFILE, PV, & 133:             WRITE(MYUNIT,'(A)') "modcudalbfgs> Keywords REVERSEUPHILLT, GRADSQ, DRAG, TWOENDS, INTMIN, BONDSFROMFILE, PV, & 
146:                                  DUMPMAG, STEPMIN, FIXAFTER are not yet supported. & 134:                                  DUMPMAG, STEPMIN, FIXAFTER are not yet supported. Contact rgm38 if you would like a feature to be added. "
147:                                  Contact rgm38 if you would like a feature to be added. "135:             WRITE(MYUNIT,'(A)') "modcudalbfgs> Disclaimer: this list might not be exhaustive! "
148:             WRITE(*,'(A)') " modcudalbfgs> Disclaimer: this list might not be exhaustive! " 
149:             STOP136:             STOP
150:         END IF137:         END IF
151: 138: 
152:         ! Variables from common blocks or modules with intent in or inout are copied into C types139:         ! Variables from common blocks or modules with intent in or inout are copied into C types
153: 140: 
154:         DO K = 1,NRIGIDBODY141:         DO K = 1,NRIGIDBODY
155:             DO J = 1,3142:             DO J = 1,3
156:                 DO I = 1,MAXSITE143:                 DO I = 1,MAXSITE
157:                      C_SITESRIGIDBODY((K - 1)*3*MAXSITE + (J - 1)*MAXSITE + I) = SITESRIGIDBODY(I,J,K)144:                      C_SITESRIGIDBODY((K - 1)*3*MAXSITE + (J - 1)*MAXSITE + I) = SITESRIGIDBODY(I,J,K)
158:                 END DO145:                 END DO
218:             XCOORDS(I) = DBLE(C_XCOORDS(I))205:             XCOORDS(I) = DBLE(C_XCOORDS(I))
219:         END DO206:         END DO
220: 207: 
221:         ENERGY = DBLE(C_ENERGY)208:         ENERGY = DBLE(C_ENERGY)
222:         RMS = DBLE(C_RMS)209:         RMS = DBLE(C_RMS)
223:         MFLAG = LOGICAL(C_MFLAG)210:         MFLAG = LOGICAL(C_MFLAG)
224:         ITDONE = INT(C_ITDONE)211:         ITDONE = INT(C_ITDONE)
225:         CFUSIONT = LOGICAL(C_COLDFUSION)212:         CFUSIONT = LOGICAL(C_COLDFUSION)
226: 213: 
227:         IF (CFUSIONT) THEN214:         IF (CFUSIONT) THEN
228:             WRITE(*,'(A,2G20.10)') " modcudalbfgs> Cold fusion diagnosed - step discarded, energy, limit=", ENERGY, COLDFUSIONLIMIT215:             WRITE(MYUNIT,'(A,2G20.10)') ' modcudalbfgs> Cold fusion diagnosed - step discarded, energy, limit=',ENERGY,COLDFUSIONLIMIT
229:             ENERGY = 1.0D60216:             ENERGY = 1.0D60
230:             RMS = 1.0D1217:             RMS = 1.0D1
231:         END IF218:         END IF
232: 219: 
233:         FCALL = FCALL + INT(NCALLS)220:         FCALL = FCALL + INT(NCALLS)
234:         FTIME = FTIME + DBLE(POTENTIALTIME)221:         FTIME = FTIME + DBLE(POTENTIALTIME)
235: 222: 
236:         KNOWE=.FALSE.223:         KNOWE=.FALSE.
237:         KNOWG=.FALSE.224:         KNOWG=.FALSE.
238:         KNOWH=.FALSE.225:         KNOWH=.FALSE.


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0