Cloned SEACAS for EXODUS library with extra build files for internal package management.
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.
 
 
 
 
 
 

135 lines
2.7 KiB

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