PySDM-examples 2.120__tar.gz → 2.122__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.120 → pysdm_examples-2.122}/PKG-INFO +7 -4
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2015/example.py +1 -1
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +1 -1
- pysdm_examples-2.122/PySDM_examples/Fisher_1991/__init__.py +11 -0
- pysdm_examples-2.122/PySDM_examples/Jouzel_and_Merlivat_1984/__init__.py +11 -0
- pysdm_examples-2.122/PySDM_examples/Jouzel_and_Merlivat_1984/thermodynamic_profiles.py +32 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py +2 -6
- pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d/__init__.py +19 -0
- {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/gui.py +4 -2
- {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/gui_viewer.py +1 -1
- {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/mpdata_2d.py +1 -1
- {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/simulation.py +2 -2
- {pysdm_examples-2.120 → pysdm_examples-2.122}/docs/pysdm_examples_landing.md +6 -3
- {pysdm_examples-2.120 → pysdm_examples-2.122}/pyproject.toml +1 -1
- {pysdm_examples-2.120 → pysdm_examples-2.122}/pysdm_examples.egg-info/PKG-INFO +7 -4
- {pysdm_examples-2.120 → pysdm_examples-2.122}/pysdm_examples.egg-info/SOURCES.txt +14 -13
- pysdm_examples-2.120/PySDM_examples/Morrison_and_Grabowski_2007/cumulus.py +0 -136
- pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998/__init__.py +0 -9
- pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998/sounding.py +0 -93
- {pysdm_examples-2.120 → pysdm_examples-2.122}/MANIFEST.in +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abade_and_Albuquerque_2024/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abade_and_Albuquerque_2024/simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Alpert_and_Knopf_2016/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Alpert_and_Knopf_2016/simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Alpert_and_Knopf_2016/table.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Alpert_and_Knopf_2016/table_1.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Alpert_and_Knopf_2016/table_2.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_and_Shima_2017/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_and_Shima_2017/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_and_Shima_2017/simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2015/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2015/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2015/spin_up.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/commons.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/curved_text.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/frozen_fraction.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/make_particulator.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/plots.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/run_simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bartman_2020_MasterThesis/fig_5_SCIPY_VS_ADAPTIVE.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bartman_et_al_2021/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bartman_et_al_2021/label.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Berry_1967/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Berry_1967/example.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Berry_1967/example_fig_6.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Berry_1967/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Berry_1967/spectrum_plotter.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bieli_et_al_2022/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bieli_et_al_2022/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bieli_et_al_2022/simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bolin_1958/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bolot_et_al_2013/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bulenok_2023_MasterThesis/performance_comparison_Srivastava_Setup.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Ervens_and_Feingold_2012/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Ervens_and_Feingold_2012/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Gonfiantini_1986/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Graf_et_al_2019/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/plotting.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/table_3.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kinzer_And_Gunn_1951/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kinzer_And_Gunn_1951/table_1_and_2.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kreidenweis_et_al_2003/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kreidenweis_et_al_2003/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kreidenweis_et_al_2003/simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lamb_et_al_2017/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/aerosol.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/aerosol_code.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/constants_def.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/plot_helper.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Merlivat_and_Nief_1967/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Miyake_et_al_1968/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Morrison_and_Grabowski_2007/common.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Niedermeier_et_al_2014/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Niedermeier_et_al_2014/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Niedermeier_et_al_2014/simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pierchala_et_al_2022/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pierchala_et_al_2022/commons.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pruppacher_and_Rasmussen_1979/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pyrcel/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pyrcel/profile_plotter.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pyrcel/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pyrcel/simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Rozanski_and_Sonntag_1982/multibox.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/error_measure.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/example.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/example_timing.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/tutorial_example.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/tutorial_settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shipway_and_Hill_2012/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shipway_and_Hill_2012/plot.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shipway_and_Hill_2012/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shipway_and_Hill_2012/simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Singer_Ward/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Singer_Ward/aerosol.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Srivastava_1982/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Srivastava_1982/equations.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Srivastava_1982/example.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Srivastava_1982/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Srivastava_1982/simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Stewart_1975/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Toon_et_al_1980/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Van_Hook_1968/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Yang_et_al_2018/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Yang_et_al_2018/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Yang_et_al_2018/simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Zaba_et_al_2025/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/_HOWTOs/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Azimi/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Azimi/cloudy_data.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Azimi/cloudy_data_0d.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Azimi/settings1D.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Azimi/simulation_0D.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/simulation1D.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_0D.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_ss.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/seeding/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/seeding/settings.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/seeding/simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/basic_simulation.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/dummy_controller.py +0 -0
- {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/fields.py +0 -0
- {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/gui_controller.py +0 -0
- {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/gui_settings.py +0 -0
- {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/make_default_product_collection.py +0 -0
- {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/plots.py +0 -0
- {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/storage.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/progbar_controller.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/pvanim.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/read_vtk_1d.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/widgets/__init__.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/widgets/freezer.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/README.md +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/pysdm_examples.egg-info/dependency_links.txt +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/pysdm_examples.egg-info/requires.txt +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/pysdm_examples.egg-info/top_level.txt +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/setup.cfg +0 -0
- {pysdm_examples-2.120 → pysdm_examples-2.122}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pysdm-examples
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.122
|
|
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
|
|
@@ -75,9 +75,12 @@ The 2D prescribed-flow framework used here can be traced back to the work of
|
|
|
75
75
|
and dry-air potential temperature.
|
|
76
76
|
In PySDM-examples, the Eulerian advection is handled using the <a href="https://doi.org/10.21105/joss.03896">PyMPDATA</a> Numba-based
|
|
77
77
|
implementation of the <a href="https://doi.org/10.1002/fld.1071">MPDATA numerical scheme of Smolarkiewicz (e.g., 2006)</a>.
|
|
78
|
-
An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below
|
|
79
|
+
(<a href="https://github.com/open-atmos/PySDM/blob/main/examples/PySDM_examples/_HOWTOs/paraview_hello_world.ipynb">see
|
|
80
|
+
the Paraview hello-world HOWTO Jupyter notbook for code generating the simulation and visualisation</a>):
|
|
81
|
+
<center>
|
|
82
|
+
<img src="https://github.com/open-atmos/PySDM/releases/download/tip/docs_intro_animation_ubuntu-24.04.gif" style="width:80%" />
|
|
83
|
+
</center>
|
|
81
84
|
|
|
82
85
|
Example notebooks:
|
|
83
86
|
- <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2015.html">Arabas_et_al_2015</a>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from open_atmos_jupyter_utils import TemporaryFile
|
|
2
2
|
from PySDM_examples.Arabas_et_al_2015 import Settings, SpinUp
|
|
3
|
-
from PySDM_examples.
|
|
3
|
+
from PySDM_examples.utils.kinematic_2d import Simulation, Storage
|
|
4
4
|
from PySDM_examples.utils import DummyController
|
|
5
5
|
|
|
6
6
|
from PySDM import Formulae
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2015/example_benchmark.py
RENAMED
|
@@ -2,7 +2,7 @@ import importlib
|
|
|
2
2
|
|
|
3
3
|
from matplotlib import pyplot as plt
|
|
4
4
|
from PySDM_examples.Arabas_et_al_2015 import Settings
|
|
5
|
-
from PySDM_examples.
|
|
5
|
+
from PySDM_examples.utils.kinematic_2d import Simulation, Storage
|
|
6
6
|
|
|
7
7
|
import PySDM.backends.impl_numba.conf
|
|
8
8
|
from PySDM import Formulae
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# pylint: disable=invalid-name
|
|
2
|
+
"""
|
|
3
|
+
based on the [Jouzel and Merlivat 1984](https://doi.org/10.1029/JD089iD07p11749) calculations
|
|
4
|
+
of delta_{18O} and delta_D used in d-excess formula and solved
|
|
5
|
+
by integration of the eq. (1) in
|
|
6
|
+
[Fisher 1991](https://doi.org/10.3402/tellusb.v43i5.15414) and eq. (3) in Jouzel and Merlivat 1984
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
fig_2.ipynb:
|
|
10
|
+
.. include:: ./fig_2.ipynb.badges.md
|
|
11
|
+
"""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# pylint: disable=invalid-name
|
|
2
|
+
"""
|
|
3
|
+
kinetic fractionation factors used in modelling isotopic effect
|
|
4
|
+
in snow formation, replacing saturation fractionation factors with
|
|
5
|
+
alpha_{saturation} alpha_{kinetic}
|
|
6
|
+
(see [Jouzel and Merlivat 1984](https://doi.org/10.1029/JD089iD07p11749))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
fig_8_9.ipynb:
|
|
10
|
+
.. include:: ./fig_8_9.ipynb.badges.md
|
|
11
|
+
"""
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""
|
|
2
|
+
From [Jouzel & Merlivat 1984](https://doi.org/10.1029/JD089iD07p11749).
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import numpy as np
|
|
6
|
+
from scipy.interpolate import make_interp_spline
|
|
7
|
+
|
|
8
|
+
from PySDM.physics.constants_defaults import T0
|
|
9
|
+
from PySDM.physics import si
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
pressure = make_interp_spline(
|
|
13
|
+
x=np.asarray([-10, -20, -30, -40, -50])[::-1] + T0,
|
|
14
|
+
y=np.asarray([925, 780, 690, 630, 600])[::-1] * si.mbar,
|
|
15
|
+
)
|
|
16
|
+
""" Table 1, first two columns: temperature and pressure"""
|
|
17
|
+
pressure.extrapolate = False
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def ice_saturation_curve_4(const, T):
|
|
21
|
+
"""eq. (15)"""
|
|
22
|
+
return 0.99 - 0.006 * (T - const.T0)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def vapour_mixing_ratio(formulae, T):
|
|
26
|
+
"""mixing ratio with saturation wrt ice calculated with curve 4 equation"""
|
|
27
|
+
const = formulae.constants
|
|
28
|
+
svp = formulae.saturation_vapour_pressure
|
|
29
|
+
p_v = ice_saturation_curve_4(const, T) * svp.pvs_ice(T)
|
|
30
|
+
rho_v = p_v / const.Rv / T
|
|
31
|
+
rho_d = (pressure(T) - p_v) / const.Rd / T
|
|
32
|
+
return rho_v / rho_d
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py
RENAMED
|
@@ -3,10 +3,6 @@
|
|
|
3
3
|
prescribed-flow simulation settings data from
|
|
4
4
|
[Morrison & Grabowski 2007 (JAS)](https://doi.org/10.1175/JAS3980)
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
.. include:: ./
|
|
8
|
-
|
|
9
|
-
fig_3.ipynb:
|
|
10
|
-
.. include:: ./fig_3.ipynb.badges.md
|
|
6
|
+
fig_1.ipynb:
|
|
7
|
+
.. include:: ./fig_1.ipynb.badges.md
|
|
11
8
|
"""
|
|
12
|
-
from .cumulus import Cumulus
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# pylint: disable=invalid-name
|
|
2
|
+
"""
|
|
3
|
+
The 2D prescribed-flow framework used here can be traced back to the work
|
|
4
|
+
of [Kessler 1969 (section 3C)](https://doi.org/10.1007/978-1-935704-36-2_1), can be found also in
|
|
5
|
+
[Szumowski et al. 1998 (Atmos. Res.)](https://doi.org/10.1016/S0169-8095(97)00082-3).
|
|
6
|
+
|
|
7
|
+
The setup mimics a stratiform cloud deck and features periodic horizontal boundary condition
|
|
8
|
+
and vanishing flow at vertical boundaries.
|
|
9
|
+
It was introduced in [Morrison & Grabowski 2007](https://doi.org/10.1175/JAS3980) and later adopted
|
|
10
|
+
for particle-based simulations in [Arabas et al. 2015](https://doi.org/10.5194/gmd-8-1677-2015)
|
|
11
|
+
It uses a non-devergent single-eddy flow field resulting in an updraft-downdraft pair in the domain.
|
|
12
|
+
The flow field advects two scalar fields in an Eulerian way: water vapour mixing ratio
|
|
13
|
+
and dry-air potential temperature.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from .gui_settings import GUISettings
|
|
17
|
+
from .mpdata_2d import MPDATA_2D
|
|
18
|
+
from .simulation import Simulation
|
|
19
|
+
from .storage import Storage
|
|
@@ -2,8 +2,10 @@ import os
|
|
|
2
2
|
import sys
|
|
3
3
|
|
|
4
4
|
from open_atmos_jupyter_utils import TemporaryFile
|
|
5
|
-
from PySDM_examples.
|
|
6
|
-
|
|
5
|
+
from PySDM_examples.utils.kinematic_2d.gui_controller import (
|
|
6
|
+
GUIController,
|
|
7
|
+
)
|
|
8
|
+
from PySDM_examples.utils.kinematic_2d.gui_viewer import GUIViewer
|
|
7
9
|
from PySDM_examples.utils.widgets import HTML, Tab, VBox, display
|
|
8
10
|
|
|
9
11
|
from PySDM.exporters import NetCDFExporter
|
|
@@ -3,7 +3,7 @@ import warnings
|
|
|
3
3
|
import numpy as np
|
|
4
4
|
from matplotlib import pyplot, rcParams
|
|
5
5
|
from open_atmos_jupyter_utils import save_and_make_link
|
|
6
|
-
from PySDM_examples.
|
|
6
|
+
from PySDM_examples.utils.kinematic_2d.plots import (
|
|
7
7
|
_ImagePlot,
|
|
8
8
|
_SpectrumPlot,
|
|
9
9
|
_TemperaturePlot,
|
|
@@ -5,7 +5,7 @@ from threading import Thread
|
|
|
5
5
|
import numpy as np
|
|
6
6
|
from PyMPDATA import Options, ScalarField, Solver, Stepper, VectorField
|
|
7
7
|
from PyMPDATA.boundary_conditions import Periodic
|
|
8
|
-
from PySDM_examples.
|
|
8
|
+
from PySDM_examples.utils.kinematic_2d.fields import (
|
|
9
9
|
nondivergent_vector_field_2d,
|
|
10
10
|
x_vec_coord,
|
|
11
11
|
z_vec_coord,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import numpy as np
|
|
2
|
-
from PySDM_examples.
|
|
2
|
+
from PySDM_examples.utils.kinematic_2d.make_default_product_collection import (
|
|
3
3
|
make_default_product_collection,
|
|
4
4
|
)
|
|
5
|
-
from PySDM_examples.
|
|
5
|
+
from PySDM_examples.utils.kinematic_2d.mpdata_2d import MPDATA_2D
|
|
6
6
|
from PySDM_examples.utils import DummyController
|
|
7
7
|
|
|
8
8
|
from PySDM.backends import CPU
|
|
@@ -39,9 +39,12 @@ The 2D prescribed-flow framework used here can be traced back to the work of
|
|
|
39
39
|
and dry-air potential temperature.
|
|
40
40
|
In PySDM-examples, the Eulerian advection is handled using the <a href="https://doi.org/10.21105/joss.03896">PyMPDATA</a> Numba-based
|
|
41
41
|
implementation of the <a href="https://doi.org/10.1002/fld.1071">MPDATA numerical scheme of Smolarkiewicz (e.g., 2006)</a>.
|
|
42
|
-
An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below
|
|
43
|
+
(<a href="https://github.com/open-atmos/PySDM/blob/main/examples/PySDM_examples/_HOWTOs/paraview_hello_world.ipynb">see
|
|
44
|
+
the Paraview hello-world HOWTO Jupyter notbook for code generating the simulation and visualisation</a>):
|
|
45
|
+
<center>
|
|
46
|
+
<img src="https://github.com/open-atmos/PySDM/releases/download/tip/docs_intro_animation_ubuntu-24.04.gif" style="width:80%" />
|
|
47
|
+
</center>
|
|
45
48
|
|
|
46
49
|
Example notebooks:
|
|
47
50
|
- `PySDM_examples.Arabas_et_al_2015`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pysdm-examples
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.122
|
|
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
|
|
@@ -75,9 +75,12 @@ The 2D prescribed-flow framework used here can be traced back to the work of
|
|
|
75
75
|
and dry-air potential temperature.
|
|
76
76
|
In PySDM-examples, the Eulerian advection is handled using the <a href="https://doi.org/10.21105/joss.03896">PyMPDATA</a> Numba-based
|
|
77
77
|
implementation of the <a href="https://doi.org/10.1002/fld.1071">MPDATA numerical scheme of Smolarkiewicz (e.g., 2006)</a>.
|
|
78
|
-
An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below
|
|
79
|
+
(<a href="https://github.com/open-atmos/PySDM/blob/main/examples/PySDM_examples/_HOWTOs/paraview_hello_world.ipynb">see
|
|
80
|
+
the Paraview hello-world HOWTO Jupyter notbook for code generating the simulation and visualisation</a>):
|
|
81
|
+
<center>
|
|
82
|
+
<img src="https://github.com/open-atmos/PySDM/releases/download/tip/docs_intro_animation_ubuntu-24.04.gif" style="width:80%" />
|
|
83
|
+
</center>
|
|
81
84
|
|
|
82
85
|
Example notebooks:
|
|
83
86
|
- <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2015.html">Arabas_et_al_2015</a>
|
|
@@ -53,6 +53,7 @@ PySDM_examples/Bulenok_2023_MasterThesis/setups.py
|
|
|
53
53
|
PySDM_examples/Bulenok_2023_MasterThesis/utils.py
|
|
54
54
|
PySDM_examples/Ervens_and_Feingold_2012/__init__.py
|
|
55
55
|
PySDM_examples/Ervens_and_Feingold_2012/settings.py
|
|
56
|
+
PySDM_examples/Fisher_1991/__init__.py
|
|
56
57
|
PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py
|
|
57
58
|
PySDM_examples/Gonfiantini_1986/__init__.py
|
|
58
59
|
PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py
|
|
@@ -65,6 +66,8 @@ PySDM_examples/Jensen_and_Nugent_2017/plotting.py
|
|
|
65
66
|
PySDM_examples/Jensen_and_Nugent_2017/settings.py
|
|
66
67
|
PySDM_examples/Jensen_and_Nugent_2017/simulation.py
|
|
67
68
|
PySDM_examples/Jensen_and_Nugent_2017/table_3.py
|
|
69
|
+
PySDM_examples/Jouzel_and_Merlivat_1984/__init__.py
|
|
70
|
+
PySDM_examples/Jouzel_and_Merlivat_1984/thermodynamic_profiles.py
|
|
68
71
|
PySDM_examples/Kinzer_And_Gunn_1951/__init__.py
|
|
69
72
|
PySDM_examples/Kinzer_And_Gunn_1951/table_1_and_2.py
|
|
70
73
|
PySDM_examples/Kreidenweis_et_al_2003/__init__.py
|
|
@@ -82,7 +85,6 @@ PySDM_examples/Merlivat_and_Nief_1967/__init__.py
|
|
|
82
85
|
PySDM_examples/Miyake_et_al_1968/__init__.py
|
|
83
86
|
PySDM_examples/Morrison_and_Grabowski_2007/__init__.py
|
|
84
87
|
PySDM_examples/Morrison_and_Grabowski_2007/common.py
|
|
85
|
-
PySDM_examples/Morrison_and_Grabowski_2007/cumulus.py
|
|
86
88
|
PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py
|
|
87
89
|
PySDM_examples/Niedermeier_et_al_2014/__init__.py
|
|
88
90
|
PySDM_examples/Niedermeier_et_al_2014/settings.py
|
|
@@ -118,18 +120,6 @@ PySDM_examples/Srivastava_1982/example.py
|
|
|
118
120
|
PySDM_examples/Srivastava_1982/settings.py
|
|
119
121
|
PySDM_examples/Srivastava_1982/simulation.py
|
|
120
122
|
PySDM_examples/Stewart_1975/__init__.py
|
|
121
|
-
PySDM_examples/Szumowski_et_al_1998/__init__.py
|
|
122
|
-
PySDM_examples/Szumowski_et_al_1998/fields.py
|
|
123
|
-
PySDM_examples/Szumowski_et_al_1998/gui.py
|
|
124
|
-
PySDM_examples/Szumowski_et_al_1998/gui_controller.py
|
|
125
|
-
PySDM_examples/Szumowski_et_al_1998/gui_settings.py
|
|
126
|
-
PySDM_examples/Szumowski_et_al_1998/gui_viewer.py
|
|
127
|
-
PySDM_examples/Szumowski_et_al_1998/make_default_product_collection.py
|
|
128
|
-
PySDM_examples/Szumowski_et_al_1998/mpdata_2d.py
|
|
129
|
-
PySDM_examples/Szumowski_et_al_1998/plots.py
|
|
130
|
-
PySDM_examples/Szumowski_et_al_1998/simulation.py
|
|
131
|
-
PySDM_examples/Szumowski_et_al_1998/sounding.py
|
|
132
|
-
PySDM_examples/Szumowski_et_al_1998/storage.py
|
|
133
123
|
PySDM_examples/Toon_et_al_1980/__init__.py
|
|
134
124
|
PySDM_examples/Van_Hook_1968/__init__.py
|
|
135
125
|
PySDM_examples/Yang_et_al_2018/__init__.py
|
|
@@ -158,6 +148,17 @@ PySDM_examples/utils/dummy_controller.py
|
|
|
158
148
|
PySDM_examples/utils/progbar_controller.py
|
|
159
149
|
PySDM_examples/utils/pvanim.py
|
|
160
150
|
PySDM_examples/utils/read_vtk_1d.py
|
|
151
|
+
PySDM_examples/utils/kinematic_2d/__init__.py
|
|
152
|
+
PySDM_examples/utils/kinematic_2d/fields.py
|
|
153
|
+
PySDM_examples/utils/kinematic_2d/gui.py
|
|
154
|
+
PySDM_examples/utils/kinematic_2d/gui_controller.py
|
|
155
|
+
PySDM_examples/utils/kinematic_2d/gui_settings.py
|
|
156
|
+
PySDM_examples/utils/kinematic_2d/gui_viewer.py
|
|
157
|
+
PySDM_examples/utils/kinematic_2d/make_default_product_collection.py
|
|
158
|
+
PySDM_examples/utils/kinematic_2d/mpdata_2d.py
|
|
159
|
+
PySDM_examples/utils/kinematic_2d/plots.py
|
|
160
|
+
PySDM_examples/utils/kinematic_2d/simulation.py
|
|
161
|
+
PySDM_examples/utils/kinematic_2d/storage.py
|
|
161
162
|
PySDM_examples/utils/widgets/__init__.py
|
|
162
163
|
PySDM_examples/utils/widgets/freezer.py
|
|
163
164
|
PySDM_examples/utils/widgets/progbar_updater.py
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import numpy as np
|
|
2
|
-
from PySDM_examples.Morrison_and_Grabowski_2007.common import Common
|
|
3
|
-
from PySDM_examples.Szumowski_et_al_1998 import sounding
|
|
4
|
-
from scipy.integrate import solve_ivp
|
|
5
|
-
from scipy.interpolate import interp1d
|
|
6
|
-
|
|
7
|
-
from PySDM.physics import si
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class Cumulus(Common):
|
|
11
|
-
def __init__(self, formulae):
|
|
12
|
-
super().__init__(formulae)
|
|
13
|
-
self.size = (9 * si.km, 2.7 * si.km)
|
|
14
|
-
self.hx = 1.8 * si.km
|
|
15
|
-
self.x0 = 3.6 * si.km
|
|
16
|
-
self.xc = self.size[0] / 2
|
|
17
|
-
self.dz = 50 * si.m
|
|
18
|
-
self.grid = tuple(s / self.dz for s in self.size)
|
|
19
|
-
for g in self.grid:
|
|
20
|
-
assert int(g) == g
|
|
21
|
-
self.grid = tuple(int(g) for g in self.grid)
|
|
22
|
-
self.dt = 1 * si.s
|
|
23
|
-
self.simulation_time = 60 * si.min
|
|
24
|
-
|
|
25
|
-
self.__init_profiles()
|
|
26
|
-
|
|
27
|
-
def __init_profiles(self):
|
|
28
|
-
z_of_p = self.__z_of_p()
|
|
29
|
-
T_of_z = interp1d(z_of_p, sounding.temperature)
|
|
30
|
-
p_of_z = interp1d(z_of_p, sounding.pressure)
|
|
31
|
-
q_of_z = interp1d(z_of_p, sounding.mixing_ratio)
|
|
32
|
-
|
|
33
|
-
z_points_scalar = np.linspace(
|
|
34
|
-
self.dz / 2, self.size[-1] - self.dz / 2, num=self.grid[-1], endpoint=True
|
|
35
|
-
)
|
|
36
|
-
z_points_both = np.linspace(
|
|
37
|
-
0, self.size[-1], num=2 * self.grid[-1] + 1, endpoint=True
|
|
38
|
-
)
|
|
39
|
-
rhod_of_z = self.__rhod_of_z(T_of_z, p_of_z, q_of_z, z_of_p, z_points_both)
|
|
40
|
-
self.rhod = interp1d(z_points_both / self.size[-1], rhod_of_z)
|
|
41
|
-
self.initial_water_vapour_mixing_ratio = q_of_z(z_points_scalar)
|
|
42
|
-
self.th_std0 = self.formulae.trivia.th_std(
|
|
43
|
-
p_of_z(z_points_scalar), T_of_z(z_points_scalar)
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
def rhod_of_zZ(self, zZ):
|
|
47
|
-
return self.rhod(zZ)
|
|
48
|
-
|
|
49
|
-
def __rhod_of_z(self, T_of_z, p_of_z, q_of_z, z_of_p, z_points):
|
|
50
|
-
def drhod_dz(z, _):
|
|
51
|
-
lv = self.formulae.latent_heat_vapourisation.lv(T_of_z(z))
|
|
52
|
-
return self.formulae.hydrostatics.drho_dz(
|
|
53
|
-
p_of_z(z), T_of_z(z), q_of_z(z), lv
|
|
54
|
-
)
|
|
55
|
-
|
|
56
|
-
theta_std0 = self.formulae.trivia.th_std(
|
|
57
|
-
sounding.pressure[0], sounding.temperature[0]
|
|
58
|
-
)
|
|
59
|
-
rhod0 = self.formulae.state_variable_triplet.rho_d(
|
|
60
|
-
sounding.pressure[0], sounding.mixing_ratio[0], theta_std0
|
|
61
|
-
)
|
|
62
|
-
rhod_solution = solve_ivp(
|
|
63
|
-
fun=drhod_dz,
|
|
64
|
-
t_span=(0, np.amax(z_of_p)),
|
|
65
|
-
y0=np.asarray((rhod0,)),
|
|
66
|
-
t_eval=z_points,
|
|
67
|
-
)
|
|
68
|
-
assert rhod_solution.success
|
|
69
|
-
return rhod_solution.y[0]
|
|
70
|
-
|
|
71
|
-
def __z_of_p(self):
|
|
72
|
-
T_virt_of_p = interp1d(
|
|
73
|
-
sounding.pressure,
|
|
74
|
-
sounding.temperature
|
|
75
|
-
* (1 + sounding.mixing_ratio / self.formulae.constants.eps)
|
|
76
|
-
/ (1 + sounding.mixing_ratio),
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
def dz_dp(p, _):
|
|
80
|
-
return (
|
|
81
|
-
-self.formulae.constants.Rd
|
|
82
|
-
* T_virt_of_p(p)
|
|
83
|
-
/ self.formulae.constants.g_std
|
|
84
|
-
/ p
|
|
85
|
-
)
|
|
86
|
-
|
|
87
|
-
z_of_p = solve_ivp(
|
|
88
|
-
fun=dz_dp,
|
|
89
|
-
t_span=(max(sounding.pressure), min(sounding.pressure)),
|
|
90
|
-
y0=np.asarray((0,)),
|
|
91
|
-
t_eval=sounding.pressure,
|
|
92
|
-
)
|
|
93
|
-
assert z_of_p.success
|
|
94
|
-
return z_of_p.y[0]
|
|
95
|
-
|
|
96
|
-
@staticmethod
|
|
97
|
-
def z0(z):
|
|
98
|
-
return np.where(z <= 1.7 * si.km, 0, 0.7 * si.km)
|
|
99
|
-
|
|
100
|
-
@staticmethod
|
|
101
|
-
def hz(z):
|
|
102
|
-
return np.where(z <= 1.7 * si.km, 3.4 * si.km, 2.0 * si.km)
|
|
103
|
-
|
|
104
|
-
def alpha(self, x):
|
|
105
|
-
return np.where(abs(x - self.xc) <= 0.9 * si.km, 1, 0)
|
|
106
|
-
|
|
107
|
-
@staticmethod
|
|
108
|
-
def beta(x):
|
|
109
|
-
return np.where(x <= 5.4 * si.km, 1, -1)
|
|
110
|
-
|
|
111
|
-
@staticmethod
|
|
112
|
-
def A1(t):
|
|
113
|
-
if t <= 900 * si.s:
|
|
114
|
-
return 5.73e2
|
|
115
|
-
if t <= 1500 * si.s:
|
|
116
|
-
return 5.73e2 + 2.02e3 * (1 + np.cos(np.pi * ((t - 900) / 600 + 1)))
|
|
117
|
-
return 1.15e3 + 1.72e3 * (1 + np.cos(np.pi * ((min(t, 2400) - 1500) / 900 + 1)))
|
|
118
|
-
|
|
119
|
-
@staticmethod
|
|
120
|
-
def A2(t):
|
|
121
|
-
if t <= 300 * si.s:
|
|
122
|
-
return 0
|
|
123
|
-
if t <= 1500 * si.s:
|
|
124
|
-
return 6e2 * (1 + np.cos(np.pi * ((t - 300) / 600 - 1)))
|
|
125
|
-
return 5e2 * (1 + np.cos(np.pi * ((min(2400, t) - 1500) / 900 - 1)))
|
|
126
|
-
|
|
127
|
-
# see Appendix (page 2859)
|
|
128
|
-
def stream_function(self, xX, zZ, t):
|
|
129
|
-
x = xX * self.size[0]
|
|
130
|
-
z = zZ * self.size[-1]
|
|
131
|
-
return (
|
|
132
|
-
-self.A1(t)
|
|
133
|
-
* np.cos(self.alpha(x) * np.pi * (x - self.x0) / self.hx)
|
|
134
|
-
* np.sin(self.beta(x) * np.pi * (z - self.z0(z)) / self.hz(z))
|
|
135
|
-
+ self.A2(t) / 2 * zZ**2
|
|
136
|
-
)
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# pylint: disable=invalid-name
|
|
2
|
-
"""
|
|
3
|
-
2D GUI-equipped prescribed-flow warm-rain case based on
|
|
4
|
-
[Szumowski et al. 1998 (Atmos. Res.)](https://doi.org/10.1016/S0169-8095(97)00082-3)
|
|
5
|
-
"""
|
|
6
|
-
from .gui_settings import GUISettings
|
|
7
|
-
from .mpdata_2d import MPDATA_2D
|
|
8
|
-
from .simulation import Simulation
|
|
9
|
-
from .storage import Storage
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import numpy as np
|
|
2
|
-
|
|
3
|
-
from PySDM.physics import constants as const
|
|
4
|
-
from PySDM.physics import si
|
|
5
|
-
|
|
6
|
-
pressure = (
|
|
7
|
-
np.array(
|
|
8
|
-
(
|
|
9
|
-
1014,
|
|
10
|
-
1010,
|
|
11
|
-
1000,
|
|
12
|
-
990,
|
|
13
|
-
975,
|
|
14
|
-
960,
|
|
15
|
-
950,
|
|
16
|
-
925,
|
|
17
|
-
900,
|
|
18
|
-
875,
|
|
19
|
-
850,
|
|
20
|
-
825,
|
|
21
|
-
800,
|
|
22
|
-
790,
|
|
23
|
-
775,
|
|
24
|
-
765,
|
|
25
|
-
755,
|
|
26
|
-
745,
|
|
27
|
-
730,
|
|
28
|
-
715,
|
|
29
|
-
700,
|
|
30
|
-
)
|
|
31
|
-
)
|
|
32
|
-
* si.hPa
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
temperature = (
|
|
36
|
-
np.array(
|
|
37
|
-
(
|
|
38
|
-
25.2,
|
|
39
|
-
24.8,
|
|
40
|
-
23.6,
|
|
41
|
-
22.5,
|
|
42
|
-
21.8,
|
|
43
|
-
20.5,
|
|
44
|
-
19.9,
|
|
45
|
-
18.2,
|
|
46
|
-
16.8,
|
|
47
|
-
14.8,
|
|
48
|
-
13.3,
|
|
49
|
-
11.9,
|
|
50
|
-
11.0,
|
|
51
|
-
11.3,
|
|
52
|
-
10.9,
|
|
53
|
-
11.2,
|
|
54
|
-
10.2,
|
|
55
|
-
11.0,
|
|
56
|
-
11.2,
|
|
57
|
-
10.0,
|
|
58
|
-
8.8,
|
|
59
|
-
)
|
|
60
|
-
)
|
|
61
|
-
* si.kelvin
|
|
62
|
-
+ const.T0
|
|
63
|
-
)
|
|
64
|
-
|
|
65
|
-
mixing_ratio = (
|
|
66
|
-
np.array(
|
|
67
|
-
(
|
|
68
|
-
14.5,
|
|
69
|
-
14.5,
|
|
70
|
-
14.5,
|
|
71
|
-
14.0,
|
|
72
|
-
13.7,
|
|
73
|
-
13.9,
|
|
74
|
-
13.9,
|
|
75
|
-
10.3,
|
|
76
|
-
10.3,
|
|
77
|
-
10.0,
|
|
78
|
-
9.9,
|
|
79
|
-
8.9,
|
|
80
|
-
7.9,
|
|
81
|
-
4.0,
|
|
82
|
-
2.3,
|
|
83
|
-
1.2,
|
|
84
|
-
1.2,
|
|
85
|
-
0.9,
|
|
86
|
-
0.6,
|
|
87
|
-
2.0,
|
|
88
|
-
1.6,
|
|
89
|
-
)
|
|
90
|
-
)
|
|
91
|
-
* si.g
|
|
92
|
-
/ si.kg
|
|
93
|
-
)
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abade_and_Albuquerque_2024/settings.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Alpert_and_Knopf_2016/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Alpert_and_Knopf_2016/simulation.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Alpert_and_Knopf_2016/table_1.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Alpert_and_Knopf_2016/table_2.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_and_Shima_2017/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_and_Shima_2017/example.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_and_Shima_2017/settings.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_and_Shima_2017/simulation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/curved_text.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/frozen_fraction.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/make_particulator.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/run_simulation.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/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.120 → pysdm_examples-2.122}/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bulenok_2023_MasterThesis/setups.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bulenok_2023_MasterThesis/utils.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Ervens_and_Feingold_2012/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Ervens_and_Feingold_2012/settings.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/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.120 → pysdm_examples-2.122}/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/plotting.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/settings.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/simulation.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/table_3.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kinzer_And_Gunn_1951/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kinzer_And_Gunn_1951/table_1_and_2.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kreidenweis_et_al_2003/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kreidenweis_et_al_2003/settings.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kreidenweis_et_al_2003/simulation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/aerosol_code.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/constants_def.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Merlivat_and_Nief_1967/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Morrison_and_Grabowski_2007/common.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Niedermeier_et_al_2014/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Niedermeier_et_al_2014/settings.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Niedermeier_et_al_2014/simulation.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pierchala_et_al_2022/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/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
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Rozanski_and_Sonntag_1982/multibox.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/error_measure.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/example_timing.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/tutorial_example.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/tutorial_settings.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shipway_and_Hill_2012/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py
RENAMED
|
File without changes
|
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shipway_and_Hill_2012/settings.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/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.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py
RENAMED
|
File without changes
|
{pysdm_examples-2.120 → pysdm_examples-2.122}/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
|
|
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.120 → pysdm_examples-2.122}/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
|
|
File without changes
|