PySDM-examples 3.0.0rc37__tar.gz → 3.0.0rc39__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.0rc37/pysdm_examples.egg-info → pysdm_examples-3.0.0rc39}/PKG-INFO +3 -3
- {pysdm_examples-3.0.0rc37/PySDM_examples/Luettmer_homogeneous_freezing → pysdm_examples-3.0.0rc39/PySDM_examples/Luettmer_et_al_2026}/commons.py +2 -2
- {pysdm_examples-3.0.0rc37/PySDM_examples/Luettmer_homogeneous_freezing → pysdm_examples-3.0.0rc39/PySDM_examples/Luettmer_et_al_2026}/plot.py +45 -45
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/pyproject.toml +3 -3
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39/pysdm_examples.egg-info}/PKG-INFO +3 -3
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/pysdm_examples.egg-info/SOURCES.txt +7 -5
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/pysdm_examples.egg-info/requires.txt +2 -2
- pysdm_examples-3.0.0rc39/pysdm_examples.egg-info/scm_file_list.json +290 -0
- pysdm_examples-3.0.0rc39/pysdm_examples.egg-info/scm_version.json +8 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/MANIFEST.in +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Abade_and_Albuquerque_2024/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Abade_and_Albuquerque_2024/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Alpert_and_Knopf_2016/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Alpert_and_Knopf_2016/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Alpert_and_Knopf_2016/table.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Alpert_and_Knopf_2016/table_1.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Alpert_and_Knopf_2016/table_2.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_and_Pawlowska_2011/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_and_Pawlowska_2011/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_and_Pawlowska_2011/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_and_Shima_2017/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_and_Shima_2017/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_and_Shima_2017/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_et_al_2015/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_et_al_2015/example.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_et_al_2015/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_et_al_2015/spin_up.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_et_al_2025/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_et_al_2025/commons.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_et_al_2025/curved_text.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_et_al_2025/frozen_fraction.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_et_al_2025/make_particulator.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_et_al_2025/plots.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Arabas_et_al_2025/run_simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Bartman_2020_MasterThesis/fig_5_SCIPY_VS_ADAPTIVE.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Bartman_et_al_2021/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Bartman_et_al_2021/label.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Berry_1967/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Berry_1967/example.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Berry_1967/example_fig_6.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Berry_1967/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Berry_1967/spectrum_plotter.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Bieli_et_al_2022/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Bieli_et_al_2022/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Bieli_et_al_2022/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Bolin_1958/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Bolot_et_al_2013/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Bulenok_2023_MasterThesis/performance_comparison_Srivastava_Setup.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Ervens_and_Feingold_2012/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Ervens_and_Feingold_2012/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Fisher_1991/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Gonfiantini_1986/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Graf_et_al_2019/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Jensen_and_Nugent_2017/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Jensen_and_Nugent_2017/plotting.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Jensen_and_Nugent_2017/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Jensen_and_Nugent_2017/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Jensen_and_Nugent_2017/table_3.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Jouzel_and_Merlivat_1984/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Jouzel_and_Merlivat_1984/thermodynamic_profiles.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Kinzer_And_Gunn_1951/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Kinzer_And_Gunn_1951/table_1_and_2.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Kreidenweis_et_al_2003/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Kreidenweis_et_al_2003/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Kreidenweis_et_al_2003/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Lamb_et_al_2017/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Long_1974/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Long_1974/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Long_1974/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Lowe_et_al_2019/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Lowe_et_al_2019/aerosol.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Lowe_et_al_2019/aerosol_code.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Lowe_et_al_2019/constants_def.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Lowe_et_al_2019/plot_helper.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Lowe_et_al_2019/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Lowe_et_al_2019/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37/PySDM_examples/Luettmer_homogeneous_freezing → pysdm_examples-3.0.0rc39/PySDM_examples/Luettmer_et_al_2026}/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37/PySDM_examples/Luettmer_homogeneous_freezing → pysdm_examples-3.0.0rc39/PySDM_examples/Luettmer_et_al_2026}/settings.py +0 -0
- {pysdm_examples-3.0.0rc37/PySDM_examples/Luettmer_homogeneous_freezing → pysdm_examples-3.0.0rc39/PySDM_examples/Luettmer_et_al_2026}/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Matsushima_et_al_2023/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Merlivat_and_Nief_1967/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Miyake_et_al_1968/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Morrison_and_Grabowski_2007/common.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Murray_et_al_2010/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Murray_et_al_2010/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Niedermeier_et_al_2014/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Niedermeier_et_al_2014/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Niedermeier_et_al_2014/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Pierchala_et_al_2022/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Pierchala_et_al_2022/commons.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Pruppacher_and_Rasmussen_1979/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Pyrcel/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Pyrcel/profile_plotter.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Pyrcel/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Pyrcel/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Rogers_1975/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Rozanski_and_Sonntag_1982/multibox.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Shima_et_al_2009/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Shima_et_al_2009/error_measure.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Shima_et_al_2009/example.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Shima_et_al_2009/example_timing.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Shima_et_al_2009/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Shima_et_al_2009/tutorial_example.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Shima_et_al_2009/tutorial_settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Shipway_and_Hill_2012/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Shipway_and_Hill_2012/plot.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Shipway_and_Hill_2012/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Shipway_and_Hill_2012/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Singer_Ward/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Singer_Ward/aerosol.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Spichtinger_et_al_2023/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Spichtinger_et_al_2023/data/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Spichtinger_et_al_2023/data/reference_bulk.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Spichtinger_et_al_2023/data/simulation_data.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Spichtinger_et_al_2023/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Spichtinger_et_al_2023/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Srivastava_1982/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Srivastava_1982/equations.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Srivastava_1982/example.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Srivastava_1982/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Srivastava_1982/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Stewart_1975/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Strzabala_2025_BEng/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Toon_et_al_1980/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Van_Hook_1968/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Ware_et_al_2025/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Ware_et_al_2025/example.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Yang_et_al_2018/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Yang_et_al_2018/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Yang_et_al_2018/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/Zaba_et_al/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/_HOWTOs/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/deJong_Azimi/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/deJong_Azimi/cloudy_data.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/deJong_Azimi/cloudy_data_0d.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/deJong_Azimi/settings1D.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/deJong_Azimi/simulation_0D.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/deJong_Mackay_et_al_2023/simulation1D.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_0D.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_ss.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/seeding/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/seeding/settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/seeding/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/basic_simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/dummy_controller.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/kinematic_2d/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/kinematic_2d/fields.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/kinematic_2d/gui.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/kinematic_2d/gui_controller.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/kinematic_2d/gui_settings.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/kinematic_2d/gui_viewer.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/kinematic_2d/make_default_product_collection.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/kinematic_2d/mpdata_2d.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/kinematic_2d/plots.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/kinematic_2d/simulation.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/kinematic_2d/storage.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/progbar_controller.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/pvanim.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/read_vtk_1d.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/widgets/__init__.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/widgets/freezer.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/README.md +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/docs/pysdm_examples_landing.md +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/pysdm_examples.egg-info/dependency_links.txt +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/pysdm_examples.egg-info/top_level.txt +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/setup.cfg +0 -0
- {pysdm_examples-3.0.0rc37 → pysdm_examples-3.0.0rc39}/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.0rc39
|
|
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.0rc39
|
|
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
|
|
@@ -191,4 +191,6 @@ pysdm_examples.egg-info/PKG-INFO
|
|
|
191
191
|
pysdm_examples.egg-info/SOURCES.txt
|
|
192
192
|
pysdm_examples.egg-info/dependency_links.txt
|
|
193
193
|
pysdm_examples.egg-info/requires.txt
|
|
194
|
+
pysdm_examples.egg-info/scm_file_list.json
|
|
195
|
+
pysdm_examples.egg-info/scm_version.json
|
|
194
196
|
pysdm_examples.egg-info/top_level.txt
|