PySDM-examples 3.0.0rc12__tar.gz → 3.0.0rc13__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 (182) hide show
  1. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PKG-INFO +7 -4
  2. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Pyrcel/simulation.py +8 -2
  3. pysdm_examples-3.0.0rc13/PySDM_examples/Strzabala_2025_BEng/__init__.py +8 -0
  4. pysdm_examples-3.0.0rc13/PySDM_examples/Strzabala_2025_BEng/paraview_parcel_model.py +244 -0
  5. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/docs/pysdm_examples_landing.md +5 -0
  6. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/pysdm_examples.egg-info/PKG-INFO +7 -4
  7. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/pysdm_examples.egg-info/SOURCES.txt +2 -0
  8. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/pysdm_examples.egg-info/requires.txt +1 -3
  9. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/setup.py +1 -3
  10. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/MANIFEST.in +0 -0
  11. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py +0 -0
  12. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Abade_and_Albuquerque_2024/settings.py +0 -0
  13. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Abade_and_Albuquerque_2024/simulation.py +0 -0
  14. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py +0 -0
  15. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
  16. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
  17. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
  18. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +0 -0
  19. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Alpert_and_Knopf_2016/__init__.py +0 -0
  20. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Alpert_and_Knopf_2016/simulation.py +0 -0
  21. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Alpert_and_Knopf_2016/table.py +0 -0
  22. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Alpert_and_Knopf_2016/table_1.py +0 -0
  23. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Alpert_and_Knopf_2016/table_2.py +0 -0
  24. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_and_Shima_2017/__init__.py +0 -0
  25. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -0
  26. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_and_Shima_2017/settings.py +0 -0
  27. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_and_Shima_2017/simulation.py +0 -0
  28. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_et_al_2015/__init__.py +0 -0
  29. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_et_al_2015/example.py +0 -0
  30. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +0 -0
  31. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_et_al_2015/settings.py +0 -0
  32. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_et_al_2015/spin_up.py +0 -0
  33. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_et_al_2025/__init__.py +0 -0
  34. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_et_al_2025/commons.py +0 -0
  35. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_et_al_2025/curved_text.py +0 -0
  36. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_et_al_2025/frozen_fraction.py +0 -0
  37. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_et_al_2025/make_particulator.py +0 -0
  38. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_et_al_2025/plots.py +0 -0
  39. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Arabas_et_al_2025/run_simulation.py +0 -0
  40. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -0
  41. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -0
  42. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Bartman_2020_MasterThesis/fig_5_SCIPY_VS_ADAPTIVE.py +0 -0
  43. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Bartman_et_al_2021/__init__.py +0 -0
  44. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Bartman_et_al_2021/label.py +0 -0
  45. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Berry_1967/__init__.py +0 -0
  46. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Berry_1967/example.py +0 -0
  47. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Berry_1967/example_fig_6.py +0 -0
  48. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Berry_1967/settings.py +0 -0
  49. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Berry_1967/spectrum_plotter.py +0 -0
  50. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Bieli_et_al_2022/__init__.py +0 -0
  51. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Bieli_et_al_2022/settings.py +0 -0
  52. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Bieli_et_al_2022/simulation.py +0 -0
  53. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Bolin_1958/__init__.py +0 -0
  54. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Bolot_et_al_2013/__init__.py +0 -0
  55. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +0 -0
  56. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Bulenok_2023_MasterThesis/performance_comparison_Srivastava_Setup.py +0 -0
  57. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -0
  58. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +0 -0
  59. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Ervens_and_Feingold_2012/__init__.py +0 -0
  60. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Ervens_and_Feingold_2012/settings.py +0 -0
  61. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Fisher_1991/__init__.py +0 -0
  62. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py +0 -0
  63. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Gonfiantini_1986/__init__.py +0 -0
  64. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -0
  65. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py +0 -0
  66. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
  67. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Graf_et_al_2019/__init__.py +0 -0
  68. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py +0 -0
  69. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Jensen_and_Nugent_2017/__init__.py +0 -0
  70. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Jensen_and_Nugent_2017/plotting.py +0 -0
  71. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Jensen_and_Nugent_2017/settings.py +0 -0
  72. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Jensen_and_Nugent_2017/simulation.py +0 -0
  73. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Jensen_and_Nugent_2017/table_3.py +0 -0
  74. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Jouzel_and_Merlivat_1984/__init__.py +0 -0
  75. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Jouzel_and_Merlivat_1984/thermodynamic_profiles.py +0 -0
  76. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Kinzer_And_Gunn_1951/__init__.py +0 -0
  77. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Kinzer_And_Gunn_1951/table_1_and_2.py +0 -0
  78. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Kreidenweis_et_al_2003/__init__.py +0 -0
  79. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Kreidenweis_et_al_2003/settings.py +0 -0
  80. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Kreidenweis_et_al_2003/simulation.py +0 -0
  81. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Lamb_et_al_2017/__init__.py +0 -0
  82. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Lowe_et_al_2019/__init__.py +0 -0
  83. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Lowe_et_al_2019/aerosol.py +0 -0
  84. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Lowe_et_al_2019/aerosol_code.py +0 -0
  85. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Lowe_et_al_2019/constants_def.py +0 -0
  86. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Lowe_et_al_2019/plot_helper.py +0 -0
  87. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Lowe_et_al_2019/settings.py +0 -0
  88. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Lowe_et_al_2019/simulation.py +0 -0
  89. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Merlivat_and_Nief_1967/__init__.py +0 -0
  90. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Miyake_et_al_1968/__init__.py +0 -0
  91. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py +0 -0
  92. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Morrison_and_Grabowski_2007/common.py +0 -0
  93. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py +0 -0
  94. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Niedermeier_et_al_2014/__init__.py +0 -0
  95. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Niedermeier_et_al_2014/settings.py +0 -0
  96. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Niedermeier_et_al_2014/simulation.py +0 -0
  97. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Pierchala_et_al_2022/__init__.py +0 -0
  98. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Pierchala_et_al_2022/commons.py +0 -0
  99. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Pruppacher_and_Rasmussen_1979/__init__.py +0 -0
  100. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Pyrcel/__init__.py +0 -0
  101. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Pyrcel/profile_plotter.py +0 -0
  102. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Pyrcel/settings.py +0 -0
  103. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Rogers_1975/__init__.py +0 -0
  104. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py +0 -0
  105. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Rozanski_and_Sonntag_1982/multibox.py +0 -0
  106. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Shima_et_al_2009/__init__.py +0 -0
  107. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Shima_et_al_2009/error_measure.py +0 -0
  108. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Shima_et_al_2009/example.py +0 -0
  109. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Shima_et_al_2009/example_timing.py +0 -0
  110. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Shima_et_al_2009/settings.py +0 -0
  111. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py +0 -0
  112. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Shima_et_al_2009/tutorial_example.py +0 -0
  113. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py +0 -0
  114. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Shima_et_al_2009/tutorial_settings.py +0 -0
  115. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Shipway_and_Hill_2012/__init__.py +0 -0
  116. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py +0 -0
  117. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Shipway_and_Hill_2012/plot.py +0 -0
  118. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Shipway_and_Hill_2012/settings.py +0 -0
  119. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Shipway_and_Hill_2012/simulation.py +0 -0
  120. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Singer_Ward/__init__.py +0 -0
  121. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Singer_Ward/aerosol.py +0 -0
  122. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Spichtinger_et_al_2023/__init__.py +0 -0
  123. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Spichtinger_et_al_2023/data/__init__.py +0 -0
  124. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Spichtinger_et_al_2023/data/reference_bulk.py +0 -0
  125. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Spichtinger_et_al_2023/data/simulation_data.py +0 -0
  126. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Spichtinger_et_al_2023/settings.py +0 -0
  127. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Spichtinger_et_al_2023/simulation.py +0 -0
  128. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Srivastava_1982/__init__.py +0 -0
  129. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Srivastava_1982/equations.py +0 -0
  130. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Srivastava_1982/example.py +0 -0
  131. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Srivastava_1982/settings.py +0 -0
  132. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Srivastava_1982/simulation.py +0 -0
  133. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Stewart_1975/__init__.py +0 -0
  134. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Toon_et_al_1980/__init__.py +0 -0
  135. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Van_Hook_1968/__init__.py +0 -0
  136. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Ware_et_al_2025/__init__.py +0 -0
  137. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Yang_et_al_2018/__init__.py +0 -0
  138. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Yang_et_al_2018/settings.py +0 -0
  139. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Yang_et_al_2018/simulation.py +0 -0
  140. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/Zaba_et_al/__init__.py +0 -0
  141. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/_HOWTOs/__init__.py +0 -0
  142. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/__init__.py +0 -0
  143. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/deJong_Azimi/__init__.py +0 -0
  144. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/deJong_Azimi/cloudy_data.py +0 -0
  145. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/deJong_Azimi/cloudy_data_0d.py +0 -0
  146. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/deJong_Azimi/settings1D.py +0 -0
  147. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/deJong_Azimi/simulation_0D.py +0 -0
  148. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py +0 -0
  149. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
  150. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py +0 -0
  151. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
  152. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/deJong_Mackay_et_al_2023/simulation1D.py +0 -0
  153. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_0D.py +0 -0
  154. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_ss.py +0 -0
  155. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/seeding/__init__.py +0 -0
  156. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/seeding/settings.py +0 -0
  157. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/seeding/simulation.py +0 -0
  158. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/__init__.py +0 -0
  159. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/basic_simulation.py +0 -0
  160. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/dummy_controller.py +0 -0
  161. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/kinematic_2d/__init__.py +0 -0
  162. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/kinematic_2d/fields.py +0 -0
  163. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/kinematic_2d/gui.py +0 -0
  164. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/kinematic_2d/gui_controller.py +0 -0
  165. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/kinematic_2d/gui_settings.py +0 -0
  166. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/kinematic_2d/gui_viewer.py +0 -0
  167. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/kinematic_2d/make_default_product_collection.py +0 -0
  168. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/kinematic_2d/mpdata_2d.py +0 -0
  169. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/kinematic_2d/plots.py +0 -0
  170. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/kinematic_2d/simulation.py +0 -0
  171. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/kinematic_2d/storage.py +0 -0
  172. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/progbar_controller.py +0 -0
  173. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/pvanim.py +0 -0
  174. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/read_vtk_1d.py +0 -0
  175. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/widgets/__init__.py +0 -0
  176. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/widgets/freezer.py +0 -0
  177. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
  178. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/README.md +0 -0
  179. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/pyproject.toml +0 -0
  180. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/pysdm_examples.egg-info/dependency_links.txt +0 -0
  181. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/pysdm_examples.egg-info/top_level.txt +0 -0
  182. {pysdm_examples-3.0.0rc12 → pysdm_examples-3.0.0rc13}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pysdm-examples
