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.
99 lines
3.7 KiB
99 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
|
|
|
|
C=======================================================================
|
|
SUBROUTINE WRSTEP (NTXT, ISTEP, NELBLK, TIME,
|
|
& NVARGL, NVARNP, NVAREL, NUMNP, IDELB, NUMELB, ISEVOK,
|
|
& VARGL, VARNP, VAREL, NGLDM, NNPDM, NELDM, IOERR)
|
|
C=======================================================================
|
|
|
|
C --*** WRSTEP *** (TXTEXO) Write database variables for one time step
|
|
C -- Written by Amy Gilkey - revised 03/02/88
|
|
C -- Modified for ExodusIIv2 database format
|
|
C --
|
|
C --WRSTEP writes the database history, global, nodal, and element variables
|
|
C --for one time step.
|
|
C --
|
|
C --Parameters:
|
|
C -- NTXT - IN - the text file
|
|
C -- ISTEP - IN - the time step number
|
|
C -- NELBLK - IN - the number of element blocks
|
|
C -- TIME - IN - the time step time
|
|
C -- NVARGL - IN - the number of global variables
|
|
C -- NVARNP - IN - the number of nodal variables
|
|
C -- NVAREL - IN - the number of element variables
|
|
C -- NUMNP - IN - the number of nodes
|
|
C -- IDELB - IN - element block ID's
|
|
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 -- VARGL - IN - the global variables for the time step
|
|
C -- VARNP - IN - the nodal variables for the time step
|
|
C -- VAREL - IN - the element variables for the time step
|
|
C -- NGLDM - IN - dimension of global variable array
|
|
C -- NNPDM - IN - dimension of nodal variable array
|
|
C -- NELDM - IN - dimension of element variable array
|
|
C -- IOERR - IN/OUT - I/O error flag
|
|
|
|
INTEGER NTXT, ISTEP, NELBLK
|
|
REAL TIME
|
|
INTEGER NVARGL, NVARNP, NVAREL, NUMNP
|
|
INTEGER IDELB(*)
|
|
INTEGER NUMELB(*)
|
|
LOGICAL ISEVOK(NELBLK,*)
|
|
REAL VARGL(NGLDM)
|
|
REAL VARNP(NUMNP,NNPDM)
|
|
REAL VAREL(*)
|
|
INTEGER IOERR
|
|
|
|
C --Write step time
|
|
WRITE (NTXT, '(A, I10)') '! Time step', ISTEP
|
|
WRITE (NTXT, '(1pe16.7, 16X,A)') TIME, '! Time step time value'
|
|
|
|
IF ((NVARGL+NVARNP+NVAREL) .GT. 0) THEN
|
|
|
|
C --Write global variables
|
|
IF (NVARGL .GT. 0) THEN
|
|
WRITE (NTXT, '(A)') '! Global variables'
|
|
WRITE (NTXT, 10010) (VARGL(I), I=1,NVARGL)
|
|
END IF
|
|
|
|
IF (NVARNP .GT. 0) THEN
|
|
WRITE (NTXT, '(A)') '! Nodal variables'
|
|
DO 100 INP = 1, NUMNP
|
|
WRITE (NTXT, 10010) (VARNP(INP,I), I=1,NVARNP)
|
|
100 CONTINUE
|
|
END IF
|
|
|
|
C --Write element variables
|
|
|
|
IF (NVAREL .GT. 0) THEN
|
|
WRITE (NTXT, '(A)') '! Element variables'
|
|
IEL0 = 0
|
|
DO 120 IELB = 1, NELBLK
|
|
NELPB = NUMELB(IELB)
|
|
WRITE (NTXT, '(A, I3)') '! Element Block ', IELB
|
|
WRITE (NTXT, '(A, I9)')
|
|
& '! Number of elements ', NELPB
|
|
DO 110 N = 1, NELPB
|
|
C This is a really ugly index.I cannot seem to simplify
|
|
C this anymore.
|
|
C The element variables are read in DBISTE with the
|
|
C EXGEV call. IELO is the total number of elements in the
|
|
C previous element block. N if the index for the number
|
|
C of elements in the current element block.
|
|
WRITE (NTXT, 10010)
|
|
& (VAREL(IEL0+N+((I-1)*NELPB)), I=1,NVAREL)
|
|
110 CONTINUE
|
|
IEL0 = IEL0 + NELPB*NVAREL
|
|
120 CONTINUE
|
|
END IF
|
|
|
|
END IF
|
|
10010 FORMAT (5(1pE16.7))
|
|
|
|
RETURN
|
|
END
|
|
|