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.
89 lines
2.8 KiB
89 lines
2.8 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 SPDSEG (A, NENUM, IE2ELB, ISEVOK,
|
|
& NSEGV, IXSEGV, KSEGEL)
|
|
C=======================================================================
|
|
|
|
C --*** SPDSEG *** (SPLOT) Identify variables with undefined elements
|
|
C -- Written by Amy Gilkey - revised 05/05/88
|
|
C --
|
|
C --SPDSEG identifies plot variables that must be drawn in segments.
|
|
C --These are element variables whose value is not defined for some
|
|
C --selected elements. For each segmented variable, a list of the
|
|
C --defined element indices is returned.
|
|
C --
|
|
C --Parameters:
|
|
C -- A - IN/OUT - the dynamic memory base array
|
|
C -- NENUM - IN - the list of nodes/elements
|
|
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 -- NSEGV - OUT - the number of "segmented" variables
|
|
C -- IXSEGV - OUT - the index into ISEGEL for "segmented" variables;
|
|
C -- 0 if all selected elements are defined
|
|
C -- KSEGEL - OUT - the dynamic memory index of ISEGEL - the NENUM indices
|
|
C -- of the defined elements
|
|
C --
|
|
C --Common Variables:
|
|
C -- Uses NNENUM of /SELNE/
|
|
C -- Uses NSPVAR of /SPVARS/
|
|
|
|
include 'params.blk'
|
|
include 'dbnums.blk'
|
|
include 'selne.blk'
|
|
include 'spvars.blk'
|
|
|
|
DIMENSION A(*)
|
|
INTEGER NENUM(*)
|
|
INTEGER IE2ELB(*)
|
|
LOGICAL ISEVOK(NELBLK,NVAREL)
|
|
INTEGER IXSEGV(*)
|
|
|
|
CHARACTER CDUM
|
|
|
|
IF (NODVAR) THEN
|
|
NSEGV = 0
|
|
CALL INIINT (NSPVAR, 0, IXSEGV)
|
|
KSEGEL = 1
|
|
|
|
ELSE
|
|
CALL MDRSRV ('ISEGEL', KSEGEL, 0)
|
|
CALL MDSTAT (NERR, MEM)
|
|
IF (NERR .GT. 0) GOTO 110
|
|
NSEGV = 0
|
|
|
|
DO 100 N = 1, NSPVAR
|
|
IXSEGV(N) = 0
|
|
|
|
CALL DBVTYP_BL (ISVID(N), CDUM, ID)
|
|
IF (NUMEQL (.FALSE., NELBLK, ISEVOK(1,ID)) .GT. 0) THEN
|
|
CALL MDLONG ('ISEGEL', KSEGEL, (NSEGV+1) * (1+NNENUM))
|
|
CALL MDSTAT (NERR, MEM)
|
|
IF (NERR .GT. 0) GOTO 110
|
|
|
|
CALL SPDSG1 (NNENUM, NENUM, IE2ELB, ISEVOK(1,ID),
|
|
& NEL, A(KSEGEL))
|
|
|
|
IF (NEL .LT. NNENUM) THEN
|
|
NSEGV = NSEGV + 1
|
|
IXSEGV(N) = NSEGV
|
|
END IF
|
|
END IF
|
|
100 CONTINUE
|
|
|
|
IF (NSEGV .LE. 0) THEN
|
|
CALL MDDEL ('ISEGEL')
|
|
CALL MDSTAT (NERR, MEM)
|
|
IF (NERR .GT. 0) GOTO 110
|
|
KSEGEL = 1
|
|
END IF
|
|
END IF
|
|
|
|
110 CONTINUE
|
|
RETURN
|
|
END
|
|
|