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.

283 lines
6.9 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 PLTCUR(X,Y,NUM)
REAL DEVCAP(23)
REAL DEFOUT(7)
COMMON /STATUS/DEVCAP,DEFOUT
REAL DEVP(5)
COMMON /DEVICE/DEVP
REAL COLP(3)
REAL PALETT(3,16)
COMMON /COLOR/COLP,PALETT
REAL TEXTP(40)
COMMON /TEXT/TEXTP
REAL VECTP(5)
REAL XCUR
REAL YCUR
COMMON /VECTRC/VECTP,XCUR,YCUR
INTEGER IDEX(200,2)
INTEGER NVECT(200,2)
REAL XSIZE(200,2)
REAL YSIZE(200,2)
REAL X0(2300,2)
REAL Y0(2300,2)
REAL X1(2300,2)
REAL Y1(2300,2)
COMMON /FONT/IDEX,NVECT,XSIZE,YSIZE,X0,Y0,X1,Y1
REAL GRAPHP(100)
COMMON /GRAPH/GRAPHP
COMMON /MAPPAR/MAPP(11)
REAL MAPP
COMMON /STORAG/MEMORY(1000)
LOGICAL CPUIFC
DIMENSION X(*),Y(*),X0T(32),Y0T(32),X1T(32),Y1T(32)
INTEGER MASKS(1)
include 'izbit.inc'
DATA SYMRAT/120./
IF (NUM.LE.0) THEN
RETURN
END IF
CALL PLTSVV
CALL PLTSVD
CALL PLTSVT
CALL PLTSTV(1,GRAPHP(5))
CALL PLTSTD(1,GRAPHP(38))
CALL PLTSTV(2,GRAPHP(63))
IF (GRAPHP(6).EQ.1.) THEN
CALL PLTSTT(3,0.)
CALL PLTSTT(4,0.)
SYMSIZ = (GRAPHP(3)+GRAPHP(4))*GRAPHP(46)/ (10.*SYMRAT)
CALL PLTSTT(2,SYMSIZ)
CALL PLTSTT(11,GRAPHP(66))
END IF
J = 0
NP = 0
IF (NUM.EQ.1) THEN
IF (GRAPHP(6).EQ.1. .AND. SYMSIZ.GT.0.0) THEN
IF (GRAPHP(21).EQ.1.) THEN
X0T(1) = X(1)
Y0T(1) = Y(1)
ELSE IF (GRAPHP(21).EQ.2.) THEN
IF (X(1).LE.0.) THEN
RETURN
END IF
X0T(1) = LOG10(X(1))
Y0T(1) = Y(1)
ELSE IF (GRAPHP(21).EQ.3.) THEN
X0T(1) = X(1)
IF (Y(1).LE.0.) THEN
RETURN
END IF
Y0T(1) = LOG10(Y(1))
ELSE IF (GRAPHP(21).EQ.4.) THEN
IF (X(1).LE.0.) THEN
RETURN
END IF
IF (Y(1).LE.0.) THEN
RETURN
END IF
X0T(1) = LOG10(X(1))
Y0T(1) = LOG10(Y(1))
END IF
MASKS(1) = -1
CALL PLTMP2(GRAPHP(7),1,MASKS,X0T,Y0T,X1T,Y1T)
JB = IZBIT(1)
IF (IAND(MASKS(1),JB).NE.0) THEN
CALL PLTSTD(1,GRAPHP(75))
CALL PLTXTS(X1T(1),Y1T(1),CHAR(INT(GRAPHP(47))))
END IF
END IF
ELSE
IF (GRAPHP(21).EQ.1.) THEN
XSAV = X(1)
YSAV = Y(1)
ELSE IF (GRAPHP(21).EQ.2.) THEN
DO 2000 I = 1,NUM
IF (X(I).LE.0.) THEN
GO TO 2000
END IF
XSAV = X(I)
YSAV = Y(I)
GO TO 2010
2000 CONTINUE
2010 CONTINUE
ELSE IF (GRAPHP(21).EQ.3.) THEN
DO 2020 I = 1,NUM
IF (Y(I).LE.0.) THEN
GO TO 2020
END IF
XSAV = X(I)
YSAV = Y(I)
GO TO 2030
2020 CONTINUE
2030 CONTINUE
ELSE IF (GRAPHP(21).EQ.4.) THEN
DO 2040 I = 1,NUM
IF (X(I).LE.0. .OR. Y(I).LE.0.) THEN
GO TO 2040
END IF
XSAV = X(I)
YSAV = Y(I)
GO TO 2050
2040 CONTINUE
2050 CONTINUE
END IF
2060 IF (.NOT. (J.LT.NUM-1)) GO TO 2070
K = MIN(NUM-J,32)
IF (GRAPHP(21).EQ.1.) THEN
NV = 0
DO 2080 I = 1,K - 1
NV = NV + 1
X0T(I) = XSAV
Y0T(I) = YSAV
X1T(I) = X(I+J+1)
Y1T(I) = Y(I+J+1)
XSAV = X(I+J+1)
YSAV = Y(I+J+1)
2080 CONTINUE
ELSE IF (GRAPHP(21).EQ.2.) THEN
NV = 0
DO 2100 I = 1,K - 1
IF (X(J+I+1).LE.0.) THEN
GO TO 2100
END IF
NV = NV + 1
X0T(NV) = LOG10(XSAV)
Y0T(NV) = YSAV
X1T(NV) = LOG10(X(J+I+1))
Y1T(NV) = Y(J+I+1)
XSAV = X(I+J+1)
YSAV = Y(I+J+1)
2100 CONTINUE
ELSE IF (GRAPHP(21).EQ.3.) THEN
NV = 0
DO 2120 I = 1,K - 1
IF (Y(J+I+1).LE.0.) THEN
GO TO 2120
END IF
NV = NV + 1
X0T(NV) = XSAV
Y0T(NV) = LOG10(YSAV)
X1T(NV) = X(J+I+1)
Y1T(NV) = LOG10(Y(J+I+1))
XSAV = X(I+J+1)
YSAV = Y(I+J+1)
2120 CONTINUE
ELSE IF (GRAPHP(21).EQ.4.) THEN
NV = 0
DO 2140 I = 1,K - 1
IF (X(J+I+1).LE.0.) THEN
GO TO 2140
END IF
IF (Y(J+I+1).LE.0.) THEN
GO TO 2140
END IF
NV = NV + 1
X0T(NV) = LOG10(XSAV)
Y0T(NV) = LOG10(YSAV)
X1T(NV) = LOG10(X(J+I+1))
Y1T(NV) = LOG10(Y(J+I+1))
XSAV = X(I+J+1)
YSAV = Y(I+J+1)
2140 CONTINUE
END IF
CALL PLTDV2(GRAPHP(7),NV,X0T,Y0T,X1T,Y1T)
IF (GRAPHP(6).EQ.1. .AND. SYMSIZ.GT.0.0) THEN
CALL PLTSTD(1,GRAPHP(75))
MASKS(1) = -1
XT = X1T(NV)
YT = Y1T(NV)
CALL PLTMP2(GRAPHP(7),NV,MASKS,X0T,Y0T,X1T,Y1T)
DO 2160 L = 1,NV
JB = IZBIT(L)
IF (IAND(MASKS(1),JB).NE.0 .AND.
* MOD(L+NP+INT(GRAPHP(23))-1,INT(GRAPHP(23))).EQ.
* 0) THEN
CALL PLTXTS(X1T(L),Y1T(L),CHAR(INT(GRAPHP(47))))
END IF
2160 CONTINUE
CALL PLTSTD(1,GRAPHP(38))
END IF
NP = NP + NV
J = J + K - 1
IF (J+1.GE.NUM .AND. (GRAPHP(6).EQ.1..AND.SYMSIZ.GT.0.0)) THEN
X0T(1) = XT
Y0T(1) = YT
CALL PLTSTD(1,GRAPHP(75))
MASKS(1) = -1
CALL PLTMP2(GRAPHP(7),1,MASKS,X0T,Y0T,X1T,Y1T)
JB = IZBIT(1)
IF (IAND(MASKS(1),JB).NE.0 .AND.
* MOD(NP+INT(GRAPHP(23)),INT(GRAPHP(23))).EQ.0) THEN
CALL PLTXTS(X1T(1),Y1T(1),CHAR(INT(GRAPHP(47))))
END IF
END IF
IF (CPUIFC(.FALSE.)) THEN
GO TO 2070
END IF
GO TO 2060
2070 CONTINUE
END IF
CALL PLTRET
CALL PLTRED
CALL PLTREV
RETURN
END