diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 381c47c7ecffc8f77cb5b8df3918b6bc1b54d2e6..1cedfe1a28156002a80b80fc6b3f1f76228702e6 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -21,6 +21,10 @@ </properties> <body> <release version="10.0" date="TBD" description="TBD"> + <action dev="maxime" type="fix" issue="514"> + Deprecated unused DerivativeStructure acceleration computation methods. + In interfaces radiationPressureAcceleration and dragAcceleration, and all their implementations and their tests. + </action> <action dev="luc" type="add" issue="536"> Take target radius into account in CircularFieldOfViewDetector and FieldOfViewDetector. </action> diff --git a/src/main/java/org/orekit/forces/BoxAndSolarArraySpacecraft.java b/src/main/java/org/orekit/forces/BoxAndSolarArraySpacecraft.java index 1f43683aef73283acd60c69a0807c8b414ae49a4..761faa335a7f8d1b2d9f74ffb64128674dad4bb2 100644 --- a/src/main/java/org/orekit/forces/BoxAndSolarArraySpacecraft.java +++ b/src/main/java/org/orekit/forces/BoxAndSolarArraySpacecraft.java @@ -123,7 +123,10 @@ public class BoxAndSolarArraySpacecraft implements RadiationSensitive, DragSensi /** Sun model. */ private final PVCoordinatesProvider sun; - /** Factory for the DerivativeStructure instances. */ + /** Factory for the DerivativeStructure instances. + * @deprecated Attribute not used anymore, should have been deleted in 9.0 but was left over. To be deleted in the next major version. + */ + @Deprecated private final DSFactory factory; /** Build a spacecraft model with best lighting of solar array. @@ -697,7 +700,9 @@ public class BoxAndSolarArraySpacecraft implements RadiationSensitive, DragSensi * @param position position of spacecraft in reference frame * @param rotation orientation (attitude) of the spacecraft with respect to reference frame * @return solar array normal in spacecraft frame + * @deprecated Method not used anymore, should have been deleted in 9.0 but was left over. To be deleted in the next major version. */ + @Deprecated public synchronized FieldVector3D<DerivativeStructure> getNormal(final AbsoluteDate date, final Frame frame, final FieldVector3D<DerivativeStructure> position, final FieldRotation<DerivativeStructure> rotation) { @@ -772,6 +777,7 @@ public class BoxAndSolarArraySpacecraft implements RadiationSensitive, DragSensi /** {@inheritDoc} */ @Override + @Deprecated public FieldVector3D<DerivativeStructure> dragAcceleration(final AbsoluteDate date, final Frame frame, final Vector3D position, final Rotation rotation, final double mass, final double density, @@ -877,6 +883,7 @@ public class BoxAndSolarArraySpacecraft implements RadiationSensitive, DragSensi /** {@inheritDoc} */ @Override + @Deprecated public FieldVector3D<DerivativeStructure> radiationPressureAcceleration(final AbsoluteDate date, final Frame frame, final Vector3D position, final Rotation rotation, final double mass, final Vector3D flux, @@ -1095,7 +1102,9 @@ public class BoxAndSolarArraySpacecraft implements RadiationSensitive, DragSensi * @param specularReflectionCoeffDS specular reflection coefficient * @param diffuseReflectionCoeffDS diffuse reflection coefficient * @return contribution of the facet to force in spacecraft frame + * @deprecated Method not used anymore, should have been deleted in 9.0 but was left over. To be deleted in the next major version. */ + @Deprecated private FieldVector3D<DerivativeStructure> facetRadiationAcceleration(final Vector3D normal, final double area, final Vector3D fluxSat, final double dot, final DerivativeStructure specularReflectionCoeffDS, diff --git a/src/main/java/org/orekit/forces/drag/DragSensitive.java b/src/main/java/org/orekit/forces/drag/DragSensitive.java index ed3c3d0ac821267cd6686d445c05de139630e880..4a030a39b49d7d48f9aff21ccd0b84555fb16215 100644 --- a/src/main/java/org/orekit/forces/drag/DragSensitive.java +++ b/src/main/java/org/orekit/forces/drag/DragSensitive.java @@ -113,7 +113,9 @@ public interface DragSensitive { * @param parameters values of the force model parameters * @param paramName name of the parameter with respect to which derivatives are required * @return spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²) + * @deprecated Method not used anymore, should have been deleted in 9.0 but was left over. To be deleted in the next major version. */ + @Deprecated FieldVector3D<DerivativeStructure> dragAcceleration(AbsoluteDate date, Frame frame, Vector3D position, Rotation rotation, double mass, double density, Vector3D relativeVelocity, diff --git a/src/main/java/org/orekit/forces/drag/IsotropicDrag.java b/src/main/java/org/orekit/forces/drag/IsotropicDrag.java index 2fd87a90deb03ce9ac870426381fa9b90103aa51..4c08abb9510672fa09c5015c4f7f2b200707bb2e 100644 --- a/src/main/java/org/orekit/forces/drag/IsotropicDrag.java +++ b/src/main/java/org/orekit/forces/drag/IsotropicDrag.java @@ -124,6 +124,7 @@ public class IsotropicDrag implements DragSensitive { /** {@inheritDoc} */ @Override + @Deprecated public FieldVector3D<DerivativeStructure> dragAcceleration(final AbsoluteDate date, final Frame frame, final Vector3D position, final Rotation rotation, final double mass, final double density, final Vector3D relativeVelocity, diff --git a/src/main/java/org/orekit/forces/radiation/IsotropicRadiationCNES95Convention.java b/src/main/java/org/orekit/forces/radiation/IsotropicRadiationCNES95Convention.java index 6dca8b7a9caffbe3c9736536d68ebb38d6825993..4212b931a7c47d8e8f5dd1311058f0904f896b65 100644 --- a/src/main/java/org/orekit/forces/radiation/IsotropicRadiationCNES95Convention.java +++ b/src/main/java/org/orekit/forces/radiation/IsotropicRadiationCNES95Convention.java @@ -137,6 +137,7 @@ public class IsotropicRadiationCNES95Convention implements RadiationSensitive { /** {@inheritDoc} */ @Override + @Deprecated public FieldVector3D<DerivativeStructure> radiationPressureAcceleration(final AbsoluteDate date, final Frame frame, final Vector3D position, final Rotation rotation, final double mass, final Vector3D flux, final double[] parameters, diff --git a/src/main/java/org/orekit/forces/radiation/IsotropicRadiationClassicalConvention.java b/src/main/java/org/orekit/forces/radiation/IsotropicRadiationClassicalConvention.java index 28eb0eaaf37548f88e539e8283864ca9297c1c67..f1cac9a0d85bc5c2f47c9ed6d8c9b368a3dc03aa 100644 --- a/src/main/java/org/orekit/forces/radiation/IsotropicRadiationClassicalConvention.java +++ b/src/main/java/org/orekit/forces/radiation/IsotropicRadiationClassicalConvention.java @@ -125,6 +125,7 @@ public class IsotropicRadiationClassicalConvention implements RadiationSensitive /** {@inheritDoc} */ @Override + @Deprecated public FieldVector3D<DerivativeStructure> radiationPressureAcceleration(final AbsoluteDate date, final Frame frame, final Vector3D position, final Rotation rotation, final double mass, final Vector3D flux, final double[] parameters, diff --git a/src/main/java/org/orekit/forces/radiation/IsotropicRadiationSingleCoefficient.java b/src/main/java/org/orekit/forces/radiation/IsotropicRadiationSingleCoefficient.java index 0c69e2c8bb6277fa91b666b609a40a496b963634..4a62427961b22a1ee52dfef61b13bfe6ec848993 100644 --- a/src/main/java/org/orekit/forces/radiation/IsotropicRadiationSingleCoefficient.java +++ b/src/main/java/org/orekit/forces/radiation/IsotropicRadiationSingleCoefficient.java @@ -126,6 +126,7 @@ public class IsotropicRadiationSingleCoefficient implements RadiationSensitive { /** {@inheritDoc} */ @Override + @Deprecated public FieldVector3D<DerivativeStructure> radiationPressureAcceleration(final AbsoluteDate date, final Frame frame, final Vector3D position, final Rotation rotation, final double mass, final Vector3D flux, final double[] parameters, diff --git a/src/main/java/org/orekit/forces/radiation/RadiationSensitive.java b/src/main/java/org/orekit/forces/radiation/RadiationSensitive.java index 615f9cbe4f51a18624664f844cb7de7b02759d81..8beb3465f25bfe3fe7db5038736498befe8399e4 100644 --- a/src/main/java/org/orekit/forces/radiation/RadiationSensitive.java +++ b/src/main/java/org/orekit/forces/radiation/RadiationSensitive.java @@ -86,7 +86,9 @@ public interface RadiationSensitive { * @param parameters values of the force model parameters * @param paramName name of the parameter with respect to which derivatives are required * @return spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²) + * @deprecated Method not used anymore, should have been deleted in 9.0 but was left over. To be deleted in the next major version. */ + @Deprecated FieldVector3D<DerivativeStructure> radiationPressureAcceleration(AbsoluteDate date, Frame frame, Vector3D position, Rotation rotation, double mass, Vector3D flux, double[] parameters, diff --git a/src/test/java/org/orekit/forces/BoxAndSolarArraySpacecraftTest.java b/src/test/java/org/orekit/forces/BoxAndSolarArraySpacecraftTest.java index 3b61915e140d0e11508a596633990752b17f6837..b6435969e66776f618b2161e6f8c835ce96e6ff6 100644 --- a/src/test/java/org/orekit/forces/BoxAndSolarArraySpacecraftTest.java +++ b/src/test/java/org/orekit/forces/BoxAndSolarArraySpacecraftTest.java @@ -20,6 +20,7 @@ package org.orekit.forces; import java.util.List; import org.hipparchus.Field; +import org.hipparchus.RealFieldElement; import org.hipparchus.analysis.differentiation.DSFactory; import org.hipparchus.analysis.differentiation.DerivativeStructure; import org.hipparchus.geometry.euclidean.threed.FieldRotation; @@ -29,6 +30,7 @@ import org.hipparchus.geometry.euclidean.threed.Vector3D; import org.hipparchus.util.Decimal64; import org.hipparchus.util.Decimal64Field; import org.hipparchus.util.FastMath; +import org.hipparchus.util.MathArrays; import org.hipparchus.util.Precision; import org.junit.Assert; import org.junit.Before; @@ -56,6 +58,7 @@ import org.orekit.time.DateComponents; import org.orekit.time.FieldAbsoluteDate; import org.orekit.time.TimeComponents; import org.orekit.time.TimeScalesFactory; +import org.orekit.utils.Constants; import org.orekit.utils.ParameterDriver; import org.orekit.utils.TimeStampedPVCoordinates; @@ -524,6 +527,7 @@ public class BoxAndSolarArraySpacecraftTest { } @Test + @Deprecated public void testWrongParameterDrag() { SpacecraftState state = propagator.getInitialState(); CelestialBody sun = CelestialBodyFactory.getSun(); @@ -545,6 +549,7 @@ public class BoxAndSolarArraySpacecraftTest { } @Test + @Deprecated public void testMissingParameterLift() { SpacecraftState state = propagator.getInitialState(); CelestialBody sun = CelestialBodyFactory.getSun(); @@ -568,6 +573,7 @@ public class BoxAndSolarArraySpacecraftTest { } @Test + @Deprecated public void testPresentParameterLift() { SpacecraftState state = propagator.getInitialState(); CelestialBody sun = CelestialBodyFactory.getSun(); @@ -583,6 +589,7 @@ public class BoxAndSolarArraySpacecraftTest { } @Test + @Deprecated public void testWrongParameterLift() { SpacecraftState state = propagator.getInitialState(); CelestialBody sun = CelestialBodyFactory.getSun(); @@ -607,6 +614,7 @@ public class BoxAndSolarArraySpacecraftTest { } @Test + @Deprecated public void testWrongParameterRadiation() { SpacecraftState state = propagator.getInitialState(); CelestialBody sun = CelestialBodyFactory.getSun(); @@ -627,46 +635,61 @@ public class BoxAndSolarArraySpacecraftTest { } } + /** Test solar array radiation acceleration with zero flux. */ @Test public void testNullIllumination() { SpacecraftState state = propagator.getInitialState(); CelestialBody sun = CelestialBodyFactory.getSun(); BoxAndSolarArraySpacecraft s = new BoxAndSolarArraySpacecraft(0, 0, 0, sun, 20.0, Vector3D.PLUS_J, 0.0, 1.0, 0.0); - FieldVector3D<DerivativeStructure> a = - s.radiationPressureAcceleration(state.getDate(), state.getFrame(), - state.getPVCoordinates().getPosition(), - state.getAttitude().getRotation(), - state.getMass(), new Vector3D(Precision.SAFE_MIN / 2, - Vector3D.PLUS_I), - getRadiationParameters(s), - RadiationSensitive.ABSORPTION_COEFFICIENT); + + // "Field" the inputs using Decimal64 + Field<Decimal64> field = Decimal64Field.getInstance(); + Decimal64[] srpParam = getRadiationParameters(s, field); + + FieldAbsoluteDate<Decimal64> date = new FieldAbsoluteDate<>(field, state.getDate()); + FieldVector3D<Decimal64> position = new FieldVector3D<Decimal64>(field.getOne(), state.getPVCoordinates().getPosition()); + FieldRotation<Decimal64> rotation = new FieldRotation<>(field, state.getAttitude().getRotation()); + Decimal64 mass = new Decimal64(state.getMass()); + FieldVector3D<Decimal64> flux = new FieldVector3D<Decimal64>(field.getOne(), + new Vector3D(Precision.SAFE_MIN / 2, Vector3D.PLUS_I)); + + + FieldVector3D<Decimal64> a = s.radiationPressureAcceleration(date, state.getFrame(), + position, rotation, mass, + flux, srpParam); Assert.assertEquals(0.0, a.getNorm().getReal(), Double.MIN_VALUE); } + /** Test forward/backward acceleration due to solar array radiation pressure. */ @Test public void testBackwardIllumination() { SpacecraftState state = propagator.getInitialState(); CelestialBody sun = CelestialBodyFactory.getSun(); BoxAndSolarArraySpacecraft s = new BoxAndSolarArraySpacecraft(0, 0, 0, sun, 20.0, Vector3D.PLUS_J, 0.0, 1.0, 0.0); - Vector3D n = s.getNormal(state.getDate(), state.getFrame(), - state.getPVCoordinates().getPosition(), - state.getAttitude().getRotation()); - FieldVector3D<DerivativeStructure> aPlus = - s.radiationPressureAcceleration(state.getDate(), state.getFrame(), - state.getPVCoordinates().getPosition(), - state.getAttitude().getRotation(), - state.getMass(), n, - getRadiationParameters(s), - RadiationSensitive.ABSORPTION_COEFFICIENT); - FieldVector3D<DerivativeStructure> aMinus = - s.radiationPressureAcceleration(state.getDate(), state.getFrame(), - state.getPVCoordinates().getPosition(), - state.getAttitude().getRotation(), - state.getMass(), n.negate(), - getRadiationParameters(s), - RadiationSensitive.ABSORPTION_COEFFICIENT); + + // "Field" the inputs using Decimal64 + Field<Decimal64> field = Decimal64Field.getInstance(); + Decimal64[] srpParam = getRadiationParameters(s, field); + + FieldAbsoluteDate<Decimal64> date = new FieldAbsoluteDate<>(field, state.getDate()); + FieldVector3D<Decimal64> position = new FieldVector3D<Decimal64>(field.getOne(), state.getPVCoordinates().getPosition()); + FieldRotation<Decimal64> rotation = new FieldRotation<>(field, state.getAttitude().getRotation()); + Decimal64 mass = new Decimal64(state.getMass()); + + // Flux equal to SA normal + FieldVector3D<Decimal64> flux = s.getNormal(date, state.getFrame(), position, rotation); + + // Forward flux + FieldVector3D<Decimal64> aPlus = s.radiationPressureAcceleration(date, state.getFrame(), + position, rotation, mass, + flux, srpParam); + // Backward flux + FieldVector3D<Decimal64> aMinus = s.radiationPressureAcceleration(date, state.getFrame(), + position, rotation, mass, + flux.negate(), srpParam); + Assert.assertEquals(0.0, aPlus.add(aMinus).getNorm().getReal(), Double.MIN_VALUE); } @@ -705,6 +728,7 @@ public class BoxAndSolarArraySpacecraftTest { } @Test + @Deprecated public void testNormalOptimalRotationDS() { AbsoluteDate initialDate = propagator.getInitialState().getDate(); CelestialBody sun = CelestialBodyFactory.getSun(); @@ -761,6 +785,7 @@ public class BoxAndSolarArraySpacecraftTest { } @Test + @Deprecated public void testNormalFixedRateDS() { AbsoluteDate initialDate = propagator.getInitialState().getDate(); CelestialBody sun = CelestialBodyFactory.getSun(); @@ -806,6 +831,7 @@ public class BoxAndSolarArraySpacecraftTest { } @Test + @Deprecated public void testNormalSunAlignedDS() { BoxAndSolarArraySpacecraft s = new BoxAndSolarArraySpacecraft(0, 0, 0, @@ -818,7 +844,75 @@ public class BoxAndSolarArraySpacecraftTest { FieldRotation.getIdentity(factory.getDerivativeField())); Assert.assertEquals(0, FieldVector3D.dotProduct(normal, Vector3D.PLUS_J).getReal(), 1.0e-16); } + + /** Test the functions computing drag and SRP acceleration and giving FieldVector3D outputs. + * By comparing the "double" value with a "Decimal64" implementation. + */ + @Test + public void testFieldAcceleration() { + + AbsoluteDate initialDate = propagator.getInitialState().getDate(); + CelestialBody sun = CelestialBodyFactory.getSun(); + + // Assuming simple Earth rotation model, constant density and flux + Vector3D earthRot = new Vector3D(0., 0., Constants.GRIM5C1_EARTH_ANGULAR_VELOCITY); + double density = 1.e-3; + double refFlux = 4.56e-6; + + + // Build a S/C box with non-nil coefficients so that the computation of the acceleration does not + // avoid any line of code + BoxAndSolarArraySpacecraft s = + new BoxAndSolarArraySpacecraft(1., 2., 3., sun, 20.0, Vector3D.PLUS_J, 2.0, 0.3, 0.5, 0.4); + + for (double dt = 0; dt < 4000; dt += 60) { + AbsoluteDate date = initialDate.shiftedBy(dt); + SpacecraftState state = propagator.propagate(date); + + // Data used in acceleration computation + Vector3D position = state.getPVCoordinates().getPosition(); + Vector3D velocity = state.getPVCoordinates().getVelocity(); + Vector3D vAtm = Vector3D.crossProduct(earthRot, position); + Vector3D relativeVelocity = vAtm.subtract(velocity); + + Frame frame = state.getFrame(); + Rotation rotation = state.getAttitude().getRotation(); + double mass = state.getMass(); + Vector3D flux = position.subtract(sun.getPVCoordinates(date, frame).getPosition()).normalize().scalarMultiply(refFlux); + + // Acceleration in double + Vector3D aDrag = s.dragAcceleration(date, frame, position, rotation, mass, + density, relativeVelocity, + getDragParameters(s)); + Vector3D aSrp = s.radiationPressureAcceleration(date, frame, position, rotation, mass, + flux, getRadiationParameters(s)); + + // "Field" the inputs using Decimal64 + Field<Decimal64> field = Decimal64Field.getInstance(); + + FieldAbsoluteDate<Decimal64> dateF = new FieldAbsoluteDate<>(field, date); + FieldVector3D<Decimal64> positionF = new FieldVector3D<Decimal64>(field.getOne(), position); + FieldRotation<Decimal64> rotationF = new FieldRotation<>(field, rotation); + Decimal64 massF = new Decimal64(mass); + FieldVector3D<Decimal64> fluxF = new FieldVector3D<Decimal64>(field.getOne(), flux); + Decimal64 densityF = new Decimal64(density); + FieldVector3D<Decimal64> relativeVelocityF = new FieldVector3D<Decimal64>(field.getOne(), relativeVelocity); + + + // Acceleration in Decimal64 + FieldVector3D<Decimal64> aDragF = s.dragAcceleration(dateF, frame, + positionF, rotationF, massF, densityF, + relativeVelocityF, getDragParameters(s, field)); + FieldVector3D<Decimal64> aSrpF = s.radiationPressureAcceleration(dateF, frame, + positionF, rotationF, massF, + fluxF, getRadiationParameters(s, field)); + // Compare double and Decimal64 accelerations + Assert.assertEquals(0.0, Vector3D.distance(aDrag, aDragF.toVector3D()), Precision.EPSILON); + Assert.assertEquals(0.0, Vector3D.distance(aSrp, aSrpF.toVector3D()), Precision.EPSILON); + } + } + /** Get drag parameters as double[]. */ private double[] getDragParameters(final BoxAndSolarArraySpacecraft basa) { final ParameterDriver[] drivers = basa.getDragParametersDrivers(); final double[] parameters = new double[drivers.length]; @@ -828,6 +922,7 @@ public class BoxAndSolarArraySpacecraftTest { return parameters; } + /** Get radiation parameters as double[]. */ private double[] getRadiationParameters(final BoxAndSolarArraySpacecraft basa) { final ParameterDriver[] drivers = basa.getRadiationParametersDrivers(); final double[] parameters = new double[drivers.length]; @@ -836,6 +931,28 @@ public class BoxAndSolarArraySpacecraftTest { } return parameters; } + + /** Get drag parameters as field[]. */ + private <T extends RealFieldElement<T>> T[] getDragParameters(final BoxAndSolarArraySpacecraft basa, + final Field<T> field) { + final ParameterDriver[] drivers = basa.getDragParametersDrivers(); + final T[] parameters = MathArrays.buildArray(field, drivers.length); + for (int i = 0; i < drivers.length; ++i) { + parameters[i] = field.getZero().add(drivers[i].getValue()); + } + return parameters; + } + + /** Get radiation parameters as field[]. */ + private <T extends RealFieldElement<T>> T[] getRadiationParameters(final BoxAndSolarArraySpacecraft basa, + final Field<T> field) { + final ParameterDriver[] drivers = basa.getRadiationParametersDrivers(); + final T[] parameters = MathArrays.buildArray(field, drivers.length); + for (int i = 0; i < drivers.length; ++i) { + parameters[i] = field.getZero().add(drivers[i].getValue()); + } + return parameters; + } @Before public void setUp() { diff --git a/src/test/java/org/orekit/forces/radiation/SolarRadiationPressureTest.java b/src/test/java/org/orekit/forces/radiation/SolarRadiationPressureTest.java index 5be799f9c49223ad6bddb1c71558144a6b71b606..12701886a95bb6d00187172856c3bc8cd1d7968f 100644 --- a/src/test/java/org/orekit/forces/radiation/SolarRadiationPressureTest.java +++ b/src/test/java/org/orekit/forces/radiation/SolarRadiationPressureTest.java @@ -201,6 +201,10 @@ public class SolarRadiationPressureTest extends AbstractLegacyForceModelTest { Assert.assertTrue(3==count); } + /** Test parameter derivatives with class IsotropicRadiationCNES95Convention. + * @deprecated remove code after FIXME in next major version + */ + @Deprecated @Test public void testParameterDerivativeIsotropicSingle() { @@ -236,7 +240,11 @@ public class SolarRadiationPressureTest extends AbstractLegacyForceModelTest { } } + /** Test parameter derivatives with class IsotropicRadiationClassicalConvention. + * @deprecated remove code after FIXME in next major version + */ @Test + @Deprecated public void testParameterDerivativeIsotropicClassical() { final Vector3D pos = new Vector3D(6.46885878304673824e+06, -1.88050918456274318e+06, -1.32931592294715829e+04); @@ -255,6 +263,7 @@ public class SolarRadiationPressureTest extends AbstractLegacyForceModelTest { checkParameterDerivative(state, forceModel, RadiationSensitive.ABSORPTION_COEFFICIENT, 0.25, 6.7e-16); checkParameterDerivative(state, forceModel, RadiationSensitive.REFLECTION_COEFFICIENT, 0.25, 5.1e-16); + // FIXME: To remove try { rs.radiationPressureAcceleration(state.getDate(), state.getFrame(), state.getPVCoordinates().getPosition(), @@ -269,7 +278,11 @@ public class SolarRadiationPressureTest extends AbstractLegacyForceModelTest { } + /** Test parameter derivatives with class IsotropicRadiationCNES95Convention. + * @deprecated remove code after FIXME in next major version + */ @Test + @Deprecated public void testParameterDerivativeIsotropicCnes() { final Vector3D pos = new Vector3D(6.46885878304673824e+06, -1.88050918456274318e+06, -1.32931592294715829e+04); @@ -287,7 +300,8 @@ public class SolarRadiationPressureTest extends AbstractLegacyForceModelTest { checkParameterDerivative(state, forceModel, RadiationSensitive.ABSORPTION_COEFFICIENT, 0.25, 2.5e-15); checkParameterDerivative(state, forceModel, RadiationSensitive.REFLECTION_COEFFICIENT, 0.25, 2.0e-14); - + + // FIXME: To remove try { rs.radiationPressureAcceleration(state.getDate(), state.getFrame(), state.getPVCoordinates().getPosition(),