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.
 
 
 
 
 
 

75 lines
2.2 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
SUBROUTINE SELTIM (TIMES, ITMSEL)
DIMENSION TIMES(*)
LOGICAL ITMSEL(*)
CHARACTER*16 ENGNOT, STRA, STRB
CHARACTER*80 STRTMP
EXTERNAL ENGNOT
include 'nu_ptim.blk'
C ... TOLER is the tolerance for matching a timestep. If the difference
C is less than TOLER, then a match occurs. TOLER1 = TOLER + 1
PARAMETER (TOLER = 1.0E-3)
TOLERP1 = 1.0 + TOLER
TOLERM1 = 1.0 - TOLER
CALL INILOG (NSTEP, .FALSE., ITMSEL)
NLAST = 0
LSTSEL = NSTEP
TIMGET = STMIN
NUMSEL = 0
IF (STDEL .EQ. 0.0) THEN
10 CONTINUE
NLAST = NLAST + 1
IF (NLAST .GT. NSTEP) GO TO 30
IF (TIMES(NLAST) .LE. TOLERP1 * STMAX .AND.
* TIMES(NLAST) .GE. TOLERM1 * STMIN ) THEN
ITMSEL(NLAST) = .TRUE.
NUMSEL = NUMSEL + 1
LSTSEL = NLAST
ELSE IF (TIMES(NLAST) .GT. TOLERP1 * STMAX) THEN
LSTSEL = NLAST - 1
GO TO 30
END IF
GO TO 10
ELSE
20 CONTINUE
NLAST = NLAST + 1
IF (NLAST .GT. NSTEP) GO TO 30
TDELT = ABS(TIMES(NLAST) - TIMGET)
IF (TDELT .LT. (TOLER * TMAX) .AND.
* TIMES(NLAST) .LE. TOLERP1 * STMAX) THEN
ITMSEL(NLAST) = .TRUE.
NUMSEL = NUMSEL + 1
TIMGET = MIN ( TIMES(NLAST) + STDEL, TMAX)
LSTSEL = NLAST
ELSE IF (TIMES(NLAST) .GT. TOLERP1 * STMAX) THEN
LSTSEL = NLAST - 1
GO TO 30
END IF
GO TO 20
END IF
30 CONTINUE
IF (NUMSEL .EQ. 0) THEN
CALL PRTERR ('WARNING', 'No time steps selected.')
ELSE
STRA = ENGNOT(STMIN,2)
STRB = ENGNOT(STMAX,2)
WRITE (STRTMP, 40) NUMSEL, STRA, STRB
CALL SQZSTR(STRTMP, LSTR)
WRITE (*, 50) STRTMP(:LSTR)
END IF
RETURN
40 FORMAT (I5,' Steps Selected from ',A16,' to ',A16)
50 FORMAT (/,5X,A)
END