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.
 
 
 
 
 
 

151 lines
5.2 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 SPMAIN (A, NEUTRL, NAMES, NPTIMS, IPTIMS,
* TIMES, NENUM,
& XN, YN, ZN, XE, YE, ZE,
& IE2ELB, ISEVOK, LIDSP, BLKCOL, IDELB,
* MAPEL, MAPND)
C=======================================================================
C --*** SPMAIN *** (SPLOT) SPLOT main plot routine
C -- Modified by John Glick - 11/9/88
C -- Written by Amy Gilkey - revised 03/07/88
C --
C --SPMAIN calculates the distances, reads the variables, and displays
C --the distance-versus-variable plots.
C --
C --Parameters:
C -- A - IN - the dynamic memory base array
C -- NEUTRL - IN - the type of neutral file to write.
C -- NAMES - IN - the variable names
C -- NPTIMS - IN - the number of selected time steps
C -- IPTIMS - IN - the selected time steps
C -- TIMES - IN - the database times
C -- NENUM - IN - the selected node/element numbers
C -- XN,YN,ZN - IN - the nodal mesh coordinates
C -- XE,YE,ZE - IN - the element centroid mesh coordinates
C -- IE2ELB - IN - the element block for each element
C -- ISEVOK - IN - the element block variable truth table;
C -- variable i of block j exists iff ISEVOK(j,i)
C -- LIDSP(0:*) - IN - the indices of the selected variables
C -- whose values will be displayed on the plot legend.
C -- LIDSP(0) = the number of variables in the list.
C -- LIDSP(i) identifies the ith variable in the list.
C -- LIDSP(i) > 0, LIDSP(i) is the id of a history var.
C -- LIDSP(i) < 0, -LIDSP(i) is the id of a global var.
C -- LIDSP(i) = 0, TIME is displayed on the plot legend.
C -- BLKCOL - I/O - the user selected colors of the element blocks.
C -- BLKCOL(0) = 1 if the user defined material
C -- colors should be used in mesh plots.
C -- = -1 if program selected colors should
C -- be used.
C -- BLKCOL(i) = the user selected color of element
C -- block i:
C -- -2 - no color selected by user.
C -- -1 - black
C -- 0 - white
C -- 1 - red
C -- 2 - green
C -- 3 - yellow
C -- 4 - blue
C -- 5 - cyan
C -- 6 - magenta
C --
C --Common Variables:
C -- Uses NNENUM of /SELNE/
C -- Uses NSPVAR of /SPVARS/
include 'params.blk'
PARAMETER (KLFT=1, KRGT=2, KBOT=3, KTOP=4)
include 'dbnums.blk'
include 'selne.blk'
include 'spvars.blk'
DIMENSION A(*)
CHARACTER*(*) NAMES(*)
INTEGER IPTIMS(NPTIMS)
REAL TIMES(*)
INTEGER NENUM(NNENUM)
REAL XN(*), YN(*), ZN(*)
REAL XE(*), YE(*), ZE(*)
INTEGER IE2ELB(*)
LOGICAL ISEVOK(*)
INTEGER LIDSP(0:*)
INTEGER BLKCOL(0:NELBLK)
INTEGER IDELB(*)
INTEGER MAPEL(*), MAPND(*)
C --Use the selected color table
CALL GRCOLU ('ALTERNATE')
C --Reserve storage for plot variables
LPLVAL = NNENUM * NSPVAR * NPTIMS
CALL MDRSRV ('PLTVAL', KPLVAL, LPLVAL)
CALL MDSTAT (NERR, MEM)
IF (NERR .GT. 0) GOTO 100
C --Read plot variables
CALL SPREAD (A, NPTIMS, IPTIMS, NENUM, A(KPLVAL))
CALL MDSTAT (NERR, MEM)
IF (NERR .GT. 0) GOTO 100
C --Identify and index element variables with undefined values
CALL MDRSRV ('IXSEGV', KXSEGV, NSPVAR)
CALL MDSTAT (NERR, MEM)
IF (NERR .GT. 0) GOTO 100
CALL SPDSEG (A, NENUM, IE2ELB, ISEVOK,
& NSEGV, A(KXSEGV), KSEGEL)
CALL MDSTAT (NERR, MEM)
IF (NERR .GT. 0) GOTO 100
C --Calculate distances
CALL MDRSRV ('DIST', KDIST, NNENUM)
CALL MDSTAT (NERR, MEM)
IF (NERR .GT. 0) GOTO 100
IF (NODVAR) THEN
CALL CALDIS (NNENUM, NENUM, XN, YN, ZN, A(KDIST))
ELSE
CALL CALDIS (NNENUM, NENUM, XE, YE, ZE, A(KDIST))
END IF
C --Plot requested curves
IF (NSEGV .GT. 0) THEN
CALL MDRSRV ('XDIST', KXDIST, NNENUM)
CALL MDSTAT (NERR, MEM)
IF (NERR .GT. 0) GOTO 100
END IF
CALL SPPLOT (A, NEUTRL, NPTIMS, IPTIMS, TIMES, NENUM,
& A(KDIST), A(KPLVAL), NAMES,
& A(KXSEGV), A(KSEGEL), A(KXDIST), LIDSP, BLKCOL,
* MAPEL, MAPND)
CALL MDDEL ('PLTVAL')
CALL MDDEL ('DIST')
IF (NSEGV .GT. 0) THEN
CALL MDDEL ('XDIST')
END IF
CALL MDDEL ('IXSEGV')
IF (NSEGV .GT. 0) THEN
CALL MDDEL ('ISEGEL')
END IF
100 CONTINUE
RETURN
END