3
- Version: 3.0.0rc12
3
+ Version: 3.0.0rc13
4
4
  Summary: PySDM usage examples reproducing results from literature and depicting how to use PySDM from Python Jupyter notebooks
5
5
  Home-page: https://github.com/open-atmos/PySDM
6
6
  Author: https://github.com/open-atmos/PySDM/graphs/contributors
@@ -15,7 +15,6 @@ Requires-Dist: PyMPDATA
15
15
  Requires-Dist: open-atmos-jupyter-utils
16
16
  Requires-Dist: pystrict
17
17
  Requires-Dist: matplotlib
18
- Requires-Dist: Pillow
19
18
  Requires-Dist: joblib
20
19
  Requires-Dist: ipywidgets
21
20
  Requires-Dist: seaborn
@@ -26,11 +25,10 @@ Requires-Dist: pyvinecopulib
26
25
  Requires-Dist: networkx
27
26
  Provides-Extra: ci-version-pins
28
27
  Requires-Dist: PySDM[CI_version_pins]; extra == "ci-version-pins"
29
- Requires-Dist: PyMPDATA==1.6.1; extra == "ci-version-pins"
28
+ Requires-Dist: PyMPDATA==1.6.3; extra == "ci-version-pins"
30
29
  Requires-Dist: open-atmos-jupyter-utils==1.3.0; extra == "ci-version-pins"
