PySDM v1.1
TOP5:
- major refactor of backend storage classes (including introduction of Index, PairIndicator and PairwiseStorage)
- support for calculating moments on GPU with parallel sums using atomicAdd (thanks @tehAgitto)
- fakeThrust machinery for testing GPU code on CPU (incl. C to Python translation) and the backends fixture for pytests (kudos @piotrbartman!)
- PySDM_tutorials folder with minimal usage examples for the "box" and the "parcel" environments depicting how to use PySDM from Python, Matlab and Julia + minimal example for the "kinematic_2d" environment in Python
- initialisation logic refactored and moved to init_attributes() methods in environments
Other news:
- added continuous integration scripts for Github Actions (Windows, macOS, Linux) and Appveyor (32-bit and 64-bit Windows jobs)
- support for switching floating point format on GPU backend, fixed int overflow issues in Thrust C code
- introducing alias backend names: CPU=Numba and GPU=ThrustRTC
- CUDA detection code with hints for Colab users
- Bartman et al. 2021 example with animation generated from netCDF file
- fixed tolerance handling in bisection + adjusted default tolerances for condensation
- switched from mendeleev to molmass package as dependency for physical constants
- setup.py file for installation with pip
- removed dependency on mpmath (mpmath.besseli -> scipy.special.ive)
- relocation of all product classes into PySDM/products
- renamed ICMW_2012_case_1 to Arabas_et_al_2015_Figs_8_9
- added
widgets
andtemporary_file
in PySDM_examples/utils including helper logic for downloading files from Colab - fixed ipywidgets no-icons problem on Colab ("display(HTML(...))" with in widgets/init.py)
- renamed all Setup classes to Settings (not to have multiple setup.py files which puzzled Dependabot)
- work in progress towards cell-wise adaptivity for coalescence (still guarded with not-implemented exception)
- new products: CollisionRate, CollisionRateDeficit, SurfacePrecipitation
- use "-We" flag for python in CI scripts to trigger error on warnings (what triggered numerous cleanups)
- switch from TRAVIS to CI env var whenever checking for continuous integration environment
- README and notebook header enhancements (incl. Colab and mybinder badges in notebook headers)
- more metadata in netCDF output
- moved timing logic from stats.py into products
- renamed State to Particles
- simplified inheritance in environments
- AmbientThermodynamics dynamic
- more parrallel=True/prange loops in numba backend
- automatic initial spectrum range by specifying sampling region with percentiles
- adapted EulerianAdvection to new PyMPDATA API (MPyDATA->PyMPDATA, advectee, advector)
- enforcing stateless backends by preventing instantiation with an exception in init