PySDM-examples 3.0.0rc43__tar.gz → 3.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PKG-INFO +31 -45
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +5 -2
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Alpert_and_Knopf_2016/simulation.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Alpert_and_Knopf_2016/table_1.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Alpert_and_Knopf_2016/table_2.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_and_Shima_2017/__init__.py +3 -0
- pysdm_examples-3.0.2/PySDM_examples/featured/Arabas_and_Shima_2017/example.py +11 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_and_Shima_2017/simulation.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_et_al_2025/__init__.py +4 -9
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_et_al_2025/plots.py +2 -2
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_et_al_2025/run_simulation.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Berry_1967/example.py +3 -3
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Berry_1967/spectrum_plotter.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Bieli_et_al_2022/__init__.py +8 -8
- pysdm_examples-3.0.2/PySDM_examples/featured/Grabowski_and_Pawlowska_2023/__init__.py +23 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Jensen_and_Nugent_2017/__init__.py +1 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Jensen_and_Nugent_2017/simulation.py +2 -2
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Long_1974/__init__.py +3 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Lowe_et_al_2019/settings.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Lowe_et_al_2019/simulation.py +1 -1
- pysdm_examples-3.0.2/PySDM_examples/featured/Luettmer_et_al_2026/__init__.py +25 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Luettmer_et_al_2026/commons.py +2 -2
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Luettmer_et_al_2026/simulation.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/example.py +3 -3
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/example_timing.py +4 -4
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/spectrum_plotter.py +6 -13
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/tutorial_example.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shipway_and_Hill_2012/simulation.py +2 -2
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Srivastava_1982/example.py +6 -3
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Srivastava_1982/simulation.py +2 -2
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Ware_et_al_2025/example.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Yang_et_al_2018/settings.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Yang_et_al_2018/simulation.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/deJong_Mackay_et_al_2023/__init__.py +28 -28
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/deJong_Mackay_et_al_2023/settings1D.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/deJong_Mackay_et_al_2023/simulation1D.py +3 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/deJong_Mackay_et_al_2023/simulation_0D.py +14 -14
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/deJong_Mackay_et_al_2023/simulation_ss.py +4 -2
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Bolin_1958/__init__.py +8 -8
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Jouzel_and_Merlivat_1984/__init__.py +0 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Matsushima_et_al_2023/__init__.py +2 -2
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Murray_et_al_2010/simulation.py +1 -1
- pysdm_examples-3.0.2/PySDM_examples/misc/Toon_et_al_1980/__init__.py +7 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Arabas_and_Pawlowska_2011/__init__.py +14 -14
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Niedermeier_et_al_2014/simulation.py +2 -2
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Rozanski_and_Sonntag_1982/__init__.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Spichtinger_et_al_2023/__init__.py +3 -0
- pysdm_examples-3.0.2/PySDM_examples/sandbox/Spichtinger_et_al_2023/data/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Spichtinger_et_al_2023/simulation.py +1 -1
- pysdm_examples-3.0.2/PySDM_examples/sandbox/Steinke_et_al_2011/__init__.py +6 -0
- pysdm_examples-3.0.2/PySDM_examples/sandbox/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples/Bartman_et_al_2021 → pysdm_examples-3.0.2/PySDM_examples/sandbox/condensation_adaptivity}/__init__.py +2 -6
- {pysdm_examples-3.0.0rc43/PySDM_examples/Bartman_2020_MasterThesis → pysdm_examples-3.0.2/PySDM_examples/sandbox/condensation_adaptivity}/fig_5_SCIPY_VS_ADAPTIVE.py +2 -2
- {pysdm_examples-3.0.0rc43/PySDM_examples/utils/kinematic_2d → pysdm_examples-3.0.2/PySDM_examples/sandbox/condensation_adaptivity}/plots.py +0 -16
- pysdm_examples-3.0.2/PySDM_examples/sandbox/copulae/__init__.py +6 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/deJong_Azimi/__init__.py +14 -14
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/deJong_Azimi/settings1D.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/deJong_Azimi/simulation_0D.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples/Zaba_et_al → pysdm_examples-3.0.2/PySDM_examples/sandbox/isotopes}/__init__.py +1 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/seeding/simulation.py +2 -2
- pysdm_examples-3.0.2/PySDM_examples/tutorials/README.md +29 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples/_HOWTOs → pysdm_examples-3.0.2/PySDM_examples/tutorials}/__init__.py +3 -0
- pysdm_examples-3.0.2/PySDM_examples/tutorials/collisions/__init__.py +4 -0
- pysdm_examples-3.0.2/PySDM_examples/tutorials/collisions/collection_droplet.svg +169 -0
- pysdm_examples-3.0.2/PySDM_examples/tutorials/condensation/__init__.py +4 -0
- pysdm_examples-3.0.2/PySDM_examples/tutorials/condensation/kohler_curve.svg +242 -0
- pysdm_examples-3.0.2/PySDM_examples/tutorials/wikipedia/__init__.py +4 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/basic_simulation.py +1 -1
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/kinematic_2d/__init__.py +3 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples/Arabas_et_al_2015 → pysdm_examples-3.0.2/PySDM_examples/utils/kinematic_2d}/settings.py +1 -1
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/kinematic_2d/simulation.py +1 -1
- {pysdm_examples-3.0.0rc43/PySDM_examples/Morrison_and_Grabowski_2007 → pysdm_examples-3.0.2/PySDM_examples/utils/kinematic_2d}/strato_cumulus.py +2 -1
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/docs/pysdm_examples_landing.md +29 -44
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/pyproject.toml +2 -1
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/pysdm_examples.egg-info/PKG-INFO +31 -45
- pysdm_examples-3.0.2/pysdm_examples.egg-info/SOURCES.txt +193 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/pysdm_examples.egg-info/requires.txt +1 -0
- pysdm_examples-3.0.2/pysdm_examples.egg-info/scm_file_list.json +288 -0
- pysdm_examples-3.0.2/pysdm_examples.egg-info/scm_version.json +8 -0
- pysdm_examples-3.0.0rc43/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -11
- pysdm_examples-3.0.0rc43/PySDM_examples/Arabas_et_al_2015/__init__.py +0 -11
- pysdm_examples-3.0.0rc43/PySDM_examples/Arabas_et_al_2015/example.py +0 -28
- pysdm_examples-3.0.0rc43/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +0 -70
- pysdm_examples-3.0.0rc43/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -4
- pysdm_examples-3.0.0rc43/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -71
- pysdm_examples-3.0.0rc43/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +0 -5
- pysdm_examples-3.0.0rc43/PySDM_examples/Bulenok_2023_MasterThesis/performance_comparison_Srivastava_Setup.py +0 -225
- pysdm_examples-3.0.0rc43/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -112
- pysdm_examples-3.0.0rc43/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +0 -302
- pysdm_examples-3.0.0rc43/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -23
- pysdm_examples-3.0.0rc43/PySDM_examples/Luettmer_et_al_2026/__init__.py +0 -17
- pysdm_examples-3.0.0rc43/PySDM_examples/Strzabala_2025_BEng/__init__.py +0 -8
- pysdm_examples-3.0.0rc43/PySDM_examples/utils/kinematic_2d/gui.py +0 -45
- pysdm_examples-3.0.0rc43/PySDM_examples/utils/kinematic_2d/gui_controller.py +0 -132
- pysdm_examples-3.0.0rc43/PySDM_examples/utils/kinematic_2d/gui_settings.py +0 -428
- pysdm_examples-3.0.0rc43/PySDM_examples/utils/kinematic_2d/gui_viewer.py +0 -355
- pysdm_examples-3.0.0rc43/pysdm_examples.egg-info/SOURCES.txt +0 -196
- pysdm_examples-3.0.0rc43/pysdm_examples.egg-info/scm_file_list.json +0 -290
- pysdm_examples-3.0.0rc43/pysdm_examples.egg-info/scm_version.json +0 -8
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/MANIFEST.in +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Abdul_Razzak_Ghan_2000/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Alpert_and_Knopf_2016/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Alpert_and_Knopf_2016/table.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_and_Shima_2017/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_et_al_2025/commons.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_et_al_2025/curved_text.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_et_al_2025/frozen_fraction.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_et_al_2025/make_particulator.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Berry_1967/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Berry_1967/example_fig_6.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Berry_1967/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Bieli_et_al_2022/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Bieli_et_al_2022/simulation.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Grabowski_and_Pawlowska_2023/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Jensen_and_Nugent_2017/plotting.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Jensen_and_Nugent_2017/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Jensen_and_Nugent_2017/table_3.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Kreidenweis_et_al_2003/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Kreidenweis_et_al_2003/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Kreidenweis_et_al_2003/simulation.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Long_1974/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Long_1974/simulation.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Lowe_et_al_2019/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Lowe_et_al_2019/aerosol.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Lowe_et_al_2019/aerosol_code.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Lowe_et_al_2019/constants_def.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Lowe_et_al_2019/plot_helper.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Luettmer_et_al_2026/plot.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Luettmer_et_al_2026/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Pierchala_et_al_2022/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Pierchala_et_al_2022/commons.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/error_measure.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/tutorial_plotter.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/tutorial_settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shipway_and_Hill_2012/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shipway_and_Hill_2012/mpdata_1d.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shipway_and_Hill_2012/plot.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shipway_and_Hill_2012/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Srivastava_1982/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Srivastava_1982/equations.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Srivastava_1982/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Ware_et_al_2025/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Yang_et_al_2018/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples/Spichtinger_et_al_2023/data → pysdm_examples-3.0.2/PySDM_examples/featured}/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples/Pyrcel → pysdm_examples-3.0.2/PySDM_examples/featured/pyrcel_docs_testcase}/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples/Pyrcel → pysdm_examples-3.0.2/PySDM_examples/featured/pyrcel_docs_testcase}/profile_plotter.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples/Pyrcel → pysdm_examples-3.0.2/PySDM_examples/featured/pyrcel_docs_testcase}/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples/Pyrcel → pysdm_examples-3.0.2/PySDM_examples/featured/pyrcel_docs_testcase}/simulation.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Bolot_et_al_2013/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Gedzelman_and_Arnold_1994/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Gonfiantini_1986/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Jouzel_and_Merlivat_1984/thermodynamic_profiles.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Kinzer_And_Gunn_1951/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Kinzer_And_Gunn_1951/table_1_and_2.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Lamb_et_al_2017/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Merlivat_and_Nief_1967/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Miyake_et_al_1968/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Morrison_and_Grabowski_2007/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Murray_et_al_2010/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Pruppacher_and_Rasmussen_1979/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Rogers_1975/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Stewart_1975/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Van_Hook_1968/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples/Toon_et_al_1980 → pysdm_examples-3.0.2/PySDM_examples/misc}/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Abade_and_Albuquerque_2024/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Abade_and_Albuquerque_2024/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Abade_and_Albuquerque_2024/simulation.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Arabas_and_Pawlowska_2011/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Arabas_and_Pawlowska_2011/simulation.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Ervens_and_Feingold_2012/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Ervens_and_Feingold_2012/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Fisher_1991/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Graf_et_al_2019/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Jaruga_and_Pawlowska_2018/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Niedermeier_et_al_2014/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Niedermeier_et_al_2014/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Rozanski_and_Sonntag_1982/multibox.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Singer_Ward/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Singer_Ward/aerosol.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Spichtinger_et_al_2023/data/reference_bulk.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Spichtinger_et_al_2023/data/simulation_data.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Spichtinger_et_al_2023/settings.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples/Bartman_et_al_2021 → pysdm_examples-3.0.2/PySDM_examples/sandbox/condensation_adaptivity}/label.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/deJong_Azimi/cloudy_data.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/deJong_Azimi/cloudy_data_0d.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/seeding/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/seeding/settings.py +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/dummy_controller.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples/Morrison_and_Grabowski_2007 → pysdm_examples-3.0.2/PySDM_examples/utils/kinematic_2d}/common.py +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/kinematic_2d/fields.py +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/kinematic_2d/make_default_product_collection.py +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/kinematic_2d/mpdata_2d.py +0 -0
- {pysdm_examples-3.0.0rc43/PySDM_examples/Arabas_et_al_2015 → pysdm_examples-3.0.2/PySDM_examples/utils/kinematic_2d}/spin_up.py +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/kinematic_2d/storage.py +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/progbar_controller.py +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/pvanim.py +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/read_vtk_1d.py +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/widgets/__init__.py +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/widgets/freezer.py +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/README.md +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/pysdm_examples.egg-info/dependency_links.txt +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/pysdm_examples.egg-info/top_level.txt +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/setup.cfg +0 -0
- {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pysdm-examples
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.2
|
|
4
4
|
Summary: PySDM usage examples reproducing results from literature and depicting how to use PySDM from Python Jupyter notebooks
|
|
5
5
|
Author-email: "https://github.com/open-atmos/PySDM/graphs/contributors" <sylwester.arabas@agh.edu.pl>
|
|
6
6
|
License-Expression: GPL-3.0-only
|
|
@@ -39,6 +39,7 @@ Requires-Dist: pyrcel==2.0.0; extra == "ci-version-pins"
|
|
|
39
39
|
Requires-Dist: pyvinecopulib==1.0.0; extra == "ci-version-pins"
|
|
40
40
|
Requires-Dist: cmcrameri==1.10; extra == "ci-version-pins"
|
|
41
41
|
Requires-Dist: cmap==0.7.2; extra == "ci-version-pins"
|
|
42
|
+
Requires-Dist: netCDF4==1.7.4; extra == "ci-version-pins"
|
|
42
43
|
Dynamic: description
|
|
43
44
|
Dynamic: description-content-type
|
|
44
45
|
|
|
@@ -84,17 +85,14 @@ The 2D prescribed-flow framework used here can be traced back to the work of
|
|
|
84
85
|
In PySDM-examples, the Eulerian advection is handled using the <a href="https://doi.org/10.21105/joss.03896">PyMPDATA</a> Numba-based
|
|
85
86
|
implementation of the <a href="https://doi.org/10.1002/fld.1071">MPDATA numerical scheme of Smolarkiewicz (e.g., 2006)</a>.
|
|
86
87
|
An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below
|
|
87
|
-
(<a href="https://github.com/open-atmos/PySDM/blob/main/examples/PySDM_examples/
|
|
88
|
+
(<a href="https://github.com/open-atmos/PySDM/blob/main/examples/PySDM_examples/tutorials/paraview_hello_world.ipynb">see
|
|
88
89
|
the Paraview hello-world HOWTO Jupyter notbook for code generating the simulation and visualisation</a>):
|
|
89
90
|
<center>
|
|
90
91
|
<img src="https://github.com/open-atmos/PySDM/releases/download/tip/docs_intro_animation_ubuntu-24.04.gif" style="width:80%" />
|
|
91
92
|
</center>
|
|
92
93
|
|
|
93
94
|
Example notebooks:
|
|
94
|
-
-
|
|
95
|
-
- in-notebook GUI for setting up, running and interactively visualising the 2D kinematic simulations (with an option to export raw data to <mark>VTK</mark> and <mark>netCDF</mark> files, as well as to save plots to SVG or PDF):
|
|
96
|
-
- "hello world" notebook depicting how to automate using Python the process of loading data and creating animations in <mark>Paraview</mark>
|
|
97
|
-
- <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2025.html">Arabas_et_al_2025</a>: adaptation of the 2D kinematic setup for studying <mark>glaciation</mark> of the cloud deck by <mark>immersion freezing</mark>
|
|
95
|
+
- `PySDM_examples.featured.Arabas_et_al_2025`: adaptation of the 2D kinematic setup for studying <mark>glaciation</mark> of the cloud deck by <mark>immersion freezing</mark>
|
|
98
96
|
|
|
99
97
|
## 1D kinematic environment (prescribed-flow, single-column)
|
|
100
98
|
|
|
@@ -106,19 +104,10 @@ As in the 2D kinematic framework above, the Eulerian advection is handled by
|
|
|
106
104
|
<a href="https://open-atmos.github.io/PyMPDATA/">PyMPDATA</a>.
|
|
107
105
|
|
|
108
106
|
Example notebooks:
|
|
109
|
-
-
|
|
110
|
-
-
|
|
107
|
+
- `PySDM_examples.featured.Shipway_and_Hill_2012`: reproducing figures from the <a href="https://doi.org/10.1002/qj.1913">Shipway & Hill 2012</a> paper;
|
|
108
|
+
- `PySDM_examples.featured.deJong_Mackay_et_al_2023`: reproducing figures from the <a href="https://doi.org/10.5194/gmd-16-4193-2023">de Jong et al. 2023</a> paper where the single-column
|
|
111
109
|
framework was used to exemplify operation of the <mark>Monte-Carlo collisional breakup scheme</mark> in PySDM (scheme introduced in that paper).
|
|
112
110
|
|
|
113
|
-
## OD/1D iterative parcel/column environment mimicking removal of precipitation
|
|
114
|
-
|
|
115
|
-
This framework uses a parcel model with removal of precipitation for analysis,
|
|
116
|
-
iterative equilibration, the isotopic composition of the water vapour and
|
|
117
|
-
rain water in a column of air (no Eulerian transport, only iterative passage of a parcel through the column).
|
|
118
|
-
|
|
119
|
-
<a href="https://open-atmos.github.io/PySDM/PySDM_examples/Rozanski_and_Sonntag_1982.html">Rozanski_and_Sonntag_1982</a>: bulk microphysics example (i.e. single super droplet) with
|
|
120
|
-
deuterium and heavy-oxygen <mark>water isotopologues</mark> featured.
|
|
121
|
-
|
|
122
111
|
## 0D parcel environment
|
|
123
112
|
|
|
124
113
|
The parcel framework implemented in PySDM uses a hydrostatic profile and adiabatic mass and energy conservation
|
|
@@ -126,19 +115,17 @@ The parcel framework implemented in PySDM uses a hydrostatic profile and adiabat
|
|
|
126
115
|
|
|
127
116
|
Example notebooks include:
|
|
128
117
|
- condensation only
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
-
|
|
133
|
-
-
|
|
134
|
-
-
|
|
135
|
-
-
|
|
136
|
-
- <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Jensen_and_Nugent_2017.html">Jensen_and_Nugent_2017</a>: polydisperse activation featuring <mark>giant CCN</mark>
|
|
118
|
+
- `PySDM_examples.featured.Arabas_and_Shima_2017`: monodisperse particle spectrum, activation/deactivation cycle
|
|
119
|
+
- `PySDM_examples.featured.Yang_et_al_2018`: polydisperse particle spectrum, activation/deactivation cycles
|
|
120
|
+
- `PySDM_examples.featured.Abdul_Razzak_Ghan_2000`: polydisperse activation, comparison against <mark>GCM parameterisation</mark>
|
|
121
|
+
- `PySDM_examples.featured.pyrcel_docs_testcase`: polydisperse activation, mimicking example test case from <mark>Pyrcel</mark> documentation
|
|
122
|
+
- `PySDM_examples.featured.Lowe_et_al_2019`: externally mixed polydisperse size spectrum with <mark>surface-active organics</mark> case
|
|
123
|
+
- `PySDM_examples.featured.Grabowski_and_Pawlowska_2023`: polydisperse activation, focus on <mark>ripening</mark>
|
|
124
|
+
- `PySDM_examples.featured.Jensen_and_Nugent_2017`: polydisperse activation featuring <mark>giant CCN</mark>
|
|
137
125
|
- condensation and aqueous-chemistry
|
|
138
|
-
-
|
|
139
|
-
-
|
|
126
|
+
- `PySDM_examples.featured.Kreidenweis_et_al_2003`: <mark>Hoppel gap</mark> simulation setup (i.e. depiction of evolution of aerosol mass spectrum from a monomodal to bimodal due to aqueous‐phase SO2 oxidation)
|
|
127
|
+
- `PySDM_examples.sandbox.Jaruga_and_Pawlowska_2018`: exploration of numerical convergence using the above Hoppel-gap simulation setup
|
|
140
128
|
- freezing
|
|
141
|
-
- <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Spichtinger_et_al_2023.html">Spichtinger_et_al_2023</a>: <mark>homogeneous freezing</mark> and ice growth (<mark>Wegener-Bergeron-Findeisen process</mark>)
|
|
142
129
|
|
|
143
130
|
The parcel environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
|
|
144
131
|
|
|
@@ -153,33 +140,32 @@ The box environment is void of any spatial or thermodynamic context, it constitu
|
|
|
153
140
|
Example notebooks include:
|
|
154
141
|
|
|
155
142
|
- coalescence only:
|
|
156
|
-
-
|
|
157
|
-
-
|
|
143
|
+
- `PySDM_examples.featured.Shima_et_al_2009`: using <mark>Golovin additive kernel</mark> for comparison against analytic solution, featuring interactive in-notebook interface for selecting simulation parameters
|
|
144
|
+
- `PySDM_examples.featured.Berry_1967`: examples using geometric, hydrodynamic and electric-field collision kernels
|
|
158
145
|
- coalescence and breakup:
|
|
159
|
-
-
|
|
160
|
-
-
|
|
146
|
+
- `PySDM_examples.featured.Bieli_et_al_2022`: evolution of moments under collisional growth and breakage
|
|
147
|
+
- `PySDM_examples.featured.deJong_Mackay_et_al_2023`: validation of the breakup scheme against analytical solutions from <a href="https://doi.org/10.1175/1520-0469(1982)039%3C1317:ASMOPC%3E2.0.CO;2">Srivastava 1982</a>
|
|
161
148
|
- immersion freezing only:
|
|
162
|
-
-
|
|
163
|
-
-
|
|
149
|
+
- `PySDM_examples.featured.Alpert_and_Knopf_2016`: stochastic immersion freezing with monodisperse vs. lognormal immersed surface areas
|
|
150
|
+
- `PySDM_examples.featured.Arabas_et_al_2025`: comparison of time-dependent and singular immersion freezing schemes
|
|
164
151
|
|
|
165
152
|
The box environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
|
|
166
153
|
|
|
167
154
|
## examples depicting isotope-related formulae (without any simulation context)
|
|
168
155
|
- <mark>equilibrium isotopic fractionation</mark> formulae:
|
|
169
|
-
-
|
|
170
|
-
-
|
|
171
|
-
-
|
|
172
|
-
-
|
|
173
|
-
- <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Graf_et_al_2019.html">Graf_et_al_2019</a>
|
|
156
|
+
- `PySDM_examples.misc.Lamb_et_al_2017`
|
|
157
|
+
- `PySDM_examples.misc.Bolot_et_al_2013`
|
|
158
|
+
- `PySDM_examples.misc.Merlivat_and_Nief_1967`
|
|
159
|
+
- `PySDM_examples.misc.Van_Hook_1968`
|
|
174
160
|
- <mark>Rayleigh fractionation</mark>:
|
|
175
|
-
-
|
|
176
|
-
-
|
|
161
|
+
- `PySDM_examples.featured.Pierchala_et_al_2022`: reproducing model plots for a <mark>triple-isotope</mark> lab study, including <mark>kinetic fractionation</mark>
|
|
162
|
+
- `PySDM_examples.misc.Gonfiantini_1986`: flat-surface evaporation at different humidities for D and <sup>18</sup>O
|
|
177
163
|
- isotopic relaxation timescale:
|
|
178
|
-
-
|
|
179
|
-
-
|
|
164
|
+
- `PySDM_examples.misc.Miyake_et_al_1968`: incl. comparison of different <mark>ventilation</mark> parameterisations
|
|
165
|
+
- `PySDM_examples.misc.Bolin_1958`
|
|
180
166
|
- below-cloud <mark>kinetic fractionation</mark>:
|
|
181
|
-
-
|
|
167
|
+
- `PySDM_examples.misc.Gedzelman_and_Arnold_1994`
|
|
182
168
|
|
|
183
169
|
## examples depicting extraterrestrial clouds (formulae-only, no simulations yet)
|
|
184
170
|
- Titan (methane clouds):
|
|
185
|
-
-
|
|
171
|
+
- `PySDM_examples.misc.Toon_et_al_1980`
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
from collections import namedtuple
|
|
2
2
|
|
|
3
3
|
import numpy as np
|
|
4
|
-
from PySDM_examples.Abdul_Razzak_Ghan_2000.aerosol import
|
|
4
|
+
from PySDM_examples.featured.Abdul_Razzak_Ghan_2000.aerosol import (
|
|
5
|
+
CONSTANTS_ARG,
|
|
6
|
+
AerosolARG,
|
|
7
|
+
)
|
|
5
8
|
|
|
6
9
|
from PySDM import Particulator, Formulae
|
|
7
10
|
from PySDM import products as PySDM_products
|
|
@@ -97,7 +100,7 @@ def run_parcel(
|
|
|
97
100
|
}
|
|
98
101
|
|
|
99
102
|
for _ in range(n_steps):
|
|
100
|
-
particulator.
|
|
103
|
+
particulator.advance(n_steps=1)
|
|
101
104
|
for product in particulator.products.values():
|
|
102
105
|
value = product.get()
|
|
103
106
|
output[product.name].append(value[0])
|
|
@@ -256,7 +256,7 @@ def simulation(
|
|
|
256
256
|
if cooling_rate != 0:
|
|
257
257
|
env["T"] -= np.full((1,), cooling_rate * time_step / 2)
|
|
258
258
|
env["a_w_ice"] = svp.pvs_ice(env["T"][0]) / svp.pvs_water(env["T"][0])
|
|
259
|
-
particulator.
|
|
259
|
+
particulator.advance(0 if i == 0 else 1)
|
|
260
260
|
if cooling_rate != 0:
|
|
261
261
|
env["T"] -= np.full((1,), cooling_rate * time_step / 2)
|
|
262
262
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from PySDM_examples.featured.Arabas_and_Shima_2017.settings import setups
|
|
2
|
+
from PySDM_examples.featured.Arabas_and_Shima_2017.simulation import Simulation
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def main():
|
|
6
|
+
for settings in setups:
|
|
7
|
+
Simulation(settings).run()
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
if __name__ == "__main__":
|
|
11
|
+
main()
|
|
@@ -2,26 +2,21 @@
|
|
|
2
2
|
box-model and 2D prescribed-flow immersion-freezing examples based on
|
|
3
3
|
[Arabas et al. 2025](https://doi.org/10.1029/2024MS004770)
|
|
4
4
|
|
|
5
|
-
aida.ipynb:
|
|
6
|
-
.. include:: ./aida.ipynb.badges.md
|
|
7
|
-
|
|
8
|
-
copula_hello.ipynb:
|
|
9
|
-
.. include:: ./copula_hello.ipynb.badges.md
|
|
10
|
-
|
|
11
5
|
fig_2.ipynb:
|
|
12
6
|
.. include:: ./fig_2.ipynb.badges.md
|
|
13
7
|
|
|
14
|
-
figs_10_and_11_and_animations.ipynb:
|
|
15
|
-
.. include:: ./figs_10_and_11_and_animations.ipynb.badges.md
|
|
16
|
-
|
|
17
8
|
fig_A2.ipynb:
|
|
18
9
|
.. include:: ./fig_A2.ipynb.badges.md
|
|
19
10
|
|
|
11
|
+
|
|
20
12
|
figs_3_and_7_and_8.ipynb:
|
|
21
13
|
.. include:: ./figs_3_and_7_and_8.ipynb.badges.md
|
|
22
14
|
|
|
23
15
|
figs_5_and_6.ipynb:
|
|
24
16
|
.. include:: ./figs_5_and_6.ipynb.badges.md
|
|
17
|
+
|
|
18
|
+
figs_10_and_11_and_animations.ipynb:
|
|
19
|
+
.. include:: ./figs_10_and_11_and_animations.ipynb.badges.md
|
|
25
20
|
"""
|
|
26
21
|
|
|
27
22
|
from .make_particulator import make_particulator
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import matplotlib
|
|
2
2
|
import numpy as np
|
|
3
3
|
from matplotlib import pyplot
|
|
4
|
-
from PySDM_examples.Arabas_et_al_2025.curved_text import CurvedText
|
|
5
|
-
from PySDM_examples.Arabas_et_al_2025.frozen_fraction import FrozenFraction
|
|
4
|
+
from PySDM_examples.featured.Arabas_et_al_2025.curved_text import CurvedText
|
|
5
|
+
from PySDM_examples.featured.Arabas_et_al_2025.frozen_fraction import FrozenFraction
|
|
6
6
|
|
|
7
7
|
from PySDM.physics import si
|
|
8
8
|
|
|
@@ -18,7 +18,7 @@ def run_simulation(particulator, temperature_profile, n_steps):
|
|
|
18
18
|
particulator.environment,
|
|
19
19
|
T=temperature_profile((step - 0.5) * particulator.dt),
|
|
20
20
|
)
|
|
21
|
-
particulator.
|
|
21
|
+
particulator.advance(step - particulator.n_steps)
|
|
22
22
|
update_thermo(
|
|
23
23
|
particulator.environment, T=temperature_profile(step * particulator.dt)
|
|
24
24
|
)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import os
|
|
2
2
|
|
|
3
3
|
import numpy as np
|
|
4
|
-
from PySDM_examples.Berry_1967.settings import Settings
|
|
5
|
-
from PySDM_examples.Berry_1967.spectrum_plotter import SpectrumPlotter
|
|
6
|
-
from PySDM_examples.Shima_et_al_2009.example import run
|
|
4
|
+
from PySDM_examples.featured.Berry_1967.settings import Settings
|
|
5
|
+
from PySDM_examples.featured.Berry_1967.spectrum_plotter import SpectrumPlotter
|
|
6
|
+
from PySDM_examples.featured.Shima_et_al_2009.example import run
|
|
7
7
|
|
|
8
8
|
from PySDM.dynamics.collisions.collision_kernels import (
|
|
9
9
|
Electric,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"""
|
|
2
|
-
collision-only box-model example from [Bieli et al. 2022](https://doi.org/10.1029/2022MS002994)
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
.. include:: ./
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
# pylint: disable=invalid-name
|
|
1
|
+
"""
|
|
2
|
+
collision-only box-model example from [Bieli et al. 2022](https://doi.org/10.1029/2022MS002994)
|
|
3
|
+
|
|
4
|
+
fig_3a.ipynb:
|
|
5
|
+
.. include:: ./fig_3a.ipynb.badges.md
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
# pylint: disable=invalid-name
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# pylint: disable=invalid-name
|
|
2
|
+
"""
|
|
3
|
+
ripening-focused parcel-model example based on
|
|
4
|
+
[Grabowski & Pawlowska 2023 (GRL)](https://doi.org/10.1029/2022GL101917)
|
|
5
|
+
|
|
6
|
+
fig_1.ipynb:
|
|
7
|
+
.. include:: ./fig_1.ipynb.badges.md
|
|
8
|
+
|
|
9
|
+
fig_2.ipynb:
|
|
10
|
+
.. include:: ./fig_2.ipynb.badges.md
|
|
11
|
+
|
|
12
|
+
fig_3.ipynb:
|
|
13
|
+
.. include:: ./fig_3.ipynb.badges.md
|
|
14
|
+
|
|
15
|
+
fig_4.ipynb:
|
|
16
|
+
.. include:: ./fig_4.ipynb.badges.md
|
|
17
|
+
|
|
18
|
+
fig_ripening_rate.ipynb:
|
|
19
|
+
.. include:: ./fig_ripening_rate.ipynb.badges.md
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
from .settings import Settings
|
|
23
|
+
from .simulation import Simulation
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import numpy as np
|
|
2
2
|
from PySDM_examples.utils import BasicSimulation
|
|
3
|
-
from PySDM_examples.Jensen_and_Nugent_2017.settings import Settings
|
|
4
|
-
from PySDM_examples.Jensen_and_Nugent_2017 import table_3
|
|
3
|
+
from PySDM_examples.featured.Jensen_and_Nugent_2017.settings import Settings
|
|
4
|
+
from PySDM_examples.featured.Jensen_and_Nugent_2017 import table_3
|
|
5
5
|
from PySDM import Particulator
|
|
6
6
|
from PySDM.physics import si
|
|
7
7
|
from PySDM.backends import CPU
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
"""
|
|
3
3
|
piecewise collision-coalescence example from
|
|
4
4
|
[Long 1974 (JAS)](https://doi.org/10.1175/1520-0469%281974%29031%3C1040%3ASTTDCE%3E2.0.CO%3B2)
|
|
5
|
+
|
|
6
|
+
figs_10_11_13_14.ipynb:
|
|
7
|
+
.. include:: ./figs_10_11_13_14.ipynb.badges.md
|
|
5
8
|
"""
|
|
6
9
|
|
|
7
10
|
from .settings import Settings
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from functools import lru_cache
|
|
2
2
|
|
|
3
3
|
import numpy as np
|
|
4
|
-
from PySDM_examples.Lowe_et_al_2019.constants_def import LOWE_CONSTS
|
|
4
|
+
from PySDM_examples.featured.Lowe_et_al_2019.constants_def import LOWE_CONSTS
|
|
5
5
|
from pystrict import strict
|
|
6
6
|
|
|
7
7
|
from PySDM import Formulae
|
|
@@ -135,7 +135,7 @@ class Simulation(BasicSimulation):
|
|
|
135
135
|
def run(self):
|
|
136
136
|
output = {k: [] for k in self.particulator.products}
|
|
137
137
|
for step in self.settings.output_steps:
|
|
138
|
-
self.particulator.
|
|
138
|
+
self.particulator.advance(step - self.particulator.n_steps)
|
|
139
139
|
self._save_scalars(output)
|
|
140
140
|
self._save_final_timestep_products(output)
|
|
141
141
|
return output
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# pylint: disable=invalid-name
|
|
2
|
+
"""
|
|
3
|
+
Homogeneous freezing example
|
|
4
|
+
|
|
5
|
+
fig_1_2_3.ipynb:
|
|
6
|
+
.. include:: ./fig_1_2_3.ipynb.badges.md
|
|
7
|
+
|
|
8
|
+
fig_4_5_6_S3_S4.ipynb:
|
|
9
|
+
.. include:: ./fig_4_5_6_S3_S4.ipynb.badges.md
|
|
10
|
+
|
|
11
|
+
fig_S1_S2.ipynb:
|
|
12
|
+
.. include:: ./fig_S1_S2.ipynb.badges.md
|
|
13
|
+
|
|
14
|
+
simple_homogenous_freezing_example.ipynb:
|
|
15
|
+
.. include:: ./simple_homogenous_freezing_example.ipynb.badges.md
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from .settings import Settings
|
|
19
|
+
from .simulation import Simulation
|
|
20
|
+
from .plot import (
|
|
21
|
+
plot_thermodynamics_and_bulk,
|
|
22
|
+
plot_freezing_temperatures_histogram,
|
|
23
|
+
plot_freezing_temperatures_histogram_allinone,
|
|
24
|
+
plot_freezing_temperatures_2d_histogram_seaborn,
|
|
25
|
+
)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""commons for homogeneous freezing notebooks"""
|
|
2
2
|
|
|
3
|
-
from PySDM_examples.Luettmer_et_al_2026.settings import Settings
|
|
4
|
-
from PySDM_examples.Luettmer_et_al_2026.simulation import Simulation
|
|
3
|
+
from PySDM_examples.featured.Luettmer_et_al_2026.settings import Settings
|
|
4
|
+
from PySDM_examples.featured.Luettmer_et_al_2026.simulation import Simulation
|
|
5
5
|
from PySDM import Formulae
|
|
6
6
|
from PySDM.physics.constants import si
|
|
7
7
|
from PySDM.backends import CPU
|
|
@@ -2,8 +2,8 @@ import os
|
|
|
2
2
|
from typing import Optional
|
|
3
3
|
|
|
4
4
|
import numpy as np
|
|
5
|
-
from PySDM_examples.Shima_et_al_2009.settings import Settings
|
|
6
|
-
from PySDM_examples.Shima_et_al_2009.spectrum_plotter import SpectrumPlotter
|
|
5
|
+
from PySDM_examples.featured.Shima_et_al_2009.settings import Settings
|
|
6
|
+
from PySDM_examples.featured.Shima_et_al_2009.spectrum_plotter import SpectrumPlotter
|
|
7
7
|
|
|
8
8
|
from PySDM.backends import CPU
|
|
9
9
|
from PySDM import Particulator
|
|
@@ -46,7 +46,7 @@ def run(settings, backend=CPU, observers=()):
|
|
|
46
46
|
vals = {}
|
|
47
47
|
particulator.products["wall time"].reset()
|
|
48
48
|
for step in settings.output_steps:
|
|
49
|
-
particulator.
|
|
49
|
+
particulator.advance(step - particulator.n_steps)
|
|
50
50
|
vals[step] = particulator.products["dv/dlnr"].get()[0]
|
|
51
51
|
vals[step][:] *= settings.rho
|
|
52
52
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os
|
|
2
2
|
|
|
3
3
|
from matplotlib import pyplot as plt
|
|
4
|
-
from PySDM_examples.Shima_et_al_2009.settings import Settings
|
|
4
|
+
from PySDM_examples.featured.Shima_et_al_2009.settings import Settings
|
|
5
5
|
|
|
6
6
|
from PySDM.backends import Numba, ThrustRTC
|
|
7
7
|
from PySDM import Particulator
|
|
@@ -18,7 +18,7 @@ def run(settings, backend):
|
|
|
18
18
|
attributes["volume"], attributes["multiplicity"] = sampling.sample_deterministic(
|
|
19
19
|
settings.n_sd
|
|
20
20
|
)
|
|
21
|
-
|
|
21
|
+
particulator = Particulator(
|
|
22
22
|
n_sd=settings.n_sd,
|
|
23
23
|
environment=env,
|
|
24
24
|
dynamics=(Coalescence(collision_kernel=settings.kernel),),
|
|
@@ -29,8 +29,8 @@ def run(settings, backend):
|
|
|
29
29
|
states = {}
|
|
30
30
|
last_wall_time = None
|
|
31
31
|
for step in settings.output_steps:
|
|
32
|
-
|
|
33
|
-
last_wall_time =
|
|
32
|
+
particulator.advance(step - particulator.n_steps)
|
|
33
|
+
last_wall_time = particulator.products["wall time"].get()
|
|
34
34
|
|
|
35
35
|
return states, last_wall_time
|
|
36
36
|
|
|
@@ -3,7 +3,7 @@ import numpy as np
|
|
|
3
3
|
from matplotlib import pyplot
|
|
4
4
|
from open_atmos_jupyter_utils import show_plot
|
|
5
5
|
from packaging import version
|
|
6
|
-
from PySDM_examples.Shima_et_al_2009.error_measure import error_measure
|
|
6
|
+
from PySDM_examples.featured.Shima_et_al_2009.error_measure import error_measure
|
|
7
7
|
|
|
8
8
|
from PySDM.physics.constants import si
|
|
9
9
|
|
|
@@ -57,18 +57,11 @@ class SpectrumPlotter:
|
|
|
57
57
|
): self.log_base
|
|
58
58
|
}
|
|
59
59
|
if self.title is not None:
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
self.ax.xscale("log", **base_arg)
|
|
66
|
-
self.ax.xlabel(self.xlabel)
|
|
67
|
-
self.ax.ylabel(self.ylabel)
|
|
68
|
-
except AttributeError:
|
|
69
|
-
self.ax.set_xscale("log", **base_arg)
|
|
70
|
-
self.ax.set_xlabel(self.xlabel)
|
|
71
|
-
self.ax.set_ylabel(self.ylabel)
|
|
60
|
+
self.ax.title(self.title)
|
|
61
|
+
self.ax.xscale("log", **base_arg)
|
|
62
|
+
self.ax.xlabel(self.xlabel)
|
|
63
|
+
self.ax.ylabel(self.ylabel)
|
|
64
|
+
|
|
72
65
|
if self.legend:
|
|
73
66
|
self.ax.legend()
|
|
74
67
|
|
|
@@ -43,7 +43,7 @@ def run(settings, observers=()):
|
|
|
43
43
|
vals = {}
|
|
44
44
|
particulator.products["wall time"].reset()
|
|
45
45
|
for step in settings.output_steps:
|
|
46
|
-
particulator.
|
|
46
|
+
particulator.advance(step - particulator.n_steps)
|
|
47
47
|
vals[step] = particulator.products["dv/dlnr"].get()[0]
|
|
48
48
|
vals[step][:] *= settings.rho
|
|
49
49
|
|
|
@@ -2,7 +2,7 @@ from collections import namedtuple
|
|
|
2
2
|
from typing import List, Any
|
|
3
3
|
|
|
4
4
|
import numpy as np
|
|
5
|
-
from PySDM_examples.Shipway_and_Hill_2012.mpdata_1d import MPDATA_1D
|
|
5
|
+
from PySDM_examples.featured.Shipway_and_Hill_2012.mpdata_1d import MPDATA_1D
|
|
6
6
|
|
|
7
7
|
import PySDM.products as PySDM_products
|
|
8
8
|
from PySDM import Particulator
|
|
@@ -267,7 +267,7 @@ class Simulation:
|
|
|
267
267
|
self.particulator.dynamics["Displacement"].upload_courant_field(
|
|
268
268
|
(mpdata.advector / self.g_factor_vec,)
|
|
269
269
|
)
|
|
270
|
-
self.particulator.
|
|
270
|
+
self.particulator.advance(n_steps=1)
|
|
271
271
|
self.save(step + 1)
|
|
272
272
|
|
|
273
273
|
Outputs = namedtuple("Outputs", "products attributes")
|
|
@@ -2,9 +2,12 @@ from collections import namedtuple
|
|
|
2
2
|
|
|
3
3
|
import numpy as np
|
|
4
4
|
from matplotlib import pyplot
|
|
5
|
-
from PySDM_examples.Srivastava_1982.equations import
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
from PySDM_examples.featured.Srivastava_1982.equations import (
|
|
6
|
+
Equations,
|
|
7
|
+
EquationsHelpers,
|
|
8
|
+
)
|
|
9
|
+
from PySDM_examples.featured.Srivastava_1982.settings import SimProducts
|
|
10
|
+
from PySDM_examples.featured.Srivastava_1982.simulation import Simulation
|
|
8
11
|
|
|
9
12
|
from PySDM.dynamics import Collision
|
|
10
13
|
from PySDM.dynamics.collisions.breakup_efficiencies import ConstEb
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import numpy as np
|
|
2
|
-
from PySDM_examples.Srivastava_1982.settings import SimProducts
|
|
2
|
+
from PySDM_examples.featured.Srivastava_1982.settings import SimProducts
|
|
3
3
|
|
|
4
4
|
from PySDM import Particulator, Formulae
|
|
5
5
|
from PySDM.environments import Box
|
|
@@ -70,7 +70,7 @@ class Simulation:
|
|
|
70
70
|
|
|
71
71
|
for step in range(len(x)):
|
|
72
72
|
if step != 0:
|
|
73
|
-
particulator.
|
|
73
|
+
particulator.advance(n_steps=1)
|
|
74
74
|
for prod in self.settings.prods:
|
|
75
75
|
(self.simulation_res[n_sd][prod][seed][step],) = (
|
|
76
76
|
particulator.products[prod].get()
|
|
@@ -243,7 +243,7 @@ def run(settings, backend, observers=(), sampling_method="deterministic"):
|
|
|
243
243
|
deficit = 0
|
|
244
244
|
particulator.products["wall time"].reset()
|
|
245
245
|
for step in settings.output_steps:
|
|
246
|
-
particulator.
|
|
246
|
+
particulator.advance(step - particulator.n_steps)
|
|
247
247
|
vals[step] = particulator.products["dv/dlnr"].get()[0]
|
|
248
248
|
vals[step][:] *= settings.rho
|
|
249
249
|
deficit += particulator.products["deficit"].get()
|