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.
62 lines
2.1 KiB
62 lines
2.1 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
|
||
|
|
||
|
C=======================================================================
|
||
|
SUBROUTINE ZMEDGE (XZMMIN, XZMMAX, YZMMIN, YZMMAX, XN, YN,
|
||
|
& IEDSET, NEDGES)
|
||
|
C=======================================================================
|
||
|
|
||
|
C --*** ZMEDGE *** (MESH) Delete edges outside zoom window
|
||
|
C -- Written by Amy Gilkey - revised 10/02/86
|
||
|
C --
|
||
|
C --ZMEDGE deletes edges with both nodes outside the zoom window,
|
||
|
C --and the line not crossing the zoom window.
|
||
|
C --
|
||
|
C --Parameters:
|
||
|
C -- XZMMIN, XZMMAX, YZMMIN, YZMMAX - IN - the box enclosing the
|
||
|
C -- zoom window
|
||
|
C -- XN, YN - IN - the nodal coordinates
|
||
|
C -- IEDSET - IN/OUT - the edge line set;
|
||
|
C -- (0) = face defining edge; 0 to delete edge
|
||
|
C -- NEDGES - IN - the number of lines in the edge set
|
||
|
|
||
|
common /debugc/ cdebug
|
||
|
common /debugn/ idebug
|
||
|
character*8 cdebug
|
||
|
|
||
|
REAL XN(*), YN(*)
|
||
|
INTEGER IEDSET(0:2,*)
|
||
|
|
||
|
nhid = 0
|
||
|
DO 100 IEDG = 1, NEDGES
|
||
|
IF (IEDSET(0,IEDG) .EQ. 0) GOTO 100
|
||
|
|
||
|
C --Delete edge if both nodes are outside zoom window
|
||
|
|
||
|
N1 = IEDSET(1,IEDG)
|
||
|
X1 = XN(N1)
|
||
|
Y1 = YN(N1)
|
||
|
IF ((X1 .LE. XZMMIN) .OR. (X1 .GE. XZMMAX)
|
||
|
& .OR. (Y1 .LE. YZMMIN) .OR. (Y1 .GE. YZMMAX)) THEN
|
||
|
N2 = IEDSET(2,IEDG)
|
||
|
X2 = XN(N2)
|
||
|
Y2 = YN(N2)
|
||
|
IF (((X1 .LE. XZMMIN) .AND. (X2 .LE. XZMMIN)) .OR.
|
||
|
& ((X1 .GE. XZMMAX) .AND. (X2 .GE. XZMMAX)) .OR.
|
||
|
& ((Y1 .LE. YZMMIN) .AND. (Y2 .LE. YZMMIN)) .OR.
|
||
|
& ((Y1 .GE. YZMMAX) .AND. (Y2 .GE. YZMMAX))) THEN
|
||
|
IEDSET(0,IEDG) = 0
|
||
|
nhid = nhid + 1
|
||
|
END IF
|
||
|
END IF
|
||
|
|
||
|
100 CONTINUE
|
||
|
if ((cdebug .eq. 'HIDDEN') .and. (idebug .ge. 1))
|
||
|
& write (*, '(1x,a,i5)') 'edges outside zoom window =', nhid
|
||
|
|
||
|
RETURN
|
||
|
END
|