C C GTLMGF - PLOT GEOTAIL MGF DATA (INPUT: SIRIUS SFDU ONLY) C C HISTORY: C V 1.0 C 2/10/92 C V1.1 C 8/3/93 C V1.2 C 1/5/94 C ADD /BLIMITS OPTION C V1.3 C 1/10/94 C ADD /ISAS (FUJI) JPX|DSN KEYWORD FOR USING BLESSED C MGF DATA C V1.3B C 4/25/94 C FIX NBF FOR FUJI DATA C ADD +/- SCALE FOR Bx,y,z & T C V1.3C C 7/1/94 C USE BLIM FOR TICS C V1.3D C CORRECTED (?) PLTMGF Y AXIS TICS C C V1.3E C 6/27/2000 C RRA CHANGED PROGRAM TO HANDLE YEAR 2000 AND ABOVE C BLIMITS ADDED TO PLOT C C CHARACTER DATE$*20, PRG$*8, VER$*8 CHARACTER CARD$*80, IO$*80 CHARACTER DEF$*80 C DIMENSION BXYZ (600,3), FO(3,8), BFLD(600) DIMENSION BFUJI(3), SCPOS(3) C DATA PRG$, VER$ /'GTLMGF', 'V1.3E'/ C CALL DATE(DATE$) CALL TIME(DATE$(12:20)) C PRINT *,'--- ',PRG$,VER$ C C GET OPTIONS C CALL GETOPS (IPLTNO,MODE,ISERV, KMGF, KIO, KFUJI) C C GET START/STRETCH TIMES C CALL GETSCR (6,KSCROL) PRINT * PRINT *,' ENTER START DATE AND TIME OF' PRINT *,' MGF PLOT AND PLOT SPAN' PRINT * 10 CONTINUE 11 PRINT *,' YYDDD HHMMSS HHMMss' PRINT '(A$)',' ' CALL RDCARD (CARD$,1,0,IOST) IF (IOST .EQ. 5) GOTO 999 C IF (CARD$(1:1) .EQ. CHAR(9)) CARD$ = '00000 '//CARD$(2:80) PRINT *,' '//CARD$(1:60) C READ (CARD$,'(I2,I3,2(1X,3I2))',ERR=11) + IYR,IDY, IHR,IMIN,ISEC, LH,LM, LS C C OPEN ANOTHER SFDU? C IF (INDEX(CARD$,'/CLOSE') .NE. 0) THEN CLOSE(10) KOPEN = 0 GOTO 10 ELSE IF (INDEX(CARD$,'/OPEN') .NE. 0) THEN CLOSE(10) KOPEN = 0 ENDIF C IF (KDBUG .NE. 0) KDBUG = -1 C C SUBTLE DETERMINATION OF I/O SOURCE C C ** IYR CHANGED TO IDY ** C IF (KIO .NE. 'FUJI') THEN !ISAS JPX|DSN DATA IF (IDY .GT. 0) KIO = 'SFDU' !SIRIUS DATA IF (IDY .EQ. 0) KIO = 'ISAS' !ISAS QL ENDIF PRINT '(1X,A4,1X,A3,1X,A3)', KIO,KFUJI,KMGF C MSEC0 = 1000*((IHR*60 + IMIN)*60 + ISEC) ISTART = MSEC0 SPAN = 1000.*((LH*60 + LM)*60 + LS) IDELT = SPAN/600 + .5 C C PLOTTING INTERVAL & CENTER FOR SIRUS (DETATCHED) SFDU'S C IF (KIO .EQ. 'SFDU' .OR. KIO .EQ. 'FUJI') THEN C** IDOY CHANGED TO IDOM 6-27-2000 BY RRA THREE TIMES BELOW. CALL JMDY (IYR,IDY,IMN,IDOM) C CAUTION** FOLLOWING LINE MAY NEED TO BE CHANGED FOR FUJI DATA ** JYMD = 100*(IYR*100 + IMN) + IDOM!? C FOLLOWING IS Y2K CHANGE IF (IYR.LT.90) IYR=IYR+100 CALL JDAY (IDOM,IMN,IYR+1900, JUL0) C JULS = JUL0 JULE = JULS ISTOP = ISTART CALL INCTUP (JULE,ISTOP, IDELT) ELSE IF (KIO .EQ. 'ISAS') THEN JUL0 = 0 JULS = 0 ENDIF C C INITIALIZATION C IPX = 1 NBF = 0 KBAR = 0 !DEFER GTLBAR C C OPEN INPUT HERE C IF (KIO .NE. 'FUJI') THEN IF (KOPEN .EQ. 0 .OR. KIO .EQ. 'ISAS') THEN IF (KIO .EQ. 'ISAS') THEN IF (ISTAT .NE. 5) CLOSE(10) IREAD = 0 ENDIF ISTAT = -1 CALL GTLOPN (JUL0,MSEC0, CARD$,KIO, ISTAT) IF (ISTAT .NE. 2) GOTO 999 KOPEN = -1 ENDIF ELSE !FUJI'S STUFF WRITE (CARD$,'(A3,I6,1H.,A3)') KFUJI,JYMD,KMGF INQUIRE (FILE='GEOTAIL_TELEMETRY_LOCATION',NAME=DEF$) IB = MAX(1,INDEX(DEF$, '.DAT;')-1) PRINT *,'... OPENING BLESSED MGF DATA ON;' PRINT *,' ',DEF$(1:IB)//CARD$(1:13) OPEN(10,FILE=DEF$(1:IB)//CARD$(1:13),STATUS='OLD', + ERR=800,IOSTAT=IOS10,READONLY) JYMDX = 0 ENDIF C C INPUT DATA HERE C 500 IF (IREAD .EQ. 0) THEN IF (KIO .EQ. 'SFDU') CALL RSDMCA (KED,JULT,MSEC, ISTAT) IF (KIO .EQ. 'ISAS') CALL RQLMCA (KED,JULT,MSEC, ISTAT) IF (KIO .EQ. 'FUJI') THEN CALL RDFUJI (MSEC,BFUJI,RMS,SCPOS,TILT,KRNG, ISTAT) JULT = JUL0 + JYMDX ENDIF C C TEST EOF SPECIAL FOR FHJI C IF (ISTAT .EQ. 5 .AND. JYMDX .LT. 2) THEN !FUJI'S STUFF JYMDX = JYMDX + 1 WRITE (CARD$,'(A3,I6,1H.,A3)') KFUJI,JYMD+JYMDX,KMGF INQUIRE (FILE='GEOTAIL_TELEMETRY_LOCATION',NAME=DEF$) IB = MAX(1,INDEX(DEF$, '.DAT;')-1) PRINT *,'... OPENING MORE BLESSED MGF DATA ON;' PRINT *,' ',DEF$(1:IB)//CARD$(1:13) OPEN(10,FILE=DEF$(1:IB)//CARD$(1:13),STATUS='OLD', + ERR=800,IOSTAT=IOS10,READONLY) PRINT *,JULS,ISTART,JULE,ISTOP GOTO 500 ENDIF C IF (ISTAT .EQ. 5) GOTO 800 IF (ISTAT .NE. 1) GOTO 500 C C SKIP AHEAD W/ BUMPER C IF (KIO .EQ. 'SFDU') THEN CALL BUMPER (JULS,ISTART,KBUMP) IF (KBUMP .NE. 0) THEN GOTO 500 ENDIF ENDIF ENDIF C C FOR THE SAKE OF ISAS (ASSUMES SAME DATE FILES!) C IF (KIO .EQ.'ISAS' .AND. JULS .EQ. 0) THEN PRINT *,'... PLOTTING AT',JULT,ISTART/1000., KED JUL0 = JULT JULS = JUL0 JULE = JULS ISTOP = ISTART CALL INCTUP (JULE,ISTOP, IDELT) ENDIF C CDX IF (JYMDX .GT. 0 .AND. IPX .LT. 302) THEN CD PRINT *,IPX, ISTAT,IREAD,JYMDX CD PRINT *,JULS,JULT,JULE CD PRINT *,ISTART/1000.,MSEC-ISTART,MSEC/1000.,ISTOP-MSEC, ISTOP/1000. C C TEST TIME INTERVAL HERE C CD PRINT *,0,LTIMEX(JULT,MSEC ,0,JULS,ISTART), CD + 0,LTIMEX(JULE,ISTOP,-1,JULT,MSEC), 0 CDX ENDIF C IF (LTIMEX(JULT,MSEC ,0,JULS,ISTART) .EQ. -1) THEN IREAD = 0 GOTO 500 ENDIF C IREAD = 1 IF (LTIMEX(JULE,ISTOP,-1,JULT,MSEC) .EQ. -1) GOTO 600 IREAD = 0 C IF (KBAR .EQ. 0) THEN KBAR = -1 INQUIRE (10,NAME=IO$) PRINT *,IO$(1:MAX(INDEX(IO$,' '), 1)) PRINT * ENDIF C C COLLECT DATA BX,BY,BZ AND BT C IF (KIO .NE. 'FUJI') THEN CALL GETBFO(FO) C DO J=1,8 N = 0 BT = 0. C DO I=1,3 IF (FO(I,J) .NE. 0.) N=N+1 ENDDO C IF (N .EQ. 3) THEN NBF = NBF + 1 BT = 0. DO I=1,3 BXYZ(IPX,I) = BXYZ(IPX,I) + FO(I,J) BT = BT + FO(I,J)**2 ENDDO CW WRITE (60,'(2I6,4F10.3)') IPX,J, (FO(I,J),I=1,3), SQRT(BT) BFLD(IPX) = BFLD(IPX) + SQRT(BT) ENDIF ENDDO ELSE BT = 0. N = 0 C DO I=1,3 !WHY NOT!?! IF (BFUJI(I) .NE. 0.) N=N+1 ENDDO C IF (N .EQ. 3) THEN NBF = NBF + 1 DO I=1,3 BXYZ(IPX,I) = BXYZ(IPX,I) + BFUJI(I) BT = BT + BFUJI(I)**2 ENDDO BFLD(IPX) = BFLD(IPX) + SQRT(BT) ENDIF ENDIF C IF (IPX .LT. 600) GOTO 500 C 600 CONTINUE C IF (IPX .EQ. 1) PRINT * PRINT '(1H+,A,I3.3)','P',IPX C IF (NBF .GT. 0) THEN DO I=1,3 BXYZ(IPX,I) = BXYZ(IPX,I)/NBF ENDDO BFLD(IPX) = BFLD(IPX)/NBF CW WRITE (60,'(I6,6x,4F10.3,I10)') IPX,(BXYZ(IPX,I),I=1,3), BFLD(IPX),NBF NBF = 0 ELSE BFLD(IPX) = 0. ENDIF C IF (IPX .EQ. 600) GOTO 800 C IPX = IPX + 1 C JULS = JULE ISTART = ISTOP CALL INCTUP (JULE,ISTOP, IDELT) GOTO 500 C C HERE COMES THE PLOT C 800 CONTINUE IF (IOS10 .NE. 0) THEN PRINT *,'!!! ERROR ON FUJI DATA',IOS10 PRINT *,' '//DEF$(1:IB)//CARD$(1:13)//' !!!' ENDIF IF (KBAR .EQ. 0) THEN PRINT *,'!!! NO PLOT !!!', ISTAT,IPX IF (ISTAT .EQ. 5) GOTO 999 GOTO 10 ENDIF C C SETUP PLOTTER OR CALL FRAME C IF (IPASS .EQ. 0) THEN PRINT *,'... PLOTTING ON',IPLTNO IF (IPLTNO .EQ. 21) THEN CALL SPLOT (21,'NL:') CALL COLOR (4,0,127) CALL FACTOR(0.9) ELSE CALL SETPLT (IPLTNO,MODE,ISERV) IF (IPLTNO .EQ. 16 .AND. ISERV .EQ. 3) CALL FACTOR(0.6) IF (IPLTNO .EQ. 12) CALL FRAME ENDIF CALL ZINC (255) KSETUP = -1 IPASS = -1 ENDIF C IF (KIO .EQ. 'FUJI') KED = KFUJI !JPX|DSN CALL PLTMGF (KED, BXYZ, IPX, JUL0,MSEC0, SPAN, 2) CALL PMGVER (PRG$,VER$) CALL PMGRUN (DATE$) CALL PMGINP (KED, IO$) CALL DUMP IF (IPLTNO .EQ. 21) THEN CALL DECWDISP READ (*,'(A)',ERR=129) JUNK ELSE IF (IPLTNO .NE. 11 .AND. IPLTNO .NE. 16) THEN READ (*,'(A)',ERR=129) JUNK ENDIF 129 CONTINUE C C RESET C NBF = 0 DO I=1,600 BFLD(I) = 0. DO J=1,3 BXYZ(I,J) = 0. ENDDO ENDDO C GOTO 10 C 999 CONTINUE PRINT *,'... WRAPPING UP ',IPLTNO CALL WRAPUP STOP END SUBROUTINE GETOPS (IPLTNO,MODE,ISERV, KMGF2, KIO, KFUJI) C C CHEAP, VERY CHEAP C CHARACTER CARD$*80, BUFF$*80 COMMON /MGFOPS/ KMGF, KDOTS, BLIM(4) C C DEFAULTS C IPLTNO = 11 !HP LASER-JET MODE = 4 ISERV = 2 C V1.2 DO I=1,4 BLIM(I) = 0. ENDDO C V1.3 KIO = 'SFDU' KFUJI = 'N/A' C C INPUT OPTIONS HERE C OPEN (10,FILE='GTLMGF_INI',STATUS='OLD',ERR=999) INQUIRE (10,NAME=CARD$) IC = MAX(INDEX(CARD$, ' '), 1) PRINT *,'... OPTIONS FROM ',CARD$(1:IC) C C PROMPT FOR SYS$INPUT C IF (INDEX(CARD$,'SYS$INPUT:') .NE. 0) THEN PRINT '(A$)', ' ... ENTER OPTIONS HERE > ' KOPT = 1 ENDIF C 10 READ (10,'(A)',END=999) CARD$ CALL UPCASE (CARD$, CARD$) PRINT *,CARD$(1:40) C C PLOTTER /PPMI C IXPARM = INDEX(CARD$,'/PLOT') IF (IXPARM .EQ. 0) IXPARM = INDEX(CARD$,'/PPMI') IF (IXPARM .NE. 0) THEN BUFF$ = CARD$(IXPARM+5:80) READ (BUFF$,*) IPLTR WRITE (BUFF$,'(I4)') IPLTR READ (BUFF$,'(I2,2I1)',ERR=10) IPLTNO,MODE,ISERV ENDIF C C COORDINATES' UNITS C KMGFC = INDEX(CARD$,'/MGF') IF (KMGFC .GT. 0) THEN IF (INDEX(CARD$, 'GSE') .GT. 0) THEN KMGF = 'GSE' KMGF2 = 'GSE' ELSE IF (INDEX(CARD$, 'GSM') .GT. 0) THEN KMGF = 'GSM' KMGF2 = 'GSM' ELSE STOP 'GTLMGF:/KMGF NOT SPECIFIED CORRECTLY' ENDIF IF (INDEX(CARD$, 'DOTS') .NE. 0) THEN KDOTS = -1 ELSE IF (INDEX(CARD$, 'SBOTS') .NE. 0) THEN KDOTS = 2 ELSE IF (INDEX(CARD$, 'SPOTS') .NE. 0) THEN KDOTS = 1 ELSE IF (INDEX(CARD$, 'BOTS') .NE. 0) THEN KDOTS = -2 ELSE KDOTS = 0 ENDIF ENDIF C C SELECT ISAS'S SPIN AVERAGED MGF DATA ON EITHER JPX OR DSN C IF (INDEX(CARD$,'/ISAS') .NE. 0) THEN KIO = 'FUJI' !FUJItubo IF (INDEX(CARD$,'DSN') .NE. 0) THEN KFUJI = 'DSN' ELSE IF (INDEX(CARD$,'JPX') .NE. 0) THEN KFUJI = 'JPX' ELSE STOP 'GTLMGF:/ISAS NOT SPECIFIED CORRECTLY' ENDIF ENDIF CD PRINT '(1X,A4,1X,A3,1X,A3)', KIO,KFUJI,KMGF C C B COMPONENT AND TOTAL LIMITS /BLIMITS C LB = INDEX(CARD$,'/BLIMITS') IF (LB .NE. 0) THEN BUFF$ = CARD$(LB+8:80) READ (BUFF$,*,ERR=10) BLIM ENDIF C IF (KOPT .EQ. 0) GOTO 10 C 999 CONTINUE CLOSE (10) C RETURN END SUBROUTINE PLTMGF (KED, BFLD,NP, JULT,MSEC, SPAN, LFMT) C! C! ENTRY PMGVER (PRG$,VER$) C! ENTRY PMGRUN (DATE$) C! ENTRY PMGINP (KED,IO$) C! C C PLTMGF - MGF PLOT C DIMENSION BFLD(600,3) DATA IPASS /0/ CHARACTER CARD$*80, ED$*2, MO$*36 BYTE BARD(80) EQUIVALENCE (CARD$,BARD) DATA ED$ /'BA'/ CHARACTER VER$*(*), PRG$*(*), DATE$*(*), IO$*(*) C DATA MO$ /'JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC'/ COMMON /MGFOPS/ KMGF, KDOTS, BLIM(4) C IF (PI .EQ. 0.) PI = ATAN2(0., -1.) IF (IPASS .NE. 0) CALL FRAME IPASS = -1 C CALL PLOTNO (IPLTNO) IF (IPLTNO .NE. 16) CALL PLOT (1.00,0.75,-3) IF (IPLTNO .EQ. 16) CALL PLOT (1.25,0.75,-3) C CARD$ = '|0 '//CHAR(0) I = SYMS (0., 6.65, 0.2, BARD, 0., 4,-1) C XAXIS = 8. YAXIS = 6. CALL PLOT (0., 0., 3) CALL PLOT (0., 6., 2) CALL PLOT (8., 6., 2) CALL PLOT (8., 0., 2) CALL PLOT (0., 0., 2) C DO Y=1.,5.,1. CALL PLOT (0., Y, 3) CALL PLOT (8., Y, 2) ENDDO C C X,Y,Z C Y0 = 5. DO IC = 1,3 C C GET STATS C KMX = 0 DO IR = 1,NP IF (BFLD(IR,IC) .NE. 0.) THEN IF (KMX .EQ. 0) THEN BMIN = BFLD(IR,IC) BMAX = BFLD(IR,IC) KMX = 1 ENDIF IF (BFLD(IR,IC) .LT. BMIN) BMIN = BFLD(IR,IC) IF (BFLD(IR,IC) .GT. BMAX) BMAX = BFLD(IR,IC) ENDIF ENDDO C BRANGE = BMAX-BMIN IF (IPLTNO .NE. 9) PRINT *,IC,BMIN,BRANGE,BMAX C50 WRITE (50,*) IC,BMIN,BRANGE,BMAX C IF (BLIM(IC) .NE. 0.) THEN !1/5/94 BMIN = -BLIM(IC) BMAX = BLIM(IC) BRANGE = BMAX-BMIN ENDIF C IF (BRANGE .EQ. 0.) THEN PRINT *,'!!! PLTMGF:RANGE ?!?'//CHAR(7) RETURN ELSE IF (BMIN .GE. -8. .AND. BMAX .LE. 8.) THEN IF (BLIM(IC) .EQ. 0) BMIN = -8. YINC = 2. NINC = 4 NF = 2 ELSE IF (BMIN .GE. -16. .AND. BMAX .LE. 16.) THEN IF (BLIM(IC) .EQ. 0) BMIN = -16. YINC = 5. NINC = 3 NF = 3 ELSE IF (BMIN .GE. -32. .AND. BMAX .LE. 32.) THEN IF (BLIM(IC) .EQ. 0) BMIN = -32. YINC = 10. NINC = 3 NF = 4 ELSE IF (BMIN .GE. -64. .AND. BMAX .LE. 64.) THEN IF (BLIM(IC) .EQ. 0) BMIN = -64. YINC = 20. NINC = 3 NF = 4 ELSE IF (BMIN .GE. -128. .AND. BMAX .LE. 128.) THEN IF (BLIM(IC) .EQ. 0) BMIN = -128. YINC = 40. NINC = 3 NF = 4 ELSE IF (BMIN .GE. -256. .AND. BMAX .LE. 256.) THEN IF (BLIM(IC) .EQ. 0) BMIN = -256. YINC = 60. NINC = 4 NF = 4 ELSE IF (BMIN .GE. -512. .AND. BMAX .LE. 512.) THEN IF (BLIM(IC) .EQ. 0) BMIN = -512. YINC = 150. NINC = 3 NF = 4 ELSE IF (BMIN .GE. -1024. .AND. BMAX .LE. 1024.) THEN IF (BLIM(IC) .EQ. 0) BMIN = -1024. YINC = 250. NINC = 4 NF = 5 ELSE IF (BMIN .GE. -2048. .AND. BMAX .LE. 2048.) THEN IF (BLIM(IC) .EQ. 0) BMIN = -2048. YINC = 500. NINC = 4 NF = 5 ELSE IF (BMIN .GE. -4096. .AND. BMAX .LE. 4096.) THEN IF (BLIM(IC) .EQ. 0) BMIN = -4096. YINC = 1000. NINC = 4 NF = 5 ELSE IF (BMIN .GE. -8192. .AND. BMAX .LE. 8192.) THEN IF (BLIM(IC) .EQ. 0) BMIN = -8192. YINC = 2000. NINC = 4 NF = 5 ELSE IF (BMIN .GE. -16384. .AND. BMAX .LE. 16384.) THEN IF (BLIM(IC) .EQ. 0) BMIN = -16384. YINC = 5000. NINC = 3 NF = 6 ELSE IF (BLIM(IC) .EQ. 0) BMIN = -65536. YINC = 20000. NINC = 3 NF = 6 ENDIF BRANGE = 2.0*ABS(BMIN) IF (BLIM(IC) .NE. 0) NINC = IFIX(BMAX/YINC) !5/30/96 ENDIF IF (IPLTNO .NE. 9) PRINT *,IC,BMIN,BRANGE,-BMIN C IPEN = 3 DO IR = 1,NP B = BFLD(IR,IC) C50 WRITE (50,*) IR,IC,BFLD(IR,IC) IF (B .NE. 0. .AND. B .GE. BMIN .AND. B .LE. BMAX) THEN !1/5/94 X = 8.*IR/600. Y = Y0 + (B - BMIN)/BRANGE IF (ABS(KDOTS) .EQ. 2) IPEN = 3 !BOTS OR SBOTS CALL PLOT (X,Y,IPEN) IPEN = 2 !PEN DOWN CALL PLOT (X,Y,IPEN) IF (KDOTS .EQ. -2) !BOTS + CALL SYMBOL (X,Y, 0.0125, 2, 0., -1) IF (KDOTS .EQ. 2) !SBOTS + CALL SYMBOL (X,Y, 0.025, 2, 0., -1) CALL PLOT (X,Y,3) !PEN UP ELSE IPEN = 3 !SKIP ENDIF ENDDO C C COMPONENT TICS C DO Y=-NINC*YINC, NINC*YINC, YINC B = Y0 + (Y-BMIN)/BRANGE CALL PLOT (0., B, 3) CALL PLOT (.1, B, 2) CP IF (Y .EQ. 0.) CALL PLOT (0.2, B, 2) IF (Y .EQ. 0.) CALL DASH (0.,B, 8.,B, 60) IF (B .GT. Y0 .AND. B .LT. Y0 + 1.) THEN CALL PLOT (8.0, B, 3) CALL PLOT (7.9, B, 2) CP IF (Y .EQ. 0.) CALL PLOT (7.8, B, 2) IF (ABS(Y) .NE. NINC*YINC) THEN WRITE (CARD$,'(F.0)') Y X = -.1 - 0.075*NF*6./7. CALL SYMBOL (X, B - 0.0375, 0.075, CARD$, 0., NF) CALL SYMBOL (8.1, B - 0.0375, 0.075, CARD$, 0., NF) ENDIF ENDIF ENDDO Y0 = Y0 -1. ENDDO C C GET STATS AGAIN C KMX = 0 DO IR = 1,NP N3 = 0 DO IC = 1,3 IF (BFLD(IR,IC) .NE. 0.) N3 = N3 + 1 ENDDO IF (N3 .EQ. 3) THEN BT = SQRT(BFLD(IR,1)**2 + BFLD(IR,2)**2 + BFLD(IR,3)**2) IF (KMX .EQ. 0) THEN BMIN = BT BMAX = BT KMX = 1 ENDIF IF (BT .LT. BMIN) BMIN = BT IF (BT .GT. BMAX) BMAX = BT ENDIF ENDDO C IF (IPLTNO .NE. 9) PRINT *,'BT',BMIN,BMAX-BMIN,BMAX C50 WRITE (50,*) 'BT',BMIN,BMAX-BMIN,BMAX C IF (BLIM(4) .NE. 0.) THEN !1/5/94 BMIN = 0. BMAX = BLIM(4) BMINT = BMAX ENDIF C IF (BMAX - BMIN .EQ. 0.) THEN PRINT *,'!!! PLTMGF:BT RANGE ?!?'//CHAR(7) RETURN ELSE IF (BMAX .LE. SQRT(3.*8.**2)) THEN IF (BLIM(4) .EQ. 0) BMINT = -8. YINC = 2. NINC = 3 NF = 3 ELSE IF (BMAX .LE. SQRT(3.*16.**2)) THEN IF (BLIM(4) .EQ. 0) BMINT = -16. YINC = 5. NINC = 5 NF = 3 ELSE IF (BMAX .LE. SQRT(3.*32.**2)) THEN IF (BLIM(4) .EQ. 0) BMINT = -32. YINC = 10. NINC = 5 NF = 3 ELSE IF (BMAX .LE. SQRT(3.*64.**2)) THEN IF (BLIM(4) .EQ. 0) BMINT = -64. YINC = 20. NINC = 5 NF = 4 ELSE IF (BMAX .LE. SQRT(3.*128.**2)) THEN IF (BLIM(4) .EQ. 0) BMINT = -128. YINC = 50. NINC = 4 NF = 4 ELSE IF (BMAX .LE. SQRT(3.*256.**2)) THEN IF (BLIM(4) .EQ. 0) BMINT = -256. YINC = 100. NINC = 5 NF = 4 ELSE IF (BMAX .LE. SQRT(3.*512.**2)) THEN IF (BLIM(4) .EQ. 0) BMINT = -512. YINC = 200. NINC = 4 NF = 4 ELSE IF (BMAX .LE. SQRT(3.*1024.**2)) THEN IF (BLIM(4) .EQ. 0) BMINT = -1024. YINC = 500. NINC = 3 NF = 5 ELSE IF (BMAX .LE. SQRT(3.*2048.**2)) THEN IF (BLIM(4) .EQ. 0) BMINT = -2048. YINC = 1000. NINC = 3 NF = 5 ELSE IF (BMAX .LE. SQRT(3.*4096.**2)) THEN IF (BLIM(4) .EQ. 0) BMINT = -4096. YINC = 2000. NINC = 3 NF = 5 ELSE IF (BMAX .LE. SQRT(3.*8192.**2)) THEN IF (BLIM(4) .EQ. 0) BMINT = -8192. YINC = 2500. NINC = 5 NF = 6 ELSE IF (BMAX .LE. SQRT(3.*16384.**2)) THEN IF (BLIM(4) .EQ. 0) BMINT = -16384. YINC = 5000. NINC = 5 NF = 6 ELSE IF (BLIM(4) .EQ. 0) BMINT = -65536. YINC = 20000. NINC = 5 NF = 6 ENDIF BMIN = 0. BRANGE = SQRT(3.*BMINT**2) IF (BLIM(4) .NE. 0) NINC = IFIX(BMINT/YINC) !5/30/96 ENDIF IF (IPLTNO .NE. 9) PRINT *,' ',BMINT,BRANGE,-BMINT C C TOTAL B TICS C Y0 = 2.0 DO Y=YINC, 8*YINC,YINC B = Y0 + (Y-BMIN)/BRANGE IF (B .GE. Y0 .AND. B .LE. Y0 + 1.0) THEN CALL PLOT (0., B, 3) CALL PLOT (.1, B, 2) CALL PLOT (8.0, B, 3) CALL PLOT (7.9, B, 2) WRITE (CARD$,'(F.0)') Y X = -0.1 - 0.075*(NF + 1)*6./7. CALL SYMBOL (X, B - 0.0375, 0.075, CARD$, 0., NF) CALL SYMBOL (8.1, B - 0.0375, 0.075, CARD$, 0., NF) ENDIF ENDDO C C BT, THE,PHI C Y0 = 2. DO IT = 1,3 IPEN = 3 DO IR = 1,NP N3 = 0 DO IC = 1,3 IF (BFLD(IR,IC) .NE. 0.) N3 = N3 + 1 ENDDO IF (N3 .EQ. 3) THEN IF (IT .EQ. 1) THEN B = 0. DO IC = 1,3 B = B + BFLD(IR,IC)**2 ENDDO C50 WRITE (50,*) IR,SQRT(B) B = (SQRT(B) - BMIN)/BRANGE ELSE IF (IT .EQ. 2) THEN !THE E {-PI/2,PI/2} XY = SQRT(BFLD(IR,1)**2 + BFLD(IR,2)**2) CX PRINT *,IR, (BFLD(IR,J),J=1,3), XY B = ATAN2(BFLD(IR,3), XY) C50 WRITE (50,*) IR, BFLD(IR,3),XY, B B = (ATAN2(BFLD(IR,3), XY) + PI/2.)/ + PI ELSE IF (IT .EQ. 3) THEN !PHI E {0,2PI} B = ATAN2(BFLD(IR,2), BFLD(IR,1)) C50 WRITE (50,*) IR, (BFLD(IR,J),J=2,1,-1), B IF (B .GE. 0.) IPB = 1 IF (B .LT. 0.) IPB = -1 IF (IPBO .EQ. 0) IPBO = IPB IF (B .LT. 0. .AND. IPBO .EQ. +1 .OR. + B .GT. 0. .AND. IPBO .EQ. -1) THEN IPEN = 3 ENDIF IPBO = IPB IF (B .LT. 0.) B = B + 2.*PI B = B/(2.*PI) ENDIF X = 8.*IR/600. Y = Y0 + B IF (Y .GE. Y0 .AND. Y .LE. Y0 + 1.) THEN IF (IT .GT. 1 .AND. ABS(KDOTS) .EQ. 1) + IPEN = 3 !DOTS OR SPOTS IF (ABS(KDOTS) .EQ. 2) IPEN = 3 !BOTS OR SBOTS CALL PLOT (X,Y,IPEN) IPEN = 2 !PEN DOWN CALL PLOT (X,Y,IPEN) IF ((IT .GT. 1 .AND. KDOTS .EQ. -1) !DOTS + .OR. KDOTS .EQ. -2) !BOTS + CALL SYMBOL (X,Y, 0.0125, 2, 0., -1) IF ((IT .GT. 1 .AND. KDOTS .EQ. 1) !SPOTS + .OR. KDOTS .EQ. 2) !SBOTS + CALL SYMBOL (X,Y, 0.025, 2, 0., -1) CALL PLOT (X,Y,3) !PEN UP ELSE IPEN = 3 !SKIP ENDIF ELSE IPEN = 3 ENDIF ENDDO Y0 = Y0 -1. ENDDO C C ANGLE TICS C Y0 = 1. DO A=-60.,90.,30. !THE X 30 R = A*PI/180. B = Y0 + (R + PI/2.)/PI CALL PLOT (0., B, 3) CALL PLOT (.1, B, 2) CP IF (A .EQ. 0.) CALL PLOT (0.2, B, 2) CALL PLOT (8., B, 3) CALL PLOT (7.9, B, 2) CP IF (A .EQ. 0.) CALL PLOT (7.8, B, 2) IF (A .EQ. 0.) CALL DASH (0.,B, 8., B, 60) WRITE (CARD$,'(F4.0)') A CALL SYMBOL (-.3, B - 0.0375, 0.075, CARD$, 0., 3) CALL SYMBOL (8.1, B - 0.0375, 0.075, CARD$, 0., 3) ENDDO C DO A=-180.,180.,60. !PHI X 60 R = A*PI/180. B = (R + PI)/(2.*PI) CALL PLOT (0., B, 3) CALL PLOT (.1, B, 2) CP IF (A .EQ. 0.) CALL PLOT (0.2, B, 2) CALL PLOT (8., B, 3) CALL PLOT (7.9, B, 2) CP IF (A .EQ. 0.) CALL PLOT (7.8, B, 2) IF (A .EQ. 0.) CALL DASH (0.,B, 8., B, 60) WRITE (CARD$,'(F4.0)') A + 180. CALL SYMBOL (-.3, B - 0.0375, 0.075, CARD$, 0., 3) CALL SYMBOL (8.1, B - 0.0375, 0.075, CARD$, 0., 3) ENDDO C WRITE (CARD$, '(A11,2X,''('',A3,'')|0'')') 'GEOTAIL MGF',KMGF C CARD$ = '|4The University of Iowa '//CARD$(1:20)//CHAR(0) I = SYMS (0., 6.65, 0.2, BARD, 0., 46,-1) C CALL JDATE (JULT,ID,IM,IYR) CALL JDOY (IM,ID,IYR, IDOY) IMX = 3*(IM - 1) + 1 ILNG = SPAN/1000 NHR = ILNG/3600 NMN = MOD(ILNG/60,60) NSC = MOD(ILNG,60) C IF (LFMT .EQ. 3) THEN WRITE (CARD$, '(I2.2,''-'',I3.3,'' (''A3,1X,I2.2,'')'', + I3.2,2('':'',I2.2),''.'',I3.3,'' UT'')') + MOD(IYR,100),IDOY,MO$(IMX:IMX+2),ID, + (MOD((MSEC/1000)/60**I,60),I=2,0,-1), MOD(MSEC,1000) I = SYMS (0., 6.3, 0.15, BARD, 0., 31, -1) ELSE IF (LFMT .EQ. 2) THEN WRITE (CARD$, '(I2.2,''-'',I3.3,'' (''A3,1X,I2.2,'')'', + I3.2,2('':'',I2.2),'' UT'')') + MOD(IYR,100),IDOY,MO$(IMX:IMX+2),ID, + (MOD((MSEC/1000)/60**I,60),I=2,0,-1) I = SYMS (0., 6.3, 0.15, BARD, 0., 27, -1) C IF (NHR .GT. 0 .AND. NMN .EQ. 0) THEN !XX HRS WRITE (CARD$,'(I3.2,'' hrs'')') NHR NCH = 7 ELSE IF (NHR .GT. 0 .AND. NMN .GT. 0) THEN !XX HRS YY MIN WRITE (CARD$,'(I3.2,'' hrs '',I2.2,'' mins'')') NHR,NMN NCH = 16 ELSE !00 HRS IF (NSC .GT. 0) THEN ! YY.Y MIN WRITE (CARD$,'(F5.1,'' mins'')') SPAN/60000. NCH = 10 ELSE ! YY MIN WRITE (CARD$,'(I2.2,'' mins'')') NMN NCH = 6 ENDIF ENDIF C I = SYMS (8.0, 6.3, 0.15, BARD, 0., NCH, +1) C CARD$ = 'B|\x'//CHAR(0) I = SYMS (-.7, 5.5, 0.15, BARD, 0., 4, 0) CARD$ = 'B|\y'//CHAR(0) I = SYMS (-.7, 4.5, 0.15, BARD, 0., 4, 0) CX NT = + BMINT CX WRITE (CARD$,'(''+/-'',I5,'' nT'')') NT CX? I = SYMS (-.3, 4.5, 0.15, BARD, 90., 12, 0) CX CALL SYMBOL (-.5, 3.75, 0.15, CARD$, 90., 12) CARD$ = 'B|\z'//CHAR(0) I = SYMS (-.7, 3.5, 0.15, BARD, 0., 4, 0) CARD$ = 'B|\T'//CHAR(0) I = SYMS (-.7, 2.5, 0.15, BARD, 0., 4, 0) CARD$ = '|`- (nT)'//CHAR(0) I = SYMS (-.7, 3.0, 0.15, BARD, 0., 8, 0) CARD$ = '|5T(u)'//CHAR(0) I = SYMS (-.85, 1.5, 0.15, BARD, 0., 6, -1) CARD$ = '|5w(u)'//CHAR(0) I = SYMS (-.85, 0.5, 0.15, BARD, 0., 6, -1) C ENDIF C C TIME LABELS C ISPAN = SPAN/1000 ITIME = MSEC CALL TIMTIC (SPAN, NT,MT, TDEL) NTIC = NT*MT C DO I=0,NTIC X = 8.*I/NTIC CALL PLOT (X,0., 3) CALL PLOT (X,-.1,2) CALL PLOT (X,YAXIS, 3) CALL PLOT (X,YAXIS + .1, 2) C IF (MOD(I,MT) .EQ. 0) THEN CALL PLOT (X,0., 3) CALL PLOT (X,-.2,2) CALL PLOT (X,YAXIS, 3) CALL PLOT (X,YAXIS + .2, 2) M = MOD(ITIME/1000, 86400) C IF (LFMT .EQ. 3) THEN WRITE (CARD$,'(I2.2,2('':'',I2.2))') + (MOD(M/60**J,60),J=2,0,-1) X = X - 4*0.15*6./7. CALL SYMBOL (X,-0.4, 0.15, CARD$,0., 8) ELSE IF (LFMT .EQ. 2) THEN IF (MOD(ISPAN/NT, 60) .EQ. 0) THEN WRITE (CARD$,'(I2.2,'':'',I2.2)') + (MOD(M/60**J,60),J=2,1,-1) X = X - 2.5*0.15*6./7. CALL SYMBOL (X,-0.4, 0.15, CARD$,0., 5) ELSE WRITE (CARD$,'(I2.2,2('':'',I2.2))') + (MOD(M/60**J,60),J=2,0,-1) X = X - 4*0.15*6./7. CALL SYMBOL (X,-0.4, 0.15, CARD$,0., 8) ENDIF IF (I .EQ. NTIC .AND. MOD(ISPAN/NT,60) .EQ. 0) THEN X = X - 2.5*0.15*6./7. CALL SYMBOL (X,-0.4, 0.15, 'UT',0., 2) ENDIF ENDIF C ITIME = ITIME + MT*TDEL ENDIF ENDDO CX CALL DUMP RETURN C C PLOT VERSION C ENTRY PMGVER (PRG$,VER$) CALL SYMBOL (9.1, -0.4, 0.10, PRG$//' '//VER$, 90., 15) RETURN C C PLOT RUN TIME C ENTRY PMGRUN (DATE$) CARD$ = 'PROCESSED '//DATE$(1:16) CD PRINT *,CARD$(1:60) CALL SYMBOL (9.1, 2.5, 0.10, CARD$, 90., 26) RETURN C ENTRY PMGINP (KED,IO$) IC = MAX (1, INDEX(IO$,';') + 1) ! PRINT *,IC,IO$ IF (KED .EQ. 1 .OR. KED .EQ. 2) THEN CARD$ = 'editor '//ED$(KED:KED) CALL SYMBOL (0., -0.7, 0.10, CARD$, 0., 8) IB = INDEX(IO$, ' ') CALL SYMBOL (0.90, -0.7, 0.10, IO$(1:MAX(IB,1)), 0., IB) ELSE IB = INDEX(IO$, ' ') WRITE (CARD$,'(A,A3,2X,A,A1)') 'SANCTIONED DATA FROM ', + KED,IO$(1:MAX(IB,1)),'#' IB = INDEX(CARD$,'#') CALL SYMBOL (0., -0.7, 0.10, CARD$, 0., IB-1) ENDIF C*** CARD$ = 'B LIMIT (nT) = ' CALL SYMBOL (6.0, -0.7, 0.10, CARD$, 0., 15) CALL NUMBER (7.6, -0.7, 0.10, BLIM(1), 0., 1) RETURN END SUBROUTINE RDFUJI (MSEC,BXYZ,RMS,POS,TILT,KRNG, ISTAT) CHARACTER CARD$*80 DIMENSION POS(3),BXYZ(3) C C RDFUJI - READ BLESSED MGF DATA C ISTAT = 1 1 READ (10,'(A)',END=999) CARD$ READ (CARD$,'(3(I2,1X),I3)',ERR=1) IHR,IMIN,ISEC,MSEC MSEC = MSEC + 1000*(60*(IHR*60 + IMIN) + ISEC) CARD$ = CARD$(13:80) READ (CARD$,*) BXYZ,RMS,POS,TILT,KRNG RETURN 999 ISTAT = 5 RETURN END