Skip to main content

Tidal Dynamics and Thermal-Orbital Evolution Software Suite Implemented in Cython and Python

Project description

TidalPy

TidalPy Logo


TidalPy Documentation

Tidal Dynamics and Thermal-Orbital Evolution Toolkit Implemented in Cython and Python

TidalPy is an open source software suite that utilizes a semi-analytic approach to estimate tidal heating, spin-orbit resonances, tidal & loading Love numbers, and thermal evolution for rocky and icy worlds. It has been used to simulate the thermal-orbital evolution of moons within our Solar System as well as exoplanets beyond. TidalPy's RadialSolver package can accurately estimate the viscoelastic Love and Shida numbers for a multi-layered, rocky or icy world, including the effects of liquid layers, compressibility, dynamic tides, and advanced rheological models. This module has been used to study the tidal response of Mercury, Venus, Earth, our Moon, Mars, and much more.

Have any questions or suggestions? Feel free to leave an issue or send a message to TidalPy@gmail.com.

Overview

How to Install

Compatibility

TidalPy has been developed to work on most modern operating systems. We specifically test it on the latest versions of Ubuntu, Windows, and MacOS. We also pre-build binaries for these operating systems and provide them via PyPI or Conda-Forge. If a pre-built binary is not available for your operating system version then see details about building TidalPy from source.

  • Windows-Latest: Windows Tests
  • MacOS-Latest: MacOS Tests
  • Ubuntu-Latest: Ubuntu Tests

Basic Installation

Installing TidalPy is as simple as ensuring 64-bit Python 3.9+ is installed on your system and running from a terminal:

pip install TidalPy

Alternatively you can use conda to install TidalPy:

conda install -c conda-forge TidalPy

or

mamba install TidalPy

We recommend using a virtual environments (via a manager like uv or miniforge) when installing TidalPy.

Accessing Jupyter Notebooks

There are several demos provided with TidalPy that make use of Jupyter notebooks found in the /Demos/ folder of TidalPy's repository. In order to access these you will need to make sure you install Jupyter and a few related packages:

pip install ipympl ipython ipywidgets jupyter

or

conda install ipympl ipython ipywidgets jupyter

You can then clone TidalPy's GitHub repository,

git clone https://github.com/jrenaud90/TidalPy

to a local directory. Navigate to this directory and the Demos sub-directory then access the notebooks by using the command, jupyter notebook.

Cartopy

TidalPy offers the ability to make 2D surface projection plots using the cartopy package. In turn, cartopy relies on GEOS which is not a python package and must be installed outside of pip.

Installing Cartopy using conda

The easiest way to install cartopy is using a conda environment by,

conda install -c conda-forge cartopy

Installing Cartopy using pip

If you are not using a conda environment then you will need to find and install the GEOS binaries manually:

Windows: Follow instructions here On Ubuntu: sudo apt-get install libgeos-dev On MacOS: brew install geos

After GEOS is installed you can pip install the rest,

pip install pyproj shapely pyshp cartopy

Installation Troubleshooting

If you ran into a problem that is not listed below please submit an issue and we will work on addressing it!

Known Problems:

  • The setuptools package is required before TidalPy can be installed. Usually it is automatically installed, but if you are starting with a clean virtual environment it may not have been.
    • For conda: conda install setuptools
    • Or pip: pip install setuptools

Building TidalPy from Source

We automatically provide pre-built binaries for the latest version of MacOS, Ubuntu, and Windows via PyPI or Conda-Forge. If your OS version does not have pre-built binaries or if you are running into problems with the pre-builds, then you can build TidalPy from its source code.

To do so, you will need to make sure that your environment has access to a C and C++ compiler that supports C++20 standards, a recent version of Python, and has Cython 3.0+ installed.

PyPI Build from Source

Using the source code uploaded to PyPI by running,

python -m pip install TidalPy -v --no-binary TidalPy

GitHub Repo

Alternatively you can clone the latest version of the GitHub repo and build locally,

git clone https://www.GitHub.com/jrenaud90/TidalPy.git
python -m pip install . -v --no-binary TidalPy  # The . assumes you have navigated to the directory with `pyproject.toml`

This is also the approach you would take to build TidalPy if you plan to edit its code. See more details about developing TidalPy here.

