SUBROUTINE MAKEPLOT(MODPLOT) C Plots observed and model visibility squared versus time with the C PGPLOT package. Note that PGPLOT wants REAL*4 reals. C J.T. Armstrong 12 March 1991 INCLUDE 'BINFIT.INC' INTEGER*4 MXPOINT,PGBEGIN PARAMETER(MXPOINT=100) REAL*8 MVIS2(MXPOINT,MXFILT),TMIN,TMAX,T(MXPOINT) REAL*8 VMIN(MXFILT),VMAX(MXFILT) REAL*4 TIME(2),VISIB(2),DT REAL*4 VMIN4(MXFILT),VMAX4(MXFILT),VLOW(MXFILT),VHI(MXFILT) REAL*4 TMIN4,TMAX4,TLOW,THI,T4(MXPOINT),V_LO,V_HI,T_LO,T_HI REAL*4 MVIS_4(MXPOINT) INTEGER*4 IER, DATE, NPLOTS, LENGTH LOGICAL*1 MODPLOT, HCOPY, ask CHARACTER*4 PLOT_DEV CHARACTER*8 PLOTFILE CHARACTER*80 TITLE(6) COMMON /MOD_VIS/ MVIS2,T,TMIN,TMAX EXTERNAL PGBEGIN HCOPY = .FALSE. PLOTFILE = 'v2 .ps' NPLOTS = 0 C Find the minimum and maximum visibilities DO IG=1,NFILT VMIN(IG)= 0.0 VMAX(IG)= 0.0 END DO 5 DO ID=1,NDATA DO IG=1,NFILT IF(OBSVIS2(ID,IG).LT.VMIN(IG)) VMIN(IG)=OBSVIS2(ID,IG) IF(OBSVIS2(ID,IG).GT.VMAX(IG) 1 .AND. OBSVIS2(ID,IG).LT.2.) VMAX(IG)=OBSVIS2(ID,IG) IF(MODPLOT) THEN IF(RESID(ID,IG).LT.VMIN(IG)) VMIN(IG)=RESID(ID,IG) IF(RESID(ID,IG).GT.VMAX(IG) 1 .AND. OBSVIS2(ID,IG).LT.2.) VMAX(IG)=OBSVIS2(ID,IG) IF(MVIS2(ID,IG).LT.VMIN(IG)) VMIN(IG)=MVIS2(ID,IG) IF(MVIS2(ID,IG).GT.VMAX(IG)) VMAX(IG)=MVIS2(ID,IG) END IF VMIN4(IG)=VMIN(IG) VMAX4(IG)=VMAX(IG) END DO END DO D DO IG=1,NFILT D WRITE(OUTC,*) ' VMIN, VMAX = ',VMIN(IG),VMAX(IG) D END DO C Start the graphics file TMIN4=TMIN TMAX4=TMAX DT=0.005*(TMAX4-TMIN4) DO ID=1,MXPOINT T4(ID)=T(ID) END DO 10 IF(HCOPY) THEN C WRITE(OUTC,*) ' Making hardcopy' IER = PGBEGIN(0,PLOTFILE//PLOT_DEV,1,3) ELSE IER = PGBEGIN(0,'/EGA',1,1) END IF IF(IER.NE.1) RETURN CALL PGSCF(1) ! 1=Plain font, 2=Roman, 3=Italic, 4=Script CALL PGSCH(1.2) ! Set character height C Make the envelope ask=.false. call pgask(ask) DO IG=1,NFILT IF(HCOPY) THEN CALL PGSLW(2) ! No. of strokes to draw lines ELSE CALL PGSLW(1) END IF C --Write the titles WRITE(TITLE(1),'(A,A,I4,A,F4.0,A,I6)') STARNAME(1:8), 1 ' = FK ',STARNO,' ',LAMBDA0(IG),' nm ',DATE WRITE(TITLE(2),'(A,A,A,I2)') 1 'Model file: ',MODDSN(1:14),' Baseline: ',BASELINE(1) WRITE(TITLE(3),'(A,F7.3,A,F7.3)') 1 'Total |gx|u2|d: ',TCHISQ, 2 ' |gx|u2|d for this filter: ',FCHISQ(IG) IF(.NOT.HCOPY) THEN c WRITE(OUTC,*) ' Enter comment:' c READ(INC,'(A80)') TITLE(3+IG) title(3+ig)=' '// 1 ' ' END IF call pgadvance CALL PGSCI(5) ! 1=white 5=cyan CALL PGRNGE(TMIN4,TMAX4,TLOW,THI) CALL PGRNGE(VMIN4(ig),VMAX4(ig),VLOW(IG),VHI(IG)) CALL PGVPORT(0.2,0.8,0.3,0.8) CALL PGWINDOW(TLOW,THI,VLOW(IG),VHI(IG)) IF (THI-TLOW.GT.3.) THEN CALL PGBOX('A', 1.0,4,'BC', 0.5,5) CALL PGBOX('BCNST',1.0,4,'BCNSTV',0.5,5) ELSE CALL PGBOX('A', 0.5,5,'BC', 0.5,5) CALL PGBOX('BCNST',0.5,5,'BCNSTV',0.5,5) END IF C --Plot the model IF(MODPLOT) THEN CALL PGSCI(2) DO ID=1,MXPOINT MVIS_4(ID)=MVIS2(ID,IG) END DO CALL PGLINE(MXPOINT,T4,MVIS_4) END IF C --Plot the data CALL PGSCI(3) DO ID=1,NDATA IF(OBSVIS2(ID,IG).LT.2.) THEN TIME(1)=HOURS(ID) TIME(2)=HOURS(ID) VISIB(1)=OBSVIS2(ID,IG)+VISERR(ID,IG) VISIB(2)=OBSVIS2(ID,IG)-VISERR(ID,IG) CALL PGLINE(2,TIME,VISIB) END IF END DO C --Plot the residuals offset horizontally a little from the data IF(MODPLOT) THEN CALL PGSLW(1) CALL PGSCI(2) DO ID=1,NDATA IF(OBSVIS2(ID,IG).LT.2.) THEN TIME(1)=HOURS(ID)+DT TIME(2)=HOURS(ID)+DT VISIB(1)=RESID(ID,IG)+VISERR(ID,IG) VISIB(2)=RESID(ID,IG)-VISERR(ID,IG) CALL PGLINE(2,TIME,VISIB) END IF END DO END IF CALL PGSCI(1) IF (.NOT.HCOPY) CALL PGSLW(1) C Write the titles CALL PGSCH(1.5) CALL PGMTEXT('T',2.0, 0, 0, TITLE(1)) CALL PGSCH(1.2) CALL PGMTEXT('T',1.0, 0, 0, TITLE(2)) CALL PGMTEXT('B',5.0, 0, 0, TITLE(3)) CALL PGMTEXT('B',7.0, 0, 0, TITLE(3+IG)) CALL PGSCI(5) ! 1=white 5=cyan CALL PGMTEXT('L',3.0, 0.5,0.5,'VISIBILITY SQUARED') CALL PGMTEXT('B',3.0, 0.5,0.5,'TIME (UT hours)') CALL PGSCI(1) ! 1=white 5=cyan c IF(IG.LT.NFILT) CALL PGADVANCE END DO C Close the file CALL PGEND HCOPY = .FALSE. 19 IF(QUERY(' Make a hard copy (Y/N)?')) THEN HCOPY = .TRUE. PLOT_DEV='/vps' C 20 WRITE(OUTC,*) ' Plot device: ' C READ(INC,'(A4)') PLOT_DEV C IF(PLOT_DEV.EQ.' ') GO TO 20 NPLOTS = NPLOTS + 1 WRITE(PLOTFILE(3:5),'(I3.3)') NPLOTS WRITE(OUTC,*) ' Creating file ',PLOTFILE//PLOT_DEV,' OK?' READ(INC,*) ANSWER CALL CAPS(ANSWER) IF(ANSWER.NE.'Y') GO TO 19 GO TO 10 ELSE IF(QUERY(' Repeat the screen plot? (Y/N)')) THEN GO TO 5 END IF RETURN END