Moon.cfg in orbiter beta

The idea of defining a star-to-star rotation period has been bothering me because the angle Lrel was never measured in the same plane as the angle phi and I couldn't see how the two could be added together.
I have been troubled by the same issue.

What if we were to change to defining Ts as the node-to-node period (this is how the IAU/IAG do it).
That would be probably the best. AGC do model the lunar precession in the same way. And it's something that I would call solid, it doesn't leave any room for misunderstandings. Also the node-to-node period can be, at least, very well approximated from SidRotPeriod, precession period and obliquity.
 
Also the node-to-node period can be, at least, very well approximated from SidRotPeriod, precession period and obliquity.
Like:

Tr = 1/(1/Ts - cos(eps_rel)/Tp)
phi(t) = 2*pi*(t-t0)/Tr + delta_phi

where delta_phi is the angle from L_rel to the prime meridian at epoch.

For 2006P1, is SidRotOffset measured from the vernal equinox direction or from the LAN of obliquity? If the vernal equinox, a correction should be added to the code so that the new code is backward compatible with the old cfg files.

EDIT: The equation presented above is really the same as the one I presented before. I've been thinking further about Martin's objections in post 42. For the hypothetical case he presented I think there is some confusion between a case where Tr (the rotation period in the precession frame) is infinite and the case where Ts is infinite. Consider the equations above and the case where Tr is infinite. Ts = Tp/cos(eps_rel) and an observer on such a body would see the stars moving and after one precession period they would be back where they started, as expected.

For the case that Martin presented, Ts is infinite, which means that the body has a non-zero angular velocity in the precession frame. If you consider the vector sum of the angular velocity of the body in precession frame (1/Tr) and the angular velocity of the precession frame (1/Tp), in order to keep Ts zero throughout the rotation, angular velocity 1/Tr must keep constant magnitude but change direction w.r.t to the precession frame. Clearly this is a phsyically unrealistic scenario but it also demonstrates the limits of the above scalar equations. In all practicality the scalar approximation is perfectly reasonable where Tp >> Ts.

In conclusion, I say we use the equation 7 you proposed all the way back in post 39 (effectively the same as what I presented above).

EDIT2: I should clarify the above by saying that for an observer standing on a given body, I would only expect the stars to be in the same spot after one full precession cycle if Ts was an integer multiple of Tp/cos(eps_rel). The proposed equations reflect this.
 
I've been working on an application to calculate the cfg parameters by numerically integrating the IAU/IAG data. Here is my data for the Moon thus far (SidRotOffset and SidRotPeriod not yet implemented). The integration was performed over the period J2000 +/- 1 Julian century with a step size of 1 day (86400 s TT).
Code:
PrecessionLAN = 3.04747
PrecessionObliquity = 0.00037707
LAN = 5.39624
LAN_MJD = 51544.5
PrecessionPeriod = -6792.06
Obliquity = 0.0269272
The precession period equates to -18.5957 years and the obliquity to 1.54282 degrees, which match up reasonably well with other data.

The code is on bitbucket, if anyone is interested. It's a bit rough but I figure that is OK since I don't see it being used or maintained for a very long period of time. I will expand it as I have time to include SidRotOffset and SidRotPeriod for the Moon and then other bodies.
http://bitbucket.org/tblaxland/precession-estimator/wiki/Home
 
Code updated to calculate Moon SidRot parameters. Output now looks like:
Code:
PrecessionLAN = 3.04747
PrecessionObliquity = 0.00037707
LAN = 5.39624
LAN_MJD = 51544.5
SidRotOffset = 4.79151
SidRotPeriod = 2.36059e+006
PrecessionPeriod = -6792.06
Obliquity = 0.0269272
;SidRotPeriod (days): 27.3216
;SidRotPeriod (days - node to node): 27.2122
;Precession Period (years): -18.5957
;Obliquity (deg): 1.54282
The last four lines are for sanity checking only.

EDIT: I increased the precision on the output by 2 digits so as to provide one guard digit above the precision given in the IAU/IAG docs:
Code:
PrecessionLAN = 3.0474726
PrecessionObliquity = 0.00037707034
LAN = 5.3962403
LAN_MJD = 51544.5
SidRotOffset = 4.7915104
SidRotPeriod = 2360588.1
PrecessionPeriod = -6792.0633
Obliquity = 0.026927239
;SidRotPeriod (days): 27.321622
;SidRotPeriod (days - node to node): 27.212198
;Precession Period (years): -18.595656
;Obliquity (deg): 1.5428172
EDIT2: And now data for Mars:
Code:
PrecessionLAN = 4.0050811
PrecessionObliquity = 0.032243695
PrecessionPeriod = 33968250
LAN = 0.62105324
LAN_MJD = 51544.5
SidRotOffset = 5.4695248
SidRotPeriod = 88642.664
Obliquity = 0.43974065
;SidRotPeriod (days): 1.0259568
;SidRotPeriod (days - node to node): 1.0259568
;Precession Period (years): 93000
;Obliquity (deg): 25.195284
;Ecliptic Obliquity (deg): 26.717951
 
