Releases: jrenaud90/TidalPy
TidalPy v0.5.5
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
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
toRadialSolver.radial_solver
.
- To turn this suppression on, pass
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
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
- Updated NaN troublshooting in RadialSolver.md by @nlwagner in #52
- Radialsolver-benchmarking by @jrenaud90 in #56
- Add files via upload by @nlwagner in #54
- Ver0.5.3 by @jrenaud90 in #57
Full Changelog: v0.5.2...v0.5.3
TidalPy v0.5.2
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
- Update Using RadialSolver.md by @nlwagner in #49
- Ver 0.5.2 by @jrenaud90 in #51
New Contributors
Full Changelog: v0.5.1...v0.5.2
TidalPy v0.5.1
Changes
Removed Python 3.8 support due to issues with building SciPy.
GitHub Tracked Changes
- DEPS: Removed py 3.8 support by @jrenaud90 in #47
Full Changelog: v0.5.0...v0.5.1
v0.5.0
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 cythonizedTidalPy.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 cythonizedTidalPy.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.
- Converted
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 theradial_solver
module. - Removed some imports from main package and sub modules'
__init__
to avoid slow load times. - Moved conversion tools from
TidalPy.toolbox.conversions
toTidalPy.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 newTidalPy_Configs.toml
.
- These defaults are stored in the
- 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.
- Note that
- 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 sameTidalPy_Config.toml
- Default configs will be installed on the first
- Shifted from
json
totoml
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 dedicatedExtending
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 levelrheology
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'
.
- For example, in prior TidalPy versions you would need to change the complex compliance model by editing
- 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
- rheology
- 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!)
- New
GitHub Tracked Changes
- Fixing slow package load by @jrenaud90 in #38
- Cythonizing_radial_solver by @jrenaud90 in #39
- Changing-planet-configs by @jrenaud90 in #40
- TidalPy version 0.5.0 by @jrenaud90 in #46
Full Changelog: v0.4.1...v0.5.0
TidalPy v0.4.1
Changes
- Version 0.4.0 of TidalPy has brought a large number of changes to various models. Many of which will break old code. Please review the full change log for details: https://github.com/jrenaud90/TidalPy/blob/main/CHANGES.md
GitHub Auto Generated Change Log
- TidalPy v0.4.0 by @jrenaud90 in #36
- Moved
radial_solver
to a top level module. by @jrenaud90 in #37
Full Changelog: v0.3.5.beta...v0.4.1
TidalPy v0.3.5-beta
What's Changed
Fixes issues introduced in 0.3.4
- v0.3.5 by @jrenaud90 in #34
Full Changelog: v0.3.4-beta...v0.3.5.beta
TidalPy version 0.3.4
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
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.