PySDM-examples 2.79__tar.gz → 2.80__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 (172) hide show
  1. {PySDM-examples-2.79 → PySDM-examples-2.80}/MANIFEST.in +1 -0
  2. PySDM-examples-2.80/PKG-INFO +140 -0
  3. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py +3 -0
  4. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py +6 -0
  5. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Alpert_and_Knopf_2016/__init__.py +15 -0
  6. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_and_Shima_2017/__init__.py +3 -0
  7. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_et_al_2015/__init__.py +6 -0
  8. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_et_al_2015/spin_up.py +1 -3
  9. PySDM-examples-2.80/PySDM_examples/Arabas_et_al_2023/__init__.py +29 -0
  10. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_et_al_2023/commons.py +1 -1
  11. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_et_al_2023/make_particulator.py +1 -1
  12. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_et_al_2023/plots.py +2 -2
  13. PySDM-examples-2.80/PySDM_examples/Bartman_et_al_2021/__init__.py +13 -0
  14. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Berry_1967/__init__.py +3 -0
  15. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Bieli_et_al_2022/__init__.py +3 -0
  16. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Bolot_et_al_2013/__init__.py +3 -0
  17. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +3 -0
  18. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py +3 -0
  19. PySDM-examples-2.80/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +22 -0
  20. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Graf_et_al_2019/__init__.py +6 -0
  21. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py +6 -0
  22. PySDM-examples-2.80/PySDM_examples/Jensen_and_Nugent_2017/__init__.py +22 -0
  23. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Kreidenweis_et_al_2003/__init__.py +3 -0
  24. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Lamb_et_al_2017/__init__.py +3 -0
  25. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Lowe_et_al_2019/__init__.py +12 -0
  26. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Merlivat_and_Nief_1967/__init__.py +3 -0
  27. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Miyake_et_al_1968/__init__.py +3 -0
  28. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py +6 -0
  29. PySDM-examples-2.80/PySDM_examples/Niedermeier_et_al_2014/__init__.py +9 -0
  30. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Pierchala_et_al_2022/__init__.py +6 -0
  31. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Pyrcel/__init__.py +3 -0
  32. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py +3 -0
  33. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Shima_et_al_2009/__init__.py +3 -0
  34. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Shipway_and_Hill_2012/__init__.py +3 -0
  35. PySDM-examples-2.80/PySDM_examples/Singer_Ward/__init__.py +9 -0
  36. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Srivastava_1982/__init__.py +3 -0
  37. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Szumowski_et_al_1998/simulation.py +8 -3
  38. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Van_Hook_1968/__init__.py +3 -0
  39. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Yang_et_al_2018/__init__.py +3 -0
  40. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/__init__.py +1 -2
  41. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/deJong_Azimi/__init__.py +6 -0
  42. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py +12 -0
  43. PySDM-examples-2.80/PySDM_examples/seeding/__init__.py +10 -0
  44. PySDM-examples-2.80/PySDM_examples.egg-info/PKG-INFO +140 -0
  45. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples.egg-info/SOURCES.txt +2 -1
  46. PySDM-examples-2.80/README.md +10 -0
  47. PySDM-examples-2.80/docs/pysdm_examples_landing.md +125 -0
  48. {PySDM-examples-2.79 → PySDM-examples-2.80}/setup.py +10 -3
  49. PySDM-examples-2.79/PKG-INFO +0 -284
  50. PySDM-examples-2.79/PySDM_examples/Arabas_et_al_2023/__init__.py +0 -8
  51. PySDM-examples-2.79/PySDM_examples/Bartman_et_al_2021/__init__.py +0 -4
  52. PySDM-examples-2.79/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -7
  53. PySDM-examples-2.79/PySDM_examples/Jensen_and_Nugent_2017/__init__.py +0 -2
  54. PySDM-examples-2.79/PySDM_examples/Niedermeier_et_al_2014/__init__.py +0 -4
  55. PySDM-examples-2.79/PySDM_examples/Singer_Ward/__init__.py +0 -1
  56. PySDM-examples-2.79/PySDM_examples/seeding/__init__.py +0 -2
  57. PySDM-examples-2.79/PySDM_examples.egg-info/PKG-INFO +0 -284
  58. PySDM-examples-2.79/README.md +0 -269
  59. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Abade_and_Albuquerque_2024/settings.py +0 -0
  60. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Abade_and_Albuquerque_2024/simulation.py +0 -0
  61. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
  62. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
  63. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
  64. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +0 -0
  65. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Alpert_and_Knopf_2016/simulation.py +0 -0
  66. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Alpert_and_Knopf_2016/table.py +0 -0
  67. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Alpert_and_Knopf_2016/table_1.py +0 -0
  68. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Alpert_and_Knopf_2016/table_2.py +0 -0
  69. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -0
  70. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_and_Shima_2017/settings.py +0 -0
  71. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_and_Shima_2017/simulation.py +0 -0
  72. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_et_al_2015/example.py +0 -0
  73. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +0 -0
  74. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_et_al_2015/settings.py +0 -0
  75. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_et_al_2023/curved_text.py +0 -0
  76. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_et_al_2023/frozen_fraction.py +0 -0
  77. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Arabas_et_al_2023/run_simulation.py +0 -0
  78. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -0
  79. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -0
  80. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Bartman_2020_MasterThesis/fig_5_SCIPY_VS_ADAPTIVE.py +0 -0
  81. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Bartman_et_al_2021/label.py +0 -0
  82. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Berry_1967/example.py +0 -0
  83. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Berry_1967/example_fig_6.py +0 -0
  84. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Berry_1967/settings.py +0 -0
  85. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Berry_1967/spectrum_plotter.py +0 -0
  86. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Bieli_et_al_2022/settings.py +0 -0
  87. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Bieli_et_al_2022/simulation.py +0 -0
  88. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -0
  89. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +0 -0
  90. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Ervens_and_Feingold_2012/__init__.py +0 -0
  91. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Ervens_and_Feingold_2012/settings.py +0 -0
  92. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py +0 -0
  93. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
  94. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Jensen_and_Nugent_2017/plotting.py +0 -0
  95. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Jensen_and_Nugent_2017/settings.py +0 -0
  96. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Jensen_and_Nugent_2017/simulation.py +0 -0
  97. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Jensen_and_Nugent_2017/table_3.py +0 -0
  98. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Kreidenweis_et_al_2003/settings.py +0 -0
  99. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Kreidenweis_et_al_2003/simulation.py +0 -0
  100. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Lowe_et_al_2019/aerosol.py +0 -0
  101. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Lowe_et_al_2019/aerosol_code.py +0 -0
  102. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Lowe_et_al_2019/constants_def.py +0 -0
  103. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Lowe_et_al_2019/plot_helper.py +0 -0
  104. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Lowe_et_al_2019/settings.py +0 -0
  105. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Lowe_et_al_2019/simulation.py +0 -0
  106. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Morrison_and_Grabowski_2007/common.py +0 -0
  107. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Morrison_and_Grabowski_2007/cumulus.py +0 -0
  108. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py +0 -0
  109. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Niedermeier_et_al_2014/settings.py +0 -0
  110. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Niedermeier_et_al_2014/simulation.py +0 -0
  111. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Pierchala_et_al_2022/commons.py +0 -0
  112. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Pyrcel/profile_plotter.py +0 -0
  113. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Pyrcel/settings.py +0 -0
  114. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Pyrcel/simulation.py +0 -0
  115. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Pyrcel/tutorial_settings.py +0 -0
  116. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Pyrcel/tutorial_simulation.py +0 -0
  117. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Shima_et_al_2009/error_measure.py +0 -0
  118. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Shima_et_al_2009/example.py +0 -0
  119. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Shima_et_al_2009/example_timing.py +0 -0
  120. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Shima_et_al_2009/settings.py +0 -0
  121. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py +0 -0
  122. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Shima_et_al_2009/tutorial_example.py +0 -0
  123. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py +0 -0
  124. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Shima_et_al_2009/tutorial_settings.py +0 -0
  125. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py +0 -0
  126. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Shipway_and_Hill_2012/plot.py +0 -0
  127. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Shipway_and_Hill_2012/settings.py +0 -0
  128. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Shipway_and_Hill_2012/simulation.py +0 -0
  129. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Singer_Ward/aerosol.py +0 -0
  130. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Srivastava_1982/equations.py +0 -0
  131. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Srivastava_1982/example.py +0 -0
  132. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Srivastava_1982/settings.py +0 -0
  133. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Srivastava_1982/simulation.py +0 -0
  134. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Szumowski_et_al_1998/__init__.py +0 -0
  135. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Szumowski_et_al_1998/fields.py +0 -0
  136. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Szumowski_et_al_1998/gui.py +0 -0
  137. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Szumowski_et_al_1998/gui_controller.py +0 -0
  138. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Szumowski_et_al_1998/gui_settings.py +0 -0
  139. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Szumowski_et_al_1998/gui_viewer.py +0 -0
  140. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Szumowski_et_al_1998/make_default_product_collection.py +0 -0
  141. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Szumowski_et_al_1998/mpdata_2d.py +0 -0
  142. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Szumowski_et_al_1998/plots.py +0 -0
  143. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Szumowski_et_al_1998/sounding.py +0 -0
  144. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Szumowski_et_al_1998/storage.py +0 -0
  145. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Yang_et_al_2018/settings.py +0 -0
  146. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/Yang_et_al_2018/simulation.py +0 -0
  147. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/deJong_Azimi/cloudy_data.py +0 -0
  148. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/deJong_Azimi/cloudy_data_0d.py +0 -0
  149. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/deJong_Azimi/settings1D.py +0 -0
  150. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/deJong_Azimi/simulation_0D.py +0 -0
  151. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
  152. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py +0 -0
  153. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
  154. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/deJong_Mackay_et_al_2023/simulation1D.py +0 -0
  155. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_0D.py +0 -0
  156. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_ss.py +0 -0
  157. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/seeding/settings.py +0 -0
  158. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/seeding/simulation.py +0 -0
  159. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/utils/__init__.py +0 -0
  160. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/utils/basic_simulation.py +0 -0
  161. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/utils/dummy_controller.py +0 -0
  162. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/utils/notebook_vars.py +0 -0
  163. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/utils/progbar_controller.py +0 -0
  164. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/utils/read_vtk_1d.py +0 -0
  165. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/utils/widgets/__init__.py +0 -0
  166. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/utils/widgets/freezer.py +0 -0
  167. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
  168. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples.egg-info/dependency_links.txt +0 -0
  169. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples.egg-info/requires.txt +0 -0
  170. {PySDM-examples-2.79 → PySDM-examples-2.80}/PySDM_examples.egg-info/top_level.txt +0 -0
  171. {PySDM-examples-2.79 → PySDM-examples-2.80}/pyproject.toml +0 -0
  172. {PySDM-examples-2.79 → PySDM-examples-2.80}/setup.cfg +0 -0
