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.
78 lines
2.0 KiB
78 lines
2.0 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 FLMNMX (MXND, MLN, MAXPRM, LINKPR, KPERIM, LNODES,
|
||
|
& XN, YN, NLOOP, NODE, XMIN, XMAX, YMIN, YMAX, ERR)
|
||
|
C***********************************************************************
|
||
|
|
||
|
C SUBROUTINE FLMNMX = SET MIN AND MAX FOR CURRENT FILL BOUNDARY
|
||
|
|
||
|
C***********************************************************************
|
||
|
|
||
|
DIMENSION LNODES (MLN, MXND), XN (MXND), YN (MXND)
|
||
|
DIMENSION LINKPR (3, MAXPRM)
|
||
|
|
||
|
LOGICAL ERR
|
||
|
|
||
|
KOUNT = 0
|
||
|
INOW = NODE
|
||
|
XMIN = XN (NODE)
|
||
|
XMAX = XN (NODE)
|
||
|
YMIN = YN (NODE)
|
||
|
YMAX = YN (NODE)
|
||
|
|
||
|
100 CONTINUE
|
||
|
|
||
|
INOW = LNODES (3, INOW)
|
||
|
IF (INOW .NE. NODE) THEN
|
||
|
|
||
|
XMIN = MIN (XMIN, XN (INOW))
|
||
|
YMIN = MIN (YMIN, YN (INOW))
|
||
|
XMAX = MAX (XMAX, XN (INOW))
|
||
|
YMAX = MAX (YMAX, YN (INOW))
|
||
|
|
||
|
KOUNT = KOUNT + 1
|
||
|
|
||
|
IF (KOUNT .GT. NLOOP) THEN
|
||
|
CALL MESSAGE('PROBLEMS IN FLMNMX WITH LOOP NOT CLOSING')
|
||
|
ERR = .TRUE.
|
||
|
GOTO 130
|
||
|
ENDIF
|
||
|
GOTO 100
|
||
|
ENDIF
|
||
|
|
||
|
C LOOP THROUGH ALL THE REMAINING PERIMETERS CHECKING FOR CROSSINGS
|
||
|
|
||
|
IPERIM = KPERIM
|
||
|
110 CONTINUE
|
||
|
IPERIM = LINKPR (2, IPERIM)
|
||
|
IF ((IPERIM .EQ. 0) .OR. (IPERIM .EQ. KPERIM)) GOTO 130
|
||
|
|
||
|
KMAX = LINKPR (3, IPERIM)
|
||
|
INOW = LINKPR (1, IPERIM)
|
||
|
KOUNT = 0
|
||
|
|
||
|
120 CONTINUE
|
||
|
XMIN = MIN (XMIN, XN (INOW))
|
||
|
YMIN = MIN (YMIN, YN (INOW))
|
||
|
XMAX = MAX (XMAX, XN (INOW))
|
||
|
YMAX = MAX (YMAX, YN (INOW))
|
||
|
KOUNT = KOUNT + 1
|
||
|
INOW = LNODES (3, INOW)
|
||
|
IF (INOW .EQ. LINKPR (1, IPERIM)) GOTO 110
|
||
|
|
||
|
IF (KOUNT. GT. KMAX + 1) THEN
|
||
|
CALL MESSAGE('PROBLEMS IN FLMNMX WITH LOOP NOT CLOSING')
|
||
|
ERR = .TRUE.
|
||
|
GOTO 130
|
||
|
ENDIF
|
||
|
GOTO 120
|
||
|
|
||
|
130 CONTINUE
|
||
|
RETURN
|
||
|
|
||
|
END
|