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.

113 lines
3.7 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 SCAELB (A, USESEL, IELBST,
& VALMN, NUMMN, XYZMN, ISTMN, VALMX, NUMMX, XYZMX, ISTMX,
& VALMIN, NUMMIN, XYZMIN, ISTMIN, VALMAX, NUMMAX, XYZMAX, ISTMAX)
C=======================================================================
C --*** SCAELB *** (BLOT) Scale element variable for selected blocks
C -- Written by Amy Gilkey - revised 04/01/88
C --
C --SCAELB returns the minimum and maximum values for the selected
C --element blocks. The minimum and maximums for each block have already
C --been calculated and stored.
C --
C --Parameters:
C -- A - IN - the dynamic memory base array
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 -- VALMN, VALMX - IN - the minimum and maximum value for each
C -- element block
C -- NUMMN, NUMMX - IN - the element number of the minimum and
C -- maximum value for each element block
C -- XYZMN, XYZMX - IN - the coordinates of NUMMN, NUMMX
C -- ISTMN, ISTMX - IN - the step number of the minimum and maximum
C -- value for each element block
C -- VALMIN, VALMAX - OUT - the minimum and maximum value
C -- (with selected element block and birth/death)
C -- NUMMIN, NUMMAX - OUT - the element number of the minimum and
C -- maximum value
C -- XYZMIN, XYZMAX - OUT - the coordinates of NUMMIN, NUMMAX
C -- ISTMIN, ISTMAX - OUT - the step number of the minimum and maximum value
C --
C --Common Variables:
C -- Uses NUMEL, NELBLK, NVAREL, NSTEPS of /DBNUMS/
include 'dbnums.blk'
DIMENSION A(*)
LOGICAL USESEL
INTEGER IELBST(*)
REAL VALMN(0:NELBLK), VALMX(0:NELBLK)
INTEGER NUMMN(0:NELBLK), NUMMX(0:NELBLK)
REAL XYZMN(3,0:NELBLK), XYZMX(3,0:NELBLK)
INTEGER ISTMN(0:NELBLK), ISTMX(0:NELBLK)
REAL XYZMIN(3), XYZMAX(3)
LOGICAL INIT
C --Calculate min/max for element by element block
IF (USESEL) THEN
INIT = .TRUE.
DO 100 IELB = 1, NELBLK
IF ((.NOT. USESEL) .OR. (IELBST(IELB) .GT. 0)) THEN
IF (ISTMN(IELB) .GT. 0) THEN
IF (INIT) THEN
IMIN = IELB
IMAX = IELB
INIT = .FALSE.
ELSE
IF (VALMN(IMIN) .GT. VALMN(IELB)) THEN
IMIN = IELB
END IF
IF (VALMX(IMAX) .LT. VALMX(IELB)) THEN
IMAX = IELB
END IF
END IF
END IF
END IF
100 CONTINUE
ELSE
INIT = .FALSE.
IMIN = 0
IMAX = 0
END IF
IF (INIT) THEN
VALMIN = 0.0
NUMMIN = 0
DO 110 I = 1, 3
XYZMIN(I) = 0.0
110 CONTINUE
ISTMIN = 0
VALMAX = 0.0
NUMMAX = 0
DO 120 I = 1, 3
XYZMAX(I) = 0.0
120 CONTINUE
ISTMAX = 0
ELSE
VALMIN = VALMN(IMIN)
NUMMIN = NUMMN(IMIN)
DO 130 I = 1, 3
XYZMIN(I) = XYZMN(I,IMIN)
130 CONTINUE
ISTMIN = ISTMN(IMIN)
VALMAX = VALMX(IMAX)
NUMMAX = NUMMX(IMAX)
DO 140 I = 1, 3
XYZMAX(I) = XYZMX(I,IMAX)
140 CONTINUE
ISTMAX = ISTMX(IMAX)
END IF
RETURN
END