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
4.2 KiB
113 lines
4.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 SHADE (LENF, NLNKF, LINKF, NXFAC, IXFAC,
|
|
& XN, YN, ZN, IELBST, BLKCOL, IDELB, SHDCOL, ISHDCL, IHIDOP, *)
|
|
C=======================================================================
|
|
|
|
C --*** SOLID *** (DETOUR) Paint solid mesh (by index)
|
|
C -- Modified by John Glick - 11/29/88
|
|
C -- Written by Amy Gilkey - revised 10/27/87
|
|
C --
|
|
C --SOLID paints the mesh in the color of each elements element block.
|
|
C --
|
|
C --Parameters:
|
|
C -- LENF - IN - the cumulative face counts by element block
|
|
C -- NLNKF - IN - the number of nodes per face
|
|
C -- LINKF - IN - the connectivity for all faces
|
|
C -- NXFAC - IN - the number of ordered faces (if DOIXF)
|
|
C -- IXFAC - IN - the indices of the ordered faces (if DOIXF)
|
|
C -- XN, YN, ZN - IN - the nodal coordinates
|
|
C -- IELBST - IN - the element block status (>0 if selected)
|
|
C -- BLKCOL - IN/OUT - 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 -- * - return statement if the cancel function is active
|
|
C --
|
|
C --Common Variables:
|
|
C -- Uses NUMEL, NELBLK of /DBNUMS/
|
|
C -- Uses IS3DIM of /D3NUMS/
|
|
|
|
PARAMETER (KLFT=1, KRGT=2, KBOT=3, KTOP=4, KNEA=5, KFAR=6)
|
|
include 'mshlim.blk'
|
|
include 'icrnbw.blk'
|
|
include 'light.blk'
|
|
include 'dbnums.blk'
|
|
include 'd3nums.blk'
|
|
|
|
INTEGER LENF(0:NELBLK)
|
|
INTEGER NLNKF(NELBLK)
|
|
INTEGER LINKF(*)
|
|
INTEGER IXFAC(*)
|
|
REAL XN(*), YN(*), ZN(*)
|
|
INTEGER IELBST(NELBLK)
|
|
INTEGER BLKCOL(0:NELBLK)
|
|
INTEGER IDELB(*)
|
|
C ... SHDCOL(1, *) = Red Component
|
|
C SHDCOL(2, *) = Green Component
|
|
C SHDCOL(3, *) = Blue Component
|
|
C SHDCOL(4-7,*) - Future Use
|
|
REAL SHDCOL(7,NELBLK)
|
|
C ... ISHDCL(1, *) = -1 if color not set, >0 if color set
|
|
C ISHDCL(2, *) = Number of colors to use for this block (SET if 0)
|
|
C ISHDCL(3, *) = Starting location in color map (SET)
|
|
INTEGER ISHDCL(3,NELBLK)
|
|
|
|
C ... AMBIENT controls the range of hue values. The hue is scaled by:
|
|
C HUE = (1 - AMBIENT) * HUE + AMBIENT
|
|
C ... It is somewhat similar to the ambient intensity.
|
|
|
|
if (.not. is3dim) return
|
|
|
|
C ... Determine range of plot window
|
|
XMIN = ZMMESH(KLFT)
|
|
XMAX = ZMMESH(KRGT)
|
|
YMIN = ZMMESH(KBOT)
|
|
YMAX = ZMMESH(KTOP)
|
|
|
|
C ... Set colors for all blocks
|
|
call setcol (nelblk, shdcol, ishdcl, ielbst, blkcol, idelb)
|
|
|
|
C ... Heres where we actually start plotting something.
|
|
|
|
call excpus(time1)
|
|
DO 100 IX = 1, NXFAC
|
|
IFAC = IXFAC(IX)
|
|
IELB = 0
|
|
IXL = IDBLNK (IELB, IFAC, LENF, NLNKF)
|
|
|
|
NNPF = NLNKF(IELB)
|
|
CALL SHADEN (NNPF, LINKF(IXL), XN, YN, ZN,
|
|
* ishdcl(2,ielb), LITE, NLIT, ishdcl(3,ielb),
|
|
* shdcol(4,ielb), shdcol(5,ielb), shdcol(6,ielb),
|
|
* xmin, ymin, xmax, ymax)
|
|
100 CONTINUE
|
|
call excpus(time2)
|
|
tottim = time2 - time1
|
|
if (tottim .gt. 0.0) then
|
|
write (*,900) nxfac, time2-time1, nxfac/(time2-time1)
|
|
end if
|
|
900 FORMAT (' Processed ', i6, ' faces in ', 1pe10.3, ' seconds. ',
|
|
* '(',1pe10.3,' faces/second)',/)
|
|
|
|
CALL PLTFLU
|
|
|
|
RETURN
|
|
END
|
|
|