PDS_VERSION_ID        = PDS3
RECORD_TYPE           = STREAM
OBJECT                = TEXT
  PUBLICATION_DATE      = 1999-08-11
  NOTE                        = "Software Interface Specification for 
                                 the Mars Global Surveyor Accelerometer 
                                 Archive Volume."
END_OBJECT            = TEXT
END




                         Mars Global Surveyor 

                  Software Interface Specification





                    Accelerometer Archive Volume





                             prepared by

                 Steven N. Noll and Robert H. Tolson

                     George Washington University
                       Langley Research Center


                            Version  3.1
                           11 August 1999




Software Interface Specification (SIS)
for Mars Global Surveyor Accelerometer Data

1. Purpose and Scope of Document

The purpose of this document is to provide a detailed description of the
Accelerometer data products.  This document describes the three levels of data
products and the content, organization and format of the data for each level.
Level 0 data include raw accelerometer counts and ancillary data for reducing
the counts to center of mass acceleration.  Level 2 data are reduced products
including atmospheric density with areophysical parameters, and level 3 is the
final data product including density, temperature and other atmospheric
properties at reference altitudes.

2. Applicable Documents

PDS Standards and Data Dictionary documents
Mars Global Surveyor:  SCIENCE DATA MANAGEMENT PLAN -- JPL D-12529
MARS GLOBAL SURVEYOR PROJECT:  Archive Generation, Validation, and Transfer
Plan -- JPL D-13299
Archive Volume SIS for the data product
Journal of Spacecraft and Rockets - Vol. 36, May-June 1999

3. Relationships with Other Interfaces

none

4. Data Product Characteristics and Environment

This section includes a description of the accelerometer as a scientific
sensor, the areophysical parameters associated with the data, the details of
the three levels of data products, data processing methods, data flow through
the data processing system, and the labeling for each data file.

 4.1 Instrument Overview
 
 An accelerometer is an instrument that measures the acceleration of
the case of the sensor due to external forces.  All accelerometers have a
'proof mass' and it is the tendency of the proof mass to move relative to the
case that is a measure of the acceleration of the case.  Early accelerometers
produced output that was directly related to acceleration; but modern sensors
integrate the internally measured signal, to reduce noise, and the output is
proportional to the change in velocity over the integration time.  In high
precision accelerometers, like those on MGS, the proof mass is an
electronically floating magnetic body.  The electromagnetic field is varied to
keep the proof mass stationary relative to the case. The voltage required to
accomplish this is proportional to the acceleration. The accelerometers on MGS
are sensitive to acceleration of the center of mass (c.m.) of the s/c,
pseudo-accelerations (i.e. centrifugal) due to rigid motion of the s/c about
the c.m., and differences in gravitational force at the proof mass and the
c.m. of the s/c (gravity gradient).  
 
 The MGS Inertial Measurement Unit (IMU) contains four accelerometers.
The principal accelerometer used in the aerobraking analysis is the z-axis 
accelerometer.  This accelerometer is located at approximately (-0.44, -0.38,
0.72)m relative to the center of mass.  The accelerometers are Sundstrand
QA1200-AA08 model Q-Flex and continuously integrate acceleration to obtain
velocity data.  The instrument is sampled every 0.1 seconds.  The data are
recorded in instrument counts or quantized velocity increments equivalent to
0.332 mm/s per count.  The QA1200 bias has a specified temperature sensitivity
of 10mg/K or approximately 0.3 counts/K.  The temperature of the IMU assembly
is actively controlled.  IMU telemetered temperatures are quantized at 0.12 K
and typical changes during an entire aerobraking pass are between two
quantized values. Consequently, only a single, constant bias is determined for
each pass through the atmosphere.
 
 4.2 Data Product Overview
 
 Data are packaged by periapsis number for each aerobraking orbit.  The
level 0 data, as defined in sections 1 and 4.3.1, are provided every second
during an interval of time that generally assures that the initial and final
data points are taken at least 200 km above the surface of Mars. The level 2
data are obtained by converting each level 0 accelerometer measurement to
atmospheric density and providing simultaneous areo-location data as
calculated from the orbit information.  Level 2 data sets also contain two
running mean values of density.  Level 3 data include atmospheric density,
temperature, density scale height, and statistical information of the fitting
processes at a number of reference altitudes. All data files are stored as
ASCII.

 4.3 Data Processing

  4.3.1 Data Processing Level  
 
  The MGS Accelerometer archival data consist of 3 levels as