I made some plots by comparing IAU lunar model to Orbiter model. The plots are representing geocentric a latitude and longitude of an intersection of prime meridian and equator of the IAU model in the Orbiter Model.

The first plot is showing a drift over an interval of 10 years (1960 - 1970).
The second plot is showing the same drift over a time period of 100 years (1960-2060).
The third plot is made using the values provided by tblaxland.

The scales are in degrees.

EDIT: I need to recompute the third plot. There is an error.
 
Last edited:
The first plot is showing a drift over an interval of 10 years (1960 - 1970).
The second plot is showing the same drift over a time period of 100 years (1960-2060).
The third plot is made using the values provided by tblaxland.
Very interesting plots. The first and second plots used which values - those included with the beta or your own? And also, which model - the one currently documented in the beta or the one with the modified eq 7 per our discussion above?

BTW, I added the Earth calculations to my app. Note that the SidRotPeriod for Earth and Mars have been refined slightly due to me making a small error previously when using a hand calculator. The Mars PrecessionPeriod comes from wikipedia - does anyone have any better data?

For completeness, the output now looks like:
Code:
PrecessionEstimator /all 0.5

Earth
-----
PrecessionLAN = 0
PrecessionObliquity = 0
PrecessionPeriod = -9413040.4
LAN = 0
LAN_MJD = 51544.5
SidRotOffset = 4.88948754
SidRotPeriod = 86164.10132
Obliquity = 0.4090928023
;SidRotPeriod (days): 0.99726969
;SidRotPeriod (days - node to node): 0.99726959
;Precession Period (years): -25771.5
;Obliquity (deg): 23.439291
;Ecliptic Obliquity (deg): 23.439291

Moon
----
PrecessionLAN = 3.0474726
PrecessionObliquity = 0.00037707034
LAN = 5.3962403
LAN_MJD = 51544.5
SidRotOffset = 4.7915104
SidRotPeriod = 2360588.1
PrecessionPeriod = -6792.0633
Obliquity = 0.02692724
;SidRotPeriod (days): 27.321622
;SidRotPeriod (days - node to node): 27.212198
;Precession Period (years): -18.595656
;Obliquity (deg): 1.5428172

Mars
----
PrecessionLAN = 4.0050811
PrecessionObliquity = 0.032243695
PrecessionPeriod = -33968250
LAN = 0.62105324
LAN_MJD = 51544.5
SidRotOffset = 5.4695248
SidRotPeriod = 88642.665
Obliquity = 0.43974065
;SidRotPeriod (days): 1.0259568
;SidRotPeriod (days - node to node): 1.0259567
;Precession Period (years): -93000
;Obliquity (deg): 25.195284
;Ecliptic Obliquity (deg): 26.717951


---------- Post added at 00:08 ---------- Previous post was at 00:06 ----------

EDIT: I need to recompute the third plot. There is an error.
Arghh! Don't keep me in suspense - how did I compare? :P

EDIT: I updated the posted output above with the correct values shown (the Earth and Mars have negative precession periods).
 
Last edited:
Arghh! Don't keep me in suspense - how did I compare? :P

I am sorry to say but something is wrong, let's just hope that the problem is in my code.

