Commit Graph

10 Commits

Author SHA1 Message Date
Don Cross
2fe8b8d8c0 Deleted log file original.txt 2021-11-12 19:44:56 -05:00
Don Cross
32eac849da Minor tweaks to the gravsim_test program. 2021-11-12 19:32:09 -05:00
Don Cross
ae73f20788 Removed test code to create gravsim.log file. 2021-11-12 19:21:11 -05:00
Don Cross
4e6cb282f5 Use original Pluto gravsim with finer time steps.
I'm getting much better accuracy sticking with my original
gravity simulator, just with smaller time increments, than
I was with the Runge-Kutta 4 method. The PlutoStateTable
gets a bit larger (51 state vectors instead of 41), but the
accuracy is so much higher.

Removed the Runge-Kutta code because I won't be going back to it.
2021-11-12 16:22:14 -05:00
Don Cross
813bbf1c8e Pluto gravity sim: refactor constants for sharing.
Reworked the Pluto gravity sim constants so they are defined
in one place: a new header file gravsim/pluto_gravsim.h.
Then the code generator writes the #defines to the C code, instead
of having two independent versions of the same constants.
I will continue down the road of having a single-source-of-truth
for these constants across all 4 supported languages.

Also, confusingly, I had one constant called PLUTO_DT in codegen.c
that was called PLUTO_TIME_STEP in astronomy.c. Also, astronomy.c
had a different constant PLUTO_DT that didn't mean the same thing.
I reworked the naming to be consistent in all places.

I already had a TopPosition() function that knows how to calculate
exact equatorial coordinates, so I eliminated the redundant logic
from gravsim_test.c
2021-11-12 15:14:56 -05:00
Don Cross
564d8d08b1 Improved GravSim accuracy using Runge-Kutta 4.
Significantly decreased the calculation error:
0.20 arcmin to 0.12 arcmin in my test metric.
However, the amount of extra work may not be
worth the accuracy, compared to just stepping more
increments between the segments, or simply making
more segments in the first place.

As they say in government-funded academia,
"more research is needed."
2021-11-11 21:05:33 -05:00
Don Cross
cc6a32bb98 Include the gravsim check in the unit tests.
I have gravsim_test.c to the point where it calculates a
standard deviation of error between TOP2013 and Astronomy Engine
for calculating the position of Pluto over 10 worst-case samples.
My baseline is now 0.205303 arcminutes of heliocentric position error.

For Runge-Kutta (or some other method) to be an improvement, it
has to beat that score without incurring significant extra work
or larger memory consumption.
2021-11-10 21:00:38 -05:00
Don Cross
1bebad6602 Compare Pluto calculations against original TOP2013 model.
I updated gravsim_test.c to calculate the Pluto model
at every (exact) state table entry, and every halfway point.
I compare it against (exact) TOP2013 calculations.
As expected, the errors alternate between 0 and nonzero.
2021-11-10 20:21:44 -05:00
Don Cross
52c7edb2b5 gravim: added more tests, fixed mistake in speed error calculation. 2021-11-10 06:16:51 -05:00
Don Cross
09d417bdee Added optional logging of Pluto state vectors and errors.
I'm trying to get a better feel for the amount of error
in my gravity simulator calculations for the movement of Pluto.
Added conditionally-compiled code to log state vectors calculated
in the forward and reverse time directions, along with the
exact endpoints that frame the interpolated values.
Also log errors measured between both directions.
There is a curious asymmetry in the first case I tried
(roughly the years 2000..2100), where the forward calculation
seems less accurate than the reverse calculation.
2021-11-10 05:56:54 -05:00