31
30
  Requires-Dist: pystrict==1.3; extra == "ci-version-pins"
32
31
  Requires-Dist: matplotlib!=3.9.1; extra == "ci-version-pins"
33
- Requires-Dist: Pillow<11.3.0; extra == "ci-version-pins"
34
32
  Requires-Dist: joblib==1.5.1; extra == "ci-version-pins"
35
33
  Requires-Dist: ipywidgets==8.1.7; extra == "ci-version-pins"
36
34
  Requires-Dist: seaborn==0.13.2; extra == "ci-version-pins"
@@ -137,6 +135,7 @@ Example notebooks include:
137
135
  - <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
138
136
  - <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>
139
137
  - <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
138
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Strzabala_2025_BEng.html">Strzabala_2025_BEng</a>: ParaView visualisation example
140
139
  - <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
141
140
  - <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>
142
141
  - <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>
@@ -148,6 +147,10 @@ Example notebooks include:
148
147
 
149
148
  The parcel environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
150
149
 
150
+ <center>
151
+ <img src="https://github.com/open-atmos/PySDM/releases/download/tip/parcel_animation_ubuntu-24.04.gif" style="width:80%" />
152
+ </center>
153
+
151
154
  ## 0D box environment
152
155
 
153
156
  The box environment is void of any spatial or thermodynamic context, it constitutes the most basic framework.
