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.
168 lines
5.0 KiB
168 lines
5.0 KiB
2 years ago
|
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 SETUP (MSHDEF, ZMMESH)
|
||
|
C=======================================================================
|
||
|
|
||
|
C --*** SETUP *** (MESH) Setup for plot set
|
||
|
C -- Written by Amy Gilkey - revised 05/26/88
|
||
|
C -- D. P. Flanagan, 07/27/82
|
||
|
C --
|
||
|
C --SETUP sets graphics parameters common to the plot sequence. It
|
||
|
C --computes the display area and window for each view. It also computes
|
||
|
C --and sets the axis lengths and limits (with "nice" tick intervals).
|
||
|
C --The only information that is returned about the axis is the
|
||
|
C --starting locations and the label size factor (through COMMON).
|
||
|
C --
|
||
|
C --Parameters:
|
||
|
C -- MSHDEF - IN - the display modes for all views (none/defined)
|
||
|
C -- (as in /MSHOPT/)
|
||
|
C -- ZMMESH - IN - the zoomed mesh coordinates
|
||
|
C --
|
||
|
C --Common Variables:
|
||
|
C -- Uses XISSYM, YISSYM, XAXSYM, YAXSYM, LFTSYM, BOTSYM of /VIEWS/
|
||
|
C -- Uses ZMMESH of /MSHLIM/
|
||
|
C -- Uses DVIEW0 of /LAYOUT/
|
||
|
C -- Sets DVIEW, WVIEW of /LAYOUT/
|
||
|
C -- Uses DTW, VWSCL of /DEVDAT/
|
||
|
|
||
|
PARAMETER (KLFT=1, KRGT=2, KBOT=3, KTOP=4, KNEA=5, KFAR=6)
|
||
|
|
||
|
COMMON /VIEWS/ MULTIM,
|
||
|
& XISSYM, YISSYM, XAXSYM, YAXSYM, LFTSYM, BOTSYM
|
||
|
LOGICAL MULTIM, XISSYM, YISSYM, LFTSYM, BOTSYM
|
||
|
COMMON /LAYOUT/ CHLSIZ, DBORD0(KTOP), DVIEW0(KTOP)
|
||
|
COMMON /LAYOUD/ DVIEW(KTOP,4), WVIEW(KTOP,4)
|
||
|
COMMON /DEVDAT/ DTW, VWSCL
|
||
|
|
||
|
CHARACTER*(*) MSHDEF(4)
|
||
|
REAL ZMMESH(KTOP)
|
||
|
|
||
|
INTEGER NDEFVW, IXVW
|
||
|
LOGICAL RGTVW, TOPVW
|
||
|
LOGICAL XISDIV, YISDIV
|
||
|
|
||
|
RGTVW(I) = (I .EQ. 2) .OR. (I .EQ. 4)
|
||
|
TOPVW(I) = (I .EQ. 1) .OR. (I .EQ. 2)
|
||
|
|
||
|
XISDIV = (MSHDEF(1) .NE. 'NONE')
|
||
|
YISDIV = (MSHDEF(4) .NE. 'NONE')
|
||
|
|
||
|
C --WXRNG and WYRNG are the window limits for a single view
|
||
|
WXRNG = ZMMESH(KRGT) - ZMMESH(KLFT)
|
||
|
WYRNG = ZMMESH(KTOP) - ZMMESH(KBOT)
|
||
|
|
||
|
C --Set view device boundaries
|
||
|
|
||
|
IF (XISDIV .EQV. YISDIV) THEN
|
||
|
RAT = WXRNG / WYRNG
|
||
|
ELSE IF (XISDIV) THEN
|
||
|
RAT = (2 * WXRNG) / WYRNG
|
||
|
ELSE IF (YISDIV) THEN
|
||
|
RAT = WXRNG / (2 * WYRNG)
|
||
|
END IF
|
||
|
|
||
|
C --DXRNG2 and DYRNG2 are the device limits for all defined views / 2
|
||
|
DXRNG2 = 0.5 * (DVIEW0(KRGT) - DVIEW0(KLFT))
|
||
|
DYRNG2 = 0.5 * (DVIEW0(KTOP) - DVIEW0(KBOT))
|
||
|
IF (RAT .LT. 0.99) THEN
|
||
|
DXRNG2 = DXRNG2 * RAT
|
||
|
ELSE IF (RAT .GT. 1.01) THEN
|
||
|
DYRNG2 = DYRNG2 / RAT
|
||
|
END IF
|
||
|
|
||
|
DXMID = 0.5 * (DVIEW0(KRGT) + DVIEW0(KLFT))
|
||
|
DYMID = 0.5 * (DVIEW0(KTOP) + DVIEW0(KBOT))
|
||
|
DO 100 IVW = 1, NDEFVW (.TRUE.)
|
||
|
IVIEW = IXVW (.TRUE., IVW)
|
||
|
IF (XISDIV) THEN
|
||
|
IF (RGTVW(IVIEW)) THEN
|
||
|
DVIEW(KLFT,IVIEW) = DXMID
|
||
|
DVIEW(KRGT,IVIEW) = DXMID + DXRNG2
|
||
|
ELSE
|
||
|
DVIEW(KLFT,IVIEW) = DXMID - DXRNG2
|
||
|
DVIEW(KRGT,IVIEW) = DXMID
|
||
|
END IF
|
||
|
ELSE
|
||
|
DVIEW(KLFT,IVIEW) = DXMID - DXRNG2
|
||
|
DVIEW(KRGT,IVIEW) = DXMID + DXRNG2
|
||
|
END IF
|
||
|
IF (YISDIV) THEN
|
||
|
IF (TOPVW(IVIEW)) THEN
|
||
|
DVIEW(KBOT,IVIEW) = DYMID
|
||
|
DVIEW(KTOP,IVIEW) = DYMID + DYRNG2
|
||
|
ELSE
|
||
|
DVIEW(KBOT,IVIEW) = DYMID - DYRNG2
|
||
|
DVIEW(KTOP,IVIEW) = DYMID
|
||
|
END IF
|
||
|
ELSE
|
||
|
DVIEW(KBOT,IVIEW) = DYMID - DYRNG2
|
||
|
DVIEW(KTOP,IVIEW) = DYMID + DYRNG2
|
||
|
END IF
|
||
|
100 CONTINUE
|
||
|
|
||
|
C --Set window limits
|
||
|
|
||
|
IF (XISSYM) THEN
|
||
|
IF (LFTSYM) THEN
|
||
|
WLFT = XAXSYM
|
||
|
WRGT = XAXSYM + WXRNG
|
||
|
ELSE
|
||
|
WLFT = XAXSYM
|
||
|
WRGT = XAXSYM - WXRNG
|
||
|
END IF
|
||
|
ELSE
|
||
|
WLFT = ZMMESH(KLFT)
|
||
|
WRGT = ZMMESH(KRGT)
|
||
|
END IF
|
||
|
IF (YISSYM) THEN
|
||
|
IF (BOTSYM) THEN
|
||
|
WBOT = YAXSYM
|
||
|
WTOP = YAXSYM + WYRNG
|
||
|
ELSE
|
||
|
WBOT = YAXSYM
|
||
|
WTOP = YAXSYM - WYRNG
|
||
|
END IF
|
||
|
ELSE
|
||
|
WBOT = ZMMESH(KBOT)
|
||
|
WTOP = ZMMESH(KTOP)
|
||
|
END IF
|
||
|
|
||
|
C --Set view window boundaries
|
||
|
|
||
|
DO 110 IVW = 1, NDEFVW (.TRUE.)
|
||
|
IVIEW = IXVW (.TRUE., IVW)
|
||
|
IF (XISSYM .AND. (.NOT. RGTVW(IVIEW))) THEN
|
||
|
WVIEW(KLFT,IVIEW) = WRGT
|
||
|
WVIEW(KRGT,IVIEW) = WLFT
|
||
|
ELSE
|
||
|
WVIEW(KLFT,IVIEW) = WLFT
|
||
|
WVIEW(KRGT,IVIEW) = WRGT
|
||
|
END IF
|
||
|
IF (YISSYM .AND. (.NOT. TOPVW(IVIEW))) THEN
|
||
|
WVIEW(KBOT,IVIEW) = WTOP
|
||
|
WVIEW(KTOP,IVIEW) = WBOT
|
||
|
ELSE
|
||
|
WVIEW(KBOT,IVIEW) = WBOT
|
||
|
WVIEW(KTOP,IVIEW) = WTOP
|
||
|
END IF
|
||
|
110 CONTINUE
|
||
|
|
||
|
C --Set window to device units ratio
|
||
|
|
||
|
DTW = MIN (ABS (WRGT - WLFT), ABS (WTOP - WBOT))
|
||
|
& / (DVIEW0(KRGT) - DVIEW0(KLFT))
|
||
|
|
||
|
IF (XISDIV .OR. YISDIV) THEN
|
||
|
VWSCL = 0.5
|
||
|
ELSE
|
||
|
VWSCL = 1.0
|
||
|
END IF
|
||
|
|
||
|
RETURN
|
||
|
END
|