Skip to content

About

VSOP2013 Library For .NET. (NuGet, DLL) Highly Optimized and OOP

Topics

Resources

Stars

7 stars

Watchers

1 watching

Forks

Repository files navigation

VSOP2013 .NET

NuGet package NuGet package

What's this?

VSOP was developed and is maintained (updated with the latest data) by the scientists at the Bureau des Longitudes in Paris.

VSOP2013,another version of VSOP, computed the positions of the planets directly at any moment, as well as their orbital elements with improved accuracy.

Original VSOP2013 Solution was write by FORTRAN 77 . It's too old to use.

This repo is not just programming language translation, it's refactoring of VSOP2013.

This thing is totally useless for myself. But I think someone might need this algorithm in the future.

VSOP2013 is much much slower than VSOP87. Maybe more accurate than 87?

Using multi-thread and precalculation technique to accelerate iteration speed.

It is much faster than origin algorithm.

Demo

Performance

GetPlanetPosition(EMB) on i9-12950HX, .NET 10:

Calculator Scalar Vector256
Calculator (double, full series) 1,241 μs 243 μs
CalculatorF (float, truncated) 12.6 μs 2.4 μs

CalculatorF is for visualization and animation only; it trades accuracy for speed. See the Gitbook for details.

Features

  1. Use VSOPResult class to manage calculate results.
  2. Use VSOPTime class to manage time.
    Easy to convert time by calling VSOPTime.UTC, VSOPTime.TAI, VSOPTime.TDB
  3. Very high performance per solution using SIMD (Vector128/256/512, auto detected) and multithread.
  4. Useful Utility class. Convert Elliptic coordinates to cartesian and spherical
  5. Async Api included.
  6. precalculation on φ in terms, which gives 20%+ speed up.
  7. Optional term truncation: new Calculator(SimdMode.Auto, truncation).
  8. CalculatorF: single precision calculator for visualization and animation, 100 to 500 times faster (low precision).
  9. Validated against the official VSOP2013.ctl reference values (max error 1e-10).
  10. Use MemoryPack for binary serialize.
    Initialization time becomes less than 10% of previous version.
  11. Brotli compression on source data. ~300Mb -> ~43MB.

Documentation

Gitbook

Enviroment Require

.NET 10 Runtime

Dependency

MemoryPack

About

VSOP2013 Library For .NET. (NuGet, DLL) Highly Optimized and OOP

Topics

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages