PySDM-examples 2.80__tar.gz → 2.81__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 (165) hide show
  1. pysdm_examples-2.81/PKG-INFO +151 -0
  2. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Kreidenweis_et_al_2003/simulation.py +1 -1
  3. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Srivastava_1982/simulation.py +1 -1
  4. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/deJong_Azimi/simulation_0D.py +3 -3
  5. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_0D.py +9 -9
  6. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/seeding/simulation.py +4 -1
  7. pysdm_examples-2.81/PySDM_examples.egg-info/PKG-INFO +151 -0
  8. pysdm_examples-2.81/pyproject.toml +5 -0
  9. {PySDM-examples-2.80 → pysdm_examples-2.81}/setup.py +0 -1
  10. PySDM-examples-2.80/PKG-INFO +0 -140
  11. PySDM-examples-2.80/PySDM_examples.egg-info/PKG-INFO +0 -140
  12. PySDM-examples-2.80/pyproject.toml +0 -5
  13. {PySDM-examples-2.80 → pysdm_examples-2.81}/MANIFEST.in +0 -0
  14. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py +0 -0
  15. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Abade_and_Albuquerque_2024/settings.py +0 -0
  16. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Abade_and_Albuquerque_2024/simulation.py +0 -0
  17. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py +0 -0
  18. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
  19. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
  20. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
  21. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +0 -0
  22. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Alpert_and_Knopf_2016/__init__.py +0 -0
  23. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Alpert_and_Knopf_2016/simulation.py +0 -0
  24. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Alpert_and_Knopf_2016/table.py +0 -0
  25. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Alpert_and_Knopf_2016/table_1.py +0 -0
  26. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Alpert_and_Knopf_2016/table_2.py +0 -0
  27. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_and_Shima_2017/__init__.py +0 -0
  28. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -0
  29. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_and_Shima_2017/settings.py +0 -0
  30. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_and_Shima_2017/simulation.py +0 -0
  31. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_et_al_2015/__init__.py +0 -0
  32. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_et_al_2015/example.py +0 -0
  33. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +0 -0
  34. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_et_al_2015/settings.py +0 -0
  35. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_et_al_2015/spin_up.py +0 -0
  36. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_et_al_2023/__init__.py +0 -0
  37. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_et_al_2023/commons.py +0 -0
  38. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_et_al_2023/curved_text.py +0 -0
  39. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_et_al_2023/frozen_fraction.py +0 -0
  40. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_et_al_2023/make_particulator.py +0 -0
  41. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_et_al_2023/plots.py +0 -0
  42. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Arabas_et_al_2023/run_simulation.py +0 -0
  43. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -0
  44. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -0
  45. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Bartman_2020_MasterThesis/fig_5_SCIPY_VS_ADAPTIVE.py +0 -0
  46. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Bartman_et_al_2021/__init__.py +0 -0
  47. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Bartman_et_al_2021/label.py +0 -0
  48. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Berry_1967/__init__.py +0 -0
  49. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Berry_1967/example.py +0 -0
  50. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Berry_1967/example_fig_6.py +0 -0
  51. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Berry_1967/settings.py +0 -0
  52. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Berry_1967/spectrum_plotter.py +0 -0
  53. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Bieli_et_al_2022/__init__.py +0 -0
  54. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Bieli_et_al_2022/settings.py +0 -0
  55. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Bieli_et_al_2022/simulation.py +0 -0
  56. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Bolot_et_al_2013/__init__.py +0 -0
  57. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +0 -0
  58. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -0
  59. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +0 -0
  60. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Ervens_and_Feingold_2012/__init__.py +0 -0
  61. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Ervens_and_Feingold_2012/settings.py +0 -0
  62. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py +0 -0
  63. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -0
  64. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py +0 -0
  65. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
  66. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Graf_et_al_2019/__init__.py +0 -0
  67. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py +0 -0
  68. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Jensen_and_Nugent_2017/__init__.py +0 -0
  69. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Jensen_and_Nugent_2017/plotting.py +0 -0
  70. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Jensen_and_Nugent_2017/settings.py +0 -0
  71. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Jensen_and_Nugent_2017/simulation.py +0 -0
  72. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Jensen_and_Nugent_2017/table_3.py +0 -0
  73. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Kreidenweis_et_al_2003/__init__.py +0 -0
  74. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Kreidenweis_et_al_2003/settings.py +0 -0
  75. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Lamb_et_al_2017/__init__.py +0 -0
  76. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Lowe_et_al_2019/__init__.py +0 -0
  77. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Lowe_et_al_2019/aerosol.py +0 -0
  78. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Lowe_et_al_2019/aerosol_code.py +0 -0
  79. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Lowe_et_al_2019/constants_def.py +0 -0
  80. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Lowe_et_al_2019/plot_helper.py +0 -0
  81. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Lowe_et_al_2019/settings.py +0 -0
  82. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Lowe_et_al_2019/simulation.py +0 -0
  83. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Merlivat_and_Nief_1967/__init__.py +0 -0
  84. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Miyake_et_al_1968/__init__.py +0 -0
  85. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py +0 -0
  86. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Morrison_and_Grabowski_2007/common.py +0 -0
  87. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Morrison_and_Grabowski_2007/cumulus.py +0 -0
  88. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py +0 -0
  89. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Niedermeier_et_al_2014/__init__.py +0 -0
  90. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Niedermeier_et_al_2014/settings.py +0 -0
  91. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Niedermeier_et_al_2014/simulation.py +0 -0
  92. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Pierchala_et_al_2022/__init__.py +0 -0
  93. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Pierchala_et_al_2022/commons.py +0 -0
  94. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Pyrcel/__init__.py +0 -0
  95. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Pyrcel/profile_plotter.py +0 -0
  96. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Pyrcel/settings.py +0 -0
  97. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Pyrcel/simulation.py +0 -0
  98. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Pyrcel/tutorial_settings.py +0 -0
  99. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Pyrcel/tutorial_simulation.py +0 -0
  100. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py +0 -0
  101. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Shima_et_al_2009/__init__.py +0 -0
  102. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Shima_et_al_2009/error_measure.py +0 -0
  103. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Shima_et_al_2009/example.py +0 -0
  104. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Shima_et_al_2009/example_timing.py +0 -0
  105. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Shima_et_al_2009/settings.py +0 -0
  106. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py +0 -0
  107. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Shima_et_al_2009/tutorial_example.py +0 -0
  108. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py +0 -0
  109. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Shima_et_al_2009/tutorial_settings.py +0 -0
  110. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Shipway_and_Hill_2012/__init__.py +0 -0
  111. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py +0 -0
  112. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Shipway_and_Hill_2012/plot.py +0 -0
  113. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Shipway_and_Hill_2012/settings.py +0 -0
  114. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Shipway_and_Hill_2012/simulation.py +0 -0
  115. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Singer_Ward/__init__.py +0 -0
  116. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Singer_Ward/aerosol.py +0 -0
  117. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Srivastava_1982/__init__.py +0 -0
  118. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Srivastava_1982/equations.py +0 -0
  119. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Srivastava_1982/example.py +0 -0
  120. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Srivastava_1982/settings.py +0 -0
  121. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Szumowski_et_al_1998/__init__.py +0 -0
  122. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Szumowski_et_al_1998/fields.py +0 -0
  123. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Szumowski_et_al_1998/gui.py +0 -0
  124. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Szumowski_et_al_1998/gui_controller.py +0 -0
  125. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Szumowski_et_al_1998/gui_settings.py +0 -0
  126. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Szumowski_et_al_1998/gui_viewer.py +0 -0
  127. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Szumowski_et_al_1998/make_default_product_collection.py +0 -0
  128. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Szumowski_et_al_1998/mpdata_2d.py +0 -0
  129. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Szumowski_et_al_1998/plots.py +0 -0
  130. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Szumowski_et_al_1998/simulation.py +0 -0
  131. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Szumowski_et_al_1998/sounding.py +0 -0
  132. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Szumowski_et_al_1998/storage.py +0 -0
  133. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Van_Hook_1968/__init__.py +0 -0
  134. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Yang_et_al_2018/__init__.py +0 -0
  135. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Yang_et_al_2018/settings.py +0 -0
  136. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/Yang_et_al_2018/simulation.py +0 -0
  137. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/__init__.py +0 -0
  138. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/deJong_Azimi/__init__.py +0 -0
  139. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/deJong_Azimi/cloudy_data.py +0 -0
  140. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/deJong_Azimi/cloudy_data_0d.py +0 -0
  141. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/deJong_Azimi/settings1D.py +0 -0
  142. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py +0 -0
  143. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
  144. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py +0 -0
  145. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
  146. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/deJong_Mackay_et_al_2023/simulation1D.py +0 -0
  147. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_ss.py +0 -0
  148. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/seeding/__init__.py +0 -0
  149. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/seeding/settings.py +0 -0
  150. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/utils/__init__.py +0 -0
  151. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/utils/basic_simulation.py +0 -0
  152. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/utils/dummy_controller.py +0 -0
  153. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/utils/notebook_vars.py +0 -0
  154. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/utils/progbar_controller.py +0 -0
  155. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/utils/read_vtk_1d.py +0 -0
  156. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/utils/widgets/__init__.py +0 -0
  157. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/utils/widgets/freezer.py +0 -0
  158. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
  159. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples.egg-info/SOURCES.txt +0 -0
  160. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples.egg-info/dependency_links.txt +0 -0
  161. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples.egg-info/requires.txt +0 -0
  162. {PySDM-examples-2.80 → pysdm_examples-2.81}/PySDM_examples.egg-info/top_level.txt +0 -0
  163. {PySDM-examples-2.80 → pysdm_examples-2.81}/README.md +0 -0
  164. {PySDM-examples-2.80 → pysdm_examples-2.81}/docs/pysdm_examples_landing.md +0 -0
  165. {PySDM-examples-2.80 → pysdm_examples-2.81}/setup.cfg +0 -0