mentioned in section 1.  Level 0 data include one set of global data which
consists of spacecraft properties.  These properties include the spacecraft
mass, characteristic area, characteristic length, and aerodynamic properties.
These data files are contained in a separate directory from the other level 0
data. Other level 0 data include all unprocessed instrument data at full
resolution.  These include accelerometer counts, quaternions, rates, and
thruster on times. The final level 0 data are the orbital parameters at
periapsis which are used in numerous calculations.
  
  Level 2 data include the areophysical parameters versus time
from periapsis at 1 second resolution.  The areophysical parameters include
latitude, longitude, local solar time, solar zenith angle, altitude,  and 7
and 40 second averaged densities along with their sigmas.
  
  Level 3 data for each orbit consist of inbound and outbound
density at constant altitude levels (i.e. 130, 140, ...) and corresponding
derived quantities on each pass including density scale height, estimated
temperature, estimated pressure, and standard deviation of the fit.  For each
altitude level, the areodetic latitude, longitude, local solar time, and Ls at
Mars are given.  Altitudes are determined above a reference areoid using a 4x4
model of the gravity field plus centrifugal potential.  This altitude is
measured radially outward from CG to simplify representation.
  
  Additionally, the periapsis density and maximum density are
provided on each orbit.  Derived quantities at periapsis include dynamic
pressure, scale height, temperature and standard deviation of fit. For each
data point, the corresponding latitude, altitude, longitude, local solar time
and Ls at Mars are given.  Similar quantities are given for the location of
the maximum calculated density as determined from the 7 second average.

  Level 3 data also include, for each orbit, the 1.26 nanobar
height as a function of latitude, longitude, local solar time and Ls at Mars.
The standard deviation on derived quantities is also provided.

  4.3.2 Data Product Generation
  
  The data products were generated by the MGS Accelerometer
Team.  Accelerometer counts, quaternions, and angular rates were received from
the Mars Global Surveyor after each pass.  Additionally, the orbital elements
were supplied by the NAV team for each periapsis. Using this information,
along with the spacecraft physical and aerodynamic properties, the density of
the atmosphere was calculated.
  
  The accelerometer counts are calibrated using the spacecraft
properties to yield the acceleration along the z-axis of the spacecraft.  The
angular rates are then used to remove the acceleration caused by the rotation
of the spacecraft.  An iterative approach is finally used to solve the
force-drag relationship for density.  Deflection of the broken -Y panel is
taken into account in this iterative process.  Details can be found in the
May-June, 1999 issue of the Journal of Spacecraft and Rockets.  Once the
density of the atmosphere along the orbit path is known, other atmospheric
properties such as scale height, temperature, and pressure are computed.
  
  4.3.3 Data Flow
  
  After the data from the spacecraft have been received at the
Jet Propulsion Lab, the accelerometer counts, rates, quaternions and thruster
data are transferred from behind the Jet Propulsion Lab firewall to the MGS
Accelerometer Team operations computer at NASA Langley Research Center.  The
data product is then generated and sent on to the PDS.
  
  The size of the individual data products, consisting of one
orbit worth of data, vary in size from 184 to 283 kilobytes.  The total size
of the data products from Phase 1 of MGS aerobraking is around 45 megabytes.
Total Phase 2 data will be near 200 megabytes.
  
  4.3.4 Labeling and Identification
  
  PDS labels are located at the beginning of each file.  Due to
similarity of the columns for each data set, the column by column description
for each data set is listed only once for each type of data (i.e.
accelerometer counts, quaternions and rates, and the level 2 atmospheric
profile.)  Each data file, *.tab, has a PDS label as a header, but references
a format, *.fmt, file which gives a column by column description.  
  
 4.4 Standards Used in Generating Data Products

  4.4.1 PDS standards
  
  4.4.2 Time Standards
  
  Level 0:  Accelerometer counts, angular rates, quaternions,
and thruster on times are all time stamped with the Coordinated Universal Time
(UTC).  The time standard associated with the orbital elements is also the
Coordinated Universal Time (UTC).  It has been converted to UTC using the
Ephemeris to UTC given by NAV in the OPTG.
  
  Levels 2 and 3:  The time standard used for all data in these
two levels is time from periapsis, where the time of periapsis is that given
by NAV on the reconstructed OPTG for each pass.
  
  4.4.3 Coordinate Systems
  
  When applicable, all data are in the J2000 Mars centered, Mars
