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.

96 lines
2.9 KiB

2 years ago
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 SCACAL (NAME, IVAR, USESEL, IELBST,
& ISTMN, ICALC)
C=======================================================================
C --*** SCACAL *** (BLOT) Return variable scaling if already calculated
C -- Written by Amy Gilkey - revised 11/03/87
C --
C --SCACAL determines if the variables has already been scaled. If not,
C --a scaling message is printed. For element variables, the message
C --is printed if all element blocks are not selected.
C --
C --Parameters:
C -- NAME - IN - the variable name
C -- IVAR - IN - the variable index
C -- USESEL - IN - use the element blocks selected array iff true,
C -- else all selected
C -- IELBST - IN - the element block status (>0 if selected)
C -- ISTMN - IN - the "state" of the minimums and maximums:
C -- <0 if not calculated
C -- 0 if no elements in element block
C -- +n if calculated
C -- ICALC - OUT - the scaling flag
C -- 0 = all element blocks selected (if element) and min/max calculated
C -- 1 = not all element blocks selected (if element), but min/max
C -- calculated for each selected element block
C -- 2 = min/max not calculated for some element block
C --
C --Common Variables:
C -- Uses NELBLK, NVARNP, NVAREL of /DBNUMS/
include 'dbnums.blk'
CHARACTER*(*) NAME
LOGICAL USESEL
INTEGER IELBST(*)
INTEGER ISTMN(0:*)
CHARACTER TYP
C --Get variable type
CALL DBVTYP_BL (IVAR, TYP, IDUM)
IF ((TYP .EQ. 'H') .OR. (TYP .EQ. 'G')
& .OR. (TYP .EQ. 'N')) THEN
C --History, global or nodal variable, check min/max already computed
IF (ISTMN(0) .GE. 0) THEN
ICALC = 0
ELSE
ICALC = 2
END IF
ELSE IF (TYP .EQ. 'E') THEN
C --Element variable, check if all element blocks selected and if
C --all-blocks min/max already computed
IF (USESEL) THEN
CALL CNTELB (IELBST, NELBLK, NUMON, NUMSEL)
ELSE
NUMSEL = NELBLK
END IF
IF ((NUMSEL .GE. NELBLK) .AND. (ISTMN(0) .GE. 0)) THEN
ICALC = 0
ELSE
C --If not all element blocks selected, determine if each min/max for
C --variable already computed
ICALC = 1
DO 100 IELB = 1, NELBLK
IF (ISTMN(IELB) .LT. 0) ICALC = 2
100 CONTINUE
END IF
END IF
IF (ICALC .GT. 0) THEN
WRITE (*, 10000) 'Scaling variable ', NAME(:LENSTR(NAME))
END IF
RETURN
10000 FORMAT (1X, 5A)
END