You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
2.7 KiB
136 lines
2.7 KiB
2 years ago
|
C Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
||
|
C of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
||
|
C NTESS, the U.S. Government retains certain rights in this software.
|
||
|
C
|
||
|
C See packages/seacas/LICENSE for details
|
||
|
|
||
|
C=======================================================================
|
||
|
SUBROUTINE PLTINO(MIN,MAX,START,REND,INTER,EXP,NMIN)
|
||
|
REAL MIN,MAX,INTER,NINTER
|
||
|
INTEGER EXP
|
||
|
REAL NI
|
||
|
DATA SMALL/1.E-4/,DESINT/5./
|
||
|
|
||
|
DELTA = MAX - MIN
|
||
|
TMAX = MAX
|
||
|
TMIN = MIN
|
||
|
IF (DELTA.NE.0) THEN
|
||
|
EXP = NINT(LOG10(ABS(DELTA))) - 1
|
||
|
|
||
|
ELSE
|
||
|
IF (MIN.NE.0) THEN
|
||
|
EXP = NINT(LOG10(ABS(MIN))) - 1
|
||
|
EPS = .01*ABS(MIN)
|
||
|
|
||
|
ELSE
|
||
|
EXP = 0
|
||
|
EPS = .1
|
||
|
END IF
|
||
|
|
||
|
TMAX = MAX + EPS
|
||
|
TMIN = TMIN - EPS
|
||
|
END IF
|
||
|
|
||
|
TENEXP = 10.**EXP
|
||
|
RMIN = 1.E20
|
||
|
J = 1
|
||
|
DO 2470 I = 1,5
|
||
|
NINTER = DELTA/ (DBLE(I)*TENEXP)
|
||
|
TEMP = ABS(DESINT-NINTER)
|
||
|
IF (TEMP.LT.RMIN) THEN
|
||
|
J = I
|
||
|
RMIN = TEMP
|
||
|
END IF
|
||
|
|
||
|
2470 CONTINUE
|
||
|
INTER = DBLE(J)
|
||
|
IF (DELTA.EQ.0.) THEN
|
||
|
INTER = 1.
|
||
|
END IF
|
||
|
|
||
|
IF (INTER.EQ.1.) THEN
|
||
|
NMIN = 5
|
||
|
|
||
|
ELSE IF (INTER.EQ.2.) THEN
|
||
|
NMIN = 4
|
||
|
|
||
|
ELSE IF (INTER.EQ.3.) THEN
|
||
|
NMIN = 6
|
||
|
|
||
|
ELSE IF (INTER.EQ.4.) THEN
|
||
|
NMIN = 4
|
||
|
|
||
|
ELSE IF (INTER.EQ.5.) THEN
|
||
|
NMIN = 5
|
||
|
END IF
|
||
|
|
||
|
TENI = INTER*TENEXP
|
||
|
IF (TMIN.GE.0.) THEN
|
||
|
ADD = 0.
|
||
|
|
||
|
ELSE
|
||
|
ADD = -1.
|
||
|
END IF
|
||
|
|
||
|
RNI = TMIN/TENI
|
||
|
NI = INT(RNI)
|
||
|
IF (ABS(RNI-NI).LT.SMALL) THEN
|
||
|
ADD = 0.
|
||
|
END IF
|
||
|
|
||
|
START = (NI+ADD)*TENI
|
||
|
IF (TMAX.GE.0.) THEN
|
||
|
ADD = 1.
|
||
|
|
||
|
ELSE
|
||
|
ADD = 0.
|
||
|
END IF
|
||
|
|
||
|
RNI = TMAX/TENI
|
||
|
NI = INT(RNI)
|
||
|
IF (ABS(RNI-NI).LT.SMALL) THEN
|
||
|
ADD = 0.
|
||
|
END IF
|
||
|
|
||
|
REND = (NI+ADD)*TENI
|
||
|
START = START/TENEXP
|
||
|
REND = REND/TENEXP
|
||
|
IF (REND.NE.0.) THEN
|
||
|
2490 IF (.NOT. (ABS(REND).GT.10.)) GO TO 2500
|
||
|
REND = REND/10.
|
||
|
START = START/10.
|
||
|
INTER = INTER/10.
|
||
|
EXP = EXP + 1
|
||
|
GO TO 2490
|
||
|
|
||
|
2500 CONTINUE
|
||
|
END IF
|
||
|
|
||
|
IF (START.NE.0.) THEN
|
||
|
2510 IF (.NOT. (ABS(START).LT.1.)) GO TO 2520
|
||
|
REND = REND*10.
|
||
|
START = START*10.
|
||
|
INTER = INTER*10.
|
||
|
EXP = EXP - 1
|
||
|
GO TO 2510
|
||
|
|
||
|
2520 CONTINUE
|
||
|
END IF
|
||
|
|
||
|
IF (START.EQ.0 .OR. TMIN.EQ.0) THEN
|
||
|
RETURN
|
||
|
|
||
|
END IF
|
||
|
|
||
|
IF (START.EQ.REND) THEN
|
||
|
REND = START + INTER
|
||
|
END IF
|
||
|
|
||
|
IF (ABS(START-REND).EQ.INTER) THEN
|
||
|
NMIN = 10
|
||
|
END IF
|
||
|
|
||
|
RETURN
|
||
|
|
||
|
END
|