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.
 
 
 
 
 
 

124 lines
4.3 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 WRESS (A, IA, IDFRO, IDBCK,
& ISSFRO, ISSBCK, NSSUR, NSSFRO, NSSBCK,
& IDESS, NEES3, NNES3, IXEES3, IXNES3, LTEES3, LTSSS3, FACES3, *)
C=======================================================================
C --*** WRESS *** (GEN3D) Write 3D node sets
C -- Written by Amy Gilkey - revised 05/05/86
C --
C --WRESS writes the side set information for the 3D database.
C --Calculations have been done elsewhere.
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 -- ISSFRO - IN - the elements in the front surface side set
C -- ISSBCK - IN - the elements in the back surface side set
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 -- IDESS - IN - the ids for each 2D set
C -- NEES3 - IN - the number of elements for each 3D set
C -- NNES3 - IN - the number of nodes for each 3D set
C -- IXEES3 - IN - the index of the first element for each 3D set
C -- IXNES3 - IN - the index of the first node for each 3D set
C -- LTEES3 - IN - the elements for all 3D sets
C -- LTSSS3 - IN - the element sides for all 3D sets
C -- FACES3 - IN - the distribution factors for all 3D sets
C --
C --Common Variables:
C -- Uses NDBOUT of /DBASE/
C -- Uses NUMESS, LESSEL, LESSNL of /DBNUMS/
C -- Uses LESSEO, LESSNO of /DBNUM3/
C -- Uses NNREPL, NEREPL of /PARAMS/
include 'exodusII.inc'
INCLUDE 'gs_dbase.blk'
INCLUDE 'gs_dbnums.blk'
INCLUDE 'gs_dbnum3.blk'
REAL A(*)
INTEGER IA(*)
INTEGER IDFRO(0:*)
INTEGER IDBCK(0:*)
INTEGER ISSFRO(NUMEL), ISSBCK(NUMEL)
INTEGER NSSFRO(*), NSSBCK(*)
INTEGER IDESS(*)
INTEGER NEES3(*)
INTEGER NNES3(*)
INTEGER IXEES3(*)
INTEGER IXNES3(*)
INTEGER LTEES3(*)
INTEGER LTSSS3(*)
REAL FACES3(*)
LOGICAL ANYESS
NFRO = IDFRO(0)
NBCK = IDBCK(0)
ANYESS = (NFRO .GT. 0) .OR. (NBCK .GT. 0) .OR. (NUMESS .GT. 0)
C --Write 3D Sidesets
IF (.NOT. ANYESS) RETURN
C Each sideset has numel elements and faces, and NSSUR distribution factors
if ((nfro .gt. 0) .or. (nbck .gt. 0)) then
C ... Allocate array to store side data for front and/or back sidesets
call mdrsrv('LSTSID', klst, numel)
C ... Allocate array for distribution factors
call mdrsrv('DISTF', kdistf, nssur)
call mdstat(nerr, mem)
if (nerr .gt. 0) go to 400
call inirea(nssur, 1.0, a(kdistf))
C ... Write Front Sidesets
if (nfro .gt. 0) then
C ... Fill the side list
call iniint(numel, 1, ia(klst))
end if
do 100 i=1, nfro
call expsp (ndbout, idfro(i), numel, nssur, ierr)
call expss (ndbout, idfro(i), issfro, ia(klst), ierr)
call expssd (ndbout, idfro(i), a(kdistf), ierr)
100 continue
C ... Write Back Sidesets
if (nbck .gt. 0) then
C ... Fill the side list
call iniint(numel, 2, ia(klst))
end if
do 200 i=1, nbck
call expsp (ndbout, idbck(i), numel, nssur, ierr)
call expss (ndbout, idbck(i), issbck, ia(klst), ierr)
call expssd (ndbout, idbck(i), a(kdistf), ierr)
200 continue
call mddel('LSTSID')
call mddel('DISTF')
end if
C ... Write 2D-generated Sidesets
C ... Fix the side list. Assuming input is quads, then the
C following should hold newside = oldside + 2
do 300 i=1, lesseo
ltsss3(i) = ltsss3(i) + 2
300 continue
do 310 i=1, numess
call expsp (ndbout, idess(i), nees3(i), nnes3(i), ierr)
call expss (ndbout, idess(i), ltees3(ixees3(i)),
& ltsss3(ixees3(i)), ierr)
call expssd (ndbout, idess(i), faces3(ixnes3(i)), ierr)
310 continue
RETURN
400 CONTINUE
RETURN 1
END