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.
 
 
 
 
 
 

60 lines
1.6 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 PENDIS (SCORD, FCORD, DIST, NDIM, NNOD)
DIMENSION SCORD(*), FCORD(NDIM, NNOD)
IF (NDIM .EQ. 3) THEN
C -- DETERMINE PLANE EQUATION
XI = FCORD(1, 1)
YI = FCORD(2, 1)
ZI = FCORD(3, 1)
XJ = FCORD(1, 2)
YJ = FCORD(2, 2)
ZJ = FCORD(3, 2)
XK = FCORD(1, 3)
YK = FCORD(2, 3)
ZK = FCORD(3, 3)
XL = FCORD(1, 4)
YL = FCORD(2, 4)
ZL = FCORD(3, 4)
A = (YK - YI) * (ZL - ZJ) - (ZK - ZI) * (YL - YJ)
B = (ZK - ZI) * (XL - XJ) - (XK - XI) * (ZL - ZJ)
C = (XK - XI) * (YL - YJ) - (YK - YI) * (XL - XJ)
RMAG = SQRT (A**2 + B**2 + C**2)
A = A / RMAG
B = B / RMAG
C = C / RMAG
D = A * FCORD(1,1) + B * FCORD(2,1) + C * FCORD(3,1)
DIST = ABS(A * SCORD(1) + B * SCORD(2) + C * SCORD(3) - D) /
* SQRT(A**2 + B**2 + C**2)
ELSE IF (NDIM .EQ. 2) THEN
A = FCORD(1,2) - FCORD(1,1)
B = FCORD(2,2) - FCORD(2,1)
X1 = FCORD(1,1)
Y1 = FCORD(2,1)
X0 = SCORD(1)
Y0 = SCORD(2)
T = -1. * (A * (X1 - X0) + B * (Y1 - Y0)) / (A**2 + B**2)
X = X1 + A * T
Y = Y1 + B * T
DIST = SQRT((X - X0)**2 + (Y - Y0)**2)
END IF
RETURN
END