PySDM-examples 3.0.0rc38__tar.gz → 3.0.0rc40__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.0rc38/pysdm_examples.egg-info → pysdm_examples-3.0.0rc40}/PKG-INFO +3 -3
- {pysdm_examples-3.0.0rc38/PySDM_examples/Luettmer_homogeneous_freezing → pysdm_examples-3.0.0rc40/PySDM_examples/Luettmer_et_al_2026}/commons.py +2 -2
- {pysdm_examples-3.0.0rc38/PySDM_examples/Luettmer_homogeneous_freezing → pysdm_examples-3.0.0rc40/PySDM_examples/Luettmer_et_al_2026}/plot.py +45 -45
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/pyproject.toml +3 -3
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40/pysdm_examples.egg-info}/PKG-INFO +3 -3
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/pysdm_examples.egg-info/SOURCES.txt +5 -5
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/pysdm_examples.egg-info/requires.txt +2 -2
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/pysdm_examples.egg-info/scm_file_list.json +9 -9
- pysdm_examples-3.0.0rc40/pysdm_examples.egg-info/scm_version.json +8 -0
- pysdm_examples-3.0.0rc38/pysdm_examples.egg-info/scm_version.json +0 -8
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/MANIFEST.in +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abade_and_Albuquerque_2024/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abade_and_Albuquerque_2024/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Alpert_and_Knopf_2016/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Alpert_and_Knopf_2016/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Alpert_and_Knopf_2016/table.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Alpert_and_Knopf_2016/table_1.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Alpert_and_Knopf_2016/table_2.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_and_Pawlowska_2011/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_and_Pawlowska_2011/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_and_Pawlowska_2011/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_and_Shima_2017/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_and_Shima_2017/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_and_Shima_2017/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2015/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2015/example.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2015/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2015/spin_up.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/commons.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/curved_text.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/frozen_fraction.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/make_particulator.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/plots.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/run_simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bartman_2020_MasterThesis/fig_5_SCIPY_VS_ADAPTIVE.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bartman_et_al_2021/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bartman_et_al_2021/label.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Berry_1967/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Berry_1967/example.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Berry_1967/example_fig_6.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Berry_1967/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Berry_1967/spectrum_plotter.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bieli_et_al_2022/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bieli_et_al_2022/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bieli_et_al_2022/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bolin_1958/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bolot_et_al_2013/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bulenok_2023_MasterThesis/performance_comparison_Srivastava_Setup.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Ervens_and_Feingold_2012/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Ervens_and_Feingold_2012/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Fisher_1991/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Gonfiantini_1986/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Graf_et_al_2019/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jensen_and_Nugent_2017/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jensen_and_Nugent_2017/plotting.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jensen_and_Nugent_2017/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jensen_and_Nugent_2017/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jensen_and_Nugent_2017/table_3.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jouzel_and_Merlivat_1984/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jouzel_and_Merlivat_1984/thermodynamic_profiles.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Kinzer_And_Gunn_1951/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Kinzer_And_Gunn_1951/table_1_and_2.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Kreidenweis_et_al_2003/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Kreidenweis_et_al_2003/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Kreidenweis_et_al_2003/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lamb_et_al_2017/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Long_1974/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Long_1974/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Long_1974/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lowe_et_al_2019/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lowe_et_al_2019/aerosol.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lowe_et_al_2019/aerosol_code.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lowe_et_al_2019/constants_def.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lowe_et_al_2019/plot_helper.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lowe_et_al_2019/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lowe_et_al_2019/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38/PySDM_examples/Luettmer_homogeneous_freezing → pysdm_examples-3.0.0rc40/PySDM_examples/Luettmer_et_al_2026}/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38/PySDM_examples/Luettmer_homogeneous_freezing → pysdm_examples-3.0.0rc40/PySDM_examples/Luettmer_et_al_2026}/settings.py +0 -0
- {pysdm_examples-3.0.0rc38/PySDM_examples/Luettmer_homogeneous_freezing → pysdm_examples-3.0.0rc40/PySDM_examples/Luettmer_et_al_2026}/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Matsushima_et_al_2023/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Merlivat_and_Nief_1967/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Miyake_et_al_1968/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Morrison_and_Grabowski_2007/common.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Murray_et_al_2010/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Murray_et_al_2010/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Niedermeier_et_al_2014/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Niedermeier_et_al_2014/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Niedermeier_et_al_2014/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Pierchala_et_al_2022/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Pierchala_et_al_2022/commons.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Pruppacher_and_Rasmussen_1979/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Pyrcel/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Pyrcel/profile_plotter.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Pyrcel/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Pyrcel/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Rogers_1975/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Rozanski_and_Sonntag_1982/multibox.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/error_measure.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/example.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/example_timing.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/tutorial_example.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/tutorial_settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shipway_and_Hill_2012/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shipway_and_Hill_2012/plot.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shipway_and_Hill_2012/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shipway_and_Hill_2012/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Singer_Ward/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Singer_Ward/aerosol.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Spichtinger_et_al_2023/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Spichtinger_et_al_2023/data/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Spichtinger_et_al_2023/data/reference_bulk.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Spichtinger_et_al_2023/data/simulation_data.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Spichtinger_et_al_2023/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Spichtinger_et_al_2023/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Srivastava_1982/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Srivastava_1982/equations.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Srivastava_1982/example.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Srivastava_1982/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Srivastava_1982/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Stewart_1975/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Strzabala_2025_BEng/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Toon_et_al_1980/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Van_Hook_1968/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Ware_et_al_2025/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Ware_et_al_2025/example.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Yang_et_al_2018/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Yang_et_al_2018/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Yang_et_al_2018/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Zaba_et_al/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/_HOWTOs/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Azimi/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Azimi/cloudy_data.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Azimi/cloudy_data_0d.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Azimi/settings1D.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Azimi/simulation_0D.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Mackay_et_al_2023/simulation1D.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_0D.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_ss.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/seeding/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/seeding/settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/seeding/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/basic_simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/dummy_controller.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/fields.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/gui.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/gui_controller.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/gui_settings.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/gui_viewer.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/make_default_product_collection.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/mpdata_2d.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/plots.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/simulation.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/storage.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/progbar_controller.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/pvanim.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/read_vtk_1d.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/widgets/__init__.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/widgets/freezer.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/README.md +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/docs/pysdm_examples_landing.md +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/pysdm_examples.egg-info/dependency_links.txt +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/pysdm_examples.egg-info/top_level.txt +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/setup.cfg +0 -0
- {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/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.0rc40
|
|
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
|
|
@@ -35,9 +35,9 @@ Requires-Dist: ipywidgets==8.1.7; extra == "ci-version-pins"
|
|
|
35
35
|
Requires-Dist: seaborn==0.13.2; extra == "ci-version-pins"
|
|
36
36
|
Requires-Dist: numdifftools==0.9.42; extra == "ci-version-pins"
|
|
37
37
|
Requires-Dist: vtk==9.6.2; extra == "ci-version-pins"
|
|
38
|
-
Requires-Dist: pyrcel==
|
|
38
|
+
Requires-Dist: pyrcel==2.0.0; extra == "ci-version-pins"
|
|
39
39
|
Requires-Dist: pyvinecopulib==0.7.6; extra == "ci-version-pins"
|
|
40
|
-
Requires-Dist: cmcrameri==1.
|
|
40
|
+
Requires-Dist: cmcrameri==1.10; extra == "ci-version-pins"
|
|
41
41
|
Requires-Dist: cmap==0.7.2; extra == "ci-version-pins"
|
|
42
42
|
Dynamic: description
|
|
43
43
|
Dynamic: description-content-type
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""commons for homogeneous freezing notebooks"""
|
|
2
2
|
|
|
3
|
-
from PySDM_examples.
|
|
4
|
-
from PySDM_examples.
|
|
3
|
+
from PySDM_examples.Luettmer_et_al_2026.settings import Settings
|
|
4
|
+
from PySDM_examples.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
|
|
@@ -10,6 +10,7 @@ formulae = Formulae(particle_shape_and_density="MixedPhaseSpheres")
|
|
|
10
10
|
|
|
11
11
|
ax_title_size = 18
|
|
12
12
|
ax_lab_fsize = 15
|
|
13
|
+
ax_lab_fsize2 = 19
|
|
13
14
|
tick_fsize = 15
|
|
14
15
|
T_frz_bins = np.linspace(-40, -34, num=60, endpoint=True)
|
|
15
16
|
T_frz_bins_kelvin = np.linspace(230, 240, num=100, endpoint=True)
|
|
@@ -77,14 +78,13 @@ def plot_thermodynamics_and_bulk(
|
|
|
77
78
|
).homogeneous_ice_nucleation_rate
|
|
78
79
|
koop_murray_2016 = j_hom_rate.j_hom(T, d_a_w_ice)
|
|
79
80
|
j_hom_rate = Formulae(
|
|
80
|
-
homogeneous_ice_nucleation_rate="
|
|
81
|
+
homogeneous_ice_nucleation_rate="KoopMurray2016_DWA"
|
|
81
82
|
).homogeneous_ice_nucleation_rate
|
|
82
|
-
|
|
83
|
-
abs_diff_j_hom = (
|
|
83
|
+
KoopMurray2016_DWA = j_hom_rate.j_hom(T, d_a_w_ice)
|
|
84
|
+
abs_diff_j_hom = (KoopMurray2016_DWA - koop_murray_2016) / koop_murray_2016
|
|
84
85
|
else:
|
|
85
86
|
radius = np.asarray(output["radius"])
|
|
86
87
|
multiplicity = np.asarray(output["multiplicity"])
|
|
87
|
-
|
|
88
88
|
_, axs = pyplot.subplots(1, 4, figsize=(20, 5), constrained_layout=True)
|
|
89
89
|
|
|
90
90
|
# Temperture profile
|
|
@@ -92,8 +92,9 @@ def plot_thermodynamics_and_bulk(
|
|
|
92
92
|
ax = axs[iax]
|
|
93
93
|
ax.plot(time, RH, color="red", linestyle="dashdot", label=r"$S_\text{w}$")
|
|
94
94
|
ax.plot(time, RHi, color="blue", linestyle="--", label=r"$S_\text{i}$")
|
|
95
|
-
ax.
|
|
96
|
-
ax.
|
|
95
|
+
ax.set_xlabel("time [s]", fontsize=ax_lab_fsize2)
|
|
96
|
+
ax.set_ylabel("saturation ratio", fontsize=ax_lab_fsize2)
|
|
97
|
+
ax.legend(loc="center left", fontsize=ax_lab_fsize2)
|
|
97
98
|
ax.set_xlim(time[0], t_lim)
|
|
98
99
|
ax.tick_params(labelsize=tick_fsize)
|
|
99
100
|
ax.set_title(title_add[iax] + r"ambient thermodynamics", fontsize=ax_lab_fsize)
|
|
@@ -102,9 +103,9 @@ def plot_thermodynamics_and_bulk(
|
|
|
102
103
|
|
|
103
104
|
twin = ax.twinx()
|
|
104
105
|
twin.plot(time, T, color="black", linestyle="-", label="T")
|
|
105
|
-
twin.set_xlabel("time [s]", fontsize=
|
|
106
|
-
twin.set_ylabel("temperature [K]", fontsize=
|
|
107
|
-
twin.legend(loc="upper left", fontsize=
|
|
106
|
+
twin.set_xlabel("time [s]", fontsize=ax_lab_fsize2)
|
|
107
|
+
twin.set_ylabel("temperature [K]", fontsize=ax_lab_fsize2)
|
|
108
|
+
twin.legend(loc="upper left", fontsize=ax_lab_fsize2)
|
|
108
109
|
twin.tick_params(labelsize=tick_fsize)
|
|
109
110
|
|
|
110
111
|
# mixing ratio and number concentration
|
|
@@ -115,9 +116,9 @@ def plot_thermodynamics_and_bulk(
|
|
|
115
116
|
ax.plot(time, qv, color="black", linestyle="-", label=r"$q_\text{v}$")
|
|
116
117
|
ax.set_yscale("log")
|
|
117
118
|
ax.set_ylim(1e-5, 1e-2)
|
|
118
|
-
ax.set_xlabel("time [s]", fontsize=
|
|
119
|
-
ax.set_ylabel(r"mixing ratio [$\mathrm{kg \, kg^{-1}}$]", fontsize=
|
|
120
|
-
ax.legend(fontsize=
|
|
119
|
+
ax.set_xlabel("time [s]", fontsize=ax_lab_fsize2)
|
|
120
|
+
ax.set_ylabel(r"mixing ratio [$\mathrm{kg \, kg^{-1}}$]", fontsize=ax_lab_fsize2)
|
|
121
|
+
ax.legend(fontsize=ax_lab_fsize2)
|
|
121
122
|
ax.tick_params(labelsize=tick_fsize)
|
|
122
123
|
ax.set_xlim(time[0], t_lim)
|
|
123
124
|
ax.grid(visible=True)
|
|
@@ -128,12 +129,12 @@ def plot_thermodynamics_and_bulk(
|
|
|
128
129
|
twin.plot(time, nc, color="red", linestyle="densly dashdot", label="water")
|
|
129
130
|
twin.plot(time, ni, color="blue", linestyle="densly dashed", label="ice")
|
|
130
131
|
twin.set_yscale("log")
|
|
131
|
-
twin.set_xlabel("time [s]", fontsize=
|
|
132
|
+
twin.set_xlabel("time [s]", fontsize=ax_lab_fsize2)
|
|
132
133
|
twin.set_ylabel(
|
|
133
|
-
r"number concentration [$\mathrm{kg^{-1}}$]", fontsize=
|
|
134
|
+
r"number concentration [$\mathrm{kg^{-1}}$]", fontsize=ax_lab_fsize2
|
|
134
135
|
)
|
|
135
136
|
twin.tick_params(labelsize=tick_fsize)
|
|
136
|
-
|
|
137
|
+
# tfrz histogram or mean radius
|
|
137
138
|
iax = 2
|
|
138
139
|
ax = axs[iax]
|
|
139
140
|
if show_tf:
|
|
@@ -147,8 +148,8 @@ def plot_thermodynamics_and_bulk(
|
|
|
147
148
|
linewidth=1.5,
|
|
148
149
|
)
|
|
149
150
|
ax.set_xlim(left=234, right=239)
|
|
150
|
-
ax.set_xlabel("freezing temperature [K]", fontsize=
|
|
151
|
-
ax.set_ylabel("frozen fraction", fontsize=
|
|
151
|
+
ax.set_xlabel("freezing temperature [K]", fontsize=ax_lab_fsize2)
|
|
152
|
+
ax.set_ylabel("frozen fraction", fontsize=ax_lab_fsize2)
|
|
152
153
|
ax.tick_params(labelsize=tick_fsize)
|
|
153
154
|
ax.grid(visible=True)
|
|
154
155
|
ax.axvline(x=first_T_frz, color="black", linestyle=":")
|
|
@@ -158,22 +159,21 @@ def plot_thermodynamics_and_bulk(
|
|
|
158
159
|
ax.plot(time, ri * 1e6, color="blue", linestyle="--", label="ice")
|
|
159
160
|
ax.set_yscale("log")
|
|
160
161
|
ax.set_ylim(1e-2, 1e2)
|
|
161
|
-
ax.set_xlabel("time [s]", fontsize=
|
|
162
|
-
ax.set_ylabel("mean radius [µm]", fontsize=
|
|
163
|
-
ax.legend(fontsize=
|
|
162
|
+
ax.set_xlabel("time [s]", fontsize=ax_lab_fsize2)
|
|
163
|
+
ax.set_ylabel("mean radius [µm]", fontsize=ax_lab_fsize2)
|
|
164
|
+
ax.legend(fontsize=ax_lab_fsize2)
|
|
164
165
|
ax.set_xlim(time[0], t_lim)
|
|
165
166
|
ax.tick_params(labelsize=tick_fsize)
|
|
166
167
|
ax.grid(visible=True)
|
|
167
168
|
ax.axvline(x=first_ice_time, color="black", linestyle=":")
|
|
168
169
|
ax.set_title(title_add[iax] + r" mean radius", fontsize=ax_lab_fsize)
|
|
169
|
-
|
|
170
170
|
# Water activity difference profile
|
|
171
171
|
iax = 3
|
|
172
172
|
ax = axs[iax]
|
|
173
173
|
if show_jhom:
|
|
174
174
|
lin_s_SP2023 = "--"
|
|
175
175
|
lin_s_KM2016 = "-"
|
|
176
|
-
if simulation["settings"]["hom_freezing"] == "
|
|
176
|
+
if simulation["settings"]["hom_freezing"] == "KoopMurray2016_DWA":
|
|
177
177
|
lin_s_SP2023 = "-"
|
|
178
178
|
lin_s_KM2016 = "--"
|
|
179
179
|
|
|
@@ -186,21 +186,21 @@ def plot_thermodynamics_and_bulk(
|
|
|
186
186
|
)
|
|
187
187
|
ax.plot(
|
|
188
188
|
time,
|
|
189
|
-
|
|
189
|
+
KoopMurray2016_DWA,
|
|
190
190
|
color="red",
|
|
191
191
|
linestyle=lin_s_SP2023,
|
|
192
192
|
label="JHOM-DWA",
|
|
193
193
|
)
|
|
194
194
|
ax.set_ylabel(
|
|
195
|
-
r"nucleation rate [$\mathrm{m^{-3} \, s^{-1}}$]", fontsize=
|
|
195
|
+
r"nucleation rate [$\mathrm{m^{-3} \, s^{-1}}$]", fontsize=ax_lab_fsize2
|
|
196
196
|
)
|
|
197
197
|
ax.set_ylim(1e-30, 1e30)
|
|
198
198
|
ax.set_title(title_add[iax] + r"nucleation rates", fontsize=ax_lab_fsize)
|
|
199
|
-
ax.legend(loc="upper left", fontsize=
|
|
199
|
+
ax.legend(loc="upper left", fontsize=ax_lab_fsize2)
|
|
200
200
|
ax.set_yscale("log")
|
|
201
201
|
ax.set_xlim(time[0], t_lim)
|
|
202
202
|
ax.axvline(x=first_ice_time, color="black", linestyle=":")
|
|
203
|
-
ax.set_xlabel("time [s]", fontsize=
|
|
203
|
+
ax.set_xlabel("time [s]", fontsize=ax_lab_fsize2)
|
|
204
204
|
if plot_daw:
|
|
205
205
|
twin = ax.twinx()
|
|
206
206
|
twin.plot(
|
|
@@ -211,9 +211,9 @@ def plot_thermodynamics_and_bulk(
|
|
|
211
211
|
label=r"$\Delta a_{w}$",
|
|
212
212
|
)
|
|
213
213
|
twin.set_ylim(0.2, 0.35)
|
|
214
|
-
twin.set_ylabel("water activity difference", fontsize=
|
|
214
|
+
twin.set_ylabel("water activity difference", fontsize=ax_lab_fsize2)
|
|
215
215
|
twin.tick_params(labelsize=tick_fsize)
|
|
216
|
-
twin.legend(loc="lower left", fontsize=
|
|
216
|
+
twin.legend(loc="lower left", fontsize=ax_lab_fsize2)
|
|
217
217
|
else:
|
|
218
218
|
twin = ax.twinx()
|
|
219
219
|
twin.plot(
|
|
@@ -224,16 +224,16 @@ def plot_thermodynamics_and_bulk(
|
|
|
224
224
|
linestyle="dashdot",
|
|
225
225
|
)
|
|
226
226
|
twin.set_ylim(-10, 10)
|
|
227
|
-
twin.set_ylabel("relative error", fontsize=
|
|
227
|
+
twin.set_ylabel("relative error", fontsize=ax_lab_fsize2)
|
|
228
228
|
twin.tick_params(labelsize=tick_fsize)
|
|
229
|
-
twin.legend(loc="lower left", fontsize=
|
|
229
|
+
twin.legend(loc="lower left", fontsize=ax_lab_fsize2)
|
|
230
230
|
else:
|
|
231
231
|
ax.scatter(radius * 1e6, multiplicity)
|
|
232
232
|
ax.set_yscale("log")
|
|
233
233
|
ax.set_xscale("log")
|
|
234
234
|
ax.set_xlim(1e-3, 5e-0)
|
|
235
|
-
ax.set_xlabel("initial radius [µm]", fontsize=
|
|
236
|
-
ax.set_ylabel("multiplicity", fontsize=
|
|
235
|
+
ax.set_xlabel("initial radius [µm]", fontsize=ax_lab_fsize2)
|
|
236
|
+
ax.set_ylabel("multiplicity", fontsize=ax_lab_fsize2)
|
|
237
237
|
ax.set_title(title_add[iax] + r"CCN size distribution", fontsize=ax_lab_fsize)
|
|
238
238
|
|
|
239
239
|
ax.tick_params(labelsize=tick_fsize)
|
|
@@ -241,7 +241,6 @@ def plot_thermodynamics_and_bulk(
|
|
|
241
241
|
|
|
242
242
|
|
|
243
243
|
def plot_freezing_temperatures_histogram(ax, simulation, plot_rhi=False):
|
|
244
|
-
|
|
245
244
|
number_of_ensemble_runs = simulation["settings"]["number_of_ensemble_runs"]
|
|
246
245
|
|
|
247
246
|
for i in range(number_of_ensemble_runs):
|
|
@@ -333,7 +332,6 @@ def plot_freezing_temperatures_2d_histogram_seaborn(
|
|
|
333
332
|
height=4,
|
|
334
333
|
width=5,
|
|
335
334
|
):
|
|
336
|
-
|
|
337
335
|
sns.set_theme(style="ticks")
|
|
338
336
|
|
|
339
337
|
second_axis = True
|
|
@@ -375,23 +373,24 @@ def plot_freezing_temperatures_2d_histogram_seaborn(
|
|
|
375
373
|
ens_variable = np.array(ens_variable)
|
|
376
374
|
ens_variable_sec = np.array(ens_variable_sec)
|
|
377
375
|
y_label, y_label_sec = "", ""
|
|
376
|
+
ylim = None
|
|
378
377
|
if ens_variable_name == "w_updraft":
|
|
379
378
|
y_label = r"vertical updraft [$\mathrm{m \, s^{-1}}$]"
|
|
380
379
|
y_label_sec = r"cooling rate [$\mathrm{mK \, s^{-1}}$]"
|
|
381
380
|
ens_variable_sec = ens_variable_sec * 1e3
|
|
382
381
|
binwidth = 0.25
|
|
383
382
|
elif ens_variable_name == "n_ccn":
|
|
384
|
-
y_label = r"ccn concentration [$\mathrm{cm^{-3}}$]"
|
|
383
|
+
y_label = r"ccn concentration at STP [$\mathrm{cm^{-3}}$]"
|
|
385
384
|
y_label_sec = r"radius [$\mathrm{\mu m}$]"
|
|
386
385
|
ens_variable = ens_variable / 1.0e6
|
|
387
386
|
ens_variable_sec = ens_variable_sec * 1.0e6
|
|
388
387
|
binwidth = 0.25
|
|
389
388
|
elif ens_variable_name == "sig":
|
|
390
|
-
y_label = r"
|
|
389
|
+
y_label = r"standard deviation DSD"
|
|
391
390
|
second_axis = False
|
|
392
391
|
y_log = False
|
|
393
392
|
binwidth = 0.1
|
|
394
|
-
|
|
393
|
+
ylim = (1.5, 2.0)
|
|
395
394
|
ens_variable_label = np.unique(np.sort(ens_variable))
|
|
396
395
|
|
|
397
396
|
xlim = (232.5, 240)
|
|
@@ -399,6 +398,7 @@ def plot_freezing_temperatures_2d_histogram_seaborn(
|
|
|
399
398
|
x=T_frz_hist,
|
|
400
399
|
y=ens_variable,
|
|
401
400
|
xlim=xlim,
|
|
401
|
+
ylim=ylim,
|
|
402
402
|
)
|
|
403
403
|
if y_log:
|
|
404
404
|
h.ax_joint.set(yscale="log")
|
|
@@ -432,7 +432,6 @@ def plot_freezing_temperatures_2d_histogram_seaborn(
|
|
|
432
432
|
h.ax_marg_y.remove()
|
|
433
433
|
|
|
434
434
|
if second_axis:
|
|
435
|
-
|
|
436
435
|
ax2 = h.ax_joint.secondary_yaxis("right", functions=(lambda y: y, lambda y: y))
|
|
437
436
|
ax2.set_yticks(ens_variable_label)
|
|
438
437
|
ax2.set_yticklabels([f"{v:.1f}" for v in ens_variable_sec])
|
|
@@ -453,7 +452,6 @@ def plot_freezing_temperatures_2d_histogram_seaborn(
|
|
|
453
452
|
def plot_ensemble_bulk(
|
|
454
453
|
ax, ensemble_simulations, var_name, title_add=""
|
|
455
454
|
): # pylint: disable=too-many-nested-blocks
|
|
456
|
-
|
|
457
455
|
colors = ["blue", "red", "cyan"]
|
|
458
456
|
linestyles = ["-", "--", ":"]
|
|
459
457
|
pyplot.rcParams["axes.prop_cycle"] = cycler(color=colors) + cycler(
|
|
@@ -517,10 +515,10 @@ def plot_ensemble_bulk(
|
|
|
517
515
|
title = r"$n_\text{i}$"
|
|
518
516
|
ax.set_xlim(1e6, 1e10)
|
|
519
517
|
elif var_name == "IWC":
|
|
520
|
-
ax.set_xscale("
|
|
518
|
+
ax.set_xscale("linear")
|
|
521
519
|
x_label = r"mixing ratio [$\mathrm{kg \, kg^{-1}}$]"
|
|
522
520
|
title = "ice mixing ratio"
|
|
523
|
-
ax.set_xlim(
|
|
521
|
+
ax.set_xlim(3e-4, 1e-3)
|
|
524
522
|
elif var_name == "freezing_fraction":
|
|
525
523
|
title = r"$n_\text{frz}$"
|
|
526
524
|
x_label = r"frozen fraction [$\mathrm{\%}$]"
|
|
@@ -531,19 +529,21 @@ def plot_ensemble_bulk(
|
|
|
531
529
|
y_label = r"ccn concentration [$\mathrm{cm^{-3}}$]"
|
|
532
530
|
ens_label = r"$n_\text{ccn}$ ensemble"
|
|
533
531
|
elif ens_var_name == "w_updraft":
|
|
534
|
-
ax.set_yscale("
|
|
532
|
+
ax.set_yscale("linear")
|
|
535
533
|
y_label = r"vertical updraft [$\mathrm{m \, s^{-1}}$]"
|
|
536
534
|
ens_label = "w ensemble"
|
|
537
|
-
elif ens_var_name
|
|
535
|
+
elif ens_var_name in ("sigma_droplet_distribution", "sig"):
|
|
538
536
|
y_label = r"standard deviation DSD"
|
|
539
537
|
ens_label = r"$\sigma$ ensemble"
|
|
540
538
|
elif ens_var_name == "n_sd":
|
|
541
539
|
ax.set_yscale("log")
|
|
542
540
|
y_label = "number of super-particles"
|
|
543
541
|
ens_label = r"$n_\text{sd}$ ensemble"
|
|
542
|
+
|
|
544
543
|
ax.set_title(title_add + " " + title + " for " + ens_label, fontsize=ax_lab_fsize)
|
|
545
|
-
ax.set_xlabel(x_label, fontsize=
|
|
546
|
-
ax.set_ylabel(y_label, fontsize=
|
|
544
|
+
ax.set_xlabel(x_label, fontsize=ax_lab_fsize2)
|
|
545
|
+
ax.set_ylabel(y_label, fontsize=ax_lab_fsize2)
|
|
547
546
|
ax.grid(visible=True)
|
|
548
547
|
ax.legend(fontsize=ax_lab_fsize)
|
|
548
|
+
ax.tick_params(labelsize=tick_fsize + 2)
|
|
549
549
|
return ax
|
|
@@ -4,7 +4,7 @@ local_scheme = "no-local-version"
|
|
|
4
4
|
version_scheme = "post-release"
|
|
5
5
|
|
|
6
6
|
[build-system]
|
|
7
|
-
requires = ['setuptools==
|
|
7
|
+
requires = ['setuptools==84.0.0', 'setuptools-scm==10.2.1']
|
|
8
8
|
build-backend = "setuptools.build_meta"
|
|
9
9
|
|
|
10
10
|
[tool.setuptools.packages.find]
|
|
@@ -49,9 +49,9 @@ CI_version_pins = [
|
|
|
49
49
|
"seaborn==0.13.2",
|
|
50
50
|
"numdifftools==0.9.42",
|
|
51
51
|
"vtk==9.6.2",
|
|
52
|
-
"pyrcel==
|
|
52
|
+
"pyrcel==2.0.0",
|
|
53
53
|
"pyvinecopulib==0.7.6",
|
|
54
|
-
"cmcrameri==1.
|
|
54
|
+
"cmcrameri==1.10",
|
|
55
55
|
"cmap==0.7.2",
|
|
56
56
|
]
|
|
57
57
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pysdm-examples
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.0rc40
|
|
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
|
|
@@ -35,9 +35,9 @@ Requires-Dist: ipywidgets==8.1.7; extra == "ci-version-pins"
|
|
|
35
35
|
Requires-Dist: seaborn==0.13.2; extra == "ci-version-pins"
|
|
36
36
|
Requires-Dist: numdifftools==0.9.42; extra == "ci-version-pins"
|
|
37
37
|
Requires-Dist: vtk==9.6.2; extra == "ci-version-pins"
|
|
38
|
-
Requires-Dist: pyrcel==
|
|
38
|
+
Requires-Dist: pyrcel==2.0.0; extra == "ci-version-pins"
|
|
39
39
|
Requires-Dist: pyvinecopulib==0.7.6; extra == "ci-version-pins"
|
|
40
|
-
Requires-Dist: cmcrameri==1.
|
|
40
|
+
Requires-Dist: cmcrameri==1.10; extra == "ci-version-pins"
|
|
41
41
|
Requires-Dist: cmap==0.7.2; extra == "ci-version-pins"
|
|
42
42
|
Dynamic: description
|
|
43
43
|
Dynamic: description-content-type
|
|
@@ -87,11 +87,11 @@ PySDM_examples/Lowe_et_al_2019/constants_def.py
|
|
|
87
87
|
PySDM_examples/Lowe_et_al_2019/plot_helper.py
|
|
88
88
|
PySDM_examples/Lowe_et_al_2019/settings.py
|
|
89
89
|
PySDM_examples/Lowe_et_al_2019/simulation.py
|
|
90
|
-
PySDM_examples/
|
|
91
|
-
PySDM_examples/
|
|
92
|
-
PySDM_examples/
|
|
93
|
-
PySDM_examples/
|
|
94
|
-
PySDM_examples/
|
|
90
|
+
PySDM_examples/Luettmer_et_al_2026/__init__.py
|
|
91
|
+
PySDM_examples/Luettmer_et_al_2026/commons.py
|
|
92
|
+
PySDM_examples/Luettmer_et_al_2026/plot.py
|
|
93
|
+
PySDM_examples/Luettmer_et_al_2026/settings.py
|
|
94
|
+
PySDM_examples/Luettmer_et_al_2026/simulation.py
|
|
95
95
|
PySDM_examples/Matsushima_et_al_2023/__init__.py
|
|
96
96
|
PySDM_examples/Merlivat_and_Nief_1967/__init__.py
|
|
97
97
|
PySDM_examples/Miyake_et_al_1968/__init__.py
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/pysdm_examples.egg-info/scm_file_list.json
RENAMED
|
@@ -137,15 +137,15 @@
|
|
|
137
137
|
"PySDM_examples/Lowe_et_al_2019/plot_helper.py",
|
|
138
138
|
"PySDM_examples/Lowe_et_al_2019/settings.py",
|
|
139
139
|
"PySDM_examples/Lowe_et_al_2019/simulation.py",
|
|
140
|
-
"PySDM_examples/
|
|
141
|
-
"PySDM_examples/
|
|
142
|
-
"PySDM_examples/
|
|
143
|
-
"PySDM_examples/
|
|
144
|
-
"PySDM_examples/
|
|
145
|
-
"PySDM_examples/
|
|
146
|
-
"PySDM_examples/
|
|
147
|
-
"PySDM_examples/
|
|
148
|
-
"PySDM_examples/
|
|
140
|
+
"PySDM_examples/Luettmer_et_al_2026/__init__.py",
|
|
141
|
+
"PySDM_examples/Luettmer_et_al_2026/commons.py",
|
|
142
|
+
"PySDM_examples/Luettmer_et_al_2026/fig_1_2_3.ipynb",
|
|
143
|
+
"PySDM_examples/Luettmer_et_al_2026/fig_4_5_6_S3_S4.ipynb",
|
|
144
|
+
"PySDM_examples/Luettmer_et_al_2026/fig_S1_S2.ipynb",
|
|
145
|
+
"PySDM_examples/Luettmer_et_al_2026/plot.py",
|
|
146
|
+
"PySDM_examples/Luettmer_et_al_2026/settings.py",
|
|
147
|
+
"PySDM_examples/Luettmer_et_al_2026/simple_homogenous_freezing_example.ipynb",
|
|
148
|
+
"PySDM_examples/Luettmer_et_al_2026/simulation.py",
|
|
149
149
|
"PySDM_examples/Matsushima_et_al_2023/__init__.py",
|
|
150
150
|
"PySDM_examples/Matsushima_et_al_2023/figure_1.ipynb",
|
|
151
151
|
"PySDM_examples/Merlivat_and_Nief_1967/__init__.py",
|
|
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-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Alpert_and_Knopf_2016/table.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
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2015/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2015/example.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2015/settings.py
RENAMED
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2015/spin_up.py
RENAMED
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/commons.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/plots.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bartman_et_al_2021/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bartman_et_al_2021/label.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Berry_1967/example_fig_6.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Berry_1967/spectrum_plotter.py
RENAMED
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bieli_et_al_2022/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bieli_et_al_2022/settings.py
RENAMED
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bieli_et_al_2022/simulation.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bolot_et_al_2013/__init__.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-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Fisher_1991/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Gonfiantini_1986/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Graf_et_al_2019/__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
|
{pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lamb_et_al_2017/__init__.py
RENAMED
|
File without changes
|