hdiff output

r29152/modcudalbfgs.F90 2015-11-17 23:33:34.356965514 +0000 r29151/modcudalbfgs.F90 2015-11-17 23:33:34.736970606 +0000
262:         CALL CUDA_ENEGRAD_CPUTOGPU(NATOMS, COORDS, C_TOTENERGY, C_GRADIENTS)262:         CALL CUDA_ENEGRAD_CPUTOGPU(NATOMS, COORDS, C_TOTENERGY, C_GRADIENTS)
263: 263: 
264:         TOTENERGY = DBLE(C_TOTENERGY)264:         TOTENERGY = DBLE(C_TOTENERGY)
265:         265:         
266:         DO X = 1,(3*NATOMS)266:         DO X = 1,(3*NATOMS)
267:             GRADIENTS(X) = DBLE(C_GRADIENTS(X))267:             GRADIENTS(X) = DBLE(C_GRADIENTS(X))
268:         END DO268:         END DO
269: #endif269: #endif
270:     END SUBROUTINE CUDA_ENEGRAD_WRAPPER270:     END SUBROUTINE CUDA_ENEGRAD_WRAPPER
271: 271: 
272:     SUBROUTINE CUDA_NUMERICAL_HESS(NATOMS, COORDS, HESSIAN, DELTA) 
273:         IMPLICIT NONE 
274:  
275:         INTEGER(KIND=C_INT) :: NATOMS 
276:         REAL(KIND=C_DOUBLE) :: C_ENERGY 
277:         REAL(KIND=C_DOUBLE) :: COORDS(3*NATOMS), C_GRADIENTS(3*NATOMS) 
278:         DOUBLE PRECISION    :: HESSIAN(3*NATOMS, 3*NATOMS) 
279:         DOUBLE PRECISION    :: DELTA 
280:         DOUBLE PRECISION    :: GRAD_PLUS(3*NATOMS), GRAD_MINUS(3*NATOMS) 
281:         INTEGER             :: I 
282:  
283: #ifndef DUMMY_CUDA 
284:         DO I = 1, 3*NATOMS 
285:             ! Plus 
286:             COORDS(I) = COORDS(I) + DELTA 
287:             CALL CUDA_ENEGRAD_CPUTOGPU(NATOMS, COORDS, C_ENERGY, C_GRADIENTS) 
288:             GRAD_PLUS(:) = DBLE(C_GRADIENTS(:)) 
289:             ! Minus 
290:             COORDS(I) = COORDS(I) - 2.0D0 * DELTA 
291:             CALL CUDA_ENEGRAD_CPUTOGPU(NATOMS, COORDS, C_ENERGY, C_GRADIENTS) 
292:             GRAD_MINUS(:) = DBLE(C_GRADIENTS(:)) 
293:             ! Reset coords 
294:             COORDS(I) = COORDS(I) + DELTA 
295:             ! Calculate hessian 
296:             HESSIAN(I, :) = (GRAD_PLUS(:) - GRAD_MINUS(:)) / (2.0D0 * DELTA) 
297:         END DO 
298: #endif 
299:     END SUBROUTINE CUDA_NUMERICAL_HESS 
300:  
301: END MODULE MODCUDALBFGS272: END MODULE MODCUDALBFGS


r29152/potential.f90 2015-11-17 23:33:34.544968032 +0000 r29151/potential.f90 2015-11-17 23:33:34.928973181 +0000
 29:                        GENRIGID_DISTANCECHECK, GENRIGID_COMPRESS 29:                        GENRIGID_DISTANCECHECK, GENRIGID_COMPRESS
 30:    USE QMODULE, ONLY: QMIN, QMINP  30:    USE QMODULE, ONLY: QMIN, QMINP 
 31:    USE PERMU, ONLY: FIN 31:    USE PERMU, ONLY: FIN
 32:    USE PORFUNCS 32:    USE PORFUNCS
 33:    USE AMBER12_INTERFACE_MOD, ONLY: AMBER12_ENERGY_AND_GRADIENT, POT_ENE_REC_C 33:    USE AMBER12_INTERFACE_MOD, ONLY: AMBER12_ENERGY_AND_GRADIENT, POT_ENE_REC_C
 34:    USE MODHESS, ONLY: HESS, RBAANORMALMODET  34:    USE MODHESS, ONLY: HESS, RBAANORMALMODET 
 35:    USE MODAMBER9, ONLY: ATMASS1 35:    USE MODAMBER9, ONLY: ATMASS1
 36:    USE POLIRMOD, ONLY: POLIR 36:    USE POLIRMOD, ONLY: POLIR
 37:    USE MBPOLMOD, ONLY: MBPOL 37:    USE MBPOLMOD, ONLY: MBPOL
 38:    USE SWMOD, ONLY: SWTYPE 38:    USE SWMOD, ONLY: SWTYPE
 39:    USE MODCUDALBFGS, ONLY: CUDA_ENEGRAD_WRAPPER, CUDA_NUMERICAL_HESS 39:    USE MODCUDALBFGS, ONLY: CUDA_ENEGRAD_WRAPPER
 40:    USE GAUSS_MOD, ONLY: GFIELD 40:    USE GAUSS_MOD, ONLY: GFIELD
 41:    USE RAD_MOD, ONLY: RAD, RADR 41:    USE RAD_MOD, ONLY: RAD, RADR
 42:    USE PREC, ONLY: INT32, REAL64 42:    USE PREC, ONLY: INT32, REAL64
 43:    USE TWIST_MOD, ONLY: TWISTT, TWIST 43:    USE TWIST_MOD, ONLY: TWISTT, TWIST
 44:    IMPLICIT NONE 44:    IMPLICIT NONE
 45: ! Arguments 45: ! Arguments
 46: ! TODO: Work out intents 46: ! TODO: Work out intents
 47: ! TODO: Fix array dimensions? 47: ! TODO: Fix array dimensions?
 48:    REAL(REAL64)               :: X(*) 48:    REAL(REAL64)               :: X(*)
 49:    REAL(REAL64)               :: GRAD(*) 49:    REAL(REAL64)               :: GRAD(*)
