hdiff output

r28641/disconnectionDPS.f90 2017-01-21 10:41:49.424174618 +0000 r28640/disconnectionDPS.f90 2017-01-21 10:41:49.656183616 +0000
132: ! the high energy minima have been discarded.132: ! the high energy minima have been discarded.
133: !133: !
134: ! NCONNMIN134: ! NCONNMIN
135: ! Minima with NCONNMIN connections or fewer are discarded. Default is zero.135: ! Minima with NCONNMIN connections or fewer are discarded. Default is zero.
136: !136: !
137: ! NOBARRIERS137: ! NOBARRIERS
138: ! If present, all transition state energies are reset to the energy of the higher138: ! If present, all transition state energies are reset to the energy of the higher
139: ! of the two minima they connect. This transforms the energy landscape to the139: ! of the two minima they connect. This transforms the energy landscape to the
140: ! type explored by gmin.140: ! type explored by gmin.
141: !141: !
142: ! PAIRS <n> <max> <file> <file> ... 
143: ! Show the paths between pairs of minima in different colours AND assign colours  
144: ! according to the connectivity of the graph. This is useful if you want to  
145: ! show how transitions of a particular type such as cagebreaks span the landscape. 
146: ! For simple colouring use TRMIN or TRVAL. 
147: ! This keyword works in two different ways dependent on the input. 
148: ! (a) Pairs of minima in the different files (number of files specified by n)  
149: ! are coloured, with a different colour for each file.  
150: ! (b) Pairs of minima in one file are all coloured differently. A value of  
151: ! zero for n requests this colour scheme. 
152: ! Each file should be a list of numbers of minima, two per line showing a pair.  
153: ! max is the number of lines in the longest file, currently used for array 
154: ! allocation. 
155: ! For both (a) and (b), these are the starting colours, and if pairs of minima  
156: ! are found to be connected together, colours are reassigned so that they  
157: ! have the same colour.  
158: ! Colours are chosen automatically to be as spread out as possible.   
159: ! Colours can be specified individually at both COLOURMARKERP in this file.   
160: ! This cannot be used at the same time as TRMIN/TRVAL. 
161: ! 
162: ! PAIRSONLY  
163: ! Used with pairs, this keyword means that any min/nodes that are uncoloured, 
164: ! will not be drawn. The tree is constructed as before with spaces left for  
165: ! the missing structure 
166: ! 
167: ! ORDER_BY_ENERGY142: ! ORDER_BY_ENERGY
168: ! If this keyword is present, then when a node splits into its daughter nodes,143: ! If this keyword is present, then when a node splits into its daughter nodes,
169: ! the lower energy nodes are closer to the center.144: ! the lower energy nodes are closer to the center.
170: !145: !
171: ! ORDER_BY_SIZE146: ! ORDER_BY_SIZE
172: ! If this keyword is present, then when a node splits into its daughter nodes,147: ! If this keyword is present, then when a node splits into its daughter nodes,
173: ! the nodes that represent larger basins are closer to the center.  This keyword148: ! the nodes that represent larger basins are closer to the center.  This keyword
174: ! is compatible with keyword CENTREGMIN149: ! is compatible with keyword CENTREGMIN
175: !150: !
176: ! PICK <file>151: ! PICK <file>
375:       END IF350:       END IF
376:       DO I=1, N_TRACE351:       DO I=1, N_TRACE
377:       READ (22, *) NUMOFMIN352:       READ (22, *) NUMOFMIN
378:       VALUES(NUMOFMIN)=VALUE353:       VALUES(NUMOFMIN)=VALUE
379:       END DO354:       END DO
380:       CLOSE (22)355:       CLOSE (22)
381:       WRITE (6, '(A,I2,A,I6, 3A)')'Colour ',value, ': ', n_trace, ' minima read in from ', TRIM(file_trace), '.'356:       WRITE (6, '(A,I2,A,I6, 3A)')'Colour ',value, ': ', n_trace, ' minima read in from ', TRIM(file_trace), '.'
382:   357:   
383:    END SUBROUTINE READ_TRFILE358:    END SUBROUTINE READ_TRFILE
384: !!359: !!
385: ! READ_PAIRFILE(CH(120) FILE_PAIRS, INT VALUE, INT(:,:,:) :: VALUES){{{ 
386:    SUBROUTINE READ_PAIRFILE(FILE_PAIRS, VALUE, VALUES) 
387:       IMPLICIT NONE 
388:       INTEGER :: VALUES(:,:,:) 
389:       INTEGER :: ERR, I, N_PAIRS, VALUE 
390:       CHARACTER(LEN=120) :: FILE_PAIRS  
391:        
392:       CALL COUNT_MIN(FILE_PAIRS, N_PAIRS) 
393:       OPEN (UNIT=22, FILE=TRIM(FILE_PAIRS), STATUS='OLD', IOSTAT=ERR) 
394:       IF (ERR /= 0) THEN 
395:       WRITE (6, '(/,2A,/)') 'ERROR: Could not open ', TRIM(file_pairs) 
396:       STOP 
397:       END IF 
398:       IF (VALUE.GT.0) THEN 
399:         DO I=1, N_PAIRS 
400:           READ (22, *) VALUES(VALUE, I, 1), VALUES(VALUE, I, 2) 
401:         END DO 
402:         CLOSE (22) 
403:         WRITE (6, '(A,I2,A,I6, 3A)')'Colour ',value, ': ', n_pairs, ' pairs of minima read in from ', TRIM(file_pairs), '.' 
404:       ELSE 
405:         DO I=1, N_PAIRS 
406:           READ (22, *) VALUES(I, 1, 1), VALUES(I, 1, 2) 
407:         END DO 
408:         CLOSE (22) 
409:         WRITE (6, '(A,I6,A,I6, 3A)')'Colours ',n_pairs, ': ', n_pairs, ' pairs of minima read in from ', TRIM(file_pairs), '.' 
410:       ENDIF  
411:    END SUBROUTINE READ_PAIRFILE 
412: ! }}} 
413: !! 
414: ! GET_DP(DP VALUE, SUCCESS) 360: ! GET_DP(DP VALUE, SUCCESS) 
415:    SUBROUTINE GET_DP(VALUE, SUCCESS)361:    SUBROUTINE GET_DP(VALUE, SUCCESS)
416:       IMPLICIT NONE362:       IMPLICIT NONE
417:       DOUBLE PRECISION, INTENT(INOUT) :: VALUE363:       DOUBLE PRECISION, INTENT(INOUT) :: VALUE
418:       LOGICAL, INTENT(INOUT), OPTIONAL :: SUCCESS364:       LOGICAL, INTENT(INOUT), OPTIONAL :: SUCCESS
419:       DOUBLE PRECISION :: TEMP365:       DOUBLE PRECISION :: TEMP
420:       INTEGER :: OUTCOME, ERR366:       INTEGER :: OUTCOME, ERR
421:       CHARACTER(LEN=TOT_LENGTH) :: ITEM367:       CHARACTER(LEN=TOT_LENGTH) :: ITEM
422:       CALL NEXT_ITEM(ITEM, OUTCOME)368:       CALL NEXT_ITEM(ITEM, OUTCOME)
423:       READ (UNIT=ITEM, FMT=*, IOSTAT=ERR) TEMP369:       READ (UNIT=ITEM, FMT=*, IOSTAT=ERR) TEMP
539:    DOUBLE PRECISION, DIMENSION(:,:), ALLOCATABLE :: node_lowest_energy485:    DOUBLE PRECISION, DIMENSION(:,:), ALLOCATABLE :: node_lowest_energy
540: 486: 
541:    INTEGER :: N_LEVELS, N_MIN, LOWEST, MAX_MIN, MAX_MIN2487:    INTEGER :: N_LEVELS, N_MIN, LOWEST, MAX_MIN, MAX_MIN2
542:    INTEGER :: NCONNMIN=0488:    INTEGER :: NCONNMIN=0
543:    INTEGER :: NMINID=0489:    INTEGER :: NMINID=0
544:    INTEGER :: NMINTR=0490:    INTEGER :: NMINTR=0
545:    INTEGER :: CONNECTMIN=0491:    INTEGER :: CONNECTMIN=0
546:    INTEGER :: MINRANGE=10000492:    INTEGER :: MINRANGE=10000
547:    INTEGER, ALLOCATABLE :: MINIDS(:)493:    INTEGER, ALLOCATABLE :: MINIDS(:)
548:    INTEGER, ALLOCATABLE :: MINTRS(:)494:    INTEGER, ALLOCATABLE :: MINTRS(:)
549:    INTEGER, ALLOCATABLE :: MINPAIRS(:,:,:) 
550:    DOUBLE PRECISION, ALLOCATABLE :: DPMINTRS(:)495:    DOUBLE PRECISION, ALLOCATABLE :: DPMINTRS(:)
551:    DOUBLE PRECISION :: DELTA_E, E_HIGH496:    DOUBLE PRECISION :: DELTA_E, E_HIGH
552:    DOUBLE PRECISION :: TSTHRESH=1.0D100497:    DOUBLE PRECISION :: TSTHRESH=1.0D100
553:    DOUBLE PRECISION :: TSBARTHRESH=1.0D100498:    DOUBLE PRECISION :: TSBARTHRESH=1.0D100
554:    DOUBLE PRECISION :: CSCALE=1.0D0 499:    DOUBLE PRECISION :: CSCALE=1.0D0 
555:    DOUBLE PRECISION :: CSHIFT=0.0D0 500:    DOUBLE PRECISION :: CSHIFT=0.0D0 
556:    DOUBLE PRECISION :: DJWSCALE=1.0D0 501:    DOUBLE PRECISION :: DJWSCALE=1.0D0 
557:    DOUBLE PRECISION :: TRMIN=0.0D0502:    DOUBLE PRECISION :: TRMIN=0.0D0
558:    DOUBLE PRECISION :: TRMAX=1.0D0503:    DOUBLE PRECISION :: TRMAX=1.0D0
559:    DOUBLE PRECISION :: BENERGY=1.0D100 504:    DOUBLE PRECISION :: BENERGY=1.0D100 
560:    DOUBLE PRECISION :: TRSCALEX=90.0505:    DOUBLE PRECISION :: TRSCALEX=90.0
561:    DOUBLE PRECISION :: TRSCALEY=50.0506:    DOUBLE PRECISION :: TRSCALEY=50.0
562:    CHARACTER(LEN=120) :: FILE_MIN, FILE_PICK, FILE_TS, FILE_WEIGHTS, &    507:    CHARACTER(LEN=120) :: FILE_MIN, FILE_PICK, FILE_TS, FILE_WEIGHTS, &    
563:       FILE_TRACE, FILE_IDMIN, FILE_PAIRS508:       FILE_TRACE, FILE_IDMIN
564:    CHARACTER(LEN=10) :: LAB_FMT509:    CHARACTER(LEN=10) :: LAB_FMT
565:    LOGICAL :: BARRIERS, CENTRE_GMIN, DUMP_NUMBERS, DUMP_SIZES, EXCLUDEALL, &510:    LOGICAL :: BARRIERS, CENTRE_GMIN, DUMP_NUMBERS, DUMP_SIZES, EXCLUDEALL, &
566:       IDENTIFY, MONOTONIC, SPLIT, WEIGHTS,ZEROGM511:       IDENTIFY, MONOTONIC, SPLIT, WEIGHTS,ZEROGM
567:    LOGICAL :: ORDER_BY_SIZE512:    LOGICAL :: ORDER_BY_SIZE
568:    LOGICAL :: ORDER_BY_ENERGY513:    LOGICAL :: ORDER_BY_ENERGY
569:    LOGICAL :: IDENTIFY_NODE=.FALSE.514:    LOGICAL :: IDENTIFY_NODE=.FALSE.
570:    LOGICAL :: IDENTIFY_NODE_SIZE=.FALSE.515:    LOGICAL :: IDENTIFY_NODE_SIZE=.FALSE.
571:    LOGICAL :: IDMINT=.FALSE.516:    LOGICAL :: IDMINT=.FALSE.
572:    LOGICAL :: TRMINT=.FALSE.517:    LOGICAL :: TRMINT=.FALSE.
573:    LOGICAL :: TRPRINT=.FALSE.518:    LOGICAL :: TRPRINT=.FALSE.
574:    LOGICAL :: TRVALRANGET=.FALSE.519:    LOGICAL :: TRVALRANGET=.FALSE.
575:    LOGICAL :: TRVALT=.FALSE.520:    LOGICAL :: TRVALT=.FALSE.
576:    LOGICAL :: PAIRST=.FALSE. 
577:    LOGICAL :: PAIRSF=.TRUE. 
578:    LOGICAL :: PAIRSSWITCH=.FALSE. 
579:    LOGICAL :: BASINT=.FALSE.521:    LOGICAL :: BASINT=.FALSE.
580:    LOGICAL :: WEIGHTLOWER=.FALSE.522:    LOGICAL :: WEIGHTLOWER=.FALSE.
581:    LOGICAL :: TRVALSCALET=.FALSE.523:    LOGICAL :: TRVALSCALET=.FALSE.
582:    LOGICAL :: MATCHMIN=.FALSE.524:    LOGICAL :: MATCHMIN=.FALSE.
583:    LOGICAL :: COLOURFRONTT=.FALSE.525:    LOGICAL :: COLOURFRONTT=.FALSE.
584:    LOGICAL :: CHOOSECOLOURST=.FALSE.526:    LOGICAL :: CHOOSECOLOURST=.FALSE.
585:    INTEGER, ALLOCATABLE :: NCONN(:)527:    INTEGER, ALLOCATABLE :: NCONN(:)
586:    INTEGER, ALLOCATABLE :: JOINED(:,:) 
587: 528: 
588: END MODULE VARS529: END MODULE VARS
589: !................................................................................!530: !................................................................................!
590: !MODULE PAGE531: !MODULE PAGE
591: MODULE PAGE532: MODULE PAGE
592: 533: 
593:    IMPLICIT NONE534:    IMPLICIT NONE
594:    INTEGER :: PAGE_X=595,  PAGE_Y=842535:    INTEGER :: PAGE_X=595,  PAGE_Y=842
595:    INTEGER :: MARGIN_X=40, MARGIN_Y=50536:    INTEGER :: MARGIN_X=40, MARGIN_Y=50
596:    INTEGER :: SCALE_WIDTH=40537:    INTEGER :: SCALE_WIDTH=40
616:    CHARACTER(LEN=8) :: MIN_TRIM, BRANCH_TRIM, BRANCH_TRIM2557:    CHARACTER(LEN=8) :: MIN_TRIM, BRANCH_TRIM, BRANCH_TRIM2
617:    DOUBLE PRECISION :: B_HIGH, B_LOW, ENERGY, FRAC, LPAFS, &558:    DOUBLE PRECISION :: B_HIGH, B_LOW, ENERGY, FRAC, LPAFS, &
618:       & X1, X2, X3, X_POS, Y1, Y2, Y3, Y_POS, PADDING, E_GMIN, SPLIT_OPTION559:       & X1, X2, X3, X_POS, Y1, Y2, Y3, Y_POS, PADDING, E_GMIN, SPLIT_OPTION
619:    TYPE(TRANSITION_STATE), DIMENSION(:), ALLOCATABLE :: TS560:    TYPE(TRANSITION_STATE), DIMENSION(:), ALLOCATABLE :: TS
620:    INTEGER :: I, J, K, P, Q, S, R, F, C, MM, NCONNMAX, J1, NDEAD, NCYCLE, NUNCONA, NLEFTMIN, NLEFTTS561:    INTEGER :: I, J, K, P, Q, S, R, F, C, MM, NCONNMAX, J1, NDEAD, NCYCLE, NUNCONA, NLEFTMIN, NLEFTTS
621:    INTEGER :: BASIN_NO, ERR, H_PG, MIN1, MIN2, MIN_TEMP, N_BR, N_COLS, &562:    INTEGER :: BASIN_NO, ERR, H_PG, MIN1, MIN2, MIN_TEMP, N_BR, N_COLS, &
622:       & N_NODES, N_TS, PATH, USED, BIG_ONES, BASIN_GMIN, GMIN563:       & N_NODES, N_TS, PATH, USED, BIG_ONES, BASIN_GMIN, GMIN
623:    INTEGER, DIMENSION(:), ALLOCATABLE :: CONNECT, END_M, INDX1, SORTED564:    INTEGER, DIMENSION(:), ALLOCATABLE :: CONNECT, END_M, INDX1, SORTED
624:    DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: FSORTED565:    DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: FSORTED
625:    LOGICAL :: AGAIN, CHANGED566:    LOGICAL :: AGAIN, CHANGED
626:    INTEGER, ALLOCATABLE :: PLUS(:), MINUS(:), NDISTA(:), MAP(:)567:    INTEGER, ALLOCATABLE :: PLUS(:), MINUS(:), NDISTA(:)
627:    LOGICAL, ALLOCATABLE :: DEADTS(:)568:    LOGICAL, ALLOCATABLE :: DEADTS(:)
628:    INTEGER NDUMMY, NN, NCHAIN, RMAX 569:    INTEGER NDUMMY, NN 
629:    DOUBLE PRECISION VMIN, VMAX, DUMMY,R2570:    DOUBLE PRECISION VMIN, VMAX, DUMMY,R2
630:    DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: END_E, TSEN571:    DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: END_E, TSEN
631:    DOUBLE PRECISION, DIMENSION(:,:,:), ALLOCATABLE :: BRANCH_XY572:    DOUBLE PRECISION, DIMENSION(:,:,:), ALLOCATABLE :: BRANCH_XY
632:    INTEGER, ALLOCATABLE :: SAVEID(:)573:    INTEGER, ALLOCATABLE :: SAVEID(:)
633: 574: 
634:    INTEGER, ALLOCATABLE :: DJWBASIN(:), NMINGROUP(:), GROUPMAP(:)575:    INTEGER, ALLOCATABLE :: DJWBASIN(:), NMINGROUP(:), GROUPMAP(:)
635:    DOUBLE PRECISION ETHRESH576:    DOUBLE PRECISION ETHRESH
636:    INTEGER NBASIN, NCOUNT, J2, LUNIT, GETUNIT, K1, K2, K3, K4, I2577:    INTEGER NBASIN, NCOUNT, J2, LUNIT, GETUNIT
637:    WRITE (6, '(/, A)') 'Disconnectivity Graphs'578:    WRITE (6, '(/, A)') 'Disconnectivity Graphs'
638:    WRITE (6, '(A, /)') '----------------------'579:    WRITE (6, '(A, /)') '----------------------'
639: 580: 
640:    CALL READ_OPTIONS581:    CALL READ_OPTIONS
641: !582: !
642: ! Rescale order parameter values between 0 and 1 using the values of TRMAX and TRMIN.583: ! Rescale order parameter values between 0 and 1 using the values of TRMAX and TRMIN.
643: !584: !
644:    IF (TRVALRANGET) THEN585:    IF (TRVALRANGET) THEN
645:       PRINT '(A,2G20.10)','Scaling order parameter values between 0 and 1 for range ',TRMIN,TRMAX586:       PRINT '(A,2G20.10)','Scaling order parameter values between 0 and 1 for range ',TRMIN,TRMAX
646:       DJWSCALE=1.0D0/(TRMAX-TRMIN)587:       DJWSCALE=1.0D0/(TRMAX-TRMIN)
669:       DO J1=1,NCOUNT610:       DO J1=1,NCOUNT
670:         READ(20,*) MINIDS(NMINID+J1)611:         READ(20,*) MINIDS(NMINID+J1)
671:       ENDDO612:       ENDDO
672:       CLOSE(20)613:       CLOSE(20)
673:       NMINID=NMINID+NCOUNT614:       NMINID=NMINID+NCOUNT
674:    ENDIF615:    ENDIF
675: 616: 
676: !  Procure minima info.617: !  Procure minima info.
677:    CALL COUNT_MIN(FILE_MIN, N_MIN)618:    CALL COUNT_MIN(FILE_MIN, N_MIN)
678:    ALLOCATE (M(N_MIN), END_X(N_MIN), END_Y(N_MIN))619:    ALLOCATE (M(N_MIN), END_X(N_MIN), END_Y(N_MIN))
679:    ALLOCATE (END_E(0:N_MIN), END_M(0:N_MIN), MAP(10*N_MIN))620:    ALLOCATE (END_E(0:N_MIN), END_M(0:N_MIN))
680:    ALLOCATE (DJWBASIN(N_MIN),NMINGROUP(N_MIN),GROUPMAP(0:N_MIN))621:    ALLOCATE (DJWBASIN(N_MIN),NMINGROUP(N_MIN),GROUPMAP(0:N_MIN))
681:    OPEN (UNIT=20, FILE=TRIM(FILE_MIN), STATUS='OLD', IOSTAT=err)622:    OPEN (UNIT=20, FILE=TRIM(FILE_MIN), STATUS='OLD', IOSTAT=err)
682:    IF (ERR /= 0) THEN623:    IF (ERR /= 0) THEN
683:       WRITE (6, '(/,2A,/)') 'ERROR: Could not open ', TRIM(file_min)624:       WRITE (6, '(/,2A,/)') 'ERROR: Could not open ', TRIM(file_min)
684:       STOP625:       STOP
685:    END IF626:    END IF
686:    E_GMIN = HUGE(E_GMIN)627:    E_GMIN = HUGE(E_GMIN)
687:    DO I=1, N_MIN628:    DO I=1, N_MIN
688: !     READ (20, *) j, m(i)629: !     READ (20, *) j, m(i)
689: !  Standard PATHSAMPLE.2.0 format630: !  Standard PATHSAMPLE.2.0 format
1374:                  ELSE1315:                  ELSE
1375:                   IF (DPMINTRS(P)==-1.0D0.or.DPMINTRS(P)< DPMARKNODE(I,K)) DPMARKNODE(I,K)=DPMINTRS(P)1316:                   IF (DPMINTRS(P)==-1.0D0.or.DPMINTRS(P)< DPMARKNODE(I,K)) DPMARKNODE(I,K)=DPMINTRS(P)
1376:                  ENDIF  1317:                  ENDIF  
1377: ! DPMINTRS(P)=-1.0D0=initial value. If any minimum is not listed at all the node is not coloured1318: ! DPMINTRS(P)=-1.0D0=initial value. If any minimum is not listed at all the node is not coloured
1378:             END DO 1319:             END DO 
1379: !         END DO1320: !         END DO
1380:        END DO   1321:        END DO   
1381:        WRITE (6, '(A, /)') 'Done.'1322:        WRITE (6, '(A, /)') 'Done.'
1382:    END IF1323:    END IF
1383: 1324: 
1384: ! Show the paths between pairs of minima 
1385:     IF (PAIRST) THEN 
1386:       DO R=1,NMINTR 
1387:         MAP(R)=R 
1388:       ENDDO 
1389:       WRITE (6, '(A)') 'Writing section assignments of nodes for pair colour to "node_sections".' 
1390:       OPEN (UNIT=20, FILE='node_sections', STATUS='REPLACE') 
1391: !     Marknode records the list to which the node belongs if any. 
1392:       ALLOCATE (MARKNODE(N_LEVELS, MAXVAL(NODES))) 
1393:       ALLOCATE (JOINED(NMINTR, MINRANGE)) 
1394:       MARKNODE=0 
1395:       JOINED=0  
1396:       DO I = 1, N_LEVELS 
1397:         I2=N_LEVELS+1-I 
1398:         WRITE (20, '(/, A, I3, /, A)') 'LEVEL ', I2, '=========' 
1399:         PRINT*, 'LEVEL ', I2, '=========' 
1400:         DO R=1,NMINTR 
1401:           DO Q=1, MINRANGE 
1402:               IF (JOINED(R,Q).GT.0) CYCLE 
1403:               K2=BASIN(I2,MINPAIRS(R,Q,2)) 
1404:               K1=BASIN(I2,MINPAIRS(R,Q,1)) 
1405:               IF (K2.NE.0) THEN 
1406: ! R may already map to another integer. 
1407: ! Check this first and find the maximum integer for mapping 
1408:               RMAX=R  
1409:               DO 
1410:                 PRINT*, 'Rmax, map(Rmax)= ', RMAX, MAP(RMAX)  
1411:                 IF (MAP(RMAX).EQ.RMAX) THEN 
1412:                  EXIT 
1413:                 ENDIF 
1414:                 RMAX=MAP(RMAX)  
1415:               ENDDO    
1416:               IF (K1.EQ.K2) THEN 
1417:      WRITE (20, '(A, I6, A, I6, A, I6, A, I6)')'Nodes ', MINPAIRS(R,Q,2), ' and ' , MINPAIRS(R,Q,1), ' BASIN ', K2, ' joins Colour ', r 
1418: ! Also need to stop colouring this pair. 
1419:                 JOINED(R,Q)=R 
1420:                 CYCLE 
1421:               ENDIF 
1422:               IF ((MARKNODE(I2,K2).NE.0).AND.(MARKNODE(I2,K2).NE.R)) THEN 
1423:                NCHAIN=MARKNODE(I2,K2) 
1424:                IF (MARKNODE(I2,K2).GT.R) PRINT*, 'Error- marknode' 
1425: ! Now check mapping for previous value of marknode 
1426:                DO 
1427:                 PRINT*, 'nchain, map(nchain)= ', NCHAIN, MAP(NCHAIN)  
1428:                 IF (MAP(NCHAIN).EQ.NCHAIN) THEN 
1429:                  EXIT 
1430:                 ENDIF  
1431:                 NCHAIN=MAP(NCHAIN)  
1432:                ENDDO    
1433:                PRINT*, 'K2 Basin:',  K2, ' R= ',R, ' Nchain= ', NCHAIN, 'RMAX= ', RMAX  
1434:                IF(NCHAIN.GT.RMAX) THEN 
1435:                 MAP(RMAX)=NCHAIN 
1436:                 RMAX=NCHAIN  
1437:                ELSE    
1438:                 MAP(NCHAIN)=RMAX 
1439:                ENDIF 
1440:                MARKNODE(I2,K2)=R 
1441:               ELSE  
1442:                MARKNODE(I2,K2)=R 
1443:               ENDIF  
1444:               WRITE (20, '(A, I6, A, I6, A, I6)')'Node ', MINPAIRS(R,Q,2), ' BASIN ', K2, ' --> Colour ', r 
1445:               ENDIF  
1446:               IF (K1.NE.0) THEN 
1447: ! R may already map to another integer. 
1448: ! Check this first and find the maximum integer for mapping 
1449:               RMAX=R  
1450:               DO 
1451:                 PRINT*, 'Rmax, map(Rmax)= ', RMAX, MAP(RMAX)  
1452:                 IF (MAP(RMAX).EQ.RMAX) THEN 
1453:                  EXIT 
1454:                 ENDIF 
1455:                 RMAX=MAP(RMAX)  
1456:               ENDDO    
1457:               IF ((MARKNODE(I2,K1).NE.0).AND.(MARKNODE(I2,K1).NE.R)) THEN  
1458:                NCHAIN=MARKNODE(I2,K1) 
1459:                IF (MARKNODE(I2,K1).GT.R) PRINT*, 'Error- marknode' 
1460: ! Now check mapping for previous value of marknode 
1461:                DO 
1462:                PRINT*, 'nchain, map(nchain)= ', NCHAIN, MAP(NCHAIN)  
1463:                 IF (MAP(NCHAIN).EQ.NCHAIN) THEN 
1464:                  EXIT 
1465:                 ENDIF  
1466:                 NCHAIN=MAP(NCHAIN)  
1467:                ENDDO    
1468:                  PRINT*, 'K1 Basin:',  K1, ' R= ',R, ' Nchain= ', NCHAIN, 'RMAX= ', RMAX  
1469:                IF(NCHAIN.GT.RMAX) THEN 
1470:                 MAP(RMAX)=NCHAIN 
1471:                ELSE    
1472:                 MAP(NCHAIN)=RMAX 
1473:                ENDIF 
1474:                 MARKNODE(I2,K1)=R 
1475:               ELSE  
1476:                 MARKNODE(I2,K1)=R 
1477:               ENDIF  
1478:               WRITE (20, '(A, I6, A, I6, A, I6)')'Node ', MINPAIRS(R,Q,1), ' BASIN ', K1, ' --> Colour ', r  
1479:               ENDIF 
1480:           ENDDO 
1481:        ENDDO 
1482:        DO R=1,NMINTR 
1483:          NCHAIN=R 
1484:          DO   
1485:            IF (MAP(NCHAIN).EQ.NCHAIN) THEN 
1486:              MAP(R)=NCHAIN 
1487:              EXIT 
1488:            ENDIF  
1489:            NCHAIN=MAP(NCHAIN)  
1490:          ENDDO          
1491:        ENDDO 
1492:      ENDDO 
1493:      CLOSE(20) 
1494:      ENDIF 
1495:        DO R=1,NMINTR 
1496:            IF (MAP(R).EQ.R) THEN 
1497:            PRINT*, 'Metabasin: ', R, ' , Colour: ', MOD(R,15), 'List of pairs: ' 
1498:            DO Q=1,R 
1499:              IF (MAP(Q).EQ.R) PRINT*, Q 
1500:            ENDDO 
1501:            ENDIF  
1502:        ENDDO 
1503:  
1504: ! VKD Print basin information.1325: ! VKD Print basin information.
1505: ! For each node at a particular energy level, find all minima for which the node is a parent.1326: ! For each node at a particular energy level, find all minima for which the node is a parent.
1506: 1327: 
1507:    IF (BASINT) THEN1328:    IF (BASINT) THEN
1508:        OPEN(UNIT=32, FILE='basins', STATUS='REPLACE')1329:        OPEN(UNIT=32, FILE='basins', STATUS='REPLACE')
1509:        WRITE (6, '(A)') 'Finding section assignments of nodes for printing.'1330:        WRITE (6, '(A)') 'Finding section assignments of nodes for printing.'
1510:        DO I = 1, N_LEVELS1331:        DO I = 1, N_LEVELS
1511:              IF ((E_HIGH-(I-1)*DELTA_E).LT.BENERGY) THEN1332:              IF ((E_HIGH-(I-1)*DELTA_E).LT.BENERGY) THEN
1512:              DO P = 1, N_MIN1333:              DO P = 1, N_MIN
1513:                IF (NCONN(P).LE.NCONNMIN) CYCLE1334:                IF (NCONN(P).LE.NCONNMIN) CYCLE
1517:                  WRITE(32,*) P, K 1338:                  WRITE(32,*) P, K 
1518:              END DO1339:              END DO
1519:              EXIT1340:              EXIT
1520:              ENDIF1341:              ENDIF
1521:        END DO1342:        END DO
1522:        WRITE (6, '(A, /)') 'Done.'1343:        WRITE (6, '(A, /)') 'Done.'
1523:        CLOSE(32)1344:        CLOSE(32)
1524:    END IF1345:    END IF
1525: 1346: 
1526: 1347: 
 1348: 
 1349: 
