Skip to content

Releases: jrenaud90/TidalPy

TidalPy v0.5.5

12 Nov 01:16
Compare
Choose a tag to compare

Changes

Fixes:

  • Fixed dependency compatibility issues.
  • Fixed incorrect function signature type for scipy's spherical_jn. SciPy v.1.14.X uses a new signature which is breaking on MacOS. Limiting to "SciPy<1.14" for now.

GitHub Tracked Changes:

Full Changelog: v0.5.4...v0.5.5

v0.5.4

30 Apr 03:12
8d127cc
Compare
Choose a tag to compare

Changes

Fixes:

  • Fixed RadialSolver frequency warning message for dynamic liquid layers not displaying for correct layer types.

Additions:

  • Added way to suppress warning messages in RadialSolver.
    • To turn this suppression on, pass warnings=False to RadialSolver.radial_solver.

GitHub Tracked Changes

  • FIX: Bug in warning system for RadialSovler by @jrenaud90 in #58

Full Changelog: v0.5.3...v0.5.4

TidalPy v0.5.3

27 Apr 01:53
9750436
Compare
Choose a tag to compare

Changes

Fixes:

  • RadialSolver: Fixed bug where solutions between liquid and solid layers were not propagating correctly.

Additions:

  • New Love number benchmarks for Earth provided by Nick Wagner in Benchmarks & Performance\RadialSolver\Earth Love Numbers.ipynb (Jupyter Notebook).

Changes:

  • Pre-allocated several cythonized arrays to nans to help with debugging.
  • Provided more error messages to improve user experience.
  • Cythonized non-dim function now takes in the planet's density and radius as variables to change.
  • Improved the Tobie and Roberts benchmarks for radial solver.

Other:

  • Updated to work with CyRK 0.8.7

GitHub Tracked Changes

Full Changelog: v0.5.2...v0.5.3

TidalPy v0.5.2

22 Feb 21:42
edab615
Compare
Choose a tag to compare

Changes

Documentation

  • Improved RadialSolver documentation regarding higher degree-l.
  • Added info about issues that can arise from using non C-continguous arrays in cythonized functions.

Fixes:

  • Added error message to RadialSolver.radial_solver if length of provided assumption tuples is not the same.
  • Fixed issue where non C-continguous arrays were allowed in cythonized functions that required them.

GitHub Tracked Changes

New Contributors

Full Changelog: v0.5.1...v0.5.2

TidalPy v0.5.1

14 Feb 06:43
44c7977
Compare
Choose a tag to compare

Changes

Removed Python 3.8 support due to issues with building SciPy.

GitHub Tracked Changes

Full Changelog: v0.5.0...v0.5.1

v0.5.0

14 Feb 06:20
1f4bf21
Compare
Choose a tag to compare

Changes

This version is likely to break code based on TidalPy v0.4.X and earlier

Cythonizing TidalPy

  • A major change starting with v0.5.0 is the switch from numba.njited functions to cython precompiled functions and
    extension classes. The reasons for doing this are numerous. This transition will be completed in stages
    with minor versions (v0.X.0) each bringing a new set of cythonized updates until all njited functions are retired.
  • For this version:
    • Converted TidalPy.radial_solver.radial_solver to cythonized TidalPy.RadialSolver.radial_solver.
      • The old radial solver method will be removed in TidalPy version 0.6.0.
    • Added new cython-based TidalPy.utilities.classes.base_x base cython extension class that other classes are built off of.
    • Converted TidalPy.rheology.complex_compliances.compliance_models to cythonized TidalPy.rheology.models.
      • Improved the new rheology methods to better handle extreme values of frequency and modulus.
      • The old rheology solvers will be removed in a future release of python.
    • Added several new cython-based helper functions in the utilities package.

Other Major Changes

  • Added support for Python 3.11 and 3.12. TidalPy now runs on Python 3.8--3.12.
    • Note that currently the Burnman package does not support 3.12 so that functionality is limited to python 3.8-3.11.
  • Removed support for solver_numba in the radial_solver module.
  • Removed some imports from main package and sub modules' __init__ to avoid slow load times.
  • Moved conversion tools from TidalPy.toolbox.conversions to TidalPy.utilities.conversions.
  • Changed setup files so that cython code can be compiled.
    • special - for high-performance, general, scientific functions.
  • Moved TidalPy configs to a standard user directory by default. The specific location will depend on the OS.
    • Default configs will be installed on the first import TidalPy call after installation.
      • These defaults are stored in the TidalPy.defaultc.py as a string which is copy and pasted to the new TidalPy_Configs.toml.
    • There is a new TidalPy.clear_data() function to delete all data stored in these locations. Data will be rebuilt the next time TidalPy is imported.
    • New TidalPy.set_config(config_path) to change the active configuration file used by TidalPy.
      • Note that TidalPy.reinit() should be called after changing the configurations.
    • New TidalPy.set_world_dir(world_dir_path) to change which directory to pull world configs from.
    • Moved away from the system of default.py configurations for sub modules. All default configs are stored in the same TidalPy_Config.toml
  • Shifted from json to toml files for world configs.
    • Store all world configs to a zip file for easier distribution.
  • TidalPy now requires:
    • CyRK>=0.8.6
    • Cython>=3.0.0
  • Moved BurnMan 3rd party dependence to a more dedicated Extending folder for future development.
  • To make TidalPy lighter weight we are starting to remove a lot of 3rd party packages.

