PySDM-examples 2.106__tar.gz → 2.108__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 (168) hide show
  1. {pysdm_examples-2.106 → pysdm_examples-2.108}/PKG-INFO +3 -3
  2. {pysdm_examples-2.106/PySDM_examples/Arabas_et_al_2023 → pysdm_examples-2.108/PySDM_examples/Arabas_et_al_2025}/__init__.py +1 -1
  3. {pysdm_examples-2.106/PySDM_examples/Arabas_et_al_2023 → pysdm_examples-2.108/PySDM_examples/Arabas_et_al_2025}/plots.py +2 -2
  4. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py +1 -0
  5. pysdm_examples-2.108/PySDM_examples/Rozanski_and_Sonntag_1982/multibox.py +96 -0
  6. {pysdm_examples-2.106 → pysdm_examples-2.108}/docs/pysdm_examples_landing.md +2 -2
  7. {pysdm_examples-2.106 → pysdm_examples-2.108}/pyproject.toml +1 -1
  8. {pysdm_examples-2.106 → pysdm_examples-2.108}/pysdm_examples.egg-info/PKG-INFO +3 -3
  9. {pysdm_examples-2.106 → pysdm_examples-2.108}/pysdm_examples.egg-info/SOURCES.txt +8 -7
  10. {pysdm_examples-2.106 → pysdm_examples-2.108}/MANIFEST.in +0 -0
  11. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py +0 -0
  12. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Abade_and_Albuquerque_2024/settings.py +0 -0
  13. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Abade_and_Albuquerque_2024/simulation.py +0 -0
  14. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py +0 -0
  15. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
  16. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
  17. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
  18. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +0 -0
  19. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Alpert_and_Knopf_2016/__init__.py +0 -0
  20. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Alpert_and_Knopf_2016/simulation.py +0 -0
  21. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Alpert_and_Knopf_2016/table.py +0 -0
  22. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Alpert_and_Knopf_2016/table_1.py +0 -0
  23. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Alpert_and_Knopf_2016/table_2.py +0 -0
  24. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Arabas_and_Shima_2017/__init__.py +0 -0
  25. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -0
  26. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Arabas_and_Shima_2017/settings.py +0 -0
  27. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Arabas_and_Shima_2017/simulation.py +0 -0
  28. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Arabas_et_al_2015/__init__.py +0 -0
  29. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Arabas_et_al_2015/example.py +0 -0
  30. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +0 -0
  31. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Arabas_et_al_2015/settings.py +0 -0
  32. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Arabas_et_al_2015/spin_up.py +0 -0
  33. {pysdm_examples-2.106/PySDM_examples/Arabas_et_al_2023 → pysdm_examples-2.108/PySDM_examples/Arabas_et_al_2025}/commons.py +0 -0
  34. {pysdm_examples-2.106/PySDM_examples/Arabas_et_al_2023 → pysdm_examples-2.108/PySDM_examples/Arabas_et_al_2025}/curved_text.py +0 -0
  35. {pysdm_examples-2.106/PySDM_examples/Arabas_et_al_2023 → pysdm_examples-2.108/PySDM_examples/Arabas_et_al_2025}/frozen_fraction.py +0 -0
  36. {pysdm_examples-2.106/PySDM_examples/Arabas_et_al_2023 → pysdm_examples-2.108/PySDM_examples/Arabas_et_al_2025}/make_particulator.py +0 -0
  37. {pysdm_examples-2.106/PySDM_examples/Arabas_et_al_2023 → pysdm_examples-2.108/PySDM_examples/Arabas_et_al_2025}/run_simulation.py +0 -0
  38. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -0
  39. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -0
  40. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Bartman_2020_MasterThesis/fig_5_SCIPY_VS_ADAPTIVE.py +0 -0
  41. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Bartman_et_al_2021/__init__.py +0 -0
  42. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Bartman_et_al_2021/label.py +0 -0
  43. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Berry_1967/__init__.py +0 -0
  44. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Berry_1967/example.py +0 -0
  45. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Berry_1967/example_fig_6.py +0 -0
  46. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Berry_1967/settings.py +0 -0
  47. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Berry_1967/spectrum_plotter.py +0 -0
  48. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Bieli_et_al_2022/__init__.py +0 -0
  49. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Bieli_et_al_2022/settings.py +0 -0
  50. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Bieli_et_al_2022/simulation.py +0 -0
  51. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Bolin_1958/__init__.py +0 -0
  52. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Bolot_et_al_2013/__init__.py +0 -0
  53. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +0 -0
  54. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Bulenok_2023_MasterThesis/performance_comparison_Srivastava_Setup.py +0 -0
  55. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -0
  56. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +0 -0
  57. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Ervens_and_Feingold_2012/__init__.py +0 -0
  58. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Ervens_and_Feingold_2012/settings.py +0 -0
  59. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py +0 -0
  60. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Gonfiantini_1986/__init__.py +0 -0
  61. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -0
  62. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py +0 -0
  63. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
  64. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Graf_et_al_2019/__init__.py +0 -0
  65. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py +0 -0
  66. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Jensen_and_Nugent_2017/__init__.py +0 -0
  67. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Jensen_and_Nugent_2017/plotting.py +0 -0
  68. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Jensen_and_Nugent_2017/settings.py +0 -0
  69. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Jensen_and_Nugent_2017/simulation.py +0 -0
  70. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Jensen_and_Nugent_2017/table_3.py +0 -0
  71. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Kreidenweis_et_al_2003/__init__.py +0 -0
  72. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Kreidenweis_et_al_2003/settings.py +0 -0
  73. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Kreidenweis_et_al_2003/simulation.py +0 -0
  74. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Lamb_et_al_2017/__init__.py +0 -0
  75. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Lowe_et_al_2019/__init__.py +0 -0
  76. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Lowe_et_al_2019/aerosol.py +0 -0
  77. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Lowe_et_al_2019/aerosol_code.py +0 -0
  78. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Lowe_et_al_2019/constants_def.py +0 -0
  79. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Lowe_et_al_2019/plot_helper.py +0 -0
  80. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Lowe_et_al_2019/settings.py +0 -0
  81. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Lowe_et_al_2019/simulation.py +0 -0
  82. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Merlivat_and_Nief_1967/__init__.py +0 -0
  83. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Miyake_et_al_1968/__init__.py +0 -0
  84. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py +0 -0
  85. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Morrison_and_Grabowski_2007/common.py +0 -0
  86. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Morrison_and_Grabowski_2007/cumulus.py +0 -0
  87. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py +0 -0
  88. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Niedermeier_et_al_2014/__init__.py +0 -0
  89. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Niedermeier_et_al_2014/settings.py +0 -0
  90. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Niedermeier_et_al_2014/simulation.py +0 -0
  91. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Pierchala_et_al_2022/__init__.py +0 -0
  92. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Pierchala_et_al_2022/commons.py +0 -0
  93. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Pyrcel/__init__.py +0 -0
  94. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Pyrcel/profile_plotter.py +0 -0
  95. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Pyrcel/settings.py +0 -0
  96. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Pyrcel/simulation.py +0 -0
  97. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Pyrcel/tutorial_settings.py +0 -0
  98. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Pyrcel/tutorial_simulation.py +0 -0
  99. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Shima_et_al_2009/__init__.py +0 -0
  100. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Shima_et_al_2009/error_measure.py +0 -0
  101. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Shima_et_al_2009/example.py +0 -0
  102. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Shima_et_al_2009/example_timing.py +0 -0
  103. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Shima_et_al_2009/settings.py +0 -0
  104. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py +0 -0
  105. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Shima_et_al_2009/tutorial_example.py +0 -0
  106. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py +0 -0
  107. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Shima_et_al_2009/tutorial_settings.py +0 -0
  108. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Shipway_and_Hill_2012/__init__.py +0 -0
  109. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py +0 -0
  110. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Shipway_and_Hill_2012/plot.py +0 -0
  111. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Shipway_and_Hill_2012/settings.py +0 -0
  112. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Shipway_and_Hill_2012/simulation.py +0 -0
  113. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Singer_Ward/__init__.py +0 -0
  114. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Singer_Ward/aerosol.py +0 -0
  115. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Srivastava_1982/__init__.py +0 -0
  116. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Srivastava_1982/equations.py +0 -0
  117. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Srivastava_1982/example.py +0 -0
  118. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Srivastava_1982/settings.py +0 -0
  119. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Srivastava_1982/simulation.py +0 -0
  120. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Szumowski_et_al_1998/__init__.py +0 -0
  121. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Szumowski_et_al_1998/fields.py +0 -0
  122. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Szumowski_et_al_1998/gui.py +0 -0
  123. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Szumowski_et_al_1998/gui_controller.py +0 -0
  124. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Szumowski_et_al_1998/gui_settings.py +0 -0
  125. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Szumowski_et_al_1998/gui_viewer.py +0 -0
  126. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Szumowski_et_al_1998/make_default_product_collection.py +0 -0
  127. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Szumowski_et_al_1998/mpdata_2d.py +0 -0
  128. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Szumowski_et_al_1998/plots.py +0 -0
  129. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Szumowski_et_al_1998/simulation.py +0 -0
  130. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Szumowski_et_al_1998/sounding.py +0 -0
  131. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Szumowski_et_al_1998/storage.py +0 -0
  132. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Toon_et_al_1980/__init__.py +0 -0
  133. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Van_Hook_1968/__init__.py +0 -0
  134. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Yang_et_al_2018/__init__.py +0 -0
  135. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Yang_et_al_2018/settings.py +0 -0
  136. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Yang_et_al_2018/simulation.py +0 -0
  137. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/Zaba_et_al_2025/__init__.py +0 -0
  138. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/_HOWTOs/__init__.py +0 -0
  139. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/__init__.py +0 -0
  140. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/deJong_Azimi/__init__.py +0 -0
  141. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/deJong_Azimi/cloudy_data.py +0 -0
  142. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/deJong_Azimi/cloudy_data_0d.py +0 -0
  143. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/deJong_Azimi/settings1D.py +0 -0
  144. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/deJong_Azimi/simulation_0D.py +0 -0
  145. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py +0 -0
  146. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
  147. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py +0 -0
  148. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
  149. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/deJong_Mackay_et_al_2023/simulation1D.py +0 -0
  150. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_0D.py +0 -0
  151. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_ss.py +0 -0
  152. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/seeding/__init__.py +0 -0
  153. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/seeding/settings.py +0 -0
  154. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/seeding/simulation.py +0 -0
  155. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/utils/__init__.py +0 -0
  156. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/utils/basic_simulation.py +0 -0
  157. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/utils/dummy_controller.py +0 -0
  158. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/utils/progbar_controller.py +0 -0
  159. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/utils/read_vtk_1d.py +0 -0
  160. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/utils/widgets/__init__.py +0 -0
  161. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/utils/widgets/freezer.py +0 -0
  162. {pysdm_examples-2.106 → pysdm_examples-2.108}/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
  163. {pysdm_examples-2.106 → pysdm_examples-2.108}/README.md +0 -0
  164. {pysdm_examples-2.106 → pysdm_examples-2.108}/pysdm_examples.egg-info/dependency_links.txt +0 -0
  165. {pysdm_examples-2.106 → pysdm_examples-2.108}/pysdm_examples.egg-info/requires.txt +0 -0
  166. {pysdm_examples-2.106 → pysdm_examples-2.108}/pysdm_examples.egg-info/top_level.txt +0 -0
  167. {pysdm_examples-2.106 → pysdm_examples-2.108}/setup.cfg +0 -0
  168. {pysdm_examples-2.106 → pysdm_examples-2.108}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pysdm-examples
