List of usage examples for org.apache.commons.math3.ode.nonstiff DormandPrince853Integrator DormandPrince853Integrator
public DormandPrince853Integrator(final double minStep, final double maxStep, final double[] vecAbsoluteTolerance, final double[] vecRelativeTolerance)
From source file:org.orekit.forces.gravity.CunninghamAttractionModelTest.java
private BoundedPropagator createEphemeris(double dP, SpacecraftState initialState, double duration, UnnormalizedSphericalHarmonicsProvider provider) throws OrekitException { double[][] tol = NumericalPropagator.tolerances(dP, initialState.getOrbit(), OrbitType.CARTESIAN); AbstractIntegrator integrator = new DormandPrince853Integrator(0.001, 120.0, tol[0], tol[1]); NumericalPropagator propagator = new NumericalPropagator(integrator); propagator.setEphemerisMode();/*w ww.ja va 2 s. c o m*/ propagator.setOrbitType(OrbitType.CARTESIAN); propagator.addForceModel( new CunninghamAttractionModel(FramesFactory.getITRF(IERSConventions.IERS_2010, true), provider)); propagator.setInitialState(initialState); propagator.propagate(initialState.getDate().shiftedBy(duration)); return propagator.getGeneratedEphemeris(); }
From source file:org.orekit.forces.gravity.CunninghamAttractionModelTest.java
@Test public void testStateJacobian() throws OrekitException { Utils.setDataRoot("regular-data:potential/grgs-format"); GravityFieldFactory.addPotentialCoefficientsReader(new GRGSFormatReader("grim4s4_gr", true)); // initialization AbsoluteDate date = new AbsoluteDate(new DateComponents(2000, 07, 01), new TimeComponents(13, 59, 27.816), TimeScalesFactory.getUTC()); double i = FastMath.toRadians(98.7); double omega = FastMath.toRadians(93.0); double OMEGA = FastMath.toRadians(15.0 * 22.5); Orbit orbit = new KeplerianOrbit(7201009.7124401, 1e-3, i, omega, OMEGA, 0, PositionAngle.MEAN, FramesFactory.getEME2000(), date, mu); OrbitType integrationType = OrbitType.CARTESIAN; double[][] tolerances = NumericalPropagator.tolerances(0.01, orbit, integrationType); propagator = new NumericalPropagator( new DormandPrince853Integrator(1.0e-3, 120, tolerances[0], tolerances[1])); propagator.setOrbitType(integrationType); CunninghamAttractionModel cuModel = new CunninghamAttractionModel(itrf2008, GravityFieldFactory.getUnnormalizedProvider(50, 50)); Assert.assertEquals(TideSystem.UNKNOWN, cuModel.getTideSystem()); propagator.addForceModel(cuModel);//from ww w . j a va 2s. c o m SpacecraftState state0 = new SpacecraftState(orbit); propagator.setInitialState(state0); try { DerivativeStructure one = new DerivativeStructure(7, 1, 1.0); cuModel.accelerationDerivatives(state0.getDate(), state0.getFrame(), new FieldVector3D<DerivativeStructure>(one, state0.getPVCoordinates().getPosition()), new FieldVector3D<DerivativeStructure>(one, state0.getPVCoordinates().getVelocity()), new FieldRotation<DerivativeStructure>(one.multiply(state0.getAttitude().getRotation().getQ0()), one.multiply(state0.getAttitude().getRotation().getQ1()), one.multiply(state0.getAttitude().getRotation().getQ2()), one.multiply(state0.getAttitude().getRotation().getQ3()), false), one.multiply(state0.getMass())); Assert.fail("an exception should have been thrown"); } catch (OrekitException oe) { Assert.assertEquals(OrekitMessages.STEPS_NOT_INITIALIZED_FOR_FINITE_DIFFERENCES, oe.getSpecifier()); } cuModel.setSteps(1.0, 1.0e10); checkStateJacobian(propagator, state0, date.shiftedBy(3.5 * 3600.0), 40000, tolerances[0], 2.0e-7); }
From source file:org.orekit.forces.gravity.CunninghamAttractionModelTest.java
@Before public void setUp() { itrf2008 = null;//from www.j a v a2 s. c o m propagator = null; Utils.setDataRoot("regular-data"); try { // Eigen c1 model truncated to degree 6 mu = 3.986004415e+14; ae = 6378136.460; c20 = -1.08262631303e-3; c30 = 2.53248017972e-6; c40 = 1.61994537014e-6; c50 = 2.27888264414e-7; c60 = -5.40618601332e-7; itrf2008 = FramesFactory.getITRF(IERSConventions.IERS_2010, true); double[] absTolerance = { 0.001, 1.0e-9, 1.0e-9, 1.0e-6, 1.0e-6, 1.0e-6, 0.001 }; double[] relTolerance = { 1.0e-7, 1.0e-4, 1.0e-4, 1.0e-7, 1.0e-7, 1.0e-7, 1.0e-7 }; AdaptiveStepsizeIntegrator integrator = new DormandPrince853Integrator(0.001, 1000, absTolerance, relTolerance); integrator.setInitialStepSize(60); propagator = new NumericalPropagator(integrator); } catch (OrekitException oe) { Assert.fail(oe.getMessage()); } }
From source file:org.orekit.forces.gravity.DrozinerAttractionModelTest.java
@Test public void testStateJacobian() throws OrekitException { Utils.setDataRoot("regular-data:potential/grgs-format"); GravityFieldFactory.addPotentialCoefficientsReader(new GRGSFormatReader("grim4s4_gr", true)); // initialization AbsoluteDate date = new AbsoluteDate(new DateComponents(2000, 07, 01), new TimeComponents(13, 59, 27.816), TimeScalesFactory.getUTC()); double i = FastMath.toRadians(98.7); double omega = FastMath.toRadians(93.0); double OMEGA = FastMath.toRadians(15.0 * 22.5); Orbit orbit = new KeplerianOrbit(7201009.7124401, 1e-3, i, omega, OMEGA, 0, PositionAngle.MEAN, FramesFactory.getEME2000(), date, mu); OrbitType integrationType = OrbitType.CARTESIAN; double[][] tolerances = NumericalPropagator.tolerances(0.01, orbit, integrationType); propagator = new NumericalPropagator( new DormandPrince853Integrator(1.0e-3, 120, tolerances[0], tolerances[1])); propagator.setOrbitType(integrationType); DrozinerAttractionModel drModel = new DrozinerAttractionModel(itrf2008, GravityFieldFactory.getUnnormalizedProvider(50, 50)); Assert.assertEquals(TideSystem.UNKNOWN, drModel.getTideSystem()); propagator.addForceModel(drModel);/*from w w w. j a v a 2 s . c o m*/ SpacecraftState state0 = new SpacecraftState(orbit); propagator.setInitialState(state0); try { DerivativeStructure one = new DerivativeStructure(7, 1, 1.0); drModel.accelerationDerivatives(state0.getDate(), state0.getFrame(), new FieldVector3D<DerivativeStructure>(one, state0.getPVCoordinates().getPosition()), new FieldVector3D<DerivativeStructure>(one, state0.getPVCoordinates().getVelocity()), new FieldRotation<DerivativeStructure>(one.multiply(state0.getAttitude().getRotation().getQ0()), one.multiply(state0.getAttitude().getRotation().getQ1()), one.multiply(state0.getAttitude().getRotation().getQ2()), one.multiply(state0.getAttitude().getRotation().getQ3()), false), one.multiply(state0.getMass())); Assert.fail("an exception should have been thrown"); } catch (OrekitException oe) { Assert.assertEquals(OrekitMessages.STEPS_NOT_INITIALIZED_FOR_FINITE_DIFFERENCES, oe.getSpecifier()); } drModel.setSteps(1.0, 1.0e10); checkStateJacobian(propagator, state0, date.shiftedBy(3.5 * 3600.0), 40000, tolerances[0], 2.0e-7); }
From source file:org.orekit.forces.gravity.DrozinerAttractionModelTest.java
@Before public void setUp() { itrf2008 = null;//from ww w. j av a 2 s. c o m propagator = null; Utils.setDataRoot("regular-data"); try { mu = 3.986004415e+14; ae = 6378136.460; c20 = -1.08262631303e-3; c30 = 2.53248017972e-6; c40 = 1.61994537014e-6; c50 = 2.27888264414e-7; c60 = -5.40618601332e-7; itrf2008 = FramesFactory.getITRF(IERSConventions.IERS_2010, true); double[] absTolerance = { 0.001, 1.0e-9, 1.0e-9, 1.0e-6, 1.0e-6, 1.0e-6, 0.001 }; double[] relTolerance = { 1.0e-7, 1.0e-4, 1.0e-4, 1.0e-7, 1.0e-7, 1.0e-7, 1.0e-7 }; AdaptiveStepsizeIntegrator integrator = new DormandPrince853Integrator(0.001, 1000, absTolerance, relTolerance); integrator.setInitialStepSize(60); propagator = new NumericalPropagator(integrator); } catch (OrekitException oe) { Assert.fail(oe.getMessage()); } }
From source file:org.orekit.forces.gravity.HolmesFeatherstoneAttractionModelTest.java
@Test public void testCompleteWithCunninghamReference() throws OrekitException { Utils.setDataRoot("regular-data:potential/grgs-format"); GravityFieldFactory.addPotentialCoefficientsReader(new GRGSFormatReader("grim4s4_gr", true)); // initialization AbsoluteDate date = new AbsoluteDate(new DateComponents(2000, 07, 01), new TimeComponents(13, 59, 27.816), TimeScalesFactory.getUTC()); double i = FastMath.toRadians(98.7); double omega = FastMath.toRadians(93.0); double OMEGA = FastMath.toRadians(15.0 * 22.5); Orbit orbit = new KeplerianOrbit(7201009.7124401, 1e-3, i, omega, OMEGA, 0, PositionAngle.MEAN, FramesFactory.getEME2000(), date, mu); double[][] tolerances = NumericalPropagator.tolerances(0.01, orbit, OrbitType.CARTESIAN); AbsoluteDate targetDate = date.shiftedBy(3 * Constants.JULIAN_DAY); propagator = new NumericalPropagator( new DormandPrince853Integrator(1.0e-3, 120, tolerances[0], tolerances[1])); propagator.setOrbitType(OrbitType.CARTESIAN); propagator.addForceModel(/*from ww w . j a v a 2 s . c om*/ new HolmesFeatherstoneAttractionModel(itrf, GravityFieldFactory.getNormalizedProvider(69, 69))); propagator.setInitialState(new SpacecraftState(orbit)); SpacecraftState hfOrb = propagator.propagate(targetDate); propagator.removeForceModels(); propagator.addForceModel( new CunninghamAttractionModel(itrf, GravityFieldFactory.getUnnormalizedProvider(69, 69))); propagator.setInitialState(new SpacecraftState(orbit)); SpacecraftState cOrb = propagator.propagate(targetDate); Vector3D dif = hfOrb.getPVCoordinates().getPosition().subtract(cOrb.getPVCoordinates().getPosition()); Assert.assertEquals(0, dif.getNorm(), 4e-5); }
From source file:org.orekit.forces.gravity.HolmesFeatherstoneAttractionModelTest.java
private BoundedPropagator createEphemeris(double dP, SpacecraftState initialState, double duration, NormalizedSphericalHarmonicsProvider provider) throws OrekitException { double[][] tol = NumericalPropagator.tolerances(dP, initialState.getOrbit(), OrbitType.CARTESIAN); AbstractIntegrator integrator = new DormandPrince853Integrator(0.001, 120.0, tol[0], tol[1]); NumericalPropagator propagator = new NumericalPropagator(integrator); propagator.setEphemerisMode();/* www . java 2 s . com*/ propagator.setOrbitType(OrbitType.CARTESIAN); propagator.addForceModel(new HolmesFeatherstoneAttractionModel( FramesFactory.getITRF(IERSConventions.IERS_2010, true), provider)); propagator.setInitialState(initialState); propagator.propagate(initialState.getDate().shiftedBy(duration)); return propagator.getGeneratedEphemeris(); }
From source file:org.orekit.forces.gravity.HolmesFeatherstoneAttractionModelTest.java
@Test public void testStateJacobian() throws OrekitException { Utils.setDataRoot("regular-data:potential/grgs-format"); GravityFieldFactory.addPotentialCoefficientsReader(new GRGSFormatReader("grim4s4_gr", true)); // initialization AbsoluteDate date = new AbsoluteDate(new DateComponents(2000, 07, 01), new TimeComponents(13, 59, 27.816), TimeScalesFactory.getUTC()); double i = FastMath.toRadians(98.7); double omega = FastMath.toRadians(93.0); double OMEGA = FastMath.toRadians(15.0 * 22.5); Orbit orbit = new KeplerianOrbit(7201009.7124401, 1e-3, i, omega, OMEGA, 0, PositionAngle.MEAN, FramesFactory.getEME2000(), date, mu); OrbitType integrationType = OrbitType.CARTESIAN; double[][] tolerances = NumericalPropagator.tolerances(0.01, orbit, integrationType); propagator = new NumericalPropagator( new DormandPrince853Integrator(1.0e-3, 120, tolerances[0], tolerances[1])); propagator.setOrbitType(integrationType); HolmesFeatherstoneAttractionModel hfModel = new HolmesFeatherstoneAttractionModel(itrf, GravityFieldFactory.getNormalizedProvider(50, 50)); Assert.assertEquals(TideSystem.UNKNOWN, hfModel.getTideSystem()); propagator.addForceModel(hfModel);/*from w w w. j a va 2 s . c o m*/ SpacecraftState state0 = new SpacecraftState(orbit); propagator.setInitialState(state0); checkStateJacobian(propagator, state0, date.shiftedBy(3.5 * 3600.0), 50000, tolerances[0], 7.0e-10); }
From source file:org.orekit.forces.gravity.HolmesFeatherstoneAttractionModelTest.java
@Before public void setUp() { itrf = null;/*from w w w.j a v a2 s . c om*/ propagator = null; Utils.setDataRoot("regular-data"); try { // Eigen 6s model truncated to degree 6 mu = 3.986004415e+14; ae = 6378136.460; normalizedC20 = -4.84165299820e-04; normalizedC30 = 9.57211326674e-07; normalizedC40 = 5.39990167207e-07; normalizedC50 = 6.86846073356e-08; normalizedC60 = -1.49953256913e-07; unnormalizedC20 = FastMath.sqrt(5) * normalizedC20; unnormalizedC30 = FastMath.sqrt(7) * normalizedC30; unnormalizedC40 = FastMath.sqrt(9) * normalizedC40; unnormalizedC50 = FastMath.sqrt(11) * normalizedC50; unnormalizedC60 = FastMath.sqrt(13) * normalizedC60; itrf = FramesFactory.getITRF(IERSConventions.IERS_2010, true); double[] absTolerance = { 0.001, 1.0e-9, 1.0e-9, 1.0e-6, 1.0e-6, 1.0e-6, 0.001 }; double[] relTolerance = { 1.0e-7, 1.0e-4, 1.0e-4, 1.0e-7, 1.0e-7, 1.0e-7, 1.0e-7 }; AdaptiveStepsizeIntegrator integrator = new DormandPrince853Integrator(0.001, 1000, absTolerance, relTolerance); integrator.setInitialStepSize(60); propagator = new NumericalPropagator(integrator); } catch (OrekitException oe) { Assert.fail(oe.getMessage()); } }
From source file:org.orekit.forces.gravity.OceanTidesTest.java
private SpacecraftState propagate(Orbit orbit, AbsoluteDate target, ForceModel... forceModels) throws OrekitException { double[][] tolerances = NumericalPropagator.tolerances(10, orbit, OrbitType.KEPLERIAN); AbstractIntegrator integrator = new DormandPrince853Integrator(1.0e-3, 300, tolerances[0], tolerances[1]); NumericalPropagator propagator = new NumericalPropagator(integrator); for (ForceModel forceModel : forceModels) { propagator.addForceModel(forceModel); }// w ww . ja v a2 s . c o m propagator.setInitialState(new SpacecraftState(orbit)); return propagator.propagate(target); }