Special consideration for MacOS

On MacOS, If you run into problems installing TidalPy then reinstall using the verbose flag (pip install -v .) to look at the installation log. If you see an error that looks like "clang: error: unsupported option '-fopenmp'" then you are likely using the default compiler or other compiler that does not support OpenMP. Read more about this issue here and the steps taken here. A fix for this issue is to use llvm's clang compiler. This can be done by doing the following in your terminal before installing TidalPy.

Note this error can also occur when installing "CyRK" a critical dependency of TidalPy. The fix is the same as below, just swap out "TidalPy" for "CyRK".

brew install llvm
brew install libomp

# If on ARM64 (Apple Silicon) then do:
export LDFLAGS="-L/opt/homebrew/opt/llvm/lib"
export CPPFLAGS="-I/opt/homebrew/opt/llvm/include"
export LDFLAGS="-L/opt/homebrew/opt/libomp/lib"
export CPPFLAGS="-I/opt/homebrew/opt/libomp/include"
export CC=/opt/homebrew/opt/llvm/bin/clang
export CXX=/opt/homebrew/opt/llvm/bin/clang++

# Otherwise change these directories to:
export LDFLAGS="-L/usr/local/opt/llvm/lib"
export CPPFLAGS="-I/usr/local/opt/llvm/include"
export LDFLAGS="-L/usr/local/opt/libomp/lib"
export CPPFLAGS="-I/usr/local/opt/libomp/include"
export CC=/usr/local/opt/llvm/bin/clang
export CXX=/usr/local/opt/llvm/bin/clang++

pip install CyRK --no-binary="CyRK"

TidalPy Versioning

TidalPy uses the major.minor.bugfix versioning scheme. In TidalPy's current state, we only promise to provide support for the latest version (as found on the GitHub release page). Therefore, older minor versions may not get critical patches (e.g., TidalPy 0.7.x will get patches where 0.6.x will not even if the patches are applicable to that earlier version). If you would like to see a bug fix back ported to an older version please open a issue.

In the future we hope to support multiple minor versions of TidalPy. At that time, all supported versions will be listed in this section.

Using TidalPy

Check out the Getting Started guide to learn about TidalPy's features. The Demos directory is another good resource to learn by looking at Jupyter notebooks that can teach you how to use TidalPy's features.

Contribute to TidalPy

TidalPy is in early alpha and there are lots of areas where it can improve! If you are interested in helping out, please check out the information in Documentation\Contribute.md.

Found a bug or have an idea for a new feature?

  • Go to TidalPy's Github page and click the "Issues" tab then make a new report.
    • If you ran into a bug please include a code snippet (in markdown: code is designated by Grave accents surrounding the text) that reproduces the error (please keep this snippet as concise as possible).
    • It is helpful to triage issues when they are made. If you think you know the severity of a bug or can provide any other at-a-glance context, consider adding a "label" (right-hand side of the github issue form) to the issue.

Citing TidalPy

TidalPy has been used in several studies already, and we encourage you to use it in yours. If you do, please cite the package by using the preferred citation found in the citation.cff. Currently, that is its Zenodo doi: 10.5281/zenodo.7017474.

We also would love to hear where TidalPy is being used! Please feel free to send us an email: TidalPy@gmail.com when a paper or presentation utilized TidalPy. Anyone is welcome to create forks or copies of TidalPy as long as their work references back to this page. License information can be found here.

