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

Uploaded CPython 3.13Windows x86-64

tidalpy-0.7.3-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.3-cp313-cp313-macosx_12_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.13macOS 12.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

tidalpy-0.7.3-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.3-cp312-cp312-macosx_12_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 12.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

tidalpy-0.7.3-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.3-cp311-cp311-macosx_12_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 12.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

tidalpy-0.7.3-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.3-cp310-cp310-macosx_12_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.10macOS 12.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

tidalpy-0.7.3-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.3-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.3.tar.gz.

File metadata

  • Download URL: tidalpy-0.7.3.tar.gz
  • Upload date:
  • Size: 385.7 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.3.tar.gz
Algorithm Hash digest
SHA256 cba04f96a7f87fb8bd514eb22891baa4a56f554b353c8794c237cbcd737fdb78
MD5 9873a13578c0a10408e355794ba48910
BLAKE2b-256 624d3401bd5875fe58530ef20dd6ff9acda986395bd7feb4b719e318a8a38d87

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tidalpy-0.7.3-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.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 360575a23987ac3d8470d814a44b1c15afa3eb61d09c729770175625cc5c98c0
MD5 4780c7d64a134fecfc6601f78e8c7247
BLAKE2b-256 42797b72921352991f730b267a5b5f6fe03cfa7b9b949927c670d1818092e417

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5b8d95b3abb9bea3067338cc00c454fff9f76732270863914e82915fd0221866
MD5 663de61d803c91a3a6bc4b100c2e513d
BLAKE2b-256 598f29c0a0eea247d8a88f905cb4796729c718ee46d5d599f2a1f045249c45c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.3-cp313-cp313-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 c4697e177290fff06fd5bbd70e499a1526190344eeba7f4a67046b4d647569fa
MD5 8d0261d3d4a1e9b99bd0132529ff1ad1
BLAKE2b-256 41cccafc5b2e1af4ba0337daf0689c53a0f8ce89b8e28fbbe9f34d5bed84a8a8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tidalpy-0.7.3-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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b070e2e036bff1f07270c3b0a13d75473c847945834ae4ebd9a2d59a5c5c2489
MD5 b289110942d19912c5c081a462e579a5
BLAKE2b-256 ed5cf3cb3a1c5d242313f072551166709eb55ba40257f709c6d4b09bfbee3895

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 70302b154c28e44f95c6418a9ed838af85aa7f504f388a5c242a77d749c50fa1
MD5 dfe688077662d503aa2142de5398ff79
BLAKE2b-256 1371a23ebfc927c49486c2662c366e99a39358dac96786a7477b84bf8de07e3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.3-cp312-cp312-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 4088c34072bd05dea92a9e9050a0d1177b02404c150d565ff76a52fb1bd95f7e
MD5 f6060d64d202419fa57d32562b5582ed
BLAKE2b-256 dd842d2616acc2bfb975a39a6c012a137b34fd878a6fa82eb5bd33c1a8a65e53

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tidalpy-0.7.3-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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b2ac8b9637a447551ef656b65ccd761cd533ee208831f57d6366afcb5cdd474b
MD5 dde8edc3d9a48763aacee242dd3b3b68
BLAKE2b-256 3a1e78c8c7bd0d6f558b99959044ef7b20b710b79f670dca774ed72fefc26a5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 44aa091c72a768ddb5945eb2412ab0285de16021692663e77cfc40a27ddce986
MD5 81107bdedfb8b05cb9bca32a39846a08
BLAKE2b-256 bfcc5c16e2d466ef63aa2f4760f3fdbed3e471c63bfcadaacd8b075e403f843c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.3-cp311-cp311-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 4484ee6f034f2f6442c8fec6c88c6bee67293dd21c1fac29aae1be94e250afe7
MD5 5a4af6e8006429cc85cc64a22df9e10f
BLAKE2b-256 fb38b58c8a68ba238a44d47372fd721f5d609166fff1faadaddadbcb916a59c0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tidalpy-0.7.3-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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2983a9779f581b10f0a91042e1af5a9ac977c01acd4dc55f387f2efa7dad612d
MD5 7485c6f20ffba537d3875a5251716f53
BLAKE2b-256 09a53cde8e99e6fe3b4c0edc724cd5d2ae6897535fe9aeb13e0ed33909ed8359

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f5d71d968409d80257ed9bf67b3eb24d8b6e2e50ebf80caa6c51dac645feb24b
MD5 d0e259f3edb9bb4de0069a96d7664e63
BLAKE2b-256 6f0eac93adc2d333dfbb5d84192d2ee96da19a9844c3af3cac14c4ebaa72b6aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.3-cp310-cp310-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 b93c2418f3aa5281092c9e0ec7bf0185c5eb45804df8d8fc3e9ad606c5599695
MD5 8208b4e8660fe68e89ee98cf63e7ee7e
BLAKE2b-256 1993741722f78c5c9046c12766f54617c2e2a3dff99fe21aa752553d29b02ea7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tidalpy-0.7.3-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.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 5935d720238aa35e9bb2e60c87eca5c70ad6476a4ce484dcc77a614a532f23ef
MD5 d41583f4406dc42e16e1a15be2ac2d43
BLAKE2b-256 894bb5a083c70037577551b7ab5d6cdcb4546faa24a031a8b9ec958c249004b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 50f8304459f01fed5caeefd35737e986e3f9262ed3550daf9de1890a9ae9d6f5
MD5 e80ff722ca5ed3caa498f5a85b4aba65
BLAKE2b-256 d2b5a211f4f0b22612341f2795f1d4536b4a807785e5ce5d50c78fb70da2debb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tidalpy-0.7.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 96b52db174530ee2254452b43b301d02030e54173dca90464c8544d23b638c2e
MD5 dbe1999ad0bb510a98552b9a19401042
BLAKE2b-256 b3812ceaf9aeebd31243291311f4a437ae985c6b6d73f220b823b0bab29a7865

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