Code:
[SIZE=2][COLOR=#0000ff]
[SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] time = J2000 - 40.0*365.25;[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] dt = 36.525;[/SIZE]
[SIZE=2]FILE *file = fopen([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"Data.txt"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2],[/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"w"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] ([/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] i=0;i<1000;i++) {[/SIZE]
 
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]/*[/COLOR][/SIZE]
[SIZE=2][COLOR=#008000]double opPrcLan = 3.0474;[/COLOR][/SIZE]
[SIZE=2][COLOR=#008000]double opPrcObl = 0.00037707; [/COLOR][/SIZE]
[SIZE=2][COLOR=#008000]double opLanOff = 5.39624;[/COLOR][/SIZE]
[SIZE=2][COLOR=#008000]double opLanPer = -6792.06 * 86400.0;[/COLOR][/SIZE]
[SIZE=2][COLOR=#008000]double opRotOff = 4.79151;[/COLOR][/SIZE]
[SIZE=2][COLOR=#008000]double opRotPer = 2.36059e+006;[/COLOR][/SIZE]
[SIZE=2][COLOR=#008000]double opObliqu = 0.0269272;[/COLOR][/SIZE]
[SIZE=2][COLOR=#008000]*/[/COLOR][/SIZE]
[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] opPrcLan = 0.0;[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] opPrcObl = 0.0; [/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] opLanOff = 2.181328;[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] opLanPer = -6792.9076 * 86400.0;[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] opRotOff = 4.770748;[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] opRotPer = 2360591.597;[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] opObliqu = 0.02694055;[/SIZE]
 
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] t = (time - J2000) * 86400.0;[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] ln = limit(opLanOff + PI2 * t / opLanPer); [/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] rt = limit(opRotOff + PI2 * t / opRotPer + opLanOff - ln);[/SIZE]
 
[SIZE=2]MATRIX3 Mat = mul(_MRz(rt), _MRx(-opObliqu));[/SIZE]
[SIZE=2]Mat = mul(Mat, _MRz(ln));[/SIZE]
[SIZE=2]Mat = mul(Mat, _MRx(-opPrcObl));[/SIZE]
[SIZE=2]Mat = mul(Mat, _MRz(opPrcLan));[/SIZE]
 
 
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Planet Meridian Axis[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]//[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]VECTOR3 _Prime = tmul(Mat, _V(1,0,0));[/SIZE]
 
[SIZE=2]VECTOR3 _K, _I, _J; [/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] lan, obl, rot;[/SIZE]
 
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Call IAU Lunar Model[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]//[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]Moon(time, &lan, &obl, &rot, &_K, &_I); [/SIZE]
 
[SIZE=2]sprintf_s(txt,256,[/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"%1.8f %1.8f"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2],DEG*asin(dotp(_Prime, crossp(_K, _I))), DEG*asin(dotp(_Prime,_K)));[/SIZE]
 
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] ([/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] i=0;i<256;i++) [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (txt[i]==[/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]'.'[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) txt[i]=[/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]','[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]
[SIZE=2]fprintf(file,[/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"%s\n"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2],txt);[/SIZE]
[SIZE=2]time += dt;[/SIZE]
[SIZE=2]} [/SIZE]
[SIZE=2]fclose(file);[/SIZE]
 
Last edited:
With these values I got this.

double opPrcLan = 3.0474726;
double opPrcObl = 0.00037707034;
double opLanOff = 5.3962403;
double opLanPer = -6792.0633 * 86400.0;
double opRotOff = 4.7915104;
double opRotPer = 2360588.1;
double opObliqu = 0.02692724;


 
Last edited:
And if you change this?
Code:
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] rt = limit(opRotOff + PI2 * t / opRotPer + cos(opObliqu)*(opLanOff - ln));[/SIZE]
At first glance, it seems my SidRotOffset is too high and the SidRotPeriod too low, which explains the graphs. Those values are derived by integrating the IAU/IAG model anyway. For experimenting with, here are the values with the integration period set to J2000 -40/+60 years:
Code:
Moon
----
PrecessionLAN = 3.0474726
PrecessionObliquity = 0.00037707034
LAN = 5.3962403
LAN_MJD = 51544.5
SidRotOffset = 4.7915104
SidRotPeriod = 2360588.1
PrecessionPeriod = -6797.0262
Obliquity = 0.02691704
;SidRotPeriod (days): 27.321621
;SidRotPeriod (days - node to node): 27.212277
;Precession Period (years): -18.609244
;Obliquity (deg): 1.5422328
 
Here is a new data after code modifications. It got improved.

Code:
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] opPrcLan = 3.0474726;[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] opPrcObl = 0.00037707034;[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] opLanOff = 5.3962403;[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] opLanPer = -6797.0262 * 86400.0;[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] opRotOff = 4.7915104;[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] opRotPer = 2360588.1;[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] opObliqu = 0.02691704;[/SIZE]
 
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] t = (time - J2000) * 86400.0;[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] ln = opLanOff + PI2 * t / opLanPer; [/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]double[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] rt = opRotOff + (PI2 * t / opRotPer) + cos(opObliqu)*(opLanOff - ln);[/SIZE]
 
