Relatively simple model that describe an important planetary process : tidal deformation.

What it does

The code simulates planetary tides for a system with any number of moons with variable masses, distances, frequencies.

How we built it

The whole code started from the Laplace tide equations, which we discretized and evolved with python.

Challenges we ran into

First off, we had problems debugging the code because the solver was a bit rushed, making hard to debug. Turns out the output speeds were inverted, which meant that, physically, nothing works!. While fixing that, we noticed the coordinate system we use (spherical) has a "built-in" singularity with our equation which makes convergence very difficult. We explored (and wasted time) on multiple avenues: Trying to set boundary condition using known symmetries (only applies to specific cases), multiple coordinates systems (only worked a bit on it on paper). This delayed the whole project.

Accomplishments that we're proud of

The final result we obtain is satisfactory considering the timeframe we had to make it work and the fact that no one was familiar with the equations used before this hackathon. Although it diverges, the physical behaviour is what is expected given the moon positions. The external gravitationnal potential formulation is very general and robust, could potentially be re-used at a later date. The plots are very beautiful.

What we learned

How to plot 3d spherical data into 2d projections, and correctly understand how to use the corresponding arrays. Using classes in python to clarify some parts of the code. And of course we learned a lot about the physics of tides, not only by attempting to solve them but also by trying to obtain an intuition for what their solutions should be.

What's next for TideCode

We'll try to find workaround for the coordinate singularity. It can be a problem in multiple systems. The data generated could then be used to train a neural net as we originally intended to do this hackathon.

Built With

Share this project: