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
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
|
|
|