# \[ANN\] SatelliteToolbox.jl v0.7.0 =\> IGRFv13 and RV to TLE conversion

**URL:** <https://discourse.julialang.org/t/ann-satellitetoolbox-jl-v0-7-0-igrfv13-and-rv-to-tle-conversion/35060>\
**Category:** Astro/Space\
**Created:** [February 24, 2020, 1:42am UTC](https://discourse.julialang.org/t/ann-satellitetoolbox-jl-v0-7-0-igrfv13-and-rv-to-tle-conversion/35060 "2020-02-24T01:42:50Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [February 24, 2020, 1:42am UTC](https://discourse.julialang.org/t/ann-satellitetoolbox-jl-v0-7-0-igrfv13-and-rv-to-tle-conversion/35060/1 "2020-02-24T01:42:51Z")

</div>

Hi!

I have just registered a new version of [SatelliteToolbox.jl](https://github.com/JuliaSpace/SatelliteToolbox.jl) (v0.7.0).

It was supposed to be a somewhat small release. However, I decided to make a huge change in some parts because I was using a very old way of programming. Every time we had a function with an option for multiple-dispatch, it was expecting a type like `Val{:symbol}` instead of a value `Val(:symbol)` as in Julia documentation (this old way dates back to Julia v0.5 documentation, I think). All old signatures are supposed to be working, but was marked as deprecated. However, I may have forgotten some declarations, so sorry for any possible breakage 🙂 If you find one, please fill an issue in Github.

Ok, so let’s go to what’s new.

## IGRF v13

The IGRF version was updated to v13. You can compute the geomagnetic field using the functions `igrf` (which is more “Julian”) or the common function `igrf13syn` (which is more “FORTRAN”). Moreover, I added the function `igrfd` so that the latitude and longitude can be passed in degrees:

```julia
julia> igrfd(2026, 6371e3+640e3, 50, 25; show_warns = false)
3-element StaticArrays.SArray{Tuple{3},Float64,1,3} with indices SOneTo(3):
 15118.591511098817
  1588.129544718571
 34668.84185460438

```

## Position and velocity to TLE

I added an algorithm that can convert a set of positions and velocities (osculating elements) to a TLE (mean elements) to be used in SGP4. The function name is `rv_to_tle`. **However, this should be considered alpha. The keplerian elements seems to be working fine, but BSTAR is way too wrong. Any help to fix that will be appreciated!**

## TLE to String

The structure `TLE` can now be converted to `String`, leading to what we know as TLE:

```julia
julia> tle_scd
                             TLE
    ==========================================================
                            Name: SCD 1
                Satellite number: 22490
        International designator: 93009B
                    Epoch (Year): 18
                     Epoch (Day): 359.76217587
              Epoch (Julian Day): 2458478.26218
              Element set number: 999
                    Eccentricity: 0.00432110 deg
                     Inclination: 24.96940000 deg
                            RAAN: 116.17090000 deg
             Argument of perigee: 90.39680000 deg
                    Mean anomaly: 62.00830000 deg
                 Mean motion (n): 14.44539396 revs/day
               Revolution number: 36616

                              B*: 0.000001 1/[er]

                        1 d
                       ---.--- n: 0.000002 rev/day²
                        2 dt

                        1 d²
                       ---.--- n: 0.000000 rev/day³
                        6 dt²
    ==========================================================

julia> print(tle_to_str(tle_scd))
SCD 1
1 22490U 93009B 18359.76217587 .00000186 00000-0 84512-6 0 9998
2 22490 24.9694 116.1709 0043211 90.3968 62.0083 14.44539396366163

```

I think that’s all!
