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.
Files changed (199) hide show
  1. {pysdm_examples-3.0.0rc38/pysdm_examples.egg-info → pysdm_examples-3.0.0rc40}/PKG-INFO +3 -3
  2. {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
  3. {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
  4. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/pyproject.toml +3 -3
  5. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40/pysdm_examples.egg-info}/PKG-INFO +3 -3
  6. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/pysdm_examples.egg-info/SOURCES.txt +5 -5
  7. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/pysdm_examples.egg-info/requires.txt +2 -2
  8. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/pysdm_examples.egg-info/scm_file_list.json +9 -9
  9. pysdm_examples-3.0.0rc40/pysdm_examples.egg-info/scm_version.json +8 -0
  10. pysdm_examples-3.0.0rc38/pysdm_examples.egg-info/scm_version.json +0 -8
  11. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/MANIFEST.in +0 -0
  12. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py +0 -0
  13. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abade_and_Albuquerque_2024/settings.py +0 -0
  14. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abade_and_Albuquerque_2024/simulation.py +0 -0
  15. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py +0 -0
  16. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
  17. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
  18. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
  19. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +0 -0
  20. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Alpert_and_Knopf_2016/__init__.py +0 -0
  21. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Alpert_and_Knopf_2016/simulation.py +0 -0
  22. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Alpert_and_Knopf_2016/table.py +0 -0
  23. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Alpert_and_Knopf_2016/table_1.py +0 -0
  24. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Alpert_and_Knopf_2016/table_2.py +0 -0
  25. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_and_Pawlowska_2011/__init__.py +0 -0
  26. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_and_Pawlowska_2011/settings.py +0 -0
  27. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_and_Pawlowska_2011/simulation.py +0 -0
  28. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_and_Shima_2017/__init__.py +0 -0
  29. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -0
  30. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_and_Shima_2017/settings.py +0 -0
  31. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_and_Shima_2017/simulation.py +0 -0
  32. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2015/__init__.py +0 -0
  33. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2015/example.py +0 -0
  34. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +0 -0
  35. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2015/settings.py +0 -0
  36. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2015/spin_up.py +0 -0
  37. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/__init__.py +0 -0
  38. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/commons.py +0 -0
  39. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/curved_text.py +0 -0
  40. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/frozen_fraction.py +0 -0
  41. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/make_particulator.py +0 -0
  42. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/plots.py +0 -0
  43. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Arabas_et_al_2025/run_simulation.py +0 -0
  44. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -0
  45. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -0
  46. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bartman_2020_MasterThesis/fig_5_SCIPY_VS_ADAPTIVE.py +0 -0
  47. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bartman_et_al_2021/__init__.py +0 -0
  48. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bartman_et_al_2021/label.py +0 -0
  49. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Berry_1967/__init__.py +0 -0
  50. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Berry_1967/example.py +0 -0
  51. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Berry_1967/example_fig_6.py +0 -0
  52. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Berry_1967/settings.py +0 -0
  53. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Berry_1967/spectrum_plotter.py +0 -0
  54. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bieli_et_al_2022/__init__.py +0 -0
  55. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bieli_et_al_2022/settings.py +0 -0
  56. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bieli_et_al_2022/simulation.py +0 -0
  57. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bolin_1958/__init__.py +0 -0
  58. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bolot_et_al_2013/__init__.py +0 -0
  59. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +0 -0
  60. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bulenok_2023_MasterThesis/performance_comparison_Srivastava_Setup.py +0 -0
  61. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -0
  62. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +0 -0
  63. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Ervens_and_Feingold_2012/__init__.py +0 -0
  64. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Ervens_and_Feingold_2012/settings.py +0 -0
  65. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Fisher_1991/__init__.py +0 -0
  66. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py +0 -0
  67. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Gonfiantini_1986/__init__.py +0 -0
  68. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -0
  69. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py +0 -0
  70. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
  71. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Graf_et_al_2019/__init__.py +0 -0
  72. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py +0 -0
  73. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jensen_and_Nugent_2017/__init__.py +0 -0
  74. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jensen_and_Nugent_2017/plotting.py +0 -0
  75. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jensen_and_Nugent_2017/settings.py +0 -0
  76. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jensen_and_Nugent_2017/simulation.py +0 -0
  77. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jensen_and_Nugent_2017/table_3.py +0 -0
  78. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jouzel_and_Merlivat_1984/__init__.py +0 -0
  79. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Jouzel_and_Merlivat_1984/thermodynamic_profiles.py +0 -0
  80. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Kinzer_And_Gunn_1951/__init__.py +0 -0
  81. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Kinzer_And_Gunn_1951/table_1_and_2.py +0 -0
  82. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Kreidenweis_et_al_2003/__init__.py +0 -0
  83. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Kreidenweis_et_al_2003/settings.py +0 -0
  84. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Kreidenweis_et_al_2003/simulation.py +0 -0
  85. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lamb_et_al_2017/__init__.py +0 -0
  86. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Long_1974/__init__.py +0 -0
  87. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Long_1974/settings.py +0 -0
  88. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Long_1974/simulation.py +0 -0
  89. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lowe_et_al_2019/__init__.py +0 -0
  90. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lowe_et_al_2019/aerosol.py +0 -0
  91. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lowe_et_al_2019/aerosol_code.py +0 -0
  92. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lowe_et_al_2019/constants_def.py +0 -0
  93. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lowe_et_al_2019/plot_helper.py +0 -0
  94. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lowe_et_al_2019/settings.py +0 -0
  95. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Lowe_et_al_2019/simulation.py +0 -0
  96. {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
  97. {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
  98. {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
  99. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Matsushima_et_al_2023/__init__.py +0 -0
  100. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Merlivat_and_Nief_1967/__init__.py +0 -0
  101. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Miyake_et_al_1968/__init__.py +0 -0
  102. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py +0 -0
  103. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Morrison_and_Grabowski_2007/common.py +0 -0
  104. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py +0 -0
  105. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Murray_et_al_2010/__init__.py +0 -0
  106. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Murray_et_al_2010/simulation.py +0 -0
  107. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Niedermeier_et_al_2014/__init__.py +0 -0
  108. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Niedermeier_et_al_2014/settings.py +0 -0
  109. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Niedermeier_et_al_2014/simulation.py +0 -0
  110. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Pierchala_et_al_2022/__init__.py +0 -0
  111. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Pierchala_et_al_2022/commons.py +0 -0
  112. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Pruppacher_and_Rasmussen_1979/__init__.py +0 -0
  113. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Pyrcel/__init__.py +0 -0
  114. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Pyrcel/profile_plotter.py +0 -0
  115. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Pyrcel/settings.py +0 -0
  116. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Pyrcel/simulation.py +0 -0
  117. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Rogers_1975/__init__.py +0 -0
  118. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py +0 -0
  119. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Rozanski_and_Sonntag_1982/multibox.py +0 -0
  120. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/__init__.py +0 -0
  121. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/error_measure.py +0 -0
  122. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/example.py +0 -0
  123. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/example_timing.py +0 -0
  124. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/settings.py +0 -0
  125. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py +0 -0
  126. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/tutorial_example.py +0 -0
  127. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py +0 -0
  128. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shima_et_al_2009/tutorial_settings.py +0 -0
  129. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shipway_and_Hill_2012/__init__.py +0 -0
  130. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py +0 -0
  131. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shipway_and_Hill_2012/plot.py +0 -0
  132. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shipway_and_Hill_2012/settings.py +0 -0
  133. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Shipway_and_Hill_2012/simulation.py +0 -0
  134. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Singer_Ward/__init__.py +0 -0
  135. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Singer_Ward/aerosol.py +0 -0
  136. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Spichtinger_et_al_2023/__init__.py +0 -0
  137. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Spichtinger_et_al_2023/data/__init__.py +0 -0
  138. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Spichtinger_et_al_2023/data/reference_bulk.py +0 -0
  139. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Spichtinger_et_al_2023/data/simulation_data.py +0 -0
  140. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Spichtinger_et_al_2023/settings.py +0 -0
  141. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Spichtinger_et_al_2023/simulation.py +0 -0
  142. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Srivastava_1982/__init__.py +0 -0
  143. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Srivastava_1982/equations.py +0 -0
  144. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Srivastava_1982/example.py +0 -0
  145. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Srivastava_1982/settings.py +0 -0
  146. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Srivastava_1982/simulation.py +0 -0
  147. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Stewart_1975/__init__.py +0 -0
  148. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Strzabala_2025_BEng/__init__.py +0 -0
  149. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Toon_et_al_1980/__init__.py +0 -0
  150. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Van_Hook_1968/__init__.py +0 -0
  151. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Ware_et_al_2025/__init__.py +0 -0
  152. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Ware_et_al_2025/example.py +0 -0
  153. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Yang_et_al_2018/__init__.py +0 -0
  154. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Yang_et_al_2018/settings.py +0 -0
  155. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Yang_et_al_2018/simulation.py +0 -0
  156. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/Zaba_et_al/__init__.py +0 -0
  157. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/_HOWTOs/__init__.py +0 -0
  158. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/__init__.py +0 -0
  159. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Azimi/__init__.py +0 -0
  160. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Azimi/cloudy_data.py +0 -0
  161. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Azimi/cloudy_data_0d.py +0 -0
  162. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Azimi/settings1D.py +0 -0
  163. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Azimi/simulation_0D.py +0 -0
  164. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py +0 -0
  165. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
  166. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py +0 -0
  167. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
  168. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Mackay_et_al_2023/simulation1D.py +0 -0
  169. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_0D.py +0 -0
  170. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_ss.py +0 -0
  171. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/seeding/__init__.py +0 -0
  172. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/seeding/settings.py +0 -0
  173. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/seeding/simulation.py +0 -0
  174. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/__init__.py +0 -0
  175. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/basic_simulation.py +0 -0
  176. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/dummy_controller.py +0 -0
  177. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/__init__.py +0 -0
  178. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/fields.py +0 -0
  179. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/gui.py +0 -0
  180. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/gui_controller.py +0 -0
  181. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/gui_settings.py +0 -0
  182. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/gui_viewer.py +0 -0
  183. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/make_default_product_collection.py +0 -0
  184. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/mpdata_2d.py +0 -0
  185. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/plots.py +0 -0
  186. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/simulation.py +0 -0
  187. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/kinematic_2d/storage.py +0 -0
  188. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/progbar_controller.py +0 -0
  189. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/pvanim.py +0 -0
  190. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/read_vtk_1d.py +0 -0
  191. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/widgets/__init__.py +0 -0
  192. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/widgets/freezer.py +0 -0
  193. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
  194. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/README.md +0 -0
  195. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/docs/pysdm_examples_landing.md +0 -0
  196. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/pysdm_examples.egg-info/dependency_links.txt +0 -0
  197. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/pysdm_examples.egg-info/top_level.txt +0 -0
  198. {pysdm_examples-3.0.0rc38 → pysdm_examples-3.0.0rc40}/setup.cfg +0 -0
  199. {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.0rc38
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==1.3.5; extra == "ci-version-pins"
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.9; extra == "ci-version-pins"
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.Luettmer_homogeneous_freezing.settings import Settings
4
- from PySDM_examples.Luettmer_homogeneous_freezing.simulation import Simulation
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="Koop_Correction"
81
+ homogeneous_ice_nucleation_rate="KoopMurray2016_DWA"
81
82
  ).homogeneous_ice_nucleation_rate
82
- spichtinger_2023 = j_hom_rate.j_hom(T, d_a_w_ice)
83
- abs_diff_j_hom = (koop_murray_2016 - spichtinger_2023) / koop_murray_2016
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.set_ylabel("saturation ratio", fontsize=ax_lab_fsize)
96
- ax.legend(loc="center left", fontsize=ax_lab_fsize)
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=ax_lab_fsize)
106
- twin.set_ylabel("temperature [K]", fontsize=ax_lab_fsize)
107
- twin.legend(loc="upper left", fontsize=ax_lab_fsize)
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=ax_lab_fsize)
119
- ax.set_ylabel(r"mixing ratio [$\mathrm{kg \, kg^{-1}}$]", fontsize=ax_lab_fsize)
120
- ax.legend(fontsize=ax_lab_fsize)
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=ax_lab_fsize)
132
+ twin.set_xlabel("time [s]", fontsize=ax_lab_fsize2)
132
133
  twin.set_ylabel(
133
- r"number concentration [$\mathrm{kg^{-1}}$]", fontsize=ax_lab_fsize
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=ax_lab_fsize)
151
- ax.set_ylabel("frozen fraction", fontsize=ax_lab_fsize)
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=ax_lab_fsize)
162
- ax.set_ylabel("mean radius [µm]", fontsize=ax_lab_fsize)
163
- ax.legend(fontsize=ax_lab_fsize)
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"] == "Spichtinger2023":
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
- spichtinger_2023,
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=ax_lab_fsize
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=ax_lab_fsize)
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=ax_lab_fsize)
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=ax_lab_fsize)
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=ax_lab_fsize)
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=ax_lab_fsize)
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=ax_lab_fsize)
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=ax_lab_fsize)
236
- ax.set_ylabel("multiplicity", fontsize=ax_lab_fsize)
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"$\sigma$"
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("log")
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(1e-4, 1e-3)
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("log")
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 == "sigma_droplet_distribution":
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=ax_lab_fsize)
546
- ax.set_ylabel(y_label, fontsize=ax_lab_fsize)
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==83.0.0', 'setuptools-scm==10.2.1']
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==1.3.5",
52
+ "pyrcel==2.0.0",
53
53
  "pyvinecopulib==0.7.6",
