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.
 
 
 
 
 
 

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