@@ -13,7 +13,13 @@ from PySDM.physics import si
13
13
 
14
14
  class Simulation(BasicSimulation):
15
15
  def __init__(
16
- self, settings, products=None, scipy_solver=False, rtol_thd=1e-10, rtol_x=1e-10
16
+ self,
17
+ settings,
18
+ products=None,
19
+ scipy_solver=False,
20
+ rtol_thd=1e-10,
21
+ rtol_x=1e-10,
22
+ mass_of_dry_air=44 * si.kg,
17
23
  ):
18
24
  n_sd = sum(settings.n_sd_per_mode)
19
25
  builder = Builder(
@@ -27,7 +33,7 @@ class Simulation(BasicSimulation):
27
33
  initial_water_vapour_mixing_ratio=settings.initial_vapour_mixing_ratio,
28
34
  T0=settings.initial_temperature,
29
35
  w=settings.vertical_velocity,
30
- mass_of_dry_air=44 * si.kg,
36
+ mass_of_dry_air=mass_of_dry_air,
31
37
  ),
32
38
  )
33
39
  builder.add_dynamic(AmbientThermodynamics())
@@ -0,0 +1,8 @@
1
+ # pylint: disable=invalid-name
2
+ """
3
+ ParaView visualisation of a parcel-model example based on the test case from
4
+ [Pyrcel package docs](https://pyrcel.readthedocs.io/)
5
+
6
+ paraview_parcel_model.ipynb:
7
+ .. include:: ./paraview.ipynb.badges.md
8
+ """
@@ -0,0 +1,244 @@
1
+ #!/usr/bin/env pvpython
2
+ """
3
+ ParaView pvpython script for visualizing sd_products and sd_attributes.
4
+ """
5
+
6
+ import argparse
7
+ from collections import namedtuple
8
+ import pathlib
9
+ from paraview import simple as pvs # pylint: disable=import-error
10
+
11
+ pvs._DisableFirstRenderCameraReset() # pylint: disable=protected-access
12
+
13
+
14
+ def cli_using_argparse(argparse_parser):
15
+ """
16
+ Command line interface using argparse.
17
+ """
18
+ argparse_parser.add_argument(
19
+ "--sd-products-pvd",
20
+ dest="sd_products_pvd",
21
+ help="Path to sd_products.pvd",
22
+ )
23
+ argparse_parser.add_argument(
24
+ "--sd-attributes-pvd",
25
+ dest="sd_attributes_pvd",
26
+ help="Path to sd_attributes.pvd",
27
+ )
28
+ argparse_parser.add_argument(
29
+ "--output-animation-path",
30
+ help="Output path for the animation file.",
31
+ )
32
+ argparse_parser.add_argument(
33
+ "--output-screenshot-path",
34
+ help="Output path for the screenshot file.",
35
+ )
36
+
37
+ argparse_parser.add_argument(
38
+ "--scalarbar-title-size",
39
+ type=int,
40
+ default=30,
41
+ help="Font size for scalar bar titles.",
42
+ )
43
+ argparse_parser.add_argument(
44
+ "--scalarbar-label-size",
45
+ type=int,
46
+ default=30,
47
+ help="Font size for scalar bar labels.",
48
+ )
49
+ argparse_parser.add_argument(
50
+ "--axes-title-size",
51
+ type=int,
52
+ default=30,
53
+ help="Font size for axes titles.",
54
+ )
55
+ argparse_parser.add_argument(
56
+ "--axes-label-size",
57
+ type=int,
58
+ default=30,
59
+ help="Font size for axes labels.",
60
+ )
61
+
62
+
63
+ parser = argparse.ArgumentParser(
64
+ description="ParaView pvpython script for visualizing sd_products and sd_attributes PVD files."
65
+ )
66
+ cli_using_argparse(parser)
67
+ args = parser.parse_args()
68
+
69
+ sd_productspvd = pvs.PVDReader(
70
+ registrationName="sd_products.pvd", FileName=args.sd_products_pvd
71
+ )
72
+ sd_attributespvd = pvs.PVDReader(
73
+ registrationName="sd_attributes.pvd", FileName=args.sd_attributes_pvd
74
+ )
75
+
76
+ setup = {
77
+ "renderView1": pvs.GetActiveViewOrCreate("RenderView"),
78
+ "sd_productspvdDisplay": pvs.Show(
79
+ sd_productspvd,
80
+ pvs.GetActiveViewOrCreate("RenderView"),
81
+ "UnstructuredGridRepresentation",
82
+ ),
83
+ "sd_attributespvdDisplay": pvs.Show(
84
+ sd_attributespvd,
85
+ pvs.GetActiveViewOrCreate("RenderView"),
86
+ "UnstructuredGridRepresentation",
87
+ ),
88
+ "rHlookup_table": pvs.GetColorTransferFunction("RH"),
89
+ "volumelookup_table": pvs.GetColorTransferFunction("volume"),
90
+ }
91
+
92
+ animation_setup = namedtuple("setup", setup.keys())(**setup)
93
+
94
+
95
+ def configure_color_bar_and_display(
96
+ display, lookup_table, kind, *, anim_setup=animation_setup
97
+ ):
98
+ """
99
+ Configure color bar and display settings.
100
+ """
101
+ display.Representation = "Surface"
102
+ display.SetScalarBarVisibility(anim_setup.renderView1, True)
103
+ color_bar = pvs.GetScalarBar(lookup_table, anim_setup.renderView1)
104
+ color_bar.LabelColor = [0.0, 0.0, 0.0]
105
+ color_bar.DrawScalarBarOutline = 1
106
+ color_bar.ScalarBarOutlineColor = [0.0, 0.0, 0.0]
107
+ color_bar.TitleColor = [0.0, 0.0, 0.0]
108
+
109
+ color_bar.TitleFontSize = args.scalarbar_title_size
110
+ color_bar.LabelFontSize = args.scalarbar_label_size
111
+
112
+ if kind == "prod":
113
+ display.Opacity = 0.4
114
+ display.DisableLighting = 1
115
+ display.Diffuse = 0.76
116
+ lookup_table.RescaleTransferFunction(90.0, 101.0)
117
+ lookup_table.ApplyPreset("Black, Blue and White", True)
118
+ lookup_table.NanColor = [0.67, 1.0, 1.0]
119
+ else:
120
+ display.PointSize = 13.0
121
+ display.RenderPointsAsSpheres = 1
122
+ display.Interpolation = "PBR"
123
+ lookup_table.RescaleTransferFunction(1e-18, 1e-13)
124
+ lookup_table.ApplyPreset("Cold and Hot", True)
125
+ lookup_table.MapControlPointsToLogSpace()
126
+ lookup_table.UseLogScale = 1
127
+ lookup_table.NumberOfTableValues = 16
128
+ lookup_table.InvertTransferFunction()
129
+
130
+
131
+ def configure_data_axes_grid(display, kind):
132
+ """
133
+ Configure data axes grid settings.
134
+ """
135
+ display.DataAxesGrid.GridAxesVisibility = 1
136
+ display.DataAxesGrid.XTitle = ""
137
+ display.DataAxesGrid.YTitle = ""
138
+ display.DataAxesGrid.XAxisUseCustomLabels = 1
139
+ display.DataAxesGrid.YAxisUseCustomLabels = 1
140
+
141
+ display.DataAxesGrid.XTitleFontSize = args.axes_title_size
142
+ display.DataAxesGrid.XLabelFontSize = args.axes_label_size
143
+ display.DataAxesGrid.YTitleFontSize = args.axes_title_size
144
+ display.DataAxesGrid.YLabelFontSize = args.axes_label_size
145
+
146
+ if kind == "prod":
147
+ display.DataAxesGrid.ZTitle = ""
148
+ display.DataAxesGrid.GridColor = [0.0, 0.0, 0.0]
149
+ display.DataAxesGrid.ShowGrid = 1
150
+ display.DataAxesGrid.LabelUniqueEdgesOnly = 0
151
+ display.DataAxesGrid.ZAxisUseCustomLabels = 1
152
+ display.DataAxesGrid.ZTitleFontSize = args.axes_title_size
153
+ display.DataAxesGrid.ZLabelFontSize = args.axes_label_size
154
+ else:
155
+ display.DataAxesGrid.ZTitle = "Z [m]"
156
+ display.DataAxesGrid.ZLabelColor = [0.0, 0.0, 0.0]
157
+ display.DataAxesGrid.ZTitleColor = [0.0, 0.0, 0.0]
158
+ display.DataAxesGrid.ZTitleFontSize = args.axes_title_size
159
+ display.DataAxesGrid.ZLabelFontSize = args.axes_label_size
160
+
161
+
162
+ def configure_view_appearance(render_view):
163
+ """
164
+ Configure view appearance settings."""
165
+ render_view.OrientationAxesLabelColor = [0.0, 0.0, 0.0]
166
+ render_view.OrientationAxesOutlineColor = [0.0, 0.0, 0.0]
167
+ render_view.OrientationAxesXVisibility = 0
168
+ render_view.OrientationAxesYVisibility = 0
169
+ render_view.OrientationAxesZColor = [0.0, 0.0, 0.0]
170
+ render_view.UseColorPaletteForBackground = 0
171
+ render_view.Background = [1.0, 1.0, 1.0]
172
+
173
+
174
+ def set_camera_view(render_view):
175
+ """
176
+ Set camera view settings.
177
+ """
178
+ layout1 = pvs.GetLayout()
179
+ layout1.SetSize(1592, 1128)
180
+ render_view.CameraPosition = [
181
+ 1548.95,
182
+ -1349.49,
183
+ 699.27,
184
+ ]
185
+ render_view.CameraFocalPoint = [
186
+ -1.37e-13,
187
+ 3.18e-13,
188
+ 505.00,
189
+ ]
190
+ render_view.CameraViewUp = [
191
+ -0.07,
192
+ 0.06,
193
+ 0.99,
194
+ ]
195
+ render_view.CameraParallelScale = 534.08
196
+
197
+
198
+ def save_animation_and_screenshot(render_view, animation_path, screenshot_path):
199
+ """
200
+ Save animation and screenshot.
201
+ """
202
+ animation_scene = pvs.GetAnimationScene()
203
+ animation_scene.UpdateAnimationUsingDataTimeSteps()
204
+
205
+ pvs.SaveAnimation(animation_path, render_view, FrameRate=15)
206
+
207
+ if not screenshot_path:
208
+ return
209
+
210
+ time_steps = sd_productspvd.TimestepValues
211
+ if not time_steps:
212
+ return
213
+
214
+ last_time = time_steps[-1]
215
+ render_view.ViewTime = last_time
216
+
217
+ for reader in (sd_productspvd, sd_attributespvd):
218
+ reader.UpdatePipeline(last_time)
219
+
220
+ pvs.ExportView(
221
+ filename=str(pathlib.Path(screenshot_path)),
222
+ view=render_view,
223
+ Rasterize3Dgeometry=False,
224
+ GL2PSdepthsortmethod="BSP sorting (slow, best)",
225
+ )
226
+
227
+ pvs.RenderAllViews()
228
+
229
+
230
+ configure_color_bar_and_display(
231
+ animation_setup.sd_productspvdDisplay, animation_setup.rHlookup_table, kind="prod"
232
+ )
233
+ configure_data_axes_grid(animation_setup.sd_productspvdDisplay, kind="prod")
234
+ configure_view_appearance(animation_setup.renderView1)
235
+ configure_color_bar_and_display(
236
+ animation_setup.sd_attributespvdDisplay,
237
+ animation_setup.volumelookup_table,
238
+ kind="attr",
239
+ )
240
+ configure_data_axes_grid(animation_setup.sd_attributespvdDisplay, kind="attr")
241
+ set_camera_view(animation_setup.renderView1)
242
+ save_animation_and_screenshot(
243
+ animation_setup.renderView1, args.output_animation_path, args.output_screenshot_path
244
+ )
@@ -86,6 +86,7 @@ Example notebooks include:
86
86
  - `PySDM_examples.Yang_et_al_2018`: polydisperse particle spectrum, activation/deactivation cycles
