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