423:       END IF423:       END IF
424: 424: 
425:       IF (SECT) THEN425:       IF (SECT) THEN
426:          VNEW=0.0D0426:          VNEW=0.0D0
427: ! khs26> Copied analytical second derivatives from OPTIM427: ! khs26> Copied analytical second derivatives from OPTIM
428:          IF (RIGIDINIT .AND. (.NOT. ATOMRIGIDCOORDT)) THEN428:          IF (RIGIDINIT .AND. (.NOT. ATOMRIGIDCOORDT)) THEN
429:             XRIGIDCOORDS(1:DEGFREEDOMS)=X(1:DEGFREEDOMS)429:             XRIGIDCOORDS(1:DEGFREEDOMS)=X(1:DEGFREEDOMS)
430:             CALL TRANSFORMRIGIDTOC(1, NRIGIDBODY, X, XRIGIDCOORDS)               430:             CALL TRANSFORMRIGIDTOC(1, NRIGIDBODY, X, XRIGIDCOORDS)               
431:          END IF431:          END IF
432:          IF (ALLOCATED(HESS)) DEALLOCATE(HESS)432:          IF (ALLOCATED(HESS)) DEALLOCATE(HESS)
 433:          IF (.NOT. ALLOCATED(TEMPHESS)) ALLOCATE(TEMPHESS(9*NATOMS*NATOMS))
 434:          TEMPHESS(:)=0.0D0
 435:          CALL MME2WRAPPER(X, ENERGY, VNEW, TEMPHESS, ATMASS1, GRAD1)
433:          ALLOCATE(HESS(3*NATOMS, 3*NATOMS))436:          ALLOCATE(HESS(3*NATOMS, 3*NATOMS))
434:          IF (CUDAT) THEN437:          K=1
435:             CALL CUDA_NUMERICAL_HESS(NATOMS, X, HESS, DELTA=1.0D-6)438:          DO I=1, 3*NATOMS
436:          ELSE 439:             DO J=1, 3*NATOMS
437:             IF (.NOT. ALLOCATED(TEMPHESS)) ALLOCATE(TEMPHESS(9*NATOMS*NATOMS))440:                HESS(I, J)=TEMPHESS(K)
438:             TEMPHESS(:)=0.0D0441:                K=K + 1
439:             CALL MME2WRAPPER(X, ENERGY, VNEW, TEMPHESS, ATMASS1, GRAD1) 
440:             K=1 
441:             DO I=1, 3*NATOMS 
442:                DO J=1, 3*NATOMS 
443:                   HESS(I, J)=TEMPHESS(K) 
444:                   K=K + 1 
445:                END DO 
446:             END DO442:             END DO
447:             DEALLOCATE(TEMPHESS)443:          END DO
448:          END IF444:          DEALLOCATE(TEMPHESS)
449:          IF ( RIGIDINIT .AND. (.NOT. ATOMRIGIDCOORDT)) THEN445:          IF ( RIGIDINIT .AND. (.NOT. ATOMRIGIDCOORDT)) THEN
450:             CALL TRANSFORMHESSIAN(HESS, VNEW, XRIGIDCOORDS, XRIGIDHESS, RBAANORMALMODET)446:             CALL TRANSFORMHESSIAN(HESS, VNEW, XRIGIDCOORDS, XRIGIDHESS, RBAANORMALMODET)
451:             CALL TRANSFORMGRAD(VNEW, XRIGIDCOORDS, XRIGIDGRAD)447:             CALL TRANSFORMGRAD(VNEW, XRIGIDCOORDS, XRIGIDGRAD)
452:             X(DEGFREEDOMS+1:3*NATOMS)=0.0D0448:             X(DEGFREEDOMS+1:3*NATOMS)=0.0D0
453:             X(1:DEGFREEDOMS)=XRIGIDCOORDS(1:DEGFREEDOMS)449:             X(1:DEGFREEDOMS)=XRIGIDCOORDS(1:DEGFREEDOMS)
454:             VNEW(DEGFREEDOMS+1:3*NATOMS)=0.0D0450:             VNEW(DEGFREEDOMS+1:3*NATOMS)=0.0D0
455:             VNEW(1:DEGFREEDOMS)=XRIGIDGRAD(1:DEGFREEDOMS)451:             VNEW(1:DEGFREEDOMS)=XRIGIDGRAD(1:DEGFREEDOMS)
456:             HESS(DEGFREEDOMS+1:3*NATOMS,:)=0.0D0452:             HESS(DEGFREEDOMS+1:3*NATOMS,:)=0.0D0
457:             HESS(:, DEGFREEDOMS+1:3*NATOMS)=0.0D0453:             HESS(:, DEGFREEDOMS+1:3*NATOMS)=0.0D0
458:             HESS(1:DEGFREEDOMS, 1:DEGFREEDOMS)=XRIGIDHESS(1:DEGFREEDOMS, 1:DEGFREEDOMS)454:             HESS(1:DEGFREEDOMS, 1:DEGFREEDOMS)=XRIGIDHESS(1:DEGFREEDOMS, 1:DEGFREEDOMS)


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0