equator coordinate system. 
  
  4.4.4 Data Storage Conventions
    
  The data are stored as ASCII text.  A minus 1 (-1) (no decimal
places) anywhere in the data files indicates that data was not available.  For
example, in the level 3 data where the atmospheric properties are given at
constant altitude levels, there are times when the periapsis altitude is
greater than the lower altitude levels.  Hence there are no data for some
altitude levels of some orbits.  For these orbits and altitudes, all
corresponding quantities in the data file are minus 1 (-1).  Some passes did
not yield accelerometer data.  For example, no accelerometer data were
collected during the hiatus caused by the broken solar panel.  There are no
folders or files for these passes. 
  
 4.5 Data Validation- TBD



5. Detailed Data Specifications

 5.1 Data Product Structure and Organization
 
 Except for the spacecraft properties, the MGS accelerometer data are
stored by periapsis number.  The spacecraft properties are grouped together
and saved in the directory 'calib'.  The rest of the Level 0 data are in
directories based on periapsis.  The periapsis directories follow the naming
convention of Pxxxx where xxxx represents the orbit number.  These Level 0
directories contain 4 files.  Accelerometer counts, rates and quaternions, 
thruster on times, and orbital elements are stored as arrays in the files
'counts.tab', 'ratequat.tab', 'thruster.tab' and 'orbelem.tab' respectively.
Within the Level 2 and 3 directories, are files for each periapsis using the
naming convention AlPxxxx.tab which contains all of the data to describe the
pass, where l is the Archive Level and xxxx the periapsis number.  The Level 3
data files contain data for the constant altitude levels.  These altitude
levels are periapsis, 130, 140, 150, 160 km, those corresponding to a 1.26
nbar pressure level and the maximum density.  Inbound and outbound data for
each of these altitudes are considered separately except for maximum density
and periapsis.
 
 5.2 Data Format Descriptions
 
 Level 0:  The array in 'counts.tab' is n-by-11 in size, where n is the
number of seconds worth of data received during that aerobraking pass. Column
1 contains the time in UTC and follows the PDS format.  The format is
YYYY-DDDTHH:MM:SS.SSSZ where YYYY = four digit year, DDD = day of year, HH =
hour, MM = minute, and SS.SSS = seconds.  T is a separator for date and time
and the Z is the UTC Z.  Columns 2 through 11 contain the 0.1 second
accelerometer counts for the second beginning at the time stamp.  
 
 'ratequat.tab' has an array which is n-by-8 in size.  Column 1 is the
time corresponding to the rates and quaternions in the same UTC format as
described for the counts above.  Columns 2-4 contain the angular rates about
the x, y and z axes respectively.  Columns 5-8 contain the quaternions.  
 
 The third file, 'thruster.tab', is a k-by-13 array.  For Phase 1 k is
n/8 or n/8+/-1 corresponding with a reading every eight seconds.  During Phase
2, the data files only contain those 8 second readings when the thruster on
times had changed from the previous 8 second reading.  For this reason, k will
be less than or equal to the number of thruster firings during the aerobraking
pass for Phase 2 orbits only.  The first column is time as described above.
The next 12 are a running reading of how long each thruster has been fired
during the mission.  Column two corresponds to thruster number one, column 3
with thruster 2, and so on.  Column 13 corresponds with thruster 12.  
 
 
 'orbelem.tab' has a 1-by-6 array.  Columns 1-6 are the 6 orbital
elements as supplied by NAV on the OPTG.  

 Level 2:  'Pxxxx.tab' is a m-by-10 array, where m is the number of
seconds of data within close proximity to the Martian atmosphere.  The data in
each of the 11 columns going from column 1 to 10 are seconds from periapsis,
latitude, longitude, local solar time, solar zenith angle, altitude above the
areodetic reference spheroid, 7 second averaged density and sigma, 40 second
averaged density and sigma.  
 
 Level 3:  'Pxxxx.tab' has 12 rows and 10 columns.  The columns have
inbound and outbound quantities for different constant altitude levels which
are each in separate rows.  The rows are separated as follows:  periapsis,
maximum density, 1.26 nbar level inbound, 1.26 nbar level outbound, 130 km
inbound, 130 km outbound, 140 km inbound, 140 km outbound, 150 km inbound, 150
km outbound, 160 km inbound, 160 km outbound.  The columns from 1 through 10
are separated as follows:  altitude, latitude, longitude, local solar time,
longitude of the sun, pressure, density, temperature, scale height, and
standard deviation of fit.  40 second averaged data were used to determine
Level 3 values.
 
 5.3 Label and Header Descriptions
 
 A label is located at the beginning of each data file.  PDS3 is the
