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.
 
 
 
 
 
 

113 lines
3.7 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
SUBROUTINE CAVITY (A, CRD, IDESS, NEESS, NNESS, IPEESS, IPNESS,
* LTEESS, LTNESS, FACESS, DISP, NUMNP, NDIM, NUMESS,
* TIME, ITMSEL, TITLE, CENT, CENTER)
include 'nu_io.blk'
DIMENSION A(*), CRD(NUMNP,NDIM), IDESS(*), NEESS(*),
* NNESS(*), IPEESS(*), IPNESS(*), LTEESS(*), LTNESS(*),
* FACESS(*), TIME(*), DISP(NUMNP,NDIM), CENT(3)
LOGICAL ITMSEL(*)
CHARACTER*80 TITLE
include 'nu_logs.blk'
include 'nu_ptim.blk'
include 'nu_cav.blk'
LOGICAL ERROR, CENTER
CALL GETCAV (ERROR, IDESS, NUMESS)
IF (ERROR) RETURN
TVOL = 0.0
DO 10 NCAV = 1, NUMCAV
IFLG = IFND(NCAV)
IPTR = IPNESS(IFLG)
IF (NDIM .EQ. 3) THEN
CALL VOL3D( CRD, LTNESS(IPTR), NEESS(IFLG), VOLUME,
* NDIM, NUMESS, CENT, NUMNP, CENTER)
ELSE
CALL VOL2D( CRD, LTNESS(IPTR), NEESS(IFLG), VOLUME,
* NDIM, NUMESS, AXI, CENT, NUMNP, CENTER)
END IF
TVOL = TVOL + VOLUME
10 CONTINUE
DO 20 IO=IOMIN, IOMAX
WRITE (IO,30) (ICAV(I),I=1,NUMCAV)
IF (NDIM .EQ. 2) THEN
WRITE (IO, 40) CENT(1),CENT(2)
ELSE
WRITE (IO, 50) CENT(1),CENT(2),CENT(3)
END IF
WRITE (IO,60) TVOL
20 CONTINUE
30 FORMAT (/' Cavity Flag(s): ',8I8)
40 FORMAT ( ' Apex at X =',1PE15.8,', Y =',1PE15.8)
50 FORMAT ( ' Apex at X =',1PE15.8,', Y =',1PE15.8,', Z =',1PE15.8)
60 FORMAT (/' Undeformed Volume of Cavity is ',1PE15.8)
C ... REWIND EXODUS FILE TO BEGINNING OF TIMESTEPS
IF (EXODUS .AND. ISDIS) THEN
TIMEL = STMIN
CALL GETDSP (CRD, DISP, NDIM, NUMNP, TIME, ITMSEL, 'R', ISTAT)
IF (ISTAT .NE. 0) GO TO 140
DO 70 IO=IOMIN, IOMAX
WRITE (IO, 80)
70 CONTINUE
80 FORMAT (/,
* 4X,' Cavity Total',
* ' Timestep Rate of',/
* 4X,'Time Volume Change',
* ' Change Change',/
* 4X,'---- ------ ------',
* ' -------- -------')
DELLAS = 0.0
90 CONTINUE
CALL GETDSP (CRD, DISP, NDIM, NUMNP, TIME, ITMSEL, 'S', ISTAT)
IF (ISTAT .NE. 0) GO TO 140
DELVOL = 0.0
DO 100 NCAV = 1, NUMCAV
IFLG = IFND(NCAV)
IPTR = IPNESS(IFLG)
C NOTE: Positive delcav = shrink in cavity volume
IF (NDIM .EQ. 3) THEN
CALL DVOL3D(CRD, DISP, LTNESS(IPTR),
* NEESS(IFLG), DELCAV, NDIM, NUMNP)
ELSE
CALL DVOL2D(CRD, DISP, LTNESS(IPTR),
* NEESS(IFLG), DELCAV, NDIM, AXI, NUMNP)
END IF
DELVOL = DELVOL + DELCAV
100 CONTINUE
DELDEL = DELVOL - DELLAS
IF (TREAD .EQ. TIMEL) THEN
DO 110 IO=IOMIN, IOMAX
WRITE (IO, 130) TREAD, TVOL-DELVOL, -DELVOL,
* -DELDEL
110 CONTINUE
ELSE
DELRAT = DELDEL / (TREAD - TIMEL)
DO 120 IO=IOMIN, IOMAX
WRITE (IO, 130) TREAD, TVOL-DELVOL, -DELVOL,
* -DELDEL, -DELRAT
120 CONTINUE
END IF
130 FORMAT (1X,5(1PE15.8,2X))
DELLAS = DELVOL
TIMEL = TREAD
GO TO 90
END IF
140 CONTINUE
CALL INIINT (NUMCAV, 0, ICAV)
NUMCAV = 0
RETURN
END