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.
 
 
 
 
 
 

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