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.
114 lines
3.7 KiB
114 lines
3.7 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 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
|