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.

95 lines
3.1 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 MIRSS (IDFRO, IDBCK, NLINK,
& NSSUR, NSSFRO, NSSBCK, LTSES3)
C=======================================================================
C --*** MIRSS *** (GEN3D) Modifies sideset node order to account
C for mirroring about axes
C -- Written by Greg Sjaardema - revised 02/10/89
C -- Modified from WRESS written by Amy Gilkey
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 -- NSSUR - IN - the number of nodes in the surface side set
C -- NSSFRO - IN - the nodes in the front surface side set
C -- NSSBCK - IN - the nodes in the back surface side set
C -- LTSES3 - IN - the sides for all 3D sets
C --
C --Common Variables:
C -- Uses NUMESS of /DBNUMS/
C -- Uses LESSNO of /DBNUM3/
C --
INCLUDE 'gs_dbnums.blk'
INCLUDE 'gs_dbnum3.blk'
INTEGER IDFRO(0:*)
INTEGER IDBCK(0:*)
INTEGER NSSFRO(NLINK,*), NSSBCK(NLINK,*)
INTEGER LTSES3(*)
LOGICAL ANYESS
NFRO = IDFRO(0)
NBCK = IDBCK(0)
ANYESS = (NFRO .GT. 0) .OR. (NBCK .GT. 0) .OR. (NUMESS .GT. 0)
C --Write 3D
IF (ANYESS) THEN
c$$$ IF (NLINK .EQ. 4) THEN
c$$$ INCR = 2
c$$$ ELSE IF (NLINK .EQ. 8 .OR. NLINK .EQ. 9) THEN
c$$$ INCR = 3
c$$$ END IF
c$$$C --Sidesets on 'side' of shell mesh (original 2d sidesets) - lines 2 nodes
c$$$ DO 10 NL = 1, LESSNO, INCR
c$$$ LNTMP = LTNES3(NL)
c$$$ LTNES3(NL) = LTNES3(NL+1)
c$$$ LTNES3(NL+1) = LNTMP
c$$$ 10 CONTINUE
C --Sidesets on front surface of shell mesh - faces 4 nodes
IF (MOD(NSSUR, NLINK) .NE. 0) THEN
CALL PRTERR('FATAL',
* 'Incorrect front surface node list in mirss')
STOP 'MIRSS'
END IF
NFACE = NSSUR / NLINK
DO 20 NL = 1, NFACE
LNTMP = NSSFRO(2, NFACE)
NSSFRO(2, NFACE) = NSSFRO(4, NFACE)
NSSFRO(4, NFACE) = LNTMP
LNTMP = NSSBCK(2, NFACE)
NSSBCK(2, NFACE) = NSSBCK(4, NFACE)
NSSBCK(4, NFACE) = LNTMP
20 CONTINUE
IF (NLINK .EQ. 8 .OR. NLINK .EQ. 9) THEN
DO 30 NL = 1, NFACE
LNTMP = NSSFRO(5, NFACE)
NSSFRO(5, NFACE) = NSSFRO(8, NFACE)
NSSFRO(8, NFACE) = LNTMP
LNTMP = NSSFRO(6, NFACE)
NSSFRO(6, NFACE) = NSSFRO(7, NFACE)
NSSFRO(7, NFACE) = LNTMP
LNTMP = NSSBCK(5, NFACE)
NSSBCK(5, NFACE) = NSSBCK(8, NFACE)
NSSBCK(8, NFACE) = LNTMP
LNTMP = NSSBCK(6, NFACE)
NSSBCK(6, NFACE) = NSSBCK(7, NFACE)
NSSBCK(7, NFACE) = LNTMP
30 CONTINUE
END IF
END IF
RETURN
END