https://github.com/open-atmos/PySDM

Pythonic particle-based (super-droplet) warm-rain/aqueous-chemistry cloud microphysics package with box, parcel & 1D/2D prescribed-flow examples in Python, Julia and Matlab

GPL-3.0 License

Downloads
10.7K
Stars
45
Committers
27

Bot releases are visible (Hide)

https://github.com/open-atmos/PySDM - PySDM v2.27

Published by slayoo about 1 year ago

  • option to use a non-constant timescale in the relaxed velocity dynamic (#1114) - @bradybhalla
https://github.com/open-atmos/PySDM - PySDM v2.26

Published by slayoo about 1 year ago

  • breakup function renaming withing backend code (#1126) - @abulenok
  • phasing out "q" var naming in favour of "water_vapour_mixing_ratio", etc (#1131)
  • updates to the Grabowski & Pawlowska 2023 example: condensation tolerance, ripening rate (#1129) - @AgnieszkaMakulska
  • cleaning up code that triggered redefined-outer-name pylint warning in pytest fixtures and notebook-embedded function definitions (#1133)
  • ensuring all classes are accessible after importing only the main PySDM package (#1135)
https://github.com/open-atmos/PySDM - PySDM v2.25

Published by slayoo about 1 year ago

  • new example notebooks and smoke tests covering complete set of figures from Grabowski & Pawlowska 2023
  • new product base class: _ActivationFilteredProduct
  • new products based on the above: ActivatedParticleConcentration, ActivatedParticleSpecificConcentration, ActivatedMeanRadius
  • new size-spectral products: MeanVolumeRadius, AreaStandardDeviation, RadiusStandardDeviation, VolumeStandardDeviation
  • new attribute: EquilibriumSupersaturation
  • cleanups in Yang_et_al_2018 example (incl. using the above new products instead of manually computing the activation-filtered quantities)

kudos @AgnieszkaMakulska!

https://github.com/open-atmos/PySDM - PySDM v2.24

Published by slayoo about 1 year ago

  • switching from "n" to "multiplicity" for attribute key (#1123)
  • improving reporting of filenames in pytest example test suites (#1121)
https://github.com/open-atmos/PySDM - PySDM v2.23

Published by slayoo about 1 year ago

  • linear (instead of constant) density/pressure profile for condensation in parcel environment (kudos @mikhailmints)
  • updates in immersion freezing example to match arXiv-uploaded figures
  • using the CI env var to trigger FakeThrust (thus making it easier to locally reproduce CI behaviour)
  • renumbered figured in de Jong et al. breakup example to match final paper
  • new tests (codecov now reports 80%!), code cleanups
https://github.com/open-atmos/PySDM - PySDM v2.22

Published by slayoo about 1 year ago

  • RelaxedVelocity dynamic (allowing for relaxation to terminal speeds) and relative fall velocity attribute refactor
  • mermaid diagrams in README depicting PySDM submodule organisation and what's being passed where in the hello-world example

thanks to @bradybhalla and @edejong-caltech!

https://github.com/open-atmos/PySDM - PySDM v2.21

Published by slayoo over 1 year ago

  • PySDM-examples repo contents moved into PySDM repo (retaining separate PyPI packages)
  • introducing test suites to shorten time-to-completion of CI runs
  • switching from BDF to LSODA SciPy solver for condensation tests
  • speeding up super-droplet count product
  • using devops_tests in CI to share common test code across open-atmos projects
  • more test cases added for test_n_breakups
  • clarified literature references (incl. class dependency structure) in latent heat, diffusion kinetics and diffusion thermics formulae

thanks @claresinger, @abulenok and @AgnieszkaMakulska for contributions, reviews and issue reports.

https://github.com/open-atmos/PySDM - PySDM v2.20

Published by edejong-caltech over 1 year ago

  • updated multi-step breakup algorithm (kudos @abulenok & @edejong-caltech)
https://github.com/open-atmos/PySDM - PySDM v2.19

Published by slayoo over 1 year ago

  • Fixes to Straub fragmentation function and sampling methods
  • addition of (draft of) LowList1982 fragmentation function and coalescence efficiency

kudos @edejong-caltech, thanks @abulenok for reviews and help!

https://github.com/open-atmos/PySDM - PySDM v2.18

Published by slayoo over 1 year ago

  • breakup internals fixes, refactors and cleanups - kudos @edejong-caltech & @abulenok
  • smoke tests comparing against analytic solution of SCE with breakup terms (Srivastava 1982) - kudos @abulenok
  • added ConstantSize breakup fragmentation function
https://github.com/open-atmos/PySDM - PySDM v2.17

Published by slayoo over 1 year ago

  • making spatial, spectral and spectro-glacial sampling reproducible (obeying seed settings in Formulae)
  • replace uses of debug-intended (and slow) __setitem__ (e.g., within frag functions) with newly introduced fill() Storage method
  • remove unused fields (vmax and x_plus_y) from AlwaysN frag fun
  • enabling --durations reports in pytest logs
  • CI workflows cleanups (grouping readme-snippets jobs, renaming)
https://github.com/open-atmos/PySDM - PySDM v2.16

Published by slayoo over 1 year ago

  • enabling breakup smoke tests on GPU - kudos @abulenok!
  • reflecting github org change in readme, docstrings, etc
  • JOSS v2 paper updates (@claresinger & @edejong-caltech)
  • minor code compatibility fixes for GPU
  • minor collision code refactor: move cut_working_length call into adaptivity loop (thanks @piotrbartman)
  • added zenodo-json-checking CI workflow
  • added asserts for test_trickier_formula_vectorised (thanks @douglowe for reporting it)
  • instantaneous ice melting support (as in Shima et al. 2020) as an option for Freezing dynamic (disabled by default)
https://github.com/open-atmos/PySDM - PySDM v2.15

Published by slayoo almost 2 years ago

  • major updates in collision methods (mostly GPU support for breakup, but also CPU refactors and cleanups & improved test coverage) - kudos @abulenok!
  • numerous updates to FakeThrustRTC to support the above - kudos @abulenok
  • cleanups and docstrings in Formulae-related code - kudos @abulenok
  • clarification (significant) in displacement methods arg names (omega -> position_in_cell) - kudos @piotrbartman
  • fragmentation functions moved (partially) into physics submodule
  • introducing ConcentrationProduct base class supporting standard-temperature-and-pressure (STP) normalisation
  • Multiplicities::MAX_VALUE and unit test (+usage in breakup dynamics)
  • .zenodo.json file added to streamline Zenodo metadata provision
https://github.com/open-atmos/PySDM - PySDM v2.14

Published by slayoo almost 2 years ago

  • fragmentation functions for GPU backend (@abulenok)
  • implement flag_zero_multiplicity on GPU backend within a Commons struct (@abulenok)
  • new pair and storage methods for GPU: min_pair, multiply_pair and divide_if_not_zero (@abulenok)
  • made ABIFM immersion freezing logic employ supersaturation constraint (to be consistent with analogous condition in INAS logic)
  • breakup algorithm: fix an issue with zero multiplicities (introduced max(round(nj), 1)) (@edejong-caltech)
  • shift from per-gridbox to per-kg units in rate product (@edejong-caltech)
  • smoke test for Bieli et al. example (@edejong-caltech)
  • make CPU find_pairs correctly handle the length argument (@abulenok)
  • added Python 3.10 to CI runs
  • added smoke tests with 0D simulations covering breakup (upcoming deJong et al. paper)
https://github.com/open-atmos/PySDM - PySDM v2.13

Published by slayoo almost 2 years ago

  • smoke test comparing dry/wet equilibrium calculation against PyPartMC (thanks @zdaq12)
  • avoiding divide-by-zero warnings in EffectiveRadius product
  • fix physical unit in size-spectrum products (thanks @sajjadazimi)
  • better array-valued argument handling in Formulae methods using numba.vectorize (thanks @claresinger)
  • new method: Builder::replace_dynamic() (@edejong-caltech)
  • handling NVRTC_PATH env var to point ThrustRTC to non-standard location of nVidia libs (@abulenok)
  • new backend methods: min_pair, divide_if_not_zero (@edejong-caltech)
  • GPU support for freezing
  • 3D displacement incl. GPU support (@abulenok)
  • Straub fragmentation function (@edejong-caltech)
  • breakup algorithm improvements incl. reworked limiter logic, fragment_size instead of min_volume, fragmentation function updates (@edejong-caltech)
  • backends: fixed __init__ calls in multiple-inheritance contexts
  • FakeThrust fixes to better match ThrustRTC API (@abulenok)
  • make formulae available at attribute mapper scope so request_attribute can be called without constraints
  • storage, attribute, mesh common code: improved test coverage, cleanups, docstrings (@abulenok!)
  • multi-stage Github Actions workflow (pylint, no-numba unit tests, etc first, only then run all the tests
  • updates to make the code clean with newer versions of pylint
  • new tests for displacement, freezing, breakup, mesh, builder, formulae and storage logic
https://github.com/open-atmos/PySDM - PySDM v2.12

Published by slayoo about 2 years ago

  • major updates in breakup algorithmics (no more while loop, fixes) and test coverage - thanks @edejong-caltech!
  • new surface-tension model tests + code fixes and cleanups - thanks @claresinger
  • new product: averaged terminal velocity - thanks @sajjadazimi
  • new freezing-related products: IceNucleiConcentration, FrozenParticleConcentration
  • new attribute: WetToCriticalVolumeRatio
  • added Fierce diagrams as a test for differences between full and linearised kappa-Koehler formulae - thanks @nriemer for hint!
https://github.com/open-atmos/PySDM - PySDM v2.11

Published by slayoo about 2 years ago

  • fixing version indicators for dependencies in pypi.org-published files (regression introduced when automating package uploads)
  • option to toggle overflow warning in the breakup dynamic (thanks @edejong-caltech)
  • replacing r_crit<r_dry errors in wet-size equilibrium calculations with r_wet=r_dry setting (workaround for big-f_org/small-sized aerosols, thanks @claresinger)
  • immersion freezing cleaups
  • cleaning up imports from deprecated packages in SciPy (just subpackage naming changes)
https://github.com/open-atmos/PySDM - PySDM v2.10

Published by slayoo over 2 years ago

  • fragmentation limiters (by @edejong-caltech)
  • 1D VTK and nceCDF exporters (by @sajjadazimi)
  • PyPI release automation through GitHub Actions
  • introducing test-time-dependency on PyPartMC
https://github.com/open-atmos/PySDM - PySDM v2.9

Published by slayoo over 2 years ago

  • option to skip thd update in condensation dynamic added (for KiD example, kudos @sajjadazimi!)
  • JOSS PySDM v2 paper updates (kudos @edejong-caltech & @claresinger)
https://github.com/open-atmos/PySDM - PySDM v2.8

Published by slayoo over 2 years ago

  • single-column environment and examples beef up (kudos @sajjadazimi)
  • improved aerosol initialisation test coverage (kudos @claresinger)
  • API change in aerosol initialisation (aerosol.aerosol_modes -> aerosol.modes)
  • JOSS v2 paper progress