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.
89 lines
2.7 KiB
89 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 GRAEXP (AXTYP, NNUM, RNUM, ATIC)
|
|
C=======================================================================
|
|
|
|
C --*** GRAEXP *** (GRPLIB) Choose axis exponent (PLT)
|
|
C -- Written by Amy Gilkey - revised 02/20/87
|
|
C --
|
|
C --GRAEXP chooses an exponent from the axes limits and sets this
|
|
C --value and the number of decimal digits for the given axis.
|
|
C --It will convert to engineering notation if possible.
|
|
C --
|
|
C --Parameters:
|
|
C -- AXTYP - IN - the axis (' ' for both, 'X' for X, 'Y' for Y)
|
|
C -- NNUM - IN - the number of numbers in the array set;
|
|
C -- 0 for no exponent
|
|
C -- RNUM - IN - the array of axes limits
|
|
C -- ATIC - IN - the axis tick mark interval
|
|
|
|
C --Routines Called:
|
|
C -- PLTSTG - (PLTLIB) Set graph parameter
|
|
C -- 13, 14 = (KXEXP, KYEXP) X, Y axis exponent
|
|
C -- 19, 20 = (KXNDIG, KYNDIG) X, Y axis number of decimal digits
|
|
|
|
PARAMETER (KXEXP=13, KYEXP=14, KXNDIG=19, KYNDIG=20)
|
|
|
|
CHARACTER AXTYP
|
|
INTEGER NNUM
|
|
REAL RNUM(*)
|
|
REAL ATIC
|
|
|
|
LOGICAL LDUM, PLTSTG
|
|
CHARACTER*12 SCRSTR
|
|
|
|
IF (NNUM .GT. 0) THEN
|
|
|
|
C --Convert all to E notation and find the minimum and maximum exponent
|
|
C -- MINE and MAXE are the minimum and maximum exponents
|
|
|
|
MINE = 999
|
|
MAXE = -999
|
|
DO 100 I = 1, NNUM
|
|
IF (RNUM(I) .NE. 0.0) THEN
|
|
WRITE (SCRSTR(1:8), '(0PE8.1)') RNUM(I)
|
|
READ (SCRSTR(6:8), '(I3)') IE
|
|
MINE = MIN (MINE, IE)
|
|
MAXE = MAX (MAXE, IE)
|
|
END IF
|
|
100 CONTINUE
|
|
|
|
IF (MAXE .GT. 0) THEN
|
|
IEXP = INT ((MAXE - 1) / 3) * 3
|
|
ELSE
|
|
IEXP = INT ((MAXE - 2) / 3) * 3
|
|
END IF
|
|
|
|
WRITE (SCRSTR(1:12), '(0PE12.5)') ATIC
|
|
READ (SCRSTR(10:12), '(I3)') ITICE
|
|
DO 110 I = 8, 3, -1
|
|
IF (SCRSTR(I:I) .NE. '0') GOTO 120
|
|
110 CONTINUE
|
|
120 CONTINUE
|
|
NSIG = MAX (2, I-3 + MAXE - ITICE)
|
|
NDIG = MAX (0, IEXP - MAXE + NSIG)
|
|
|
|
ELSE
|
|
|
|
C --Set exponent and number of digits to zero
|
|
|
|
IEXP = 0
|
|
NDIG = 0
|
|
END IF
|
|
|
|
IF (AXTYP .NE. 'Y') THEN
|
|
LDUM = PLTSTG (KXEXP, REAL(IEXP))
|
|
LDUM = PLTSTG (KXNDIG, REAL(NDIG))
|
|
END IF
|
|
IF (AXTYP .NE. 'X') THEN
|
|
LDUM = PLTSTG (KYEXP, REAL(IEXP))
|
|
LDUM = PLTSTG (KYNDIG, REAL(NDIG))
|
|
END IF
|
|
|
|
RETURN
|
|
END
|
|
|