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.

100 lines
2.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
SUBROUTINE STRAN(ISRCHR,NISR,SOLEA,SOLEB,
& IDBLKA,IDBLKB,
& ITT,iblk,TIMES,CENTER,
& INSUB,ICOMPL,
& XB,YB,ZB,ICONB,DUME)
include 'aexds1.blk'
include 'aexds2.blk'
include 'bmesh.blk'
include 'ebbyeb.blk'
include 'ex2tp.blk'
include 'steps.blk'
include 'tapes.blk'
DIMENSION SOLEB(NUMEBB,*),SOLEA(NUMEBA,*),ISRCHR(NISR,*),
& ITT(NVAREL,*),TIMES(*),CENTER(NUMEBB,*)
DIMENSION XB(*),YB(*),ZB(*),XX(27),YY(27),ZZ(27),ICONB(NELNDB,*)
DIMENSION DUME(*)
IF (ISTEP .EQ. -1)THEN
NTM = NTIMES
ELSE
NTM = 1
END IF
DO 5 IST = 1, NTM
IF (ISTEP .EQ. -1)THEN
ISTP = IST
ELSE
ISTP = ISTEP
END IF
DO 10 IVAR = 1, NVAREL
IF (ITT(IVAR,iblk) .EQ. 0)GO TO 10
C If first time into subroutine for this element block,
C initialize the SOLEB array
C If not first time into subroutine for this element block
C retrieve SOLEB from storage in EXODUS
IF (INSUB .EQ. 1)THEN
CALL INIELT(SOLEB,IVAR,TIMES,ISTP,IDBLK,CENTER,DUME)
ELSE
CALL EXGEV(NTP4EX,IST,IVAR,IDBLKB,NUMEBB,SOLEB(1,IVAR),
& IERR)
END IF
CALL EXGEV(NTP2EX,ISTP,IVAR,IDBLKA,NUMEBA,SOLEA(1,IVAR),IERR)
DO 20 IELB = 1, NUMEBB
IELA = ISRCHR(1,IELB)
IF (IELA .NE. 0)THEN
SOLEB(IELB,IVAR) = SOLEA(IELA,IVAR)
END IF
20 CONTINUE
C If there is more searching to do (i.e. many blocks to one)
C use EXODUS as temporary storage
C don't bother to perform needed adjustments yet
IF (ICOMPL .NE. 1)THEN
CALL EXPEV(NTP4EX,IST,IVAR,IDBLKB,NUMEBB,SOLEB(1,IVAR),
& IERR)
ELSE
C Make needed adjustments to element variable data and
C write element vars out to EXODUS data base
C ELMASS is special
IF (NAMVAR(NVARGP+IVAR)(1:6) .EQ. 'ELMASS')THEN
C ELMASS was changed to nodal density prior to processing.
C need to go back from density to element mass now
NNODES = 4
DO 100 IEL = 1, NUMEBB
DO 105 I = 1, NNODES
XX(I) = XB(ICONB(I,IEL))
YY(I) = YB(ICONB(I,IEL))
ZZ(I) = ZB(ICONB(I,IEL))
105 CONTINUE
CALL VOL(ITYPE,XX,YY,ZZ,VOLUME)
SOLEB(IEL,IVAR) = SOLEB(IEL,IVAR) * VOLUME
100 CONTINUE
END IF
CALL EXPEV(NTP4EX,IST,IVAR,IDBLKB,NUMEBB,SOLEB(1,IVAR),
& IERR)
END IF
10 CONTINUE
5 CONTINUE
RETURN
END