PySDM-examples 3.0.0rc2__tar.gz → 3.0.0rc4__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 (179) hide show
  1. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PKG-INFO +1 -1
  2. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Abade_and_Albuquerque_2024/settings.py +14 -20
  3. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Abade_and_Albuquerque_2024/simulation.py +27 -12
  4. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_and_Shima_2017/simulation.py +3 -3
  5. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +5 -5
  6. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_et_al_2025/commons.py +1 -0
  7. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +1 -1
  8. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Shima_et_al_2009/example.py +1 -10
  9. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Spichtinger_et_al_2023/simulation.py +3 -3
  10. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/kinematic_2d/simulation.py +1 -11
  11. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/pysdm_examples.egg-info/PKG-INFO +1 -1
  12. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/MANIFEST.in +0 -0
  13. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py +0 -0
  14. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py +0 -0
  15. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
  16. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
  17. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
  18. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +0 -0
  19. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Alpert_and_Knopf_2016/__init__.py +0 -0
  20. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Alpert_and_Knopf_2016/simulation.py +0 -0
  21. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Alpert_and_Knopf_2016/table.py +0 -0
  22. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Alpert_and_Knopf_2016/table_1.py +0 -0
  23. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Alpert_and_Knopf_2016/table_2.py +0 -0
  24. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_and_Shima_2017/__init__.py +0 -0
  25. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -0
  26. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_and_Shima_2017/settings.py +0 -0
  27. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_et_al_2015/__init__.py +0 -0
  28. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_et_al_2015/example.py +0 -0
  29. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_et_al_2015/settings.py +0 -0
  30. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_et_al_2015/spin_up.py +0 -0
  31. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_et_al_2025/__init__.py +0 -0
  32. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_et_al_2025/curved_text.py +0 -0
  33. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_et_al_2025/frozen_fraction.py +0 -0
  34. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_et_al_2025/make_particulator.py +0 -0
  35. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_et_al_2025/plots.py +0 -0
  36. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Arabas_et_al_2025/run_simulation.py +0 -0
  37. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -0
  38. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -0
  39. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Bartman_2020_MasterThesis/fig_5_SCIPY_VS_ADAPTIVE.py +0 -0
  40. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Bartman_et_al_2021/__init__.py +0 -0
  41. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Bartman_et_al_2021/label.py +0 -0
  42. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Berry_1967/__init__.py +0 -0
  43. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Berry_1967/example.py +0 -0
  44. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Berry_1967/example_fig_6.py +0 -0
  45. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Berry_1967/settings.py +0 -0
  46. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Berry_1967/spectrum_plotter.py +0 -0
  47. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Bieli_et_al_2022/__init__.py +0 -0
  48. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Bieli_et_al_2022/settings.py +0 -0
  49. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Bieli_et_al_2022/simulation.py +0 -0
  50. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Bolin_1958/__init__.py +0 -0
  51. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Bolot_et_al_2013/__init__.py +0 -0
  52. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +0 -0
  53. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Bulenok_2023_MasterThesis/performance_comparison_Srivastava_Setup.py +0 -0
  54. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -0
  55. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Ervens_and_Feingold_2012/__init__.py +0 -0
  56. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Ervens_and_Feingold_2012/settings.py +0 -0
  57. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Fisher_1991/__init__.py +0 -0
  58. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py +0 -0
  59. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Gonfiantini_1986/__init__.py +0 -0
  60. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -0
  61. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py +0 -0
  62. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
  63. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Graf_et_al_2019/__init__.py +0 -0
  64. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py +0 -0
  65. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Jensen_and_Nugent_2017/__init__.py +0 -0
  66. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Jensen_and_Nugent_2017/plotting.py +0 -0
  67. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Jensen_and_Nugent_2017/settings.py +0 -0
  68. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Jensen_and_Nugent_2017/simulation.py +0 -0
  69. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Jensen_and_Nugent_2017/table_3.py +0 -0
  70. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Jouzel_and_Merlivat_1984/__init__.py +0 -0
  71. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Jouzel_and_Merlivat_1984/thermodynamic_profiles.py +0 -0
  72. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Kinzer_And_Gunn_1951/__init__.py +0 -0
  73. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Kinzer_And_Gunn_1951/table_1_and_2.py +0 -0
  74. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Kreidenweis_et_al_2003/__init__.py +0 -0
  75. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Kreidenweis_et_al_2003/settings.py +0 -0
  76. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Kreidenweis_et_al_2003/simulation.py +0 -0
  77. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Lamb_et_al_2017/__init__.py +0 -0
  78. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Lowe_et_al_2019/__init__.py +0 -0
  79. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Lowe_et_al_2019/aerosol.py +0 -0
  80. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Lowe_et_al_2019/aerosol_code.py +0 -0
  81. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Lowe_et_al_2019/constants_def.py +0 -0
  82. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Lowe_et_al_2019/plot_helper.py +0 -0
  83. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Lowe_et_al_2019/settings.py +0 -0
  84. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Lowe_et_al_2019/simulation.py +0 -0
  85. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Merlivat_and_Nief_1967/__init__.py +0 -0
  86. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Miyake_et_al_1968/__init__.py +0 -0
  87. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py +0 -0
  88. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Morrison_and_Grabowski_2007/common.py +0 -0
  89. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py +0 -0
  90. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Niedermeier_et_al_2014/__init__.py +0 -0
  91. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Niedermeier_et_al_2014/settings.py +0 -0
  92. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Niedermeier_et_al_2014/simulation.py +0 -0
  93. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Pierchala_et_al_2022/__init__.py +0 -0
  94. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Pierchala_et_al_2022/commons.py +0 -0
  95. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Pruppacher_and_Rasmussen_1979/__init__.py +0 -0
  96. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Pyrcel/__init__.py +0 -0
  97. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Pyrcel/profile_plotter.py +0 -0
  98. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Pyrcel/settings.py +0 -0
  99. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Pyrcel/simulation.py +0 -0
  100. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Rogers_1975/__init__.py +0 -0
  101. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py +0 -0
  102. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Rozanski_and_Sonntag_1982/multibox.py +0 -0
  103. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Shima_et_al_2009/__init__.py +0 -0
  104. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Shima_et_al_2009/error_measure.py +0 -0
  105. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Shima_et_al_2009/example_timing.py +0 -0
  106. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Shima_et_al_2009/settings.py +0 -0
  107. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py +0 -0
  108. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Shima_et_al_2009/tutorial_example.py +0 -0
  109. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py +0 -0
  110. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Shima_et_al_2009/tutorial_settings.py +0 -0
  111. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Shipway_and_Hill_2012/__init__.py +0 -0
  112. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py +0 -0
  113. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Shipway_and_Hill_2012/plot.py +0 -0
  114. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Shipway_and_Hill_2012/settings.py +0 -0
  115. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Shipway_and_Hill_2012/simulation.py +0 -0
  116. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Singer_Ward/__init__.py +0 -0
  117. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Singer_Ward/aerosol.py +0 -0
  118. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Spichtinger_et_al_2023/__init__.py +0 -0
  119. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Spichtinger_et_al_2023/data/__init__.py +0 -0
  120. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Spichtinger_et_al_2023/data/reference_bulk.py +0 -0
  121. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Spichtinger_et_al_2023/data/simulation_data.py +0 -0
  122. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Spichtinger_et_al_2023/settings.py +0 -0
  123. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Srivastava_1982/__init__.py +0 -0
  124. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Srivastava_1982/equations.py +0 -0
  125. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Srivastava_1982/example.py +0 -0
  126. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Srivastava_1982/settings.py +0 -0
  127. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Srivastava_1982/simulation.py +0 -0
  128. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Stewart_1975/__init__.py +0 -0
  129. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Toon_et_al_1980/__init__.py +0 -0
  130. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Van_Hook_1968/__init__.py +0 -0
  131. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Yang_et_al_2018/__init__.py +0 -0
  132. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Yang_et_al_2018/settings.py +0 -0
  133. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Yang_et_al_2018/simulation.py +0 -0
  134. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/Zaba_et_al/__init__.py +0 -0
  135. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/_HOWTOs/__init__.py +0 -0
  136. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/__init__.py +0 -0
  137. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/deJong_Azimi/__init__.py +0 -0
  138. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/deJong_Azimi/cloudy_data.py +0 -0
  139. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/deJong_Azimi/cloudy_data_0d.py +0 -0
  140. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/deJong_Azimi/settings1D.py +0 -0
  141. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/deJong_Azimi/simulation_0D.py +0 -0
  142. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py +0 -0
  143. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
  144. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py +0 -0
  145. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
  146. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/deJong_Mackay_et_al_2023/simulation1D.py +0 -0
  147. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_0D.py +0 -0
  148. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_ss.py +0 -0
  149. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/seeding/__init__.py +0 -0
  150. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/seeding/settings.py +0 -0
  151. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/seeding/simulation.py +0 -0
  152. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/__init__.py +0 -0
  153. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/basic_simulation.py +0 -0
  154. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/dummy_controller.py +0 -0
  155. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/kinematic_2d/__init__.py +0 -0
  156. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/kinematic_2d/fields.py +0 -0
  157. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/kinematic_2d/gui.py +0 -0
  158. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/kinematic_2d/gui_controller.py +0 -0
  159. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/kinematic_2d/gui_settings.py +0 -0
  160. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/kinematic_2d/gui_viewer.py +0 -0
  161. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/kinematic_2d/make_default_product_collection.py +0 -0
  162. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/kinematic_2d/mpdata_2d.py +0 -0
  163. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/kinematic_2d/plots.py +0 -0
  164. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/kinematic_2d/storage.py +0 -0
  165. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/progbar_controller.py +0 -0
  166. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/pvanim.py +0 -0
  167. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/read_vtk_1d.py +0 -0
  168. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/widgets/__init__.py +0 -0
  169. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/widgets/freezer.py +0 -0
  170. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
  171. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/README.md +0 -0
  172. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/docs/pysdm_examples_landing.md +0 -0
  173. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/pyproject.toml +0 -0
  174. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/pysdm_examples.egg-info/SOURCES.txt +0 -0
  175. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/pysdm_examples.egg-info/dependency_links.txt +0 -0
  176. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/pysdm_examples.egg-info/requires.txt +0 -0
  177. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/pysdm_examples.egg-info/top_level.txt +0 -0
  178. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/setup.cfg +0 -0
  179. {pysdm_examples-3.0.0rc2 → pysdm_examples-3.0.0rc4}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pysdm-examples