Minor Changes and New Features

  • complex_compliance configurations are now stored in the top level rheology in all configs.
    • For example, in prior TidalPy versions you would need to change the complex compliance model by editing config['layers']['mantle']['rheology']['complex_compliance']['model'] = 'andrade'. Now this would be: config['layers']['mantle']['rheology']['model'] = 'andrade'.
  • Added unique frequency finder functions to the modes module.
  • Moved most of the type hints behind the typing.TYPE_CHECKING flag.
  • Moved non-critical files out of repository.
  • Created a new tides.heating module and moved the volumetric heating calculations there.
  • Expanded the performance suite to better track the radial_solver module.
  • Moved cache.py to top-level.
  • Turned off numba cacheing on several functions that may be used in the radial solver.
    • rheology
      • complex compliance functions
    • radial_solver.numerical
      • initial guess functions
      • interface functions
  • Converted radial_solver.numerical initial guess and interface functions output to np.ndarrays rather than numba lists.
  • Removed config_helper.py and the functions defined within.
  • New RadialSolver class now supports more than just boolean inputs.
    • Future proofing to allow for a greater variety of layer types.
  • Added exoplanet archive download functionality in TidalPy.utilities.exoplanets.

Bug Fixes

  • Fixed floating point comparison bug in multilayer_modes solver.
  • Fixed obliquity not being used issue in quick tides calculator.
  • Fixed issue in incorrect TidalPy version being loaded into the package.

Performance Improvements

  • Improved the performance of the stress and strain calculator by ~20%.
  • Cythonize Performance Increases:
    • New RadialSolver.radial_solver leads to a ~50x performance boost.
    • New cythonized rheology models are 500% faster for arrays; 40,000% faster for scalars (not a typo!)

GitHub Tracked Changes

Full Changelog: v0.4.1...v0.5.0

TidalPy v0.4.1

23 Feb 14:10
04cb994
Compare
Choose a tag to compare

Changes

GitHub Auto Generated Change Log

Full Changelog: v0.3.5.beta...v0.4.1

TidalPy v0.3.5-beta

07 Apr 15:46
8feda4d
Compare
Choose a tag to compare

What's Changed

Fixes issues introduced in 0.3.4

Full Changelog: v0.3.4-beta...v0.3.5.beta

TidalPy version 0.3.4

06 Apr 21:53
9444105
Compare
Choose a tag to compare

Beta release of TidalPy version 0.3.4

Major Changes (see changes.md for a more complete list of changes):
* Added TidalPy.modes.multilayer_modes.py module to offer simplified calculation of multilayer tidal
heating.
* Added GridPlot class to quickly make grid-like matplotlib figures.
Checkout TidalPy.utilities.graphics.grid_plot.py
* Added Cartopy dependence.
* Can now make cool projection maps! Added basic functionality to TidalPy.utilities.graphics.global_map.py.
* New jupyter notebooks to showcase map projects and GridPlot functionality.
* Improved performance on both mode and non-mode tidal potential functions by at least a factor of 3. If used
correctly these can be nearly 100x faster.
* Added a new obliquity version of the mode version tidal potential.
* Stress and strain relationship for multi-layer tides now allows for arbitrary rheology.
* Created a single multilayer solver to handle an arbitrary layer structure.
See TidalPy.tides.multilayer.numerical_int.solver.py
* Stress & Strain relationship now accounts for arbitrary rheology.
* Created a single multi-mode solver for multilayer problems. See TidalPy.tides.modes.multilayer_modes.py
* TidalPy now defaults to using the frequency dependent zeta versions of Andrade and Sundberg rheologies.
* This was done to avoid issues with real(complex_comp) at zero frequency which happens in multi mode
calculations.
* Added numba-safe version of multilayer calc

TidalPy v0.3.0 Beta

09 Jun 20:39
bf1f207
Compare
Choose a tag to compare
TidalPy v0.3.0 Beta Pre-release
Pre-release

Beta release of TidalPy version 0.3.0

Bugfixes will be committed to the master branch with version numbers 0.3.X (they will not be made into new release tag unless absolutely necessary). If you are downloading for the first time it is recommended that you clone the master branch to ensure you have all the latest bug fixes.

A new branch will be made for development on 0.4.0. New features and pull requests should be added to the dev branch not the master branch.

Major Changes (see changes.md for a more complete list of changes):
* Added the first iteration of a multilayer tidal calculator module in TidalPy.tides.multilayer this module provides basic functionality to calculate tidal dissipation in a semi-homogeneous, shell-based approach. This is more accurate than the pure homogeneous model used throughout the rest of TidalPy. The downside with the current version is that it does not allow for NSR or high eccentricity / obliquity. A future version will attempt to add in a more robust Tidal Potential equation which will allow for additional physics.
* Setup.py has been revamped as has the installation process. This is in prep to allow for TidalPy to become available on PyPI.
* Did away with most of the _array functions. Found a way for njit to compile a function to handle either arrays or floats.
* Left the self._func_array (in addition to self._func) in the model.py classes just in case we ever do need to define array functions in the future: all the infrastructure is still in place.
* Added a numba-safe Explicit Runge-Kutta integrator. This is fully wrapped in njit'd functions.
* On its own this can be 5--20 times faster than scipy.solve_ivp.
* This also allows the integration function to be used from within another njit'd function(s).
* This is still very experimental so please use caution and testing when using it.