Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement thorne2004 #32

Open
jorgepiloto opened this issue Aug 11, 2021 · 6 comments
Open

Implement thorne2004 #32

jorgepiloto opened this issue Aug 11, 2021 · 6 comments
Assignees
Labels
new solver Request new solver implementation
Milestone

Comments

@jorgepiloto
Copy link
Owner

jorgepiloto commented Aug 11, 2021

💻 Solver request: thorne2004

The algorithm devised by James D. Thorne uses a series expansion to solve for the Lambert's problem. These approach breaks all the common steps for a Lambert's solver, meaning that it does not require an initial guess nor a numerical root finder. Different series are provided for different orbit types

📝 References

@article{thorne2004lambert,
  title={Lambert’s theorem—a complete series solution},
  author={Thorne, James D},
  journal={The Journal of the Astronautical Sciences},
  volume={52},
  number={4},
  pages={441--454},
  year={2004},
  publisher={Springer}
}

Vallado provides a pseudo-code in his "Fundamentals of Astrodynamics and Applications".

@jorgepiloto jorgepiloto added the new solver Request new solver implementation label Aug 11, 2021
@jorgepiloto jorgepiloto self-assigned this Aug 11, 2021
@jorgepiloto jorgepiloto added this to the 0.2 milestone Aug 11, 2021
@jorgepiloto
Copy link
Owner Author

I did not noticed but having a solver which does not require an iterative process breaks the current set of common arguments used by the different solvers. This is translated into not having as parameters the absolute tolerance atol, relative one rtol or the maximum number of iterations maxiter!

@jorgepiloto
Copy link
Owner Author

In addition, the original routine developed by Thorne was published in "SERIES REVERSION/INVERSION OF
LAMBERT'S TIME FUNCTION" who's DOI is https://doi.org/10.2514/6.1990-2886.

@jorgepiloto
Copy link
Owner Author

This article by Sharaf can be useful for computing the rest of the orbital parameters apart from the semi-major axis. A conversion to RV set will be required.

@jorgepiloto
Copy link
Owner Author

The mathematical symbols (Z)_i are the so-called "Pochhamer symbols". Hopefully, SciPy implements those under the poch function 🎉

@jorgepiloto
Copy link
Owner Author

My local solution properly computes the A_array, Q_matrix upper triangular and B_array. However, the series seems to be strongly dependent on the number of coefficients and even to diverge at some cases. In fact, Thorne published this paper about the series convergence.

@jorgepiloto
Copy link
Owner Author

jorgepiloto commented Sep 6, 2021

I was not able to identify why the current implementation in #33 does not converge. Sadly, this will not be included in 0.2.

@jorgepiloto jorgepiloto modified the milestones: 0.2, 0.3 Sep 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new solver Request new solver implementation
Projects
None yet
Development

No branches or pull requests

1 participant