PySDM-examples 2.129__tar.gz → 2.131__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-2.129 → pysdm_examples-2.131}/PKG-INFO +4 -1
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Lowe_et_al_2019/settings.py +22 -10
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Lowe_et_al_2019/simulation.py +1 -4
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/example.py +12 -1
- pysdm_examples-2.131/PySDM_examples/Spichtinger_et_al_2023/__init__.py +7 -0
- pysdm_examples-2.131/PySDM_examples/Spichtinger_et_al_2023/data/reference_bulk.py +47 -0
- pysdm_examples-2.131/PySDM_examples/Spichtinger_et_al_2023/data/simulation_data.py +22 -0
- pysdm_examples-2.131/PySDM_examples/Spichtinger_et_al_2023/settings.py +66 -0
- pysdm_examples-2.131/PySDM_examples/Spichtinger_et_al_2023/simulation.py +121 -0
- pysdm_examples-2.131/PySDM_examples/Zaba_et_al/__init__.py +7 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/docs/pysdm_examples_landing.md +2 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/pysdm_examples.egg-info/PKG-INFO +4 -1
- {pysdm_examples-2.129 → pysdm_examples-2.131}/pysdm_examples.egg-info/SOURCES.txt +7 -1
- {pysdm_examples-2.129 → pysdm_examples-2.131}/pysdm_examples.egg-info/requires.txt +1 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/setup.py +4 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/MANIFEST.in +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Abade_and_Albuquerque_2024/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Abade_and_Albuquerque_2024/simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Alpert_and_Knopf_2016/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Alpert_and_Knopf_2016/simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Alpert_and_Knopf_2016/table.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Alpert_and_Knopf_2016/table_1.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Alpert_and_Knopf_2016/table_2.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_and_Shima_2017/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_and_Shima_2017/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_and_Shima_2017/simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2015/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2015/example.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2015/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2015/spin_up.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2025/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2025/commons.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2025/curved_text.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2025/frozen_fraction.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2025/make_particulator.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2025/plots.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2025/run_simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bartman_2020_MasterThesis/fig_5_SCIPY_VS_ADAPTIVE.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bartman_et_al_2021/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bartman_et_al_2021/label.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Berry_1967/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Berry_1967/example.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Berry_1967/example_fig_6.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Berry_1967/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Berry_1967/spectrum_plotter.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bieli_et_al_2022/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bieli_et_al_2022/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bieli_et_al_2022/simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bolin_1958/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bolot_et_al_2013/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bulenok_2023_MasterThesis/performance_comparison_Srivastava_Setup.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Ervens_and_Feingold_2012/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Ervens_and_Feingold_2012/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Fisher_1991/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Gonfiantini_1986/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Graf_et_al_2019/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jensen_and_Nugent_2017/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jensen_and_Nugent_2017/plotting.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jensen_and_Nugent_2017/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jensen_and_Nugent_2017/simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jensen_and_Nugent_2017/table_3.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jouzel_and_Merlivat_1984/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jouzel_and_Merlivat_1984/thermodynamic_profiles.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Kinzer_And_Gunn_1951/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Kinzer_And_Gunn_1951/table_1_and_2.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Kreidenweis_et_al_2003/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Kreidenweis_et_al_2003/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Kreidenweis_et_al_2003/simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Lamb_et_al_2017/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Lowe_et_al_2019/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Lowe_et_al_2019/aerosol.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Lowe_et_al_2019/aerosol_code.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Lowe_et_al_2019/constants_def.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Lowe_et_al_2019/plot_helper.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Merlivat_and_Nief_1967/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Miyake_et_al_1968/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Morrison_and_Grabowski_2007/common.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Niedermeier_et_al_2014/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Niedermeier_et_al_2014/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Niedermeier_et_al_2014/simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Pierchala_et_al_2022/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Pierchala_et_al_2022/commons.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Pruppacher_and_Rasmussen_1979/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Pyrcel/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Pyrcel/profile_plotter.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Pyrcel/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Pyrcel/simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Rogers_1975/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Rozanski_and_Sonntag_1982/multibox.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/error_measure.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/example_timing.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/tutorial_example.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/tutorial_settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shipway_and_Hill_2012/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shipway_and_Hill_2012/plot.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shipway_and_Hill_2012/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shipway_and_Hill_2012/simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Singer_Ward/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Singer_Ward/aerosol.py +0 -0
- {pysdm_examples-2.129/PySDM_examples/Toon_et_al_1980 → pysdm_examples-2.131/PySDM_examples/Spichtinger_et_al_2023/data}/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Srivastava_1982/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Srivastava_1982/equations.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Srivastava_1982/example.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Srivastava_1982/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Srivastava_1982/simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Stewart_1975/__init__.py +0 -0
- {pysdm_examples-2.129/PySDM_examples/Zaba_et_al_2025 → pysdm_examples-2.131/PySDM_examples/Toon_et_al_1980}/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Van_Hook_1968/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Yang_et_al_2018/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Yang_et_al_2018/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Yang_et_al_2018/simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/_HOWTOs/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Azimi/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Azimi/cloudy_data.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Azimi/cloudy_data_0d.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Azimi/settings1D.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Azimi/simulation_0D.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Mackay_et_al_2023/simulation1D.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_0D.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_ss.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/seeding/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/seeding/settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/seeding/simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/basic_simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/dummy_controller.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/fields.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/gui.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/gui_controller.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/gui_settings.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/gui_viewer.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/make_default_product_collection.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/mpdata_2d.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/plots.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/simulation.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/storage.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/progbar_controller.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/pvanim.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/read_vtk_1d.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/widgets/__init__.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/widgets/freezer.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/README.md +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/pyproject.toml +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/pysdm_examples.egg-info/dependency_links.txt +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/pysdm_examples.egg-info/top_level.txt +0 -0
- {pysdm_examples-2.129 → pysdm_examples-2.131}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pysdm-examples
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.131
|
|
4
4
|
Summary: PySDM usage examples reproducing results from literature and depicting how to use PySDM from Python Jupyter notebooks
|
|
5
5
|
Home-page: https://github.com/open-atmos/PySDM
|
|
6
6
|
Author: https://github.com/open-atmos/PySDM/graphs/contributors
|
|
@@ -15,6 +15,7 @@ Requires-Dist: PyMPDATA
|
|
|
15
15
|
Requires-Dist: open-atmos-jupyter-utils
|
|
16
16
|
Requires-Dist: pystrict
|
|
17
17
|
Requires-Dist: matplotlib
|
|
18
|
+
Requires-Dist: Pillow
|
|
18
19
|
Requires-Dist: joblib
|
|
19
20
|
Requires-Dist: ipywidgets
|
|
20
21
|
Requires-Dist: seaborn
|
|
@@ -128,6 +129,8 @@ Example notebooks include:
|
|
|
128
129
|
- condensation and aqueous-chemistry
|
|
129
130
|
- <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Kreidenweis_et_al_2003.html">Kreidenweis_et_al_2003</a>: <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)
|
|
130
131
|
- <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Jaruga_and_Pawlowska_2018.html">Jaruga_and_Pawlowska_2018</a>: exploration of numerical convergence using the above Hoppel-gap simulation setup
|
|
132
|
+
- freezing
|
|
133
|
+
- <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>)
|
|
131
134
|
|
|
132
135
|
The parcel environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
|
|
133
136
|
|
|
@@ -1,13 +1,33 @@
|
|
|
1
|
+
from functools import lru_cache
|
|
2
|
+
|
|
1
3
|
import numpy as np
|
|
2
4
|
from PySDM_examples.Lowe_et_al_2019.constants_def import LOWE_CONSTS
|
|
3
5
|
from pystrict import strict
|
|
4
6
|
|
|
5
7
|
from PySDM import Formulae
|
|
8
|
+
from PySDM.backends import CPU
|
|
6
9
|
from PySDM.initialisation.aerosol_composition import DryAerosolMixture
|
|
7
10
|
from PySDM.initialisation.sampling import spectral_sampling as spec_sampling
|
|
8
11
|
from PySDM.physics import si
|
|
9
12
|
|
|
10
13
|
|
|
14
|
+
@lru_cache
|
|
15
|
+
def backend(model):
|
|
16
|
+
return CPU(
|
|
17
|
+
formulae=Formulae(
|
|
18
|
+
surface_tension=model,
|
|
19
|
+
constants=LOWE_CONSTS,
|
|
20
|
+
diffusion_kinetics="LoweEtAl2019",
|
|
21
|
+
diffusion_thermics="LoweEtAl2019",
|
|
22
|
+
latent_heat_vapourisation="Lowe2019",
|
|
23
|
+
saturation_vapour_pressure="Lowe1977",
|
|
24
|
+
optical_albedo="Bohren1987",
|
|
25
|
+
optical_depth="Stephens1978",
|
|
26
|
+
),
|
|
27
|
+
override_jit_flags={"parallel": False},
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
11
31
|
@strict
|
|
12
32
|
class Settings:
|
|
13
33
|
def __init__(
|
|
@@ -22,16 +42,8 @@ class Settings:
|
|
|
22
42
|
assert model in ("Constant", "CompressedFilmOvadnevaite")
|
|
23
43
|
self.model = model
|
|
24
44
|
self.n_sd_per_mode = n_sd_per_mode
|
|
25
|
-
self.
|
|
26
|
-
|
|
27
|
-
constants=LOWE_CONSTS,
|
|
28
|
-
diffusion_kinetics="LoweEtAl2019",
|
|
29
|
-
diffusion_thermics="LoweEtAl2019",
|
|
30
|
-
latent_heat_vapourisation="Lowe2019",
|
|
31
|
-
saturation_vapour_pressure="Lowe1977",
|
|
32
|
-
optical_albedo="Bohren1987",
|
|
33
|
-
optical_depth="Stephens1978",
|
|
34
|
-
)
|
|
45
|
+
self.backend = backend(model)
|
|
46
|
+
self.formulae = self.backend.formulae
|
|
35
47
|
const = self.formulae.constants
|
|
36
48
|
self.aerosol = aerosol
|
|
37
49
|
self.spectral_sampling = spectral_sampling
|
|
@@ -3,7 +3,6 @@ from PySDM_examples.utils import BasicSimulation
|
|
|
3
3
|
|
|
4
4
|
import PySDM.products as PySDM_products
|
|
5
5
|
from PySDM import Builder
|
|
6
|
-
from PySDM.backends import CPU
|
|
7
6
|
from PySDM.dynamics import AmbientThermodynamics, Condensation
|
|
8
7
|
from PySDM.environments import Parcel
|
|
9
8
|
from PySDM.initialisation import equilibrate_wet_radii
|
|
@@ -15,9 +14,7 @@ class Simulation(BasicSimulation):
|
|
|
15
14
|
n_sd = settings.n_sd_per_mode * len(settings.aerosol.modes)
|
|
16
15
|
builder = Builder(
|
|
17
16
|
n_sd=n_sd,
|
|
18
|
-
backend=
|
|
19
|
-
formulae=settings.formulae, override_jit_flags={"parallel": False}
|
|
20
|
-
),
|
|
17
|
+
backend=settings.backend,
|
|
21
18
|
environment=Parcel(
|
|
22
19
|
dt=settings.dt,
|
|
23
20
|
mass_of_dry_air=settings.mass_of_dry_air,
|
|
@@ -12,11 +12,22 @@ from PySDM.environments import Box
|
|
|
12
12
|
from PySDM.initialisation.sampling.spectral_sampling import ConstantMultiplicity
|
|
13
13
|
from PySDM.products import ParticleVolumeVersusRadiusLogarithmSpectrum, WallTime
|
|
14
14
|
|
|
15
|
+
_BACKEND_CACHE = {}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def backend_factory(backend_class, formulae):
|
|
19
|
+
key = backend_class.__name__ + ":" + str(formulae)
|
|
20
|
+
if key not in _BACKEND_CACHE:
|
|
21
|
+
_BACKEND_CACHE[key] = backend_class(formulae=formulae)
|
|
22
|
+
return _BACKEND_CACHE[key]
|
|
23
|
+
|
|
15
24
|
|
|
16
25
|
def run(settings, backend=CPU, observers=()):
|
|
17
26
|
env = Box(dv=settings.dv, dt=settings.dt)
|
|
18
27
|
builder = Builder(
|
|
19
|
-
n_sd=settings.n_sd,
|
|
28
|
+
n_sd=settings.n_sd,
|
|
29
|
+
backend=backend_factory(backend, formulae=settings.formulae),
|
|
30
|
+
environment=env,
|
|
20
31
|
)
|
|
21
32
|
attributes = {}
|
|
22
33
|
sampling = ConstantMultiplicity(settings.spectrum)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"""
|
|
2
|
+
reference results for bulk scheme in Fig B1. in
|
|
3
|
+
[Spichtinger et al. 2023](https://doi.org/10.5194/acp-23-2035-2023)
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import numpy as np
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def bulk_model_reference_array():
|
|
10
|
+
|
|
11
|
+
initial_temperatures = np.array([196.0, 216.0, 236.0])
|
|
12
|
+
updrafts = np.array([0.05, 0.1, 0.3, 0.5, 1.0, 3.0, 5.0, 10.0])
|
|
13
|
+
|
|
14
|
+
dim_size = (np.shape(initial_temperatures)[0], np.shape(updrafts)[0])
|
|
15
|
+
ni_bulk_ref = np.zeros(dim_size)
|
|
16
|
+
|
|
17
|
+
# T = 196
|
|
18
|
+
ni_bulk_ref[0, 0] = 643686.1316903427
|
|
19
|
+
ni_bulk_ref[0, 1] = 2368481.0609527444
|
|
20
|
+
ni_bulk_ref[0, 2] = 20160966.984670535
|
|
21
|
+
ni_bulk_ref[0, 3] = 49475281.81718969
|
|
22
|
+
ni_bulk_ref[0, 4] = 131080662.23620115
|
|
23
|
+
ni_bulk_ref[0, 5] = 401046528.70428866
|
|
24
|
+
ni_bulk_ref[0, 6] = 627442148.3402529
|
|
25
|
+
ni_bulk_ref[0, 7] = 1151707310.2210448
|
|
26
|
+
|
|
27
|
+
# T = 216
|
|
28
|
+
ni_bulk_ref[1, 0] = 60955.84292640147
|
|
29
|
+
ni_bulk_ref[1, 1] = 189002.0792186534
|
|
30
|
+
ni_bulk_ref[1, 2] = 1200751.6897658105
|
|
31
|
+
ni_bulk_ref[1, 3] = 2942110.815055958
|
|
32
|
+
ni_bulk_ref[1, 4] = 10475282.894692907
|
|
33
|
+
ni_bulk_ref[1, 5] = 90871045.40856971
|
|
34
|
+
ni_bulk_ref[1, 6] = 252175505.460412
|
|
35
|
+
ni_bulk_ref[1, 7] = 860335156.4717773
|
|
36
|
+
|
|
37
|
+
# T = 236
|
|
38
|
+
ni_bulk_ref[2, 0] = 13049.108886452004
|
|
39
|
+
ni_bulk_ref[2, 1] = 40422.244759544985
|
|
40
|
+
ni_bulk_ref[2, 2] = 237862.49854786208
|
|
41
|
+
ni_bulk_ref[2, 3] = 545315.7805748513
|
|
42
|
+
ni_bulk_ref[2, 4] = 1707801.469906006
|
|
43
|
+
ni_bulk_ref[2, 5] = 11128055.66932415
|
|
44
|
+
ni_bulk_ref[2, 6] = 27739585.111447476
|
|
45
|
+
ni_bulk_ref[2, 7] = 101799566.47225031
|
|
46
|
+
|
|
47
|
+
return initial_temperatures, updrafts, ni_bulk_ref
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def saved_simulation_ensemble_mean():
|
|
5
|
+
|
|
6
|
+
ni_ens_mean = np.array(
|
|
7
|
+
[
|
|
8
|
+
[0.00000000e00, 0.00000000e00, 0.00000000e00],
|
|
9
|
+
[0.00000000e00, 0.00000000e00, 0.00000000e00],
|
|
10
|
+
[1.62069821e03, 0.00000000e00, 0.00000000e00],
|
|
11
|
+
[5.25377025e06, 9.75512904e05, 4.51431097e05],
|
|
12
|
+
[3.67137290e07, 5.45240337e06, 1.53884530e06],
|
|
13
|
+
[7.96514420e07, 1.13878118e07, 3.26386880e06],
|
|
14
|
+
[2.19385480e08, 3.62240242e07, 9.00657591e06],
|
|
15
|
+
[1.00631095e09, 2.34443408e08, 4.90577208e07],
|
|
16
|
+
[1.73457062e09, 5.20774276e08, 1.16040316e08],
|
|
17
|
+
]
|
|
18
|
+
)
|
|
19
|
+
T = np.array([196.0, 216.0, 236.0])
|
|
20
|
+
w = np.array([0.01, 0.03, 0.05, 0.1, 0.3, 0.5, 1.0, 3.0, 5.0])
|
|
21
|
+
|
|
22
|
+
return T, w, ni_ens_mean
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
from pystrict import strict
|
|
2
|
+
|
|
3
|
+
from PySDM import Formulae
|
|
4
|
+
from PySDM.physics.constants import si
|
|
5
|
+
from PySDM.initialisation.spectra import Lognormal
|
|
6
|
+
from PySDM.initialisation.sampling import spectral_sampling
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@strict
|
|
10
|
+
class Settings:
|
|
11
|
+
def __init__(
|
|
12
|
+
self,
|
|
13
|
+
*,
|
|
14
|
+
n_sd: int,
|
|
15
|
+
w_updraft: float,
|
|
16
|
+
T0: float,
|
|
17
|
+
seed: int,
|
|
18
|
+
dt: float,
|
|
19
|
+
):
|
|
20
|
+
|
|
21
|
+
self.n_sd = n_sd
|
|
22
|
+
self.w_updraft = w_updraft
|
|
23
|
+
|
|
24
|
+
self.N_dv_solution_droplet = 2500 / si.centimetre**3
|
|
25
|
+
self.r_mean_solution_droplet = 0.055 * si.micrometre
|
|
26
|
+
self.sigma_solution_droplet = 1.6
|
|
27
|
+
|
|
28
|
+
self.mass_of_dry_air = 1000 * si.kilogram
|
|
29
|
+
self.initial_pressure = 200 * si.hectopascals
|
|
30
|
+
self.initial_ice_supersaturation = 1.0
|
|
31
|
+
self.kappa = 0.64
|
|
32
|
+
self.initial_temperature = T0
|
|
33
|
+
|
|
34
|
+
self.formulae = Formulae(
|
|
35
|
+
particle_shape_and_density="MixedPhaseSpheres",
|
|
36
|
+
homogeneous_ice_nucleation_rate="Koop_Correction",
|
|
37
|
+
seed=seed,
|
|
38
|
+
)
|
|
39
|
+
const = self.formulae.constants
|
|
40
|
+
pvs_i = self.formulae.saturation_vapour_pressure.pvs_ice(
|
|
41
|
+
self.initial_temperature
|
|
42
|
+
)
|
|
43
|
+
self.initial_water_vapour_mixing_ratio = const.eps / (
|
|
44
|
+
self.initial_pressure / self.initial_ice_supersaturation / pvs_i - 1
|
|
45
|
+
)
|
|
46
|
+
dry_air_density = (
|
|
47
|
+
self.formulae.trivia.p_d(
|
|
48
|
+
self.initial_pressure, self.initial_water_vapour_mixing_ratio
|
|
49
|
+
)
|
|
50
|
+
/ self.initial_temperature
|
|
51
|
+
/ const.Rd
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
spectrum = Lognormal(
|
|
55
|
+
norm_factor=self.N_dv_solution_droplet / dry_air_density,
|
|
56
|
+
m_mode=self.r_mean_solution_droplet,
|
|
57
|
+
s_geom=self.sigma_solution_droplet,
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
self.r_dry, self.specific_concentration = spectral_sampling.Linear(
|
|
61
|
+
spectrum
|
|
62
|
+
).sample(n_sd)
|
|
63
|
+
|
|
64
|
+
self.t_duration = 7200
|
|
65
|
+
self.dt = dt
|
|
66
|
+
self.n_output = int(self.t_duration / 100)
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
|
|
3
|
+
from PySDM_examples.utils import BasicSimulation
|
|
4
|
+
|
|
5
|
+
import PySDM.products as PySDM_products
|
|
6
|
+
from PySDM.backends import CPU
|
|
7
|
+
from PySDM.builder import Builder
|
|
8
|
+
from PySDM.dynamics import (
|
|
9
|
+
AmbientThermodynamics,
|
|
10
|
+
Condensation,
|
|
11
|
+
Freezing,
|
|
12
|
+
VapourDepositionOnIce,
|
|
13
|
+
)
|
|
14
|
+
from PySDM.environments import Parcel
|
|
15
|
+
from PySDM.initialisation import discretise_multiplicities, equilibrate_wet_radii
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class Simulation(BasicSimulation):
|
|
19
|
+
def __init__(self, settings, backend=CPU):
|
|
20
|
+
|
|
21
|
+
dt = settings.dt
|
|
22
|
+
|
|
23
|
+
formulae = settings.formulae
|
|
24
|
+
|
|
25
|
+
env = Parcel(
|
|
26
|
+
mixed_phase=True,
|
|
27
|
+
dt=dt,
|
|
28
|
+
mass_of_dry_air=settings.mass_of_dry_air,
|
|
29
|
+
p0=settings.initial_pressure,
|
|
30
|
+
initial_water_vapour_mixing_ratio=settings.initial_water_vapour_mixing_ratio,
|
|
31
|
+
T0=settings.initial_temperature,
|
|
32
|
+
w=settings.w_updraft,
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
builder = Builder(
|
|
36
|
+
backend=backend(
|
|
37
|
+
formulae=settings.formulae,
|
|
38
|
+
**(
|
|
39
|
+
{"override_jit_flags": {"parallel": False}}
|
|
40
|
+
if backend == CPU
|
|
41
|
+
else {}
|
|
42
|
+
),
|
|
43
|
+
),
|
|
44
|
+
n_sd=settings.n_sd,
|
|
45
|
+
environment=env,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
builder.add_dynamic(AmbientThermodynamics())
|
|
49
|
+
builder.add_dynamic(Condensation())
|
|
50
|
+
builder.add_dynamic(VapourDepositionOnIce())
|
|
51
|
+
builder.add_dynamic(
|
|
52
|
+
Freezing(
|
|
53
|
+
singular=False, homogeneous_freezing=True, immersion_freezing=False
|
|
54
|
+
)
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
self.n_sd = settings.n_sd
|
|
58
|
+
self.multiplicities = discretise_multiplicities(
|
|
59
|
+
settings.specific_concentration * env.mass_of_dry_air
|
|
60
|
+
)
|
|
61
|
+
self.r_dry = settings.r_dry
|
|
62
|
+
v_dry = settings.formulae.trivia.volume(radius=self.r_dry)
|
|
63
|
+
kappa = settings.kappa
|
|
64
|
+
|
|
65
|
+
self.r_wet = equilibrate_wet_radii(
|
|
66
|
+
r_dry=self.r_dry,
|
|
67
|
+
environment=builder.particulator.environment,
|
|
68
|
+
kappa_times_dry_volume=kappa * v_dry,
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
attributes = {
|
|
72
|
+
"multiplicity": self.multiplicities,
|
|
73
|
+
"dry volume": v_dry,
|
|
74
|
+
"kappa times dry volume": kappa * v_dry,
|
|
75
|
+
"signed water mass": formulae.particle_shape_and_density.radius_to_mass(
|
|
76
|
+
self.r_wet
|
|
77
|
+
),
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
products = [
|
|
81
|
+
PySDM_products.Time(name="t"),
|
|
82
|
+
PySDM_products.AmbientRelativeHumidity(name="RH_ice", unit="%"),
|
|
83
|
+
PySDM_products.ParticleConcentration(
|
|
84
|
+
name="n_i", unit="1/m**3", radius_range=(-np.inf, 0)
|
|
85
|
+
),
|
|
86
|
+
]
|
|
87
|
+
|
|
88
|
+
self.n_output = settings.n_output
|
|
89
|
+
self.n_substeps = int(settings.t_duration / dt / self.n_output)
|
|
90
|
+
super().__init__(builder.build(attributes, products))
|
|
91
|
+
|
|
92
|
+
def save(self, output):
|
|
93
|
+
cell_id = 0
|
|
94
|
+
output["t"].append(self.particulator.products["t"].get())
|
|
95
|
+
output["ni"].append(self.particulator.products["n_i"].get()[cell_id])
|
|
96
|
+
output["RHi"].append(self.particulator.products["RH_ice"].get()[cell_id])
|
|
97
|
+
|
|
98
|
+
def run(self):
|
|
99
|
+
output = {
|
|
100
|
+
"t": [],
|
|
101
|
+
"ni": [],
|
|
102
|
+
"RHi": [],
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
self.save(output)
|
|
106
|
+
|
|
107
|
+
RHi_old = self.particulator.products["RH_ice"].get()[0].copy()
|
|
108
|
+
for _ in range(self.n_output):
|
|
109
|
+
|
|
110
|
+
self.particulator.run(self.n_substeps)
|
|
111
|
+
|
|
112
|
+
self.save(output)
|
|
113
|
+
|
|
114
|
+
RHi = self.particulator.products["RH_ice"].get()[0].copy()
|
|
115
|
+
dRHi = (RHi_old - RHi) / RHi_old
|
|
116
|
+
if dRHi > 0.0 and RHi < 130.0:
|
|
117
|
+
print("break")
|
|
118
|
+
break
|
|
119
|
+
RHi_old = RHi
|
|
120
|
+
|
|
121
|
+
return output["ni"][-1]
|
|
@@ -92,6 +92,8 @@ Example notebooks include:
|
|
|
92
92
|
- condensation and aqueous-chemistry
|
|
93
93
|
- `PySDM_examples.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)
|
|
94
94
|
- `PySDM_examples.Jaruga_and_Pawlowska_2018`: exploration of numerical convergence using the above Hoppel-gap simulation setup
|
|
95
|
+
- freezing
|
|
96
|
+
- `PySDM_examples.Spichtinger_et_al_2023`: <mark>homogeneous freezing</mark> and ice growth (<mark>Wegener-Bergeron-Findeisen process</mark>)
|
|
95
97
|
|
|
96
98
|
The parcel environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
|
|
97
99
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pysdm-examples
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.131
|
|
4
4
|
Summary: PySDM usage examples reproducing results from literature and depicting how to use PySDM from Python Jupyter notebooks
|
|
5
5
|
Home-page: https://github.com/open-atmos/PySDM
|
|
6
6
|
Author: https://github.com/open-atmos/PySDM/graphs/contributors
|
|
@@ -15,6 +15,7 @@ Requires-Dist: PyMPDATA
|
|
|
15
15
|
Requires-Dist: open-atmos-jupyter-utils
|
|
16
16
|
Requires-Dist: pystrict
|
|
17
17
|
Requires-Dist: matplotlib
|
|
18
|
+
Requires-Dist: Pillow
|
|
18
19
|
Requires-Dist: joblib
|
|
19
20
|
Requires-Dist: ipywidgets
|
|
20
21
|
Requires-Dist: seaborn
|
|
@@ -128,6 +129,8 @@ Example notebooks include:
|
|
|
128
129
|
- condensation and aqueous-chemistry
|
|
129
130
|
- <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Kreidenweis_et_al_2003.html">Kreidenweis_et_al_2003</a>: <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)
|
|
130
131
|
- <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Jaruga_and_Pawlowska_2018.html">Jaruga_and_Pawlowska_2018</a>: exploration of numerical convergence using the above Hoppel-gap simulation setup
|
|
132
|
+
- freezing
|
|
133
|
+
- <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>)
|
|
131
134
|
|
|
132
135
|
The parcel environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
|
|
133
136
|
|
|
@@ -115,6 +115,12 @@ PySDM_examples/Shipway_and_Hill_2012/settings.py
|
|
|
115
115
|
PySDM_examples/Shipway_and_Hill_2012/simulation.py
|
|
116
116
|
PySDM_examples/Singer_Ward/__init__.py
|
|
117
117
|
PySDM_examples/Singer_Ward/aerosol.py
|
|
118
|
+
PySDM_examples/Spichtinger_et_al_2023/__init__.py
|
|
119
|
+
PySDM_examples/Spichtinger_et_al_2023/settings.py
|
|
120
|
+
PySDM_examples/Spichtinger_et_al_2023/simulation.py
|
|
121
|
+
PySDM_examples/Spichtinger_et_al_2023/data/__init__.py
|
|
122
|
+
PySDM_examples/Spichtinger_et_al_2023/data/reference_bulk.py
|
|
123
|
+
PySDM_examples/Spichtinger_et_al_2023/data/simulation_data.py
|
|
118
124
|
PySDM_examples/Srivastava_1982/__init__.py
|
|
119
125
|
PySDM_examples/Srivastava_1982/equations.py
|
|
120
126
|
PySDM_examples/Srivastava_1982/example.py
|
|
@@ -126,7 +132,7 @@ PySDM_examples/Van_Hook_1968/__init__.py
|
|
|
126
132
|
PySDM_examples/Yang_et_al_2018/__init__.py
|
|
127
133
|
PySDM_examples/Yang_et_al_2018/settings.py
|
|
128
134
|
PySDM_examples/Yang_et_al_2018/simulation.py
|
|
129
|
-
PySDM_examples/
|
|
135
|
+
PySDM_examples/Zaba_et_al/__init__.py
|
|
130
136
|
PySDM_examples/_HOWTOs/__init__.py
|
|
131
137
|
PySDM_examples/deJong_Azimi/__init__.py
|
|
132
138
|
PySDM_examples/deJong_Azimi/cloudy_data.py
|
|
@@ -30,6 +30,10 @@ setup(
|
|
|
30
30
|
"pystrict",
|
|
31
31
|
# https://github.com/matplotlib/matplotlib/issues/28551
|
|
32
32
|
"matplotlib" + ("!=3.9.1" if CI else ""),
|
|
33
|
+
"Pillow"
|
|
34
|
+
+ (
|
|
35
|
+
"<11.3.0" if CI else ""
|
|
36
|
+
), # matplotlib triggers deprecation warnings in 11.3.0
|
|
33
37
|
"joblib",
|
|
34
38
|
"ipywidgets",
|
|
35
39
|
"seaborn",
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Abade_and_Albuquerque_2024/settings.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Alpert_and_Knopf_2016/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Alpert_and_Knopf_2016/simulation.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Alpert_and_Knopf_2016/table_1.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Alpert_and_Knopf_2016/table_2.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_and_Shima_2017/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_and_Shima_2017/example.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_and_Shima_2017/settings.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_and_Shima_2017/simulation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2015/example_benchmark.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2025/curved_text.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2025/frozen_fraction.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2025/make_particulator.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Arabas_et_al_2025/run_simulation.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bartman_2020_MasterThesis/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bulenok_2023_MasterThesis/setups.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Bulenok_2023_MasterThesis/utils.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Ervens_and_Feingold_2012/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Ervens_and_Feingold_2012/settings.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jensen_and_Nugent_2017/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jensen_and_Nugent_2017/plotting.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jensen_and_Nugent_2017/settings.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jensen_and_Nugent_2017/simulation.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jensen_and_Nugent_2017/table_3.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Jouzel_and_Merlivat_1984/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Kinzer_And_Gunn_1951/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Kinzer_And_Gunn_1951/table_1_and_2.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Kreidenweis_et_al_2003/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Kreidenweis_et_al_2003/settings.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Kreidenweis_et_al_2003/simulation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Lowe_et_al_2019/aerosol_code.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Lowe_et_al_2019/constants_def.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Merlivat_and_Nief_1967/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Morrison_and_Grabowski_2007/common.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Niedermeier_et_al_2014/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Niedermeier_et_al_2014/settings.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Niedermeier_et_al_2014/simulation.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Pierchala_et_al_2022/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Pierchala_et_al_2022/commons.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Rozanski_and_Sonntag_1982/multibox.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/error_measure.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/example_timing.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/tutorial_example.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shima_et_al_2009/tutorial_settings.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shipway_and_Hill_2012/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shipway_and_Hill_2012/settings.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/Shipway_and_Hill_2012/simulation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/deJong_Mackay_et_al_2023/settings_0D.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/gui_controller.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/gui_settings.py
RENAMED
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/gui_viewer.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/mpdata_2d.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/kinematic_2d/simulation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.129 → pysdm_examples-2.131}/PySDM_examples/utils/widgets/progbar_updater.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|