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.
122 lines
3.9 KiB
122 lines
3.9 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
|
|
|
|
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
|
|
|