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.
145 lines
5.0 KiB
145 lines
5.0 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 DBISTE (NDB, OPTION, ISTEP,
|
||
|
& NVARGL,
|
||
|
* NVARNP, NUMNP,
|
||
|
* NVAREL, NELBLK, NUMELB, ISEVOK, IDELB,
|
||
|
* NVARNS, NUMNPS, NNNPS, ISNSOK, IDNPS,
|
||
|
* NVARSS, NUMESS, NEESS, ISSSOK, IDESS,
|
||
|
* TIME, VARGL, VARNP, VAREL, VARNS, VARSS, *)
|
||
|
C=======================================================================
|
||
|
C --*** DBISTE *** (EXOLIB) Read database variables for one time step
|
||
|
C -- Written by Amy Gilkey - revised 10/14/87
|
||
|
C --
|
||
|
C --DBISTE reads the database global, nodal, and element variables
|
||
|
C --for one time step.
|
||
|
C --
|
||
|
C --Parameters:
|
||
|
C -- NDB - IN - the database number
|
||
|
C -- OPTION - IN - ' ' to not store, '*' to store all, else store options:
|
||
|
C -- 'G' to store global variables
|
||
|
C -- 'E' to store element variables
|
||
|
C -- 'N' to store nodal variables
|
||
|
C -- 'M' to store nodeset variables
|
||
|
C -- 'S' to store sideset variables
|
||
|
C -- ISTEP - IN - the time step number
|
||
|
C -- NVARGL - IN - the number of global variables
|
||
|
C -- NVARNP - IN - the number of nodal variables
|
||
|
C -- NUMNP - IN - the number of nodes
|
||
|
C -- NVAREL - IN - the number of element variables
|
||
|
C -- NELBLK - IN - the number of element blocks
|
||
|
C -- NUMELB - IN - the number of elements per block
|
||
|
C -- ISEVOK - IN - the element block variable truth table;
|
||
|
C -- variable i of block j exists iff ISEVOK(j,i)
|
||
|
C -- TIME - OUT - the time step time
|
||
|
C -- VARGL - OUT - the global variables for the time step (if OPTION)
|
||
|
C -- VARNP - OUT - the nodal variables for the time step (if OPTION)
|
||
|
C -- VAREL - OUT - the element variables for the time step (if OPTION)
|
||
|
C -- * - return statement if error encountered, including end-of-file;
|
||
|
C -- message is printed
|
||
|
C --
|
||
|
C --Database must be positioned in front of time step upon entry;
|
||
|
C --upon exit positioned after time step.
|
||
|
|
||
|
include 'exodusII.inc'
|
||
|
INTEGER NDB
|
||
|
CHARACTER*(*) OPTION
|
||
|
INTEGER ISTEP
|
||
|
INTEGER NVARGL
|
||
|
INTEGER NVARNP, NUMNP
|
||
|
INTEGER NVAREL, NELBLK, NUMELB(*), IDELB(*), ISEVOK(*)
|
||
|
INTEGER NVARNS, NUMNPS, NNNPS(*), IDNPS(*), ISNSOK(*)
|
||
|
INTEGER NVARSS, NUMESS, NEESS(*), IDESS(*), ISSSOK(*)
|
||
|
REAL TIME
|
||
|
REAL VARGL(*)
|
||
|
REAL VARNP(*)
|
||
|
REAL VAREL(*)
|
||
|
REAL VARNS(*)
|
||
|
REAL VARSS(*)
|
||
|
|
||
|
CHARACTER*80 ERRMSG
|
||
|
|
||
|
C --Read step time
|
||
|
CALL EXGTIM (NDB, ISTEP, TIME, IERR)
|
||
|
|
||
|
C --Read global variables
|
||
|
|
||
|
IF ((OPTION .EQ. '*') .OR. (INDEX (OPTION, 'G') .GT. 0)) THEN
|
||
|
if (nvargl .gt. 0) then
|
||
|
call exggv (ndb, istep, nvargl, vargl, ierr)
|
||
|
if (ierr .lt. 0) goto 180
|
||
|
end if
|
||
|
END IF
|
||
|
|
||
|
C --Read nodal variables
|
||
|
|
||
|
IF ((OPTION .EQ. '*') .OR. (INDEX (OPTION, 'N') .GT. 0)) THEN
|
||
|
ioff = 1
|
||
|
do 150 ivar = 1, nvarnp
|
||
|
call exgnv (ndb, istep, ivar, numnp, varnp(ioff), ierr)
|
||
|
if (ierr .lt. 0) goto 190
|
||
|
ioff = ioff + numnp
|
||
|
150 continue
|
||
|
END IF
|
||
|
|
||
|
C --Read element variables
|
||
|
IF ((OPTION .EQ. '*') .OR. (INDEX (OPTION, 'E') .GT. 0)) THEN
|
||
|
CALL DBIST2 (NDB, 'E', ISTEP, NVAREL, MAX(NVAREL,1), NELBLK,
|
||
|
& MAX(NELBLK,1), ISEVOK, VAREL, NUMELB,
|
||
|
& IDELB, IVAR, IELB, *200)
|
||
|
END IF
|
||
|
|
||
|
C --Read nodeset variables
|
||
|
IF ((OPTION .EQ. '*') .OR. (INDEX (OPTION, 'M') .GT. 0)) THEN
|
||
|
CALL DBIST2 (NDB, 'M', ISTEP, NVARNS, MAX(NVARNS,1), NUMNPS,
|
||
|
& MAX(NUMNPS,1), ISNSOK, VARNS, NNNPS,
|
||
|
& IDNPS, IVAR, IELB, *210)
|
||
|
END IF
|
||
|
|
||
|
C --Read sideset variables
|
||
|
IF ((OPTION .EQ. '*') .OR. (INDEX (OPTION, 'S') .GT. 0)) THEN
|
||
|
CALL DBIST2 (NDB, 'S', ISTEP, NVARSS, MAX(NVARSS,1), NUMESS,
|
||
|
& MAX(NUMESS,1), ISSSOK, VARSS, NEESS,
|
||
|
& IDESS, IVAR, IELB, *220)
|
||
|
END IF
|
||
|
|
||
|
RETURN
|
||
|
|
||
|
180 CONTINUE
|
||
|
WRITE (ERRMSG, '(A, I8)', IOSTAT=IDUM)
|
||
|
& 'GLOBAL VARIABLES for TIME STEP', ISTEP
|
||
|
GOTO 240
|
||
|
|
||
|
190 CONTINUE
|
||
|
WRITE (ERRMSG, '(A, I8, A, I8)', IOSTAT=IDUM)
|
||
|
& 'NODAL VARIABLE', IVAR, ' for TIME STEP', ISTEP
|
||
|
GOTO 240
|
||
|
|
||
|
200 CONTINUE
|
||
|
WRITE (ERRMSG, '(A, I8, A, I8, A, I8)', IOSTAT=IDUM)
|
||
|
& 'ELEMENT VARIABLE', IVAR, ' of BLOCK', IELB,
|
||
|
& ' for TIME STEP', ISTEP
|
||
|
GOTO 240
|
||
|
|
||
|
210 CONTINUE
|
||
|
WRITE (ERRMSG, '(A, I8, A, I8, A, I8)', IOSTAT=IDUM)
|
||
|
& 'NODESET VARIABLE', IVAR, ' of NODESET', IELB,
|
||
|
& ' for TIME STEP', ISTEP
|
||
|
GOTO 240
|
||
|
|
||
|
220 CONTINUE
|
||
|
WRITE (ERRMSG, '(A, I8, A, I8, A, I8)', IOSTAT=IDUM)
|
||
|
& 'SIDESET VARIABLE', IVAR, ' of SIDESET', IELB,
|
||
|
& ' for TIME STEP', ISTEP
|
||
|
GOTO 240
|
||
|
|
||
|
240 CONTINUE
|
||
|
CALL DBERR (IERR, ERRMSG)
|
||
|
RETURN 1
|
||
|
END
|