hdiff output

r31317/mc_gbh.F90 2016-10-14 15:30:10.489528875 +0100 r31316/mc_gbh.F90 2016-10-14 15:30:10.745532297 +0100
184:   ! Choose an element of VALUES with Boltzmann probability184:   ! Choose an element of VALUES with Boltzmann probability
185:   !185:   !
186:   USE COMMONS, ONLY : TEMP, QALCSV, MYUNIT186:   USE COMMONS, ONLY : TEMP, QALCSV, MYUNIT
187:   !187:   !
188:   IMPLICIT NONE188:   IMPLICIT NONE
189:   !189:   !
190:   INTEGER, INTENT(IN) :: N190:   INTEGER, INTENT(IN) :: N
191:   DOUBLE PRECISION, INTENT(IN) :: VALUES(N)191:   DOUBLE PRECISION, INTENT(IN) :: VALUES(N)
192:   INTEGER, INTENT(OUT) :: I192:   INTEGER, INTENT(OUT) :: I
193:   !193:   !
 194:   LOGICAL :: SELECTIVE
194:   DOUBLE PRECISION :: PSUM(N), X, Y, DPRAND, ELOWEST195:   DOUBLE PRECISION :: PSUM(N), X, Y, DPRAND, ELOWEST
195:   !196:   !
 197:   ELOWEST=MINVAL(VALUES)
 198:   IF (MINLOC(VALUES,1)==N) THEN
 199:      SELECTIVE=.FALSE.
 200:   ELSE
 201:      SELECTIVE=.TRUE.
 202:   ENDIF
 203:   !
196:   X=0.0D0 ! initialise total sum204:   X=0.0D0 ! initialise total sum
197:   DO I=1,N-1205:   DO I=1,N-1
198:      Y = MIN(DEXP(-(VALUES(I)-VALUES(N))/TEMP(1)), 1.0D0)206:      IF(SELECTIVE) THEN
 207:         IF(VALUES(I) < VALUES(N)) THEN
 208:            Y = DEXP(-(VALUES(I)-ELOWEST)/TEMP(1))
 209:         ELSE
 210:            Y = 0.0D0 ! avoid selection 
 211:         ENDIF
 212:      ELSE
 213:         Y = DEXP(-(VALUES(I)-ELOWEST)/TEMP(1))
 214:      ENDIF
199:      X = X + Y215:      X = X + Y
200:      PSUM(I) = X ! store partial sum216:      PSUM(I) = X ! store partial sum
201:   ENDDO217:   ENDDO
202:   PSUM(N) = DBLE(N-1)218:   !
 219:   IF(SELECTIVE) THEN
 220:      PSUM(N) = PSUM(N-1)
 221:   ELSE
 222:      PSUM(N) = DBLE(N-1)
 223:   ENDIF
203:   !224:   !
204:   X=PSUM(N)*DPRAND()225:   X=PSUM(N)*DPRAND()
205:   !226:   !
206:   I=1227:   I=1
207:   DO WHILE (X > PSUM(I))228:   DO WHILE (X > PSUM(I))
208:      I=I+1229:      I=I+1
209:   ENDDO230:   ENDDO
210:   !231:   !
211:   !IF(QALCSV) THEN232:   !IF(QALCSV) THEN
212:   !   WRITE(MYUNIT, *) 'choose_from_list> vals=', VALUES233:   !   WRITE(MYUNIT, *) 'choose_from_list> vals=', VALUES


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0