3
- Version: 3.0.0rc2
3
+ Version: 3.0.0rc4
4
4
  Summary: PySDM usage examples reproducing results from literature and depicting how to use PySDM from Python Jupyter notebooks
5
5
  Home-page: https://github.com/open-atmos/PySDM
6
6
  Author: https://github.com/open-atmos/PySDM/graphs/contributors
@@ -1,6 +1,6 @@
1
1
  from pystrict import strict
2
2
 
3
- from PySDM import Formulae
3
+ from PySDM.backends import CPU
4
4
  from PySDM.physics import si
5
5
  from PySDM.initialisation.spectra import Lognormal
6
6
 
@@ -10,48 +10,42 @@ class Settings:
10
10
  def __init__(
11
11
  self,
12
12
  *,
13
+ backend: CPU,
13
14
  n_sd: int,
14
15
  timestep: float,
16
+ # default values correspond to paper settings
17
+ singular: bool = True,
15
18
  enable_immersion_freezing: bool = True,
16
19
  enable_vapour_deposition_on_ice: bool = True,
17
20
  inp_frac: float = 0.1,
21
+ kappa: float = 0.6,
22
+ updraft: float = 0.5 * si.m / si.s,
18
23
  ):
24
+ self.backend = backend
19
25
  self.n_sd = n_sd
