PySDM-examples 3.0.0rc43__tar.gz → 3.0.2__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 (215) hide show
  1. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PKG-INFO +31 -45
  2. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +5 -2
  3. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Alpert_and_Knopf_2016/simulation.py +1 -1
  4. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Alpert_and_Knopf_2016/table_1.py +1 -1
  5. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Alpert_and_Knopf_2016/table_2.py +1 -1
  6. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_and_Shima_2017/__init__.py +3 -0
  7. pysdm_examples-3.0.2/PySDM_examples/featured/Arabas_and_Shima_2017/example.py +11 -0
  8. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_and_Shima_2017/simulation.py +1 -1
  9. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_et_al_2025/__init__.py +4 -9
  10. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_et_al_2025/plots.py +2 -2
  11. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_et_al_2025/run_simulation.py +1 -1
  12. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Berry_1967/example.py +3 -3
  13. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Berry_1967/spectrum_plotter.py +1 -1
  14. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Bieli_et_al_2022/__init__.py +8 -8
  15. pysdm_examples-3.0.2/PySDM_examples/featured/Grabowski_and_Pawlowska_2023/__init__.py +23 -0
  16. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Jensen_and_Nugent_2017/__init__.py +1 -0
  17. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Jensen_and_Nugent_2017/simulation.py +2 -2
  18. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Long_1974/__init__.py +3 -0
  19. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Lowe_et_al_2019/settings.py +1 -1
  20. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Lowe_et_al_2019/simulation.py +1 -1
  21. pysdm_examples-3.0.2/PySDM_examples/featured/Luettmer_et_al_2026/__init__.py +25 -0
  22. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Luettmer_et_al_2026/commons.py +2 -2
  23. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Luettmer_et_al_2026/simulation.py +1 -1
  24. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/example.py +3 -3
  25. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/example_timing.py +4 -4
  26. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/spectrum_plotter.py +6 -13
  27. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/tutorial_example.py +1 -1
  28. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shipway_and_Hill_2012/simulation.py +2 -2
  29. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Srivastava_1982/example.py +6 -3
  30. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Srivastava_1982/simulation.py +2 -2
  31. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Ware_et_al_2025/example.py +1 -1
  32. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Yang_et_al_2018/settings.py +1 -1
  33. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Yang_et_al_2018/simulation.py +1 -1
  34. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/deJong_Mackay_et_al_2023/__init__.py +28 -28
  35. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/deJong_Mackay_et_al_2023/settings1D.py +1 -1
  36. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/deJong_Mackay_et_al_2023/simulation1D.py +3 -1
  37. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/deJong_Mackay_et_al_2023/simulation_0D.py +14 -14
  38. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/deJong_Mackay_et_al_2023/simulation_ss.py +4 -2
  39. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Bolin_1958/__init__.py +8 -8
  40. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Jouzel_and_Merlivat_1984/__init__.py +0 -1
  41. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Matsushima_et_al_2023/__init__.py +2 -2
  42. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Murray_et_al_2010/simulation.py +1 -1
  43. pysdm_examples-3.0.2/PySDM_examples/misc/Toon_et_al_1980/__init__.py +7 -0
  44. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Arabas_and_Pawlowska_2011/__init__.py +14 -14
  45. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Niedermeier_et_al_2014/simulation.py +2 -2
  46. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Rozanski_and_Sonntag_1982/__init__.py +1 -1
  47. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Spichtinger_et_al_2023/__init__.py +3 -0
  48. pysdm_examples-3.0.2/PySDM_examples/sandbox/Spichtinger_et_al_2023/data/__init__.py +0 -0
  49. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Spichtinger_et_al_2023/simulation.py +1 -1
  50. pysdm_examples-3.0.2/PySDM_examples/sandbox/Steinke_et_al_2011/__init__.py +6 -0
  51. pysdm_examples-3.0.2/PySDM_examples/sandbox/__init__.py +0 -0
  52. {pysdm_examples-3.0.0rc43/PySDM_examples/Bartman_et_al_2021 → pysdm_examples-3.0.2/PySDM_examples/sandbox/condensation_adaptivity}/__init__.py +2 -6
  53. {pysdm_examples-3.0.0rc43/PySDM_examples/Bartman_2020_MasterThesis → pysdm_examples-3.0.2/PySDM_examples/sandbox/condensation_adaptivity}/fig_5_SCIPY_VS_ADAPTIVE.py +2 -2
  54. {pysdm_examples-3.0.0rc43/PySDM_examples/utils/kinematic_2d → pysdm_examples-3.0.2/PySDM_examples/sandbox/condensation_adaptivity}/plots.py +0 -16
  55. pysdm_examples-3.0.2/PySDM_examples/sandbox/copulae/__init__.py +6 -0
  56. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/deJong_Azimi/__init__.py +14 -14
  57. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/deJong_Azimi/settings1D.py +1 -1
  58. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/deJong_Azimi/simulation_0D.py +1 -1
  59. {pysdm_examples-3.0.0rc43/PySDM_examples/Zaba_et_al → pysdm_examples-3.0.2/PySDM_examples/sandbox/isotopes}/__init__.py +1 -0
  60. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/seeding/simulation.py +2 -2
  61. pysdm_examples-3.0.2/PySDM_examples/tutorials/README.md +29 -0
  62. {pysdm_examples-3.0.0rc43/PySDM_examples/_HOWTOs → pysdm_examples-3.0.2/PySDM_examples/tutorials}/__init__.py +3 -0
  63. pysdm_examples-3.0.2/PySDM_examples/tutorials/collisions/__init__.py +4 -0
  64. pysdm_examples-3.0.2/PySDM_examples/tutorials/collisions/collection_droplet.svg +169 -0
  65. pysdm_examples-3.0.2/PySDM_examples/tutorials/condensation/__init__.py +4 -0
  66. pysdm_examples-3.0.2/PySDM_examples/tutorials/condensation/kohler_curve.svg +242 -0
  67. pysdm_examples-3.0.2/PySDM_examples/tutorials/wikipedia/__init__.py +4 -0
  68. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/basic_simulation.py +1 -1
  69. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/kinematic_2d/__init__.py +3 -1
  70. {pysdm_examples-3.0.0rc43/PySDM_examples/Arabas_et_al_2015 → pysdm_examples-3.0.2/PySDM_examples/utils/kinematic_2d}/settings.py +1 -1
  71. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/kinematic_2d/simulation.py +1 -1
  72. {pysdm_examples-3.0.0rc43/PySDM_examples/Morrison_and_Grabowski_2007 → pysdm_examples-3.0.2/PySDM_examples/utils/kinematic_2d}/strato_cumulus.py +2 -1
  73. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/docs/pysdm_examples_landing.md +29 -44
  74. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/pyproject.toml +2 -1
  75. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/pysdm_examples.egg-info/PKG-INFO +31 -45
  76. pysdm_examples-3.0.2/pysdm_examples.egg-info/SOURCES.txt +193 -0
  77. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/pysdm_examples.egg-info/requires.txt +1 -0
  78. pysdm_examples-3.0.2/pysdm_examples.egg-info/scm_file_list.json +288 -0
  79. pysdm_examples-3.0.2/pysdm_examples.egg-info/scm_version.json +8 -0
  80. pysdm_examples-3.0.0rc43/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -11
  81. pysdm_examples-3.0.0rc43/PySDM_examples/Arabas_et_al_2015/__init__.py +0 -11
  82. pysdm_examples-3.0.0rc43/PySDM_examples/Arabas_et_al_2015/example.py +0 -28
  83. pysdm_examples-3.0.0rc43/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +0 -70
  84. pysdm_examples-3.0.0rc43/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -4
  85. pysdm_examples-3.0.0rc43/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -71
  86. pysdm_examples-3.0.0rc43/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +0 -5
  87. pysdm_examples-3.0.0rc43/PySDM_examples/Bulenok_2023_MasterThesis/performance_comparison_Srivastava_Setup.py +0 -225
  88. pysdm_examples-3.0.0rc43/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -112
  89. pysdm_examples-3.0.0rc43/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +0 -302
  90. pysdm_examples-3.0.0rc43/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -23
  91. pysdm_examples-3.0.0rc43/PySDM_examples/Luettmer_et_al_2026/__init__.py +0 -17
  92. pysdm_examples-3.0.0rc43/PySDM_examples/Strzabala_2025_BEng/__init__.py +0 -8
  93. pysdm_examples-3.0.0rc43/PySDM_examples/utils/kinematic_2d/gui.py +0 -45
  94. pysdm_examples-3.0.0rc43/PySDM_examples/utils/kinematic_2d/gui_controller.py +0 -132
  95. pysdm_examples-3.0.0rc43/PySDM_examples/utils/kinematic_2d/gui_settings.py +0 -428
  96. pysdm_examples-3.0.0rc43/PySDM_examples/utils/kinematic_2d/gui_viewer.py +0 -355
  97. pysdm_examples-3.0.0rc43/pysdm_examples.egg-info/SOURCES.txt +0 -196
  98. pysdm_examples-3.0.0rc43/pysdm_examples.egg-info/scm_file_list.json +0 -290
  99. pysdm_examples-3.0.0rc43/pysdm_examples.egg-info/scm_version.json +0 -8
  100. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/MANIFEST.in +0 -0
  101. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/__init__.py +0 -0
  102. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Abdul_Razzak_Ghan_2000/__init__.py +0 -0
  103. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
  104. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
  105. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
  106. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Alpert_and_Knopf_2016/__init__.py +0 -0
  107. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Alpert_and_Knopf_2016/table.py +0 -0
  108. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_and_Shima_2017/settings.py +0 -0
  109. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_et_al_2025/commons.py +0 -0
  110. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_et_al_2025/curved_text.py +0 -0
  111. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_et_al_2025/frozen_fraction.py +0 -0
  112. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Arabas_et_al_2025/make_particulator.py +0 -0
  113. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Berry_1967/__init__.py +0 -0
  114. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Berry_1967/example_fig_6.py +0 -0
  115. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Berry_1967/settings.py +0 -0
  116. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Bieli_et_al_2022/settings.py +0 -0
  117. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Bieli_et_al_2022/simulation.py +0 -0
  118. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Grabowski_and_Pawlowska_2023/settings.py +0 -0
  119. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
  120. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Jensen_and_Nugent_2017/plotting.py +0 -0
  121. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Jensen_and_Nugent_2017/settings.py +0 -0
  122. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Jensen_and_Nugent_2017/table_3.py +0 -0
  123. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Kreidenweis_et_al_2003/__init__.py +0 -0
  124. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Kreidenweis_et_al_2003/settings.py +0 -0
  125. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Kreidenweis_et_al_2003/simulation.py +0 -0
  126. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Long_1974/settings.py +0 -0
  127. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Long_1974/simulation.py +0 -0
  128. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Lowe_et_al_2019/__init__.py +0 -0
  129. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Lowe_et_al_2019/aerosol.py +0 -0
  130. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Lowe_et_al_2019/aerosol_code.py +0 -0
  131. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Lowe_et_al_2019/constants_def.py +0 -0
  132. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Lowe_et_al_2019/plot_helper.py +0 -0
  133. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Luettmer_et_al_2026/plot.py +0 -0
  134. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Luettmer_et_al_2026/settings.py +0 -0
  135. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Pierchala_et_al_2022/__init__.py +0 -0
  136. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Pierchala_et_al_2022/commons.py +0 -0
  137. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/__init__.py +0 -0
  138. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/error_measure.py +0 -0
  139. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/settings.py +0 -0
  140. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/tutorial_plotter.py +0 -0
  141. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shima_et_al_2009/tutorial_settings.py +0 -0
  142. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shipway_and_Hill_2012/__init__.py +0 -0
  143. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shipway_and_Hill_2012/mpdata_1d.py +0 -0
  144. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shipway_and_Hill_2012/plot.py +0 -0
  145. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Shipway_and_Hill_2012/settings.py +0 -0
  146. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Srivastava_1982/__init__.py +0 -0
  147. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Srivastava_1982/equations.py +0 -0
  148. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Srivastava_1982/settings.py +0 -0
  149. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Ware_et_al_2025/__init__.py +0 -0
  150. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/Yang_et_al_2018/__init__.py +0 -0
  151. {pysdm_examples-3.0.0rc43/PySDM_examples/Spichtinger_et_al_2023/data → pysdm_examples-3.0.2/PySDM_examples/featured}/__init__.py +0 -0
  152. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
  153. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/featured}/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
  154. {pysdm_examples-3.0.0rc43/PySDM_examples/Pyrcel → pysdm_examples-3.0.2/PySDM_examples/featured/pyrcel_docs_testcase}/__init__.py +0 -0
  155. {pysdm_examples-3.0.0rc43/PySDM_examples/Pyrcel → pysdm_examples-3.0.2/PySDM_examples/featured/pyrcel_docs_testcase}/profile_plotter.py +0 -0
  156. {pysdm_examples-3.0.0rc43/PySDM_examples/Pyrcel → pysdm_examples-3.0.2/PySDM_examples/featured/pyrcel_docs_testcase}/settings.py +0 -0
  157. {pysdm_examples-3.0.0rc43/PySDM_examples/Pyrcel → pysdm_examples-3.0.2/PySDM_examples/featured/pyrcel_docs_testcase}/simulation.py +0 -0
  158. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Bolot_et_al_2013/__init__.py +0 -0
  159. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Gedzelman_and_Arnold_1994/__init__.py +0 -0
  160. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Gonfiantini_1986/__init__.py +0 -0
  161. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Jouzel_and_Merlivat_1984/thermodynamic_profiles.py +0 -0
  162. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Kinzer_And_Gunn_1951/__init__.py +0 -0
  163. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Kinzer_And_Gunn_1951/table_1_and_2.py +0 -0
  164. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Lamb_et_al_2017/__init__.py +0 -0
  165. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Merlivat_and_Nief_1967/__init__.py +0 -0
  166. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Miyake_et_al_1968/__init__.py +0 -0
  167. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Morrison_and_Grabowski_2007/__init__.py +0 -0
  168. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Murray_et_al_2010/__init__.py +0 -0
  169. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Pruppacher_and_Rasmussen_1979/__init__.py +0 -0
  170. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Rogers_1975/__init__.py +0 -0
  171. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Stewart_1975/__init__.py +0 -0
  172. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/misc}/Van_Hook_1968/__init__.py +0 -0
  173. {pysdm_examples-3.0.0rc43/PySDM_examples/Toon_et_al_1980 → pysdm_examples-3.0.2/PySDM_examples/misc}/__init__.py +0 -0
  174. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Abade_and_Albuquerque_2024/__init__.py +0 -0
  175. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Abade_and_Albuquerque_2024/settings.py +0 -0
  176. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Abade_and_Albuquerque_2024/simulation.py +0 -0
  177. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Arabas_and_Pawlowska_2011/settings.py +0 -0
  178. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Arabas_and_Pawlowska_2011/simulation.py +0 -0
  179. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Ervens_and_Feingold_2012/__init__.py +0 -0
  180. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Ervens_and_Feingold_2012/settings.py +0 -0
  181. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Fisher_1991/__init__.py +0 -0
  182. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Graf_et_al_2019/__init__.py +0 -0
  183. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Jaruga_and_Pawlowska_2018/__init__.py +0 -0
  184. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Niedermeier_et_al_2014/__init__.py +0 -0
  185. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Niedermeier_et_al_2014/settings.py +0 -0
  186. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Rozanski_and_Sonntag_1982/multibox.py +0 -0
  187. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Singer_Ward/__init__.py +0 -0
  188. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Singer_Ward/aerosol.py +0 -0
  189. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Spichtinger_et_al_2023/data/reference_bulk.py +0 -0
  190. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Spichtinger_et_al_2023/data/simulation_data.py +0 -0
  191. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/Spichtinger_et_al_2023/settings.py +0 -0
  192. {pysdm_examples-3.0.0rc43/PySDM_examples/Bartman_et_al_2021 → pysdm_examples-3.0.2/PySDM_examples/sandbox/condensation_adaptivity}/label.py +0 -0
  193. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/deJong_Azimi/cloudy_data.py +0 -0
  194. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/deJong_Azimi/cloudy_data_0d.py +0 -0
  195. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/seeding/__init__.py +0 -0
  196. {pysdm_examples-3.0.0rc43/PySDM_examples → pysdm_examples-3.0.2/PySDM_examples/sandbox}/seeding/settings.py +0 -0
  197. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/__init__.py +0 -0
  198. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/dummy_controller.py +0 -0
  199. {pysdm_examples-3.0.0rc43/PySDM_examples/Morrison_and_Grabowski_2007 → pysdm_examples-3.0.2/PySDM_examples/utils/kinematic_2d}/common.py +0 -0
  200. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/kinematic_2d/fields.py +0 -0
  201. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/kinematic_2d/make_default_product_collection.py +0 -0
  202. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/kinematic_2d/mpdata_2d.py +0 -0
  203. {pysdm_examples-3.0.0rc43/PySDM_examples/Arabas_et_al_2015 → pysdm_examples-3.0.2/PySDM_examples/utils/kinematic_2d}/spin_up.py +0 -0
  204. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/kinematic_2d/storage.py +0 -0
  205. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/progbar_controller.py +0 -0
  206. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/pvanim.py +0 -0
  207. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/read_vtk_1d.py +0 -0
  208. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/widgets/__init__.py +0 -0
  209. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/widgets/freezer.py +0 -0
  210. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
  211. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/README.md +0 -0
  212. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/pysdm_examples.egg-info/dependency_links.txt +0 -0
  213. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/pysdm_examples.egg-info/top_level.txt +0 -0
  214. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/setup.cfg +0 -0
  215. {pysdm_examples-3.0.0rc43 → pysdm_examples-3.0.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pysdm-examples
3
- Version: 3.0.0rc43
3
+ Version: 3.0.2
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
@@ -39,6 +39,7 @@ Requires-Dist: pyrcel==2.0.0; extra == "ci-version-pins"
39
39
  Requires-Dist: pyvinecopulib==1.0.0; extra == "ci-version-pins"
40
40
  Requires-Dist: cmcrameri==1.10; extra == "ci-version-pins"
41
41
  Requires-Dist: cmap==0.7.2; extra == "ci-version-pins"
42
+ Requires-Dist: netCDF4==1.7.4; extra == "ci-version-pins"
42
43
  Dynamic: description
43
44
  Dynamic: description-content-type
44
45
 
@@ -84,17 +85,14 @@ The 2D prescribed-flow framework used here can be traced back to the work of
84
85
  In PySDM-examples, the Eulerian advection is handled using the <a href="https://doi.org/10.21105/joss.03896">PyMPDATA</a> Numba-based
85
86
  implementation of the <a href="https://doi.org/10.1002/fld.1071">MPDATA numerical scheme of Smolarkiewicz (e.g., 2006)</a>.
86
87
  An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below
87
- (<a href="https://github.com/open-atmos/PySDM/blob/main/examples/PySDM_examples/_HOWTOs/paraview_hello_world.ipynb">see
88
+ (<a href="https://github.com/open-atmos/PySDM/blob/main/examples/PySDM_examples/tutorials/paraview_hello_world.ipynb">see
88
89
  the Paraview hello-world HOWTO Jupyter notbook for code generating the simulation and visualisation</a>):
89
90
  <center>
90
91
  <img src="https://github.com/open-atmos/PySDM/releases/download/tip/docs_intro_animation_ubuntu-24.04.gif" style="width:80%" />
91
92
  </center>
92
93
 
93
94
  Example notebooks:
94
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2015.html">Arabas_et_al_2015</a>
95
- - in-notebook GUI for setting up, running and interactively visualising the 2D kinematic simulations (with an option to export raw data to <mark>VTK</mark> and <mark>netCDF</mark> files, as well as to save plots to SVG or PDF):
96
- - "hello world" notebook depicting how to automate using Python the process of loading data and creating animations in <mark>Paraview</mark>
97
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2025.html">Arabas_et_al_2025</a>: adaptation of the 2D kinematic setup for studying <mark>glaciation</mark> of the cloud deck by <mark>immersion freezing</mark>
95
+ - `PySDM_examples.featured.Arabas_et_al_2025`: adaptation of the 2D kinematic setup for studying <mark>glaciation</mark> of the cloud deck by <mark>immersion freezing</mark>
98
96
 
99
97
  ## 1D kinematic environment (prescribed-flow, single-column)
100
98
 
@@ -106,19 +104,10 @@ As in the 2D kinematic framework above, the Eulerian advection is handled by
106
104
  <a href="https://open-atmos.github.io/PyMPDATA/">PyMPDATA</a>.
107
105
 
108
106
  Example notebooks:
109
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Shipway_and_Hill_2012.html">Shipway_and_Hill_2012</a>: reproducing figures from the <a href="https://doi.org/10.1002/qj.1913">Shipway & Hill 2012</a> paper;
110
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/deJong_Mackay_et_al_2023.html">deJong_Mackay_et_al_2023</a>: reproducing figures from the <a href="https://doi.org/10.5194/gmd-16-4193-2023">de Jong et al. 2023</a> paper where the single-column
107
+ - `PySDM_examples.featured.Shipway_and_Hill_2012`: reproducing figures from the <a href="https://doi.org/10.1002/qj.1913">Shipway & Hill 2012</a> paper;
108
+ - `PySDM_examples.featured.deJong_Mackay_et_al_2023`: reproducing figures from the <a href="https://doi.org/10.5194/gmd-16-4193-2023">de Jong et al. 2023</a> paper where the single-column
111
109
  framework was used to exemplify operation of the <mark>Monte-Carlo collisional breakup scheme</mark> in PySDM (scheme introduced in that paper).
112
110
 
113
- ## OD/1D iterative parcel/column environment mimicking removal of precipitation
114
-
115
- This framework uses a parcel model with removal of precipitation for analysis,
116
- iterative equilibration, the isotopic composition of the water vapour and
117
- rain water in a column of air (no Eulerian transport, only iterative passage of a parcel through the column).
118
-
119
- <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Rozanski_and_Sonntag_1982.html">Rozanski_and_Sonntag_1982</a>: bulk microphysics example (i.e. single super droplet) with
120
- deuterium and heavy-oxygen <mark>water isotopologues</mark> featured.
121
-
122
111
  ## 0D parcel environment
123
112
 
124
113
  The parcel framework implemented in PySDM uses a hydrostatic profile and adiabatic mass and energy conservation
@@ -126,19 +115,17 @@ The parcel framework implemented in PySDM uses a hydrostatic profile and adiabat
126
115
 
127
116
  Example notebooks include:
128
117
  - condensation only
129
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_and_Shima_2017.html">Arabas_and_Shima_2017</a>: monodisperse particle spectrum, activation/deactivation cycle
130
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Yang_et_al_2018.html">Yang_et_al_2018</a>: polydisperse particle spectrum, activation/deactivation cycles
131
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Abdul_Razzak_Ghan_2000.html">Abdul_Razzak_Ghan_2000</a>: polydisperse activation, comparison against <mark>GCM parameterisation</mark>
132
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Pyrcel.html">Pyrcel</a>: polydisperse activation, mimicking example test case from <mark>Pyrcel</mark> documentation
133
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Strzabala_2025_BEng.html">Strzabala_2025_BEng</a>: ParaView visualisation example
134
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Lowe_et_al_2019.html">Lowe_et_al_2019</a>: externally mixed polydisperse size spectrum with <mark>surface-active organics</mark> case
135
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Grabowski_and_Pawlowska_2023.html">Grabowski_and_Pawlowska_2023</a>: polydisperse activation, focus on <mark>ripening</mark>
136
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Jensen_and_Nugent_2017.html">Jensen_and_Nugent_2017</a>: polydisperse activation featuring <mark>giant CCN</mark>
118
+ - `PySDM_examples.featured.Arabas_and_Shima_2017`: monodisperse particle spectrum, activation/deactivation cycle
119
+ - `PySDM_examples.featured.Yang_et_al_2018`: polydisperse particle spectrum, activation/deactivation cycles
120
+ - `PySDM_examples.featured.Abdul_Razzak_Ghan_2000`: polydisperse activation, comparison against <mark>GCM parameterisation</mark>
121
+ - `PySDM_examples.featured.pyrcel_docs_testcase`: polydisperse activation, mimicking example test case from <mark>Pyrcel</mark> documentation
122
+ - `PySDM_examples.featured.Lowe_et_al_2019`: externally mixed polydisperse size spectrum with <mark>surface-active organics</mark> case
123
+ - `PySDM_examples.featured.Grabowski_and_Pawlowska_2023`: polydisperse activation, focus on <mark>ripening</mark>
124
+ - `PySDM_examples.featured.Jensen_and_Nugent_2017`: polydisperse activation featuring <mark>giant CCN</mark>
137
125
  - condensation and aqueous-chemistry
138
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Kreidenweis_et_al_2003.html">Kreidenweis_et_al_2003</a>: <mark>Hoppel gap</mark> simulation setup (i.e. depiction of evolution of aerosol mass spectrum from a monomodal to bimodal due to aqueous‐phase SO2 oxidation)
139
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Jaruga_and_Pawlowska_2018.html">Jaruga_and_Pawlowska_2018</a>: exploration of numerical convergence using the above Hoppel-gap simulation setup
126
+ - `PySDM_examples.featured.Kreidenweis_et_al_2003`: <mark>Hoppel gap</mark> simulation setup (i.e. depiction of evolution of aerosol mass spectrum from a monomodal to bimodal due to aqueous‐phase SO2 oxidation)
127
+ - `PySDM_examples.sandbox.Jaruga_and_Pawlowska_2018`: exploration of numerical convergence using the above Hoppel-gap simulation setup
140
128
  - freezing
141
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Spichtinger_et_al_2023.html">Spichtinger_et_al_2023</a>: <mark>homogeneous freezing</mark> and ice growth (<mark>Wegener-Bergeron-Findeisen process</mark>)
142
129
 
143
130
  The parcel environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
144
131
 
@@ -153,33 +140,32 @@ The box environment is void of any spatial or thermodynamic context, it constitu
153
140
  Example notebooks include:
154
141
 
155
142
  - coalescence only:
156
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Shima_et_al_2009.html">Shima_et_al_2009</a>: using <mark>Golovin additive kernel</mark> for comparison against analytic solution, featuring interactive in-notebook interface for selecting simulation parameters
157
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Berry_1967.html">Berry_1967</a>: examples using geometric, hydrodynamic and electric-field collision kernels
143
+ - `PySDM_examples.featured.Shima_et_al_2009`: using <mark>Golovin additive kernel</mark> for comparison against analytic solution, featuring interactive in-notebook interface for selecting simulation parameters
144
+ - `PySDM_examples.featured.Berry_1967`: examples using geometric, hydrodynamic and electric-field collision kernels
158
145
  - coalescence and breakup:
159
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Bieli_et_al_2022.html">Bieli_et_al_2022</a>: evolution of moments under collisional growth and breakage
160
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/deJong_Mackay_et_al_2023.html">deJong_Mackay_et_al_2023</a>: validation of the breakup scheme against analytical solutions from <a href="https://doi.org/10.1175/1520-0469(1982)039%3C1317:ASMOPC%3E2.0.CO;2">Srivastava 1982</a>
146
+ - `PySDM_examples.featured.Bieli_et_al_2022`: evolution of moments under collisional growth and breakage
147
+ - `PySDM_examples.featured.deJong_Mackay_et_al_2023`: validation of the breakup scheme against analytical solutions from <a href="https://doi.org/10.1175/1520-0469(1982)039%3C1317:ASMOPC%3E2.0.CO;2">Srivastava 1982</a>
161
148
  - immersion freezing only:
162
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Alpert_and_Knopf_2016.html">Alpert_and_Knopf_2016</a>: stochastic immersion freezing with monodisperse vs. lognormal immersed surface areas
163
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2025.html">Arabas_et_al_2025</a>: comparison of time-dependent and singular immersion freezing schemes
149
+ - `PySDM_examples.featured.Alpert_and_Knopf_2016`: stochastic immersion freezing with monodisperse vs. lognormal immersed surface areas
150
+ - `PySDM_examples.featured.Arabas_et_al_2025`: comparison of time-dependent and singular immersion freezing schemes
164
151
 
165
152
  The box environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
166
153
 
167
154
  ## examples depicting isotope-related formulae (without any simulation context)
168
155
  - <mark>equilibrium isotopic fractionation</mark> formulae:
169
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Lamb_et_al_2017.html">Lamb_et_al_2017</a>
170
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Bolot_et_al_2013.html">Bolot_et_al_2013</a>
171
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Merlivat_and_Nief_1967.html">Merlivat_and_Nief_1967</a>
172
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Van_Hook_1968.html">Van_Hook_1968</a>
173
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Graf_et_al_2019.html">Graf_et_al_2019</a>
156
+ - `PySDM_examples.misc.Lamb_et_al_2017`
157
+ - `PySDM_examples.misc.Bolot_et_al_2013`
158
+ - `PySDM_examples.misc.Merlivat_and_Nief_1967`
159
+ - `PySDM_examples.misc.Van_Hook_1968`
174
160
  - <mark>Rayleigh fractionation</mark>:
175
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Pierchala_et_al_2022.html">Pierchala_et_al_2022</a>: reproducing model plots for a <mark>triple-isotope</mark> lab study, including <mark>kinetic fractionation</mark>
176
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Gonfiantini_1986.html">Gonfiantini_1986</a>: flat-surface evaporation at different humidities for D and <sup>18</sup>O
161
+ - `PySDM_examples.featured.Pierchala_et_al_2022`: reproducing model plots for a <mark>triple-isotope</mark> lab study, including <mark>kinetic fractionation</mark>
162
+ - `PySDM_examples.misc.Gonfiantini_1986`: flat-surface evaporation at different humidities for D and <sup>18</sup>O
177
163
  - isotopic relaxation timescale:
178
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Miyake_et_al_1968.html">Miyake_et_al_1968</a>: incl. comparison of different <mark>ventilation</mark> parameterisations
179
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Bolin_1958.html">Bolin_1958</a>
164
+ - `PySDM_examples.misc.Miyake_et_al_1968`: incl. comparison of different <mark>ventilation</mark> parameterisations
165
+ - `PySDM_examples.misc.Bolin_1958`
180
166
  - below-cloud <mark>kinetic fractionation</mark>:
181
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Gedzelman_and_Arnold_1994.html">Gedzelman_and_Arnold_1994</a>
167
+ - `PySDM_examples.misc.Gedzelman_and_Arnold_1994`
182
168
 
183
169
  ## examples depicting extraterrestrial clouds (formulae-only, no simulations yet)
184
170
  - Titan (methane clouds):
185
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Toon_et_al_1980.html">Toon_et_al_1980</a>
171
+ - `PySDM_examples.misc.Toon_et_al_1980`
@@ -1,7 +1,10 @@
1
1
  from collections import namedtuple
2
2
 
3
3
  import numpy as np
4
- from PySDM_examples.Abdul_Razzak_Ghan_2000.aerosol import CONSTANTS_ARG, AerosolARG
4
+ from PySDM_examples.featured.Abdul_Razzak_Ghan_2000.aerosol import (
5
+ CONSTANTS_ARG,
6
+ AerosolARG,
7
+ )
5
8
 
6
9
  from PySDM import Particulator, Formulae
7
10
  from PySDM import products as PySDM_products
@@ -97,7 +100,7 @@ def run_parcel(
97
100
  }
98
101
 
99
102
  for _ in range(n_steps):
100
- particulator.run(steps=1)
103
+ particulator.advance(n_steps=1)
101
104
  for product in particulator.products.values():
102
105
  value = product.get()
103
106
  output[product.name].append(value[0])
@@ -256,7 +256,7 @@ def simulation(
256
256
  if cooling_rate != 0:
257
257
  env["T"] -= np.full((1,), cooling_rate * time_step / 2)
258
258
  env["a_w_ice"] = svp.pvs_ice(env["T"][0]) / svp.pvs_water(env["T"][0])
259
- particulator.run(0 if i == 0 else 1)
259
+ particulator.advance(0 if i == 0 else 1)
260
260
  if cooling_rate != 0:
261
261
  env["T"] -= np.full((1,), cooling_rate * time_step / 2)
262
262
 
@@ -1,4 +1,4 @@
1
- from PySDM_examples.Alpert_and_Knopf_2016.table import Table
1
+ from PySDM_examples.featured.Alpert_and_Knopf_2016.table import Table
2
2
 
3
3
  from PySDM.initialisation.spectra import Lognormal, TopHat
4
4
  from PySDM.physics import si
@@ -1,4 +1,4 @@
1
- from PySDM_examples.Alpert_and_Knopf_2016.table import Table
1
+ from PySDM_examples.featured.Alpert_and_Knopf_2016.table import Table
2
2
 
3
3
  from PySDM.initialisation.spectra import Lognormal
4
4
  from PySDM.physics import si
@@ -6,4 +6,7 @@ fig_5.ipynb:
6
6
  .. include:: ./fig_5.ipynb.badges.md
7
7
  """
8
8
 
9
+ from .simulation import Simulation
10
+ from .settings import Settings
11
+
9
12
  # pylint: disable=invalid-name
@@ -0,0 +1,11 @@
1
+ from PySDM_examples.featured.Arabas_and_Shima_2017.settings import setups
2
+ from PySDM_examples.featured.Arabas_and_Shima_2017.simulation import Simulation
3
+
4
+
5
+ def main():
6
+ for settings in setups:
7
+ Simulation(settings).run()
8
+
9
+
10
+ if __name__ == "__main__":
11
+ main()
@@ -100,7 +100,7 @@ class Simulation:
100
100
 
101
101
  self.save(output)
102
102
  for _ in range(self.n_output):
103
- self.particulator.run(self.n_substeps)
103
+ self.particulator.advance(self.n_substeps)
104
104
  self.save(output)
105
105
 
106
106
  return output
@@ -2,26 +2,21 @@
2
2
  box-model and 2D prescribed-flow immersion-freezing examples based on
3
3
  [Arabas et al. 2025](https://doi.org/10.1029/2024MS004770)
4
4
 
5
- aida.ipynb:
6
- .. include:: ./aida.ipynb.badges.md
7
-
8
- copula_hello.ipynb:
9
- .. include:: ./copula_hello.ipynb.badges.md
10
-
11
5
  fig_2.ipynb:
12
6
  .. include:: ./fig_2.ipynb.badges.md
13
7
 
14
- figs_10_and_11_and_animations.ipynb:
15
- .. include:: ./figs_10_and_11_and_animations.ipynb.badges.md
16
-
17
8
  fig_A2.ipynb:
18
9
  .. include:: ./fig_A2.ipynb.badges.md
19
10
 
11
+
20
12
  figs_3_and_7_and_8.ipynb:
21
13
  .. include:: ./figs_3_and_7_and_8.ipynb.badges.md
22
14
 
23
15
  figs_5_and_6.ipynb:
24
16
  .. include:: ./figs_5_and_6.ipynb.badges.md
17
+
18
+ figs_10_and_11_and_animations.ipynb:
19
+ .. include:: ./figs_10_and_11_and_animations.ipynb.badges.md
25
20
  """
26
21
 
27
22
  from .make_particulator import make_particulator
@@ -1,8 +1,8 @@
1
1
  import matplotlib
2
2
  import numpy as np
3
3
  from matplotlib import pyplot
4
- from PySDM_examples.Arabas_et_al_2025.curved_text import CurvedText
5
- from PySDM_examples.Arabas_et_al_2025.frozen_fraction import FrozenFraction
4
+ from PySDM_examples.featured.Arabas_et_al_2025.curved_text import CurvedText
5
+ from PySDM_examples.featured.Arabas_et_al_2025.frozen_fraction import FrozenFraction
6
6
 
7
7
  from PySDM.physics import si
8
8
 
@@ -18,7 +18,7 @@ def run_simulation(particulator, temperature_profile, n_steps):
18
18
  particulator.environment,
19
19
  T=temperature_profile((step - 0.5) * particulator.dt),
20
20
  )
21
- particulator.run(step - particulator.n_steps)
21
+ particulator.advance(step - particulator.n_steps)
22
22
  update_thermo(
23
23
  particulator.environment, T=temperature_profile(step * particulator.dt)
24
24
  )
@@ -1,9 +1,9 @@
1
1
  import os
2
2
 
3
3
  import numpy as np
4
- from PySDM_examples.Berry_1967.settings import Settings
5
- from PySDM_examples.Berry_1967.spectrum_plotter import SpectrumPlotter
6
- from PySDM_examples.Shima_et_al_2009.example import run
4
+ from PySDM_examples.featured.Berry_1967.settings import Settings
5
+ from PySDM_examples.featured.Berry_1967.spectrum_plotter import SpectrumPlotter
6
+ from PySDM_examples.featured.Shima_et_al_2009.example import run
7
7
 
8
8
  from PySDM.dynamics.collisions.collision_kernels import (
9
9
  Electric,
@@ -1,6 +1,6 @@
1
1
  from matplotlib import pyplot
2
2
  from open_atmos_jupyter_utils import show_plot
3
- from PySDM_examples.Shima_et_al_2009.spectrum_plotter import (
3
+ from PySDM_examples.featured.Shima_et_al_2009.spectrum_plotter import (
4
4
  SpectrumPlotter as SuperSpectrumPlotter,
5
5
  )
6
6
 
@@ -1,8 +1,8 @@
1
- """
2
- collision-only box-model example from [Bieli et al. 2022](https://doi.org/10.1029/2022MS002994)
3
-
4
- make_fig_3.ipynb:
5
- .. include:: ./make_fig_3.ipynb.badges.md
6
- """
7
-
8
- # pylint: disable=invalid-name
1
+ """
2
+ collision-only box-model example from [Bieli et al. 2022](https://doi.org/10.1029/2022MS002994)
3
+
4
+ fig_3a.ipynb:
5
+ .. include:: ./fig_3a.ipynb.badges.md
6
+ """
7
+
8
+ # pylint: disable=invalid-name
@@ -0,0 +1,23 @@
1
+ # pylint: disable=invalid-name
2
+ """
3
+ ripening-focused parcel-model example based on
4
+ [Grabowski & Pawlowska 2023 (GRL)](https://doi.org/10.1029/2022GL101917)
5
+
6
+ fig_1.ipynb:
7
+ .. include:: ./fig_1.ipynb.badges.md
8
+
9
+ fig_2.ipynb:
10
+ .. include:: ./fig_2.ipynb.badges.md
11
+
12
+ fig_3.ipynb:
13
+ .. include:: ./fig_3.ipynb.badges.md
14
+
15
+ fig_4.ipynb:
16
+ .. include:: ./fig_4.ipynb.badges.md
17
+
18
+ fig_ripening_rate.ipynb:
19
+ .. include:: ./fig_ripening_rate.ipynb.badges.md
20
+ """
21
+
22
+ from .settings import Settings
23
+ from .simulation import Simulation
@@ -1,3 +1,4 @@
1
+ # pylint: disable=invalid-name
1
2
  """
2
3
  Fig_1.ipynb:
3
4
  .. include:: ./Fig_1.ipynb.badges.md
@@ -1,7 +1,7 @@
1
1
  import numpy as np
2
2
  from PySDM_examples.utils import BasicSimulation
3
- from PySDM_examples.Jensen_and_Nugent_2017.settings import Settings
4
- from PySDM_examples.Jensen_and_Nugent_2017 import table_3
3
+ from PySDM_examples.featured.Jensen_and_Nugent_2017.settings import Settings
4
+ from PySDM_examples.featured.Jensen_and_Nugent_2017 import table_3
5
5
  from PySDM import Particulator
6
6
  from PySDM.physics import si
7
7
  from PySDM.backends import CPU
@@ -2,6 +2,9 @@
2
2
  """
3
3
  piecewise collision-coalescence example from
4
4
  [Long 1974 (JAS)](https://doi.org/10.1175/1520-0469%281974%29031%3C1040%3ASTTDCE%3E2.0.CO%3B2)
5
+
6
+ figs_10_11_13_14.ipynb:
7
+ .. include:: ./figs_10_11_13_14.ipynb.badges.md
5
8
  """
6
9
 
7
10
  from .settings import Settings
@@ -1,7 +1,7 @@
1
1
  from functools import lru_cache
2
2
 
3
3
  import numpy as np
4
- from PySDM_examples.Lowe_et_al_2019.constants_def import LOWE_CONSTS
4
+ from PySDM_examples.featured.Lowe_et_al_2019.constants_def import LOWE_CONSTS
5
5
  from pystrict import strict
6
6
 
7
7
  from PySDM import Formulae
@@ -135,7 +135,7 @@ class Simulation(BasicSimulation):
135
135
  def run(self):
136
136
  output = {k: [] for k in self.particulator.products}
137
137
  for step in self.settings.output_steps:
138
- self.particulator.run(step - self.particulator.n_steps)
138
+ self.particulator.advance(step - self.particulator.n_steps)
139
139
  self._save_scalars(output)
140
140
  self._save_final_timestep_products(output)
141
141
  return output
@@ -0,0 +1,25 @@
1
+ # pylint: disable=invalid-name
2
+ """
3
+ Homogeneous freezing example
4
+
5
+ fig_1_2_3.ipynb:
6
+ .. include:: ./fig_1_2_3.ipynb.badges.md
7
+
8
+ fig_4_5_6_S3_S4.ipynb:
9
+ .. include:: ./fig_4_5_6_S3_S4.ipynb.badges.md
10
+
11
+ fig_S1_S2.ipynb:
12
+ .. include:: ./fig_S1_S2.ipynb.badges.md
13
+
14
+ simple_homogenous_freezing_example.ipynb:
15
+ .. include:: ./simple_homogenous_freezing_example.ipynb.badges.md
16
+ """
17
+
18
+ from .settings import Settings
19
+ from .simulation import Simulation
20
+ from .plot import (
21
+ plot_thermodynamics_and_bulk,
22
+ plot_freezing_temperatures_histogram,
23
+ plot_freezing_temperatures_histogram_allinone,
24
+ plot_freezing_temperatures_2d_histogram_seaborn,
25
+ )
@@ -1,7 +1,7 @@
1
1
  """commons for homogeneous freezing notebooks"""
2
2
 
3
- from PySDM_examples.Luettmer_et_al_2026.settings import Settings
4
- from PySDM_examples.Luettmer_et_al_2026.simulation import Simulation
3
+ from PySDM_examples.featured.Luettmer_et_al_2026.settings import Settings
4
+ from PySDM_examples.featured.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
@@ -170,7 +170,7 @@ class Simulation:
170
170
 
171
171
  while True:
172
172
 
173
- self.particulator.run(self.n_substeps)
173
+ self.particulator.advance(self.n_substeps)
174
174
  self.save(output)
175
175
 
176
176
  w_cr_v_ratio = self.particulator.attributes[
@@ -2,8 +2,8 @@ import os
2
2
  from typing import Optional
3
3
 
4
4
  import numpy as np
5
- from PySDM_examples.Shima_et_al_2009.settings import Settings
6
- from PySDM_examples.Shima_et_al_2009.spectrum_plotter import SpectrumPlotter
5
+ from PySDM_examples.featured.Shima_et_al_2009.settings import Settings
6
+ from PySDM_examples.featured.Shima_et_al_2009.spectrum_plotter import SpectrumPlotter
7
7
 
8
8
  from PySDM.backends import CPU
9
9
  from PySDM import Particulator
@@ -46,7 +46,7 @@ def run(settings, backend=CPU, observers=()):
46
46
  vals = {}
47
47
  particulator.products["wall time"].reset()
48
48
  for step in settings.output_steps:
49
- particulator.run(step - particulator.n_steps)
49
+ particulator.advance(step - particulator.n_steps)
50
50
  vals[step] = particulator.products["dv/dlnr"].get()[0]
51
51
  vals[step][:] *= settings.rho
52
52
 
@@ -1,7 +1,7 @@
1
1
  import os
2
2
 
3
3
  from matplotlib import pyplot as plt
4
- from PySDM_examples.Shima_et_al_2009.settings import Settings
4
+ from PySDM_examples.featured.Shima_et_al_2009.settings import Settings
5
5
 
6
6
  from PySDM.backends import Numba, ThrustRTC
7
7
  from PySDM import Particulator
@@ -18,7 +18,7 @@ def run(settings, backend):
18
18
  attributes["volume"], attributes["multiplicity"] = sampling.sample_deterministic(
19
19
  settings.n_sd
20
20
  )
21
- particles = Particulator(
21
+ particulator = Particulator(
22
22
  n_sd=settings.n_sd,
23
23
  environment=env,
24
24
  dynamics=(Coalescence(collision_kernel=settings.kernel),),
@@ -29,8 +29,8 @@ def run(settings, backend):
29
29
  states = {}
30
30
  last_wall_time = None
31
31
  for step in settings.output_steps:
32
- particles.run(step - particles.n_steps)
33
- last_wall_time = particles.products["wall time"].get()
32
+ particulator.advance(step - particulator.n_steps)
33
+ last_wall_time = particulator.products["wall time"].get()
34
34
 
35
35
  return states, last_wall_time
36
36
 
@@ -3,7 +3,7 @@ import numpy as np
3
3
  from matplotlib import pyplot
4
4
  from open_atmos_jupyter_utils import show_plot
5
5
  from packaging import version
6
- from PySDM_examples.Shima_et_al_2009.error_measure import error_measure
6
+ from PySDM_examples.featured.Shima_et_al_2009.error_measure import error_measure
7
7
 
8
8
  from PySDM.physics.constants import si
9
9
 
@@ -57,18 +57,11 @@ class SpectrumPlotter:
57
57
  ): self.log_base
58
58
  }
59
59
  if self.title is not None:
60
- try:
61
- self.ax.title(self.title)
62
- except TypeError:
63
- self.ax.set_title(self.title)
64
- try:
65
- self.ax.xscale("log", **base_arg)
66
- self.ax.xlabel(self.xlabel)
67
- self.ax.ylabel(self.ylabel)
68
- except AttributeError:
69
- self.ax.set_xscale("log", **base_arg)
70
- self.ax.set_xlabel(self.xlabel)
71
- self.ax.set_ylabel(self.ylabel)
60
+ self.ax.title(self.title)
61
+ self.ax.xscale("log", **base_arg)
62
+ self.ax.xlabel(self.xlabel)
63
+ self.ax.ylabel(self.ylabel)
64
+
72
65
  if self.legend:
73
66
  self.ax.legend()
74
67
 
@@ -43,7 +43,7 @@ def run(settings, observers=()):
43
43
  vals = {}
44
44
  particulator.products["wall time"].reset()
45
45
  for step in settings.output_steps:
46
- particulator.run(step - particulator.n_steps)
46
+ particulator.advance(step - particulator.n_steps)
47
47
  vals[step] = particulator.products["dv/dlnr"].get()[0]
48
48
  vals[step][:] *= settings.rho
49
49
 
@@ -2,7 +2,7 @@ from collections import namedtuple
2
2
  from typing import List, Any
3
3
 
4
4
  import numpy as np
5
- from PySDM_examples.Shipway_and_Hill_2012.mpdata_1d import MPDATA_1D
5
+ from PySDM_examples.featured.Shipway_and_Hill_2012.mpdata_1d import MPDATA_1D
6
6
 
7
7
  import PySDM.products as PySDM_products
8
8
  from PySDM import Particulator
@@ -267,7 +267,7 @@ class Simulation:
267
267
  self.particulator.dynamics["Displacement"].upload_courant_field(
268
268
  (mpdata.advector / self.g_factor_vec,)
269
269
  )
270
- self.particulator.run(steps=1)
270
+ self.particulator.advance(n_steps=1)
271
271
  self.save(step + 1)
272
272
 
273
273
  Outputs = namedtuple("Outputs", "products attributes")
@@ -2,9 +2,12 @@ from collections import namedtuple
2
2
 
3
3
  import numpy as np
4
4
  from matplotlib import pyplot
5
- from PySDM_examples.Srivastava_1982.equations import Equations, EquationsHelpers
6
- from PySDM_examples.Srivastava_1982.settings import SimProducts
7
- from PySDM_examples.Srivastava_1982.simulation import Simulation
5
+ from PySDM_examples.featured.Srivastava_1982.equations import (
6
+ Equations,
7
+ EquationsHelpers,
8
+ )
9
+ from PySDM_examples.featured.Srivastava_1982.settings import SimProducts
10
+ from PySDM_examples.featured.Srivastava_1982.simulation import Simulation
8
11
 
9
12
  from PySDM.dynamics import Collision
10
13
  from PySDM.dynamics.collisions.breakup_efficiencies import ConstEb
@@ -1,5 +1,5 @@
1
1
  import numpy as np
2
- from PySDM_examples.Srivastava_1982.settings import SimProducts
2
+ from PySDM_examples.featured.Srivastava_1982.settings import SimProducts
3
3
 
4
4
  from PySDM import Particulator, Formulae
5
5
  from PySDM.environments import Box
@@ -70,7 +70,7 @@ class Simulation:
70
70
 
71
71
  for step in range(len(x)):
72
72
  if step != 0:
73
- particulator.run(steps=1)
73
+ particulator.advance(n_steps=1)
74
74
  for prod in self.settings.prods:
75
75
  (self.simulation_res[n_sd][prod][seed][step],) = (
76
76
  particulator.products[prod].get()
@@ -243,7 +243,7 @@ def run(settings, backend, observers=(), sampling_method="deterministic"):
243
243
  deficit = 0
244
244
  particulator.products["wall time"].reset()
245
245
  for step in settings.output_steps:
246
- particulator.run(step - particulator.n_steps)
246
+ particulator.advance(step - particulator.n_steps)
247
247
  vals[step] = particulator.products["dv/dlnr"].get()[0]
248
248
  vals[step][:] *= settings.rho
249
249
  deficit += particulator.products["deficit"].get()
@@ -1,7 +1,7 @@
1
1
  import numpy as np
2
2
  from pystrict import strict
3
3
 
4
- from PySDM_examples import Jensen_and_Nugent_2017
4
+ from PySDM_examples.featured import Jensen_and_Nugent_2017
5
5
 
6
6
  from PySDM.backends import CPU
7
7
  from PySDM.dynamics import condensation
@@ -116,7 +116,7 @@ class Simulation:
116
116
 
117
117
  self.save(output)
118
118
  for _ in range(self.n_steps):
119
- self.particulator.run(self.n_substeps)
119
+ self.particulator.advance(self.n_substeps)
120
120
  self.save(output)
121
121
  for k, v in output.items():
122
122
  output[k] = np.asarray(v)