hdiff output

r31307/mc_gbh.F90 2016-10-12 18:30:16.382228238 +0100 r31306/mc_gbh.F90 2016-10-12 18:30:16.650231829 +0100
 30:   INCLUDE 'mpif.h' 30:   INCLUDE 'mpif.h'
 31:   INTEGER MPIERR 31:   INTEGER MPIERR
 32: #endif 32: #endif
 33:   ! 33:   !
 34:   INTEGER, INTENT(IN) :: NSTEPS 34:   INTEGER, INTENT(IN) :: NSTEPS
 35:   ! 35:   !
 36:   LOGICAL :: ACCEPT 36:   LOGICAL :: ACCEPT
 37:   INTEGER :: I, ITRIAL, ITERNS, BRUN, QDONE, NQTOT, IPROC, IPROCLO, & 37:   INTEGER :: I, ITRIAL, ITERNS, BRUN, QDONE, NQTOT, IPROC, IPROCLO, &
 38:        NDUDSTREAK 38:        NDUDSTREAK
 39:   DOUBLE PRECISION :: TIME, SCREENC(3*NATOMSALLOC), POTEL, EXTRA, & 39:   DOUBLE PRECISION :: TIME, SCREENC(3*NATOMSALLOC), POTEL, EXTRA, &
 40:        POTEL_LIST(NPAR_GBH), POTELO, R, DPRAND, EREF 40:        POTEL_LIST(NPAR_GBH), POTELO, ELOWEST, R, DPRAND, EREF
 41:   ! 41:   !
 42:   COMMON /MYPOT/ POTEL 42:   COMMON /MYPOT/ POTEL
 43:   ! 43:   !
 44:   WRITE(MYUNIT, '(A)')  'mc_gbh> Calculating initial energy' 44:   WRITE(MYUNIT, '(A)')  'mc_gbh> Calculating initial energy'
 45:   !WRITE(MYUNIT, *)  'mc_gbh> NATOMSALLOC=', NATOMSALLOC 45:   !WRITE(MYUNIT, *)  'mc_gbh> NATOMSALLOC=', NATOMSALLOC
 46:   CALL FLUSH(MYUNIT) 46:   CALL FLUSH(MYUNIT)
 47:   CALL QUENCH(.FALSE.,1,ITERNS,TIME,BRUN,QDONE,SCREENC) 47:   CALL QUENCH(.FALSE.,1,ITERNS,TIME,BRUN,QDONE,SCREENC)
 48:   NQ(1) = 0 48:   NQ(1) = 0
 49:   WRITE(MYUNIT,& 49:   WRITE(MYUNIT,&
 50:        '(A,I10,A,G20.10,A,I5,A,G12.5,A,F10.1)') & 50:        '(A,I10,A,G20.10,A,I5,A,G12.5,A,F10.1)') &
 96: #ifdef MPI 96: #ifdef MPI
 97:      ! Gather all parallel quench energies on master node. 97:      ! Gather all parallel quench energies on master node.
 98:      CALL MPI_GATHER(POTEL, 1, MPI_DOUBLE_PRECISION, & 98:      CALL MPI_GATHER(POTEL, 1, MPI_DOUBLE_PRECISION, &
 99:           POTEL_LIST, 1, MPI_DOUBLE_PRECISION, 0, & 99:           POTEL_LIST, 1, MPI_DOUBLE_PRECISION, 0, &
100:           MPI_COMM_WORLD, MPIERR)100:           MPI_COMM_WORLD, MPIERR)
101: #else101: #else
102:      POTEL_LIST(1) = POTEL102:      POTEL_LIST(1) = POTEL
103: #endif103: #endif
104:      !104:      !
105:      IF(MYNODE==0) THEN105:      IF(MYNODE==0) THEN
106:         IF (TARGET) IPROCLO=MINLOC(POTEL_LIST, 1)-1106:         ! Find lowest energy in the gathered list.
 107:         ELOWEST=MINVAL(POTEL_LIST)
 108:         IPROCLO=MINLOC(POTEL_LIST, 1)-1
107:         ! Choose a IPROC with Boltzmann probability.109:         ! Choose a IPROC with Boltzmann probability.
108:         CALL CHOOSE_FROM_LIST(NPAR_GBH,POTEL_LIST,IPROC)110:         CALL CHOOSE_FROM_LIST(NPAR_GBH,POTEL_LIST,IPROC)
109:         IPROC=IPROC-1111:         IPROC=IPROC-1
110:         !112:         !
111:      ENDIF113:      ENDIF
112:      !114:      !
113: #ifdef MPI 115: #ifdef MPI 
114:      ! Broadcast IPROC from master116:      ! Broadcast IPROC from master
115:      CALL MPI_BCAST(IPROC,1,MPI_INTEGER,&117:      CALL MPI_BCAST(IPROC,1,MPI_INTEGER,&
116:           0,MPI_COMM_WORLD,MPIERR)118:           0,MPI_COMM_WORLD,MPIERR)
169:   !171:   !
170:   USE COMMONS, ONLY : TEMP172:   USE COMMONS, ONLY : TEMP
171:   !173:   !
172:   IMPLICIT NONE174:   IMPLICIT NONE
173:   !175:   !
174:   INTEGER, INTENT(IN) :: N176:   INTEGER, INTENT(IN) :: N
175:   DOUBLE PRECISION, INTENT(IN) :: VALUES(N)177:   DOUBLE PRECISION, INTENT(IN) :: VALUES(N)
176:   INTEGER, INTENT(OUT) :: I178:   INTEGER, INTENT(OUT) :: I
177:   !179:   !
178:   INTEGER :: J180:   INTEGER :: J
179:   DOUBLE PRECISION :: PSUM(N), X, DPRAND, ELOWEST181:   DOUBLE PRECISION :: PSUM(N), X, DPRAND
180:   ! 
181:   ELOWEST=MINVAL(VALUES) 
182:   !182:   !
183:   X=0.0D0 ! initialise total sum183:   X=0.0D0 ! initialise total sum
184:   DO J=1,N 184:   DO J=1,N 
185:      X = X + DEXP(-(VALUES(J)-ELOWEST)/TEMP(1))185:      X = X + DEXP(-VALUES(J)/TEMP(1))
186:      PSUM(J) = X ! store partial sum186:      PSUM(J) = X ! store partial sum
187:   ENDDO187:   ENDDO
188:   !188:   !
189:   X=X*DPRAND()189:   X=X*DPRAND()
190:   !190:   !
191:   I=1191:   I=1
192:   DO WHILE (X > PSUM(I))192:   DO WHILE (X > PSUM(I))
193:      I=I+1193:      I=I+1
194:   ENDDO194:   ENDDO
195:   !195:   !


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0