87
87
  - `PySDM_examples.Abdul_Razzak_Ghan_2000`: polydisperse activation, comparison against <mark>GCM parameterisation</mark>
88
88
  - `PySDM_examples.Pyrcel`: polydisperse activation, mimicking example test case from <mark>Pyrcel</mark> documentation
89
+ - `PySDM_examples.Strzabala_2025_BEng`: ParaView visualisation example
89
90
  - `PySDM_examples.Lowe_et_al_2019`: externally mixed polydisperse size spectrum with <mark>surface-active organics</mark> case
90
91
  - `PySDM_examples.Grabowski_and_Pawlowska_2023`: polydisperse activation, focus on <mark>ripening</mark>
91
92
  - `PySDM_examples.Jensen_and_Nugent_2017`: polydisperse activation featuring <mark>giant CCN</mark>
@@ -97,6 +98,10 @@ Example notebooks include:
97
98
 
98
99
  The parcel environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
99
100
 
101
+ <center>
102
+ <img src="https://github.com/open-atmos/PySDM/releases/download/tip/parcel_animation_ubuntu-24.04.gif" style="width:80%" />
103
+ </center>
104
+
100
105
  ## 0D box environment
101
106
 
102
107
  The box environment is void of any spatial or thermodynamic context, it constitutes the most basic framework.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pysdm-examples
