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.1.tar.gz (385.4 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.1-cp313-cp313-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.13Windows x86-64

tidalpy-0.7.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (16.7 MB view details)

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

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

Uploaded CPython 3.13macOS 12.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

tidalpy-0.7.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (16.8 MB view details)

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

tidalpy-0.7.1-cp312-cp312-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

tidalpy-0.7.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (16.7 MB view details)

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

tidalpy-0.7.1-cp311-cp311-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

tidalpy-0.7.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (16.2 MB view details)

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

tidalpy-0.7.1-cp310-cp310-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

tidalpy-0.7.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (16.1 MB view details)

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

tidalpy-0.7.1-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.1.tar.gz.

File metadata

  • Download URL: tidalpy-0.7.1.tar.gz
  • Upload date:
  • Size: 385.4 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.1.tar.gz
Algorithm Hash digest
SHA256 295445b2665d30aa4aea07642796de38f9f73cc6ff4f20c35997134f24877148
MD5 010510851b94ee2c5106e9362dc38d39
BLAKE2b-256 44ca467889313bc7ee8afd8cad4a2d3795d9567a423328079a0d96d4e6b7f17a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tidalpy-0.7.1-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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ce80fae4e365165a49bdbed873bdd64df4d49a5f2385661115d52ca9368bc9e1
MD5 62e2725dcf93867b390f9000dc30bb26
BLAKE2b-256 0d43802cbaf4a95968b006c53386c6e6a06ee209da5ad359b34fdfe1d12c14e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f6be61f72296922bb59fb379e95c11fa1de2593811755688c32578a7b73343e3
MD5 9f1bceb8031fd371681e5fc1f51903d5
BLAKE2b-256 870d6d7a4db926f0cd2467b4af46475b074ce842216e749f0d7254c8358632db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.1-cp313-cp313-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 6215084e0409de28260ad65f2a658122742a86befeb5d65056d50eac9b138df1
MD5 fec7d9ef59d29b387eab7b8acd07a2d5
BLAKE2b-256 c36ec0ccc4e741e8bdb9dfb3ead709e1443f6b3adb65cf951329f4d022eca365

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tidalpy-0.7.1-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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5b097689ee222720444d9c49d387ec615965048cf2d78ba251fa246ce8e78b91
MD5 a25745648e7b0ebdc9262961e2225a8a
BLAKE2b-256 181b73140dc9eac715c4945dd8e9730157adae4f608fc51fc84c061ee051abbd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a966efeda78f215730206425b131630b2f9ca0d145e92b047f98a1b8874d654d
MD5 03986304f249fdbd68ce832971c75f08
BLAKE2b-256 5486a221f18e8db940c2758df2378878b39af8ab932d4f5846e1bf69bff932cf

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tidalpy-0.7.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 06207a2efb18b0e4ed63a89c5754b47f8d82769b46f9a2e2d9d8de92d656c24e
MD5 d88e2c6ac1849580a563bb5ff78fa58d
BLAKE2b-256 3e208b7349d25cd3f634e10fe23d17b2beb681abd4ae82e158eccce3d9cb78a8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tidalpy-0.7.1-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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8d39868461a954022ee0e5656d95d6b9330f5a7a094a6090fc6e2cdd8454f5be
MD5 a2184d7621784666b38dca03282fdcfd
BLAKE2b-256 09553b1182de42508db2818a3b46eee50a185b086e4baebfcd7c55f0115c8c7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 934d157b44585ba38f491029ec4c4884782253ce134199739f7b4d44d969cfb9
MD5 2c3c0eb2b930a22ef0bee5a8398db5d3
BLAKE2b-256 d4e0ce64d226d82ab60556ae35dc1a664830f1468d6ddf81880907c777e955cb

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tidalpy-0.7.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 83ed47be3ae32925583f0726762e3af47cea99295240c858bd3f4a0dd6638600
MD5 3c9486dd7438ae28c314a3dd03555daf
BLAKE2b-256 69aff0e6078195116d219d9095efb228ab09128efaab8376eea2dc3d4a75290e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tidalpy-0.7.1-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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3cbcb49e4a9aedcc4aa50c13be0e1b12f1e4e51cb4b7e3a384e6a77263e56db7
MD5 ad32419bdead880bbae22b03f6ccfad9
BLAKE2b-256 773807e68ff238f2aa6ebfd5624f02c41e667834dfabad80dd5c207175752271

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d4fce7c6988cbbd27e23effa897af9477bf3e9e8c7cc9e4d4202580e3df50ab2
MD5 b00a2be636323150950af46ee7a9ae2f
BLAKE2b-256 9c3707a395eaf6c585e481dd5b2df44edbc54571edb8a05879ec13aebefd4696

See more details on using hashes here.

File details

Details for the file tidalpy-0.7.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tidalpy-0.7.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9a130ff8c0a6e49afc21580a7f682978214bb53990826278b60bceaeb7c134fb
MD5 7a741d65ce7b9f08b00101615015d7cc
BLAKE2b-256 cd0cbc7bd3deed393b633b97fad2009be6df5d31c4f55c7d47d1e9b318f50133

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tidalpy-0.7.1-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.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b2bf7fef3e3cd404ce28995fb69cf4599ff2a002af9d7c3cf9e4233498e43a42
MD5 9d14449b9266b02e956f8f78e23b21f9
BLAKE2b-256 8499c2c588c8d7cbf2624de157bc2874c6f1758978429d2598435c4f312e40fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9ce7805aa1ac15a2e9c4c76e118595e613949bc9ee4cf23d2536f4f49244de4c
MD5 657a4070da677c8835fef037ba591ed6
BLAKE2b-256 de3772317fda13673cd296fd9ea1c1f67f3fd8a6b1730d2c1f0ad8f696e1e1ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7aec7a43c43ce877ffc1b0c3f8aed533ce9ca889648c1c662afbb72f94ab918
MD5 ff565a8ad461829894f3d46d5b0e26ad
BLAKE2b-256 7c824bf1a4905e1a039b4c2e1db3cede2bfb49e393c3ad32d79b702bd0d9ea84

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