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.

84 lines
2.9 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 ADDWDG (MXND, MLN, NUID, XN, YN, ZN, LXK, KXL, NXL,
& LXN, LNODES, ANGLE, BNSIZE, NLOOP, IAVAIL, NAVAIL, LLL, KKK,
& NNN, LLLOLD, NNNOLD, TANG, KANG, NSTART, NEND, XMIN, XMAX,
& YMIN, YMAX, ZMIN, ZMAX, GRAPH, VIDEO, DEV1, KREG, NOROOM, ERR)
C***********************************************************************
C SUBROUTINE ADDWDG = ADDS WEDGES IN A ROW
C***********************************************************************
C ADD WEDGES BASED ON THE TOTAL TURNED ANGLE:
C FOR TURNING ANGLES LESS THAN 135 DEGREES - 1 WEDGE
C FOR TURNING ANGLES BETWEEN 135 AND 225 DEGREES - TRY 2 WEDGES
C FOR TURNING ANGLES BETWEEN 225 AND 315 DEGREES - TRY 3 WEDGES
C FOR TURNING ANGLES GREATER THAN 315 DEGREES - TRY 4 WEDGES
C***********************************************************************
DIMENSION XN (MXND), YN (MXND), ZN (MXND), NUID (MXND)
DIMENSION LXK (4, MXND), KXL (2, 3*MXND)
DIMENSION NXL (2, 3*MXND), LXN (4, MXND)
DIMENSION LNODES (MLN, MXND), BNSIZE (2, MXND), ANGLE (MXND)
DIMENSION INODE (4)
LOGICAL GRAPH, ERR, MAXSIZ, VIDEO, NOROOM, PWEDGE
CHARACTER*3 DEV1
MAXSIZ = .TRUE.
ERR = .FALSE.
PWEDGE = .FALSE.
IF (TANG .LT. 2.3561945) THEN
NWANT = 1
ELSEIF (TANG .LT. 3.9269908) THEN
NWANT = 2
ELSEIF (TANG .LT. 5.4977871) THEN
NWANT = 3
ELSE
NWANT = 4
ENDIF
CALL NSPLIT (MXND, MLN, LNODES, ANGLE, NSTART, KANG, INODE,
& NNODE, NWANT, MAXSIZ)
DO 100 I = 1, NNODE
CALL MARKSM (MXND, MLN, LXK, KXL, NXL, LXN, LNODES,
& LNODES (2, INODE(I)), ERR)
IF (ERR) GOTO 110
CALL MARKSM (MXND, MLN, LXK, KXL, NXL, LXN, LNODES,
& LNODES (2, LNODES (2, INODE(I))), ERR)
IF (ERR) GOTO 110
CALL MARKSM (MXND, MLN, LXK, KXL, NXL, LXN, LNODES,
& LNODES (3, INODE(I)), ERR)
IF (ERR) GOTO 110
CALL MARKSM (MXND, MLN, LXK, KXL, NXL, LXN, LNODES,
& LNODES (3, LNODES (3, INODE(I))), ERR)
IF (ERR) GOTO 110
CALL MARKSM (MXND, MLN, LXK, KXL, NXL, LXN, LNODES,
& INODE(I), ERR)
IF (ERR) GOTO 110
CALL WEDGE (MXND, MLN, NUID, LXK, KXL, NXL, LXN, XN, YN,
& LNODES, BNSIZE, IAVAIL, NAVAIL, LLL, KKK, NNN, LLLOLD,
& NNNOLD, INODE(I), IDUM, NLOOP, PWEDGE, GRAPH, VIDEO,
& NOROOM, ERR)
IF ((NOROOM) .OR. (ERR)) GOTO 110
IF (VIDEO) THEN
CALL RPLOTL (MXND, XN, YN, ZN, NXL, XMIN, XMAX, YMIN,
& YMAX, ZMIN, ZMAX, LLL, DEV1, KREG)
CALL SNAPIT (2)
ENDIF
100 CONTINUE
110 CONTINUE
RETURN
END