Tudat / tudat

NOTE: This Tudat version is no longer supported. See https://docs.tudat.space/en/stable/ and https://github.com/tudat-team/tudat-bundle for the new version
BSD 3-Clause "New" or "Revised" License
87 stars 142 forks source link

Taylor Series integration #45

Closed DominicDirkx closed 6 years ago

DominicDirkx commented 8 years ago

As was briefly discussed 03-06-2016, we will investigate whether there is the possibility of providing a generic Taylor series integration algorithm in Tudat. Since Taylor series integration is inherently problem-specific, I think this will be quite challenging. Nevertheless, we should critically evaluate the possibilities to set up at least a basic architecture, and possibly implement some common models.

magnific0 commented 8 years ago

C++ automatic differentiation toolbox: https://github.com/darioizzo/audi

mvandenbroeck commented 7 years ago

For my thesis project I made a Taylor series integrator that uses Unified State Model elements to propagate a spacecraft subject to:

  1. A central gravitational field.
  2. A varying (low) thrust force. The values of three-dimensional thrust force vector in the velocity-based LVLH frame should be specified in a .txt file as discrete values as a function of time. The coefficients of a Lagrange interpolating polynomial (2nd order, three data points*) are used to determine the derivatives of the thrust force. The implementation of the thrust force is implemented in a separate module so that it can be changed or replaced by future users. Besides a thrust force, the implementation also allows other non-conservative forces to be implemented in this way.

*might be changed to third order polynomial using four data points.

Next week I will be validating my TSI with the use of the thrustAccelerationExample. If I don't find the time during my thesis to make a pull request, I will do this after my graduation. In that case, I might also include a version of TSI with Cartesian coordinates.

Cheers,

Michael

DominicDirkx commented 7 years ago

Hi Michael,

This is a great idea, and would be a very valuable addition. To do it in a way that is generally applicable to other problems will be tricky, but it sounds like you have some good ideas on how to approach it. I think having the propagation set up in such a way that different types of elements can be used (of which you then only implement/use the USM, probably) will be important.

I think it's good to discuss the problem with some people (Kevin, Jacco, Erwin, you, me) to get a broader idea of the best way to interface the code you've been writing with Tudat. I'll send out a Doodle today to plan a date.

DominicDirkx commented 7 years ago

Hi Michael,

Do you think that this will still be implemented in Tudat? The way I see it now, it would be a significant piece of work for you to undertake to make everything fully compatible. Perhaps you could put a link to a (private) repository with the code here, and we could consider it for future integration?

Dominic

mvandenbroeck commented 7 years ago

Hi Dominic,

I don't think that it would be that much work to make the code compatible, as it already includes several Tudat modules and uses the Tudat coding style, but I agree that it would be to much work to undertake before my graduation. Of course, I'm more than willing to cooperate to make this integration possible in the future. I think I invited you already a few months ago to my private repository (mvandenbroeck/Thesis). You are still listed in my collaborators page. Do you still have access to the repository?

Cheers,

Michael

DominicDirkx commented 7 years ago

Great to hear! Yes, I still have access to your repository. Let's talk about it in more detail after your graduation.

DominicDirkx commented 7 years ago

@mvandenbroeck It's been a while since we talked, and I was just wondering if you had any plans to pick up this issue in the near future. If not, let us know and we'll close this issue. I still have access to your repository if someone else would like to pick it up in the future.

mvandenbroeck commented 7 years ago

Hi Dominic,

Yeah it would still be great to include it in Tudat, thanks for reminding me. What steps should I go through to make that possible? I could clean up my personal repository (or make a new repository) and collect the pieces of code required for a workable general TSI for the propagation of low-thrust trajectories in a central gravitational field. I will try to look into it next week.

Cheers,

Michael

DominicDirkx commented 6 years ago

Hi Michael,

So sorry, I completely overlooked this issue. If you could provide a link to a github repository with teh working code, and a (brief) description of functionality/architecture, that would be great,

Cheers,

Dominic

mvandenbroeck commented 6 years ago

Hi Dominic,

Sorry for the delay. I started working on it today. I will let you know when it is ready for Tudat. I cannot give you a date, but I'm on it.

Cheers,

Michael

mvandenbroeck commented 6 years ago

Dear Dominic,

I finally created a new public repository called Thesis_tudatversion which contains the working code of the TSI-USM integrator as well as the RK-USM integrator. Explanation of the two main files (mainTSI_tudatversion.cpp and mainRKusm_tudatversion.cpp) is provided in the README.txt. For the interpretation of the output, please see the README file in the Output_tudatversion subfolder.

Please don't hesitate to contact me if you have any questions.

Thank you for your patience.

Cheers,

Michael michaelvdbroeckatgmaildotcom