3
- Version: 3.0.0rc12
3
+ Version: 3.0.0rc13
4
4
  Summary: PySDM usage examples reproducing results from literature and depicting how to use PySDM from Python Jupyter notebooks
5
5
  Home-page: https://github.com/open-atmos/PySDM
6
6
  Author: https://github.com/open-atmos/PySDM/graphs/contributors
@@ -15,7 +15,6 @@ Requires-Dist: PyMPDATA
15
15
  Requires-Dist: open-atmos-jupyter-utils
16
16
  Requires-Dist: pystrict
17
17
  Requires-Dist: matplotlib
18
- Requires-Dist: Pillow
19
18
  Requires-Dist: joblib
20
19
  Requires-Dist: ipywidgets
21
20
  Requires-Dist: seaborn
@@ -26,11 +25,10 @@ Requires-Dist: pyvinecopulib
26
25
  Requires-Dist: networkx
27
26
  Provides-Extra: ci-version-pins
28
27
  Requires-Dist: PySDM[CI_version_pins]; extra == "ci-version-pins"
29
- Requires-Dist: PyMPDATA==1.6.1; extra == "ci-version-pins"
28
+ Requires-Dist: PyMPDATA==1.6.3; extra == "ci-version-pins"
30
29
  Requires-Dist: open-atmos-jupyter-utils==1.3.0; extra == "ci-version-pins"
