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.
153 lines
5.4 KiB
153 lines
5.4 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 STIMES (OPTION, ALLPRT, ALLTIM, NSTEPS, TIMES, SELTIM)
|
|
C=======================================================================
|
|
|
|
C --*** STIMES *** Print selected database steps and min/max times
|
|
C -- Modified from DBPTIM Written by Amy Gilkey - revised 12/18/87
|
|
C --
|
|
C --STIMES displays the number of selected time steps and the minimum
|
|
C -- and maximum selected time on the database.
|
|
C --
|
|
C --Parameters:
|
|
C -- OPTION - IN - '*' to print all, else print options:
|
|
C -- 'N' to print the number of time steps
|
|
C -- 'M' to print the minimum and maximum time step times
|
|
C -- 'T' to print the time step times
|
|
C -- ALLPRT - IN - the type of time steps to print:
|
|
C -- true to print both selected and non-selected information;
|
|
C -- false to print selected time steps
|
|
C -- ALLTIM - IN - the type of the input time steps:
|
|
C -- true if selected and non-selected information;
|
|
C -- false if selected time steps only
|
|
C -- NSTEPS - IN - the number of time steps
|
|
C -- TIMES - IN - the database time steps
|
|
C -- SELTIM - IN - true iff TIMES(i) is selected time step
|
|
C -- (only if ALLTIM = '*')
|
|
|
|
C --Routines Called:
|
|
C -- INTSTR - (STRLIB) Convert integers to strings
|
|
C -- NUMSTR - (STRLIB) Convert numbers to engineering notation
|
|
C -- SQZSTR - (STRLIB) Delete extra blanks from string
|
|
|
|
CHARACTER*(*) OPTION
|
|
LOGICAL ALLPRT, ALLTIM
|
|
INTEGER NSTEPS
|
|
REAL TIMES(*)
|
|
LOGICAL SELTIM(*)
|
|
|
|
LOGICAL ISABRT
|
|
CHARACTER*80 STRING
|
|
CHARACTER*5 ISTRA
|
|
CHARACTER*20 RSTR(3)
|
|
REAL RNUM(3)
|
|
|
|
WRITE (*, *)
|
|
|
|
IF (ALLTIM) THEN
|
|
NSTEPW = NUMEQL (.TRUE., NSTEPS, SELTIM)
|
|
ELSE
|
|
NSTEPW = NSTEPS
|
|
END IF
|
|
NSTEPH = NSTEPS - NSTEPW
|
|
IF (ALLPRT) THEN
|
|
NSTEPX = NSTEPS
|
|
ELSE
|
|
NSTEPX = NSTEPW
|
|
END IF
|
|
|
|
IF ((OPTION .EQ. '*') .OR. (INDEX (OPTION, 'N') .GT. 0)) THEN
|
|
IF (ALLPRT) THEN
|
|
IF (ALLTIM) THEN
|
|
WRITE (STRING, 10000) NSTEPS, NSTEPH
|
|
ELSE
|
|
WRITE (STRING, 10000) NSTEPS
|
|
END IF
|
|
10000 FORMAT ('Number of time steps = ', I5, :,
|
|
& ' (including ', I5, ' non-selected)')
|
|
ELSE
|
|
WRITE (STRING, 10010) NSTEPW
|
|
10010 FORMAT ('Number of selected time steps = ', I5)
|
|
END IF
|
|
CALL SQZSTR (STRING, LSTR)
|
|
WRITE (*, 10030) STRING(:LSTR)
|
|
END IF
|
|
|
|
IF (((OPTION .EQ. '*') .OR. (INDEX (OPTION, 'M') .GT. 0))
|
|
& .AND. (NSTEPX .GT. 0)) THEN
|
|
IF (ALLTIM .AND. (.NOT. ALLPRT)) THEN
|
|
CALL MINMXL (NSTEPS, SELTIM, TIMES, TIMMIN, TIMMAX)
|
|
ELSE
|
|
CALL MINMAX (NSTEPS, TIMES, TIMMIN, TIMMAX)
|
|
END IF
|
|
IF (NSTEPX .EQ. 1) THEN
|
|
CALL NUMSTR1 (4, TIMMIN, RSTR, LSTR)
|
|
IF (ALLPRT) THEN
|
|
WRITE (*, 10030) ' Time = ', RSTR(1)(:LSTR)
|
|
ELSE
|
|
WRITE (*, 10030) ' Selected Time = ', RSTR(1)(:LSTR)
|
|
END IF
|
|
ELSE
|
|
RNUM(1) = TIMMIN
|
|
RNUM(2) = TIMMAX
|
|
CALL NUMSTR (2, 4, RNUM, RSTR, LSTR)
|
|
IF (ALLPRT) THEN
|
|
WRITE (*, 10030)
|
|
& ' Minimum time = ', RSTR(1)(:LSTR)
|
|
WRITE (*, 10030)
|
|
& ' Maximum time = ', RSTR(2)(:LSTR)
|
|
ELSE
|
|
WRITE (*, 10030)
|
|
& ' Minimum selected time = ', RSTR(1)(:LSTR)
|
|
WRITE (*, 10030)
|
|
& ' Maximum selected time = ', RSTR(2)(:LSTR)
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
IF (((OPTION .EQ. '*') .OR. (INDEX (OPTION, 'T') .GT. 0))
|
|
& .AND. (NSTEPX .GT. 0)) THEN
|
|
CALL INTSTR (1, 0, NSTEPS, ISTRA, LISTR)
|
|
RNUM(2) = TIMES(1)
|
|
IF ((RNUM(2) .EQ. 0.0) .AND. (NSTEPS .GT. 1))
|
|
& RNUM(2) = TIMES(2)
|
|
RNUM(3) = TIMES(NSTEPS)
|
|
IF (ALLTIM .AND. (.NOT. ALLPRT)) THEN
|
|
DO 100 I = 1, NSTEPS
|
|
IF (SELTIM(I)) THEN
|
|
IF (ISABRT ()) RETURN
|
|
CALL INTSTR (1, LISTR, I, ISTRA, LI)
|
|
RNUM(1) = TIMES(I)
|
|
CALL NUMSTR (3, 4, RNUM, RSTR, LSTR)
|
|
WRITE (*, 10020, IOSTAT=IDUM)
|
|
& ISTRA(:LI), RSTR(1)(:LSTR)
|
|
END IF
|
|
100 CONTINUE
|
|
ELSE
|
|
DO 110 I = 1, NSTEPS
|
|
CALL INTSTR (1, LISTR, I, ISTRA, LI)
|
|
RNUM(1) = TIMES(I)
|
|
CALL NUMSTR (3, 4, RNUM, RSTR, LSTR)
|
|
IF (.NOT. ALLTIM) THEN
|
|
WRITE (*, 10020, IOSTAT=IDUM)
|
|
& ISTRA(:LI), RSTR(1)(:LSTR)
|
|
10020 FORMAT (1X, 3X, 'Step ', A, ')', 3X, A, :, 3X, A)
|
|
ELSE IF (SELTIM(I)) THEN
|
|
WRITE (*, 10020, IOSTAT=IDUM)
|
|
& ISTRA(:LI), RSTR(1)(:LSTR)
|
|
ELSE
|
|
WRITE (*, 10020, IOSTAT=IDUM)
|
|
& ISTRA(:LI), RSTR(1)(:LSTR), '(non-selected)'
|
|
END IF
|
|
110 CONTINUE
|
|
END IF
|
|
END IF
|
|
|
|
RETURN
|
|
10030 FORMAT (1X, 5A)
|
|
END
|
|
|