Skip to content

Latest commit

 

History

History
561 lines (484 loc) · 25.8 KB

CHANGELOG.md

File metadata and controls

561 lines (484 loc) · 25.8 KB

SatelliteToolbox.jl Changelog

Version 1.0.0

  • Info We dropped support for Julia 1.6. This version only supports the current Julia version and v1.10 (LTS).
  • Info This version does not have breaking changes. We bump the version to 1.0.0 because we now consider the API stable.

Version 0.12.3

  • Enhancement Minor source-code updates.
  • Enhancement We updated the documentation.

Version 0.12.2

  • Enhancement We updated the dependency compatibility bounds.

Version 0.12.1

  • Enhancement We updated the dependency compatibility bounds.
  • Enhancement We now reexport SatelliteToolboxLegendre.jl.
  • Enhancement We exported the function equation_of_time.

Version 0.12.0

  • Feature We can now modify the constants in the functions related to the orbits.
  • Enhancement We improved the algorithm to compute the orbital angular velocity and period.
  • Enhancement We improved the algorithm to convert the angular velocity to semi-major axis.
  • Enhancement We improved the algorithm to compute the RAAN time-derivative.
  • Enhancement We update the functions to comply with the new API of the packages.

Version 0.11.1

  • Feature We added the function raan_time_derivative to compute the RAAN time derivative of an orbit.

Version 0.11.0

  • BREAKING This version split the SatelliteToolbox.jl ecosystem into smaller packages. All previous functionalities are available, but we perform drastically modifications in the API, leading to breaking changes. Those modifications were necessary to stabilize the API into a more consistent state.