31
30
  Requires-Dist: pystrict==1.3; extra == "ci-version-pins"
32
31
  Requires-Dist: matplotlib!=3.9.1; extra == "ci-version-pins"
33
- Requires-Dist: Pillow<11.3.0; extra == "ci-version-pins"
34
32
  Requires-Dist: joblib==1.5.1; extra == "ci-version-pins"
35
33
  Requires-Dist: ipywidgets==8.1.7; extra == "ci-version-pins"
36
34
  Requires-Dist: seaborn==0.13.2; extra == "ci-version-pins"
@@ -137,6 +135,7 @@ Example notebooks include:
137
135
  - <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
138
136
  - <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>
139
137
  - <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
138
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Strzabala_2025_BEng.html">Strzabala_2025_BEng</a>: ParaView visualisation example
140
139
  - <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
141
140
  - <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>
142
141
  - <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>
@@ -148,6 +147,10 @@ Example notebooks include:
148
147
 
149
148
  The parcel environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
150
149
 
150
+ <center>
151
+ <img src="https://github.com/open-atmos/PySDM/releases/download/tip/parcel_animation_ubuntu-24.04.gif" style="width:80%" />
152
+ </center>
153
+
151
154
  ## 0D box environment
152
155
 
153
156
  The box environment is void of any spatial or thermodynamic context, it constitutes the most basic framework.