3
- Version: 2.106
3
+ Version: 2.108
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
@@ -83,7 +83,7 @@ Example notebooks:
83
83
  - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2015.html">Arabas_et_al_2015</a>
84
84
  - 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):
85
85
  - "hello world" notebook depicting how to automate using Python the process of loading data and creating animations in <mark>Paraview</mark>
86
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2023.html">Arabas_et_al_2023</a>: adaptation of the 2D kinematic setup for studying <mark>glaciation</mark> of the cloud deck by <mark>immersion freezing</mark>
86
+ - <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>
87
87
 
88
88
  ## 1D kinematic environment (prescribed-flow, single-column)
89
89
 
@@ -142,7 +142,7 @@ Example notebooks include:
142
142
  - <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>
143
143
  - immersion freezing only:
144
144
  - <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
145
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2023.html">Arabas_et_al_2023</a>: comparison of time-dependent and singular immersion freezing schemes
145
+ - <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
146
146
 
147
147
  The box environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
148
148
 
@@ -1,6 +1,6 @@
1
1
  """
2
2
  box-model and 2D prescribed-flow immersion-freezing examples based on
3
- [Arabas et al. 2023](https://doi.org/10.48550/arXiv.2308.05015)
3
+ [Arabas et al. 2025](https://doi.org/10.1029/2024MS004770)
4
4
 
5
5
  aida.ipynb:
6
6
  .. include:: ./aida.ipynb.badges.md
@@ -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_2023.curved_text import CurvedText
5
- from PySDM_examples.Arabas_et_al_2023.frozen_fraction import FrozenFraction
4
+ from PySDM_examples.Arabas_et_al_2025.curved_text import CurvedText
5
+ from PySDM_examples.Arabas_et_al_2025.frozen_fraction import FrozenFraction
6
6
 
7
7
  from PySDM.physics import si
8
8
 
@@ -7,3 +7,4 @@ figs_4_5_6.ipynb:
7
7
  """