@@ -0,0 +1,151 @@
1
+ Metadata-Version: 2.1
2
+ Name: PySDM-examples
3
+ Version: 2.81
4
+ Summary: PySDM usage examples reproducing results from literature and depicting how to use PySDM from Python Jupyter notebooks
5
+ Home-page: https://github.com/open-atmos/PySDM
6
+ Author: https://github.com/open-atmos/PySDM/graphs/contributors
7
+ Author-email: sylwester.arabas@agh.edu.pl
8
+ License: GPL-3.0
9
+ Project-URL: Tracker, https://github.com/open-atmos/PySDM/issues
10
+ Project-URL: Documentation, https://open-atmos.github.io/PySDM/PySDM_examples
11
+ Project-URL: Source, https://github.com/open-atmos/PySDM/tree/main/examples
12
+ Description-Content-Type: text/markdown
13
+ Requires-Dist: PySDM
14
+ Requires-Dist: PyMPDATA
15
+ Requires-Dist: open-atmos-jupyter-utils
16
+ Requires-Dist: pystrict
17
+ Requires-Dist: matplotlib
18
+ Requires-Dist: joblib
19
+ Requires-Dist: ipywidgets
20
+ Requires-Dist: seaborn
21
+ Requires-Dist: numdifftools
22
+ Requires-Dist: vtk
23
+ Provides-Extra: tests
24
+ Requires-Dist: pytest; extra == "tests"
25
+ Requires-Dist: nbconvert; extra == "tests"
26
+
27
+ # Introduction
28
+
29
+ <img align="left" src="https://raw.githubusercontent.com/open-atmos/PySDM/main/.github/pysdm_logo.svg" width=150 height=219 alt="pysdm logo" style="padding-right:1em">
30
+
31
+ PySDM examples are engineered as Jupyter Python notebooks supported by auxiliary Python commons
32
+ that constitute a separate <mark>PySDM-examples</mark> Python package which is also
33
+ <a href="https://pypi.org/p/PySDM-examples">available at PyPI</a>.
34
+ The examples have additional dependencies listed in
35
+ <a href="https://github.com/open-atmos/PySDM/blob/main/examples/setup.py">PySDM-examples package setup.py file</a>.
36
+ Running the example Jupyter notebooks requires the <mark>PySDM-examples</mark> package to be pip-installed.
37
+ For installation instructions see [project docs homepage](https://open-atmos.github.io/PySDM).
38
+ Note that the Jupyter notebooks themselves are not included in the package wheels, but are included
39
+ in the source .tar.gz file on PyPI, and are conveninently browsable on GitHub.
40
+ All notebooks feature header cells with badges enabling single-click execution on
41
+ <a href="https://colab.research.google.com/">Google Colab</a> and on
42
+ <a href="https://mybinder.org/">mybinder.org</a>.
43
+ The examples package is also used in the PySDM test suite.
44
+
45
+ # Example gallery
46
+
47
+ The examples are named referring to the journal paper they aim to reproduce simulations from
48
+ (or sometimes just where the inspiration originated from).
49
+ The list below groups all examples by the dimensionality and type of the employed modelling framework
50
+ ("environment" in PySDM nomenclature, which can be: <mark>box</mark>, <mark>parcel</mark>,
51
+ <mark>single-column</mark>, <mark>2D prescribed flow</mark>), and by the set of physical processes simulated
52
+ (<mark>condensation</mark>, collisional <mark>coagulation</mark> and <mark>breakup</mark>,
53
+ <mark>drop freezing</mark>, <mark>isotopic fractionation</mark>, <mark>aqueous chemistry</mark>,
54
+ <mark>seeding</mark>, ...).
55
+
56
+ ## 2D kinematic environment (prescribed-flow) mimicking Sc deck
57
+
58
+ The 2D prescribed-flow framework used here can be traced back to the work of
59
+ <a href="https://doi.org/10.1007/978-1-935704-36-2_1">Kessler 1969 (section 3C)</a>.
60
+ The setup employed in PySDM-examples, which mimics a stratiform cloud deck and features periodic horizontal boundary condition
61
+ and vanishing flow at vertical boundaries, was introduced in <a href="https://doi.org/10.1175/JAS3980">Morrison and Grabowski (2007)</a>
62
+ and later adopted for particle-based simulations in <a href="https://doi.org/10.5194/gmd-8-1677-2015">Arabas et al. (2015)</a>.
63
+ It uses a non-devergent single-eddy flow field resulting in an updraft-downdraft pair in the domain.
64
+ The flow field advects two scalar fields in an Eulerian way: water vapour mixing ratio
65
+ and dry-air potential temperature.
66
+ In PySDM-examples, the Eulerian advection is handled using the <a href="https://doi.org/10.21105/joss.03896">PyMPDATA</a> Numba-based
67
+ implementation of the <a href="https://doi.org/10.1002/fld.1071">MPDATA numerical scheme of Smolarkiewicz (e.g., 2006)</a>.
68
+ An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below:
69
+
70
+ ![animation](https://github.com/open-atmos/PySDM/wiki/files/kinematic_2D_example.gif)
71
+
72
+ Example notebooks:
73
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2015.html">Arabas_et_al_2015</a>
74
+ - 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):
75
+ - "hello world" notebook depicting how to automate using Python the process of loading data and creating animations in <mark>Paraview</mark>
76
+ - <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>
77
+
78
+ ## 1D kinematic environment (prescribed-flow, single-column)
79
+
80
+ The single-column PySDM environment is a reimplementation of the <mark>Met Office KiD framework</mark>
81
+ introduced in <a href="https://doi.org/10.1002/qj.1913">Shipway & Hill 2012</a>.
82
+ The framework features a single Eulerian-transported field of water vapour mixing ratio
83
+ (vertical profile of potential temperature is fixed).
84
+ As in the 2D kinematic framework above, the Eulerian advection is handled by
85
+ <a href="https://open-atmos.github.io/PyMPDATA/">PyMPDATA</a>.
86
+
87
+ Example notebooks:
88
+ - <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;
89
+ - <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
90
+ framework was used to exemplify operation of the <mark>Monte-Carlo collisional breakup scheme</mark> in PySDM (scheme introduced in that paper).
91
+
92
+ ## OD/1D iterative parcel/column environment mimicking removal of precipitation
93
+
94
+ This framework uses a parcel model with removal of precipitation for analysis,
95
+ iterative equilibration, the isotopic composition of the water vapour and
96
+ rain water in a column of air (no Eulerian transport, only iterative passage of a parcel through the column).
97
+
98
+ <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
99
+ deuterium and heavy-oxygen <mark>water isotopologues</mark> featured.
100
+
101
+ ## 0D parcel environment
102
+
103
+ The parcel framework implemented in PySDM uses a hydrostatic profile and adiabatic mass and energy conservation
104
+ to drive evolution of thermodynamic state and microphysical properties of particles.
105
+
106
+ Example notebooks include:
107
+ - condensation only
108
+ - <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
109
+ - <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
110
+ - <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>
111
+ - <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
112
+ - <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
113
+ - <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>
114
+ - <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>
115
+ - condensation and aqueous-chemistry
116
+ - <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)
117
+ - <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
118
+
119
+ The parcel environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
120
+
121
+ ## 0D box environment
122
+
123
+ The box environment is void of any spatial or thermodynamic context, it constitutes the most basic framework.
124
+
125
+ Example notebooks include:
126
+
127
+ - coalescence only:
128
+ - <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
129
+ - <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
130
+ - coalescence and breakup:
131
+ - <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
132
+ - <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>
133
+ - immersion freezing only:
134
+ - <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
135
+ - <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
136
+
137
+ The box environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
138
+
139
+ ## examples depicting isotope-related formulae (without any simulation context)
140
+ - <mark>equilibrium isotopic fractionation</mark> formulae:
141
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Lamb_et_al_2017.html">Lamb_et_al_2017</a>
142
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Bolot_et_al_2013.html">Bolot_et_al_2013</a>
143
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Merlivat_and_Nief_1967.html">Merlivat_and_Nief_1967</a>
144
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Van_Hook_1968.html">Van_Hook_1968</a>
145
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Graf_et_al_2019.html">Graf_et_al_2019</a>
146
+ - <mark>Rayleigh fractionation</mark>:
147
+ - <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>
148
+ - isotopic relaxation timescale:
149
+ - <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
150
+ - below-cloud <mark>kinetic fractionation</mark>:
151
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Gedzelman_and_Arnold_1994.html">Gedzelman_and_Arnold_1994</a>
@@ -114,7 +114,7 @@ class Simulation(BasicSimulation):
114
114
  key="S_VI",
