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.4 KiB
113 lines
3.4 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 DBOSTE (NDB, ISTEP,
|
|
& NVARHI, NVARGL, NVARNP, NUMNP, NVAREL, NELBLK, NUMELB, ISEVOK,
|
|
& TIME, WHOTIM, VARHI, VARGL, VARNP, VAREL)
|
|
C=======================================================================
|
|
|
|
C --*** DBOSTE *** (EXOLIB) Write database variables for one time step
|
|
C -- Removed MAX from dimension statements, added routine
|
|
C -- DBOST1 to do all work.
|
|
C --
|
|
C --DBOSTE writes the database history, global, nodal, and element variables
|
|
C --for one time step.
|
|
C --
|
|
C --Parameters:
|
|
C -- NDB - IN - the database number
|
|
C -- ISTEP - IN - the time step number
|
|
C -- NVARHI - IN - the number of history variables
|
|
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(i,j)
|
|
C -- TIME - IN - the time step time
|
|
C -- WHOTIM - IN - true iff whole (versus history) time step
|
|
C -- VARHI - IN - the history variables for the time step
|
|
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 --
|
|
C --Database must be positioned in front of time step upon entry;
|
|
C --upon exit positioned after time step.
|
|
|
|
INTEGER NDB
|
|
INTEGER ISTEP
|
|
INTEGER NVARHI, NVARGL, NVARNP, NUMNP, NVAREL, NELBLK
|
|
INTEGER NUMELB(*)
|
|
c LOGICAL ISEVOK(nelblk,*)
|
|
integer ISEVOK(nvarel,*)
|
|
REAL TIME
|
|
LOGICAL WHOTIM
|
|
REAL VARHI(*)
|
|
REAL VARGL(*)
|
|
REAL VARNP(*)
|
|
REAL VAREL(*)
|
|
|
|
C --Write step time
|
|
|
|
IF (WHOTIM) THEN
|
|
HISTFL = 0.0
|
|
ELSE
|
|
HISTFL = -1.0
|
|
END IF
|
|
|
|
WRITE (NDB) TIME, HISTFL
|
|
|
|
C --Write history variables
|
|
|
|
IF (NVARHI .GT. 0) THEN
|
|
WRITE (NDB) (VARHI(I), I=1,NVARHI)
|
|
ELSE
|
|
WRITE (NDB) 0
|
|
END IF
|
|
|
|
IF (WHOTIM) THEN
|
|
|
|
C --Write global variables
|
|
|
|
IF (NVARGL .GT. 0) THEN
|
|
WRITE (NDB) (VARGL(I), I=1,NVARGL)
|
|
ELSE
|
|
WRITE (NDB) 0
|
|
END IF
|
|
|
|
C --Write nodal variables
|
|
|
|
indo=0
|
|
DO 100 I = 1, NVARNP
|
|
IF (NUMNP .GT. 0) THEN
|
|
WRITE (NDB) (VARNP(indo+inp), INP=1,NUMNP)
|
|
indo=indo+numnp
|
|
ELSE
|
|
WRITE (NDB) 0
|
|
END IF
|
|
100 CONTINUE
|
|
|
|
C --Write element variables
|
|
|
|
IELO = 0
|
|
DO 120 IELB = 1, NELBLK
|
|
DO 110 I = 1, NVAREL
|
|
IF (ISEVOK(I,IELB) .ne. 0) THEN
|
|
IF (NUMELB(IELB) .GT. 0) THEN
|
|
WRITE (NDB) (VAREL(IELO+N), N=1,NUMELB(IELB))
|
|
ielo=ielo+numelb(ielb)
|
|
ELSE
|
|
WRITE (NDB) 0
|
|
END IF
|
|
END IF
|
|
110 CONTINUE
|
|
120 CONTINUE
|
|
END IF
|
|
|
|
RETURN
|
|
END
|
|
|