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.

123 lines
3.9 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 NEWESS (IDFRO, IDBCK, NSSUR, NLINK, LINK,
& ISSFRO, ISSBCK, NSSFRO, NSSBCK)
C=======================================================================
C --*** NEWESS *** (GEN3D) Calculate 3D side sets
C -- Written by Amy Gilkey - revised 01/12/88
C --
C --NEWESS calculates the side set information for the 3D database.
C --The elements in the front and back side sets are not calculated
C --(since they are easily derived), and they are not included in the
C --length tally. The nodes in the front and back node sets are
C --calculated, and their number is returned, but they are not included
C --in the length tally.
C --
C --Parameters:
C -- IDFRO - IN - ids for front surface side sets; (0) = length
C -- IDBCK - IN - ids for back surface side sets; (0) = length
C -- LINK - IN - the connectivity for the 2D elements
C -- ISSFRO - OUT - the elements in the front surface side set
C -- ISSBCK - OUT - the elements in the back surface side set
C -- NSSUR - OUT - the number of nodes in the surface side set
C -- NSSFRO - OUT - the nodes in the front surface side set
C -- NSSBCK - OUT - the nodes in the back surface side set
C --
C --Common Variables:
C -- Uses NDBOUT of /DBASE/
C -- Uses NUMESS, LESSEL, LESSNL of /DBNUMS/
C -- Sets LESSEO, LESSNO of /DBNUM3/
C -- Uses NNREPL, NEREPL, DIM3 of /PARAMS/
INCLUDE 'gs_dbase.blk'
INCLUDE 'gs_dbnums.blk'
INCLUDE 'gs_dbnum3.blk'
INCLUDE 'gs_params.blk'
INTEGER IDFRO(0:*)
INTEGER IDBCK(0:*)
INTEGER LINK(NLINK,*)
INTEGER ISSFRO(NUMEL), ISSBCK(NUMEL)
INTEGER NSSFRO(*), NSSBCK(*)
INTEGER LTMP(9)
NFRO = IDFRO(0)
NBCK = IDBCK(0)
C --Side set ids - unchanged
CONTINUE
C --Side set elements - unchanged
C --Side set nodes and distribution factors - unchanged
C --Number of elements in each set
C --Number of nodes in each set
C --Number of elements in all sets
C --Number of nodes in all sets
C --Set up elements and nodes for front and back side sets
NFRO = IDFRO(0)
NBCK = IDBCK(0)
NSSUR = 0
IF ((NFRO .GT. 0) .OR. (NBCK .GT. 0)) THEN
N = 0
DO 150 JEL = 1, NUMEL
IF (NFRO .GT. 0) ISSFRO(JEL) = JEL
IF (NBCK .GT. 0) ISSBCK(JEL) = JEL
DO 140 I = 1, NLINK
LTMP(I) = LINK(I,JEL)
140 CONTINUE
IF (NFRO .GT. 0) THEN
NSSFRO(N+1) = LTMP(1)
NSSFRO(N+2) = LTMP(2)
NSSFRO(N+3) = LTMP(3)
NSSFRO(N+4) = LTMP(4)
END IF
C ... NOTE: Back sidesets must be in reverse order
IF (NBCK .GT. 0) THEN
NSSBCK(N+1) = LTMP(4)
NSSBCK(N+2) = LTMP(3)
NSSBCK(N+3) = LTMP(2)
NSSBCK(N+4) = LTMP(1)
END IF
IF (NLINK .EQ. 8 .OR. NLINK .EQ. 9) THEN
IF (NFRO .GT. 0) THEN
NSSFRO(N+5) = LTMP(5)
NSSFRO(N+6) = LTMP(6)
NSSFRO(N+7) = LTMP(7)
NSSFRO(N+8) = LTMP(8)
END IF
C ... NOTE: Back sidesets must be in reverse order
IF (NBCK .GT. 0) THEN
NSSBCK(N+5) = LTMP(7)
NSSBCK(N+6) = LTMP(6)
NSSBCK(N+7) = LTMP(5)
NSSBCK(N+8) = LTMP(8)
END IF
IF (NLINK .EQ. 9) THEN
IF (NFRO .GT. 0) NSSFRO(N+9) = LTMP(9)
IF (NBCK .GT. 0) NSSBCK(N+9) = LTMP(9)
END IF
END IF
N = N + NLINK
150 CONTINUE
NSSUR = N
END IF
RETURN
END