@@ -1,2 +1,3 @@
1
1
  global-exclude *.ipynb
2
2
  global-exclude *.csv
3
+ include docs/*.md
@@ -0,0 +1,140 @@
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
@@ -2,6 +2,9 @@
2
2
  """
3
3
  mixed-phase example using parcel environment based on
4
4
  [Abade & Albuquerque 2024 (QJRMS)](https://doi.org/10.1002/qj.4775)
5
+
6
+ fig_2.ipynb:
7
+ .. include:: ./fig_2.ipynb.badges.md
5
8
  """
6
9
 
7
10
  from .simulation import Simulation
@@ -2,4 +2,10 @@
2
2
  """
3
3
  condensation example using parcel environment based on
4
4
  [Abdul-Razzak & Ghan 2000 (JGR)](https://doi.org/10.1029/1999JD901161)
5
+
6
+ figs1-5.ipynb:
7
+ .. include:: ./figs1-5.ipynb.badges.md
8
+
9
+ fig_4_kinetic_limitations.ipynb:
10
+ .. include:: ./fig_4_kinetic_limitations.ipynb.badges.md
5
11
  """
@@ -1,6 +1,21 @@
1
1
  """
2
2
  box-environment example based on
3
3
  [Alpert & Knopf 2016 (Atmos. Chem. Phys. 16)](https://doi.org/10.5194/acp-16-2083-2016)
4
+
5
+ fig_1.ipynb:
6
+ .. include:: ./fig_1.ipynb.badges.md
7
+
8
+ fig_2.ipynb:
9
+ .. include:: ./fig_2.ipynb.badges.md
10
+
11
+ fig_3.ipynb:
12
+ .. include:: ./fig_3.ipynb.badges.md
13
+
14
+ fig_4.ipynb:
15
+ .. include:: ./fig_4.ipynb.badges.md
16
+
17
+ fig_5.ipynb:
18
+ .. include:: ./fig_5.ipynb.badges.md
4
19
  """
5
20
 
6
21
  # pylint: disable=invalid-name
@@ -1,6 +1,9 @@
1
1
  """
2
2
  condensation-evaportaion parcel example based on
3
3
  [Arabas and Shima 2017 (Nonlin. Processes Geophys. 24)](https://doi.org/10.5194/npg-24-535-2017)
4
+
5
+ fig_5.ipynb:
6
+ .. include:: ./fig_5.ipynb.badges.md
4
7
  """
5
8
 
6
9
  # pylint: disable=invalid-name
@@ -2,6 +2,12 @@
2
2
  """
3
3
  2D prescribed-flow case extended with Paraview visualisation with spin-up logic from
4
4
  [Arabas et al. 2015](http://doi.org/10.5194/gmd-8-1677-2015)
5
+
6
+ gui.ipynb:
7
+ .. include:: ./gui.ipynb.badges.md
8
+
9
+ paraview_hello_world.ipynb:
10
+ .. include:: ./paraview_hello_world.ipynb.badges.md
5
11
  """
6
12
  from .settings import Settings
7
13
  from .spin_up import SpinUp
@@ -1,4 +1,4 @@
1
- from PySDM.dynamics import Collision, Displacement, Freezing
1
+ from PySDM.dynamics import Collision, Displacement
2
2
 
3
3
 
4
4
  class SpinUp:
@@ -8,13 +8,11 @@ class SpinUp:
8
8
  self.particulator = particulator
9
9
  self.set(Collision, "enable", False)
10
10
  self.set(Displacement, "enable_sedimentation", False)
11
- self.set(Freezing, "enable", False)
12
11
 
13
12
  def notify(self):
14
13
  if self.particulator.n_steps == self.spin_up_steps:
15
14
  self.set(Collision, "enable", True)
16
15
  self.set(Displacement, "enable_sedimentation", True)
17
- self.set(Freezing, "enable", True)
18
16
 
19
17
  def set(self, dynamic, attr, value):
20
18
  key = dynamic.__name__
@@ -0,0 +1,29 @@
1
+ """
2
+ box-model and 2D prescribed-flow immersion-freezing examples based on
3
+ [Arabas et al. 2023](https://arxiv.org/abs/2308.05015)
4
+
5
+ aida.ipynb:
6
+ .. include:: ./aida.ipynb.badges.md
7
+
8
+ copula_hello.ipynb:
9
+ .. include:: ./copula_hello.ipynb.badges.md
10
+
11
+ fig_2.ipynb:
12
+ .. include:: ./fig_2.ipynb.badges.md
13
+
14
+ fig_11.ipynb:
15
+ .. include:: ./figs_10_and_11_and_animations.ipynb
16
+
17
+ fig_A2.ipynb:
18
+ .. include:: ./fig_A2.ipynb.badges.md
19
+
20
+ figs_3_and_7_and_8.ipynb:
21
+ .. include:: ./figs_3_and_7_and_8.ipynb.badges.md
22
+
23
+ figs_5_and_6.ipynb:
24
+ .. include:: ./figs_5_and_6.ipynb.badges.md
25
+ """
26
+
27
+ from .make_particulator import make_particulator
28
+ from .plots import make_freezing_spec_plot, make_pdf_plot, make_temperature_plot
29
+ from .run_simulation import run_simulation
@@ -13,7 +13,7 @@ FREEZING_CONSTANTS = {
13
13
  "illite": {"ABIFM_M": 54.48, "ABIFM_C": -10.67},
14
14
  }
15
15
 
16
- COOLING_RATES = (3.75 * si.K / si.min, 0.75 * si.K / si.min, 0.15 * si.K / si.min)
16
+ COOLING_RATES = (-3.75 * si.K / si.min, -0.75 * si.K / si.min, -0.15 * si.K / si.min)
17
17
 
18
18
  BEST_FIT_LN_S_GEOM = 0.25
19
19
 
@@ -37,7 +37,7 @@ def make_particulator(
37
37
  "particle_shape_and_density": "MixedPhaseSpheres",
38
38
  }
39
39
  formulae = Formulae(**formulae_ctor_args)
40
- backend = CPU(formulae)
40
+ backend = CPU(formulae, override_jit_flags={"parallel": False})
41
41
 
42
42
  sampling = SpectroGlacialSampling(
43
43
  freezing_temperature_spectrum=formulae.freezing_temperature_spectrum,
@@ -103,14 +103,14 @@ def make_freezing_spec_plot(
103
103
  _ = CurvedText(
104
104
  x=T.squeeze(),
105
105
  y=qi.squeeze(),
106
- text=f" {multiplier}x median A",
106
+ text=f" {multiplier}x median S",
107
107
  va="bottom",
108
108
  color="black",
109
109
  axes=prim,
110
110
  )
111
111
  title = f"$σ_g$=exp({np.log(surf_spec.s_geom):.3g})"
112
112
  if cooling_rate_K_min is not None:
113
- title += f", cooling rate: {cooling_rate_K_min} K/min"
113
+ title += f", c={cooling_rate_K_min} K/min"
114
114
  prim.set_title(title)
115
115
  # prim.set_ylabel('ice water content [$g/m^3$]')
116
116
  prim.set_yticks([])
@@ -0,0 +1,13 @@
1
+ # pylint: disable=invalid-name
2
+ """
3
+ condensation and coalescence adaptivity examples
4
+
5
+ demo.ipynb:
6
+ .. include:: ./demo.ipynb.badges.md
7
+
8
+ demo_fig2.ipynb:
9
+ .. include:: ./demo_fig2.ipynb.badges.md
10
+
11
+ demo_fig3.ipynb:
12
+ .. include:: ./demo_fig3.ipynb.badges.md
13
+ """
@@ -1,6 +1,9 @@
1
1
  """
2
2
  box-model coalescence-only example based on
3
3
  [Berry 1967 (J. Atmos. Sci. 24)](https://doi.org/10.1175/1520-0469(1967)024%3C0688:CDGBC%3E2.0.CO;2)
4
+
5
+ figs_5_8_10.ipynb:
6
+ .. include:: ./figs_5_8_10.ipynb.badges.md
4
7
  """
5
8
 
6
9
  # pylint: disable=invalid-name
@@ -1,5 +1,8 @@
1
1
  """
2
2
  collision-only box-model example from [Bieli et al. 2022](https://doi.org/10.1029/2022MS002994)
3
+
4
+ make_fig_3.ipynb:
5
+ .. include:: ./make_fig_3.ipynb.badges.md
3
6
  """
4
7
 
5
8
  # pylint: disable=invalid-name
@@ -1,6 +1,9 @@
1
1
  """
2
2
  figures from Bolot et al. 2013 (Atmos. Chem. Phys. 13)
3
3
  https://doi.org/10.5194/acp-13-7903-2013
4
+
5
+ fig_1.ipynb:
6
+ .. include:: ./fig_1.ipynb.badges.md
4
7
  """
5
8
 
6
9
  # pylint: disable=invalid-name
@@ -2,4 +2,7 @@
2
2
  """
3
3
  Box-model coalescence-breakup performance benchmark from
4
4
  [Bulenok 2023 MSc thesis](https://www.ap.uj.edu.pl/diplomas/166879)
5
+
6
+ performance_comparison_Srivastava_Setup.ipynb:
7
+ .. include:: ./performance_comparison_Srivastava_Setup.ipynb.badges.md
5
8
  """
@@ -3,4 +3,7 @@
3
3
  Formulae-only example depicting changes in drop and ambient vapour isotopic composition
4
4
  upon evaporation of rain in subsaturated environment based on
5
5
  [Gedzelman and Arnold 1994](https://doi.org/10.1029/93JD03518)
6
+
7
+ fig_2.ipynb:
8
+ .. include:: ./fig_2.ipynb.badges.md
6
9
  """
@@ -0,0 +1,22 @@
1
+ # pylint: disable=invalid-name
2
+ """
3
+ ripening-focused parcel-model example based on
4
+ [Grabowski & Pawlowska 2023 (GRL)](https://doi.org/10.1029/2022GL101917)
5
+
6
+ figure_1.ipynb:
7
+ .. include:: ./figure_1.ipynb.badges.md
8
+
9
+ figure_2.ipynb:
10
+ .. include:: ./figure_2.ipynb.badges.md
11
+
12
+ figure_3.ipynb:
13
+ .. include:: ./figure_3.ipynb.badges.md
14
+
15
+ figure_4.ipynb:
16
+ .. include:: ./figure_4.ipynb.badges.md
17
+
18
+ figure_ripening_rate.ipynb:
19
+ .. include:: ./figure_ripening_rate.ipynb.badges.md
20
+ """
21
+ from .settings import Settings
22
+ from .simulation import Simulation
@@ -2,4 +2,10 @@
2
2
  """
3
3
  Parcel-model Condensation,Isotope example
4
4
  [Graf.et.al 2019](https://doi.org/10.5194/acp-19-747-2019)
5
+
6
+ figure_4.ipynb:
7
+ .. include:: ./figure_4.ipynb.badges.md
8
+
9
+ Table_1.ipynb:
10
+ .. include:: ./Table_1.ipynb.badges.md
5
11
  """
@@ -2,4 +2,10 @@
2
2
  """
3
3
  aqueous-chemistry parcel-model example based on
4
4
  [Jaruga & Pawlowska 2018 (GMD)](https://doi.org/10.5194/gmd-11-3623-2018)
5
+
6
+ fig_2.ipynb:
7
+ .. include:: ./fig_2.ipynb.badges.md
8
+
9
+ fig_3.ipynb:
10
+ .. include:: ./fig_3.ipynb.badges.md
5
11
  """
@@ -0,0 +1,22 @@
1
+ """
2
+ Fig_1.ipynb:
3
+ .. include:: ./Fig_1.ipynb.badges.md
4
+
5
+ Fig_3_and_Tab_4_upper_rows.ipynb:
6
+ .. include:: ./Fig_3_and_Tab_4_upper_rows.ipynb.badges.md
7
+
8
+ Fig_4_and_7_and_Tab_4_bottom_rows.ipynb:
9
+ .. include:: ./Fig_4_and_7_and_Tab_4_bottom_rows.ipynb.badges.md
10
+
11
+ Fig_5.ipynb:
12
+ .. include:: ./Fig_5.ipynb.badges.md
13
+
14
+ Fig_6.ipynb:
15
+ .. include:: ./Fig_6.ipynb.badges.md
16
+
17
+ Fig_8.ipynb:
18
+ .. include:: ./Fig_8.ipynb.badges.md
19
+ """
20
+
21
+ from .settings import Settings
22
+ from .simulation import Simulation
@@ -2,6 +2,9 @@
2
2
  """
3
3
  aqueous-phase chemistry parcel-model example from
4
4
  [Kreidenweis et al. 2003 (JGR)](https://doi.org/10.1029/2002JD002697)
5
+
6
+ fig_1.ipynb:
7
+ .. include:: ./fig_1.ipynb.badges.md
5
8
  """
6
9
  from .settings import Settings
7
10
  from .simulation import Simulation
@@ -2,4 +2,7 @@
2
2
  """
3
3
  Formulae-only example depicting equilibrium isotopic fractionation over ice based on
4
4
  [Lamb et al. 2017](https://doi.org/10.1073/pnas.1618374114)
5
+
6
+ fig_4.ipynb:
7
+ .. include:: ./fig_4.ipynb.badges.md
5
8
  """
@@ -2,6 +2,18 @@
2
2
  """
3
3
  parcel-model example focused on surfactants based on
4
4
  [Lowe et al. 2019 (Nature Comm.)](https://doi.org/10.1038/s41467-019-12982-0)
5
+
6
+ fig_1.ipynb:
7
+ .. include:: ./fig_1.ipynb.badges.md
8
+
9
+ fig_2.ipynb:
10
+ .. include:: ./fig_2.ipynb.badges.md
11
+
12
+ fig_3.ipynb:
13
+ .. include:: ./fig_3.ipynb.badges.md
14
+
15
+ fig_s2.ipynb:
16
+ .. include:: ./fig_s2.ipynb.badges.md
5
17
  """
6
18
  from .settings import Settings
7
19
  from .simulation import Simulation
@@ -1,6 +1,9 @@
1
1
  """
2
2
  figure from Merlivat and Nief 1967 (Tellus)
3
3
  https://doi.org/10.3402/tellusa.v19i1.9756
4
+
5
+ fig_2.ipynb:
6
+ .. include:: ./fig_2.ipynb.badges.md
4
7
  """
5
8
 
6
9
  # pylint: disable=invalid-name
@@ -2,4 +2,7 @@
2
2
  """
3
3
  isotopic adjustment time plot following
4
4
  [Friedman et al. 1962 (JGR)](https://doi.org/10.1029/JZ067i007p02761)
5
+
6
+ fig_19.ipynb:
7
+ .. include:: ./fig_19.ipynb.badges.md
5
8
  """
@@ -2,5 +2,11 @@
2
2
  """
3
3
  prescribed-flow simulation settings data from
4
4
  [Morrison & Grabowski 2007 (JAS)](https://doi.org/10.1175/JAS3980)
5
+
6
+ fig_2.ipynb:
7
+ .. include:: ./fig_2.ipynb.badges.md
8
+
9
+ fig_3.ipynb:
10
+ .. include:: ./fig_3.ipynb.badges.md
5
11
  """
6
12
  from .cumulus import Cumulus
@@ -0,0 +1,9 @@
1
+ """
2
+ based on [Niedermeier et al. 2014](https://doi.org/10.1002/2013GL058684)
3
+
4
+ fig_2.ipynb:
5
+ .. include:: ./fig_2.ipynb.badges.md
6
+ """
7
+
8
+ from .settings import Settings
9
+ from .simulation import Simulation
@@ -1,6 +1,12 @@
1
1
  """
2
2
  based on Pierchala et al. 2022 (Geochim. Cosmochim. Acta)
3
3
  https://doi.org/10.1016/j.gca.2022.01.020
4
+
5
+ fig_3.ipynb:
6
+ .. include:: ./fig_3.ipynb.badges.md
7
+
8
+ fig_4.ipynb:
9
+ .. include:: ./fig_4.ipynb.badges.md
4
10
  """
5
11
 
6
12
  # pylint: disable=invalid-name
@@ -2,6 +2,9 @@
2
2
  """
3
3
  parcel-model example based on the test case from
4
4
  [Pyrcel package docs](https://pyrcel.readthedocs.io/)
5
+
6
+ example_basic_run.ipynb:
7
+ .. include:: ./example_basic_run.ipynb.badges.md
5
8
  """
6
9
  from .settings import Settings
7
10
  from .simulation import Simulation
@@ -1,6 +1,9 @@
1
1
  """
2
2
  based on Rozanski and Sonntag 1982 (Tellus)
3
3
  https://doi.org/10.3402/tellusa.v34i2.10795
4
+
5
+ figs_4_5_6.ipynb:
6
+ .. include:: ./figs_4_5_6.ipynb.badges.md
4
7
  """
5
8
 
6
9
  # pylint: disable=invalid-name
@@ -2,4 +2,7 @@
2
2
  """
3
3
  box-model coalescence-only example featuring Golovin analytic solution following setup from
4
4
  [Shima et al. 2009](https://doi.org/10.1002/qj.441)
5
+
6
+ fig_2.ipynb:
7
+ .. include:: ./fig_2.ipynb.badges.md
5
8
  """
@@ -2,6 +2,9 @@
2
2
  """
3
3
  single-column prescribed-flow constant-temperature example from
4
4
  [Shipway & Hill 2012](https://doi.org/10.1002/qj.1913)
5
+
6
+ fig_1.ipynb:
7
+ .. include:: ./fig_1.ipynb.badges.md
5
8
  """
6
9
  from .plot import plot
7
10
  from .settings import Settings
@@ -0,0 +1,9 @@
1
+ """
2
+ kohler.ipynb:
3
+ .. include:: ./kohler.ipynb.badges.md
4
+
5
+ MWE_joss_paper.ipynb:
6
+ .. include:: ./MWE_joss_paper.ipynb.badges.md
7
+ """
8
+
9
+ # pylint: disable=invalid-name
@@ -1,6 +1,9 @@
1
1
  """
2
2
  box-model examples feat. analytic solution for breakup from
3
3
  [Srivastava 1982 (JAS)](https://doi.org/10.1175/1520-0469(1982)039%3C1317:ASMOPC%3E2.0.CO;2)
4
+
5
+ figures.ipynb:
6
+ .. include:: ./figures.ipynb.badges.md
4
7
  """
5
8
 
6
9
  from .equations import Equations, EquationsHelpers
@@ -197,9 +197,14 @@ class Simulation:
197
197
  attributes[name][copy] = array * (
198
198
  1 - self.settings.freezing_inp_frac
199
199
  )
200
- elif len(array.shape) > 1:
201
- attributes[name][:, orig] = array
202
- attributes[name][:, copy] = array
200
+ elif len(array.shape) > 1: # particle positions
201
+ # TODO #599: seed
202
+ for dim, _ in enumerate(array.shape):
203
+ # only to make particles not shadow each other in visualisations
204
+ attributes[name][dim, orig] = array[dim, :]
205
+ attributes[name][dim, copy] = np.random.permutation(
206
+ array[dim, :]
207
+ )
203
208
  else:
204
209
  attributes[name][orig] = array
205
210
  attributes[name][copy] = array
@@ -1,6 +1,9 @@
1
1
  """
2
2
  figure from Van Hook 1968 (J. Phys. Chem.)
3
3
  https://doi.org/10.1021/j100850a028
4
+
5
+ fig_1.ipynb:
6
+ .. include:: ./fig_1.ipynb.badges.md
4
7
  """
5
8
 
6
9
  # pylint: disable=invalid-name