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鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement gooding1990 solver #1

Closed
jorgepiloto opened this issue May 5, 2021 · 1 comment
Closed

Implement gooding1990 solver #1

jorgepiloto opened this issue May 5, 2021 · 1 comment
Assignees
Labels
new solver Request new solver implementation
Milestone

Comments

@jorgepiloto
Copy link
Owner

馃捇 Solver request: gooding1990

This algorithm was originally devised by Gooding in 1990. Many of the work is built on top of Lancaster's one, but an accurate guess is made so fast convergence to the solution is achieved. In addition, the root finder used is Halley's method, so this solver is expected to be a high robust one. Gooding's routine was also extended to the multi-revolution case, so a full algorithm is available.

We should implement this under the name of gooding1990. Because this algorithm is the first of the library, let us create a sub-package called universal in which all the universal-formulae solvers are included in the sense of Python modules.

馃摑 References

The algorithm appeared for the first time in 1988 Gooding's publication, see the BibTeX citation:

@techreport{gooding1988solution,
  title={On the solution of Lambert's orbital boundary-value problem},
  author={Gooding, RH},
  year={1988},
  institution={ROYAL AEROSPACE ESTABLISHMENT FARNBOROUGH (UNITED KINGDOM)}
}

However, the implementation we must follow is the one comming from the revised revision, which was published two years later in 1990:

@article{gooding1990,
  title={A procedure for the solution of Lambert's orbital boundary-value problem},
  author={Gooding, RH},
  journal={Celestial Mechanics and Dynamical Astronomy},
  volume={48},
  number={2},
  pages={145--165},
  year={1990},
  publisher={Springer}
}

Source code under Fortran77 is attached at the end of this article, so we just need to update it to modern Python 馃殌

@jorgepiloto jorgepiloto added the new solver Request new solver implementation label May 5, 2021
@jorgepiloto jorgepiloto added this to the 0.1 milestone May 5, 2021
@jorgepiloto jorgepiloto self-assigned this May 5, 2021
@jorgepiloto
Copy link
Owner Author

This is finally implemented in the package! We now have a collection of tests for a variety of cases, including the multi-revolution scenarios and robust ones. Cool! 馃槑

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