Instruction manual
42
C==========================================================
IMPLICIT NONE
REAL*8 HIGH, LOW, RANGE, DLHI, DLLO, DTICKS
REAL*8 RPOW, RSCALE, RMAG, TEMP, TINY/1E-20/
INTEGER NTICKS, HELPSCALE
! ... find the range and magnitude and rescale if necessary
RPOW = 0.0D0
RANGE = HIGH - LOW
IF(LOW .EQ.0.0D0) LOW = TINY
IF(HIGH.EQ.0.0D0) HIGH = 2.0d0*LOW
IF(RANGE.EQ. 0.0D0) THEN ! THE LINE IS VERTICAL
HIGH = HIGH + 0.5
LOW = LOW - 0.5
ENDIF
DLHI = DLOG10(ABS(HIGH))
DLLO = DLOG10(ABS(LOW))
DO WHILE(DLHI.LT.0.0D0 .AND. DLLO.LT.0.0D0)
DLHI = DLHI + 3.0D0
DLLO = DLLO + 3.0D0
RPOW = RPOW + 3.0D0
END DO
HIGH = HIGH*10**RPOW
LOW = LOW*10**RPOW
RSCALE = 10**-RPOW
RANGE = HIGH-LOW
RMAG = 10**INT(DLOG10(RANGE)) ! 10S, 100S, 1000S FOR EG.
! ... determine the lhs axis value
TEMP = LOW/RMAG ! CALCULATE LOW (FOR AXIS)
LOW = INT(TEMP)
IF(ABS(TEMP-LOW).GE.1.0E-12 .AND. TEMP.LT.0) THEN
LOW = LOW - 1
ENDIF
LOW = LOW*RMAG
! ... determine the rhs axis value
TEMP = HIGH/RMAG ! CALCULATE HIGH (FOR AXIS)
HIGH = INT(TEMP)
IF(ABS(TEMP-HIGH).GE.1E-12 .AND. TEMP.GT.0) THEN
HIGH = HIGH + 1
ENDIF
HIGH = HIGH*RMAG
! ... determine the number of axis ticks
HELPSCALE = (HIGH-LOW)/RMAG
IF(HELPSCALE.GT.5) THEN
NTICKS = 5 !HELPSCALE
ELSE
SELECT CASE (HELPSCALE)
CASE(5)
NTICKS = 5
CASE(4)
NTICKS = 4
CASE(3)
NTICKS = 3
CASE(2)
NTICKS = 4
CASE(1)
NTICKS = 5
END SELECT
ENDIF
DTICKS = (HIGH-LOW)/NTICKS
RANGE = HIGH-LOW
IF(RANGE.GE.1000) THEN
HIGH = HIGH*1.0D-3
LOW = LOW*1.0D-3
RSCALE = RSCALE*1.0D3
ENDIF
END SUBROUTINE AXISSET
!==========================================================
SUBROUTINE RANGESET(X, NX, XMIN, XMAX)
!==========================================================
IMPLICIT NONE