20
26
  self.timestep = timestep
21
27
  self.enable_immersion_freezing = enable_immersion_freezing
22
28
  self.enable_vapour_deposition_on_ice = enable_vapour_deposition_on_ice
23
-
29
+ self.singular = singular
24
30
  self.initial_total_pressure = 1000 * si.hPa # note: not given in the paper
25
31
 
26
- # parameters from the paper
27
- self.formulae = Formulae(
28
- constants={
29
- "bulk_phase_partitioning_exponent": 0.1,
30
- "NIEMAND_A": -0.517,
31
- "NIEMAND_B": 8.934,
32
- },
33
- bulk_phase_partitioning="KaulEtAl2015",
34
- particle_shape_and_density="MixedPhaseSpheres",
35
- diffusion_coordinate="WaterMassLogarithm",
36
- freezing_temperature_spectrum="Niemand_et_al_2012",
37
- )
38
32
  self.initial_water_vapour_mixing_ratio = 1.5 * si.g / si.kg
39
33
  self.parcel_linear_extent = 100 * si.m
40
- self.updraft = 0.5 * si.m / si.s
34
+ self.updraft = updraft
41
35
  self.freezing_inp_frac = inp_frac
42
36
  self.freezing_inp_dry_radius = 0.5 * si.um
43
37
 
