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
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
|