@software{2022zndo...7017475R,
       author = {{Renaud}, Joe P.},
        title = "{TidalPy}",
         year = 2022,
        month = jan,
          eid = {10.5281/zenodo.7017474},
          doi = {10.5281/zenodo.7017474},
    publisher = {Zenodo},
       adsurl = {https://ui.adsabs.harvard.edu/abs/2022zndo...7017475R},
      adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

It is good practice to cite the specific version of TidalPy you are using. Major versions have their own DOI on Zenodo.

The science used in TidalPy is described in the following papers and software (with additional references therein):

Acknowledgements

TidalPy was partially developed with support from NASA Goddard Space Flight Center's Sellers Exoplanet Environments Collaboration (SEEC) and Geodesy ISFMs. TidalPy is partially based upon work supported by NASA under award number 80GSFC21M0002 and the Center for Research and Exploration in Space Science & Technology II (CRESST II) administered at the University of Maryland, College Park.

TidalPy has been improved by numerous contributors some of which you can find here.

TidalPy has benefited from work and conversations with the following:

  • Wade G. Henning (U. of Maryland, College Park / NASA GSFC)
  • Michael Efroimsky (U.S. Naval Observatory)
  • Michaela Walterová (Charles University)
  • Sander Goossens (NASA GSFC)
  • Marc Neveu (U. of Maryland, College Park / NASA GSFC)
  • Gael Cascioli (U. of Maryland, Baltimore County / NASA GSFC)
  • Nick Wagner (Brown University)

License and Copyright

Copyright 2025 by Joe P. Renaud. TidalPy is licensed under the Apache License, Version 2.0 (the "License"); you may not use this code except in compliance with the License. You may obtain a copy of the License at www.apache.org/licenses/LICENSE-2.0 or in this repository's LICENSE.md file. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" basis, without warranties or conditions of any kind, either express or implied. See the License for the specific language governing permissions and limitations under the License.

You are welcome to copy/fork TidalPy and make modifications assuming the following conditions are met:

  • Code repositories link back to TidalPy's original repository.
  • Any published research cites this code using the preferred citation found in the citation.cff file.

TidalPy's logo was originally designed by Ruhul Amin and modified by Joe P. Renaud.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tidalpy-0.7.4.tar.gz (385.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

tidalpy-0.7.4-cp313-cp313-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.13Windows x86-64

tidalpy-0.7.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (18.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

tidalpy-0.7.4-cp313-cp313-macosx_12_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.13macOS 12.0+ ARM64

tidalpy-0.7.4-cp312-cp312-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.12Windows x86-64

tidalpy-0.7.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (18.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

tidalpy-0.7.4-cp312-cp312-macosx_12_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 12.0+ ARM64

tidalpy-0.7.4-cp311-cp311-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.11Windows x86-64

tidalpy-0.7.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (18.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

tidalpy-0.7.4-cp311-cp311-macosx_12_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 12.0+ ARM64

tidalpy-0.7.4-cp310-cp310-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.10Windows x86-64

tidalpy-0.7.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (17.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

tidalpy-0.7.4-cp310-cp310-macosx_12_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.10macOS 12.0+ ARM64

tidalpy-0.7.4-cp39-cp39-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.9Windows x86-64

tidalpy-0.7.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (17.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

tidalpy-0.7.4-cp39-cp39-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file tidalpy-0.7.4.tar.gz.

File metadata

  • Download URL: tidalpy-0.7.4.tar.gz
  • Upload date:
  • Size: 385.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tidalpy-0.7.4.tar.gz
Algorithm Hash digest
SHA256 e50d8af5186a566beeffbab764a9148159b5eed08b4d1391377ab5a63aad4de4
MD5 efa326104bc3258e3b5d3550e8607349
BLAKE2b-256 a917edfe62e30105bbe9caa0784d3115a5cae80bf9b0fe81621e739d0039fcdd

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: tidalpy-0.7.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tidalpy-0.7.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c767278ee72474d0e57dfd592b4b368dd080f07a2688d618c2df8e442732a3d5
MD5 83d81985c7bd72ade8a450079b21b695
BLAKE2b-256 449ea97ac9d6135f417df825107aa90d33240bf557ba8ed9e471ca602777a7cc

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tidalpy-0.7.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 98d66e9cbf9bbeec36acf9b7087140c894a21e531a10eefac4abf360e41f3137
MD5 12d69c0f836f59818bd774e92321cd5c
BLAKE2b-256 4ea3cce212ef327e6464333a3811b86524f537e02e729f5ac576bb2eaddaf56f

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp313-cp313-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for tidalpy-0.7.4-cp313-cp313-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 b2f93bbdcbbed68ecd1be8096a3d4aa70ba32ae7219826ce0d99419906617b87
MD5 d2e59b984a71c02620eb08cefa71d837
BLAKE2b-256 11772f92bb0e7415f6b8acad57ebeeb3f0f0ba9334b908e11160ce82b58cc1c3

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: tidalpy-0.7.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tidalpy-0.7.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 15bac7cab1aa642b0c2df7bb17d858b03441ca91fba5ac1aa85d590b743f5c7b
MD5 6972b7cc6bfc6c18c4da9c3e81ce9f7d
BLAKE2b-256 f92e847f857c31112e96d5590c6e4313fb8d52660697a577dcaf73226177989f

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tidalpy-0.7.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 606f2ebc61cc7fe23743be89bf6e2f2c6c5480b983e6d561c713bf1e176b17b0
MD5 62d2ffdbe142260edf3d70f51575971e
BLAKE2b-256 7a72cf3b9cc9687200ca467b0c5f0427c0f4738285f7200e9ebc1bebfbd2d165

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp312-cp312-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for tidalpy-0.7.4-cp312-cp312-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 a98816592c23d2c90e526c8afaf2b3c8bee261847435dcecc5033f23250b48a8
MD5 43413f69b3dddc0a19a69486c970a9c6
BLAKE2b-256 85ff5b153cc9acbd56e82e54532eb8fb73d7e954fc0dcd9f568f00bdc66ab543

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: tidalpy-0.7.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tidalpy-0.7.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 01b3c5a061fdc4755865e69a848a8cdebf63cd07e66d4d2f685210d3318b7632
MD5 1cbd1419e3167f86819a2ea46540f75a
BLAKE2b-256 2ffaab07f157182e8056d5fd16b0fdedd38d8772375d8a98360a6d382cc96454

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tidalpy-0.7.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5c9c9c7b23e724729fbb6a12faf12ebf55cb2cfab891bbfc8b06308b2a51e416
MD5 27ab9754b18ab6541e6c2adf8299e4ef
BLAKE2b-256 a193313f8bcfeaf4e4fef50ea2f55b761bec2cc505ebe12e4c9cd04f3e68f79d

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp311-cp311-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for tidalpy-0.7.4-cp311-cp311-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 0bb02a30eb1b1293b8c384a7af7b4f01e805dc3204ca407222223188e6878c15
MD5 a61304d0b169bdda65f3af57b3956a19
BLAKE2b-256 dbae63989cc69d125c2d177d8dddd86f11684b426b4a01d606b924fe40033bfb

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: tidalpy-0.7.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tidalpy-0.7.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 610ecb3ebb7be17c0aad72e7bba1714e99eaa63534af6bba920c46edf04e9a25
MD5 2ae41b4fd47c8cd4f82922413565cce6
BLAKE2b-256 5195d5f19786bafdbd7a8df1ca919459ac9379c91b4fc56a069bb068366fcd7b

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tidalpy-0.7.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2bac6842d19b32af8ed8e2467a40cbf5f6b196c1330d72f8a34eff0f7fce352f
MD5 e926b5f63b15f6a37f365bd6e24a0997
BLAKE2b-256 4c51bf0a4376b3d0ffe64fa392c99dadc404ee12259e742e180c9f99de854453

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp310-cp310-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for tidalpy-0.7.4-cp310-cp310-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 18311e2f52032bb65d437ffcfa438df68f6ccdd0a01b796996e2ac97c6372f81
MD5 b738460ebe48456841d0621feaf55701
BLAKE2b-256 13034e4c2a1fe9ab1b4de3d69ec7afebae53d381c06b0ac8b782764e86ce34e4

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: tidalpy-0.7.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tidalpy-0.7.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ea3109530d740fb40869ee13f0c8f0afb6d39657af854bd785128b19aa1d1645
MD5 a604761953009789e2544aefb8cb5844
BLAKE2b-256 4ff707feaaae1fcfb30a965f48bc37e15f35123b02642fa71a5b38e23ecd9a62

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tidalpy-0.7.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fd3684b943f456fb21c9a336890de8bedf40ab6729c5bee81165da4a3ba7df21
MD5 15deb7bef550d55c867f07a3e268b205
BLAKE2b-256 52189fd37eb292657330f24b24d3cf66691ae60828a476bd3dda2960283ecc37

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.4-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tidalpy-0.7.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ea1a5eb7c6b6b41b843549207852a49f4489daea99d354ab0f02280ab39a04fa
MD5 a7c711841c5894c7abfff07aa8105d4c
BLAKE2b-256 21827d8e2116ff9a911de4f49fec41cded41a167fa6bdb7df40a1623892a6c63

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page