@@ -127,6 +127,8 @@ PySDM_examples/Srivastava_1982/example.py
127
127
  PySDM_examples/Srivastava_1982/settings.py
128
128
  PySDM_examples/Srivastava_1982/simulation.py
129
129
  PySDM_examples/Stewart_1975/__init__.py
130
+ PySDM_examples/Strzabala_2025_BEng/__init__.py
131
+ PySDM_examples/Strzabala_2025_BEng/paraview_parcel_model.py
130
132
  PySDM_examples/Toon_et_al_1980/__init__.py
131
133
  PySDM_examples/Van_Hook_1968/__init__.py
132
134
  PySDM_examples/Ware_et_al_2025/__init__.py
@@ -3,7 +3,6 @@ PyMPDATA
3
3
  open-atmos-jupyter-utils
4
4
  pystrict
5
5
  matplotlib
6
- Pillow
7
6
  joblib
8
7
  ipywidgets
9
8
  seaborn
@@ -15,11 +14,10 @@ networkx
15
14
 
16
15
  [CI_version_pins]
17
16
  PySDM[CI_version_pins]
18
- PyMPDATA==1.6.1
17
+ PyMPDATA==1.6.3
19
18
  open-atmos-jupyter-utils==1.3.0
20
19
  pystrict==1.3
21
20
  matplotlib!=3.9.1
22
- Pillow<11.3.0
23
21
  joblib==1.5.1
24
22
  ipywidgets==8.1.7
25
23
  seaborn==0.13.2
@@ -28,7 +28,6 @@ setup(
28
28
  "open-atmos-jupyter-utils",
29
29
  "pystrict",
30
30
  "matplotlib",
31
- "Pillow",
32
31
  "joblib",
33
32
  "ipywidgets",
34
33
  "seaborn",
@@ -41,11 +40,10 @@ setup(
41
40
  extras_require={
42
41
  "CI_version_pins": [
43
42
  "PySDM[CI_version_pins]",
44
- "PyMPDATA==1.6.1",
43
+ "PyMPDATA==1.6.3",
45
44
  "open-atmos-jupyter-utils==1.3.0",
46
45
  "pystrict==1.3",
47
46
  "matplotlib!=3.9.1",
48
- "Pillow<11.3.0",
49
47
  "joblib==1.5.1",
50
48
  "ipywidgets==8.1.7",
51
49
  "seaborn==0.13.2",