1527: !  Find the parent of each basin.1350: !  Find the parent of each basin.
1528: 1351: 
1529:    WRITE (6, '(A)') 'Finding the parent of each basin.'1352:    WRITE (6, '(A)') 'Finding the parent of each basin.'
1530:    ALLOCATE (PARENT(N_LEVELS, MAXVAL(NODES)))1353:    ALLOCATE (PARENT(N_LEVELS, MAXVAL(NODES)))
1531:    DO I = 2, N_LEVELS1354:    DO I = 2, N_LEVELS
1532:       DO J = 1, N_MIN1355:       DO J = 1, N_MIN
1533:          IF (NCONN(J).LE.NCONNMIN) CYCLE1356:          IF (NCONN(J).LE.NCONNMIN) CYCLE
1534:          IF (BASIN(I, J) > 0) THEN1357:          IF (BASIN(I, J) > 0) THEN
1535:             PARENT(I, BASIN(I, J)) = BASIN(I-1, J)1358:             PARENT(I, BASIN(I, J)) = BASIN(I-1, J)
1536:          END IF1359:          END IF
1695: !                  IF (R2.LE.5.AND.R2.GT.3)  WRITE (20, '(F6.4,A)') (5-R2)/2,' 1 0  setrgbcolor'1518: !                  IF (R2.LE.5.AND.R2.GT.3)  WRITE (20, '(F6.4,A)') (5-R2)/2,' 1 0  setrgbcolor'
1696: !                  IF (R2.LE.7.AND.R2.GT.5)  WRITE (20, '(A,F6.4,A)') '0 1 ',(R2-5)/2  ,'  setrgbcolor'1519: !                  IF (R2.LE.7.AND.R2.GT.5)  WRITE (20, '(A,F6.4,A)') '0 1 ',(R2-5)/2  ,'  setrgbcolor'
1697: !                  IF (R2.LE.9.AND.R2.GT.7)  WRITE (20, '(A,F6.4,A)') '0 ',(9-R2)/2 ,' 1  setrgbcolor'1520: !                  IF (R2.LE.9.AND.R2.GT.7)  WRITE (20, '(A,F6.4,A)') '0 ',(9-R2)/2 ,' 1  setrgbcolor'
1698: !                  IF (R2.LE.10.AND.R2.GT.9)  WRITE (20, '(F6.4,A)') (R2-9)/2 ,' 0 1  setrgbcolor'1521: !                  IF (R2.LE.10.AND.R2.GT.9)  WRITE (20, '(F6.4,A)') (R2-9)/2 ,' 0 1  setrgbcolor'
1699:                   WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x3, y3, ' ls'1522:                   WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x3, y3, ' ls'
1700:                   WRITE (20, '(A)') '0 0 0 setrgbcolor'1523:                   WRITE (20, '(A)') '0 0 0 setrgbcolor'
1701:                ELSE1524:                ELSE
1702:                   WRITE(6,*) 'WARNING: value of DPMARKNODE is ',DPMARKNODE(I,K),' for ',i,k1525:                   WRITE(6,*) 'WARNING: value of DPMARKNODE is ',DPMARKNODE(I,K),' for ',i,k
1703:                   WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x3, y3, ' ls'1526:                   WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x3, y3, ' ls'
1704:                ENDIF1527:                ENDIF
1705:             ELSE IF (PAIRST) THEN ! otherwise MARKNODE is not allocated 
1706:                IF (MARKNODE(I,K).GT.0) THEN 
1707:                MARKNODE(I,K)=MAP(MARKNODE(I,K)) 
1708:                MARKNODE(I,K)=MOD(MARKNODE(I,K),30)+1 
1709:                IF (MARKNODE(I,K).GT.30.OR.MARKNODE(I,K).LT.0) PRINT*, MARKNODE(I,K), 'Error in colour assignment' 
1710: ! COLOURMARKERP - This is where the colours are specified for minima. 
1711: ! To choose your own colours, comment the following section and use the  
1712: ! IF (MARKNODE(I,K) ==#) statements below, where # is the section number. 
1713: ! Colours should be the same for the nodes below. 
1714:                   IF (MARKNODE(I,K) ==1)  WRITE (20, '(A)') '1 0 0 setrgbcolor' 
1715:                   IF (MARKNODE(I,K) ==2)  WRITE (20, '(A)') '0 1 0 setrgbcolor' 
1716:                   IF (MARKNODE(I,K) ==3)  WRITE (20, '(A)') '0 0 1 setrgbcolor' 
1717:                   IF (MARKNODE(I,K) ==4)  WRITE (20, '(A)') '1 1 0 setrgbcolor' 
1718:                   IF (MARKNODE(I,K) ==5)  WRITE (20, '(A)') '0 1 1 setrgbcolor' 
1719:                   IF (MARKNODE(I,K) ==6)  WRITE (20, '(A)') '1 0 1 setrgbcolor' 
1720:                   IF (MARKNODE(I,K) ==7)  WRITE (20, '(A)') '1 0.5 0  setrgbcolor' 
1721:                   IF (MARKNODE(I,K) ==8)  WRITE (20, '(A)') '0 1 0.5  setrgbcolor' 
1722:                   IF (MARKNODE(I,K) ==9)  WRITE (20, '(A)') '0.5 0 1  setrgbcolor' 
1723:                   IF (MARKNODE(I,K) ==10)  WRITE (20, '(A)') '0.5 1 0  setrgbcolor' 
1724:                   IF (MARKNODE(I,K) ==11)  WRITE (20, '(A)') '1 0 0.5  setrgbcolor' 
1725:                   IF (MARKNODE(I,K) ==12)  WRITE (20, '(A)') '0 0.5 1  setrgbcolor' 
1726:                   IF (MARKNODE(I,K) ==13)  WRITE (20, '(A)') '0.5 0.5 0  setrgbcolor' 
1727:                   IF (MARKNODE(I,K) ==14)  WRITE (20, '(A)') '0 0.5 0.5  setrgbcolor' 
1728:                   IF (MARKNODE(I,K) ==15)  WRITE (20, '(A)') '0.5 0 0.5  setrgbcolor' 
1729:                   IF (MARKNODE(I,K) ==16)  WRITE (20, '(A)') '0.8 0 0  setrgbcolor' 
1730:                   IF (MARKNODE(I,K) ==17)  WRITE (20, '(A)') '0 0.8 0 setrgbcolor' 
1731:                   IF (MARKNODE(I,K) ==18)  WRITE (20, '(A)') '0 0 0.8 setrgbcolor' 
1732:                   IF (MARKNODE(I,K) ==19)  WRITE (20, '(A)') '0.8 0.8 0 setrgbcolor' 
1733:                   IF (MARKNODE(I,K) ==20)  WRITE (20, '(A)') '0 0.8 0.8 setrgbcolor' 
1734:                   IF (MARKNODE(I,K) ==21)  WRITE (20, '(A)') '0.8 0 0.8 setrgbcolor' 
1735:                   IF (MARKNODE(I,K) ==22)  WRITE (20, '(A)') '1 0.8 0  setrgbcolor' 
1736:                   IF (MARKNODE(I,K) ==23)  WRITE (20, '(A)') '0 1 0.8  setrgbcolor' 
1737:                   IF (MARKNODE(I,K) ==24)  WRITE (20, '(A)') '0.8 0 1  setrgbcolor' 
1738:                   IF (MARKNODE(I,K) ==25)  WRITE (20, '(A)') '0.8 1 0  setrgbcolor' 
1739:                   IF (MARKNODE(I,K) ==26)  WRITE (20, '(A)') '1 0 0.8  setrgbcolor' 
1740:                   IF (MARKNODE(I,K) ==27)  WRITE (20, '(A)') '0 0.8 1  setrgbcolor' 
1741:                   IF (MARKNODE(I,K) ==28)  WRITE (20, '(A)') '0.5 0 0  setrgbcolor' 
1742:                   IF (MARKNODE(I,K) ==29)  WRITE (20, '(A)') '0 0.5 0  setrgbcolor' 
1743:                   IF (MARKNODE(I,K) ==30)  WRITE (20, '(A)') '0 0 0.5  setrgbcolor' 
1744:                  WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x3, y3, ' ls' 
1745:                  WRITE (20, '(A)') '0 0 0 setrgbcolor' 
1746:                ELSE 
1747:                   IF(PAIRSF) WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x3, y3, ' ls' 
1748:                ENDIF 
1749:             ELSE1528:             ELSE
1750:                WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x3, y3, ' ls'1529:                WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x3, y3, ' ls'
1751:             ENDIF1530:             ENDIF
1752:          ELSE1531:          ELSE
1753: 1532: 
1754:             IF (TRMINT) THEN1533:             IF (TRMINT) THEN
1755:                IF (MARKNODE(I,K).GT.0) THEN1534:                IF (MARKNODE(I,K).GT.0) THEN
1756: 1535: 
1757: ! COLOURMARKER - This is one of the places where the colours are specified for nodes.1536: ! COLOURMARKER - This is one of the places where the colours are specified for nodes.
1758: ! To choose your own colours, use the 1537: ! To choose your own colours, use the 
1816: !                  IF (R2.LE.5.AND.R2.GT.3)  WRITE (20, '(F6.4,A)') (5-R2)/2,' 1 0  setrgbcolor'1595: !                  IF (R2.LE.5.AND.R2.GT.3)  WRITE (20, '(F6.4,A)') (5-R2)/2,' 1 0  setrgbcolor'
1817: !                  IF (R2.LE.7.AND.R2.GT.5)  WRITE (20, '(A,F6.4,A)') '0 1 ',(R2-5)/2  ,'  setrgbcolor'1596: !                  IF (R2.LE.7.AND.R2.GT.5)  WRITE (20, '(A,F6.4,A)') '0 1 ',(R2-5)/2  ,'  setrgbcolor'
1818: !                  IF (R2.LE.9.AND.R2.GT.7)  WRITE (20, '(A,F6.4,A)') '0 ',(9-R2)/2 ,' 1  setrgbcolor'1597: !                  IF (R2.LE.9.AND.R2.GT.7)  WRITE (20, '(A,F6.4,A)') '0 ',(9-R2)/2 ,' 1  setrgbcolor'
1819: !                  IF (R2.LE.10.AND.R2.GT.9)  WRITE (20, '(F6.4,A)') (R2-9)/2 ,' 0 1  setrgbcolor'1598: !                  IF (R2.LE.10.AND.R2.GT.9)  WRITE (20, '(F6.4,A)') (R2-9)/2 ,' 0 1  setrgbcolor'
1820:                    WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x2, y2, ' ls'1599:                    WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x2, y2, ' ls'
1821:                    WRITE (20, '(A)') '0 0 0 setrgbcolor'1600:                    WRITE (20, '(A)') '0 0 0 setrgbcolor'
1822:                ELSE1601:                ELSE
1823:                   WRITE(6,*) 'WARNING: value of DPMARKNODE is ',DPMARKNODE(I,K),' for ',i,k1602:                   WRITE(6,*) 'WARNING: value of DPMARKNODE is ',DPMARKNODE(I,K),' for ',i,k
1824:                   WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x2, y2, ' ls'1603:                   WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x2, y2, ' ls'
1825:                ENDIF1604:                ENDIF
1826:             ELSE IF (PAIRST) THEN 
1827:                IF (MARKNODE(I,K).GT.0) THEN 
1828:                MARKNODE(I,K)=MAP(MARKNODE(I,K)) 
1829:                MARKNODE(I,K)=MOD(MARKNODE(I,K),30)+1 
1830:                IF (MARKNODE(I,K).GT.30.OR.MARKNODE(I,K).LT.0) PRINT*, 'Error in colour assignment' 
1831: ! COLOURMARKERP - This is where the colours are specified for nodes. 
1832: ! To choose your own colours, comment the following section and use the  
1833: ! IF (MARKNODE(I,K) ==#) statements below, where # is the section number. 
1834: ! Colours should be the same for the minima above. 
1835:                   IF (MARKNODE(I,K) ==1)  WRITE (20, '(A)') '1 0 0 setrgbcolor' 
1836:                   IF (MARKNODE(I,K) ==2)  WRITE (20, '(A)') '0 1 0 setrgbcolor' 
1837:                   IF (MARKNODE(I,K) ==3)  WRITE (20, '(A)') '0 0 1 setrgbcolor' 
1838:                   IF (MARKNODE(I,K) ==4)  WRITE (20, '(A)') '1 1 0 setrgbcolor' 
1839:                   IF (MARKNODE(I,K) ==5)  WRITE (20, '(A)') '0 1 1 setrgbcolor' 
1840:                   IF (MARKNODE(I,K) ==6)  WRITE (20, '(A)') '1 0 1 setrgbcolor' 
1841:                   IF (MARKNODE(I,K) ==7)  WRITE (20, '(A)') '1 0.5 0  setrgbcolor' 
1842:                   IF (MARKNODE(I,K) ==8)  WRITE (20, '(A)') '0 1 0.5  setrgbcolor' 
1843:                   IF (MARKNODE(I,K) ==9)  WRITE (20, '(A)') '0.5 0 1  setrgbcolor' 
1844:                   IF (MARKNODE(I,K) ==10)  WRITE (20, '(A)') '0.5 1 0  setrgbcolor' 
1845:                   IF (MARKNODE(I,K) ==11)  WRITE (20, '(A)') '1 0 0.5  setrgbcolor' 
1846:                   IF (MARKNODE(I,K) ==12)  WRITE (20, '(A)') '0 0.5 1  setrgbcolor' 
1847:                   IF (MARKNODE(I,K) ==13)  WRITE (20, '(A)') '0.5 0.5 0  setrgbcolor' 
1848:                   IF (MARKNODE(I,K) ==14)  WRITE (20, '(A)') '0 0.5 0.5  setrgbcolor' 
1849:                   IF (MARKNODE(I,K) ==15)  WRITE (20, '(A)') '0.5 0 0.5  setrgbcolor' 
1850:                   IF (MARKNODE(I,K) ==16)  WRITE (20, '(A)') '0.8 0 0  setrgbcolor' 
1851:                   IF (MARKNODE(I,K) ==17)  WRITE (20, '(A)') '0 0.8 0 setrgbcolor' 
1852:                   IF (MARKNODE(I,K) ==18)  WRITE (20, '(A)') '0 0 0.8 setrgbcolor' 
1853:                   IF (MARKNODE(I,K) ==19)  WRITE (20, '(A)') '0.8 0.8 0 setrgbcolor' 
1854:                   IF (MARKNODE(I,K) ==20)  WRITE (20, '(A)') '0 0.8 0.8 setrgbcolor' 
1855:                   IF (MARKNODE(I,K) ==21)  WRITE (20, '(A)') '0.8 0 0.8 setrgbcolor' 
1856:                   IF (MARKNODE(I,K) ==22)  WRITE (20, '(A)') '1 0.8 0  setrgbcolor' 
1857:                   IF (MARKNODE(I,K) ==23)  WRITE (20, '(A)') '0 1 0.8  setrgbcolor' 
1858:                   IF (MARKNODE(I,K) ==24)  WRITE (20, '(A)') '0.8 0 1  setrgbcolor' 
1859:                   IF (MARKNODE(I,K) ==25)  WRITE (20, '(A)') '0.8 1 0  setrgbcolor' 
1860:                   IF (MARKNODE(I,K) ==26)  WRITE (20, '(A)') '1 0 0.8  setrgbcolor' 
1861:                   IF (MARKNODE(I,K) ==27)  WRITE (20, '(A)') '0 0.8 1  setrgbcolor' 
1862:                   IF (MARKNODE(I,K) ==28)  WRITE (20, '(A)') '0.5 0 0  setrgbcolor' 
1863:                   IF (MARKNODE(I,K) ==29)  WRITE (20, '(A)') '0 0.5 0  setrgbcolor' 
1864:                   IF (MARKNODE(I,K) ==30)  WRITE (20, '(A)') '0 0 0.5  setrgbcolor' 
1865:                   WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x2, y2, ' ls' 
1866:                   WRITE (20, '(A)') '0 0 0 setrgbcolor' 
1867:                ELSE 
1868:                    IF (PAIRSF) WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x2, y2, ' ls' 
1869:                    IF(PAIRSSWITCH) THEN 
1870:                      DO K3=1,N_MIN 
1871:                      IF(BASIN(I,K3).EQ.K) THEN 
1872:                      DO K4=I+1, N_LEVELS 
1873:                       
1874:                      IF (MARKNODE(K4,BASIN(K4,K3)).GT.0)  MARKNODE(K4,BASIN(K4,K3))=I 
1875:                      ENDDO   
1876:                      ENDIF 
1877:                      ENDDO  
1878:                    ENDIF  
1879:                ENDIF 
1880:             ELSE1605:             ELSE
1881:                WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x2, y2, ' ls'1606:                WRITE (20, '(2F7.2, A, 2F7.2, A)') x1, y1, ' mt ', x2, y2, ' ls'
1882:             ENDIF1607:             ENDIF
1883:          ENDIF1608:          ENDIF
1884: 1234  ENDDO1609: 1234  ENDDO
1885:    ENDDO1610:    ENDDO
1886:    write(*,*) nn1611:    write(*,*) nn
1887: 1612: 
1888:    IF (COLOURFRONTT) THEN1613:    IF (COLOURFRONTT) THEN
1889:      WRITE (20, '(/, A/)') '% Coloured branches'1614:      WRITE (20, '(/, A/)') '% Coloured branches'
2253:    DUMP_NUMBERS = .FALSE.1978:    DUMP_NUMBERS = .FALSE.
2254:    DUMP_SIZES = .FALSE.1979:    DUMP_SIZES = .FALSE.
2255:    E_HIGH = 0.0D01980:    E_HIGH = 0.0D0
2256:    EXCLUDEALL = .FALSE.1981:    EXCLUDEALL = .FALSE.
2257:    LOWEST = 01982:    LOWEST = 0
2258:    LAB_FMT = 'F8.2'1983:    LAB_FMT = 'F8.2'
2259:    MONOTONIC = .FALSE.1984:    MONOTONIC = .FALSE.
2260:    N_LEVELS = 01985:    N_LEVELS = 0
2261:    FILE_PICK = ''1986:    FILE_PICK = ''
2262:    FILE_TRACE= ''  1987:    FILE_TRACE= ''  
2263:    FILE_PAIRS= ''   
2264:    FILE_IDMIN = ''1988:    FILE_IDMIN = ''
2265:    SPLIT = .TRUE.1989:    SPLIT = .TRUE.
2266:    ZEROGM = .FALSE.1990:    ZEROGM = .FALSE.
2267: 1991: 
2268:     1992:     
2269:    OPEN (UNIT=20, FILE='dinfo', STATUS='OLD', IOSTAT=err)1993:    OPEN (UNIT=20, FILE='dinfo', STATUS='OLD', IOSTAT=err)
2270:    IF (ERR /= 0) THEN1994:    IF (ERR /= 0) THEN
2271:       WRITE (6, '(/,A,/)') 'ERROR: Could not open dinfo file'1995:       WRITE (6, '(/,A,/)') 'ERROR: Could not open dinfo file'
2272:       STOP1996:       STOP
2273:    END IF1997:    END IF
2341:       CASE ('MINIMA')2065:       CASE ('MINIMA')
2342:          CALL GET_STRING(FILE_MIN)2066:          CALL GET_STRING(FILE_MIN)
2343:       CASE ('MONOTONIC')2067:       CASE ('MONOTONIC')
2344:          MONOTONIC = .TRUE.2068:          MONOTONIC = .TRUE.
2345:       CASE ('NCONNMIN')2069:       CASE ('NCONNMIN')
2346:          CALL GET_INTEGER(NCONNMIN)2070:          CALL GET_INTEGER(NCONNMIN)
2347:       CASE ('NOBARRIERS')2071:       CASE ('NOBARRIERS')
2348:          BARRIERS = .FALSE.2072:          BARRIERS = .FALSE.
2349:       CASE ('NOSPLIT')2073:       CASE ('NOSPLIT')
2350:          SPLIT = .FALSE.2074:          SPLIT = .FALSE.
2351:       CASE ('PAIRS')  
2352:          PAIRST = .TRUE. 
2353:          CALL GET_INTEGER(NDUMMY) 
2354:          CALL GET_INTEGER(MINRANGE) 
2355:          IF (NDUMMY.GT.0) THEN  
2356:            IF (NDUMMY.eq.1) THEN 
2357:              WRITE (6, '(I6, A)') ndummy, ' set of pairs of minima will be traced in colour' 
2358:            ELSE 
2359:              WRITE (6, '(I6, A)') ndummy, ' sets of pairs of minima will be traced in colour' 
2360:            ENDIF 
2361:            ALLOCATE(MINPAIRS(1:NDUMMY, 1:MINRANGE, 1:2)) 
2362:            MINPAIRS=0 
2363:            DO I4=1, NDUMMY  
2364:              CALL GET_STRING(FILE_PAIRS) 
2365:              CALL READ_PAIRFILE(FILE_PAIRS, I4, MINPAIRS)   
2366:            ENDDO 
2367:            NMINTR=NDUMMY  
2368:          ELSE 
2369:              WRITE (6, '(A, I6, A)') ' Up to, ',MINRANGE, ' sets of pairs of minima will be traced in colour' 
2370:              ALLOCATE(MINPAIRS(1:MINRANGE, 1, 1:2)) 
2371:              MINPAIRS=0 
2372:              CALL GET_STRING(FILE_PAIRS) 
2373:              CALL READ_PAIRFILE(FILE_PAIRS, NDUMMY, MINPAIRS)   
2374:            NMINTR=MINRANGE  
2375:            MINRANGE=1 
2376:          ENDIF  
2377:       CASE ('PAIRSONLY')  
2378:          PAIRSF = .FALSE. 
2379:       CASE ('PAIRSSWITCH')  
2380:          PAIRSSWITCH = .TRUE. 
2381:       CASE ('PICK')2075:       CASE ('PICK')
2382:          CALL GET_STRING(FILE_PICK)2076:          CALL GET_STRING(FILE_PICK)
2383:       CASE ('PS_PAGE_X')2077:       CASE ('PS_PAGE_X')
2384:          CALL GET_INTEGER(PAGE_X)2078:          CALL GET_INTEGER(PAGE_X)
2385:       CASE ('PS_PAGE_Y')2079:       CASE ('PS_PAGE_Y')
2386:          CALL GET_INTEGER(PAGE_Y)2080:          CALL GET_INTEGER(PAGE_Y)
2387:       CASE ('ORDER_BY_ENERGY')2081:       CASE ('ORDER_BY_ENERGY')
2388:          ORDER_BY_ENERGY = .TRUE.2082:          ORDER_BY_ENERGY = .TRUE.
2389:       CASE ('ORDER_BY_SIZE')2083:       CASE ('ORDER_BY_SIZE')
2390:          ORDER_BY_SIZE = .TRUE.2084:          ORDER_BY_SIZE = .TRUE.


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0