# %Z% %M% %I% %G% 633-772-23-002 i 633-772-23-002 633-772-23-002 i 633-772-23-002 633-772-23-002 1-i 2-i 3-i 633-772-23-002 4-i A-i 633-772-23-002 B-i C-i D-i E-i F-i TOPEX/POSEIDON PROJECT NASA Precision Orbit Ephemeris (NASA POE) Software Interface Specification (SIS-2) October 1, 1991 ABSTRACT This document describes the form and syntax for the NASA Precision Orbit Ephemeris file (NASA POE) which is produced by the Precision Orbit Determination Subsystem (PODS) of the TOPEX/POSEIDON Science System. National Aeronautics and Space Administration Jet Propulsion Laboratory California Institute Of Technology Pasadena, California 91109 TOPEX/POSEIDON PROJECT SIS NO:633-772-23-002 SOFTWARE INTERFACE SPECIFICATION REVISION: Cover Sheet DATE: 10/1/91 SIS COORDINATOR: A. Chow SIS NAME: NASA Precision Orbit Ephemeris (NASA POE) DOMAIN: Sub_System Function Program Source/ Destination PODS Determine precise PODS Source orbit of satellite from laser data processing and create NASA POE. SDS Accept NASA POE -- Destination and read for GDR production. GDPF, CNES Accept NASA POE -- Destination for use in POD processing. Computer System: IBM 3081 at GSFC PURPOSE OF INTERFACE (SUMMARY): This interface specification provides the format and syntax for the NASA POE which is produced by the Precision Orbit Determination Subsystem of the TOPEX/POSEIDON Science System for delivery to the TOPEX Ground System Science Data Subsystem. INTERFACE MEDIUM: Disk File: Magnetic Tape: 4 Tracks: nine Density: 1600 bpi Other: Network copy possible CUSTODIAN: B.G.Williams (JPL) / Nikita Zelensky (GSFC--STX) SIGNATURES: See Attachment DISTRIBUTION JPL Agrawal, A. 301-360 Antczak, T. 525-3610 Bartulis, A. 264-355 Brown, J. 525-3610 Burt, B. 264-355 Callahan, P. 300-319 Chow, A. 301-355 Christensen, C. 301-125J Christensen, E. 264-686 Donhauser, J. 525-3610 Fahid, M. 525-3610 Faist, G. 525-3610 Hill, M. 264-355 Hyman, S. 125-233 Orr, M. 601-110 Rosell, S. 264-686 Royer, D. 264-355 Stiver, R. 264-686 Sunseri, R. 301-220 Williams, B. 301-125J Wu, S. 238-640 CNES Nouel, F. CNES/CST PODS Born, G. U. of Colorado, CCAR Putney, B. GSFC Zelensky, N. STX Tapley, B. U. of Texas, CSR Ries, J. U. of Texas, CSR Shum, T. U. of Texas, CSR DOCUMENT CHANGE LOG Change Letter Date Affected Portions Original 10/01/91 All LIST OF TBD ITEMS Page Section Item none SIGNATURES: Approval Position Name Date E. J. Christensen Science Sys ________________________ __________ Manager B. G. Williams PODS Subsys ________________________ __________ Manager B. Putney GSFC PODPS ________________________ __________ Manager N. Zelensky PODPS Subsys ________________________ __________ Engineer T. M. Antczak SDS System ________________________ __________ Engineer D. R. Royer TGS System ________________________ __________ Engineer NASA POE SIS-2 Table of Contents Section Page 1. GENERAL DESCRIPTION . . . . . . . . . . . . . . . . 1-1 1.1 Content Overview . . . . . . . . . . . . . . . . . 1-1 1.2 Scope . . . . . . . . . . . . . . . . . . . . . . . 1-1 1.3 Applicable Documents . . . . . . . . . . . . . . . 1-1 1.4 Functional Description . . . . . . . . . . . . . . 1-2 1.4.1 Data Source, Destination, and Transfer Method . . . . . . . . . . . . . . . . . . 1-2 1.4.2 Pertinent Relationships with Other Interfaces . . . . . . . . . . . . . . . . 1-2 1.4.3 Labeling and Identification . . . . . . . 1-2 1.5 Assumptions and Constraints . . . . . . . . . . . . 1-7 2. ENVIRONMENT . . . . . . . . . . . . . . . . . . . . 2-1 2.1 Hardware Characteristics and Limitations . . . . . 2-1 2.2 Interface Medium and Characteristics . . . . . . . 2-1 2.3 Input/Output Protocols . . . . . . . . . . . . . . 2-1 2.3.1 Device Addressing . . . . . . . . . . . . 2-1 2.3.2 Operating System Protocols . . . . . . . . 2-1 2.3.3 Deformatting . . . . . . . . . . . . . . . 2-1 2.3.4 Calling Sequence . . . . . . . . . . . . . 2-1 2.4 Failure Protection, Detection and Recovery . . . . 2-3 3. DATA FLOW CHARACTERISTICS . . . . . . . . . . . . . 3-1 3.1 Operational Characteristics . . . . . . . . . . . 3-1 3.1.1 Generation Method and Frequency . . . . . . 3-1 3.1.2 Time Span Of the Product . . . . . . . . . 3-1 3.2 Data Volume . . . . . . . . . . . . . . . . . . . . 3-2 3.3 Flow Rate . . . . . . . . . . . . . . . . . . . . 3-2 4. DETAILED DATA PRODUCT DEFINITION . . . . . . . . . 4-1 4.1 Structure and Organization Overview . . . . . . . 4-1 4.2 Data Organization and Description . . . . . . . . . 4-1 4.2.1 Organization . . . . . . . . . . . . . . . 4-1 4.2.2 Data Description . . . . . . . . . . . . . 4-2 4.2.2.1 Header Section . . . . . . . . . . . 4-2 4.2.2.2 Data Section . . . . . . . . . . . . 4-3 4.2.2.3 Trailer Section . . . . . . . . . . 4-4 4.3 Conventions . . . . . . . . . . . . . . . . . . . . 4-4 4.3.1 Data Representation Conventions . . . . . 4-4 4.3.2 End-of-File Conventions . . . . . . . . . . 4-4 4.4 Data Format . . . . . . . . . . . . . . . . . . . 4-4 4.4.1 File Header Section Format . . . . . . . . 4-4 4.4.1.1 File Identifier Format . . . . . . . 4-5 4.4.1.2 Solution Environment Format . . . . . 4-5 4.4.1.3 Estimated Solution Parameters . . . 4-5 4.4.1.4 A1-UTC Table Format . . . . . . . . 4-6 4.4.1.5 TOPEX Control Information . . . . . . 4-6 4.4.2 Data Section Format . . . . . . . . . . . . 4-8 4.4.3 Trailer Section Format . . . . . . . . . . 4-9 APPENDIX A. Glossary . . . . . . . . . . . . . . . . . . . . . . A-1 B. Acronyms . . . . . . . . . . . . . . . . . . . . . B-1 C. Sample File . . . . . . . . . . . . . . . . . . . . C-1 D. POE File Reader/Interpolator Program Listing . . . D-1 E. Example DEC-VAX DCL for reading NASA POE file . . . E-1 F. POE/Interpolator Coordinate Reference Systems . . . F-1 Figures 1.1 NASA POE Creation and File Naming Convention for Three Orbit Cycles, No Maneuvers . . . . . . . . . 1-4 1.2 NASA POE Creation and File Naming Convention for Three Orbit Cycles Around a Planned Maneuver. . . . 1-5 1.3 NASA POE Creation and File Naming Convention for Three Orbit Cycles Around an Off-Nominal, Unplanned Maneuver . . . . . . . . . . . . . . . . 1-6 4.1 NASA POE File Logical Structure . . . . . . . . . 4-2 SECTION 1 GENERAL DESCRIPTION 1.1 Content Overview The NASA Precision Orbit Ephemeris (NASA POE) file will contain 1)ÊTOPEX ephemeris data, 2) information required for the interpolation of this ephemeris, and 3) information describing the reference frame, conditions, and constants used to produce the ephemeris data. This information will be of sufficient detail to regenerate the ephemeris if required. The NASA POE file is primarily designed for use at the Jet Propulsion Laboratory (JPL), where the satellite height from the NASA POE will be combined with altimeter observations to form the Geophysical Data Record (GDR) file. The NASA POE file ephemeris will nominally span the 10 day orbit repeat cycle. A NASA POE file will be produced for each consecutive repeat cycle. Since the NASA POE will not span occurrences of spacecraft maneuvering, the time interval covered may be different from the 10 day repeat around certain maneuvers. The contingencies for defining and delivering NASA POE data near maneuvers are described below in section 1.4.3 "Labeling and Identification", in section 1.5 "Assumptions and Constraints", and in section 3.1.2 "Time Span of Product". In each file, the NASA POE data will consist of a series of records, each containing a time tag and orbit state (orbit position and velocity values), and separated by a one minute time interval. These records are not intended to be read directly by users; the required accuracy of resulting satellite positions cannot be guaranteed unless the user reads the NASA POE with the PODS supplied reader/interpolation algorithms. 1.2 Scope This interface format applies to the NASA POE file created by the Precision Orbit Determination Subsystem (PODS) of the TOPEX/POSEIDON (T/P) Science System for delivery to the T/P TOPEX Ground System (TGS), the Global Positioning Satellite (GPS) Data Processing Facility (GDPF) and Centre National d'Etudes Spatiales/Centre Spatial de Toulouse (CNES/CST). This document supersedes the corresponding SIS Volume 1, which will no longer be maintained. 1.3 Applicable Documents Those documents which govern and constrain the creation of this file interface are listed below. 633-771 PODS Functional Requirements and Design Document, JPL D-7837 September 1990 633-704-C MOS Functional Design Document, JPL D-6389 9 July 1990 633-701-A TGS Management and Implementation Plan, JPL D-6315 18 June 1990 633-712A TGS Interface Control Document, JPL D-7565 31 August 1990, Rev. B 633-321-C TOPEX/POSEIDON Mission Plan, JPL D-6862C August 1991, Rev. C 633-322 TOPEX/POSEIDON Orbit Characteristics, JPL D-7511 June 1990 1.4 Functional Description 1.4.1 Data Source, Destination, and Transfer Method The NASA POE file is generated by the PODS Production Subsystem, PODPS, at Goddard Space Flight Center (GSFC), Greenbelt, MD. The file is a collection of input to and output from GSFC's orbit determination program called GEODYN. The GEODYN program runs on the IBM and Cray computers at GSFC. The GEODYN output file information is then collected in ASCII form and written to magnetic tape for delivery to the T/P project centers. The tape is delivered to T/P TGS at JPL from GSFC via a commercial overnight delivery service (e.g., Federal Express). The NASA POE file is read into the T/P TGS computers from the magnetic tape and made available to the project users. During some flight regimes, the input to GEODYN will force certain events for the satellite attitude to occur at a given time. This information will be determined from the Satellite Attitude Event Information file which is obtained via a POD team interface to the SPAT. Also, the times of propulsive maneuvers are obtained from the SPAT. One year after launch, in the case of off-nominal behavior of the satellite, the attitude information on the PODS selected telemetry file will be read directly into GEODYN to force the attitude model to match the telemetered values. In any of these cases, flags will be included on each NASA POE to indicate if any of these special, time driven events have occurred within the time span of the POE. 1.4.2 Pertinent Relationships with Other Interfaces The NASA POE is generated from data processing entirely within the PODPS subsystem, at Goddard Space Flight Center, Greenbelt, MD. The NASA POE file format and this SIS are independent of other project SISs and should not affect or be affected by other project SISs. 1.4.3 Labeling and Identification A particular NASA POE contains a header section made up of ASCII records which identify the orbit cycle number and the particular time period over which that file is applicable. The physical label on the exterior of the tape reel shall also contain the particular time period over which the file is applicable and this information shall be checked by PODPS, at Goddard Space Flight Center, Greenbelt, MD for agreement with the ASCII file header written to the tape. In addition, the physical label on the exterior of the tape reel shall indicate the orbit cycle number (as defined by the project in accordance with document number 633-321) over which the particular NASA POE is applicable. The file naming convention in the TGS VAX environment shall be as follows to ensure positive, unambiguous identification of each NASA POE. As described in the Detailed Data Product Definition, section 4 of this document, each NASA POE is made up of seven different sections. Each of these sections shall exist as separate files on the TGS VAX disk and their names shall appear as follows: NASAPOEccc.TTT;v where: ccc = applicable three-digit cycle number as defined by the project in accordance with document 633-321. Right justified, zero filled. TTT = identifier for each component file of the NASA POE: HDR - NASA POE HEADER section file G2E - NASA POE GEODYN 2E section file G2S - NASA POE GEODYN 2S section file UTA - NASA POE A1-UTC table file FLG - NASA POE flags section file DAT - NASA POE data section file TRL - NASA POE trailer section file v = file version number (starts at 1) The correspondence of the NASA POE name, the time span of the ephemeris data, and the span over which the file is valid for the nominal case which is not interrupted by propulsive maneuvers is shown in Figure 1.1. In Figures 1.1, 1.2 and 1.3, the term "valid time span" refers to the time spanning the repeat cycle for which POE data is expected. The term "data arc" refers to the span of POE data actually present on a POE file. In the nominal case with no maneuvers present, the "valid time span" on a POE file will represent a repeat cycle, and the "data arc" time span will include that repeat cycle plus about 2 hours of ephemeris data 'pad' at each end of the cycle. Ephemeris data will not be provided over any portion of a maneuver period. For those instances where planned propulsive maneuvers occur, the file naming convention is the same as just described, although the data time spans and the valid time spans are adjusted to accommodate the maneuver as shown in Figure 1.2. In this case, note that a given NASA POE may cover slightly more or less than the exact period of the orbit repeat cycle. Figure 1.1 NASA POE Creation and File Naming Convention for Three Orbit Cycles, No Maneuvers. Figure 1.2 NASA POE Creation and Naming Convention for Three Orbit Cycles Around a Planned Maneuver. For the contingency of producing NASA POEs around a badly placed, unplanned maneuver the following naming convention shall be used. In this case, the time of the maneuver is such that the ephemeris must be broken into two parts for that orbit repeat cycle. Normally, the maneuvers are planned to occur near the orbit cycle begin/end time so that this case represents an off-nominal condition which should occur only infrequently. The time spans associated with the two parts of the NASA POE in this case are shown in Figure 1.3. The file naming convention in this case shall be: NASAPOEccc_ss.TTT;v where: name is as above for nominal case with additional underscore and appended information: ss = sequence number of NASA POE segment see section 4.4.1.1. Figure 1.3 NASA POE Creation and Naming Convention for Three Orbit Cycles Around an Off-Nominal, Unplanned Maneuver. 1.5 Assumptions and Constraints It is the normal mission plan to limit propulsive maneuvers to occur only between ten-day repeat cycles and over land, if possible. If the nominal mission plan is followed, then the NASA POE produced for each repeat cycle will cover the entire ten-day period starting approximately one orbit before the beginning of a cycle as defined in the mission plan and continuing up to about one orbit after the cycle end. The ephemeris data pad will not extend into a maneuver period. If however, propulsive maneuvers are required within the ten-day repeat cycle, then there will be two POEs, one covering the beginning of the ten-day cycle up to the unplanned maneuver and the other covering the time from the unplanned maneuver up to the end of the ten-day cycle. These two POEs will be written to separate tapes and delivered exactly as normal ten-day POEs except that they will be valid over a shorter 'valid time span' interval than a normal POE. It is assumed that those interpolating a given NASA POE will begin interpolation at a time somewhere within the corresponding time interval of the ten-day repeat cycle and continue interpolating up to the end of the ten-day repeat cycle. A cycle as defined in the TOPEX/POSEIDON Mission Plan, document number 633-321, begins with cycle 1 at the first ascending equator crossing at 99.95 degrees east longitude following circularization and the engineering assessment phase of Cycle 0 (see TOPEX/POSEIDON Orbit Characteristics, 633-322). The normal termination time of a cycle is at the end of the pass which next has an ascending equator crossing at 99.95 degrees east longitude (approximately ten days later) or until the time at which the POE is interrupted by a maneuver. When either of these termination times is reached, then the interpolation should switch to the next available NASA POE. These times are defined in the 'SOE' file or in the 'Satellite Attitude Event Information' file and are also contained on the NASA POE. When the tape interface is used, it is assumed that the tape containing the NASA POE will be mounted and read into appropriate disk files by PODS and SVS team (PVT) personnel at JPL. The PVT will validate the NASA POE files before officially releasing them to the SDT. This interface will be defined in the appropriate team interface agreement. The disk files making up a single NASA POE will include both header/trailer files and files needed by the interpolator. A naming convention which uniquely identifies components of each delivered NASA POE file is given in section 1.4.3 of this document. These files are unique to each NASA POE and must not be renamed so as to avoid confusion with other NASA POE files stored on the same computer. The NASA POE interpolator will read the NASA POE information via logical name assignments to the appropriate disk files. The information content of the NASA POE is subject to several constraints imposed by the format definition and the software generating the ephemeris. The following constraints are notable: There is space reserved for no more than three nominal attitude events over one NASA POE arc. Transition of the orbit mode flags of the NASA POE data section may be different from the actual time of an event by as much as 60 seconds due to discretization of the file. An attitude bias cannot change to another non-zero value over a NASA POE data arc. It is assumed that, under nominal conditions, any two maneuvers are separated by at least 10 days. Since the NASA POE will be stored on intermediate disk files before interpolating, simultaneous multiple access by more than one user program is possible as allowed by the computer operating system. SECTION 2 ENVIRONMENT 2.1 Hardware Characteristics and Limitations The NASA POE will be delivered on ten-inch reels of one-half inch wide magnetic tape. A tape drive capable of mounting and reading this tape reel is assumed to exist within the TGS computer environment. 2.2 Interface Medium and Characteristics The NASA POE will be delivered on a nine track, 1600 bit per inch magnetic tape written in ASCII with logical record length of 132 bytes and block size of 1320 bytes. 2.3 Input/Output Protocols 2.3.1 Device Addressing Since the NASA POE is a 'flat' ASCII file made up of individual records of varying length, the data access will be sequential, record-by-record. 2.3.2 Operating System Protocols The NASA POE can be read on any computer which can support mounting the magnetic tape and reading the ASCII records contained therein. The interpolator source code is supplied in FORTRAN-77, so the operating system of the host computer is assumed to be able to compile and generate an executable module which includes the interpolator subroutine. The code is made as portable as possible and shall not make use of any FORTRAN extensions beyond the FORTRAN-77 standard. It is further assumed that the host computer operating system supports the complete FORTRAN-77 standard. 2.3.3 Deformatting The NASA POE data records are not intended to be read directly by users; the required accuracy of resulting satellite positions cannot be guaranteed unless the user reads the NASA POE with the PODS supplied reader/interpolation subroutine. 2.3.4 Calling Sequence The NASA POE shall be read and interpolated using the PODS supplied reader subroutine. The routine is initialized by a mandatory call to Subroutine HERM0 before any interpolation calls are made. The NASA POE is then interpolated by subsequent calls to SUBROUTINE HERM. Details of both these FORTRAN subroutines are as follows: c ................................................................... c.....initial MANDATORY call initialize / read poe header info SUBROUTINE HERM0(INPOE,IYMD1P,IHM1P,SEC1P,IYMD2P,IHM2P,SEC2P, + IFLGOR,IFLGEX) C.....HERM0 control program for HERMITE interpolation package...... C.....initialize POE file unit numbers, and input POE header data c PARAMETER TYPE DESCRIPTION c INPUT : C ======= c INPOE(4) I*4 POE file unit numbers c INPOE(1)= POE Header Identifier c INPOE(2)= POE Header A1-UTC Table c INPOE(3)= POE Ephemeris Data c INPOE(4)= HERMITE printout c OUTPUT: C ======= C IFLGOR(22) I*4 Flags indicating orbit modes C IFLGEX(05) I*4 Flags indicating program execution conditions C IYMD1P I*4 POE header allowed start year, month, day (YYMMDD) C IHM1P I*4 POE header allowed start hour, minutes (HHMM) C SEC1P R*8 POE header allowed start seconds (UTC) C IYMD2P I*4 POE header allowed end year, month, day (YYMMDD) C IHM2P I*4 POE header allowed end hour, minutes (HHMM) C SEC2P R*8 POE header allowed end seconds (UTC) C C NOTE. FOR FULL INTERPOLATOR ACCURACY : C THERE MUST BE 5 EXTRA POE POINT AT BEGINNING AND 5 AT END OF FILE: C I.E. THE FIRST GDR TIME MUST FOLLOW AFTER THE FIRST 5 POE POINTS, C AND THE LAST GDR TIME MUST PRECEED THE LAST POE POINT BY 5. C c AN ALLOWED POE HEADER START/STOP TIMES IS COMPUTED ASSUMING C A 1 MINUTE INTERVAL BETWEEN POE DATA POINTS C..... C FILE INPUT UNIT DESCRIPTION c param POE Header Identifier c param POE Header A1-UTC Table c param POE Ephemeris Data C In GEODYN Earth Centered Fixed Reference C OUTPUT C param PROGRAM PRINTOUT c ................................................................... Subsequent calls to Subroutine HERM to interpolate NASA POE should use the following: C....................................................................... C SUBROUTINE HERM(IYMDG,IHMG,SECG,TA1,XYZECF,XYZTRS,POLANG, + IFLGOR,IFLGEX) C ENTRY HERM........................................................ c PARAMETER TYPE DESCRIPTION C INPUT: C ======= C IYMDG I*4 GDR year, month, day (YYMMDD) C IHMG I*4 GDR hour, minutes (HHMM) C SECG R*8 GDR seconds (UTC) C C OUTPUT: C ======= C TA1 R*8 INTERPOLATED SATELLITE POSITION TIME TAG C (A1 SECONDS FROM POE HEADER ALLOWED REFERENCE START DATE) C XYZECF(6) R*8 Interp GEODYN ECF satellite position(m), velocity(m/s) C (Earth Centered Fixed, Instantaneous Earth Spin Axis) C HERMITE interpolation used for satellite position C LAGRANGE polynomial interpolation for sat velocity C XYZTRS(3) R*8 Interp crust-fixed CTRS satellite position (meters) C Conventional Terrestrial Reference System (SWT adopted) C (Earth Centered Fixed, CIO Mean Pole Reference) C HERMITE interpolation used for satellite position C !!Use XYZTRS for altimeter height correction !! C POLANG(2) R*8 Interpolated Polar motion angles X,Y (milliarcsec) C IFLGOR(22) I*4 Flags indicating orbit modes C (0=off, 1=on, 2=off to on, 3=on to off) C OCCULTATION C (1) : 0= SUN, 1= SHADE, 2= SUN TO SHADE, 3= SHADE TO SUN C YAW STEERING EVENTS (NOMINAL BETA' SHOWN FOR EXAMPLE) C (2) +ON ( 15 to 80 DEG BETA') C (3) +OFF ( 0 to 15 DEG BETA') C (4) +HOFF ( 80 to 90 DEG BETA') C (5) +RAMPUP ( 15 to 15.1DEG BETA') C (6) +RAMPDN ( 15 to 14.9DEG BETA') C (7) +FLIP ( +0 to -0 DEG BETA') C (8) -ON (-15 to -80 DEG BETA') C (9) -OFF ( 0 to -15 DEG BETA') C (10)-HOFF (-80 to -90 DEG BETA') C (11)-RAMPUP (-15 to-15.1DEG BETA') C (12)-RAMPDN (-15 to-14.9DEG BETA') C (13)-FLIP ( -0 to +0 DEG BETA') C IFLGEX(05) I*4 Flags indicating program execution conditions c iflgex(1)= 1 : normal termination POE processing c eof POE/GDR time.GT.POE hdr end time c (1)= 2 : GDR time .LT. POE header start time c (1)= 3 : eof POE before expected - restart c iflgex(2)= number of POE ephemeris data records C............................................................................. 2.4 Failure Protection, Detection, and Recovery The NASA POE file header section contains information uniquely describing the particular NASA POE file being read. Also provided is information of sufficient detail to regenerate the ephemeris if required. The NASA POE file trailer section is included for checking the integrity of the data transfer from PODS to other systems. Included are the following items: (1) A count of the number of physical records in the Header section of the file. This provides an independent check of the number of records that should have been read to obtain the characteristics of the particular NASA POE file being read. (2) A count of the number of physical records in the Ephemeris data section of the file. This provides an independent check of the number of records that should have been available for the reader/interpolation subroutine on the particular NASA POE file being read. (3) The date and time the NASA POE file was created. This provides a means of positively identifying the end record of the ASCII file with the beginning record. It also serves as a unique identifier for the specific NASA POE to provide discrimination between file versions if re-created NASA POE files are delivered. (4) The program version numbers of GEODYN G2S and G2E used to create this NASA POE file. This provides a means of tracking the history of program versions and the NASA POE files that may have been created over the mission lifetime. Error recovery of the NASA POE file will be provided (1) if errors are detected in the NASA POE file which render it unreadable, and/or (2) in case of a blunder. Error recovery will be the recreation of the file by PODS/PODPS and re-delivery of an updated version of the NASA POE to replace the incorrect and/or unreadable version. If a particular NASA POE is unreadable upon arrival in the TGS, the TGS shall notify the PODS and SVS team (PVT) at JPL of the failure and the TGS shall specify the exact file name(s) and version numbers of the suspect file(s). The PVT team leader at JPL is Joe Guinn, phone number (818) 354-0425. The PVT team will request another copy of that particular NASA POE to be generated and shipped by the PODPS subsystem, at Goddard Space Flight Center, Greenbelt, MD. SECTION 3 DATA FLOW CHARACTERISTICS 3.1 Operational Characteristics 3.1.1 Generation Method and Frequency The NASA POE valid over ten days of the T/P mission shall be generated by software of the PODPS subsystem, at Goddard Space Flight Center, Greenbelt, MD and sent to the TGS at approximately ten day intervals. The NASA POE shall be transmitted from the PODPS subsystem, at Goddard Space Flight Center, Greenbelt, MD to the TGS at JPL within 22 (twenty- two) working days after the last orbit in the data arc fit has been tracked and the data is available in the Crustal Dynamics Data Information Service (CDDIS) center at GSFC. In addition, the PODLS subsystem at Goddard Space Flight Center's Crustal Dynamics Satellite Laser Ranging (CDSLR) system shall deliver satellite laser ranging data from a given track to the CDDIS within 3 (three) working days after acquisition by the tracking sites. Hence, the NASA POE shall be transmitted to the TGS within 25 (twenty-five) working days after the SLR for the last orbit in a ten day arc has been acquired by the tracking sites. 3.1.2 Time Span of Product To obtain ephemeris information from the discrete values contained on the NASA POE at a given time, the NASA POE interpolator uses a particular polynomial smoothing algorithm both prior to and after that time; hence, the NASA POE will be 'padded' with extra values at start and end to ensure proper interpolator behavior. This extra pad on each NASA POE shall extend 120 minutes (approximately one orbit) before and 120 minutes after the nominal start/end of the ten-day repeat cycle. The exact times in UTC of the start/end of the NASA POE, including the pads, are given in the NASA POE header_section/file_identifier subsection/item: 'NASA POE data begin/end times'. Thus, any POE will overlap the two adjoining POEs by as much as 240 minutes. The time span normally covered by the NASA POE is ten days. However, the NASA POE will not contain any modeled propulsive maneuvers within its span of applicability. The time period during which the NASA POE is valid shall not extend beyond the beginning time of any propulsive maneuvers performed by the T/P satellite; hence, the time period over which a particular NASA POE is valid may be shorter than ten days if unexpected maneuvering of the T/P satellite occurs. The actual extent of the "valid time span" coverage for a particular NASA POE can be determined by reading the fifth item "POE arc cycle begin/end times" in the file identifier sub-section of the NASA POE header. 3.2 Data Volume Each physical record shall contain at most 132 ASCII characters (132 bytes), so that it can be output within the standard maximum character width for printers and some display devices. The NASA POE file is designed to be transferred via magnetic tape; however, it could also be transferred electronically if conventions were developed to name the individual files making up the NASA POE prior to transmission. ESTIMATED NOMINAL NASA POE FILE SIZE Header 3000 lines of G2S listing 400k bytes 1500 lines of G2E Terminal Output 200k bytes NASA POE Data (14626 records /10 days) 7723k bytes (ASCII) TOTAL (approx) 8400k bytes 3.3 Flow Rate Not applicable since NASA POE is not normally transmitted via electrical interfaces. However, electronic transmission using FTP on the INTERNET line from GSFC (IBM) to JPL or UT (VAX) proceeds at about 20 to 40 Kbytes/second, and should take about 5 minutes. An extra 2 bytes are added to each line in creating a variable length format, increasing the total number of transmitted bytes to 8530 Kbytes (approx). It should be noted that if the POE data is formatted as binary the POE file will then contain about 4000 k bytes. SECTION 4 DETAILED DATA PRODUCT DEFINITION 4.1 Structure and Organization Overview The NASA POE file is composed logically of three sections: 1) NASA POE header section Provides information about the entire data product. 2) NASA POE data section Contains time tag, satellite ephemeris, and other information in a series of physical records. 3) Trailer section signaling end of NASA POE file 4.2 Data Organization and Description 4.2.1 Organization The following describes the logical breakdown of each of the three sections composing the NASA POE. The first section, the header section, is further divided into five subsections. The second section, the data section, is composed of one subsection. The third section, the trailer section, is made up of a single subsection. Each subsection describes one physical file, making a total of seven physical files on the magnetic tape. A diagram of this breakdown is presented in Figure 4.1. Figure 4.1 NASA POE File Logical Structure 4.2.2 Content Description 4.2.2.1 NASA POE Header Section The NASA POE header section is composed of five sub-sections. The POE header section contains flags specifying nominal or off-nominal processing mode. The interpolator returns these and other flags as described in Section 2.3.4. Each sub-section is terminated on the magnetic tape by an End-of-File (EOF) mark to aid in tape positioning. A suggested DCL sequence for reading the tape into a DEC-VAX system is contained in Appendix E. 1) File Identifier - nine items * File name ("PRODUCT NAME = NASA POE") * File creation date ("CREATION DATE = YYYY-DDDTHH:MM:SS.SSSS") * POE arc repeat cycle number ("CYCLE NUMBER = nnn") * POE arc sequence number for 10-day repeat cycle (to identify arc interrupted by a maneuver) ("ARC nn of nn", nominally "ARC 01 of 01") * POE arc cycle begin/end times in UTC * GEODYN POE reference epoch * POE data begin/end times in UTC * GEODYN program versions used to create POE * Comments * The first comment line will contain a 10 character or less descriptor of POE quality * Any subsequent comments 2) Solution environment description - two items * Subsection ID * GEODYN G2S listing (with JCL) describing the POE solution reference frame, setup, conditions and constants. 3) Estimated solution parameters - two items * Subsection ID * GEODYN G2E Terminal Output listing describing the solution parameter adjustments. 4) A1-UTC Table - two items * Subsection ID * one or more entries each containing an A1-UTC offset. 5) TOPEX Control Information - five items * Subsection ID * Flags specifying mode of operation (nominal/non- nominal using telemetry, maneuvers, known attitude biases etc.) * Maneuver dates and times * Known attitude biases ( yaw, pitch, roll) and times * Beta' angle regimes defining yaw steering 4.2.2.2 NASA POE Data Section The NASA POE data section is composed of one sub-section. This subsection is made up of a series of physical records each containing time tag, satellite ephemeris, and other information. 1) Ephemeris Data - 20 items repeated as a group for all time epochs at which ephemeris information is supplied * Epoch year, month, day, hour, minute of group of data items in UTC * Epoch second of group of data items in UTC * Sidereal time - Greenwich hour angle of group of data items (deg) * Polar motion 'X' offset (milli arc-secs) * Polar motion 'Y' offset (milli arc-secs) * Epoch time in ET days from Jan. 0.0 of the reference year for the arc * Three items for satellite Inertial True-of-date (ITOD) position X,Y,Z (m) (J2000 definition) * Three items for satellite (ITOD) velocity dX/dt,dY/dt,dZ/dt (m/s) (J2000 definition) * Three items for satellite Earth-fixed position X,Y,Z coordinates (m). * Three items for satellite Earth-fixed velocity dX/dt,dY/dt,dZ/dt coordinates (m/s) * Flags specifying sunlight/shadow, yaw steering mode, etc. Quantity and meaning of flags is shown below. * Beta prime, Yaw, Orbit, and Solar array pitch angles (degrees) For a definition of the satellite reference coordinate systems, see Appendix F. 4.2.2.3 NASA POE Trailer Section The NASA POE trailer section is composed of a single section providing physical record count, and summarizing the file content. This information is included for file read error detection and verification. 4.3 Conventions 4.3.1 Data Representation Conventions The NASA POE file physical records are all represented in ASCII format. The character data and real numbers represented in the ASCII records are the result of FORTRAN write statements with the format field specifications given in 4.4.1. 4.3.2 End-of-File Conventions The NASA POE end-of-file convention is to write a physical end of file on the magnetic tape after each of the five sub-sections within the NASA POE header section and after the subsection within the NASA POE data section and a double end-of-file at the end of the trailer section. Thus, there are a total of seven physical files that may be accessed individually from the NASA POE magnetic tape as indicated in Figure 4.1. In the event the NASA POE is transmitted directly via a network copy, the seven files will be copied individually. 4.4 Data Format The following describes the exact format and contents of the data that is contained in the NASA POE. The description is organized by the logical sections which make up the NASA POE file as shown in Figure 4.1. 4.4.1 File Header Section Format The NASA POE header is composed of five sub-sections. Each of the physical records making up the header are described below. Since the NASA POE is an ASCII file, each physical record corresponds to a 'line' of text and for the NASA POE the length of each of these lines is less than or equal to 132 characters (the standard maximum character width for printers and some display devices). 4.4.1.1 File Identifier Format: Record Item Format Description Format(11A132) 1 1 A132 File name ("PRODUCT NAME = NASA POE") 2 2 A45 File creation date ("CREATION DATE = YYYY-DDDThh:mm:ss.ssss") 3 3 A25 POE Arc Cycle number (also shown on the physical paper label on the tape ext) ("CYCLE NUMBER = nnnnnn") 3 4 A15 POE Arc Sequence no. for 10-d cycle (to identify arc interrupted by a maneuver) ("ARC nn of nn") nominally "ARC 01 of 01" 3 5 A60 POE Arc Cycle begin/end times (Valid Time Span - begin/end yymmdd hhmm seconds (UTC) format(50X,2(I6,1X,I4,1X,F10.6,3X) ) 4 6 A50 GEODYN POE reference epoch (yymmdd hhmm sec) format(I6,1X,I4,1X,F10.6,28X) 4 7 A50 POE data begin/end times (begin/end yymmdd hhmm seconds (UTC) format(2(I6,1X,I4,1X,F10.6,3X) ) 5 8 A132 GEODYN program versions used ("G2S: nnnn.nn G2E: nnnn.nn") 6 9 A10 Comments: a 10 character or less descriptor of the current POE quality 7-11 10 5A132 Comments -- -- End of File (EOF) Marker on Tape 4.4.1.2 Solution Environment Description Item Format Description Format(F12.0/NL1*A132) 1 F12.0 Sub-section ID (-9,000,000,000.0D0) 2 to NL1+1 A132 GEODYN G2S listing -- -- End of File (EOF) Marker on Tape 4.4.1.3 Estimated Solution Parameters Item Format Description Format(F12.0/NL2*A132) 1 F12.0 Sub-section ID (-8,000,000,000.0D0) 2 to NL2+1 A132 GEODYN G2E Terminal Output listing -- -- End of File (EOF) Marker on Tape 4.4.1.4 A1-UTC Table Format: Record Item Format Description Format(F12.0/NL3*(I8,1X,D22.16) 1 1 F12.0 Sub-section ID (-7,000,000,000.0D0) 2 to NL3+1 2 I8 Date (yymmdd) 2 to NL3+1 3 D22.16 A1-UTC (seconds) -- -- End of File (EOF) Marker on Tape 4.4.1.5 TOPEX Control Information Record Item Format Description Format(F12.0/22I1/5D22.16/5*(6D22.16)) 1 1 F12.0 Sub-section ID (-6,000,000,000.0D0) 2 2 22I1 Flags specifying attitude mode and other conditions over arc (1) attitude initial state for arc (1) yaw steering (2) yaw fixed low (3) yaw fixed high (4) ramp up (5) ramp down (6) flip (2) attitude 1st event (0) none (1) yaw steering (2) yaw fixed low (3) yaw fixed high (4) ramp up (5) ramp down (6) flip (3) attitude 2nd event (0) none (1) yaw steering (2) yaw fixed low (3) yaw fixed high (4) ramp up (5) ramp down (6) flip (4) attitude 3rd event (0) none (1) yaw steering (2) yaw fixed low (3) yaw fixed high (4) ramp up (5) ramp down (6) flip (5) maneuvers for this period (0=no, 1=yes) (6) GEODYN application of yaw bias (0=no, 1=yes) (7) GEODYN application of pitch bias (0=no, 1=yes) (8) GEODYN application of roll bias (0=no, 1=yes) (9) GEODYN application of solar array pitch bias (0=no, 1=yes) (10) GEODYN use of telemetry data (0=no, 1=yes) 3 3 D22.16 Beta prime Flip angle (degrees). 3 4 D22.16 Beta prime Ramp angle (degrees). 3 5 D22.16 Beta prime High Fixed Yaw angle (degrees). 3 6 D22.16 Attitude 1st event start epoch year, month, day, hour, minute in form YYMMDDhhmm (UTC). 3 7 D22.16 Attitude 1st event start epoch seconds (UTC). 4 8 D22.16 Attitude 2nd event start epoch year, month, day, hour, minute in form YYMMDDhhmm (UTC). 4 9 D22.16 Attitude 2nd event start epoch seconds (UTC). 4 10 D22.16 Attitude 3rd event start epoch year, month, day, hour, minute in form YYMMDDhhmm (UTC). 4 11 D22.16 Attitude 3rd event start epoch seconds (UTC). 4 12 D22.16 Maneuver at start or just preceding arc year, month, day, hour, minute, in form YYMMDDhhmm (UTC). zero if no maneuver. 4 13 D22.16 Start Maneuver epoch seconds (UTC). 5 14 D22.16 Maneuver at end or just following arc year, month, day, hour, minute, in form YYMMDDhhmm (UTC). zero if no maneuver. 5 15 D22.16 End Maneuver epoch seconds (UTC). 5 16 D22.16 Yaw bias (degrees) 5 17 D22.16 Pitch bias (degrees) 5 18 D22.16 Roll bias (degrees) 5 19 D22.16 Solar array pitch bias (degrees) 6 20 D22.16 Yaw bias start epoch year, month, day, hour, minute in form YYMMDDhhmm (UTC). 6 21 D22.16 Yaw bias start epoch seconds (UTC). 6 22 D22.16 Yaw bias end epoch year, month, day, hour, minute in form YYMMDDhhmm (UTC). 6 23 D22.16 Yaw bias end epoch seconds (UTC). 6 24 D22.16 Pitch bias start epoch year, month, day, hour, minute in form YYMMDDhhmm (UTC). 6 25 D22.16 Pitch bias start epoch seconds (UTC). 7 26 D22.16 Pitch bias end epoch year, month, day, hour, minute in form YYMMDDhhmm (UTC). 7 27 D22.16 Pitch bias end epoch seconds (UTC). 7 28 D22.16 Roll bias start epoch year, month, day, hour, minute in form YYMMDDhhmm (UTC). 7 29 D22.16 Roll bias start epoch seconds (UTC). 7 30 D22.16 Roll bias end epoch year, month, day, hour, minute in form YYMMDDhhmm (UTC). 7 31 D22.16 Roll bias end epoch seconds (UTC). 8 32 D22.16 Solar array pitch bias start epoch year, month, day, hour, minute in form YYMMDDhhmm (UTC). 8 33 D22.16 Solar array pitch bias start epoch seconds (UTC). 8 34 D22.16 Solar array pitch bias end epoch year, month, day, hour, minute in form YYMMDDhhmm (UTC). 8 35 D22.16 Solar array pitch bias end epoch seconds (UTC). -- -- End of File (EOF) Marker on Tape 4.4.2 Data Section Format The NASA POE data section is composed of a single sub-section. The ephemeris data section is made up of NG1 groups of four physical records, or NG1*4 physical records, at 60s intervals over the time span the NASA POE is applicable. In the following table, the variable, N, takes on integer values from 1 to NG1. Record Item Format Description Format(3(6D22.16)/22A1,4D22.16) N 1 D22.16 Epoch year, month, day, hour, min. satellite time in form YYMMDDhhmm (UTC). N 2 D22.16 Epoch seconds satellite time (UTC). N 3 D22.16 Sidereal time - Greenwich hour angle satellite epoch (DEGREES). N 4 D22.16 Polar motion X (milli arc-seconds) N 5 D22.16 Polar motion Y (milli arc-seconds) N 6 D22.16 Epoch time in ET days from Jan 0.0 of the reference year of the arc (days) N+1 7-9 3D22.16 Satellite Inertial True of Date (ITOD) X,Y,Z elements (meters). . . . N+1 10-12 3D22.16 Satellite ITOD X,Y,Z elements (meters/second). N+2 13-15 3D22.16 Satellite Earth Centered Fixed (ECF) X,Y,Z elements (meters). . . . N+2 16-18 3D22.16 Satellite ECF X,Y,Z elements (meters/second). N+3 19 22I1 Flags indicating orbit mode (0=no, 1=yes) (1) OCCULTATION (0=sun, 1=shadow) Yaw steering events (nominal Beta' example) (2) +ON ( 15 to 80 DEG BETA') (3) +OFF ( 0 to 15 DEG BETA') (4) +HIGH OFF ( 80 to 90 DEG BETA') (5) +RAMP UP ( 15 to 15.1DEG BETA') (6) +RAMP DOWN ( 15 to 14.9DEG BETA') (7) +FLIP ( +0 to -0 DEG BETA') (8) -ON (-15 to -80 DEG BETA') (9) -OFF ( 0 to -15 DEG BETA') (10)-HIGH OFF (-80 to -90 DEG BETA') (11)-RAMP UP (-15 to-15.1DEG BETA') (12)-RAMP DOWN (-15 to-14.9DEG BETA') (13)-FLIP ( -0 to +0 DEG BETA') (14) spare (15-22) tai-ut1 in micro seconds, currently only in JPL POE's. N+3 20 D22.16 Beta' angle (degrees) N+3 21 D22.16 Yaw angle (degrees) N+3 22 D22.16 Orbit angle (degrees) N+3 23 D22.16 Solar array pitch angle (degrees) ( ... remaining NG1 groups of three records give data points every 60s over the time span the NASA POE is applicable ... ) -- -- End of File (EOF) Marker on Tape 4.4.3 Trailer Data Section Format - This section terminates the NASA POE and hence is followed by a double EOF on the magnetic tape. Record Item Format Description Format(F12.0/A132/6I8,2X,A50) 1 1 F12.0 Sub-section ID (+9,000,000,000.0D0) 2 2 A45 POE File creation date ("CREATION DATE = YYYY-DDDThh:mm:ss.ssss") 2 3 A25 POE Arc Cycle number ("CYCLE NUMBER = nnnnnn ") 2 4 A15 POE arc sequence number for 10-day repeat cycle ("ARC nn of nn ") 3 5 I8 Number physical records in Header File Identifier subsection 3 6 I8 Number physical records in Header Solution Environment subsection 3 7 I8 Number physical records in Header Estimated Solution Parameters 3 8 I8 Number physical records in Header A1-UTC table 3 9 I8 Number physical records in Header TOPEX Control Information subsection 3 10 I8 Number of physical records in POE Data section 3 2x filler 3 11 A50 POE data begin/end times (begin/end yymmdd hhmm seconds (UTC) format(2(I6,1X,I4,1X,F10.6,3X) ) -- -- End of File (EOF) Marker on Tape -- -- End of File (EOF) Marker on Tape APPENDIX A GLOSSARY A1 Atomic time system adopted by the U.S. Naval Observatory in Washington, D.C. as a realization of a uniform time standard. Ephemeris A list of satellite position vector and velocity vector components accessible as a function of time. GEODYN Primary orbit determination program developed and maintained at GSFC. It is executed in two segments, the G2S segment and the G2E segment. These segments can be and usually are executed on different computer systems. GEODYN G2S The input file generation segment of GEODYN. GEODYN G2E The estimation segment of GEODYN. CTRS The Conventional Terrestrial Reference System accepted by the T/P SWT. It is a geocentric, crust fixed, right handed cartesian coordinate frame defined as follows: The 'z' axis is through the Conventional International Origin (CIO) as defined by the IERS. This is essentially the mean North pole of 1903 of the Earth obtained by averaging pole locations over the 1900 to 1905 time period. The 'x' axis is in the direction of the intersection of the Greenwich meridian (zero longitude) and the associated reference equator plane defined by the IERS. The 'y' axis lies in the associated reference equator plane through ninety degrees east longitude to complete a right-handed coordinate frame. The cartesian position in this frame is returned from the interpolator as the array 'XYZTRS'. ECF Earth Centered Frame - uses the instantaneous rotation axis of the Earth as modeled by the coordinate rotation from the CTRS POLE through the polar motion X,Y angles (returned as array POLANG) to the TRUE POLE. The associated geocentric cartesian frame has 'z' axis through the true (NORTH) pole, 'x' axis in the associated equator plane through the Greenwich meridian (zero degrees longitude), and 'y' axis in the associated equator plane through ninety degrees east longitude to complete a right-handed coordinate frame. The cartesian position in this Earth-centered, Earth-fixed frame is returned from the interpolator as the array 'XYZECF'. NASA POE The primary data product from the PODS used to define the precise position of T/P satellite as a function of time for GDR production. APPENDIX B ACRONYMS ASCII American Standard Code for Information Interchange CCSDS Consultative Committee for Space Data Systems which defined the time exchange format adopted by the TGS. CDDIS Crustal Dynamics Data Information Service center at GSFC CNES/CST Centre National d'Etudes Spatiales/Center Spatial de Toulouse facilities and personnel at Toulouse, France. CTRS The Conventional Terrestrial Reference System accepted by the T/P SWT. CU The University of Colorado at Boulder. Specifically those persons supporting T/P at CU in the Colorado Center for Astrodynamics Research (CCAR). DCL Digital Equipment Corporation Control Language used on DEC- VAX computers running VMS operating systems such as that installed in the TGS. GDPF Global Positioning Satellite (GPS) Data Processing Facility and personnel at JPL. GSFC NASA's Goddard Space Flight Center facilities and personnel at Greenbelt, MD. IERS International Earth Rotation Service JPL NASA's Jet Propulsion Laboratory facilities and personnel at Pasadena, CA. PODS Precision Orbit Determination System of the TOPEX/POSEIDON project. PODPS Production Subsystem of the PODS. During the observational phase of the T/P mission, this subsystem is composed of the software and teams at GSFC which produce the NASA POE. PODT Precision orbit determination team made up of members from the participating T/P PODS institutions: GSFC, UT, CU, JPL. POE Precision orbit ephemeris. Contains information necessary to define precise (sub-decimeter) position of the T/P satellite in an Earth-fixed coordinate frame as a function of time. SPAT Spacecraft performance analysis team of the T/P TGS STX Hughes STX Corporation a consulting firm working for GSFC to assist in definition and operation of the PODPS subsystem SWT Science Working Team of the TOPEX/POSEIDON project TBD To be determined TBS To be supplied TGS TOPEX Ground System facilities and personnel at JPL in Pasadena, CA. T/P TOPEX/POSEIDON project. UT The University of Texas at Austin. Specifically those persons supporting T/P at UT in the Center for Space Research (CSR). UTC Coordinated Universal Time APPENDIX C NASA POE SAMPLE FILE LISTING APPENDIX D NASA POE FILE READER INTERPOLATOR SUBROUTINE LISTING C C------------------------------------------------------------------ C-----HERMITE INTERPOLATION ROUTINES FOLLOW------------------------ C------------------------------------------------------------------ C Version Date Description/programer C 03 02/91 CTRS polar motion correction. POE Header C 02 11/90 Subroutine version for better efficiency. C Nikita Zelensky C C.....HERMITE INTERPOLATOR ROUTINES FOLLOW: C HERM0 (HERM) BLOCK DATA SEQUINT HERMIT C TRUPOL A1SEC DIFF RNDSEC C ADDMIN SUBMIN RDPOEH RDPOE (SKPPOE) C DCLEAR SORT FLGMRG C------------------------------------------------------------------ SUBROUTINE HERM0(INPOE,IYMD1P,IHM1P,SEC1P,IYMD2P,IHM2P,SEC2P, + IFLGOR,IFLGEX) C.....HERM0 control program for HERMITE interpolation package...... C.....initialize POE file unit numbers, and input POE header data c PARAMETER TYPE DESCRIPTION c INPUT : C ======= c INPOE(4) I*4 POE file unit numbers c INPOE(1)= POE Header Identifier c INPOE(2)= POE Header A1-UTC Table c INPOE(3)= POE Ephemeris Data c INPOE(4)= HERMITE printout c OUTPUT: C ======= C IFLGOR(22) I*4 Flags indicating orbit modes C IFLGEX(05) I*4 Flags indicating program execution conditions C IYMD1P I*4 POE header allowed start year, month, day (YYMMDD) C IHM1P I*4 POE header allowed start hour, minutes (HHMM) C SEC1P R*8 POE header allowed start seconds (UTC) C IYMD2P I*4 POE header allowed end year, month, day (YYMMDD) C IHM2P I*4 POE header allowed end hour, minutes (HHMM) C SEC2P R*8 POE header allowed end seconds (UTC) C C NOTE. FOR FULL INTERPOLATOR ACCURACY : C THERE MUST BE 5 EXTRA POE POINT AT BEGINNING AND 5 AT END OF FILE: C I.E. THE FIRST GDR TIME MUST FOLLOW AFTER THE FIRST 5 POE POINTS, C AND THE LAST GDR TIME MUST PRECEED THE LAST POE POINT BY 5. C c AN ALLOWED POE HEADER START/STOP TIMES IS COMPUTED ASSUMING C A 1 MINUTE INTERVAL BETWEEN POE DATA POINTS C..... C FILE INPUT UNIT DESCRIPTION c param POE Header Identifier c param POE Header A1-UTC Table c param POE Ephemeris Data C In GEODYN Earth Centered Fixed Reference C OUTPUT C param PROGRAM PRINTOUT c ................................................................... IMPLICIT REAL*8 (A-H,O-Z) LOGICAL NOT1ST,DEBUG CHARACTER*6 CYCLNO DIMENSION xyztrs(3),xyzecf(6),polang(2), + iflgor(22),iflgex(5),inpoe(4) COMMON/FILFLG/ IEOF,IRPOE COMMON/CONSTS/DRAD,MJD50 COMMON/CTIME/ UTCDIF(20),A1UTC,NUTC,IYMDUT(20),IJUMP, . NOT1ST,DEBUG COMMON/MONTHS/MONTH(13,2),MDAYS(12,2) COMMON/POEDAT/ DATE,SEC,GAST,PMX,PMY,DAYS,XYZNRT(6),XYZ(6), + IFLAG(22),IYMD,IHM COMMON/POEHDR/ DATE1,SEC1,DATE2,SEC2,SECP1,SECP2, . IYMD1,IHM1,IYMD2,IHM2,IYMDP1,IHMP1,IYMDP2,IHMP2,NPOE,CYCLNO COMMON/UNITNO/ IOUT6,INHDR,INA1UT,INDAT C C.....INITALIZE INHDR = INPOE(1) INA1UT = INPOE(2) INDAT = INPOE(3) IOUT6 = INPOE(4) C DO 110 I=1,22 110 IFLGOR(I)=0 DO 120 I=1,05 120 IFLGEX(I)=0 NOT1ST=.FALSE. DEBUG =.FALSE. IEOF=0 IRPOE=0 C REWIND INHDR REWIND INA1UT REWIND INDAT C C C.....READ POE HEADER FOR REFERENCE START/STOP TIMES & FOR A1-UTC VALUES CALL RDPOEH IYMD1P = IYMD1 IHM1P = IHM1 SEC1P = SEC1 IYMD2P = IYMD2 IHM2P = IHM2 SEC2P = SEC2 C C.....WRITE TO HERMITE PRINTOUT LISTING WRITE(IOUT6,11000) CYCLNO,INHDR,INA1UT,INDAT,IOUT6, + IYMDP1,IHMP1,SECP1,IYMDP2,IHMP2,SECP2, + IYMD1 ,IHM1 ,SEC1 ,IYMD2 ,IHM2 ,SEC2 , + DATE1,DATE2 11000 FORMAT(/' **BEGIN HERMITE VERSION 3.0 INTERPOLATION OF', + ' TOPEX POE POSITION**'/ 21X,'POE CYCLE NUMBER = ',A// + ' This output summary gives :'/ + ' 1) user specified I/O unit numbers'/ + ' 2) Allowed interpolation span obtained from POE Header'/ + ' 3) any HERMITE Error messages'// + ' INPUT POE Header Identifier UNIT # = ',I2/ + ' INPUT POE Header A1-UTC Table UNIT # = ',I2/ + ' INPUT POE Ephemeris Data UNIT # = ',I2/ + ' OUTPUT HERMITE Printout Listing UNIT # = ',I2/// + ' POE HEADER EPOCH TIMES YYMMDD HHMM SECONDS'/ + ' POE Header Data Start Epoch: ',I6,2X,I4,2X,F10.6/ + ' POE Header Data End Epoch: ',I6,2X,I4,2X,F10.6// + ' Allowed POE Start Epoch: ',I6,2X,I4,2X,F10.6/ + ' Allowed POE End Epoch: ',I6,2X,I4,2X,F10.6// + ' YYMMDDHHMM'/ + ' Allowed POE Start Date : ',F12.0/ + ' Allowed POE End Date : ',F12.0// + 3X,'In order to insure full interpolator accuracy,'/ + 3x,'the Allowed POE Time Span is determined by shortening'/ + 3x,'the Actual POE Time Span by 5 minutes at each end.'//) C WRITE(IOUT6,11010) A1UTC 11010 FORMAT(3X,'A1-UTC from POE table = ',f12.9) IF(IJUMP.EQ.0) WRITE(IOUT6,11020) 11020 FORMAT(3X,' WITH NO break in A1-UTC over POE time span'//) IF(IJUMP.EQ.1) WRITE(IOUT6,11030) 11030 FORMAT(3X,' WITH BREAK in A1-UTC over POE time span'//) c RETURN C....................................................................... C ENTRY HERM(IYMDG,IHMG,SECG,TA1,XYZECF,XYZTRS,POLANG, + IFLGOR,IFLGEX) C ENTRY HERM........................................................ c PARAMETER TYPE DESCRIPTION C INPUT: C ======= C IYMDG I*4 GDR year, month, day (YYMMDD) C IHMG I*4 GDR hour, minutes (HHMM) C SECG R*8 GDR seconds (UTC) C C OUTPUT: C ======= C TA1 R*8 INTERPOLATED SATELLITE POSITION TIME TAG C (A1 SECONDS FROM POE HEADER ALLOWED REFERENCE START DATE) C XYZECF(6) R*8 Interp GEODYN ECF satellite position(m), velocity(m/s) C (Earth Centered Fixed, Instantaneous Earth Spin Axis) C HERMITE interpolation used for satellite position C LAGRANGE polynomial interpolation for sat velocity C XYZTRS(3) R*8 Interp crust-fixed CTRS satellite position (meters) C Conventional Terrestrial Reference System (SWT adopted) C (Earth Centered Fixed, CIO Mean Pole Reference) C HERMITE interpolation used for satellite position C !!Use XYZTRS for altimeter height correction !! C POLANG(2) R*8 Interpolated Polar motion angles X,Y (milliarcsec) C IFLGOR(22) I*4 Flags indicating orbit modes C (0=off, 1=on, 2=off to on, 3=on to off) C OCCULTATION C (1) : 0= SUN, 1= SHADE, 2= SUN TO SHADE, 3= SHADE TO SUN C YAW STEERING EVENTS (NOMINAL BETA' SHOWN FOR EXAMPLE) C (2) +ON ( 15 to 80 DEG BETA') C (3) +OFF ( 0 to 15 DEG BETA') C (4) +HOFF ( 80 to 90 DEG BETA') C (5) +RAMPUP ( 15 to 15.1DEG BETA') C (6) +RAMPDN ( 15 to 14.9DEG BETA') C (7) +FLIP ( +0 to -0 DEG BETA') C (8) -ON (-15 to -80 DEG BETA') C (9) -OFF ( 0 to -15 DEG BETA') C (10)-HOFF (-80 to -90 DEG BETA') C (11)-RAMPUP (-15 to-15.1DEG BETA') C (12)-RAMPDN (-15 to-14.9DEG BETA') C (13)-FLIP ( -0 to +0 DEG BETA') C IFLGEX(05) I*4 Flags indicating program execution conditions c iflgex(1)= 1 : normal termination POE processing c eof POE/GDR time.GT.POE hdr end time c (1)= 2 : GDR time .LT. POE header start time c (1)= 3 : eof POE before expected - restart c iflgex(2)= number of POE ephemeris data records C............................................................................. C IFLGEX(1)=0 CALL RNDSEC(IYMDG,IHMG,SECG) DATEG = DFLOAT(IYMDG)*10000.D0 + DFLOAT(IHMG) C GDR TIME EXCEEDS POE HEADER END DATE IF(DATEG.GT.DATE2) GO TO 1000 IF(DATEG.EQ.DATE2 .AND. SECG.GT.SEC2) GOTO 1000 C C GDR TIME PRECEDS POE HEADER END DATE (SKIP GDR REC) IF(DATEG.LT.DATE1) GOTO 2000 IF(DATEG.EQ.DATE1 .AND. SECG.LT.SEC1) GOTO 2000 C C.....INTERPOLATE FOR SATELLITE POSITION, VEL. AND POLAR MOTION ANGLES TA1 = A1SEC(IYMD1,IHM1,SEC1,IYMDG,IHMG,SECG) CALL SEQINT(TA1,XYZTRS,XYZECF,POLANG,IFLGOR,*3000) IFLGEX(2) = IRPOE RETURN C C.....NORMAL TERMINATION 1000 CONTINUE IFLGEX(1)=1 RETURN C C.....SKIP GDR RECORD 2000 CONTINUE IFLGEX(1)=2 RETURN C C.....RESTART 3000 CONTINUE IFLGEX(1)=3 IFLGEX(2) = IRPOE RETURN C END C................................................................ BLOCK DATA IMPLICIT REAL*8(A-H,O-Z) CHARACTER*12 SECH2,SECH3,SECH4,SECD1,SECT1 COMMON/CONSTS/DRAD,MJD50 COMMON/CSECID/ SECH2,SECH3,SECH4,SECD1,SECT1 COMMON/MONTHS/M(13,2),MDAY(12,2) C C.... COMMON/CONSTS/DRAD,MJD50 DATA MJD50/33281/, DRAD/0.017453292519943296D0/ C C.....COMMON/CSECID/ SECH2,SECH3,SECH4,SECD1,SECT1 DATA SECH2/'-9000000000.'/,SECH3/'-8000000000.'/, + SECH4/'-7000000000.'/,SECD1/' 7000000000.'/, + SECT1/' 9000000000.'/ C C.... COMMON/MONTHS/M(13,2),MDAY(12,2) DATA M/0,31,60,91,121,152,182,213,244,274,305,335,366,0,31,59, .90,120,151,181,212,243,273,304,334,365/ DATA MDAY/31,29,31,30,31,30,31,31,30,31,30,31, . 31,28,31,30,31,30,31,31,30,31,30,31/ END C.................................................................... C C.......................................................................... SUBROUTINE SEQINT(T,XT,FX,POLANG,IFLGOR,*) C.....SEQUINT.............................................................. C.....SELECT 10 SEQUENTIAL POE RECORDS FOR INTERPOLATING ORBIT POSITION C c PARAMETER TYPE DESCRIPTION C INPUT: C T R*8 GDR TIME (A1 SECONDS FROM POE START DATE) FOR ORBIT C OUTPUT: C XT(3) R*8 Interpolated CTRS satellite position C (Cartesian XYZ meters) C FX(6) R*8 Interp. GEODYN ECF satellite position & velocity C (Cartesian XYZ meters, meters/second) C POLANG(2) R*8 Interpolated Polar motion angles X,Y (milliarcsec) C IFLGOR(22) I*4 Flags indicating orbit modes C..... C FILE INPUT UNIT DESCRIPTION c param POE Ephemeris Data C GEODYN Earth Centered Fixed, Instantaneous Spin Axis C.......................................................................... IMPLICIT REAL*8(A-H,O-Z) LOGICAL NOT1ST,DEBUG CHARACTER*6 CYCLNO DIMENSION XT(3),FX(6),POLANG(2),IFLGOR(22) DIMENSION X(10,6), POLE(10,2), IFLAGS(10,22) COMMON/CDEBUG/DATTAB(10) COMMON/CTIME/ UTCDIF(20),A1UTC,NUTC,IYMDUT(20),IJUMP, . NOT1ST,DEBUG COMMON/FILFLG/ IEOF,IRPOE COMMON/POEDAT/ DATE,SEC,GAST,PMX,PMY,DAYS,XYZNRT(6),XYZ(6), + IFLAG(22),IYMD,IHM COMMON/POEHDR/ DATE1,SEC1,DATE2,SEC2,SECP1,SECP2, . IYMD1,IHM1,IYMD2,IHM2,IYMDP1,IHMP1,IYMDP2,IHMP2,NPOE,CYCLNO COMMON/UNITNO/ IOUT6,INHDR,INA1UT,INDAT C C C.....INITIAL READ OF POE DATA TO OBTAIN TIME INTERVAL BETWEEN POE RECORDS IF (NOT1ST) GO TO 1000 NOT1ST = .TRUE. CALL RDPOE IF(IEOF.EQ.1) GOTO 4000 C TIME1 = TIME 1ST POE DATA POINT (A1 SEC FROM POE START DATE) TIME1= A1SEC(IYMD1,IHM1,SEC1,IYMD,IHM,SEC) CALL RDPOE IF(IEOF.EQ.1) GOTO 4000 TIME2= A1SEC(IYMD1,IHM1,SEC1,IYMD,IHM,SEC) H=TIME2-TIME1 DT = T - TIME1 IREC = DT/H - 3.0D0 JREC = 3 IF (IREC.LT.1) IREC = 1 IF (IREC.GT.2) GO TO 100 C C.....POSITION POE FILE SO THAT 6 to 9 (normally 6) POE RECORDS FOLLOW GDR TIME 50 CONTINUE REWIND INDAT IRPOE = 0 JREC = 1 100 NSKIP = IREC - JREC IF (NSKIP.LE.0) GOTO 300 110 DO 200 I = 1,NSKIP CALL SKPPOE IF(IEOF.EQ.1) GOTO 4000 200 CONTINUE JREC = JREC + NSKIP C C.....READ IN POE SO THAT GDR TIME FALLS BETWEEN 4TH AND 5TH POE RECORDS 300 DO 500 I = 1,10 CALL RDPOE IF(IEOF.EQ.1) GOTO 4000 70 CONTINUE CC DATTAB(I)=DATE POLE(I,1)=PMX POLE(I,2)=PMY DO 490 J=1,22 490 IFLAGS(I,J) = IFLAG(J) DO 500 J = 1,6 X(I,J)=XYZ(J) 500 CONTINUE JREC = JREC + 10 C TIMEB = A1 TIME FOR START OF POE 10 RECORD BLOCK TIMEB= A1SEC(IYMD1,IHM1,SEC1,IYMD,IHM,SEC) - 9.0D0*H NEQN = 1 C C.....POE FILE POSITIONED SO THAT GDR TIME FALLS BETWEEN 1ST AND 6TH RECORDS 510 TI = T - TIMEB CALL HERMIT (NEQN,H,TI,X,FX) CALL TRUPOL (H,TI,FX,XT,POLANG,POLE) CALL FLGMRG (H,TI,IFLAGS,IFLGOR) RETURN C 1000 CONTINUE C.....POST-INITIAL PATH FOR INTERPOLATION.................... C------------------------------------------------------------------- C IRPOE |1|2|3|4|5|6|7|8|9|10| POE RECORD # C IREC | 1 |2|3|4|5| 6| C ISKIP | 10 |9|8|7|6| 5| 10-ISKIP POE RECORDS FORWARD C------------------------------------------------------------------- C DT=T-TIME1 IREC=DT/H-3.0D0 IF(IREC.LT.1)IREC=1 C IF GDR TIME LESS THAN POE BLOCK START TIME, THEN RESTART IF (T.LT.TIMEB) GO TO 50 NSKIP = IREC - JREC IF(NSKIP.GT.0) GO TO 110 C READ IN NEW BLOCK OF 10 POE RECORDS IF(NSKIP.EQ.0) GO TO 300 C C INTERPOLATE - GDR TIME FALLS BETWEEN 1ST AND 6TH POE RECORDS C and normally BETWEEN 4th AND 5th POE RECORDS IF(NSKIP.LE.-10) GO TO 510 C C MOVE TIME WINDOW FORWARD "10-ISKIP" POE RECORDS ISKIP = -NSKIP DO 1100 I = 1,ISKIP IFWRD = 10-ISKIP + I CC DATTAB(I)=DATTAB(IFWRD) POLE(I,1)=POLE(IFWRD,1) POLE(I,2)=POLE(IFWRD,2) DO 1090 J = 1,22 1090 IFLAGS(I,J)=IFLAGS(IFWRD,J) DO 1100 J = 1,6 1100 X(I,J)=X(IFWRD,J) ISKIP1 = ISKIP + 1 DO 1200 I = ISKIP1,10 CALL RDPOE IF(IEOF.EQ.1) GOTO 4000 CC DATTAB(I)=DATE POLE(I,1)=PMX POLE(I,2)=PMY DO 1190 J = 1,22 1190 IFLAGS(I,J)=IFLAG(J) DO 1200 J = 1,6 1200 X(I,J)=XYZ(J) JREC = JREC + 10 + NSKIP TIMEB= A1SEC(IYMD1,IHM1,SEC1,IYMD,IHM,SEC) - 9.0D0*H NEQN = 1 TI = T - TIMEB CALL HERMIT (NEQN,H,TI,X,FX) CALL TRUPOL (H,TI,FX,XT,POLANG,POLE) CALL FLGMRG (H,TI,IFLAGS,IFLGOR) RETURN C C.....RETURN FOR RESTART 4000 CONTINUE IEOF=1 JREC=1 RETURN1 END C SUBROUTINE TRUPOL(H,TI,FX,XTRU,POLANG,POLE) C.....LINERALY INTERPOLATE POLAR MOTION ANGLES FOR GDR TIME AND C COMPUTE TRUE or MEAN POLE POSITION C PARAMETER DESCRIPTION C INPUT C H R*8 TIME INTERVAL(SECONDS) BETWEEN 2 POE POINTS C TI R*8 TIME (A1 SECONDS) FROM POE 10 RECORD BLOCK TO GDR POINT C POLE R*8 TABLE OF POLAR MOTION ANGLES(MILLI ARC SEC) C FX(1-3) R*8 ECF SATELLITE POSITION (M) C OUTPUT C XTRU(3) R*8 ECF MEAN POLE SATELLITE POSITION (M) (CTRS) C POLANG(2)R*8 Interpolated Polar motion angles X,Y (milliarcsec) C................................................................... IMPLICIT REAL*8(A-H,O-Z) LOGICAL NOT1ST,DEBUG DOUBLE PRECISION MATRX(3,3) DIMENSION FX(6), XTRU(3), POLANG(2), POLE(10,2) COMMON/CONSTS/DRAD,MJD50 COMMON/CDEBUG/DATTAB(10) COMMON/CTIME/ UTCDIF(20),A1UTC,NUTC,IYMDUT(20),IJUMP, . NOT1ST,DEBUG C C...DETERMINE INDICES SUCH THAT : I1 < = (GDR time point) < I2 I = DINT(TI/H) I1 = I + 1 I2 = I1 + 1 C...LINEARY INTERPOLATE POLAR ANGLES( + convert milliarcsec to radians) IT = I*DINT(H) DT = (TI - DFLOAT(IT))/H PMX = POLE(I1,1) + (POLE(I2,1)-POLE(I1,1))*DT PMY = POLE(I1,2) + (POLE(I2,2)-POLE(I1,2))*DT POLANG(1) = PMX POLANG(2) = PMY X = (PMX/3600.D3) * DRAD Y = (PMY/3600.D3) * DRAD C C...CONSTRUCT POLAR MOTION ROTATION MATRIX C X(true) = R1(y) R2(x) X(mean) C WHERE (x,y) : BIH angles (radians) C MATRX(1,1)= 1.D0 MATRX(1,2)= 0.D0 MATRX(1,3)= -X MATRX(2,1)= X*Y MATRX(2,2)= 1.D0 MATRX(2,3)= Y MATRX(3,1)= X MATRX(3,2)= -Y MATRX(3,3)= 1.D0 C ROTATE COORDINATES FROM MEAN TO TRUE POLE POSITION CC DO 100 I=1,3 CC XTRU(I) = 0.D0 CC DO 100 J=1,3 CC XTRU(I)=XTRU(I)+MATRX(I,J)*FX(J) CC100 CONTINUE C ROTATE COORDINATES FROM TRUE TO MEAN POLE POSITION DO 200 J=1,3 XTRU(J) = 0.D0 DO 200 I=1,3 XTRU(J)=XTRU(J)+MATRX(I,J)*FX(I) 200 CONTINUE RETURN END C SUBROUTINE FLGMRG(H,TI,IFLAGS,IFLGOR) C.....MERGE ORBIT FLAG INFORMATION FOR INTERPOLATED POINTS C PARAMETER DESCRIPTION C INPUT C H R*8 TIME INTERVAL(SECONDS) BETWEEN 2 POE POINTS C TI R*8 TIME (A1 SECONDS) FROM POE 10 RECORD BLOCK TO GDR POINT C IFLAGS I*4 TABLE OF POE ORBIT FLAGS C (VALUE: 0= OFF, 1=ON) C OCCULTATION C (1) : 0= SUN, 1= SHADE C YAW STEERING EVENTS (NOMINAL BETA' SHOWN FOR EXAMPLE) C (2) +ON ( 15 to 80 DEG BETA'): 0= NO, 1=YES C (3) +OFF ( 0 to 15 DEG BETA'): 0= NO, 1=YES C (4) +HOFF ( 80 to 90 DEG BETA'): 0= NO, 1=YES C (5) +RAMPUP ( 15 to 15.1DEG BETA'): 0= NO, 1=YES C (6) +RAMPDN ( 15 to 14.9DEG BETA'): 0= NO, 1=YES C (7) +FLIP ( +0 to -0 DEG BETA'): 0= NO, 1=YES C (8) -ON (-15 to -80 DEG BETA'): 0= NO, 1=YES C (9) -OFF ( 0 to -15 DEG BETA'): 0= NO, 1=YES C (10)-HOFF (-80 to -90 DEG BETA'): 0= NO, 1=YES C (11)-RAMPUP (-15 to-15.1DEG BETA'): 0= NO, 1=YES C (12)-RAMPDN (-15 to-14.9DEG BETA'): 0= NO, 1=YES C (13)-FLIP ( -0 to +0 DEG BETA'): 0= NO, 1=YES C KNOWN ATTITUDE BIASES C (14) YAW BIAS 0=no, 1=yes C (15) PITCH BIAS 0=no, 1=yes C (16) ROLL BIAS 0=no, 1=yes C OUTPUT C IFLGOR I*4 Merged flags indicating orbit modes C (VALUE: 0= OFF, 1=ON, 2= OFF TO ON, 3= ON TO OFF) C OCCULTATION C (1) : 0= SUN, 1= SHADE, 2= SUN TO SHADE, 3= SHADE TO SUN C YAW STEERING EVENTS (NOMINAL BETA' SHOWN FOR EXAMPLE) C (2) +ON ( 15 to 80 DEG BETA') C (3) +OFF ( 0 to 15 DEG BETA') C (4) +HOFF ( 80 to 90 DEG BETA') C (5) +RAMPUP ( 15 to 15.1DEG BETA') C (6) +RAMPDN ( 15 to 14.9DEG BETA') C (7) +FLIP ( +0 to -0 DEG BETA') C (8) -ON (-15 to -80 DEG BETA') C (9) -OFF ( 0 to -15 DEG BETA') C (10)-HOFF (-80 to -90 DEG BETA') C (11)-RAMPUP (-15 to-15.1DEG BETA') C (12)-RAMPDN (-15 to-14.9DEG BETA') C (13)-FLIP ( -0 to +0 DEG BETA') C................................................................... IMPLICIT REAL*8(A-H,O-Z) DIMENSION IFLAGS(10,22), IFLGOR(22) COMMON/CDEBUG/DATTAB(10) C C...DETERMINE INDICES SUCH THAT : I1 < = (GDR time point) < I2 I = DINT(TI/H) I1 = I + 1 I2 = I1 + 1 C C...MERGE FLAGS, PREVIOUS MINUS NEXT C NOTE. AS OF 11/90 THERE ARE 13 FLAGS DO 100 J=1,13 IFLGOR(J) = IFLAGS(I1,J) - IFLAGS(I2,J) + 3 IF (IFLGOR(J).EQ.3) IFLGOR(J) = IFLAGS(I1,J) IF (IFLGOR(J).EQ.4) IFLGOR(J) = 3 100 CONTINUE RETURN END C C......................................................... C........POE HERMITE INTERPOLATOR (10th order)............ C......................................................... SUBROUTINE HERMIT (N,H,TI,X,FX) CC SUBROUTINE HERMIT (N,H,TI,X,FX,XLON,DLON) C C INPUT: C N=NO. OF POSITIONS AND VELOCITY VECTORS TO BE INTERPOLATED C H=INTERVAL BETWEEN X POINTS (h step size) C TI=INTERPOLATION INTERVAL (t - t0) C X=ARRAY CONTAINING THE M (10) POSITION AND VELOCITY VECTORS C OUTPUT: C FX=ARRAY OF INTERPOLATED POSITION AND VELOCITY VECTORS C HERMITE interpolation(pos & vel) used for satellite position C LAGRANGE polynomial interpolation(vel) for satellite velocity C C Documentation: C The Hermite interpolation formula uses osculating c polynomials of contact order 10. They have the properties: C X(tj) = P(tj) C X'(tj) = P'(tj) C where c X and X' are the satellite position and velocity at time=tj, c and P and P' are the corresponding polynomial values. c c the Hermite formula for satellite position: c c 10 c P(tj) = SUM ( Hj * X(tj) + H'j * X'(tj) ) c j=1 c where c c Hj = [1 - 2(s-j) (1 + (1/(j-1)) ] * [ Lj (tj)]**2 c (0 if j=1) c H'j = h (s - j) * [ Lj (tj)]**2 c and c h = step size between two consecutive X points(60 seconds) c s = (t-t0) /h c t = time of interest c t0 = start time of 10 minute interval c X points are continuously input so that (t-t0) is kept c to around the midpoint (241 - 300 seconds) of the 10 c minute interval (s1=0,...s10=9) c Lj(tj)= Lagrange polynomial for X point time=tj such that: c 10 c = (-1)**(1-j) (s-0) PRODUCT [s - k - 1] / [ j! (1-j)! ] c k=1 (k.ne.j) c C c.............. c the Lagrange interpolation formula for satellite velocity (time=tj): c c 10 c V(tj) = SUM ( Lj(tj) * X'(tj) ) c j=1 C C...................................................................... CC DOUBLE PRECISION H,TI,X(10,6,1),FX(6,1),FN,FI,LS,NF,XLON(10),DLON, DOUBLE PRECISION H,TI,X(10,6,1),FX(6,1),FN,FI,LS,NF, . S,SMI1,SMI2,FIM1,FNI2,A(20),SMJ,SJMI,FJ,COFF,HX, . HXB,S1 LOGICAL NORRAT DATA NORRAT /.FALSE./ DATA M/10/ CALL DCLEAR(FX,6,N) CCC DLON=0.0D0 LS=1.0D0 NF=1.0D0 S1=0.D0 FN=M S=TI/H DO 4 I=1,M FI=I-1 SMI1=S-FI IF(SMI1.EQ.0.0D0) GO TO 60 LS=LS*SMI1 NF=NF*(FI+1.0D0) 4 S1=S1+1.0D0/SMI1 NF=NF/FN A(1)=-LS/(NF*S) DO 5 I=2,M FIM1=I-1 SMI1=S-FIM1 IF(SMI1.EQ.0.0D0) GO TO 60 SMI2=SMI1+1.0D0 FNI2=FN-FIM1 5 A(I)=-A(I-1)*(SMI2/SMI1)*(FNI2/FIM1) J=0 FJ=0.0D0 10 I=0 SJMI=0.D0 LN=J+1 15 FI=I IF(I.NE.J) SJMI=SJMI+1.0D0/(FJ-FI) I=I+1 IF(I .LT. M) GO TO 15 SMJ=S-FJ COFF=A(J+1)**2 HX=COFF-2.D0*SMJ*SJMI*COFF HXB=H*SMJ*COFF CCC DLON=DLON+A(J+1)*XLON(LN) DO 30 II=1,3 FX(II,1)=FX(II,1) + HX*X(LN,II,1) + HXB*X(LN,II+3,1) 30 FX(II+3,1)=FX(II+3,1) + A(J+1)*X(LN,II+3,1) J=J+1 FJ=J IF(J .LT. M) GO TO 10 IF (N.EQ.1) RETURN DO 40 L=2,N DO 40 I=1,3 DO 40 J=1,M 40 FX(I,L)=FX(I,L)+A(J)*X(J,I,L) IF (NORRAT) RETURN DO 50 L=2,N DO 50 I=4,6 DO 50 J=1,M 50 FX(I,L)=FX(I,L)+A(J)*X(J,I,L) RETURN 60 LN=I CCC DLON=XLON(LN) DO 65 K=1,N DO 65 I=1,3 FX(I,K)=X(LN,I,K) 65 FX(I+3,K)=X(LN,I+3,K) RETURN END C SUBROUTINE DCLEAR (A,K,N) DOUBLE PRECISION A(1) J = N*K IF (J.LE.0) GO TO 20 DO 10 I = 1,J 10 A(I) = 0 20 RETURN END C C.......................................................................... DOUBLE PRECISION FUNCTION A1SEC(IYMD1,IHM1,SEC1,IYMD,IHM,SEC) C.......................................................................... C.....COMPUTE A1 TIME IN SECONDS FROM A SPECIFIED REFERENCE DATE C REFERENCE DATE IS NORMALLY POE START TIME C INPUT IYMD1 I*4 REFERENCE TIME - DATE (YYMMDD) C IHM1 I*4 REFERENCE TIME - HR,MIN (HHMM) C SEC1 R*8 REFERENCE TIME - SECONDS C IYMD I*4 TIME OF INTEREST- DATE (YYMMDD) C IHM I*4 TIME OF INTEREST- HR,MIN (HHMM) C SEC R*8 TIME OF INTEREST- SECONDS C OUTPUT A1SEC R*8 A1 SECONDS OF TIME FROM REFERENCE DATE C.......................................................................... IMPLICIT REAL*8 (A-H,O-Z) LOGICAL NOT1ST,DEBUG LOGICAL ERRFLG COMMON/CTIME/ UTCDIF(20),A1UTC,NUTC,IYMDUT(20),IJUMP, . NOT1ST,DEBUG COMMON/UNITNO/ IOUT6,INHDR,INA1UT,INDAT DATA ERRFLG/.TRUE./ C C.....COMPUTE UTC TIME DIFFERENCE BETWEEN POE START AND GDR POINT IRFYMD = IYMD1 IS1 = DINT(SEC1) IRFHMS = IHM1*100 + IS1 IS = DINT(SEC ) IHMS = IHM *100 + IS FS1 = SEC1 - DFLOAT(IS1) FS = SEC - DFLOAT(IS) DFS = FS - FS1 C.....NOTE FOR THE POE APPLICATION DFS = 0 CALL DIFF(IRFYMD,IRFHMS,IYMD,IHMS,IDAY,ISEC) UTCSEC = DFLOAT(IDAY*86400) + DFLOAT(ISEC) + DFS C C.....CONVERT UTC TO A1 TIME IF(IJUMP.EQ.0) GOTO 200 N1 = NUTC-1 DO 100 I=1,N1 I1 = I+1 IF(IYMD .LT. IYMDUT(I1)) GOTO 150 100 CONTINUE C PRINT WARNING - GDR TIME FOLLOWS LATEST GIVEN A1-UTC DATE IF(ERRFLG) WRITE(IOUT6,9001) IYMD,I1,IYMDUT(I1) 9001 FORMAT(//' **WARNING** GDR TIME FOLLOWS LATEST GIVEN', + ' A1-UTC DATE'/14X,'GDR YYMMDD=',I7,4X,'TABLE(',I2,')=',I7) ERRFLG=.FALSE. I=NUTC 150 CONTINUE IF (IYMD .GE. IYMDUT(I) ) GOTO 175 C PRINT WARNING - GDR TIME PRECEEDS EARLIEST GIVEN A1-UTC DATE IF(ERRFLG) WRITE(IOUT6,9002) IYMD,I,IYMDUT(I) 9002 FORMAT(//' **WARNING** GDR TIME PRECEEDS EARLIEST GIVEN', + ' A1-UTC DATE'/14X,'GDR YYMMDD=',I7,4X,'TABLE(',I2,')=',I7) ERRFLG=.FALSE. 175 CONTINUE A1UTC = UTCDIF(I) 200 CONTINUE A1SEC = UTCSEC + A1UTC RETURN END C C C NAME DIFF DIFF 1 C DIFF 2 C PURPOSE TO CALCULATE THE DIFFERENCE BETWEEN ANY TWO TIME DIFF 3 C POINTS IN THE 20TH CENTURY DIFF 4 C DIFF 5 C CALLING SEQUENCE CALL DIFF(IYMD1,IHMS1,IYMD2,IHMS2,IDAY,ISEC) DIFF 6 C DIFF 7 C SYMBOL TYPE DESCRIPTION DIFF 8 C DIFF 9 C IYMD1 I INPUT - DATE IN FORM YYMMDD DIFF 10 C DIFF 11 C IHMS1 I INPUT - TIME ON IYMD1 IN FORM HHMMSS DIFF 12 C DIFF 13 C IYMD2 I INPUT - SECOND DATE IN FORM YYMMDD DIFF 14 C DIFF 15 C IHMS2 I INPUT - TIME ON IYMD2 IN FORM HHMMSS DIFF 16 C DIFF 17 C IDAY2 I OUTPUT - ELAPSED FULL DAY DIFFERENCE DIFF 18 C IDAY IS NEGATIVE IF IYMD2,IHMS2 IS THE DIFF 19 C EARLIER TIME DIFF 20 C DIFF 21 C ISEC HAS THE SAME SIGN CONVENTION AS IDAY DIFF 22 C DIFF 23 C SUBROUTINES USED NONE DIFF 24 C ISEC I OUTPUT - REMAINDER OF DIFFERENCE IN SECONDS DIFF 25 C DIFF 26 C COMMON BLOCKS MONTHS DIFF 27 C DIFF 28 C INPUT FILES NONE DIFF 29 C DIFF 30 C OUTPUT FILES NONE DIFF 31 C DIFF 32 C DIFF 33 C DIFF 34 C DIFF 35 SUBROUTINE DIFF(IYMD1,IHMS1,IYMD2,IHMS2,IDAY,ISEC) DIFF 36 COMMON/MONTHS/MONTH(13,2),MDAYS(12,2) ISUB(IY)=MIN0(MOD(IY,4),1)+1 DIFF 38 C CHECK FOR A DIFFERENCE OF LESS THAN ONE DAY DIFF 39 ISEC=0 DIFF 40 IF(IYMD1.EQ.IYMD2) GOTO 4000 DIFF 41 C SEPARATE IYMD1 AND IYMD2 INTO THREE WORD EACH DIFF 42 IY1=IYMD1/10000 DIFF 43 ID1=IYMD1-IY1*10000 DIFF 44 IM1=ID1/100 DIFF 45 ID1=ID1-IM1*100 DIFF 46 IY2=IYMD2/10000 DIFF 47 ID2=IYMD2-IY2*10000 DIFF 48 IM2=ID2/100 DIFF 49 ID2=ID2-IM2*100 DIFF 50 C COMPUTE THE ELAPSED DAY SINCE JAN 0,1900 DIFF 51 L1=ISUB(IY1) DIFF 52 IYEAR1=36525*(IY1-1)/100+MONTH(IM1,L1)+ID1 DIFF 53 L2=ISUB(IY2) DIFF 54 IYEAR2=36525*(IY2-1)/100+MONTH(IM2,L2)+ID2 DIFF 55 C CONVERT ELAPSED DAYS INTO ELAPSED SECONDS DIFF 56 ISEC=(IYEAR2-IYEAR1)*86400 DIFF 57 C CALCULATE ELAPSED SECONDS INTO EACH DAY DIFF 58 4000 ISEC1=IHMS1-40*(IHMS1/100)-2400*(IHMS1/10000) DIFF 59 ISEC2=IHMS2-40*(IHMS2/100)-2400*(IHMS2/10000) DIFF 60 C SUBTRACT THE TWO ELAPSED SECONDS VALUES DIFF 61 ISEC=ISEC+ISEC2-ISEC1 DIFF 62 C COMPUTE IDAY DIFF 63 IDAY=ISEC/86400 DIFF 64 C COMPUTE ISEC DIFF 65 ISEC=ISEC-IDAY*86400 DIFF 66 RETURN DIFF 67 END DIFF 68 C C.....ROUND TO THE NEAREST SECOND ACCOUNTING FOR NUMRICAL INACCURACIES C SO THAT MM.LE.12; DD.LE.DAY IN MM; HH.LT.24; MM.LT.60; SEC.LT.60 SUBROUTINE RNDSEC(IYMD,IHM,SEC) IMPLICIT REAL*8(A-H,O-Z) COMMON/MONTHS/MONTH(13,2),MDAYS(12,2) C ISUB(IY)=MIN0(MOD(IY,4),1)+1 C SECR = SEC + 1.D-8 IF(SECR.LT.60.D0) RETURN SEC = 0.D0 IH =IHM/100 IM= IHM- IH*100 IM=IM+1 IF(IM .LT. 60) GOTO 100 IHN = IM/60 IM = IM - IHN*60 IH = IH + IHN IF(IH .LT. 24) GOTO 100 C IDN = IH/24 IH = IH -24 IY = IYMD/10000 IMD= IYMD - IY*10000 IMO= IMD/100 ID = IMD - IMO*100 + IDN ILP=ISUB(IY) IF(ID .LE. MDAYS(IMO,ILP)) GOTO 200 IMO= IMO+1 ID = ID - MDAYS(IMO,ILP) IF(IMO.LE. 12) GOTO 200 IY = IY+1 IMO=1 ID =1 GOTO 200 C C.....RECONSTRUCT IHM 100 CONTINUE IHM = IH*100 + IM RETURN C C.....RECONSTRUCT IHM AND IYMD 200 CONTINUE IHM = IH*100 + IM IYMD= IY*10000+IMO*100+ID RETURN END C C.....ADDMIN ADD IMIN TO DATE AND ADJUST SUBROUTINE ADDMIN(IMIN,IYMD,IHM) IMPLICIT REAL*8(A-H,O-Z) COMMON/MONTHS/MONTH(13,2),MDAYS(12,2) C ISUB(IY)=MIN0(MOD(IY,4),1)+1 C IH =IHM/100 IM= IHM- IH*100 IM=IM+IMIN IF(IM .LT. 60) GOTO 100 IHN = IM/60 IM = IM - IHN*60 IH = IH + IHN IF(IH .LT. 24) GOTO 100 C IDN = IH/24 IH = IH -24 IY = IYMD/10000 IMD= IYMD - IY*10000 IMO= IMD/100 ID = IMD - IMO*100 + IDN ILP=ISUB(IY) IF(ID .LE. MDAYS(IMO,ILP)) GOTO 200 IMO= IMO+1 ID = ID - MDAYS(IMO,ILP) IF(IMO.LE. 12) GOTO 200 IY = IY+1 IMO=1 ID =1 GOTO 200 C C.....RECONSTRUCT IHM 100 CONTINUE IHM = IH*100 + IM RETURN C C.....RECONSTRUCT IHM AND IYMD 200 CONTINUE IHM = IH*100 + IM IYMD= IY*10000+IMO*100+ID RETURN END C C.....SUBMIN SUBTRACT IMIN TO DATE AND ADJUST SUBROUTINE SUBMIN(IMIN,IYMD,IHM) IMPLICIT REAL*8(A-H,O-Z) COMMON/MONTHS/MONTH(13,2),MDAYS(12,2) C ISUB(IY)=MIN0(MOD(IY,4),1)+1 C IH =IHM/100 IM= IHM- IH*100 IM=IM-IMIN IF(IM .GE. 00) GOTO 100 IM = IM + 60 IH = IH -1 IF(IH .GE. 00) GOTO 100 C IH = IH + 24 IY = IYMD/10000 IMD= IYMD - IY*10000 IMO= IMD/100 ID = IMD -IMO*100 - 1 IF(ID .GT. 0) GOTO 200 IMO= IMO-1 IF(IMO .GT. 0) GOTO 50 IY = IY-1 IMO= IMO+12 50 CONTINUE ILP=ISUB(IY) ID = MDAYS(IMO,ILP) GOTO 200 C C.....RECONSTRUCT IHM 100 CONTINUE IHM = IH*100 + IM RETURN C C.....RECONSTRUCT IHM AND IYMD 200 CONTINUE IHM = IH*100 + IM IYMD= IY*10000+IMO*100+ID RETURN END C C.....SORT BY VALUE SUBROUTINE SORT(N,IVAL,ARRAY) IMPLICIT REAL*8(A-H,O-Z) DIMENSION IVAL(N), ARRAY(N) C IF(N.LE.1) GOTO 900 C N1 = N-1 N2 = N-1 DO 200 I=1,N1 DO 100 J=1,N2 J1 = J+1 IF(IVAL(J).LE.IVAL(J1)) GOTO 100 ITEMP = IVAL (J) IVAL (J) = IVAL (J1) IVAL (J1)= ITEMP TEMP = ARRAY(J) ARRAY(J) = ARRAY(J1) ARRAY(J1)= TEMP 100 CONTINUE N2=N2-1 200 CONTINUE C RETURN C C.....ERROR CONDITIONS 900 CONTINUE STOP 900 END C C-----READ/WRITE ROUTINES FOLLOW------------------------------------- C C.....READ TOPEX POE HEADER RECORDS FOR REFERENCE TIMES & A1-UTC VALUES SUBROUTINE RDPOEH IMPLICIT REAL*8(A-H,O-Z) LOGICAL NOT1ST,DEBUG CHARACTER*6 CYCLNO CHARACTER*8 CHAR8 CHARACTER*12 CHAR12,ID12 CHARACTER*12 SECH2,SECH3,SECH4,SECD1,SECT1 COMMON/CSECID/ SECH2,SECH3,SECH4,SECD1,SECT1 COMMON/CTIME/ UTCDIF(20),A1UTC,NUTC,IYMDUT(20),IJUMP, . NOT1ST,DEBUG COMMON/FILFLG/ IEOF,IRPOE COMMON/POEHDR/ DATE1,SEC1,DATE2,SEC2,SECP1,SECP2, . IYMD1,IHM1,IYMD2,IHM2,IYMDP1,IHMP1,IYMDP2,IHMP2,NPOE,CYCLNO COMMON/UNITNO/ IOUT6,INHDR,INA1UT,INDAT C C.....READ HEADER SUB-SECTION 1 START/STOP POE TIMES C OBTAIN START/STOP REFERENCE DATES READ(INHDR,10000,END=5000) READ(INHDR,10010,END=5000) CYCLNO READ(INHDR,10000,END=5000) IRHDR = 3 10000 FORMAT(1X) 10010 FORMAT(59X,A) READ(INHDR,10100,END=5000) IYMDP1,IHMP1,SECP1,IYMDP2,IHMP2,SECP2 IRHDR= IRHDR+1 10100 FORMAT(50X,2(I6,1X,I4,1X,F10.6,3X)) C WRITE(IOUT6,1001) IYMDP1,IHMP1,SECP1,IYMDP2,IHMP2,SECP2 C1001 FORMAT(/' **READ POE HEADER** '/ C + ' POE HEADER START TIME (YYMMDD HHMM, SEC): ',I6,I5,1X,F10.6/ C + ' POE HEADER END TIME (YYMMDD HHMM, SEC): ',I6,I5,1X,F10.6/) C C.....PROCESS POE HEADER DATES 1000 CONTINUE C C NOTE. FOR FULL INTERPOLATOR ACCURACY : C THERE MUST BE 5 EXTRA POE POINT AT BEGINNING AND 5 AT END OF FILE: C I.E. THE FIRST GDR TIME MUST FOLLOW AFTER THE FIRST 5 POE POINTS, C AND THE LAST GDR TIME MUST PRECEED THE LAST POE POINT BY 5. C ASSUME 1 MINUTE INTERVAL BETWEEN POE DATA POINTS C IMIN=5 C... DATE1 IYMD1 = IYMDP1 IHM1 = IHMP1 SEC1 = SECP1 CALL RNDSEC(IYMD1,IHM1,SEC1) CALL ADDMIN(IMIN,IYMD1,IHM1) DATE1 = DFLOAT(IYMD1)*10000.D0 + DFLOAT(IHM1) C... DATE2 IYMD2 = IYMDP2 IHM2 = IHMP2 SEC2 = SECP2 CALL RNDSEC(IYMD2,IHM2,SEC2) CALL SUBMIN(IMIN,IYMD2,IHM2) DATE2 = DFLOAT(IYMD2)*10000.D0 + DFLOAT(IHM2) C C.....READ HEADER SUB-SECTION 4 A1-UTC TABLE C OBTAIN A1-UTC TABULATED INFORMATION ID12 = SECH4 IRAUT = 0 1600 CONTINUE READ(INA1UT,10200,END=6000) CHAR12,CHAR8 IRAUT=IRAUT+1 IF(CHAR12.NE.ID12) GOTO 1600 10200 FORMAT(A12,A8) I=0 1700 CONTINUE I=I+1 READ(INA1UT,10220,END=1800) IYMDUT(I),UTCDIF(I) IF(I.GT.20) GOTO 1800 GOTO 1700 1800 CONTINUE NUTC=I IF(NUTC.LE.1) GOTO 6010 IF(NUTC.GT.20) GOTO 6010 10220 FORMAT(2X,I6,1X,D22.16) C10220 FORMAT(1X,I6,1X,D22.16) C C SORT A1UTC TABLE BY DATE (YMD) CALL SORT(NUTC,IYMDUT,UTCDIF) C C FIND A1-UTC VALUE(S) FOR POE TIME PERIOD N1 = NUTC-1 C DO 1100 I=1,N1 I1 = I+1 IF(IYMD1 .LT. IYMDUT(I1)) GOTO 1150 1100 CONTINUE C PRINT ERROR - POE START DATE FOLLOWS ALL GIVEN A1-UTC DATES WRITE(IOUT6,1101) IYMD1,I1,IYMDUT(I1) 1101 FORMAT(//' **WARNING** POE START TIME FOLLOWS LATEST GIVEN', + ' A1-UTC DATE'/14X,'POE YYMMDD=',I7,4X,'TABLE(',I2,')=',I7//) I=NUTC 1150 CONTINUE C PRINT ERROR - POE START DATE PRECEEDS ALL GIVEN AI-UTC DATES IF (IYMD1.LT. IYMDUT(I) ) WRITE(IOUT6,1151) IYMD1,I ,IYMDUT(I ) 1151 FORMAT(//' **WARNING** POE START TIME PRECEEDS EARLIEST GIVEN', + ' A1-UTC DATE'/14X,'POE YYMMDD=',I7,4X,'TABLE(',I2,')=',I7//) IL=I C DO 1200 I=1,N1 I1 = I+1 IF(IYMD2 .LT. IYMDUT(I1)) GOTO 1250 1200 CONTINUE C PRINT ERROR - POE END DATE FOLLOWS ALL GIVEN AI-UTC DATES WRITE(IOUT6,1201) IYMD2,I1,IYMDUT(I1) 1201 FORMAT(//' **WARNING** POE END TIME FOLLOWS LATEST GIVEN', + ' A1-UTC DATE'/14X,'POE YYMMDD=',I7,4X,'TABLE(',I2,')=',I7//) I=NUTC 1250 CONTINUE C PRINT ERROR - POE END DATE PRECEEDS ALL GIVEN AI-UTC DATES IF (IYMD2.LT. IYMDUT(I) ) WRITE(IOUT6,1251) IYMD2,I ,IYMDUT(I ) 1251 FORMAT(//' **WARNING** POE END TIME PRECEEDS EARLIEST GIVEN', + ' A1-UTC DATE'/14X,'POE YYMMDD=',I7,4X,'TABLE(',I2,')=',I7//) IH=I C C.....CHECK IF A1-UTC JUMP OCCURS WITHIN POE TIME PERIOD IJUMP = 0 IF(UTCDIF(IL).NE.UTCDIF(IH)) IJUMP=1 A1UTC = UTCDIF(IL) C C RETURN C C.....ERROR CONDITIONS 5000 CONTINUE WRITE(IOUT6,5001) IRHDR 5001 FORMAT(//' **ERROR READING POE HEADER 1** STOP 995'/ + 3X,'EOF REACHED READING START/STOP TIMES READING = ',I5/) STOP 995 6000 CONTINUE WRITE(IOUT6,6001) ID12,IRAUT 6001 FORMAT(//' **ERROR READING POE HEADER A1-UTC TABLE** STOP 996'/ + 3X,'COULD NOT FIND PROPER SUBSECTION ID "',A,'" READING = ',I5/) STOP 996 6010 CONTINUE WRITE(IOUT6,6011) NUTC 6011 FORMAT(//' **ERROR READING POE HEADER** STOP 997'/ + 3X,'UNEXPECTED NUMBER OF A1-UTC TABLE ENTRIES = ',I5/) STOP 997 CC RETURN 3000 IEOF=1 C WRITE(IOUT6,3001) IRPOEH,ID12 C3001 FORMAT(//' **EOF** READING POE HEADER RECORD # = ',I5, C + 5X,'SEARCHING FOR SECTION ID = ',A12//) RETURN END C C.....READ TOPEX POE DATA RECORDS FOR TOPEX POSITION AND VELOCITY SUBROUTINE RDPOE IMPLICIT REAL*8(A-H,O-Z) COMMON/FILFLG/ IEOF,IRPOE COMMON/POEDAT/ DATE,SEC,GAST,PMX,PMY,DAYS,XYZNRT(6),XYZ(6), + IFLAG(22),IYMD,IHM COMMON/UNITNO/ IOUT6,INHDR,INA1UT,INDAT C...................... C C OBTAIN ORBIT INFO READ(INDAT,12200,END=3000) + DATE,SEC,GAST,PMX,PMY,DAYS,XYZNRT,XYZ,IFLAG 12200 FORMAT(3(6D22.16/),22I1) IRPOE=IRPOE+1 YMDP = DATE/10000.D0 IYMD = DINT(YMDP) HMP = DATE - DFLOAT(IYMD)*10000.D0 IHM = DINT(HMP) CALL RNDSEC(IYMD ,IHM ,SEC ) DATE = DFLOAT(IYMD)*10000.D0 + DFLOAT(IHM) RETURN C C.....SKIP POE DATA RECORD ENTRY SKPPOE READ(INDAT,12000,END=3000) 12000 FORMAT(3(132X/),22X) IRPOE=IRPOE+1 RETURN C C.....EOF CONDITIONS 3000 IEOF=1 RETURN END C C.....END HERMITE INTERPOLATION ROUTINES............................... APPENDIX E EXAMPLE DEC-VAX DCL FOR READING NASA POE FILE The following DEC Control Language segment shows an example of commands needed to mount the tape containing the NASA POE and read its contents into files on the TGS VAX-8100 computer in preparation for executing a program (called SDS READER here) which incorporates the PODS supplied POE interpolation subroutine. The repeat cycle number, ccc, would have to be supplied by the user: $ ALLOCATE MTA0: $ MOUNT/FOREIGN/REWIND MTA0: TAPE $! $! Since we are at beginning of tape, this is the $! $! HEADER SECTION $! copy the header/ file identifier from tape $ COPY TAPE NASAPOEccc.HDR $! $! copy the header/ GEODYN G2S listing from tape $ COPY TAPE NASAPOEccc.G2S $! $! copy the header/ GEODYN G2E terminal listing from tape $! this is where the ATM MODEL UPDATES for NAVS will be obtained $ COPY TAPE NASAPOEccc.G2E $! $! copy the header/ A1-UTC table from tape $ COPY TAPE NASAPOEccc.UTA $! $! copy the header/ TOPEX control information from tape $ COPY TAPE NASAPOEccc.FLG $! $! this is beginning of the $! $! DATA SECTION $! copy the NASA POE ephemeris data from tape $ COPY TAPE NASAPOEccc.DAT $! $! now the final section from tape is the $! $! TRAILER SECTION $! copy the trailer section from tape for error analysis $ COPY TAPE NASAPOEccc.TRL $ DISMOUNT TAPE $ DEALLOCATE MTA0: . . . $ ASSIGN/USER_MODE NASAPOEccc.DAT POEDATA $ ASSIGN/USER_MODE NASAPOEccc.UTA UTA1 $ ASSIGN/USER_MODE NASAPOEccc.HDR HEADER $ RUN READER APPENDIX F POE/Interpolator Coordinate Reference Systems The Hermite interpolator is designed to provide a satellite position in the Conventional Terrestrial Reference System (CTRS). The CTRS, adopted by the T/P SWT, is the geocentric crust-fixed coordinate system oriented to the IERS zero meridian and the CIO (1900-1905 reference mean) pole. The Conventional Celestial Reference System (CCRS) is the quasi-inertial system defined by the mean equator and equinox at 12h January 1, 2000 (J2000). The relation between these two systems shows the roles of the GEODYN Inertial True of Date (ITOD) and GEODYN Earth Centered Fixed (ECF) coordinate reference systems as follows: X_CTRS = R2(-x) R1(-y) R3(GAST) N P X_CCRS ----------------------------------- Inertial True of Date (GEODYN ITOD) --------------------------------------------- Earth Centered Fixed (GEODYN ECF) ------------------------------------------------------------- Conventional Terrestrial Reference System (CTRS) where X_CTRS = Position vector in CTRS system X_CCRS = Position vector in CCRS system P = Precession matrix (J2000 definition) N = Nutation matrix (Wahr series J2000 definition) GAST = Greenwich Apparent Sidereal Time (J2000 definition) x,y = Polar motion x,y angles (IERS definition) R1,R2,R3 = Elemental rotation matrices about each of the x,y,z axes. In the practical realization of the reference systems, the implementation of the CTRS is defined by the SLR station network used for tracking TOPEX/POSEIDON and by the measurements of polar motion and UT1 made by the University of Texas at Austin. The GEODYN ITOD, ECF, and CTRS are right-handed, cartesian, geocentric systems. The GEODYN ITOD reference system origin is at the center of mass of the Earth and its coordinate axes are defined as: XITOD = positive in the direction of the true of date vernal equinox YITOD = completes an orthogonal, right-handed system with XITOD and ZITOD ZITOD = positive in the direction of the true of date (instantaneous) spin axis of the Earth The GEODYN ECF reference system origin is at the center of mass of the Earth and its coordinate axes are defined as: XECF = positive to the intersection of the Greenwich meridian and the instantaneous equatorial plane YECF = completes an orthogonal, right-handed system with XECF and ZECF ZECF = positive in the direction of the true of date (instantaneous) spin axis of the Earth The GEODYN CTRS crust-fixed reference system origin is at the center of mass of the Earth and its coordinate axes are defined as: XCTRS = positive to the intersection of the Greenwich meridian and the reference equatorial plane (defined by IERS) YCTRS = completes an orthogonal, right-handed system with XCTRS and ZCTRS ZCTRS = positive in the direction of the reference mean pole of 1903.0 (the CIO defined by IERS) The NASA_POE provides the TOPEX spacecraft position and velocity in both the GEODYN Inertial True of Date system and the ECF system, and polar motion values for a given UTC time. The Hermite interpolator provided by PODS uses the ECF satellite position and velocity and the polar motion values to first interpolate for the ECF satellite position, and then to rotate the ECF position vector into the CTRS reference system. It also interpolates for the ECF satellite velocity. The velocity is interpolated using a Lagrange polynomial interpolation scheme, and has not been tested for accuracy since there are no requirements for velocity determination. Polar motion x,y angle values are linearly interpolated between the POE supplied values. REMARKS All sections included.