Last edited:
For the case that Martin presented, Ts is infinite, which means that the body has a non-zero angular velocity in the precession frame. If you consider the vector sum of the angular velocity of the body in precession frame (1/Tr) and the angular velocity of the precession frame (1/Tp), in order to keep Ts zero throughout the rotation, angular velocity 1/Tr must keep constant magnitude but change direction w.r.t to the precession frame. Clearly this is a phsyically unrealistic scenario but it also demonstrates the limits of the above scalar equations. In all practicality the scalar approximation is perfectly reasonable where Tp >> Ts.

In conclusion, I say we use the equation 7 you proposed all the way back in post 39 (effectively the same as what I presented above).

I agree that since Tp >> Ts for all known bodies, that jarmonik's equation 7 (post 39) should be used.

Also, I tested it in the case of an Orbiter precession model for Triton, which has a very large angle between all three planes (ref, rel, ecliptic), and was able to create an Orbiter model that is accurate to 0.08 degrees over 1000 years.

Keep up the good work.

Regards

---------- Post added at 05:47 AM ---------- Previous post was at 12:40 AM ----------

The Mars PrecessionPeriod comes from wikipedia - does anyone have any better data?

My best model for the martian precession has
PrecessionPeriod = -63188250,

which I derived from the IAU numbers, and agrees (approximately) with some other references I've found.


Regards
 
That's looking better. Looking at my code, I think I can improve my PrecessionLAN and PrecessionObliquity a little.
After much fiddling I achieved not much. The errors in both directions remained within the same range. I'm not sure I can see much improvement available. So, which data to use? jarmonik, how does your data look when used with the improved eq. 7?

Chode, thanks for the Mars data.
 
How does your data look when used with the improved eq. 7?

I got the same results.

double opPrcLan = 0.0;
double opPrcObl = 0.0;
double opLanOff = 2.181328;
double opLanPer = -6792.9076 * 86400.0;
double opRotOff = 4.770748;
double opRotPer = 2360588.151; //old 2360591.597; // wiki 2360584.685;
double opObliqu = 0.02694055;


New value (opRotPer) is computed from old one via equation:

new = 1.0 / ( 1.0/old - (1.0-cos(opObliqu)) / opLanPer);

But what's the value in wikipedia 2360584.685 ??
 
Last edited:
But what's the value in wikipedia 2360584.685 ??
Wrong? According to the references, it is from 1961 so I think it would need to be taken with a grain of salt.

Below is a summary of my efforts thus far. For all cases integration period is J2000 -40/+60 years and step size 0.01 days. It looks like case 4 works best, at least for that time period. Other testing indicates case 1 will likely be better than case 3 & 4 over longer time periods but I think it is better to get the maximum accuracy for the period in which most historical/near future missions will be set. Based on these results, I am satisfied that case 1 shows the technique is sound for applying to other bodies.

1. Integration method for estimating precession pole:
Code:
Moon
----
PrecessionLAN = 0.78212477
PrecessionObliquity = 7.2958738e-005
LAN = 1.3916851
LAN_MJD = 51544.5
SidRotOffset = 4.7782231
SidRotPeriod = 2360588.1
PrecessionPeriod = -6798.9314
Obliquity = 0.026922946
;SidRotPeriod (days): 27.321621
;SidRotPeriod (days - node to node): 27.212308
;Precession Period (years): -18.61446
;Obliquity (deg): 1.5425712
[COLOR=Red][B];RMS Error (deg): 0.033314448[/B][/COLOR]
2. Analytic method for estimating precession pole:
Code:
Moon
----
PrecessionLAN = 3.0474726
PrecessionObliquity = 0.00037707034
LAN = 5.3962403
LAN_MJD = 51544.5
SidRotOffset = 4.7915104
SidRotPeriod = 2360588.1
PrecessionPeriod = -6797.0263
Obliquity = 0.026917033
;SidRotPeriod (days): 27.321621
;SidRotPeriod (days - node to node): 27.212277
;Precession Period (years): -18.609244
;Obliquity (deg): 1.5422324
[COLOR=Red][B];RMS Error (deg): 0.042263816[/B][/COLOR]
3. Assumption of precession pole == ecliptic pole:
Code:
Moon
----
PrecessionLAN = 0
PrecessionObliquity = 0
LAN = 2.1711908
LAN_MJD = 51544.5
SidRotOffset = 4.7808432
SidRotPeriod = 2360588.1
PrecessionPeriod = -6799.3352
Obliquity = 0.026924576
;SidRotPeriod (days): 27.321621
;SidRotPeriod (days - node to node): 27.212314
;Precession Period (years): -18.615565
;Obliquity (deg): 1.5426646
[COLOR=Red][B];RMS Error (deg): 0.034188312[/B][/COLOR]
4. Using jarmonik's data:
Code:
Moon
----
PrecessionLAN = 0
PrecessionObliquity = 0
LAN = 2.181328
LAN_MJD = 51544.5
SidRotOffset = 4.770748
SidRotPeriod = 2360588.2
PrecessionPeriod = -6792.9076
Obliquity = 0.02694055
[B][COLOR=Red];RMS Error (deg): 0.03151955[/COLOR][/B]


