V7.Beta6 Release Notes

Total Page:16

File Type:pdf, Size:1020Kb

V7.Beta6 Release Notes

V7.beta6 Release Notes

New Compilers:

. On Windows platform: V7.beta6 uses Intel FORTRAN Composer XE 14.0 whereas V7.beta4 used Intel FORTRAN Compiler 11.1. Therefore, the old V7.beta4 Dynamic Link Library (DLL) and the new V7.beta6 DLL should not be mixed. Also, the two versions have their own dependent Intel Fortran DLLs so the users should be aware of the difference and use the correct ones

. On Linux platform: A similar change also took place on Linux. V7.beta6 uses Intel Fortran Compiler XE 14.0, an upgrade from 11.0

DLL/Shared Objects (SO)

. All software in V7.beta6 suite is able to support 9-digit satellite numbers

. Non-export controlled Astrodynamic Standards DLLs/SOs (AS Utilities) are now available in all software release packages (e.g. Windows and LINUX)

. V7.beta6 Astrodynamic Standards Suite currently has 18 DLLs and 387 Application Program Interfaces (API)

. Four new DLLs/SOs were added to V7.beta6 suite: Observations (OBS) (Non-export controlled) which is included in the AS Utilities and the following Export Controlled DLLs: Initial Orbit Determination (IOMOD), Report/Observation Association (ROTAS), and Batch Differential Correction (BatchDC).

. The DLL function names on the LINUX platform were changed from all lowercase to Pascal notation to match what is currently being used on the Windows platform (e.g. dllmaininit is now changed to DllMainInit). For certain programming languages, this allows the users to easily port their code across platforms.

Driver example code:

. C-driver on Linux platform: Because of the change in DLL function names on LINUX as stated above, the C-driver source code has been modified. The old C executable from V7.beta4 SOs will no longer work with the new V7.beta6 SOs. Users need to either use the accompanied C executables in V7.beta6 or MODIFY their current code in the “DllUtils.c” as shown below and recompile it. #ifdef _WIN32

fnctPtr = GetProcAddress(hLib, fName);

#else

//fnctPtr = dlsym(hLib, ToStrLower(fName)); // DHN – remove this old statement

fnctPtr = dlsym(hLib, fName); // DHN - insert this new statement

#endif

. The C-driver has new option to turn on/off the logging option (writing logging data to a log file). By default, the logging option is turned off to improve performance.

. Added python sample driver code to Windows platform.

. All wrappers are now including inline documentation (docstrings) which will provide quick help/reference to developers without going to the word documents.

. All wrappers are now generated automatically. This will help eliminate typos and provide users with up-to-date and accurate declaration of all DLL/SO interfaces.

. C wrappers:

o Separated the auto generated wrapper code from the service/utility code. For example, the old AstroFuncDll.h/AstroFunc.c contained both the wrapper and the service/utility code in them. However, the new AstroFuncDll.h/AstroFunc.c contain only the wrapper code and the newly added AstroFuncDll_Service.h/AstroFuncDll_Service.c contain only service/utility code. This separation allows the user to create service/utility code independent of the wrapper.

o Specify the actual array size for the array typed parameters. For example:

 Old: typedef void (STDCALL *fnPtrAstroFuncGetInfo)(char* infoStr);

 New: typedef void (STDCALL *fnPtrAstroFuncGetInfo)(char infoStr[128]);

. Java wrappers:

o Added code into the “static” blocks of the JNA wrapper classes to enable automatic loading of dependent libraries. The users no longer need to figure out the dependency rules. o Divided the JNA classes into two separate classes: JNA wrappers and service classes. For examples, JnaLamod is now divided into JnaLamod and SrvLamod. The JNA classes now contain the auto generated code only. The service classes provide the additional services/utilities to the users.

o All Astrodynamic Standards wrappers no longer used the default package. Previously, some users had problems/issues with using default package and therefore all Astrodynamic Standards wrappers are now named packages.

o Renamed all JNA classes from lowercase to uppercase to comply with Java common practices.

o Important note for Java developers on Unix-family platforms: You will need to RENAME the provided Astrodynamic Standard SOs from "*.dll" to "lib*.so". For example, the “AstroFunc.dll” needs to be renamed to “libAstroFunc.so” for the Java programs to work.

Bug Fixes and Enhancements:

AS Utilities

. DllMain:

o Added GetLastInfoStr()

. EnvConst:

o No change

. TimeFunc:

o Added UTCToET()

o Trimmed the un-used portion of the array that stores timing constants.

. AstroFunc:

