Initial State
Keplerian parameters: {a: 6678137.0; e: 0.1; i: 50.0; pa: 0.0; raan: 0.0; v: 0.0;}
Final state
Keplerian parameters: {a: 6678137.0; e: 0.1; i: 50.0; pa: 0.0; raan: 0.0; v: 359.9999999999999;}
STM
1.084033316 1048746.583 -1.881271601e-07 338443.1765 217547.0804 689070.0095
8.986475977e-08 -0.4460115259 5.972999872e-14 -0.2344750310 -0.1507176447 -0.5273227631
-5.987960454e-21 1.482147738e-14 1.008352980 -2.359223927e-15 0.003748479827 5.162537065e-15
-1.049794901e-06 19.17181914 -0.009257359011 1.103560184 0.05508206389 -1.305994282
3.388131789e-21 9.503509091e-14 0.01440189399 9.742207041e-15 1.017867705 2.688127498e-14
7.973387020e-09 -23.67118846 1.041684976e-12 -0.8494761263 -0.5460327287 0.9198999327
Expected dM(t)/da(t0)
-1.411288501683835E-6
/** * @author Evan Ward */ @Grab(group = 'org.orekit', module = 'orekit', version = '9.0') // for easy development only @Grab(group = 'org.orekit', module = 'orekit', version = '9.0', classifier = 'sources') import org.orekit.data.DataProvidersManager import org.orekit.forces.gravity.NewtonianAttraction import org.orekit.frames.FramesFactory import org.orekit.orbits.KeplerianOrbit import org.orekit.orbits.OrbitType import org.orekit.orbits.PositionAngle import org.orekit.propagation.SpacecraftState import org.orekit.propagation.numerical.NumericalPropagator import org.orekit.propagation.numerical.PartialDerivativesEquations import org.orekit.time.AbsoluteDate import org.orekit.utils.Constants; import org.hipparchus.linear.MatrixUtils import org.hipparchus.linear.RealMatrix import org.hipparchus.ode.nonstiff.DormandPrince853Integrator // set supplemental data System.setProperty(DataProvidersManager.OREKIT_DATA_PATH, "/home/ward/eop/"); def eci = FramesFactory.getGCRF() def epoch = new AbsoluteDate() def positionAngle = PositionAngle.MEAN def gm = Constants.EIGEN5C_EARTH_MU def orbit = new KeplerianOrbit(6378137 + 300e3, 0.1, Math.toRadians(50), 0, 0, 0, positionAngle, eci, epoch, gm) def orbitType = OrbitType.KEPLERIAN def tol = NumericalPropagator.tolerances(1, orbit, orbitType) def integrator = new DormandPrince853Integrator(1e-1, 3600, tol[0], tol[1]) def np = new NumericalPropagator(integrator) np.setOrbitType(orbitType) np.setPositionAngleType(positionAngle) np.addForceModel(new NewtonianAttraction(gm)) def ic = new SpacecraftState(orbit) def pde = new PartialDerivativesEquations("stm", np) ic = pde.setInitialJacobians(ic) np.setInitialState(ic) def mapper = pde.getMapper() def targetDate = epoch.shiftedBy(orbit.getKeplerianPeriod()) def state = np.propagate(targetDate) def stm = new double[6][6] mapper.getStateJacobian(state, stm) println "Initial State" println orbit println "Final state" println state.getOrbit() println "STM" for (def row : stm) { for (def value : row) { printf "%20.10g ", value } println '' } println "Expected dM(t)/da(t0)" println(-3.0 / 2.0 * orbit.getKeplerianMeanMotion() / orbit.getA() * (targetDate.durationFrom(epoch)))
Attachment:
smime.p7s
Description: S/MIME cryptographic signature