115
115
  dry_radius_bins_edges=settings.dry_radius_bins_edges,
116
116
  name="dm_S_VI/dlog_10(dry diameter)",
117
- unit='ug / m^3"',
117
+ unit="ug / m^3",
118
118
  ),
119
119
  )
120
120
 
@@ -70,7 +70,7 @@ class Simulation:
70
70
  if step != 0:
71
71
  particulator.run(steps=1)
72
72
  for prod in self.settings.prods:
73
- self.simulation_res[n_sd][prod][seed][step] = (
73
+ (self.simulation_res[n_sd][prod][seed][step],) = (
74
74
  particulator.products[prod].get()
75
75
  )
76
76
 
@@ -48,9 +48,9 @@ def run_box(settings, backend_class=CPU):
48
48
  for i, step in enumerate(settings.steps):
49
49
  particulator.run(step - particulator.n_steps)
50
50
  y[i] = particulator.products["dv/dlnr"].get()[0]
51
- mom[i, 0] = particulator.products["M0"].get()
52
- mom[i, 1] = particulator.products["M1"].get()
53
- mom[i, 2] = particulator.products["M2"].get()
51
+ (mom[i, 0],) = particulator.products["M0"].get()
52
+ (mom[i, 1],) = particulator.products["M1"].get()
53
+ (mom[i, 2],) = particulator.products["M2"].get()
54
54
 
55
55
  return namedtuple("_", ("radius_bins_left_edges", "dv_dlnr", "moments"))(
56
56
  radius_bins_left_edges=settings.radius_bins_edges[:-1], dv_dlnr=y, moments=mom
@@ -79,11 +79,11 @@ def run_box_breakup(
79
79
  core.run(step - core.n_steps)
80
80
  y[i] = core.products["dv/dlnr"].get()[0]
81
81
  if return_nv:
82
- y2[i] = core.products["N(v)"].get()[0]
83
- rates[i, 0] = core.products["cr"].get()
84
- rates[i, 1] = core.products["crd"].get()
85
- rates[i, 2] = core.products["cor"].get()
86
- rates[i, 3] = core.products["br"].get()
82
+ (y2[i],) = core.products["N(v)"].get()
83
+ (rates[i, 0],) = core.products["cr"].get()
84
+ (rates[i, 1],) = core.products["crd"].get()
85
+ (rates[i, 2],) = core.products["cor"].get()
86
+ (rates[i, 3],) = core.products["br"].get()
87
87
 
88
88
  x = (settings.radius_bins_edges[:-1] / si.micrometres,)[0]
89
89
 
@@ -124,10 +124,10 @@ def run_box_NObreakup(settings, steps=None, backend_class=CPU):
124
124
  # run
125
125
  for i, step in enumerate(steps):
126
126
  core.run(step - core.n_steps)
127
- y[i] = core.products["dv/dlnr"].get()[0]
128
- rates[i, 0] = core.products["cr"].get()
129
- rates[i, 1] = core.products["crd"].get()
130
- rates[i, 2] = core.products["cor"].get()
127
+ (y[i],) = core.products["dv/dlnr"].get()
128
+ (rates[i, 0],) = core.products["cr"].get()
129
+ (rates[i, 1],) = core.products["crd"].get()
130
+ (rates[i, 2],) = core.products["cor"].get()
131
131
 
132
132
  x = (settings.radius_bins_edges[:-1] / si.micrometres,)[0]
133
133
 
@@ -90,7 +90,10 @@ class Simulation:
90
90
  data[data == 0] = np.nan
91
91
  attr.append(data)
92
92
  for key, prod in output["products"].items():
93
- prod.append(float(self.particulator.products[key].get()))
93
+ value = self.particulator.products[key].get()
94
+ if not isinstance(value, float):
95
+ (value,) = value
96
+ prod.append(float(value))
94
97
  for out in ("attributes", "products"):
95
98
  for key, val in output[out].items():
96
99
  output[out][key] = np.array(val)
@@ -0,0 +1,151 @@
1
+ Metadata-Version: 2.1
2
+ Name: PySDM-examples
3
+ Version: 2.81
4
+ Summary: PySDM usage examples reproducing results from literature and depicting how to use PySDM from Python Jupyter notebooks
5
+ Home-page: https://github.com/open-atmos/PySDM
6
+ Author: https://github.com/open-atmos/PySDM/graphs/contributors
7
+ Author-email: sylwester.arabas@agh.edu.pl
8
+ License: GPL-3.0
9
+ Project-URL: Tracker, https://github.com/open-atmos/PySDM/issues
10
+ Project-URL: Documentation, https://open-atmos.github.io/PySDM/PySDM_examples
11
+ Project-URL: Source, https://github.com/open-atmos/PySDM/tree/main/examples
12
+ Description-Content-Type: text/markdown
13
+ Requires-Dist: PySDM
14
+ Requires-Dist: PyMPDATA
15
+ Requires-Dist: open-atmos-jupyter-utils
16
+ Requires-Dist: pystrict
17
+ Requires-Dist: matplotlib
18
+ Requires-Dist: joblib
19
+ Requires-Dist: ipywidgets
20
+ Requires-Dist: seaborn
21
+ Requires-Dist: numdifftools
22
+ Requires-Dist: vtk
23
+ Provides-Extra: tests
24
+ Requires-Dist: pytest; extra == "tests"
25
+ Requires-Dist: nbconvert; extra == "tests"
26
+
27
+ # Introduction
28
+
29
+ <img align="left" src="https://raw.githubusercontent.com/open-atmos/PySDM/main/.github/pysdm_logo.svg" width=150 height=219 alt="pysdm logo" style="padding-right:1em">
30
+
31
+ PySDM examples are engineered as Jupyter Python notebooks supported by auxiliary Python commons
32
+ that constitute a separate <mark>PySDM-examples</mark> Python package which is also
33
+ <a href="https://pypi.org/p/PySDM-examples">available at PyPI</a>.
34
+ The examples have additional dependencies listed in
35
+ <a href="https://github.com/open-atmos/PySDM/blob/main/examples/setup.py">PySDM-examples package setup.py file</a>.
36
+ Running the example Jupyter notebooks requires the <mark>PySDM-examples</mark> package to be pip-installed.
37
+ For installation instructions see [project docs homepage](https://open-atmos.github.io/PySDM).
38
+ Note that the Jupyter notebooks themselves are not included in the package wheels, but are included
39
+ in the source .tar.gz file on PyPI, and are conveninently browsable on GitHub.
40
+ All notebooks feature header cells with badges enabling single-click execution on
41
+ <a href="https://colab.research.google.com/">Google Colab</a> and on
42
+ <a href="https://mybinder.org/">mybinder.org</a>.
43
+ The examples package is also used in the PySDM test suite.
44
+
45
+ # Example gallery
46
+
47
+ The examples are named referring to the journal paper they aim to reproduce simulations from
48
+ (or sometimes just where the inspiration originated from).
49
+ The list below groups all examples by the dimensionality and type of the employed modelling framework
50
+ ("environment" in PySDM nomenclature, which can be: <mark>box</mark>, <mark>parcel</mark>,
51
+ <mark>single-column</mark>, <mark>2D prescribed flow</mark>), and by the set of physical processes simulated
52
+ (<mark>condensation</mark>, collisional <mark>coagulation</mark> and <mark>breakup</mark>,
53
+ <mark>drop freezing</mark>, <mark>isotopic fractionation</mark>, <mark>aqueous chemistry</mark>,
54
+ <mark>seeding</mark>, ...).
55
+
56
+ ## 2D kinematic environment (prescribed-flow) mimicking Sc deck
57
+
58
+ The 2D prescribed-flow framework used here can be traced back to the work of
59
+ <a href="https://doi.org/10.1007/978-1-935704-36-2_1">Kessler 1969 (section 3C)</a>.
60
+ The setup employed in PySDM-examples, which mimics a stratiform cloud deck and features periodic horizontal boundary condition
61
+ and vanishing flow at vertical boundaries, was introduced in <a href="https://doi.org/10.1175/JAS3980">Morrison and Grabowski (2007)</a>
62
+ and later adopted for particle-based simulations in <a href="https://doi.org/10.5194/gmd-8-1677-2015">Arabas et al. (2015)</a>.
63
+ It uses a non-devergent single-eddy flow field resulting in an updraft-downdraft pair in the domain.
64
+ The flow field advects two scalar fields in an Eulerian way: water vapour mixing ratio
65
+ and dry-air potential temperature.
66
+ In PySDM-examples, the Eulerian advection is handled using the <a href="https://doi.org/10.21105/joss.03896">PyMPDATA</a> Numba-based
67
+ implementation of the <a href="https://doi.org/10.1002/fld.1071">MPDATA numerical scheme of Smolarkiewicz (e.g., 2006)</a>.
68
+ An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below:
69
+
70
+ ![animation](https://github.com/open-atmos/PySDM/wiki/files/kinematic_2D_example.gif)
71
+
72
+ Example notebooks:
73
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2015.html">Arabas_et_al_2015</a>
74
+ - 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):
75
+ - "hello world" notebook depicting how to automate using Python the process of loading data and creating animations in <mark>Paraview</mark>
76
+ - <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>
77
+
78
+ ## 1D kinematic environment (prescribed-flow, single-column)
79
+
80
+ The single-column PySDM environment is a reimplementation of the <mark>Met Office KiD framework</mark>
81
+ introduced in <a href="https://doi.org/10.1002/qj.1913">Shipway & Hill 2012</a>.
82
+ The framework features a single Eulerian-transported field of water vapour mixing ratio
83
+ (vertical profile of potential temperature is fixed).
84
+ As in the 2D kinematic framework above, the Eulerian advection is handled by
85
+ <a href="https://open-atmos.github.io/PyMPDATA/">PyMPDATA</a>.
86
+
87
+ Example notebooks:
88
+ - <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;
89
+ - <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
90
+ framework was used to exemplify operation of the <mark>Monte-Carlo collisional breakup scheme</mark> in PySDM (scheme introduced in that paper).
91
+
92
+ ## OD/1D iterative parcel/column environment mimicking removal of precipitation
93
+
94
+ This framework uses a parcel model with removal of precipitation for analysis,
95
+ iterative equilibration, the isotopic composition of the water vapour and
96
+ rain water in a column of air (no Eulerian transport, only iterative passage of a parcel through the column).
97
+
98
+ <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
99
+ deuterium and heavy-oxygen <mark>water isotopologues</mark> featured.
100
+
101
+ ## 0D parcel environment
102
+
103
+ The parcel framework implemented in PySDM uses a hydrostatic profile and adiabatic mass and energy conservation
104
+ to drive evolution of thermodynamic state and microphysical properties of particles.
105
+
106
+ Example notebooks include:
107
+ - condensation only
108
+ - <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
109
+ - <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
110
+ - <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>
111
+ - <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
112
+ - <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
113
+ - <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>
114
+ - <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>
115
+ - condensation and aqueous-chemistry
116
+ - <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)
117
+ - <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
118
+
119
+ The parcel environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
120
+
121
+ ## 0D box environment
122
+
123
+ The box environment is void of any spatial or thermodynamic context, it constitutes the most basic framework.
124
+
125
+ Example notebooks include:
126
+
127
+ - coalescence only:
128
+ - <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
129
+ - <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
130
+ - coalescence and breakup:
131
+ - <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
132
+ - <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>
133
+ - immersion freezing only:
134
+ - <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
135
+ - <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
136
+
137
+ The box environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
138
+
139
+ ## examples depicting isotope-related formulae (without any simulation context)
140
+ - <mark>equilibrium isotopic fractionation</mark> formulae:
141
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Lamb_et_al_2017.html">Lamb_et_al_2017</a>
142
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Bolot_et_al_2013.html">Bolot_et_al_2013</a>
143
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Merlivat_and_Nief_1967.html">Merlivat_and_Nief_1967</a>
144
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Van_Hook_1968.html">Van_Hook_1968</a>
145
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Graf_et_al_2019.html">Graf_et_al_2019</a>
146
+ - <mark>Rayleigh fractionation</mark>:
147
+ - <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>
148
+ - isotopic relaxation timescale:
149
+ - <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
150
+ - below-cloud <mark>kinetic fractionation</mark>:
151
+ - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Gedzelman_and_Arnold_1994.html">Gedzelman_and_Arnold_1994</a>
@@ -0,0 +1,5 @@
1
+ [tool.setuptools_scm]
2
+ root = ".."
3
+
4
+ [build-system]
5
+ requires = ['setuptools==75.3.0', 'setuptools-scm==8.1.0']
@@ -26,7 +26,6 @@ setup(
26
26
  use_scm_version={
27
27
  "local_scheme": lambda _: "",
28
28
  "version_scheme": "post-release",
29
- "root": "..",
30
29
  },
31
30
  install_requires=[
32
31
  "PySDM",
@@ -1,140 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: PySDM-examples
3
- Version: 2.80
4
- Summary: PySDM usage examples reproducing results from literature and depicting how to use PySDM from Python Jupyter notebooks
5
- Home-page: https://github.com/open-atmos/PySDM
6
- Author: https://github.com/open-atmos/PySDM/graphs/contributors
7
- Author-email: sylwester.arabas@agh.edu.pl
8
- License: GPL-3.0
9
- Project-URL: Tracker, https://github.com/open-atmos/PySDM/issues
10
- Project-URL: Documentation, https://open-atmos.github.io/PySDM/PySDM_examples
11
- Project-URL: Source, https://github.com/open-atmos/PySDM/tree/main/examples
12
- Description: # Introduction
13
-
14
- <img align="left" src="https://raw.githubusercontent.com/open-atmos/PySDM/main/.github/pysdm_logo.svg" width=150 height=219 alt="pysdm logo" style="padding-right:1em">
15
-
16
- PySDM examples are engineered as Jupyter Python notebooks supported by auxiliary Python commons
17
- that constitute a separate <mark>PySDM-examples</mark> Python package which is also
18
- <a href="https://pypi.org/p/PySDM-examples">available at PyPI</a>.
19
- The examples have additional dependencies listed in
20
- <a href="https://github.com/open-atmos/PySDM/blob/main/examples/setup.py">PySDM-examples package setup.py file</a>.
21
- Running the example Jupyter notebooks requires the <mark>PySDM-examples</mark> package to be pip-installed.
22
- For installation instructions see [project docs homepage](https://open-atmos.github.io/PySDM).
23
- Note that the Jupyter notebooks themselves are not included in the package wheels, but are included
24
- in the source .tar.gz file on PyPI, and are conveninently browsable on GitHub.
25
- All notebooks feature header cells with badges enabling single-click execution on
26
- <a href="https://colab.research.google.com/">Google Colab</a> and on
27
- <a href="https://mybinder.org/">mybinder.org</a>.
28
- The examples package is also used in the PySDM test suite.
29
-
30
- # Example gallery
31
-
32
- The examples are named referring to the journal paper they aim to reproduce simulations from
33
- (or sometimes just where the inspiration originated from).
34
- The list below groups all examples by the dimensionality and type of the employed modelling framework
35
- ("environment" in PySDM nomenclature, which can be: <mark>box</mark>, <mark>parcel</mark>,
36
- <mark>single-column</mark>, <mark>2D prescribed flow</mark>), and by the set of physical processes simulated
37
- (<mark>condensation</mark>, collisional <mark>coagulation</mark> and <mark>breakup</mark>,
38
- <mark>drop freezing</mark>, <mark>isotopic fractionation</mark>, <mark>aqueous chemistry</mark>,
39
- <mark>seeding</mark>, ...).
40
-
41
- ## 2D kinematic environment (prescribed-flow) mimicking Sc deck
42
-
43
- The 2D prescribed-flow framework used here can be traced back to the work of
44
- <a href="https://doi.org/10.1007/978-1-935704-36-2_1">Kessler 1969 (section 3C)</a>.
45
- The setup employed in PySDM-examples, which mimics a stratiform cloud deck and features periodic horizontal boundary condition
46
- and vanishing flow at vertical boundaries, was introduced in <a href="https://doi.org/10.1175/JAS3980">Morrison and Grabowski (2007)</a>
47
- and later adopted for particle-based simulations in <a href="https://doi.org/10.5194/gmd-8-1677-2015">Arabas et al. (2015)</a>.
48
- It uses a non-devergent single-eddy flow field resulting in an updraft-downdraft pair in the domain.
49
- The flow field advects two scalar fields in an Eulerian way: water vapour mixing ratio
50
- and dry-air potential temperature.
51
- In PySDM-examples, the Eulerian advection is handled using the <a href="https://doi.org/10.21105/joss.03896">PyMPDATA</a> Numba-based
52
- implementation of the <a href="https://doi.org/10.1002/fld.1071">MPDATA numerical scheme of Smolarkiewicz (e.g., 2006)</a>.
53
- An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below:
54
-
55
- ![animation](https://github.com/open-atmos/PySDM/wiki/files/kinematic_2D_example.gif)
56
-
57
- Example notebooks:
58
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2015.html">Arabas_et_al_2015</a>
59
- - 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):
60
- - "hello world" notebook depicting how to automate using Python the process of loading data and creating animations in <mark>Paraview</mark>
61
- - <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>
62
-
63
- ## 1D kinematic environment (prescribed-flow, single-column)
64
-
65
- The single-column PySDM environment is a reimplementation of the <mark>Met Office KiD framework</mark>
66
- introduced in <a href="https://doi.org/10.1002/qj.1913">Shipway & Hill 2012</a>.
67
- The framework features a single Eulerian-transported field of water vapour mixing ratio
68
- (vertical profile of potential temperature is fixed).
69
- As in the 2D kinematic framework above, the Eulerian advection is handled by
70
- <a href="https://open-atmos.github.io/PyMPDATA/">PyMPDATA</a>.
71
-
72
- Example notebooks:
73
- - <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;
74
- - <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
75
- framework was used to exemplify operation of the <mark>Monte-Carlo collisional breakup scheme</mark> in PySDM (scheme introduced in that paper).
76
-
77
- ## OD/1D iterative parcel/column environment mimicking removal of precipitation
78
-
79
- This framework uses a parcel model with removal of precipitation for analysis,
80
- iterative equilibration, the isotopic composition of the water vapour and
81
- rain water in a column of air (no Eulerian transport, only iterative passage of a parcel through the column).
82
-
83
- <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
84
- deuterium and heavy-oxygen <mark>water isotopologues</mark> featured.
85
-
86
- ## 0D parcel environment
87
-
88
- The parcel framework implemented in PySDM uses a hydrostatic profile and adiabatic mass and energy conservation
89
- to drive evolution of thermodynamic state and microphysical properties of particles.
90
-
91
- Example notebooks include:
92
- - condensation only
93
- - <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
94
- - <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
95
- - <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>
96
- - <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
97
- - <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
98
- - <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>
99
- - <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>
100
- - condensation and aqueous-chemistry
101
- - <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)
102
- - <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
103
-
104
- The parcel environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
105
-
106
- ## 0D box environment
107
-
108
- The box environment is void of any spatial or thermodynamic context, it constitutes the most basic framework.
109
-
110
- Example notebooks include:
111
-
112
- - coalescence only:
113
- - <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
114
- - <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
115
- - coalescence and breakup:
116
- - <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
117
- - <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>
118
- - immersion freezing only:
119
- - <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
120
- - <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
121
-
122
- The box environment is also featured in the <a href="https://open-atmos.github.io/PySDM/PySDM.html#tutorials">PySDM tutorials</a>.
123
-
124
- ## examples depicting isotope-related formulae (without any simulation context)
125
- - <mark>equilibrium isotopic fractionation</mark> formulae:
126
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Lamb_et_al_2017.html">Lamb_et_al_2017</a>
127
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Bolot_et_al_2013.html">Bolot_et_al_2013</a>
128
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Merlivat_and_Nief_1967.html">Merlivat_and_Nief_1967</a>
129
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Van_Hook_1968.html">Van_Hook_1968</a>
130
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Graf_et_al_2019.html">Graf_et_al_2019</a>
131
- - <mark>Rayleigh fractionation</mark>:
132
- - <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>
133
- - isotopic relaxation timescale:
134
- - <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
135
- - below-cloud <mark>kinetic fractionation</mark>:
136
- - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Gedzelman_and_Arnold_1994.html">Gedzelman_and_Arnold_1994</a>
137
-
138
- Platform: UNKNOWN
139
- Description-Content-Type: text/markdown
140
- Provides-Extra: tests