o Added functions: RADecToLAD(), AzElToLAD(), ECIToTopoComps(), RaDecToAzEl(), RAEToECI(), GetInitialDrag(), CovMtxPTWToUVW(), CovMtxUVWToPTW(), EarthObstructionAngles()

o Corrected the internal function that computes precession.

. Two Line Element (TLE):

o Fixed AddSatFrFieldSP(): bTerm value wasn’t read. o Fixed TleGPFieldsToLines(), TleSPFieldsToLines(): input characters weren’t read correctly.

o When adding/updating a TLE, if the input data is invalid or out of range, the record won’t be added to memory. The old version reset any invalid values to valid ones before adding/updating that TLE.

o Added code to count how many good, bad, and duplicated records are loaded whenever the users load TLEs from a file. The users can get this information by calling the DllMain\GetLastInfoStr() after they finish loading the input file.

o Added the ORDER_QUICK option to TleGetLoaded()

. SPVEC:

o Fixed SpVecAddSatFrLines() and SpVecAddSatFrFields(): Will return BADSATKEY when trying to process a bad line1.

o When adding/updating an SPVEC, if the input data is invalid or out of range, the record won’t be added to memory. The old version reset any invalid values to valid ones before adding/updating that SPVEC.

o Added code to count how many good, bad, and duplicated records whenever the user loads SP vectors from a file. The users can get this information by calling the DllMain\GetLastInfoStr() after they finish loading the input file.

o Added the ORDER_QUICK option to SpVecGetLoaded()

. VCM:

o Added VcmAddSatFrFields(),VcmUpdateSatFrFields(), Vcm1LineToMultiLine()

o In VcmGet/SetField(): Added two more fields: BDOT, and EDR

o Added code to count how many good, bad, and duplicated records whenever the user loads VCMs from a file. The users can get this information by calling the DllMain\GetLastInfoStr() after they finish loading the input file.

o Added the ORDER_QUICK option to VcmGetLoaded()

o Fixed code that read VCM 1-line format (incorrectly read values of BTERM, EDR, and covariance matrix) . ExtEphem:

o Added ExtEphAddSatEphemExt(), ExtEphXten()

o Allowed the user to change coordinate system of the external ephemeris file after its initial loading.

o Fixed ExtEphGetCovMtx(): Return correct value for ds50UTC

o Added the ORDER_QUICK option to ExtEphGetLoaded()

o Added ability to read several new external ephemeris file formats: STK’s dot e files V6 and V8, DCE binary file

o Changed the method for identifying ITC file

o First ephemeris point is now treated as the satellite’s epoch time for simulated observations (simObs) and vector ephemeris files.

o Allowed a special case when an ephemeris file has less than 4 ephemeris data points.

. Sensor:

o Added SensorGetOrbSatKey(), SensorSetOrbSatKey()

. Obs:

o Added to address the difficulty that users have in working with observations. DLL provides the user with many useful APIs that can add/update/delete/parse/construct different observation types. The observation data can be loaded either from an observation file (Transmission or B3) or directly from a B3 ob string or an ob’s data fields using a different set of APIs.

o There is no limit on how many observations the users can load and work with in this release.

o Eliminated duplicate observation problem that the users had with V5.4.2.

o Observation data can be shared among the DLLs that have access to the Obs DLL such as Look Angle Module (LAMOD), ROTAS, IOMOD, and BatchDC.

. SatState:

o Added SatStateRemoveSatAll(), SatStateGenEphFile()

o Code was modified to use full term (n=106) when converting external ephemeris from J2K to Date. Export Controlled DLLs

. Simplified General Perturbations #4 (SGP4): Added Sgp4ReepochTLE()

. Special Perturbations (SP):

o Added SpGetStateDs50UTC(), SpSetStateDs50UTC(), SpSetAndProp(), SpSet4PCard(), SpGet4PCard()

o Added a new free-format option “PROP_COVMTX” which is the same as SAVE_PARTIALS. This new name is more meaningful than the other name. When the users set PROP_COVMTX =0 (same as savePartials = 0), the covariance matrixes in VCMs won’t be stored and therefore they won’t be used at all in the SP propagator. This will help reduce the SP run time when propagated covariance matrixes are not needed.

o Fix SP driver code that compute LLH.

. LookLamod:

o LAMOD DLL now depends on Obs DLL to generate different observation types. Users will have to modify their old code to account for this new change of dependency if they chose to generate observations from look angles. This new change fixes issues with generating obtype 4 and 9.

o Added LamodLoadCard()

o Added a another option for punchObs. punchObs = 3 is for SP Tasker V obs.