PDS_VERSION_ID that was used to create the labels. 

6. Applicable Software
 
None

7. Appendices

 7.1 Acronyms

 MGS - Mars Global Surveyor
 JPL - Jet Propulsion Lab
 Ls  - Longitude of the Sun
 CG  - Center of Gravity
 NAV - Navigation Team
 ET  - Ephemeris Time
 UTC - Coordinated Universal Time
 NASA - National Aeronautics and Space Administration
 OPTG - Orbit Prediction and Trajectory Generation
 PDS - Planetary Data System

 7.2 Definitions of Data Processing Levels
  
 The definitions given below are from appendix iii of the Mars Global
Surveyor Project Archive Generation, Validation, and Transfer Plan.
 
 Level 0 -- Instrument science packets (e.g., raw voltages, counts) at
full resolution, time ordered, with duplicates and transmission errors
removed.
 
 Level 2 -- Areophysical parameters located in space and time
commensurate with instrument location, pointing, and sampling.
 
 Level 3 -- Areophysical parameters mapped onto uniform space-time
grids.
 
 7.3 Example PDS Label 

 Below is a sample label for the accelerometer counts data.
 

PDS_VERSION_ID                = PDS3                                          
                                                                              
RECORD_TYPE                   = FIXED_LENGTH                                  
RECORD_BYTES                  = 83                                            
FILE_RECORDS                  = 668                                           
LABEL_RECORDS                 = 36                                            
RECORD_FORMAT                 = "(I4,1X,I3,1X,I2,1X,I2,1X,F6.3,10(1X,I5))"    
^TABLE                        = 38                                            
PRODUCT_ID                    = "Z_ACCELEROMETER_COUNTS"                      
INSTRUMENT_HOST_NAME          = "MARS GLOBAL SURVEYOR"                        
INSTRUMENT_NAME               = "ACCELEROMETER"                               
DATA_SET_ID                   = "MGS-M-ACCEL-0-ACCEL_DATA-V1.0"               
TARGET_NAME                   = MARS                                          
PRODUCT_CREATION_TIME         = 1999-01-28T22:43:39.70                        
START_TIME                    = 1997-12-07T08:43:33.50Z                       
STOP_TIME                     = 1997-12-07T08:54:40.50Z                       
                                                                              
SPACECRAFT_CLOCK_START_COUNT     = "UNK"                                      
SPACECRAFT_CLOCK_STOP_COUNT      = "UNK"                                      
                                                                              
OBJECT                        = TABLE                                         
 ROWS                         = 668                                           
 ROW_BYTES                    = 81                                            
 INTERCHANGE_FORMAT           = ASCII                                         
 COLUMNS                      = 11                                            
 ^STRUCTURE                   = "COUNTS.FMT"                                  
 DESCRIPTION                  = "                                             
  The data in this file are the accelerometer counts from the Mars Global     
  Surveyor for orbit  972 of aerobraking at Mars.                             
                                                                              
  Stephen N. Noll/R.H. Tolson                                                 
  1999 January 21                                                             
  "                                                                           
                                                                              
END_OBJECT                    = TABLE                                         
END                                                                           
                                                                              
