Changing solar radiation pressure coefficients

I am working on issue 989 to implement facet dependent coefficients in BoxAndSolarArraySpacecraft.
This is needed when accurate modelling of a spacecraft is needed.
The coefficients are currently shared among all facets and can be estimated. Two constants are defined in the RadiationSensitive interface for them: ABSORPTION_COEFFICIENT and REFLECTION_COEFFICIENT. Similarly, the DragSensitive interface defines two constants DRAG_COEFFICIENT and LIFT_RATIO. The same constants are also used from the isotropic (i.e. cannonball without facets) models.

If we add per-facets coefficients, I don’t expect we could estimate the coefficients separately for all facets. In this case, I guess we could just set up a multiplicative coefficient that apply to the facet individual coefficients, or perhaps two multiplicative coefficients, one for absorption and one for specular reflection.

I would like to know if anyone as some ideas about that. Should I use one or two coefficients, should they replace the existing coefficients or just complement them, should they be used for both box and solar array and isotropic models…

My current view would be to allow estimation only of a multiplicative factor, i.e. to let the user first specify Ca and Cs, and then to use k Ca and K Cs for computing acceleration, with k being the only multiplicative coefficient that could be estimated in an orbit determination.

What are your thoughts?

There may be one way to preserve some kind of compatibility, but it seems clumsy to me.
It would be to say that the facets holds individual multiplicative coefficients, and the existing global coefficients would remain. So for a 6 facets cubesat, we would have Ca * k1, Ca * k2… Ca * k6 with a single Ca for absorption coefficient and 6 multiplicative factors.

With this setup the multiplication factors would remain fixed (could not be estimated) and the Ca global factor could be estimated as it is now.

Does this seems better to existing users?

Hi @luc,

I agree.

I would tend to use only one but it sorts of depend on what you want to estimate. If it’s a “global” factor on the SRP force then it could be applied directly at the “sum of the facets’ SRP forces”-level.
If you want to distinguish between the global reflection and global absorption coefficients to precisely characterize your satellite (for aging characterization for example) properties then you could have both and you will have to apply them down to facet-level, I think.

I don’t think we should change the isotropic models. It would be too confusing, would break all the existing OD-apps relying on Orekit, and wouldn’t bring any particular benefit (IMO).


It’s actually not a bad idea and it wouldn’t break existing implementation of the class indeed.
However, as you said, it’s a bit of a weird way to define the facets’ coefficients.
I think I prefer the first option (global scale factors and physically meaningful coefficients for facets), even if it breaks compatibility.