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.
80 lines
2.1 KiB
80 lines
2.1 KiB
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 QUAL3 (MXND, MXCORN, MLN, NCORN, LCORN, LNODES, ICOMB,
|
|
& ANGLE, LXN, ITEST, LTEST, QUAL, POSBL3, POSBL4, ERR)
|
|
C***********************************************************************
|
|
|
|
C SUBROTINE QUAL3 = CHECKS THE QUALITY OF A TRIANGLE INTERPRETATION
|
|
|
|
C***********************************************************************
|
|
|
|
DIMENSION LNODES (MLN, MXND), ANGLE (MXND), LCORN (MXCORN)
|
|
DIMENSION ICOMB (MXCORN), ITEST (3), LTEST (3), LXN (4, MXND)
|
|
|
|
LOGICAL ERR, POSBL3, POSBL4
|
|
|
|
REAL NICKS, NICKC
|
|
|
|
ERR = .FALSE.
|
|
|
|
C ASSUME PERFECT QUALITY
|
|
|
|
QUAL = 0.
|
|
POSBL3 = .FALSE.
|
|
POSBL4 = .FALSE.
|
|
|
|
C FIRST GET THE INTERVAL LENGTHS TO THE CHOSEN CORNERS
|
|
|
|
ILEN = 3
|
|
CALL SPACED (MXND, MXCORN, MLN, ILEN, NCORN, LCORN, LNODES, ICOMB,
|
|
& ITEST, LTEST, ERR)
|
|
IF (ERR) GOTO 110
|
|
|
|
C SEE IF A TRIANGLE INTERPRETATION IS POSSIBLE WITH THESE INTERVALS
|
|
|
|
MMAX = MAX0 (LTEST(1), LTEST(2), LTEST(3))
|
|
IF (LTEST(1) .EQ. MMAX) THEN
|
|
IBIG = LTEST(1)
|
|
ISUM = LTEST(2) + LTEST(3)
|
|
ELSEIF (LTEST(2) .EQ. MMAX) THEN
|
|
IBIG = LTEST(2)
|
|
ISUM = LTEST(3) + LTEST(1)
|
|
ELSE
|
|
IBIG = LTEST(3)
|
|
ISUM = LTEST(1) + LTEST(2)
|
|
ENDIF
|
|
|
|
IDIFF = ISUM - IBIG
|
|
|
|
IF (IDIFF .LT. 0) THEN
|
|
RETURN
|
|
ELSEIF (IDIFF .LT. 2) THEN
|
|
POSBL4 = .TRUE.
|
|
ELSE
|
|
POSBL3 = .TRUE.
|
|
ENDIF
|
|
|
|
C NOW ADD UP THE NICKS FOR BAD ANGLES AND BAD CONNECTIVITY
|
|
|
|
DO 100 I = 1, NCORN
|
|
NODE = LCORN (I)
|
|
IF (ICOMB (I) .EQ. 1) THEN
|
|
QUAL = QUAL + NICKC (ANGLE (NODE), LXN (1, NODE))
|
|
ELSE
|
|
QUAL = QUAL + NICKS (ANGLE (NODE), LXN (1, NODE))
|
|
ENDIF
|
|
100 CONTINUE
|
|
|
|
IF (POSBL4) QUAL = QUAL * 1.3
|
|
MMIN = MIN0 (LTEST(1), LTEST(2), LTEST(3))
|
|
IF (MMIN.EQ.1) QUAL = QUAL * 1.3
|
|
|
|
110 CONTINUE
|
|
|
|
RETURN
|
|
|
|
END
|
|
|