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.
 
 
 
 
 
 

154 lines
5.3 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 LIMITS (XYZMIN, XYZMAX, CRD, IX, MAT, NDIM, NEBLK,
* NNODES, EXODUS, TIME, ITMSEL, CORDSP, NUMNP)
DIMENSION CRD(NUMNP, *), IX(NNODES,*), MAT(6,*),
* XYZMIN(NDIM,NEBLK), XYZMAX(NDIM,NEBLK),
* TIME(*), CORDSP(NUMNP, *)
LOGICAL ITMSEL(*), ISABRT
CHARACTER*16 ENGNOT, ENG1
DIMENSION OVMIN (3), OVMAX (3)
LOGICAL EXODUS
include 'nu_io.blk'
include 'nu_ptim.blk'
C ... IF NOT EXODUS, THEN CORDSP CONTAINS COORDINATES
IF (EXODUS) THEN
CALL GETDSP (CRD, CORDSP, NDIM, NUMNP, TIME, ITMSEL,
* 'R', ISTAT)
IF (ISTAT .NE. 0) GO TO 130
END IF
10 CONTINUE
IF (EXODUS) THEN
CALL GETDSP (CRD, CORDSP, NDIM, NUMNP, TIME, ITMSEL,
* 'A', ISTAT)
IF (ISTAT .NE. 0) GO TO 130
END IF
IF (ISABRT()) RETURN
IF (NDIM .EQ. 2) THEN
DO 40 IBLK = 1, NEBLK
IF (MAT(5,IBLK) .NE. 1) GOTO 40
IELBEG = MAT(3,IBLK)
IELEND = MAT(4,IBLK)
XYZMIN(1,IBLK) = CORDSP(IX(1,IELBEG),1)
XYZMIN(2,IBLK) = CORDSP(IX(1,IELBEG),2)
XYZMAX(1,IBLK) = CORDSP(IX(1,IELBEG),1)
XYZMAX(2,IBLK) = CORDSP(IX(1,IELBEG),2)
DO 30 IEL = IELBEG, IELEND
DO 20 I = 1, NNODES
XYZMIN(1,IBLK) = MIN(XYZMIN(1,IBLK),
* CORDSP(IX(I,IEL),1))
XYZMIN(2,IBLK) = MIN(XYZMIN(2,IBLK),
* CORDSP(IX(I,IEL),2))
XYZMAX(1,IBLK) = MAX(XYZMAX(1,IBLK),
* CORDSP(IX(I,IEL),1))
XYZMAX(2,IBLK) = MAX(XYZMAX(2,IBLK),
* CORDSP(IX(I,IEL),2))
20 CONTINUE
30 CONTINUE
40 CONTINUE
ELSE
DO 70 IBLK = 1, NEBLK
IF (MAT(5,IBLK) .NE. 1) GOTO 70
IELBEG = MAT(3,IBLK)
IELEND = MAT(4,IBLK)
XYZMIN(1,IBLK) = CORDSP(IX(1,IELBEG),1)
XYZMIN(2,IBLK) = CORDSP(IX(1,IELBEG),2)
XYZMIN(3,IBLK) = CORDSP(IX(1,IELBEG),3)
XYZMAX(1,IBLK) = CORDSP(IX(1,IELBEG),1)
XYZMAX(2,IBLK) = CORDSP(IX(1,IELBEG),2)
XYZMAX(3,IBLK) = CORDSP(IX(1,IELBEG),3)
DO 60 IEL = IELBEG, IELEND
DO 50 I = 1, NNODES
XYZMIN(1,IBLK) = MIN(XYZMIN(1,IBLK),
* CORDSP(IX(I,IEL),1))
XYZMIN(2,IBLK) = MIN(XYZMIN(2,IBLK),
* CORDSP(IX(I,IEL),2))
XYZMIN(3,IBLK) = MIN(XYZMIN(3,IBLK),
* CORDSP(IX(I,IEL),3))
XYZMAX(1,IBLK) = MAX(XYZMAX(1,IBLK),
* CORDSP(IX(I,IEL),1))
XYZMAX(2,IBLK) = MAX(XYZMAX(2,IBLK),
* CORDSP(IX(I,IEL),2))
XYZMAX(3,IBLK) = MAX(XYZMAX(3,IBLK),
* CORDSP(IX(I,IEL),3))
50 CONTINUE
60 CONTINUE
70 CONTINUE
END IF
DO 90 I=1,NDIM
OVMIN(I) = XYZMIN(I,1)
OVMAX(I) = XYZMAX(I,1)
DO 80 J=2,NEBLK
OVMIN(I) = MIN(OVMIN(I), XYZMIN(I,J))
OVMAX(I) = MAX(OVMAX(I), XYZMAX(I,J))
80 CONTINUE
90 CONTINUE
ENG1 = ENGNOT(TREAD,2)
DO 120 IO=IOMIN, IOMAX
IF (EXODUS) WRITE (IO, 140) ENG1
IF (NDIM .EQ. 2) THEN
WRITE (IO, 150)
DO 100 ITMP=1,NEBLK
I = MAT(6, ITMP)
IF (MAT(5,I) .NE. 1) GOTO 100
WRITE (IO, 170) MAT(1,I),(XYZMIN(J,I),J=1,NDIM),
* (XYZMAX(J,I),J=1,NDIM),
* ((XYZMAX(J,I)-XYZMIN(J,I)),J=1,NDIM)
100 CONTINUE
ELSE
WRITE (IO, 160)
DO 110 ITMP=1,NEBLK
I = MAT(6, ITMP)
IF (MAT(5,I) .NE. 1) GOTO 110
WRITE (IO, 180) MAT(1,I),(XYZMIN(J,I),J=1,NDIM),
* (XYZMAX(J,I),J=1,NDIM),
* ((XYZMAX(J,I)-XYZMIN(J,I)),J=1,NDIM)
110 CONTINUE
END IF
IF (NEBLK .GT. 1) THEN
IF (NDIM .EQ. 2) THEN
WRITE (IO, 190) (OVMIN(I),I=1,NDIM),(OVMAX(I),I=1,NDIM),
* ((OVMAX(I)-OVMIN(I)),I=1,NDIM)
ELSE
WRITE (IO, 200) (OVMIN(I),I=1,NDIM),(OVMAX(I),I=1,NDIM),
* ((OVMAX(I)-OVMIN(I)),I=1,NDIM)
END IF
END IF
120 CONTINUE
IF (EXODUS) GO TO 10
130 CONTINUE
RETURN
140 FORMAT(//5X,'Time = ',A16)
150 FORMAT(/5X,'Material',T22,'X',T36,'Y')
160 FORMAT(/5X,'Material',T22,'X',T36,'Y',T50,'Z')
170 FORMAT (I10,3X,2(2X,1PE12.5),' Minimum',/
* ,13X,2(2X,1PE12.5),' Maximum',/
* ,13X,2(2X,1PE12.5),' Range',/)
180 FORMAT (I10,3X,3(2X,1PE12.5),' Minimum',/
* ,13X,3(2X,1PE12.5),' Maximum',/
* ,13X,3(2X,1PE12.5),' Range',/)
190 FORMAT (5X,'Limits for Total Body:',/
* ,13X,2(2X,1PE12.5),' Minimum',/
* ,13X,2(2X,1PE12.5),' Maximum',/
* ,13X,2(2X,1PE12.5),' Range',/)
200 FORMAT (5X,'Limits for Total Body:',/
* ,13X,3(2X,1PE12.5),' Minimum',/
* ,13X,3(2X,1PE12.5),' Maximum',/
* ,13X,3(2X,1PE12.5),' Range',/)
END