Le 22/03/2016 14:06, Elisabet a écrit :
The code to calculate the osculating parameters is the following:
final UnnormalizedSphericalHarmonicsProvider provider =
GravityFieldFactory.getUnnormalizedProvider(MeanValuesWithHandler.EARTHDEGREE,
0);
final org.orekit.frames.Frame earthFrame
=FramesFactory.getITRF(IERSConventions.IERS_2010,true); // terrestrial
frame
final DSSTForceModel force = new
DSSTCentralBody(earthFrame,Constants.WGS84_EARTH_ANGULAR_VELOCITY,provider,
MeanValuesWithHandler.EARTHDEGREE, MeanValuesWithHandler.EARTHDEGREE,
MeanValuesWithHandler.EARTHORDER, MeanValuesWithHandler.EARTHDEGREE,
MeanValuesWithHandler.EARTHORDER);
final Collection<DSSTForceModel> forces = new
ArrayList<DSSTForceModel>();
forces.add(force);
SpacecraftState
oscuState=DSSTPropagator.computeOsculatingState(s0, forces);
I cannot reproduce your error.
Here is a test case I created from your snippet above. I put it in the
DSSTPropagatorTest.java unit test file and ran it directly from
Eclipse.
I paste the output below the code:
@Test
public void testDegreesSetting() throws OrekitException {
int earthDegree = 4;
int earthOrder = 4;
final UnnormalizedSphericalHarmonicsProvider provider =
GravityFieldFactory.getUnnormalizedProvider(earthDegree,
0);
final org.orekit.frames.Frame earthFrame
=FramesFactory.getITRF(IERSConventions.IERS_2010,true); //
terrestrial frame
final DSSTForceModel force = new
DSSTCentralBody(earthFrame,Constants.WGS84_EARTH_ANGULAR_VELOCITY,provider,
earthDegree, earthDegree,
earthOrder, earthDegree,
earthOrder);
final Collection<DSSTForceModel> forces = new
ArrayList<DSSTForceModel>();
forces.add(force);
TimeScale tai = TimeScalesFactory.getTAI();
AbsoluteDate initialDate = new AbsoluteDate("2015-07-01", tai);
AbsoluteDate startDate = new AbsoluteDate("2015-07-03",
tai).shiftedBy(-0.1);
AbsoluteDate endDate = new AbsoluteDate("2015-07-04", tai);
Frame eci = FramesFactory.getGCRF();
KeplerianOrbit orbit = new KeplerianOrbit(
7120000.0, 1.0e-3, FastMath.toRadians(60.0),
FastMath.toRadians(120.0), FastMath.toRadians(47.0),
FastMath.toRadians(12.0),
PositionAngle.TRUE, eci, initialDate,
Constants.EIGEN5C_EARTH_MU);
SpacecraftState
oscuState=DSSTPropagator.computeOsculatingState(new
SpacecraftState(orbit), forces);
System.out.println("mean: " +
OrbitType.EQUINOCTIAL.convertType(orbit));
System.out.println("osculating: " + oscuState.getOrbit());
for (String loadedData :
DataProvidersManager.getInstance().getLoadedDataNames()) {
System.out.println("loaded data: " + loadedData);
}
}
mean: equinoctial parameters: {a: 7120000.0; ex:
-9.743700647852352E-4; ey: 2.2495105434386478E-4; hx:
0.39375193676896686; hy: 0.4222472565026574; lv: 179.0;}
osculating: equinoctial parameters: {a: 7119255.635558891; ex:
-7.180376343313375E-4; ey: 5.455028220287878E-4; hx:
0.3938741145261942;
hy: 0.42210590703727724; lv: 178.98614568290904;}
loaded data:
/home/luc/sources/eclipse/orekit/bin/potential/shm-format/eigen_cg03c_coef
loaded data:
/home/luc/sources/eclipse/orekit/bin/regular-data/UTC-TAI.history
loaded data:
/home/luc/sources/eclipse/orekit/bin/regular-data/Earth-orientation-parameters/yearly/finals2000A.2002.xml
loaded data:
/home/luc/sources/eclipse/orekit/bin/regular-data/Earth-orientation-parameters/yearly/eopc04_08_IAU2000.03
loaded data:
/home/luc/sources/eclipse/orekit/bin/regular-data/Earth-orientation-parameters/yearly/eopc04_08_IAU2000.04
loaded data:
/home/luc/sources/eclipse/orekit/bin/regular-data/Earth-orientation-parameters/yearly/eopc04_08_IAU2000.05
loaded data:
/home/luc/sources/eclipse/orekit/bin/regular-data/Earth-orientation-parameters/monthly/bulletinb_IAU2000-216.txt
loaded data:
/home/luc/sources/eclipse/orekit/bin/regular-data/Earth-orientation-parameters/monthly/bulletinb_IAU2000-217.txt
loaded data:
/home/luc/sources/eclipse/orekit/bin/regular-data/Earth-orientation-parameters/monthly/bulletinb_IAU2000.218
The data loaded were set up automatically from the Junit (see
the setUp method in the same file), it corresponds to some
arbitrary set.
Could you provide a complete running program that show the behaviour,
including the degrees and order you used (I selected 4 arbitrarily
above) and showing the configuration data and orbit?
best regards,
Luc
It gives me an arithmetic error if I try to change the
UnnormalizedSphericalHarmonicsProvider. If the order of
getUnnormalizedProvider(MeanValuesWithHandler.EARTHDEGREE, 0) is
different
from 0 it does not work and it gives me the error posted previously.
For me,
these two terms are the earth degree and earth order of the Earth
potential.
Why it does not work? Are they the same degree/order terms as in
DSSTCentralBody(earthFrame,Constants.WGS84_EARTH_ANGULAR_VELOCITY,provider,
MeanValuesWithHandler.EARTHDEGREE, MeanValuesWithHandler.EARTHDEGREE,
MeanValuesWithHandler.EARTHORDER, MeanValuesWithHandler.EARTHDEGREE,
MeanValuesWithHandler.EARTHORDER);?
Best regards,
Elisabet