CTITLESAAVOPI - SCALES AND PLOTS DATA 00010005 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** C 00020000 CA DESIGNER LGP 00030000 CA AUTHOR J.E. BEITZEL 00040000 CA LANGUAGE S/360 & SIGMA 7 FORTRAN IV 00050000 CA DATE WHEN 00060000 C REVISED CONVERTED TO CALCOMP BY D.K. SEABOURN 7-2 00070000 C CONVERTED TO BENSON VARIAN BY T K KAN 00080000 C REVISED FOR PRIVATE USE BY PHIL HUDDLESTON 00090000 C REVISED 08-29-89 JJC - CHANGED TO RESET OF PLOT ORGIN. 00091004 C REVISED 09-10-89 JJC - CHANGED PROCESS NAME TO AVOP. 00092005 C 00100000 CA PURPOSE: 00110000 C 00120000 CA SAAVOPI SCALES & PLOTS DATA DISPLAYS IN THE FORM OF TWO LABELLED 00130005 CA AXES WITH A GRID AND WITH DATA POINTS REPRESENTED BY SELECTED 00140000 CA SYMBOLS, WHICH MAY BE CONNECTED BY LINES IF DESIRED. 00150000 C 00160000 CA 60 SYMBOLS ARE AVAILABLE AND UP TO 49 CURVES MAY BE PLOTTED ON THE 00170000 CA SAME GRAPH. AS USED BELOW THE TERM GRAPH MEANS A SET OF AXES 00180000 CA WITH AS MANY DATA SETS AS ARE CALLED FOR. 00190000 C 00200000 CA THE FIRST GRAPH DESIRED IS PLOTTED BY CALLING SAAVOPI, AND ALL 00210005 CA SUCCESSIVE GRAPHS ARE PLOTTED BY CALLING SAAVOPJ. 00220005 C 00230000 C 00240000 C CALL SEQUENCE 00250000 C 00260000 CA CALL SAAVOPI(IOR,X,Y,DN,S,XS,YS,PA,PAA,TBEG,TEND, 00270005 CA 1 PLOTID,IPR,TRCSN,PLCODE,DBS,PLTFIL) 00280000 C 00290000 CA ENTRY POINTS SAAVOPJ 00300005 C 00310000 C 00320000 C IOR ENABLES THE PROGRAMMER TO INSURE THAT THE AXES ORIGINS ARE 00330000 C WITHIN THE RANGE OF THE PLOT. 00340000 C IOR=0 PLOT IS SCALED ACCORDING TO ACTUAL RANGE OF DATA 00350000 C IOR=1 TO INCLUDE X=ZERO IN RANGE OF X-AXIS 00360000 C IOR=2 TO INCLUDE X AND Y ORIGINS 00370000 C IOR=3 TO INCLUDE Y=ZERO IN RANGE OF Y-AXIS 00380000 C 00390000 C X,Y ARE ARRAYS CONTAINING THE X AND Y DATA VALUES. FOR MULTIPLE 00400000 C SETS OF DATA TO APPEAR ON ONE GRAPH, THE SEVERAL DATA STRINGS 00410000 C ARE PLACED IN SEQUENCE IN THE X AND Y ARRAYS. 00420000 C 00430000 C DN IS AN ARRAY CONTAINING THE NUMBERS OF POINTS IN EACH DATA 00440000 C STRING. IF THREE CURVES ARE TO BE PLOTTED ON ONE GRAPH, THE 00450000 C FIRST COMPRISING 10 POINTS, THE SECOND 5 POINTS, AND THE THIRD 50 00460000 C POINTS, THE D ARRAY WOULD CONTAIN THE VALUES 10.,5.,AND 50. 00470000 C AGQ AND BGQ PLOT UNTIL A VALUE OF DN=0. IS FOUND, CONSEQUENTL00480000 C THE FOURTH D VALUE MUST BE 0. THE CORRESPONDING DATA VALUES WOULD 00490000 C BE STORED IN POSITIONS 1-10, 11-15, AND 16-65 OF THE X AND Y ARRAYS00500000 C 00510000 C S IS THE SYMBOL CODE ARRAY. A CODE MUST BE PROVIDED FOR EACH DATA 00520000 C SET, AND THE CODES ARE STORED IN SEQUENCE. IF S IS NEGATIVE, THE 00530000 C PLOTTED SYMBOLS WILL BE CONNECTED BY LINE SEGMENTS. OTHERWISE, 00540000 C ONLY THE SYMBOLS WILL APPEAR, DESIGNATING THE DATA POINTS. THE 00550000 C LOWER LEFT CORNER REPRESENTS THE TRUE DATA POINT FOR SYMBOLS 1-45. 00560000 C SYMBOLS 50-64 ARE CENTERED. 00570000 C 00580000 C XS,YS ARE THE SCALES OR PLOT DIMENSIONS. 00590000 C IF XS OR YS IS GREATER THAN ZERO THAT VALUE IS THE RANGE IN 00600000 C INCHES OF THE DATA'S ABSCISSA OR ORDINATE, RESPECTIVELY. 00610000 C IF XS OR YS IS LESS THAN ZERO THAT VALUE IS USED AS A SCALE-- 00620000 C NUMBER OF DATA UNITS/INCH= -XS (OR -YS) 00630000 C XS AND YS CONTROL ONLY THE SIZE OF THE ACTUAL GRAPH. THE PLOT 00640000 C TITLE IS SPACED 2 INCHES BELOW THE X-AXIS. THE X-AXIS LABEL IS 00650000 C PLOTTED BETWEEN THE TITLE AND THE X-AXIS. THE Y-AXIS LABEL IS 00660000 C 1 INCH TO THE LEFT OF THE Y-AXIS. 00670000 C 00680000 C DATA CARDS 00690000 C 00700000 C 00710000 C CALL SAAVOPI FOR FIRST GRAPH. 00720005 C CALL SAAVOPJ FOR ALL SUCCEEDING GRAPHS 00730005 C 00740000 C 00750000 SUBROUTINE SAAVOPI(IOR,X,Y,DN,S,XS,YS,PA,PAA,TBEG,TEND, 00760005 1 PLOTID,IPR,TRCSN,PLCODE,DBS,PLTFIL) 00770000 C 00771005 IMPLICIT INTEGER (A-Z) 00780000 C 00790000 REAL DN 00800000 REAL FACTOR 00810000 REAL FJK1 00820000 REAL FJK2 00830000 REAL FJK3 00840000 REAL FJK4 00850000 REAL FJK5 00860000 REAL FJK6 00870000 REAL HT 00880000 REAL PA 00890000 REAL PAA 00900000 REAL S 00910000 REAL TBEG 00920000 REAL TEND 00930000 REAL X 00940000 REAL XB 00950000 REAL XG 00960000 REAL XMAX 00970000 REAL XOLD 00980000 REAL XP 00990000 REAL XPP 01000000 REAL XP2 01010000 REAL XRNG 01020000 REAL XS 01030000 REAL XT 01040000 REAL Y 01050000 REAL YB 01060000 REAL YG 01070000 REAL YMAX 01080000 REAL YP 01090000 REAL YPP 01100000 REAL YP2 01110000 REAL YRNG 01120000 REAL YS 01130000 REAL YY 01140000 C 01150000 CHARACTER*5 TRCSN 01160000 CHARACTER*22 XLAB/'LOCAL INCIDENCE ANGLE$'/ 01170000 CHARACTER*10 XLABX/'TRACE NO.$'/ 01180000 CHARACTER*13 XLABF/'OFFSET (FT)$'/ 01190000 CHARACTER*19 YLAB /'RMS AMPLITUDE (DB)$'/ 01200000 CHARACTER*14 YLABB/'RMS AMPLITUDE$'/ 01210000 CHARACTER*4 PLCODE,UNITS,CSFLAG 01220000 CHARACTER*44 OUTF 01230000 INTEGER*4 CYAN(30),MAGENT(30),YELLOW(30) 01240000 DIMENSION X(*),Y(*),DN(*),S(*),PA(*),PAA(*) 01250000 CHARACTER*(*) PLOTID,DBS,PLTFIL 01260000 C 01270000 DATA FACTOR /25.4/ 01280000 C 01290000 UNITS = 'MM. ' 01300000 CSFLAG = 'SEMB' 01310000 NCOLOR = 21 01320000 C 01330000 CAD 8.0 INCHES ARE ADDED FOR THE TITLE BLOCK 01340000 C 01350000 XMAX = 80.0*FACTOR + 8.0 *FACTOR 01360000 YMAX = 40.0*FACTOR 01370000 CALL SACNEWP(10,'AVOP ', 01380005 * PLTFIL(1:32),PLCODE, 01390000 * XMAX,YMAX,UNITS, 01400000 * CSFLAG, NCOLOR, CYAN, MAGENT, YELLOW, 01410000 * FJK1,FJK2,FJK3,FJK4,FJK5,FJK6,OUTF,IRR1,IRR2) 01420000 XOLD=6.*FACTOR 01430000 XP=FACTOR 01440000 YP=35.0 01450000 NDX = 10 01460000 NDY = 8 01470000 HT=2.0 01480000 C 01490000 C SAAVOPJ ENTRY 01500005 C 01510000 ENTRY SAAVOPJ(IOR,X,Y,DN,S,XS,YS,PA,PAA,TBEG,TEND, 01520005 1 PLOTID,IPR,TRCSN,PLCODE,DBS) 01530000 C 01540000 XP2 = XP*2. 01550000 YP2 = YP*2. 01560000 XS=XS/FACTOR 01570000 YS=YS/FACTOR 01580000 XG=40.*FACTOR 01590000 YG=XG 01600000 J=1 01610000 N=0 01620000 25 N=N+DN(J) 01630000 J=J+1 01640000 IF(DN(J).GT.0.0) GO TO 25 01650000 C 01660000 C SCALE THE DATA 01670000 C 01680000 CALL SAAVOPL(IOR,XRNG,YRNG,X,Y,XS,YS,XB,YB,N,IPR) 01690005 YY=YP+YRNG/2.+20. 01700000 IF(YY/FACTOR .LE. 19.) GO TO 20 01710002 YP=35.0 01720000 YP2 = YP *2. 01730000 XP=XOLD+XP 01740000 XP2= XP*2. 01750000 20 CONTINUE 01760000 YPP = YP2 - 45. 01770000 CALL BGRAF(0.+ 8.*FACTOR,0.,XG,YG) 01780000 CALL BLIMIT(0.,XG,0.,YG,0.,0.) 01790000 CALL GCHAR('A = $',XP2-20.,YPP,3.) 01800000 CALL GNUMB(PAA(1),XP2-5.,YPP,3.,3) 01810000 CALL GCHAR('B = $',XP2+25.0,YPP,3.) 01820000 CALL GNUMB(PAA(2),XP2+37.0,YPP,3.,3) 01830000 CALL GCHAR('C = $',XP2+75.,YPP,3.) 01840000 CALL GNUMB(PAA(3),XP2+86.,YPP,3.,3) 01850000 CALL GCHAR('E = $',XP2+121.,YPP,3.) 01860000 CALL GNUMB(PAA(4),XP2+142.,YPP,3.,3) 01870000 YPP = YP2-37. 01880000 CALL GCHAR('A = $',XP2-20.0,YPP,3.) 01890000 CALL GNUMB(PA(1),XP2-5.0,YPP,3.,3) 01900000 CALL GCHAR('B = $',XP2+25.4,YPP,3.) 01910000 CALL GNUMB(PA(2),XP2+40.6,YPP,3.,3) 01920000 CALL GCHAR('E = $',XP2+122.0,YPP,3.) 01930000 CALL GNUMB(PA(4),XP2+142.0,YPP,3.,3) 01940000 XPP = XP2+30.5 01950000 YPP = YP2-25. 01960000 CALL GCHAR('CDP NO. $',XP2-20.0,YPP,5.) 01970000 CALL GNUMB(PA(5),XPP,YPP,6.,-1) 01980000 XPP = XP2+ 80. 01990000 YPP = YP2-29. 02000000 CALL GCHAR('TBEG = $',XPP,YPP,3.) 02010000 CALL GNUMB(TBEG,XPP+25.,YPP,3.,3) 02020000 CALL GCHAR('TEND = $',XPP+63.5,YPP,3.) 02030000 CALL GNUMB(TEND,XPP+86.36,YPP,3.,3) 02040000 C 02050000 C BUILD GRAPH AND TITLE 02060000 C 02070000 CALL BGRAF(XP+4*FACTOR,YP ,XRNG,YRNG) 02080000 WRITE(IPR,*)' XP,YP,XRNG,YRNG,XB,YB,XS,YS = ', 02090000 1 XP,YP,XRNG,YRNG,XB,YB,XS,YS 02100000 CALL BTITLE(PLOTID,5.,1) 02110000 C 02120000 C PLOT AXIS 02130000 C 02140000 CALL SAAVOPK(XLAB,YLAB,NDX,NDY, 02150005 1 XRNG,YRNG,XB,YB,XS,YS,XLABX,XLABF,TRCSN,IPR,DBS,YLABB) 02160000 C 02170000 C PLOT DATA 02180000 C 02190000 CALL SAAVOPM(HT,X,Y,DN,N,IPR,XRNG,YRNG) 02200005 C 02210000 C UPDATE COORDINATES 02220000 C 02230000 YP=YP+YRNG/2. + 50. 02240000 C 02250000 XT=(XP+XRNG+50.)/2. 02260000 WRITE(IPR,*)' XP,YP,XRNG,YRNG = ', 02270000 1 XP,YP,XRNG,YRNG 02280000 IF(XT.GT.XOLD) XOLD=XT 02290000 RETURN 02300000 END 02310000