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.

69 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
C=======================================================================
SUBROUTINE DONRM2 (NODES, ISBND, COSIN, NUMEL, LINK, X, Y,
$ NLINK, NUMNP)
C=======================================================================
integer NODES(*)
logical isbnd(*)
REAL X(*), Y(*), COSIN(2,*)
INTEGER LINK(NLINK, *)
parameter (tol = 1.0e-6)
do 10 inod = 1, numnp
nodes(inod) = 0
10 continue
do 30 ilnk = 1, nlink
do 20 iel = 1, numel
nodes(link(ilnk, iel)) = 1
20 continue
30 continue
do 60 iel = 1, numel
do 50 iseg=1,nlink
if (iseg .eq. nlink) then
isegp1 = 1
else
isegp1 = iseg + 1
end if
XI = x( link(ISEG,iel) )
YI = y( link(ISEG,iel) )
XJ = x( link(ISEGp1,iel) )
YJ = y( link(isegp1,iel) )
DX = XI - XJ
DY = YI - YJ
RMAG = SQRT ( DX**2 + DY**2)
cosin(1, link(iseg, iel)) = cosin(1, link(iseg, iel)) -
$ dy / rmag
cosin(2, link(iseg, iel)) = cosin(2, link(iseg, iel)) +
$ dx / rmag
cosin(1, link(isegp1, iel)) = cosin(1, link(isegp1, iel)) -
$ dy / rmag
cosin(2, link(isegp1, iel)) = cosin(2, link(isegp1, iel)) +
$ dx / rmag
50 continue
60 continue
do 70 inod = 1, numnp
if (nodes(inod) .ne. 0) then
if (abs(cosin(1, inod)) .gt. tol .or.
$ abs(cosin(2, inod)) .gt. tol) then
nodes(inod) = -1
isbnd(inod) = .TRUE.
end if
end if
70 continue
RETURN
END