Version 0.10.0

  • BREAKING The support for Julia 1.0 was dropped.
  • BREAKING The function satellite_position_i was removed.
  • BREAKING All the functions with analysis were removed because they will be implemented in SatelliteAnalysis.jl.
  • Deprecation The keyword argument vJD was renamed to vjd in rv_to_mean_elements_sgp4.
  • Deprecation The keyword argument max_it was renamed to max_iterations in rv_to_mean_elements_sgp4.
  • Deprecation The function compute_RAAN_lt was renamed to ltan_to_raan.
  • Bugfix The epoch was not being correctly obtained by get_epoch in the J2 osculating propagator.
  • Enhancement The maximum degree used when computing the IGRF can now be selected using the keyword argument max_degree.
  • Enhancement Many functions now supports other type of floats, including the orbit propagators.
  • Enhancement The keyword argument print_debug was added to rv_to_mean_elements_sgp4 to print debugging information.
  • Enhancement The function data_to_jd now supports milliseconds. (PR #71)
  • Enhancement The EOP remote files are now updated every week.
  • Enhancement Many performance improvements in the functions.

Version 0.9.4

  • Bugfix The conversion from RV to Keplerian elements had a bug for Equatorial and elliptical orbits. (Issue #72)

Version 0.9.3

  • Enhancement The conversion between ECEF or geocentric variables to geodetic variables can now support different ellipsoids. (PR #61)
  • Bugfix The computation of Legendre associated functions were having accuracy problems for angles very close to 0. This problem caused incorrect geomagnetic field calculations at regions close the geographic poles.

Version 0.9.2

  • Bugfix The TLE file is now closed after parsing in read_tle function, avoiding possible errors when opening many files. (PR #60)

Version 0.9.1

  • Bugfix The interpolation type returned by Interpolations.jl 0.13.3 changed. The code inside SatelliteToolbox.jl was updated to be compatible with the new API. (Issue #58)
  • Info The compat bounds were updated.

Version 0.9.0

  • BREAKING Update the files from which the IERS data is parsed. We now use the CSV. Old code that relies on local copies of IERS data needs to be updated.
  • Deprecation Enhancement A type instability in IERS parsing has been removed. However, this modification required a new function API. The old API is now deprecated.

Version 0.8.1

  • Bugfix Avoid error when receiving duplicated information in fluxtable file. (Issue #53)
  • Info The compat bounds of PrettyTables.jl were updated.

Version 0.8.0

  • BREAKING Enhancement This version contains improvements to the algorithm that converts position and velocity to mean elements using SGP4 algorithm. However, those modifications changed the returned vectors.
  • BREAKING The definition of _space_indices_itp_constants changed due to an update in Interpolation.jl
  • Info The compat bounds were updated.

Version 0.7.3

  • Bugfix The source code was updated to be compatible with PrettyTables.jl v0.10.
  • Enhancement A type-instability related to EOP data was removed, leading to a performance gain.

Version 0.7.2

  • Bugfix The function DatetoJD was failing in 32-bit platforms when calling with a DateTime object. (PR #43)
  • Bugfix Remove a deprecated function in eclipse_time.
  • Enhancement It is now possible to call the IGRF functions igrf and igrfd passing a pre-allocated matrix for the computation of the Legendre associated functions. Hence, in this case, no allocation will be performed, leading to a huge performance gain.
  • Info This version support Julia 1.0 and 1.5. The support for Julia 1.3 has been dropped.

Version 0.7.1

  • Bugfix Some functions related to space indices were deprecated. They were replaced by the correct versions.

Version 0.7.0

  • BREAKING All the deprecated functions in v0.4 and v0.5 were removed.
  • Feature The IGRF can be computed passing the latitude and longitude in degrees by using the function igrfd.
  • Feature IGRF v13 is now available using the functions igrf13syn or igrf. The old v12 is still available for compatibility reasons in the function igrf12syn.
  • Enhancement Following the Julia documentation, all functions that uses Val for multiple-dispatch now needs a value Val(:symbol) instead of a type Val{:symbol}. All the old signatures still work but have been marked as deprecated.
  • Deprecation All functions that uses Val{:symbol} for multiple-dispatch are now marked as deprecated in favor of Val(:symbol).

Version 0.6.5

  • Bugfix The FTP address of WDC files was changed. (Issue #38)
  • Bugfix A test related to an error thrown by the TLE submodule was fixed. (Issue #35)
  • Feature It is now possible to compute the gaps between accesses to the ground stations.
  • Feature Initial version of the algorithm to convert a osculating state vectors (position and velocity) to TLE. This is still in alpha stage and should be used with caution.
  • Feature The function tle_to_str can be used to convert an object of type TLE to a string.
  • Enhancement Improvements in the documentation of functions and macros.
  • Enhancement The minimum required version of OptionalData was updated. (PR #36)

Version 0.6.4

  • Bugfix The download path of the file fluxtable.txt was changed. (Issue #34)
  • Enhancement The submodule SatelliteToolboxSGP4 was created, which contains all the low-level functions related to the SGP4 orbit propagator. (PR #33)
  • Enhancement The submodule SatelliteToolboxTLE was created, which contains all functions related to TLE handling.
  • Enhancement The TLE parsing algorithm was improved. If the epoch year in TLE is higher than 75, then it will be considered in the past.
  • Info This version support Julia 1.0 and 1.3. The support for Julia 1.2 has been dropped.

Version 0.6.3

  • Bugfix A bug in eclipse time computation was fixed.
  • Bugfix The function ground_station_visible now accepts SVector. (Issue #28)
  • Bugfix The eccentricity was not being printed in TLEs.
  • Deprecation The function that checks if a satellite is inside the visibility circle of a ground station has been renamed to ground_station_visible. The old one is now marked as deprecated.
  • Deprecation The function that computes the beta angle has been renamed to beta_angle. The old one is now marked as deprecated.
  • Deprecation The function that computes the eclipse times has been renamed to eclipse_time_summary. The old one is now marked as deprecated.
  • Feature The orbit propagator API now has the function epoch that returns the current epoch of a propagator.
  • Feature The accesses to ground stations can now be computed using the function ground_station_accesses.
  • Feature It is now possible to select what kind of perturbations are desired when computing the beta angle in function beta_angle.
  • Feature Add the simplified dipole model to compute the geomagnetic field.
  • Enhancement The function propagate_to_epoch! can now be used with OrbitPropagatorJ4. (PR #31)
  • Enhancement The function JDtoDate now uses the native function julian2datetime to convert between Date to Julian date represented in DateTime format.
  • Enhancement The eclipse time computation algorithm was drastically improved by adding an edge find mechanism, leading to an algorithm 3x faster.
  • Info This version support Julia 1.0 and 1.2. The support for Julia 1.1 has been dropped.

Version 0.6.2

  • Bugfix Colors in printing functions were not working.
  • Bugfix A bug in the conversion JDtoDate when seconds are 0 was fixed. (Issue #30)

Version 0.6.1

  • Bugfix The EGM-08 coefficients in J2 and J4 orbit propagator algorithm were slightly wrong.
  • Feature It was added an algorithm to compute the Moon position: moon_position_i.
  • Enhancement The performance of Sun position algorithm was increased by 15%.
  • Enhancement The J2 and J4 orbit propagator algorithms now have more built-in coefficients: EGM96, JGM02, and JGM03.
  • Enhancement The Project.toml file was added, the REQUIRE file was removed, and the registration process is now handled by Registrator.jl.

Version 0.6.0

  • BREAKING Enhancement The API initialization functions of all orbit propagators have changed! Please, see the documentation for more details. The analytical propagators Two Body, J2, and J4 are now initialized using the mean orbit elements or TLEs, whereas the analytical orbit propagator SGP4 can now only be initialized with TLEs.
  • BREAKING Enhancement Some API functions of [d]legendre were removed to simplify the code.
  • BREAKING All the orbital elements in the Orbit structure must be of the same type now. This does not affect the initialization function Orbit, which automatically handles the conversion.
  • BREAKING Enhancement The user can now select the maximum order that will be used in gravitational models. However, this is a breaking change because selecting the maximum degree as 0 will make the methods use only the first term, leading to the same result as selecting it as 1. To use all the terms, the maximum degree must be set to -1. Notice that this is still the default behavior if the maximum degree is omitted.
  • Deprecation All deprecations related to the reference frame transformations were removed.
  • Bugfix The Orbit structure created when SPG4 were being initialized was not converting the semi-major axis from km to m. Notice that this was not affecting the propagation.
  • Bugfix When using the API to initialize the J2 orbit propagator, the parameter n_0 is the mean motion, i.e. the mean angular velocity between two consecutive passages to the perigee. The algorithm obtained from Vallado's book, on the other hand, seems to consider that n_0 is the rate of change of the mean anomaly. Hence, we must subtract the time-derivative of the perigee in order to make the algorithms compatible.
  • Bugfix Treat special cases when converting orbital elements to state vector (position and velocity). (Issue #25)
  • Feature The package now supports the entire IAU-2006/2010 theory (CIO approach).
  • Feature It is now possible to compute the satellite ground trace using the function ground_trace.
  • Feature J4 orbit propagator. This new propagator considers the perturbation terms J2, J2², and J4.
  • Feature Many general orbit analysis functions now support perturbation terms up to J4.
  • Feature The function angvel_to_a can be used to convert the orbit mean motion into the semi-major axis.
  • Feature The satellite state vector can now be represented by the structure SatelliteStateVector, which can be initialized by the function satsv.
  • Feature The satellite state vector can be convert between all the supported reference frames using svECItoECI, svECItoECEF, svECEFtoECI, and svECEFtoECEF. Notice that this conversion take into account the Earth rotation rate when applicable.
  • Feature The user can now select the maximum order that will be used when computing the Legendre associated functions or they derivatives.
  • Enhancement The function kepler_to_rv can now receive an instance of Orbit as input.
  • Enhancement All colors are now handled by Crayons.jl.
  • Enhancement Many conversion of reference frames using the API can now be called without the EOP data, leading to the default IAU-76/FK5 theory. (Issue #12)
  • Enhancement Improve printing functions of Orbit and TLE. (Issue #21)

Version 0.5.1

  • Bugfix The gravity model computations were neglecting the input variable n_max and were using always the maximum available degree. (Issue #22)
  • Bugfix dlegendre function was accessing unallocated data if the maximum degree is 1.
  • Feature New function in the orbit propagators API: propagate_to_epoch!. (Issue #20)

Version 0.5.0

  • BREAKING Enhancement The NRLMSISE-00 configuration is not handle by a Dict anymore. The configuration is now based on a new structure called NRLMSISE00_Flags. This reduced the execution time of the algorithm by 50%.
  • BREAKING Enhancement The macro @check_orbit that verifies whether an orbit is valid now returns a boolean instead of throwing an exception. This provided a huge performance gain in the functions that use it.
  • BREAKING Enhancement The function GeodetictoECEF now returns an SVector. This yielded a performance gain of 27%.
  • BREAKING The igrf12 function now always returns an SVector.
  • BREAKING All the functions related to the Sun (sun_position_i and sun_velocity_i) now returns an SVector.
  • BREAKING All deprecated functions that were defined prior to this version were removed.
  • Deprecation Enhancement The frame transformations API were simplified by removing the variable that specified the model. The IAU2000A theory will be initially implemented using the CIO approach. Hence, the model that must be used can be inferred only by looking the selected frames and the EOP data. The old style functions are now deprecated. (Issue #18)
  • Deprecation The function satellite_orbit_compute_f is now deprecated in favor of M_to_f. (Issue #16)
  • Bugfix The Orbit structure returned by propagate! function was not being copied before the assignment. Hence, if an array of instants was passed, then all the returned values would have the same Orbit structure.
  • Bugfix The low level functions related to the J2 orbit propagator were not being exported.
  • Bugfix The conversion from ECEF to Geodetic had an bug due to the singularity in the poles.
  • Bugfix The conversion from Julian Day to DateTime by the function JDtoDate was fixed.
  • Bugfix The function JDtoDate was not allowing the month to be 12. Hence, when the month was December, then it was returning 0. (Issue #19).
  • Bugfix The IAU2000A EOP data was not being parsed correctly.
  • Bugfix The Sun position algorithm was computing a slightly wrong value.
  • Feature The initial version of the package documentation is now available.
  • Feature The EOP data is now downloaded by the package RemoteFiles.jl. This modification was required because the HTTP.jl package was failing to download EOP data for some reason, since the request was returning the 403 error code. This is a temporary workaround until the issue #2 is fixed.
  • Feature A new generic parser to ICGEM files was added. Hence, the user can now load any ICGEM file to compute the gravitational force. (Issue #17)
  • Feature It was added an algorithm to compute the Sun velocity vector.
  • Feature The exponential atmospheric model was added.
  • Feature The Jacchia-Roberts 1971 atmospheric model was added.
  • Feature The Jacchia-Bowman 2008 atmospheric model was added.
  • Feature It was added the support to automatically fetch the necessary files to compute many space indices, like F10.7, Kp, Ap, etc.
  • Enhancement The macro @evalpoly is now used every time a polynomial must be evaluated, which provides a small performance gain and also uses a more stable algorithm.
  • Enhancement Huge performance increase. In the following, it is presented the reduction of the computational time in some functions:
    • legendre (conv): 40.6% faster.
    • dlegendre (conv): 42.6% faster.
    • rECEFtoECI (ITRF -> GCRF): 99.5% faster.
    • rECItoECEF (GCRF -> ITRF): 99.5% faster.
    • rECEFtoECEF (ITRF -> PEF): 99.8% faster.
    • rECItoECI (MOD -> GCRF): 99.8% faster.
    • GeodetictoECEF: 71.6% faster.
    • Two body orbit propagator: 99.8% faster.
    • J2 orbit propagator: 99.8% faster.
    • SGP4 orbit propagator: 8.2% faster.
    • compute_g (full EGM96): 18.3% faster.
    • nrlmsise00: 76.3% faster.
    • igrf12 (geocentric): 11.2% faster.
    • igrf12 (geodetic): 98.6% faster.
    • sun_position_i: 20.2% faster.
    • angvel: 59.3% faster.
    • compute_ss_orbit_by_ang_vel: 90.8% faster.
    • list_ss_orbits_by_rep_period: 79.4% faster.
  • Enhancement The space indices required by the atmospheric models can now be automatically fetched.
  • Enhancement Improvements in the function documentation.

Version 0.4.0

  • Fix warnings due to new syntax of the package Interpolations.jl.
  • Fix remaining compatibilities issues with Julia v1.0.
  • Changes in orbit propagators:
    • propagate! can now receive one single epoch.
    • All functions related to the orbit propagators uses SVector. This led to a huge performance gain in API function propagate!. However, this can break existing code, because the array returned by propagate! is now an array of SVector{3,T} instead of an array of Vector{T}.

Version 0.3.2

  • Fix compatibility issues with Parameters.jl v0.10.
  • Improve performance of propagate! functions by fixing type-stability issues.
  • ECEFtoGeodetic now accepts AbstractVector as input.

Version 0.3.1

  • Fix bug when using the function igrf12 for dates after 2020.
  • Add option shown_warns to suppress warning in IGRF.

Version 0.3.0

  • Full support for Julia 0.7 and Julia 1.0.
    • The support for Julia <= 0.6 is dropped in this version. Hence, SatelliteToolbox.jl will not work with those versions anymore. If it is necessary to use Julia <= 0.6, then you must stick with SatelliteToolbox.jl <= 0.2.0.

Version 0.2.0

  • New model:

    • NRLMSISE-00 Atmosphere Model.
  • Earth gravity model:

    • New algorithm to compute the gravity model.
    • Add EGM96, JGM2, and JGM3 to the package.
    • Remove the partial EGM2008 from the package.
    • Increase the performance of the function compute_U.
    • Increase the performance of the function compute_g.
    • Add tests.
  • Reference frame transformations:

    • Improvements in IAU76/FK5 conversion.
    • Add support for TEME reference frame.
    • Add more tests to increase the code coverage.
    • Add the function rECItoECI.
    • Add the function rECEFtoECEF.
  • Orbit functions:

    • Add more tests to increase the code coverage.
    • Add function change_oe_frame.
    • Add function to read TLE from strings.
    • Add macros @tle_str and @tlenc_str to parse a TLE from a string.
  • Orbit propagators:

    • General performance improvements in SGP4.
    • The epoch of all propagators are now assumed to be the Julian Day.
    • Add Deep Space computations to the SGP4.
    • Add the tests available in the literature that cover all SGP4/SDP4.

Version 0.1.1

  • Fix some deprecations warnings in julia v0.7.

  • Bug fixes:

    • Fix IGRF function igrf12 when date is between 1995 and 2000.
  • Tests:

    • Add tests related to IGRF functions.
    • Fix minor problem in IAU-76/FK5 tests.
    • Fix tests in julia v0.7.

Version 0.1.0

  • Initial version.
    • This version was based on the old package SatToolbox.jl v0.3.7 that was renamed to SatelliteToolbox to be submitted to julia METADATA repo.