8
8
 
9
9
  # pylint: disable=invalid-name
10
+ from PySDM_examples.Rozanski_and_Sonntag_1982.multibox import MultiBox
@@ -0,0 +1,96 @@
1
+ """
2
+ definition of a multi-box environment (parcel iteratively adjusting to a stationary state)
3
+ plus helper equation for isotopic ratio evolution
4
+ """
5
+
6
+ # pylint: disable=invalid-name
7
+
8
+ import numpy as np
9
+
10
+ from PySDM.environments import Parcel
11
+
12
+
13
+ def Rv_prim(*, Rl, Nl, Rv, Nv, dNl, Rr, K, a):
14
+ """eq. (2) in [Rozanski and Sonntag 1982](https://doi.org/10.3402/tellusa.v34i2.10795)"""
15
+ return (Rl * Nl + Rv * Nv + dNl * Rr * K) / ((Nl + dNl * K) * a + Nv)
16
+
17
+
18
+ class MultiBox(Parcel):
19
+ """iterative parcel model in which each new iteration operates with ambient isotopic profile
20
+ resultant from the previous iteration, leading to a stationary state
21
+ """
22
+
23
+ def __init__(
24
+ self,
25
+ *,
26
+ isotopes,
27
+ delta_nl,
28
+ rain_isotope_ratios,
29
+ nt,
30
+ autoconversion_mixrat_threshold,
31
+ isotope_exchange_factor,
32
+ **kwargs,
33
+ ):
34
+ super().__init__(
35
+ variables=[
36
+ f"{ratio}_{isotope}" for ratio in ("Rv", "Rr") for isotope in isotopes
37
+ ],
38
+ **kwargs,
39
+ )
40
+ self.isotopes = isotopes
41
+ self.delta_nl = delta_nl
42
+ self.rain_isotope_ratios = rain_isotope_ratios
43
+ self.nt = nt
44
+ self.autoconversion_mixrat_threshold = autoconversion_mixrat_threshold
45
+ self.isotope_exchange_factor = isotope_exchange_factor
46
+
47
+ def advance_parcel_vars(self):
48
+ """explicit Euler integration of isotope-ratio time derivative"""
49
+ assert self.delta_liquid_water_mixing_ratio >= 0
50
+ self._recalculate_temperature_pressure_relative_humidity(self._tmp)
51
+
52
+ alpha_old = {}
53
+ dRv__dt = {}
54
+ for isotope in self.isotopes:
55
+ alpha_fun = getattr(
56
+ self.particulator.formulae.isotope_equilibrium_fractionation_factors,
57
+ f"alpha_l_{isotope}",
58
+ )
59
+ alpha_old[isotope] = alpha_fun(self["T"][0])
60
+ alpha_new = alpha_fun(self._tmp["T"][0])
61
+
62
+ dRv__dt[isotope] = self[f"Rv_{isotope}"][
63
+ 0
64
+ ] * self.particulator.formulae.isotope_ratio_evolution.d_Rv_over_Rv(
65
+ alpha=alpha_old[isotope],
66
+ d_alpha=(alpha_new - alpha_old[isotope]) / self.dt,
67
+ n_vapour=self["water_vapour_mixing_ratio"][0],
68
+ d_n_vapour=-self.delta_liquid_water_mixing_ratio / self.dt,
69
+ n_liquid=self.autoconversion_mixrat_threshold, # TODO #1207
70
+ )
71
+
72
+ super().advance_parcel_vars()
73
+
74
+ for isotope in self.isotopes:
75
+ self.particulator.backend.explicit_euler(
76
+ self._tmp[f"Rv_{isotope}"], self.particulator.dt, dRv__dt[isotope]
77
+ )
78
+ level = self.particulator.n_steps
79
+ if self.delta_nl is not None:
80
+ self._tmp[f"Rv_{isotope}"][:] = Rv_prim(
81
+ Rl=alpha_old[isotope] * self._tmp[f"Rv_{isotope}"][0],
82
+ Nl=self.autoconversion_mixrat_threshold,
83
+ Rv=self._tmp[f"Rv_{isotope}"][0],
84
+ Nv=self["water_vapour_mixing_ratio"][0],
85
+ dNl=np.sum(self.delta_nl[level:]),
86
+ Rr=self.rain_isotope_ratios[isotope][
87
+ min(
88
+ level + 2, self.nt # TODO #1207: this warrants a comment...
89
+ )
90
+ ],
91
+ K=self.isotope_exchange_factor,
92
+ a=alpha_old[isotope],
93
+ )
94
+ self._tmp[f"Rr_{isotope}"][:] = (
95
+ alpha_old[isotope] * self._tmp[f"Rv_{isotope}"][0]
96
+ )
@@ -47,7 +47,7 @@ Example notebooks:
47
47
  - `PySDM_examples.Arabas_et_al_2015`
