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.
 
 
 
 
 
 

68 lines
2.0 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 GMDIS3 (COORD, DIRCOS, MASSLV, NIQSLV, TDIS,
* ITMP, NIQM, NIQS, DMAX, NUMNP)
DIMENSION COORD (NUMNP,*), DIRCOS(5,*), MASSLV(2,*), NIQSLV(*),
* TDIS(3,*), ITMP(*)
C... PICK MATCH BASED ON CLOSEST DISTANCE
DO 30 IMAS = 1, NIQM
X1 = COORD (MASSLV(1, IMAS),1)
Y1 = COORD (MASSLV(1, IMAS),2)
Z1 = COORD (MASSLV(1, IMAS),3)
DO 10 ISLV = 1, NIQS
X0 = COORD (NIQSLV(ISLV),1)
Y0 = COORD (NIQSLV(ISLV),2)
Z0 = COORD (NIQSLV(ISLV),3)
TDIS(3,ISLV) = (X0 - X1)**2 + (Y0 - Y1)**2 + (Z0 - Z1)**2
10 CONTINUE
TMIN = DMAX
NMIN = 0
DO 20 ISLV = 1, NIQS
IF (TDIS(3,ISLV) .LE. TMIN) THEN
TMIN = TDIS(3,ISLV)
NMIN = ISLV
END IF
20 CONTINUE
IF (NMIN .NE. 0) THEN
MASSLV(2,IMAS) = NIQSLV(NMIN)
DIRCOS(5,IMAS) = TDIS(3,NMIN)
ELSE
MASSLV(2,IMAS) = 0
END IF
30 CONTINUE
CALL CULL3 (DIRCOS, MASSLV, NIQM)
C ... INITIALIZE TANGENT AND NORMAL DISTANCES
DO 40 ISEG = 1, NIQM
X1 = COORD (MASSLV(1, ISEG),1)
Y1 = COORD (MASSLV(1, ISEG),2)
Z1 = COORD (MASSLV(1, ISEG),3)
X0 = COORD (MASSLV(2, ISEG),1)
Y0 = COORD (MASSLV(2, ISEG),2)
Z0 = COORD (MASSLV(2, ISEG),3)
C DIRCOS is average unit direction vector from surfaces at node
DCS1 = DIRCOS (1, ISEG)
DCS2 = DIRCOS (2, ISEG)
DCS3 = DIRCOS (3, ISEG)
T = -( DCS1 * (X1-X0) + DCS2 * (Y1-Y0) + DCS3 * (Z1-Z0) )
DIRCOS(4,ISEG) = T
DIRCOS(5,ISEG) = SQRT( ABS(DIRCOS(5,ISEG) - T**2) )
40 CONTINUE
RETURN
END