Document title: Documentation Package for ISEE 3 High Resolution Magnetometer Data Keyid: 78-079A-02Q 78-079A-02R TRF entry: b49616.txt in NSSDC's controlled digital document library, April 2000. Document text follows: ---------------------- Documentation Package for ISEE 3 High Resolution Magnetometer Data From: SMTP%"Joyce.E.Wolf@jpl.nasa.gov" 25-FEB-2000 18:30:32.95 To: HILLS CC: Subj: Documentation for ISEE-3 High Resolution Data ISEE3/ICE Magnetometer Flatfiles This data set contains ISEE3/ICE Magnetometer high resolution data. This documentation accompanies the first two (test) CD's, submitted on 24 Feb 2000. Their labels are 82345_83048 and 83045_83112, and they contain data from 1982 Day 345 (11 Dec) through 1983 Day 092 (2 April). The CD volumes are formatted with VAX/VMS file structure. The data files are VAX/VMS binary and the filenames are of the form I3yyddd.FFD. Each data file has a matching text header file named I3yyddd.FFH. In the filename, yyddd is the two-digit year and day number of the first day in the file. One data file usually contains four days of data. These files may be processed with software designed to handle "flat files" as developed at UCLA. The data file format is very simple: Each record is 24 bytes. The first 8 bytes are TIME (real*8, D_FLOATING), followed by four real*4 words containing BX, BY, BZ, BT. TIME is measured in calendar seconds from 1 Jan 1966 00:00 (leap seconds are not counted). BX, BY, and BZ are components of the field vector in nanoTesla in Solar Ecliptic coordinates, where +Z is the northward perpendicular to the Ecliptic and +X is in the direction from the spacecraft to the Sun. BT is the field magnitude in nT; since these data are not averaged, BT is just the magnitude of the vector (BX,BY,BZ). -Joyce Wolf email: Joyce.Wolf@jpl.nasa.gov phone: (818)354-7361 Attachments: (1) Directory Listing of 82345_83048 and 83045_83112 (2) Start/Stop of files on 82345_83048 and 83045_83112 (3) Fortran Program that extracts data from these files _______________________________________________________________________ "82345_83048" Directory $10$DUD4:[IC3HIRES] I382345.FFD;1 72452 16-DEC-1991 10:02:26.53 I382345.FFH;1 4 16-DEC-1991 10:08:40.99 I382349.FFD;1 77264 16-DEC-1991 10:08:42.46 I382349.FFH;1 3 16-DEC-1991 10:15:28.75 I382353.FFD;1 74786 21-JAN-1992 13:54:18.23 I382353.FFH;1 7 21-JAN-1992 14:00:59.04 I382357.FFD;1 85118 21-JAN-1992 14:01:00.64 I382357.FFH;1 3 21-JAN-1992 14:08:37.70 I382361.FFD;1 88723 21-JAN-1992 14:53:34.59 I382361.FFH;1 5 21-JAN-1992 15:01:53.32 I382365.FFD;1 18501 21-JAN-1992 15:02:42.33 I382365.FFH;1 4 21-JAN-1992 15:04:26.70 I383001.FFD;1 85645 21-JAN-1992 15:06:18.75 I383001.FFH;1 4 21-JAN-1992 15:14:24.80 I383005.FFD;1 82210 21-JAN-1992 15:15:22.58 I383005.FFH;1 24 21-JAN-1992 15:23:14.80 I383009.FFD;1 85043 22-JAN-1992 08:53:09.49 I383009.FFH;1 4 22-JAN-1992 09:00:11.55 I383013.FFD;1 81411 22-JAN-1992 09:03:24.60 I383013.FFH;1 3 22-JAN-1992 09:10:19.35 I383017.FFD;1 78866 22-APR-1992 10:33:39.02 I383017.FFH;1 4 22-APR-1992 10:40:11.84 I383021.FFD;1 84895 22-APR-1992 10:40:12.92 I383021.FFH;1 23 22-APR-1992 10:47:22.46 I383025.FFD;1 69088 22-APR-1992 10:47:23.87 I383025.FFH;1 3 22-APR-1992 10:53:23.61 I383029.FFD;1 81410 22-APR-1992 10:53:26.21 I383029.FFH;1 3 22-APR-1992 11:00:31.90 I383033.FFD;1 77352 22-APR-1992 11:00:33.22 I383033.FFH;1 3 22-APR-1992 11:07:19.88 I383037.FFD;1 76322 22-APR-1992 11:07:20.70 I383037.FFH;1 7 22-APR-1992 11:14:25.49 I383041.FFD;1 76056 22-APR-1992 11:14:26.53 I383041.FFH;1 9 22-APR-1992 11:21:21.91 Total of 34 files, 1295255 blocks. "83045_83112" Directory $10$DUD4:[IC3HIRES] I383045.FFD;1 74066 7-MAY-1992 14:59:24.99 I383045.FFH;1 5 7-MAY-1992 15:05:53.83 I383049.FFD;1 75717 21-MAY-1992 11:39:14.99 I383049.FFH;1 4 21-MAY-1992 11:45:59.66 I383053.FFD;1 70394 21-MAY-1992 11:46:01.01 I383053.FFH;1 4 21-MAY-1992 11:52:22.52 I383057.FFD;1 66719 21-MAY-1992 11:52:24.04 I383057.FFH;1 4 21-MAY-1992 11:58:24.98 I383061.FFD;1 79253 21-MAY-1992 11:58:27.53 I383061.FFH;1 3 21-MAY-1992 12:05:38.23 I383065.FFD;1 80913 21-MAY-1992 12:05:39.08 I383065.FFH;1 4 21-MAY-1992 12:12:58.71 I383069.FFD;1 78322 21-MAY-1992 12:12:59.66 I383069.FFH;1 18 21-MAY-1992 12:20:22.82 I383073.FFD;1 76437 21-MAY-1992 12:20:23.90 I383073.FFH;1 6 21-MAY-1992 12:27:16.70 I383077.FFD;1 77472 21-MAY-1992 12:27:17.79 I383077.FFH;1 4 21-MAY-1992 12:34:17.52 I383081.FFD;1 77773 1-JUL-1992 14:15:49.24 I383081.FFH;1 5 1-JUL-1992 14:22:24.43 I383085.FFD;1 79634 1-JUL-1992 14:22:25.49 I383085.FFH;1 7 1-JUL-1992 14:29:14.71 I383089.FFD;1 71922 1-JUL-1992 14:29:15.82 I383089.FFH;1 5 1-JUL-1992 14:35:26.40 I383093.FFD;1 82942 1-JUL-1992 14:35:28.71 I383093.FFH;1 illegal logical block number I383097.FFD;1 illegal logical block number I383097.FFH;1 illegal logical block number I383101.FFD;1 illegal logical block number I383101.FFH;1 illegal logical block number I383105.FFD;1 illegal logical block number I383105.FFH;1 illegal logical block number I383109.FFD;1 illegal logical block number I383109.FFH;1 illegal logical block number Total of 34 files, 991633 blocks. _______________________________________________________________________ ****************************** $10$DUD4:[IC3HIRES]I382345.FFH;1 FIRST TIME = 82 345 DEC 11 00:00:00.051 LAST TIME = 82 348 DEC 14 23:59:59.696 ****************************** $10$DUD4:[IC3HIRES]I382349.FFH;1 FIRST TIME = 82 349 DEC 15 00:00:00.033 LAST TIME = 82 352 DEC 18 19:43:54.972 ****************************** $10$DUD4:[IC3HIRES]I382353.FFH;1 FIRST TIME = 82 353 DEC 19 00:32:36.467 LAST TIME = 82 356 DEC 22 23:59:59.820 ****************************** $10$DUD4:[IC3HIRES]I382357.FFH;1 FIRST TIME = 82 357 DEC 23 00:00:00.152 LAST TIME = 82 360 DEC 26 23:59:59.825 ****************************** $10$DUD4:[IC3HIRES]I382361.FFH;1 FIRST TIME = 82 361 DEC 27 00:00:00.157 LAST TIME = 82 364 DEC 30 23:59:59.681 ****************************** $10$DUD4:[IC3HIRES]I382365.FFH;1 FIRST TIME = 82 365 DEC 31 00:00:00.014 LAST TIME = 82 365 DEC 31 23:59:54.941 ****************************** $10$DUD4:[IC3HIRES]I383001.FFH;1 FIRST TIME = 83 001 JAN 1 00:00:02.270 LAST TIME = 83 004 JAN 4 23:59:59.811 ****************************** $10$DUD4:[IC3HIRES]I383005.FFH;1 FIRST TIME = 83 005 JAN 5 00:00:00.143 LAST TIME = 83 008 JAN 8 23:59:59.680 ****************************** $10$DUD4:[IC3HIRES]I383009.FFH;1 FIRST TIME = 83 009 JAN 9 00:00:00.016 LAST TIME = 83 012 JAN 12 23:59:59.731 ****************************** $10$DUD4:[IC3HIRES]I383013.FFH;1 FIRST TIME = 83 013 JAN 13 00:00:00.064 LAST TIME = 83 016 JAN 16 23:59:59.783 ****************************** $10$DUD4:[IC3HIRES]I383017.FFH;1 FIRST TIME = 83 017 JAN 17 00:00:00.115 LAST TIME = 83 020 JAN 20 23:59:59.680 ****************************** $10$DUD4:[IC3HIRES]I383021.FFH;1 FIRST TIME = 83 021 JAN 21 00:00:00.012 LAST TIME = 83 024 JAN 24 23:59:59.743 ****************************** $10$DUD4:[IC3HIRES]I383025.FFH;1 FIRST TIME = 83 025 JAN 25 00:00:00.075 LAST TIME = 83 028 JAN 28 23:59:43.485 ****************************** $10$DUD4:[IC3HIRES]I383029.FFH;1 FIRST TIME = 83 029 JAN 29 00:00:28.298 LAST TIME = 83 032 FEB 1 23:59:59.715 ****************************** $10$DUD4:[IC3HIRES]I383033.FFH;1 FIRST TIME = 83 033 FEB 2 00:00:00.047 LAST TIME = 83 036 FEB 5 23:59:59.786 ****************************** $10$DUD4:[IC3HIRES]I383037.FFH;1 FIRST TIME = 83 037 FEB 6 00:00:00.123 LAST TIME = 83 040 FEB 9 23:59:59.715 ****************************** $10$DUD4:[IC3HIRES]I383041.FFH;1 FIRST TIME = 83 041 FEB 10 00:00:00.048 LAST TIME = 83 044 FEB 13 23:59:59.807 ****************************** $10$DUD4:[IC3HIRES]I383045.FFH;1 FIRST TIME = 83 045 FEB 14 00:00:00.144 LAST TIME = 83 048 FEB 17 23:59:59.744 ****************************** $10$DUD4:[IC3HIRES]I383049.FFH;1 FIRST TIME = 83 049 FEB 18 00:00:00.077 LAST TIME = 83 052 FEB 21 23:59:59.687 ****************************** $10$DUD4:[IC3HIRES]I383053.FFH;1 FIRST TIME = 83 053 FEB 22 00:00:00.019 LAST TIME = 83 056 FEB 25 23:59:59.798 ****************************** $10$DUD4:[IC3HIRES]I383057.FFH;1 FIRST TIME = 83 057 FEB 26 00:00:00.131 LAST TIME = 83 060 MAR 1 23:59:59.769 ****************************** $10$DUD4:[IC3HIRES]I383061.FFH;1 FIRST TIME = 83 061 MAR 2 00:00:00.100 LAST TIME = 83 064 MAR 5 23:59:59.727 ****************************** $10$DUD4:[IC3HIRES]I383065.FFH;1 FIRST TIME = 83 065 MAR 6 00:00:00.063 LAST TIME = 83 068 MAR 9 23:59:59.694 ****************************** $10$DUD4:[IC3HIRES]I383069.FFH;1 FIRST TIME = 83 069 MAR 10 00:00:00.026 LAST TIME = 83 072 MAR 13 23:59:59.825 ****************************** $10$DUD4:[IC3HIRES]I383073.FFH;1 FIRST TIME = 83 073 MAR 14 00:00:00.161 LAST TIME = 83 076 MAR 17 23:59:59.798 ****************************** $10$DUD4:[IC3HIRES]I383077.FFH;1 FIRST TIME = 83 077 MAR 18 00:00:00.130 LAST TIME = 83 080 MAR 21 23:59:59.772 ****************************** $10$DUD4:[IC3HIRES]I383081.FFH;1 FIRST TIME = 83 081 MAR 22 00:00:00.105 LAST TIME = 83 084 MAR 25 23:59:59.741 ****************************** $10$DUD4:[IC3HIRES]I383085.FFH;1 FIRST TIME = 83 085 MAR 26 00:00:00.077 LAST TIME = 83 088 MAR 29 23:59:59.702 ****************************** $10$DUD4:[IC3HIRES]I383089.FFH;1 FIRST TIME = 83 089 MAR 30 00:00:00.035 LAST TIME = 83 092 APR 2 23:59:59.806 _______________________________________________________________________ c--GETBANAL (written by Joyce Wolf, JPL) c--Extracts interval of magnetic field data from FFD file c--input file is opened for direct access on unit 8 c-- ASCII output will go to FOR009.DAT c--Calls flatfile time conversion routines tconi, icont. c character*64 filename real*8 time1,time2,tstart,tstop,time integer*4 i1(8) /8*0/ integer*4 i2(8) /8*0/ integer*4 it(8) /8*0/ real*4 fill /1.e33/ c type 101 101 format (' Enter Banal data file name with .FFD > ',$) accept 100, filename 100 format (a) open (8,file=filename,status='old',readonly,access='direct', 1 form='unformatted') type *, 'Opened FILE ', filename read (8,rec=1) tstart call findlast (2,nlast) read (8,rec=nlast) tstop type *, 'File Start, Stop' call tconi (tstart,it) sec = it(7) + it(8)/1000. iyr = it(1) iday = it(2) ihr = it(5) imin = it(6) type 201, iyr,iday,ihr,imin,sec 201 format (' ',i2,i4.3,2i3.2,f7.3) call tconi (tstop,it) sec = it(7) + it(8)/1000. iyr = it(1) iday = it(2) ihr = it(5) imin = it(6) type 201, iyr,iday,ihr,imin,sec type *, ' ' c type 102 102 format (' Enter Output Start (YY DDD HH MM) >',$) accept *, i1(1), i1(2), i1(5), i1(6) type 103 103 format (' Enter Output Stop (YY DDD HH MM) >',$) accept *, i2(1), i2(2), i2(5), i2(6) call icont (i1, time1) call icont (i2, time2) 4 type 104 104 format (' Seconds Format: Enter 1 for I2, 2 for F7.3 >',$) accept *, ifmt c c call findtime (time1, nlast, nfound) if (nfound.eq.0) go to 900 nrec = nfound nwrite = 0 nflag = 0 c do while (.true.) read (8,rec=nrec) time,bx,by,bz,bmag if (time.gt.time2) go to 900 call tconi (time,it) sec = it(7) + it(8)/1000. iyr = it(1) iday = it(2) ihr = it(5) imin = it(6) isec = sec +.5 if (abs(bx).ge.fill .or.abs(by).ge.fill .or. abs(bz).ge.fill 1 .or. bmag.ge.fill) then nflag = nflag + 1 go to 221 end if if (ifmt.eq.1) write (9,202) iyr,iday,ihr,imin,isec,bx,by,bz,bmag if (ifmt.eq.2) write (9,203) iyr,iday,ihr,imin,sec,bx,by,bz,bmag 202 format (' ',i2,i4.3,3i3.2, 4f8.3) 203 format (' ',i2,i4.3,2i3.2,f7.3,4f8.3) c-- if (mod(nrec,1000).eq.0) type *, nwrite, iyr,iday,ihr,imin nwrite = nwrite +1 221 continue nrec = nrec + 1 if (nrec.gt.nlast) go to 900 end do c 900 continue type *, nwrite, ' Records written to FOR009.DAT' type *, nflag, ' Flagged records not written' end c------------------------------------------------------------------------ subroutine findlast (iform, nlast) c-- Assume file is opened for direct access on unit 8. c-- Iform = 1 for formatted, 2 for unformatted c-- NLAST is returned number of last record in file c i = 0 do while (.true.) i = i + 1 ntry = 2**i if (iform.eq.2) read (8,rec=ntry,err=121) if (iform.eq.1) read (8,'(a)',rec=ntry,err=121) end do c 121 ntry = 2**(i-1) j = i - 1 do while (j.gt.0) j = j - 1 ntry = ntry + 2**j if (iform.eq.2) read (8,rec=ntry,err=131) if (iform.eq.1) read (8,'(a)',rec=ntry,err=131) go to 132 131 ntry = ntry - 2**j 132 continue end do nlast = ntry return end c------------------------------------------------------------------------- subroutine findtime (time1, maxrec,nfound) c real*8 time1,time c c This subroutine searches a Banal data file opened for direct access on c unit 8, whose records contain TIME, REAL*8, as the first field. It c returns the record number of the first record which is equal to or later c than the input TIME1. MAXREC is the input maximum number of c records in the file. Nfound = 0 if TIME1 is later than c the last record in the file. c ntry = 0 max2 = alog(float(maxrec))/alog(2.0) c do j=max2,0,-1 if (ntry+2**j.le.maxrec) then ntry = ntry + 2**j read (8,rec=ntry) time if (time.gt.time1) ntry = ntry - 2**j end if end do c if (time1.eq.time) then nfound = ntry else nfound = ntry + 1 end if if (nfound.gt.maxrec) nfound = 0 c return end c------------------------------------------------------------------------ c--The following flatfile time routines were obtained from UCLA. C*********************************************************************** C MODULE: ICONT C*********************************************************************** C PURPOSE: Convert integer array time to a real*8 time. C C AUTHOR: NEC DATE: 1/24/80 C C ARGUMENTS TYPE (R=RETURNED) FUNCTION C IT(8) I Integer time array of eight elements: C The format is the same as described in ACONI. C Years 0-99 represent 1900-1999. If the C day of year is not zero it takes precedence over C the month and day of month. C T R*8 Returned. Seconds since 1966, Jan 1 00:00:00.000 C C UPDATES: (WHAT,WHY,WHOM,WHEN) C*********************************************************************** SUBROUTINE ICONT (IT,T) PARAMETER (DN0=77906.) INTEGER IT(8) DOUBLE PRECISION T C LOGICAL FIRST C DATA FIRST/.TRUE./ C C IF (FIRST) DN0=DAY(1,1,1966) C FIRST=.FALSE. IY=IT(1) c IF (IY.LT. 51) IY=2000+IY IF (IY.LT.100) IY=1900+IY IF(IT(2).EQ.0) THEN DN=DAY(IT(4),IT(3),IY) ELSE DN=DAY(1,1,IY) + IT(2) - 1 END IF T=86400.D0*(DN-DN0) T=T+3600.D0*IT(5)+60.D0*IT(6)+IT(7)+.001D0*IT(8) RETURN END C*********************************************************************** C MODULE: TCONI C*********************************************************************** C PURPOSE: Convert real*8 time to integer array time. C C AUTHOR: NEC DATE: 6/04/81 C C ARGUMENTS TYPE (R=RETURNED) FUNCTION C T R*8 Seconds since 1966, Jan 1 00:00:00.000 C IT(8) I Returned. Eight element integer time array. C The format is the same as described in ACONI. C Years 0-99 represent 1900-1999. C C UPDATES: (WHAT,WHY,WHOM,WHEN) C gdm 10/07/86 Updated to handle negative times (before 1966). C*********************************************************************** SUBROUTINE TCONI(TX,IT) DOUBLE PRECISION T, TX, TD REAL D, DD , DN0 PARAMETER (DN0=77906.) ! Days from Sept 13, 1752 to Jan 1, 1966. INTEGER IT(8), JT(8) INTEGER*4 JD, S, SS C LOGICAL FIRST SAVE DD,SS,JT DATA SS/0/, DD/0./, JT/66,1,1,1,0,0,0,0/ C DATA FIRST /.TRUE./ C IF(FIRST) DN0=DAY(1,1,1966) C FIRST=.FALSE. C C ROUND TO NEAREST MILLISECOND. THIS ROUNDS POSITIVE HALVES UP, C BUT ROUNDS NEGATIVE HALVES DOWN, WHICH IS NOT TECHNICALLY OK BUT C WE'LL LET IT STAY. T = DNINT(TX*1000.D0) C TRUNCATE TO NEXT LOWEST INTEGER (WORKS FOR NEGATIVE TIMES TOO) C ADD A CONSTANT TO MAKE IT POSITIVE, TRUNCATE TO INTEGER, THEN SUBTRACT C THE CONSTANT. C (THE HP CAN COUNT WITH SINGLE PRECISION UP TO 8,388,610. SO THIS C WILL WORK FOR 8388610/365.25 = 22966 YEARS AFTER 1752) TD = T/86400.D3 JD = ABS(TD) + 1. D = DINT (TD + JD) - JD IF(D.EQ.DD) GO TO 20 DD=D CALL DATT (D+DN0,JT(4),JT(3),JT(1)) JT(2)=DAY(JT(4),JT(3),JT(1)) - DAY(1,1,JT(1)) + 1. IF(1899.LT.JT(1).AND.JT(1).LT.2000) JT(1) = JT(1) - 1900 20 S = T - 86400.D3 * D IF(S.EQ.SS) GO TO 30 SS=S JT(8)=MOD(S,1000) S = S/1000 JT(7)=MOD(S,60) S=S/60 JT(6)=MOD(S,60) JT(5)=S/60 30 DO 40 I=1,8 40 IT(I)=JT(I) RETURN END C*********************************************************************** C MODULE: DAY C*********************************************************************** C PURPOSE: Convert a Gregorian calendar date to the number of days C since 13th September 1752. C AUTHOR: NEC DATE: 1/24/80 C C UPDATES: (WHAT,WHY,WHOM,WHEN) C C*********************************************************************** FUNCTION DAY (IDAY, MONTH, IYEAR) C C I = IYEAR M = MONTH - 3 IF (M .GE. 0) GOTO 10 M = M + 12 I = I - 1 10 K = I / 100 - 16 I = MOD(I, 100) DAY = 36524.0 * FLOAT(K) + 365.0 * FLOAT(I) + * FLOAT(K / 4 + I / 4 + (153 * M + 2) / 5 + IDAY) - 55714.0 RETURN END C*********************************************************************** C MODULE: DATT C*********************************************************************** C PURPOSE: Convert D, which should be positive and integral, C to the corresponding Gregorian date. C AUTHOR: NEC DATE: 1/24/80 C C UPDATES: (WHAT,WHY,WHOM,WHEN) C C*********************************************************************** SUBROUTINE DATT (D, IDAY, MONTH, IYEAR) C C DD = D + 445711.0 / 8.0 K = INT((4.0 * DD) / 146097.0) DD = DD - 36524.0 * FLOAT(K) - FLOAT(K / 4) I = INT((4.0 * DD) / 1461.0) DD = DD - 365.0 * FLOAT(I) - FLOAT(I / 4) I = 100 * (K + 16) + I K = INT(5.0 * DD - 1.875) M = K / 153 K = (K - 153 * M + 5) / 5 IF (M .GT. 9) GOTO 10 MONTH = M + 3 GOTO 20 10 MONTH = M - 9 I = I + 1 20 IYEAR = I IDAY = K RETURN END