! -*- Fortran -*- ! Time-stamp: <struct.inc Fri Jul 11 18:04:53 MET DST 1997> !+ ! NAME: ! STRUCT.INC ! OUTPUTS: ! CHARACTER seq*1 ! A: parameter structure GEN ! ! B: raw data structures NDM, HDM1, HDM2 ! COMMON BLOCKS: ! COMMON /ALL/ GEN ! COMMON /ALL0/ NDM ! COMMON /ALL1/ HDM1 ! COMMON /ALL2/ HDM2 ! PROCEDURE: ! Structure GEN is updated by: ! CLR_GEN clears all entries ! FILL_GEN fills STRUCTURE with data from 1 dim. parameter tape ! FILL_GEN_FAKE fills STRUCTURE with data from Sorted Data tape ! FILL_NDM only GEN.I2A_B and GEN.AzShift entries ! FILL_HDM1 only GEN.AzShift entry ! FILL_HDM2 only GEN.AzShift entry ! ! STRUCTURE NDM is updated by: ! FILL_NDM ! ! STRUCTURE HDM1 is updated by: ! FILL_HDM1 ! ! STRUCTURE HDM2 is updated by: ! FILL_HDM2 ! COMMENTS: ! The data for each spectrum is contained in two separate records: ! a parameter record and a raw data record. The parameter record ! contains orbit/attitude information and all hydrodynamic ! quantities and is read using the Fortran structure GEN. The raw ! data record contains the raw count rate data and is read using the ! Fortran structures NDM, HDM1 or HDM2, depending on the data mode ! and format. ! The unnecessary character byte 'seq' in each DM structure throws ! off any 2,4,8-byte boundary aligning. An alignment compiler option ! will have to be used with some compilers: /NOALIGN, /ALIGN=NONE, ! /ALIGN=PACKED, /ALIGN=(RECORDS=PACKED,COMMONS=PACKED) ! MODIFICATION HISTORY: ! Feb/Mar 1992, Rainer Schwenn (MPAe)/Paul Hick (UCSD) ! Nov 96, Jul 97, Kevin Ivory (MPAe) formatting, comments & DEC options !- !DEC$ OPTIONS /NOALIGN /WARN=NOALIGN STRUCTURE /GEN_STRUCT/ CHARACTER mSec*8 ! Time of day (1,...,86400000 ms) CHARACTER seq*1 ! Sequence character 'A' BYTE Year ! Year-1900 (74,...,85 a) INTEGER*2 Doy ! Day of year (1,...,366 d) BYTE Helios ! S/C ID (1,2) BYTE Mode ! 0=NDM,1=HDM;10=NDM,11=HDM; >1: no raw data INTEGER*2 BitRate ! Bitrate (bps: 2^(3,...,12)) BYTE Format ! Format (1,2,3,5) BYTE DisMod ! Distribution mode (0,...,7) BYTE Shift ! Alternating shift: 0=no shift; 1=shift BYTE AzShift ! Perihelion shift: 0=no shift; 1=shift BYTE I1A_3 ! 1=I1A on; 2=I3 on; 0=both off BYTE I2A_B ! 1=I2A on; 2=I2B on REAL*4 SpinRate ! Average spin rate (1/s) REAL*4 Pitch ! Pitch angle (deg) REAL*4 Aspect ! Solar aspect angle (deg) REAL*4 HelLngAsc ! Heliographic longitude (from ascending node) REAL*4 HelDisSun ! Heliocentric distance (0.29,...,1.0 AU) REAL*4 HelVrad ! Radial velocity Helios (AU/day) REAL*4 HelVnorm ! Normal velocity Helios (AU/day) REAL*4 HelCarLng ! Carrington longitude Helios (deg) REAL*4 HelCarLat ! Heliographic latitude (deg) INTEGER*2 HelCarRot ! Carrington rotation number Helios REAL*4 EarDisSun ! Heliocentric distance of Earth (AU) REAL*4 EarCarLng ! Carrington longitude Earth (deg) REAL*4 EarCarLat ! Heliographic latitude Earth (deg) INTEGER*2 EarCarRot ! Carrington rotation number Earth REAL*4 HSEangle ! Helios-Sun-Earth angle (deg) REAL*4 Vp_I1A ! Proton velocity (km/s) REAL*4 Tp_I1A ! Proton temperature (K) REAL*4 Np_I1A ! Proton density (cm^-3) REAL*4 AZp_I1A ! Azimuthal flow angle (deg) REAL*4 ELp_I1A ! Elevational flow angle (deg) REAL*4 Valpha ! Helium velocity (km/s) REAL*4 Talpha ! Helium temperature (K) REAL*4 Nalpha ! Helium density (cm^-3) REAL*4 ZeroRate_I1A ! Average zero count rate REAL*4 Vp_I1B ! Proton velocity (km/s) REAL*4 Tp_I1B ! Proton temperature (K) REAL*4 Np_I1B ! Proton density (cm^-3) REAL*4 ZeroRate_I1B ! Zero count rate average REAL*4 ZeroVar_I1B ! Zero count rate variation REAL*4 Bx ! Magnetic field x (0.01 nT) REAL*4 By ! Magnetic field y (0.01 nT) REAL*4 Bz ! Magnetic field z (0.01 nT) REAL*4 BxSig ! Magnetic field sigma x (0.01 nT) REAL*4 BySig ! Magnetic field sigma y (0.01 nT) REAL*4 BzSig ! Magnetic field sigma z (0.01 nT) REAL*4 I1Aint(5) ! Raw data finger print / from 1 dim. \ REAL*4 I1B(5) ! Raw data finger print \ parameter tape/ END STRUCTURE ! 198 bytes STRUCTURE /NDM_STRUCT/ ! Used when GEN.Mode = 0 CHARACTER mSec*8 ! Time of day (1,...,86400000 ms) CHARACTER seq*1 ! Sequence character 'B' INTEGER*4 Init(8) ! Initial data quality words INTEGER*4 Qw(5) ! Instrument quality words BYTE MaxEl ! Elevation index of max (1,...,8) BYTE MaxAz ! Azimuth index of max (1,...,16) BYTE MaxEn ! Energy index of max (1,...,32) BYTE Mass ! Mass channel index (instrument I3) REAL*4 I1B(32) ! Complete integrated I1b data REAL*4 I1Aint(32) ! (Az & El)-integrated I1a/I3 data INTEGER*4 I2AB(8,16) ! Electron data (instrument I2 a or b) REAL*4 I1A_3(5,5,9) ! Proton+alpha data (instruments I1a/I3) ! (el,az,en) -> (maxel-2:maxel+2,maxaz-2:maxaz+2,maxen-2:maxen+6) END STRUCTURE ! 1733 bytes STRUCTURE /HDM1_STRUCT/ ! Used when GEN.Mode=1, GEN.Format=1,5 CHARACTER mSec*8 ! Time of day (1,...,86400000 ms), EDF 1 CHARACTER seq*1 ! Sequence character 'B' INTEGER*4 mSecE(2:4) ! Times of EDF 2,3,4 INTEGER*4 Init(8,4) ! Initial data quality words INTEGER*4 Qw(5,4) ! Instrument quality words BYTE MaxEl(4) ! Elevation index of max (1,...,8) BYTE MaxAz(4) ! Azimuth index of max (1,...,16) BYTE MaxEn(4) ! Energy index of max (1,...,32) BYTE Mass(4) ! Mass channel index (instrument I3) REAL*4 I1B(32) ! Complete integrated I1b data REAL*4 I1Aint(32) ! (Az & El)-integrated I1a/I3 data INTEGER*4 I2AB(8,32) ! Electron data (instrument I2 a and b) REAL*4 I1A_3(7,7,32) ! Proton+alpha data (instrument I1a/I3) ! (el,az,en) -> (2:7,5:11,1:32) END STRUCTURE ! 7797 bytes STRUCTURE /HDM2_STRUCT/ ! Used when GEN.Mode=1, GEN.Format=2,3 CHARACTER mSec*8 ! Time of day (1,...,86400000 ms), EDF 1 CHARACTER seq*1 ! Sequence character 'B' INTEGER*4 mSecE(2:4) ! Times of EDF 2,3,4 INTEGER*4 Init(8,4) ! Initial data quality words INTEGER*4 Qw(5,4) ! Instrument quality words BYTE MaxEl(4) ! Elevation index of max (1,...,8) BYTE MaxAz(4) ! Azimuth index of max (1,...,16) BYTE MaxEn(4) ! Energy index of max (1,...,32) BYTE Mass(4) ! Mass channel index (instrument I3) REAL*4 I1B(32) ! Complete integrated I1b data REAL*4 I1Aint(32) ! (Az & El)-integrated I1a/I3 data INTEGER*4 I2AB(8,32) ! Electron data (instrument I2 a and b) REAL*4 I1A_3(6,7,32) ! Proton+alpha data (instrument I1a/I3) ! (el,az,en) -> (2:6,5:11,1:32) END STRUCTURE ! 6901 bytes RECORD /GEN_STRUCT/ GEN RECORD /NDM_STRUCT/ NDM RECORD /HDM1_STRUCT/ HDM1 RECORD /HDM2_STRUCT/ HDM2 COMMON /ALL/ GEN COMMON /ALL0/ NDM COMMON /ALL1/ HDM1 COMMON /ALL2/ HDM2 !DEC$ END OPTIONS