Skip to content

Releases: open-atmos/PySDM

PySDM v1.6

06 Sep 06:00
b9a857a
Compare
Choose a tag to compare
  • new example based on Lowe et al. 2019 Nature Comm. paper on surface-active organics - kudos @claresinger and @rxward!
  • kappa (times dry volume) as particle attribute, also optionally dry organic volume
  • backend routines, new products, initialisation methods (spectro_glacial_sampling) and basic tests for upcoming immersion freezing dynamic
  • VTK exporter metadata aligned to properly overlay netCDF output in Paraview
  • 2D kinematic environment GUI improvements and major code cleanup
  • UniformRandom spectral sampling
  • cleanups, fixes, new tests (r_wet_init, condensation diagnotics, moments, ...)

PySDM v1.5

13 Jul 01:36
5a62ffc
Compare
Choose a tag to compare

Maintenance release with git package URLs removed from setup.py (possible as we are now on pypi.org).
Also: performance-oriented refactors around moments and moment products (kudos @piotrbartman!)

PySDM v1.4

21 Jun 20:58
83649d5
Compare
Choose a tag to compare

TOP 5:

  • condensation on GPU (and required updates to FakeThrust, e.g. extract_struct_defs()); parcel and 1d-kinematic examples work now OK on both CPU and GPU; kudos to @piotrbartman

  • numerous cleanups and fixes in aqueous chemistry code, incl. rewrite of pH handling (HydrogenIonConcentration attribute), options to calculate both volume-weighted and number-weighted pH, calculation of dry radius based on actual amounts of chemical compounds; several figures from Kreidenweis et al. 2003 and Jaruga and Pawlowska 2018 reproduced successfully; kudos to @trontrytel

  • VTK exporter for attributes (files readily usable with Paraview for visualisation of particle attributes); kudos to @abulenok

  • brand new PySDM.physics infrastructure enabling common physics code for CPU and GPU backends (c_inline) and enabling user-facing control over the choice of physical formulae (e.g., condensation solver coordinate, saturation vapour pressure approximation, temperature dependence in diffusion coefficients, etc), JIT options and random seed through the Formulae.__init__() arguments; backend are now instantiated by the Builder;

  • Julia and Matlab (in addition to Python) example code in the README file (box coalescence & parcel condensation).

Other news:

  • deployment of pdoc-generated API manual to GitHub pages (https://atmos-cloud-sim-uj.github.io/PySDM/);
  • multi-threaded operation for moment calculation on CPU (using atomic_* functions from github.com/KatanaGraph/katana)
  • surface precipitation calculations on GPU
  • numerous fixes in GPU backend routines, including gently handling zero-length For launches
  • replaced bisection with TOMS-748 in the Numba backend (for r_wet_init, condensation implicit Euler and pH calculation)
  • thread-safe handling of "success" checks within condensation solver
  • simplification of the BDF code (test helper for validation condensation solver)
  • running Julia and Matlab examples on GitHub Actions
  • products: removed range and scale fields (now only defined in the ICMW example)
  • many more tests work on GPU now (displacement, condensation, ...)
  • widget freezer in Shima_et_al_2009 example
  • cleanups in docstrings

PySDM v1.3

06 Apr 14:09
46c13df
Compare
Choose a tag to compare

TOP 5:

  • aqueous chemistry dynamic draft with two new examples, kudos @Golui & @trontrytel!
    (new examples, WIP: Kreidenweis_et_al_2003 & Jaruga_and_Pawlowska_2018)
  • moving examples to a separate repo, making them an installable package
    (https://github.com/atmos-cloud-sim-uj/PySDM-examples)
  • dropping dep on molmass in favour of chempy (used by the new dynamic)
  • notebook execution moved from Travis to Github Actions (using pytest instead of bash script)
  • activation, deactivation and ripening counters (and relevant products)

Other news:

  • notebook header cleanup (just pip install PySDM_examples for Colab)
  • swithing to newer Jupyter Lab interface in mybinder.org badge links
  • cleanup around coalsecence timestep adaptivity
  • new products: TotalConcentration, ParcelDisplacement, Time, CloudDropletEffectiveRadius, PeakSupersaturation, ActivatingRate, DeactivatingRate, RipeningRate, TotalDryMassMixingRatio, DynamicWallTime, AqueousMassSpectrum, Concentration, pH
  • improved in-cloud hydrostatic profile integration + tests
  • removed intensive attribute logic from coalescence; added proper handling within IntensiveAttribute class
  • using @strict decorator for Settings classes (pystrict package)
  • added cron-schedulled builds to GA
  • added "pip -e" installation into continuous integration workflows
  • dropped Python 3.6 builds, introduced 3.9
  • fixed attr iteration in Thrust coalescence (chemistry first to use it)
  • dynamic/static schedule parameters for condensation
  • moved Matlab examples to a separate repo (PySDM_examples.m)
  • moved Julia examples to a separate repo (PySDM_examples.jl)
  • proper seed passing for initialisation in ThrustRTC.Random
  • checking README code with pytest using exdown

PySDM v1.2

16 Feb 11:13
244a8de
Compare
Choose a tag to compare

TOP 5:

  • new adaptivity controls for SDM coalescence (kudos @piotrbartman!)
  • new smart scheduling for parallel execution in multi-cell adaptive coalescence (for both GPU and CPU)
  • new environment: kinematic_1D
  • new example based on Shipway & Hill 2012 using PyMPDATA 1D advection
  • major refactors around storage logic and coalescence-related backend methods

Other news:

  • numerous fixes to support 1D simulations
  • several physics formulae residing in environment code moved to physics
  • new products: CoalescenceTimestepMean, CoalescenceTimestepMin, WaterMixingRatio
  • support for atomicMin() in FakeThrustRTC
  • test_todos_annotated.py - checking if all TODOs in the code have a valid GitHub issue number
  • major cleanups (incl. removal of numerous obsolete backend tests)
  • new tests: adaptive coalescence, new example

PySDM v1.1

12 Jan 23:18
265aaa7
Compare
Choose a tag to compare

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 and temporary_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

PySDM v1.0

26 Aug 19:00
6450351
Compare
Choose a tag to compare

Initial release accompanying Piotr Bartman's MSc thesis and featuring:

  • coalescence with adaptive time step (CPU, GPU)
  • condensation with adaptive time step (CPU)