[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Orekit Users] Taylor algebra and force model parameters
- To: orekit-users@orekit.org
- Subject: Re: [Orekit Users] Taylor algebra and force model parameters
- From: Christophe Le Bris <chris.lebris@gmail.com>
- Date: Wed, 4 Apr 2018 13:14:48 +0200
- Authentication-results: kepler.orekit.org; dkim=pass reason="2048-bit key; insecure key" header.d=gmail.com header.i=@gmail.com header.b=q62vfy6H; dkim-adsp=pass; dkim-atps=neutral
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-transfer-encoding; bh=7OsWfPQRVKkvCFcZnPlNZflnFRyqeGo8fgnHzNjJJ1U=; b=q62vfy6HA5i6zBG+72Ci8JV3lrb8/M06/XBXxC5svIkY5UtY6S96mZfodo4VYLcV7q i4eML9SkZvEBH5CHVJMJd84PtPFC61v2j4/aI8b/tNXjt4kVq7Fuswr4hDPq2qWVQg5E YCz4GMTiDFnFbQDvPTygBUeVxs2yjHgl4Vnk4s7G/B3nPY3eAUoNLlXteJOrkvAbBUq6 LRt/RuX/phoLLwGzSnuWir/6GkItFdHPRh9PahjAWJd4m4Idx3h3fb/ZmOvsv3Ti/VXk MUPTrlGDhJivV88Aa5+36HzOCRJZuxVYJCbnpv4McLiubOqCMANa9y47hlx5qX3ArJU6 WRYA==
- In-reply-to: <42a5d0d3-0b48-7412-da2a-495ca12ec645@c-s.fr>
- References: <CAAv=LsMnX8DaLPnG+qvyTi-00sq-y=21wQz_NadjLvwFKwBdLA@mail.gmail.com> <42a5d0d3-0b48-7412-da2a-495ca12ec645@c-s.fr>
I missed the default implementation of GetParameters in the ForceModel
interface. With your advice, I managed to do what I wanted.
Thank you Luc for the clear and precise explanations.
Best regards
Christophe
2018-04-03 15:30 GMT+02:00 Luc Maisonobe <Luc.Maisonobe@c-s.fr>:
> Le 03/04/2018 à 14:12, Christophe Le Bris a écrit :
>> Hello,
>>
>> I'd like to analyze the effects on the orbit of the dispersion of
>> force model parameters.
>> Propagating uncertainties on the orbit knowledge from OD uncertainties
>> is quite straightforward with "FieldPropagation" but I don't see the
>> way to analyze the effect of the uncertainty of a force model
>> parameter with taylor algebra in Orekit.
>>
>> The only way that I saw to do it (without using classical Monte-Carlo
>> simulations) is to implement the effects of the force model by using
>> "additionalEquations" instead of "ForceModel".
>>
>> But, is there a simple way to use taylor algebra to compute the
>> effects of the uncertainties of a force model parameter?
>
>
> In order to do this, you have to implement the force model by
> yourself. In your implementation, there will be an "acceleration"
> method that takes a FieldSpacecraftState and an array of Field
> elements that correspond to the current value of the force model
> parameters.
>
> By default, this array of parameters is created by getting the
> double values from the force model parameters drivers, and
> converting them directly to Field. This is implemented by the
> method getParameters in the ForceModel interface, which has
> a default implementation. You can override this default
> implementation to return Field versions of the parameters
> that you will build beforehand by yourself if you want.
>
> Once this is done, before propagation start you will have
> to set up the parameters for the force model. If for example
> you are interested only in the uncertainties with respect to
> a few force model parameters and not in uncertainties with respect
> to the initial orbit, you will create a dactory for the Derivative
> structures as:
>
> DSFactory factory = new DSFactory(nbForceParams, order);
>
> then you will create the initial orbit using calls to factory.constant()
>
> FieldOrbit<DerivativeStructure> initialOrbit =
> new FieldKeplerianOrbit<>(factory.constant(a),
> factory.constant(e),
> ...);
>
> because the initial orbit does not depend on the force parameters
> (the final orbit will depend on them, but not the initial orbit).
>
> then you will create the force model parameters using factory.variable
> has these parameters are the canonical variables of your model:
>
> ForceModel fm = new MyForceModel(factory.variable(0, p0),
> factory.variable(1, p1),
> ...);
>
> At propagation end, when you retrieve the final state, you
> extract its partial derivatives to any order up to the maximum
> specified earlier using:
>
> // here I assume nbForceParams is 2, but you can have more
> double daOverdP0 = orbit.getA().getPartialDerivatives(1, 0);
> double daOverdP1 = orbit.getA().getPartialDerivatives(0, 1);
> double d2aOverdP02 = orbit.getA().getPartialDerivatives(2, 0);
> double d2aOverdP12 = orbit.getA().getPartialDerivatives(0, 2);
> double d2aOverdP0P1 = orbit.getA().getPartialDerivatives(1, 1);
> ... and so on for higher orders ...
>
>
> So as a summary, the trick is to override the getParameters method
> in your force model, and to build the initial state and force model
> correctly.
>
> best regards,
> Luc
>
>>
>> Christophe
>>
>