o Deallocated rise/set/culmination array properly.

o Computed additional az/el rates for obtype 4.

o Allowed the user to specify the satKey of the orbiting satellite instead of just use the satellite number.

o Added code to return the view angle data regardless of ob types.

o Checked az/el limits for all sensor types (ground and space-based sensors).

o Corrected the routine to compute earth obstruction angles.

o Extended the search for horizon breaks a whole revolution before and after the culmination times. V7.beta4 only searched for half a revolution.

o Removed the code that checks to see if the satellite would be visible if it is at apogee. This code might have caused LAMOD to miss some looks.

. Computation of Miss Between Orbits (COMBO) : o Added code to check for secondary satellite’s decay condition.

o Fixed bug that may have caused COMBO to miss the closest approach at the end of the requested time span.

o Fixed bug that may have caused COMBO to miss the entry/exit times of the last close approach.

o Fixed bug that may have caused COMBO to fall into an indefinite loop when two satellites are in sustained relative geometry.

o Modified COMBO C-driver to print the same entry/exit times for all relative minima found within that same entry/exit times. This could happen when the secondary satellite is in sustained relative geometry. The old C code only printed that entry/exit times for the first relative minimum.

. Report/Observation Association (ROTAS):

o ROTAS now returns all observation residuals and ASTAT values via direct DLL function API calls. Consequently, the users now have access to the full precision of the data returned from the APIs. In V5.4.2, the users have to parse the data from the ROTAS output file and the precision of the data was limited to the output format (number of decimal digits).

o Revived ROTAS’s Track Processing Mode capability.

o Fixed problem with duplicated observations in ALLEL mode in which V5.4.2 crashed.

o Fixed problem with max association per observation.

o Added debias observation flag.

o Removed DELTA/427M residual computation method. V7 always uses the SPADOC 4C method.

. Initial Orbit Generation (IOMOD/OBSOPS):

o IOMOD capabilities are now provided in the OBSOPS dll. OBSOPS dll provides the Two- Obs, Three-Obs, and Auto-Select obs methods as APIs to the end users.

o The OBSOBS DLL is independent of ROTAS and BatchDC.

o Correctly convert the returned osculating vectors to SGP4 mean Keplerian elements when producing TLEs. V5.4.2 treats the returned osculating vectors as mean vectors and does a straight conversion to Keplerian elements. Therefore if the user runs ROTAS right after IOMOD, using the resulting TLEs, the returning ASTAT values will not be that accurate.

. Batch Differential Correction (BatchDC): o This is the first time that BatchDC has been converted to a DLL/SO format.

o BatchDC is still in ALPHA phase so please contact AFSPC A2/A3/A6 A3Z if you have issues comments, or any suggestions to make it better.

o Current version only returns the Differential Correction’s final Elset and related data but doesn’t return any intermediate data during its iterations.

 Known issues:

. Word documents have NOT been updated with the latest changes of the Astrodynamic Standards library since October 2012.

. IOMOD by design is independent of ROTAS and BATCHDC. Running post-IOMOD DC or post- IOMOD ROTAS is not available in the current IOMOD driver code. However, the users can easily implement this themselves.

. BatchDC currently doesn’t return DC data for each iteration like V5.4.1 does. It only returns the final Elset if the DC is successful. Returning DC data for each iteration will be added in the next release version of BatchDC.

 Past Releases:

. V7.beta - SGP4, SP on Windows: 08 December 2008

. V7.beta1 - SGP4, SP on Windows: 27 July 2010

. V7.beta2 - SGP4, SP on LINUX: 06 October 2010

. V7.beta3 - SGP4, SP on Windows: 21 March 2011

. V7.beta - LAMOD on Windows: 02 Jun 2011

. V7.beta1 - LAMOD on Windows: 28 Jun 2011

. V7.beta - COMBO on Windows: 28 October 2011

. V7.beta4 - SGP4, SP, LAMOD, COMBO on Windows (32/64): 17 September 2012

. V7.beta4 - SGP4, SP, LAMOD, COMBO on LINUX (32/64): 25 September 2012

. V7.beta5 - SGP4, SP, LAMOD, COMBO on Windows (32/64): 25 August 2014 . V7.beta6 - SGP4, SP, LAMOD, COMBO, ROTAS, IOMOD, BatchDC on Windows(32/64): 27 October 2014

. V7.beta6 - SGP4, SP, LAMOD, COMBO, ROTAS, IOMOD on Linux (32/64): 28 October 2014

. V7.alpha6 – BatchDC on Windows (32/64) and LINUX (32/64) 28 October 2014

Recommended publications