File COUNTS.FMT:
                                                                              
 OBJECT                       = COLUMN                                        
  NAME                        = "TIME_STAMP"                                  
  DESCRIPTION                 = "Time of beginning of 1 second time interval" 
  DATA_TYPE                   = TIME                                          
  UNIT                        = "N/A"                                         
  START_BYTE                  = 1                                             
  BYTES                       = 21                                            
 END_OBJECT                   = COLUMN                                        
                                                                              
 OBJECT                       = COLUMN                                        
  NAME                        = "COUNT_1ST_0.1_SEC_OF_INTERVAL"               
  DESCRIPTION                 = "Entries sorted by time stamp."               
  DATA_TYPE                   = ASCII_INTEGER                                 
  UNIT                        = "COUNTS"                                      
  START_BYTE                  = 23                                            
  BYTES                       = 5                                             
  FORMAT                      = "I5"                                          
 END_OBJECT                   = COLUMN                                        
                                                                              
 OBJECT                       = COLUMN                                        
  NAME                        = "COUNT_2ND_0.1_SEC_OF_INTERVAL"               
  DESCRIPTION                 = "Entries sorted by time stamp."               
  DATA_TYPE                   = ASCII_INTEGER                                 
  UNIT                        = "COUNTS"                                      
  START_BYTE                  = 29                                            
  BYTES                       = 5                                             
  FORMAT                      = "I5"                                          
 END_OBJECT                   = COLUMN                                        
                                                                              
 OBJECT                       = COLUMN                                        
  NAME                        = "COUNT_3RD_0.1_SEC_OF_INTERVAL"               
  DESCRIPTION                 = "Entries sorted by time stamp."               
  DATA_TYPE                   = ASCII_INTEGER                                 
  UNIT                        = "COUNTS"                                      
  START_BYTE                  = 35                                            
  BYTES                       = 5                                             
  FORMAT                      = "I5"                                          
 END_OBJECT                   = COLUMN                                        
                                                                              
 OBJECT                       = COLUMN                                        
  NAME                        = "COUNT_4TH_0.1_SEC_OF_INTERVAL"               
  DESCRIPTION                 = "Entries sorted by time stamp."               
  DATA_TYPE                   = ASCII_INTEGER                                 
  UNIT                        = "COUNTS"                                      
  START_BYTE                  = 41                                            
  BYTES                       = 5                                             
  FORMAT                      = "I5"                                          
 END_OBJECT                   = COLUMN                                        
                                                                              
 OBJECT                       = COLUMN                                        
  NAME                        = "COUNT_5TH_0.1_SEC_OF_INTERVAL"               
  DESCRIPTION                 = "Entries sorted by time stamp."               
  DATA_TYPE                   = ASCII_INTEGER                                 
  UNIT                        = "COUNTS"                                      
  START_BYTE                  = 47                                            
  BYTES                       = 5                                             
  FORMAT                      = "I5"                                          
 END_OBJECT                   = COLUMN                                        
                                                                              
 OBJECT                       = COLUMN                                        
  NAME                        = "COUNT_6TH_0.1_SEC_OF_INTERVAL"               
  DESCRIPTION                 = "Entries sorted by time stamp."               
  DATA_TYPE                   = ASCII_INTEGER                                 
  UNIT                        = "COUNTS"                                      
  START_BYTE                  = 53                                            
  BYTES                       = 5                                             
  FORMAT                      = "I5"                                          
 END_OBJECT                   = COLUMN                                        
                                                                              
 OBJECT                       = COLUMN                                        
  NAME                        = "COUNT_7TH_0.1_SEC_OF_INTERVAL"               
  DESCRIPTION                 = "Entries sorted by time stamp."               
  DATA_TYPE                   = ASCII_INTEGER                                 
  UNIT                        = "COUNTS"                                      
  START_BYTE                  = 59                                            
  BYTES                       = 5                                             
  FORMAT                      = "I5"                                          
 END_OBJECT                   = COLUMN                                        
                                                                              
 OBJECT                       = COLUMN                                        
  NAME                        = "COUNT_8TH_0.1_SEC_OF_INTERVAL"               
  DESCRIPTION                 = "Entries sorted by time stamp."               
  DATA_TYPE                   = ASCII_INTEGER                                 
  UNIT                        = "COUNTS"                                      
  START_BYTE                  = 65                                            
  BYTES                       = 5                                             
  FORMAT                      = "I5"                                          
 END_OBJECT                   = COLUMN                                        
                                                                              
 OBJECT                       = COLUMN                                        
  NAME                        = "COUNT_9TH_0.1_SEC_OF_INTERVAL"               
  DESCRIPTION                 = "Entries sorted by time stamp."               
  DATA_TYPE                   = ASCII_INTEGER                                 
  UNIT                        = "COUNTS"                                      
  START_BYTE                  = 71                                            
  BYTES                       = 5                                             
  FORMAT                      = "I5"                                          
 END_OBJECT                   = COLUMN                                        
                                                                              
 OBJECT                       = COLUMN                                        
  NAME                        = "COUNT_10TH_0.1_SEC_OF_INTERVAL"              
  DESCRIPTION                 = "Entries sorted by time stamp."               
  DATA_TYPE                   = ASCII_INTEGER                                 
  UNIT                        = "COUNTS"                                      
  START_BYTE                  = 77                                            
  BYTES                       = 5                                             
  FORMAT                      = "I5"                                          
 END_OBJECT                   = COLUMN