[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orekit Developers] Semi-analytic DSST propagation



Luc,

I have started to consider the dsst-propagation.in file.

I would like to input mean elements (usually Keplerian) and a specification for the DSST short-periodic models to be exercised. The desired outputs would be the request time osculating equinoctial elements, the request time short-periodic Fourier coefficients, and the request time osculating state.
Is there a generalization of the dsst-propagation.in file that supports 
such a functionality?
This expanded functionality would facilitate comparison with the F77 
DSST Standalone and the GTDS DSST.
best regards,

Paul


--
Dr. Paul J. Cefola
Consultant in Aerospace Systems, Spaceflight Mechanics, & Astrodynamics
Adjunct Faculty, Dept. of Mechanical and Aerospace Engineering, University at Buffalo (SUNY)
4 Moonstone Way
Vineyard Haven, MA 02568
USA

508-696-1884 (phone on Martha's Vineyard)
978-201-1393 (cell)

paulcefo@buffalo.edu
paul.cefola@gmail.com

On 10/13/2015 7:54 am, MAISONOBE Luc wrote:
JOUANNIC Brian <brian.jouannic@thalesaleniaspace.com> a écrit :

Hi Luc,

Thank you very much for your clear answer, it seems to be the kind of setup I was looking for. I have got one more question though, do you think a similar approach could be used when the delta v's are not small ?
As the analytical model for maneuvers is based on a simple linearized
equation, accuracy will decrease as maneuver increases. You will have
to check the result with respect to your needs. It will depend on
maneuver type, orbit range, mission needs, ...

best regards,
Luc

Regards,
Brian


-----Original Message-----
From: orekit-developers-request@orekit.org [mailto:orekit-developers-request@orekit.org] On Behalf Of MAISONOBE Luc
Sent: mardi 13 octobre 2015 10:08
To: orekit-developers@orekit.org
Subject: Re: [Orekit Developers] Semi-analytic DSST propagation


JOUANNIC Brian <brian.jouannic@thalesaleniaspace.com> a écrit :

Hi Luc,
Hi Brian,

Thank you for your answer.

The propagation is performed over [tStart + dt, tEnd +dt] for several
values of dt. For each dt, a range of impulsive maneuvers (dv1,
dv2...) occurring in the interval is considered. Thus, for a given dt,
several propagations are done over the same interval, but with a
changing  impulsive shot magnitude/direction.
This looks like a station keeping maneuvers optimization. Can I  
assume the dv are small enough? If so, I would suggest you to do the  
following, which I agree is rather tricky. It is an "expert mode"  use 
of Orekit ...
First, do a reference propagation with DSST and without any  maneuvers 
over a time range covering all your needs (i.e. from  tStart + min(dt) 
to tEnd + max(dt)). This reference propagation  should be performed in 
ephemeris generation mode. At the end of the  propagation, retrieve 
the ephemeris.
Then, you can do a loop with all your attempts, where at each  
iteration of the loop you will select a dt and the associated  
maneuvers to check.
In order to do the propagation with maneuvers, you will use an  
AdapterPropagator instance, built using the reference propagation  
ephemeris you created in the first phase. A new AdapterPropagator  
instance should be used for each iteration. Just after creating the  
AdapterPropagator instance, add to it your maneuvers, using its  
addEffect method. For each maneuver, you want to add first the  direct 
effect of the maneuver itself using class  
SmallManeuverAnalyticalModel, but also the differential effect due  to 
J2/maneuver coupling using class J2DifferentialEffect. So if you  have 
for example 3 maneuvers, you will first create an  AdapterPropagator 
from the DSST based ephemeris and 6 additional  effects (2 for each 
maneuver).
Then you can use this propagator as you want (with step handlers,  
with events detectors, whatever you want).
One you have finished your loop and optimized the maneuvers that  best 
suit your needs, I would suggest to do a final propagation with  DSST 
again, this time using the optimized maneuvers, so your final  
simulation is more accurate.
For your information, this method is used for life-long mission  
analysis on both LEO and GEO missions, using a numerical propagator  
rather than DSST. I don't know if I am allowed to say the name of  the 
operator so I will not say more about it.
They are on this list, so maybe they will officially confirm it  works 
and it is efficient.
Since now we have DSST available, you should however get different  
kinds of results, because with DSST you can already handle mean  
elements apart from short periodic terms, which is great for  
station-keeping. When you use this process with a numerical  
propagator, you have to get rid of the short periodics by some extra  
filtering step (typically using class SecularAndHarmonic).
Also note that currently the only effects that are available are  
small maneuver and J2 differential effect. If you need something  more 
accurate (say additional zonal terms or differential third  body), 
then some dedicated code can be added to handle them. If you  need 
something like that, send me a direct message and we will see  if we 
can develop it for you and include it in the next version.
best regards,
Luc

Hope this helps.

Regards,
Brian

-----Original Message-----
From: orekit-developers-request@orekit.org
[mailto:orekit-developers-request@orekit.org] On Behalf Of Luc
Maisonobe
Sent: lundi 12 octobre 2015 15:33
To: orekit-developers@orekit.org
Subject: Re: [Orekit Developers] Semi-analytic DSST propagation

Le 12/10/2015 16:28, JOUANNIC Brian a écrit :
Hi,
Hi Brian,



I have a question concerning the use of the semi-analytic propagator
implemented in Orekit.



As this kind of propagator is known to reduce the CPU load at an
acceptable precision cost, I wanted to use it in an algorithm
involving a large number of short propagations (typically over a
couples of
orbits) instead of a numerical propagator.



However, it seems that for repeated short term propagations, a
NumericalPropagator performs better (in terms of computation time)
than a DSSTPropagator. From my understanding, it looks like this is
due to the fact the initialize() function of the TesseralContribution
class is called at the beginning of each propagation, causing the
algorithm to spend about 50% of CPU time in this function.



It is possible that I am not using the DSSTPropagator properly and
that is why I am asking you whether you could help me on that matter.
Are all your propagations related to the same orbit or do they
correspond to different initial states?
Are your propagation in sequence (say t0 -> t1, then t1 -> t2, ...) or
do they correspond to different evaluations over the same range?

best regards,
Luc



Regards,

Brian