48
48
  - 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):
49
49
  - "hello world" notebook depicting how to automate using Python the process of loading data and creating animations in <mark>Paraview</mark>
50
- - `PySDM_examples.Arabas_et_al_2023`: adaptation of the 2D kinematic setup for studying <mark>glaciation</mark> of the cloud deck by <mark>immersion freezing</mark>
50
+ - `PySDM_examples.Arabas_et_al_2025`: adaptation of the 2D kinematic setup for studying <mark>glaciation</mark> of the cloud deck by <mark>immersion freezing</mark>
51
51
 
52
52
  ## 1D kinematic environment (prescribed-flow, single-column)
53
53
 
@@ -106,7 +106,7 @@ Example notebooks include:
106
106
  - `PySDM_examples.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>
107
107
  - immersion freezing only:
108
108
  - `PySDM_examples.Alpert_and_Knopf_2016`: stochastic immersion freezing with monodisperse vs. lognormal immersed surface areas
109
- - `PySDM_examples.Arabas_et_al_2023`: comparison of time-dependent and singular immersion freezing schemes
109
+ - `PySDM_examples.Arabas_et_al_2025`: comparison of time-dependent and singular immersion freezing schemes
110
110
 
111
111
  The box environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
112
112
 
@@ -4,4 +4,4 @@ local_scheme = "no-local-version"
4
4
  version_scheme = "post-release"
5
5
 
6
6
  [build-system]
7
- requires = ['setuptools==75.8.2', 'setuptools-scm==8.2.0']
7
+ requires = ['setuptools==76.0.0', 'setuptools-scm==8.2.0']
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pysdm-examples
3
- Version: 2.106
3
+ Version: 2.108
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
@@ -83,7 +83,7 @@ Example notebooks:
83
83
  - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2015.html">Arabas_et_al_2015</a>
84
84
  - 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):
85
85
  - "hello world" notebook depicting how to automate using Python the process of loading data and creating animations in <mark>Paraview</mark>
86
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2023.html">Arabas_et_al_2023</a>: adaptation of the 2D kinematic setup for studying <mark>glaciation</mark> of the cloud deck by <mark>immersion freezing</mark>
86
+ - <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>
87
87
 
88
88
  ## 1D kinematic environment (prescribed-flow, single-column)
89
89
 
@@ -142,7 +142,7 @@ Example notebooks include:
142
142
  - <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>
143
143
  - immersion freezing only:
144
144
  - <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
145
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2023.html">Arabas_et_al_2023</a>: comparison of time-dependent and singular immersion freezing schemes
145
+ - <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
146
146
 
147
147
  The box environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
148
148
 
@@ -25,13 +25,13 @@ PySDM_examples/Arabas_et_al_2015/example.py
25
25
  PySDM_examples/Arabas_et_al_2015/example_benchmark.py
26
26
  PySDM_examples/Arabas_et_al_2015/settings.py
27
27
  PySDM_examples/Arabas_et_al_2015/spin_up.py
28
- PySDM_examples/Arabas_et_al_2023/__init__.py
29
- PySDM_examples/Arabas_et_al_2023/commons.py
30
- PySDM_examples/Arabas_et_al_2023/curved_text.py
31
- PySDM_examples/Arabas_et_al_2023/frozen_fraction.py
32
- PySDM_examples/Arabas_et_al_2023/make_particulator.py
33
- PySDM_examples/Arabas_et_al_2023/plots.py
34
- PySDM_examples/Arabas_et_al_2023/run_simulation.py
28
+ PySDM_examples/Arabas_et_al_2025/__init__.py
29
+ PySDM_examples/Arabas_et_al_2025/commons.py
30
+ PySDM_examples/Arabas_et_al_2025/curved_text.py
31
+ PySDM_examples/Arabas_et_al_2025/frozen_fraction.py
32
+ PySDM_examples/Arabas_et_al_2025/make_particulator.py
33
+ PySDM_examples/Arabas_et_al_2025/plots.py
34
+ PySDM_examples/Arabas_et_al_2025/run_simulation.py
35
35
  PySDM_examples/Bartman_2020_MasterThesis/__init__.py
36
36
  PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py
37
37
  PySDM_examples/Bartman_2020_MasterThesis/fig_5_SCIPY_VS_ADAPTIVE.py
@@ -94,6 +94,7 @@ PySDM_examples/Pyrcel/simulation.py
94
94
  PySDM_examples/Pyrcel/tutorial_settings.py
95
95
  PySDM_examples/Pyrcel/tutorial_simulation.py
96
96
  PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py
97
+ PySDM_examples/Rozanski_and_Sonntag_1982/multibox.py
97
98
  PySDM_examples/Shima_et_al_2009/__init__.py
98
99
  PySDM_examples/Shima_et_al_2009/error_measure.py
99
100
  PySDM_examples/Shima_et_al_2009/example.py
File without changes
File without changes
File without changes