44
- thd_0 = self.formulae.state_variable_triplet.th_dry(
38
+ thd_0 = backend.formulae.state_variable_triplet.th_dry(
45
39
  th_std=269 * si.K,
46
40
  water_vapour_mixing_ratio=self.initial_water_vapour_mixing_ratio,
47
41
  )
48
- rhod_0 = self.formulae.state_variable_triplet.rho_d(
42
+ rhod_0 = backend.formulae.state_variable_triplet.rho_d(
49
43
  p=self.initial_total_pressure,
50
44
  water_vapour_mixing_ratio=self.initial_water_vapour_mixing_ratio,
51
45
  theta_std=thd_0,
52
46
  )
53
47
 
54
- self.mass_of_dry_air = rhod_0 * self.formulae.trivia.volume(
48
+ self.mass_of_dry_air = rhod_0 * backend.formulae.trivia.volume(
55
49
  radius=self.parcel_linear_extent
56
50
  )
57
51
  self.soluble_aerosol = Lognormal(
@@ -61,7 +55,7 @@ class Settings:
61
55
  m_mode=75 * si.nm,
62
56
  s_geom=1.6,
63
57
  )
64
- self.kappa = 0.6
65
- self.initial_temperature = self.formulae.state_variable_triplet.T(
58
+ self.kappa = kappa
59
+ self.initial_temperature = backend.formulae.state_variable_triplet.T(
66
60
  rhod=rhod_0, thd=thd_0
67
61
  )
@@ -3,7 +3,6 @@ import numpy as np
3
3
  from PySDM_examples.utils import BasicSimulation
4
4
 
5
5
  from PySDM import Builder
6
- from PySDM.backends import CPU
7
6
  from PySDM.dynamics import (
8
7
  Condensation,
9
8
  AmbientThermodynamics,
@@ -24,7 +23,7 @@ from PySDM.environments import Parcel
24
23
  class Simulation(BasicSimulation):
25
24
  def __init__(self, settings):
26
25
  builder = Builder(
27
- backend=CPU(settings.formulae, override_jit_flags={"parallel": False}),
26
+ backend=settings.backend,
28
27
  n_sd=settings.n_sd,
29
28
  environment=Parcel(
30
29
  dt=settings.timestep,
@@ -40,9 +39,15 @@ class Simulation(BasicSimulation):
40
39
  builder.add_dynamic(Condensation())
41
40
 
42
41
  if settings.enable_immersion_freezing:
43
- builder.add_dynamic(Freezing(immersion_freezing="singular"))
42
+ builder.add_dynamic(
43
+ Freezing(
44
+ immersion_freezing=(
45
+ "singular" if settings.singular else "time-dependent"
46
+ )
47
+ )
48
+ )
44
49
  if settings.enable_vapour_deposition_on_ice:
45
- builder.add_dynamic(VapourDepositionOnIce())
50
+ builder.add_dynamic(VapourDepositionOnIce(adaptive=True))
46
51
 
47
52
  r_dry, n_in_dv = ConstantMultiplicity(settings.soluble_aerosol).sample(
48
53
  n_sd=settings.n_sd
@@ -62,18 +67,28 @@ class Simulation(BasicSimulation):
62
67
  n_inp = int(settings.n_sd * settings.freezing_inp_frac)
63
68
 
64
69
  rng = np.random.default_rng(seed=builder.particulator.formulae.seed)
65
-
66
- attributes["freezing temperature"] = rng.permutation(
70
+ insoluble_surface_area = trivia.sphere_surface(
71
+ diameter=2 * settings.freezing_inp_dry_radius
72
+ )
73
+ attributes[
74
+ "freezing temperature" if settings.singular else "immersed surface area"
75
+ ] = rng.permutation(
67
76
  np.pad(
68
- builder.particulator.formulae.freezing_temperature_spectrum.invcdf(
69
- cdf=rng.uniform(low=0, high=1, size=n_inp),
70
- A_insol=trivia.sphere_surface(
71
- diameter=2 * settings.freezing_inp_dry_radius
72
- ),
77
+ (
78
+ builder.particulator.formulae.freezing_temperature_spectrum.invcdf(
79
+ cdf=rng.uniform(low=0, high=1, size=n_inp),
80
+ A_insol=insoluble_surface_area,
81
+ )
82
+ if settings.singular
83
+ else np.full(n_inp, insoluble_surface_area)
73
84
  ),
74
85
  (0, settings.n_sd - n_inp),
75
86
  mode="constant",
76
- constant_values=(trivia.C2K(-38)),
87
+ constant_values=(
88
+ builder.particulator.formulae.constants.HOMOGENEOUS_FREEZING_THRESHOLD
89
+ if settings.singular
90
+ else 0
91
+ ),
77
92
  )
78
93
  )
79
94
 
@@ -1,7 +1,7 @@
1
1
  import numpy as np
2
2
 
3
3
  import PySDM.products as PySDM_products
4
- from PySDM.backends import CPU
4
+ from PySDM.backends import Numba
5
5
  from PySDM.builder import Builder
6
6
  from PySDM.dynamics import AmbientThermodynamics, Condensation
7
7
  from PySDM.environments import Parcel
@@ -10,7 +10,7 @@ from PySDM.physics import constants as const
10
10
 
11
11
 
12
12
  class Simulation:
13
- def __init__(self, settings, backend=CPU):
13
+ def __init__(self, settings, backend=Numba):
14
14
  t_half = settings.z_half / settings.w_avg
15
15
 
16
16
  dt_output = (2 * t_half) / settings.n_output
@@ -23,7 +23,7 @@ class Simulation:
23
23
  formulae=settings.formulae,
24
24
  **(
25
25
  {"override_jit_flags": {"parallel": False}}
26
- if backend == CPU
26
+ if backend is Numba
27
27
  else {}
28
28
  ),
29
29
  ),
@@ -6,7 +6,7 @@ from PySDM_examples.utils.kinematic_2d import Simulation, Storage
6
6
 
7
7
  import PySDM.backends.impl_numba.conf
8
8
  from PySDM import Formulae
9
- from PySDM.backends import CPU, GPU
9
+ from PySDM.backends import Numba, ThrustRTC
10
10
  from PySDM.products import WallTime
11
11
 
12
12
 
@@ -42,11 +42,11 @@ def main():
42
42
  n_sd = range(14, 16, 1)
43
43
 
44
44
  times = {}
45
- backends = [(CPU, "sync"), (CPU, "async")]
46
- if GPU.ENABLE:
47
- backends.append((GPU, "async"))
45
+ backends = [(Numba, "sync"), (Numba, "async")]
46
+ if ThrustRTC.ENABLE:
47
+ backends.append((ThrustRTC, "async"))
48
48
  for backend, mode in backends:
49
- if backend is CPU:
49
+ if backend is Numba:
50
50
  PySDM.backends.impl_numba.conf.NUMBA_PARALLEL = mode
51
51
  reload_cpu_backend()
52
52
  key = f"{backend} (mode={mode})"
@@ -5,6 +5,7 @@ from PySDM.physics import si
5
5
 
6
6
  FREEZING_CONSTANTS = {
7
7
  "dust": {
8
+ # [Alpert and Knopf (2016, Table 2)](https://doi.org/10.5194/acp-16-2083-2016)
8
9
  "NIEMAND_A": -0.517,
9
10
  "NIEMAND_B": 8.934,
10
11
  "ABIFM_M": 22.62,
@@ -95,7 +95,7 @@ def go_benchmark(
95
95
  backend_configs.append((GPU, None))
96
96
 
97
97
  for backend_class, n_threads in backend_configs:
98
- backend_name = backend_class.__name__
98
+ backend_name = backend_class().__class__.__name__
99
99
  if n_threads:
100
100
  numba.set_num_threads(n_threads)
101
101
  backend_name += "_" + str(numba.get_num_threads())
@@ -12,21 +12,12 @@ from PySDM.environments import Box
12
12
  from PySDM.initialisation.sampling.spectral_sampling import ConstantMultiplicity
13
13
  from PySDM.products import ParticleVolumeVersusRadiusLogarithmSpectrum, WallTime
14
14
 
15
- _BACKEND_CACHE = {}
16
-
17
-
18
- def backend_factory(backend_class, formulae):
19
- key = backend_class.__name__ + ":" + str(formulae)
20
- if key not in _BACKEND_CACHE:
21
- _BACKEND_CACHE[key] = backend_class(formulae=formulae)
22
- return _BACKEND_CACHE[key]
23
-
24
15
 
25
16
  def run(settings, backend=CPU, observers=()):
26
17
  env = Box(dv=settings.dv, dt=settings.dt)
27
18
  builder = Builder(
28
19
  n_sd=settings.n_sd,
29
- backend=backend_factory(backend, formulae=settings.formulae),
20
+ backend=backend(formulae=settings.formulae),
30
21
  environment=env,
31
22
  )
32
23
  attributes = {}
@@ -3,7 +3,7 @@ import numpy as np
3
3
  from PySDM_examples.utils import BasicSimulation
4
4
 
5
5
  import PySDM.products as PySDM_products
6
- from PySDM.backends import CPU
6
+ from PySDM.backends import Numba
7
7
  from PySDM.builder import Builder
8
8
  from PySDM.dynamics import (
9
9
  AmbientThermodynamics,
@@ -17,7 +17,7 @@ from PySDM.initialisation.hygroscopic_equilibrium import equilibrate_wet_radii
17
17
 
18
18
 
19
19
  class Simulation(BasicSimulation):
20
- def __init__(self, settings, backend=CPU):
20
+ def __init__(self, settings, backend=Numba):
21
21
 
22
22
  dt = settings.dt
23
23
 
@@ -38,7 +38,7 @@ class Simulation(BasicSimulation):
38
38
  formulae=settings.formulae,
39
39
  **(
40
40
  {"override_jit_flags": {"parallel": False}}
41
- if backend == CPU
41
+ if backend is Numba
42
42
  else {}
43
43
  ),
44
44
  ),
@@ -20,16 +20,6 @@ from PySDM.environments import Kinematic2D
20
20
  from PySDM.initialisation.sampling import spatial_sampling
21
21
 
22
22
 
23
- _BACKEND_CACHE = {}
24
-
25
-
26
- def backend_factory(backend_class, formulae):
27
- key = backend_class.__name__ + ":" + str(formulae)
28
- if key not in _BACKEND_CACHE:
29
- _BACKEND_CACHE[key] = backend_class(formulae=formulae)
30
- return _BACKEND_CACHE[key]
31
-
32
-
33
23
  class Simulation:
34
24
  def __init__(self, settings, storage, SpinUp, backend_class=CPU):
35
25
  self.settings = settings
@@ -44,7 +34,7 @@ class Simulation:
44
34
 
45
35
  def reinit(self, products=None):
46
36
  formulae = self.settings.formulae
47
- backend = backend_factory(self.backend_class, formulae=formulae)
37
+ backend = self.backend_class(formulae=formulae)
48
38
  environment = Kinematic2D(
49
39
  dt=self.settings.dt,
50
40
  grid=self.settings.grid,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pysdm-examples
3
- Version: 3.0.0rc2
3
+ Version: 3.0.0rc4
4
4
  Summary: PySDM usage examples reproducing results from literature and depicting how to use PySDM from Python Jupyter notebooks
5
5
  Home-page: https://github.com/open-atmos/PySDM
6
6
  Author: https://github.com/open-atmos/PySDM/graphs/contributors