54
- "cmcrameri==1.9",
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.0rc38
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==1.3.5; extra == "ci-version-pins"
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.9; extra == "ci-version-pins"
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/Luettmer_homogeneous_freezing/__init__.py
91
- PySDM_examples/Luettmer_homogeneous_freezing/commons.py
92
- PySDM_examples/Luettmer_homogeneous_freezing/plot.py
93
- PySDM_examples/Luettmer_homogeneous_freezing/settings.py
94
- PySDM_examples/Luettmer_homogeneous_freezing/simulation.py
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
@@ -26,7 +26,7 @@ ipywidgets==8.1.7
26
26
  seaborn==0.13.2
27
27
  numdifftools==0.9.42
28
28
  vtk==9.6.2
29
- pyrcel==1.3.5
29
+ pyrcel==2.0.0
30
30
  pyvinecopulib==0.7.6
31
- cmcrameri==1.9
31
+ cmcrameri==1.10
32
32
  cmap==0.7.2
@@ -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/Luettmer_homogeneous_freezing/__init__.py",
141
- "PySDM_examples/Luettmer_homogeneous_freezing/commons.py",
142
- "PySDM_examples/Luettmer_homogeneous_freezing/fig_1_2_3.ipynb",
143
- "PySDM_examples/Luettmer_homogeneous_freezing/fig_4_5_6_S3_S4.ipynb",
144
- "PySDM_examples/Luettmer_homogeneous_freezing/fig_S1_S2.ipynb",
145
- "PySDM_examples/Luettmer_homogeneous_freezing/plot.py",
146
- "PySDM_examples/Luettmer_homogeneous_freezing/settings.py",
147
- "PySDM_examples/Luettmer_homogeneous_freezing/simple_homogenous_freezing_example.ipynb",
148
- "PySDM_examples/Luettmer_homogeneous_freezing/simulation.py",
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",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "3.0.0rc40",
3
+ "distance": 0,
4
+ "node": "g5264465959125fd16f40297a8891a1ade52b77a9",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-08-19"
8
+ }
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "3.0.0rc38",
3
- "distance": 0,
4
- "node": "gc7e58cbe8415bd9f54e8579c4f7dc392abb07535",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-08-11"
8
- }