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.
112 lines
3.7 KiB
112 lines
3.7 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 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
|
|
|