---------- Post added at 17:33 ---------- Previous post was at 12:33 ----------

My best model for the martian precession has
PrecessionPeriod = -63188250,

which I derived from the IAU numbers, and agrees (approximately) with some other references I've found.
I get PrecessionPeriod = -63346658, when I make the assumption that Mars precesses about its orbit normal (I can't think of any physical reason why it wouldn't - same as Earth). 400 years is not much between friends, especially out of 173,000 or so :speakcool:
 
I get PrecessionPeriod = -63346658, when I make the assumption that Mars precesses about its orbit normal (I can't think of any physical reason why it wouldn't - same as Earth). 400 years is not much between friends, especially out of 173,000 or so :speakcool:

On further review, the number I gave for PrecessionPeriod (-63188250) was not derived from IAU data, but is the best published result (period = 173,000 years). So, your number would be more consistent with the IAU data, since your assumption about the precession being about the orbit normal is correct (the precession of Mars' rotation is due to the action of the Sun on the oblate Mars figure).

Regards
 
Updated data for Mars, SidRot data precision increased in accordance with precision given in IAU/IAG docs:
Code:
Mars
----
PrecessionLAN = 4.0050811
PrecessionObliquity = 0.032243695
LAN = 0.62105324
LAN_MJD = 51544.5
SidRotOffset = 5.469524816
SidRotPeriod = 88642.66435
PrecessionPeriod = -63346658
Obliquity = 0.43974159
;SidRotPeriod (days): 1.0259568
;SidRotPeriod (days - node to node): 1.0259567
;Precession Period (years): -173433.7
;Obliquity (deg): 25.195337
;Ecliptic Obliquity (deg): 26.717951
 
Here is Phobos and Deimos, churning them out like sausages now :P.
Code:
Phobos
------
PrecessionLAN = 4.5887315
PrecessionObliquity = 0.46604845
LAN = 2.2436597
LAN_MJD = 51544.5
SidRotOffset = 0.79970825
SidRotPeriod = 27553.835
PrecessionPeriod = -825.91847
Obliquity = 0.018846906
;SidRotPeriod (days): 0.31891012
;SidRotPeriod (days - node to node): 0.31878705
;Precession Period (years): -2.2612415
;Obliquity (deg): 1.0798482
;Ecliptic Obliquity (rad): 0.4545171
;Ecliptic LAN (rad): 4.6223284
;RMS Error (deg): 1.0173299

Deimos
------
PrecessionLAN = 4.5710171
PrecessionObliquity = 0.45879969
LAN = 0.24013303
LAN_MJD = 51544.5
SidRotOffset = 3.5745962
SidRotPeriod = 109074.88
PrecessionPeriod = -19833.996
Obliquity = 0.031112612
;SidRotPeriod (days): 1.2624408
;SidRotPeriod (days - node to node): 1.2623604
;Precession Period (years): -54.302523
;Obliquity (deg): 1.7826214
;Ecliptic Obliquity (rad): 0.48963607
;Ecliptic LAN (rad): 4.5870416
;RMS Error (deg): 0.19599449
Note the relatively high error of Orbiter's model compared to the IAU/IAG model. This is because Phobos has a relatively large short period nutation (not surprising, given its shape) and large t^2 term in its rotation (see attached graph showing the error vs time - a bit rough, I am new to gnuplot and there is also some aliasing due to the sample period). Deimos has smaller but still significant perturbations. The data for Phobos also matches up pretty well with the Orbiter .cfg data, and Deimos less so (but still in the right ball park). Both these were generated using the same technique as my Moon data case 1 above, so I am fairly confident of them.
 

Attachments

  • PhobosError.png
    PhobosError.png
    20.4 KB · Views: 10
I've been working on my own program that simultaneously computes IAU and Orbiter models, so that I can independently validate the models that are being put forward. I think it is working correctly now, and so I've put in tblaxland's Orbiter models for Mars, Phobos, and Deimos, and can report that they are all "accurate" models for those bodies.

Next: Io, Europa, Ganymede, and Callisto

Regards
 
Thanks for that, Chode. I'll move onto other bodies soon also. For now I am having a looking at the IAU SOFA library to see if I can use it to validate my proposed Earth cfg.
 
Back
Top