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.

87 lines
2.8 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
SUBROUTINE GETEXT (MP, ML, MS, MR, N, IPOINT, COOR, ILINE, LTYPE,
& LCON, NLPS, IFLINE, ILLIST, NSPR, IFSIDE, ISLIST, LINKP,
& LINKL, LINKS, LINKR, REXTRM, BXMIN, BXMAX, BYMIN, BYMAX)
C***********************************************************************
C SUBROUTINE GETEXT = GETS THE REGION AND BODY EXTREMES
C***********************************************************************
DIMENSION IPOINT (MP), COOR (2, MP)
DIMENSION ILINE (ML), LTYPE (ML), LCON (3, ML)
DIMENSION NLPS (MS), IFLINE (MS), ILLIST (MS * 3)
DIMENSION NSPR (MR), IFSIDE (MR), ISLIST (MR * 4)
DIMENSION LINKP (2, MP), LINKL (2, ML), LINKS (2, MS)
DIMENSION LINKR (2, MR)
DIMENSION REXTRM (4, MR), N (29)
LOGICAL FOUND, GETMAX, ADDLNK
LOGICAL NUMPLT, TEST
C GET THE POINTS EXTREMES
ADDLNK = .FALSE.
GETMAX = .TRUE.
FOUND = .FALSE.
DO 100 I = 1, N (1)
CALL LTSORT (MP, LINKP, IABS (IPOINT (I)), II, ADDLNK)
IF (II .GT. 0) THEN
IF (FOUND) THEN
BXMAX = AMAX1 (COOR (1, II), BXMAX)
BYMAX = AMAX1 (COOR (2, II), BYMAX)
BXMIN = AMIN1 (COOR (1, II), BXMIN)
BYMIN = AMIN1 (COOR (2, II), BYMIN)
ELSE
BXMAX = COOR (1, II)
BXMIN = COOR (1, II)
BYMAX = COOR (2, II)
BYMIN = COOR (2, II)
FOUND = .TRUE.
ENDIF
ENDIF
100 CONTINUE
C GET ALL THE LINES EXTREMES
IF (FOUND) THEN
DO 110 I = 1, N (2)
CALL LTSORT (ML, LINKL, IABS (ILINE (I)), II, ADDLNK)
IF (II .GT. 0) THEN
CALL DLINE (MP, ML, COOR, LINKP, ILINE (II),
& LTYPE (II), LCON (1, II), LCON (2, II), LCON (3, II),
& NUMPLT, X1, Y1, TEST, GETMAX, BXMIN, BXMAX, BYMIN,
& BYMAX)
ENDIF
110 CONTINUE
ELSE
BXMIN = 0.
BXMAX = 20.
BYMIN = 0.
BYMAX = 15.
ENDIF
C CALCULATE THE EXTREMES FOR EACH REGION
DO 120 I = 1, N (22)
CALL LTSORT (MR, LINKR, I, II, ADDLNK)
IF (II .GT. 0) THEN
CALL REGEXT (MP, ML, MS, MR, N, II, COOR, ILINE, LTYPE,
& LCON, NLPS, IFLINE, ILLIST, NSPR, IFSIDE, ISLIST, LINKP,
& LINKL, LINKS, LINKR, XMIN, XMAX, YMIN, YMAX)
REXTRM (1, II) = XMIN
REXTRM (2, II) = XMAX
REXTRM (3, II) = YMIN
REXTRM (4, II) = YMAX
ENDIF
120 CONTINUE
RETURN
END