PySDM-examples 2.120__tar.gz → 2.122__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 (175) hide show
  1. {pysdm_examples-2.120 → pysdm_examples-2.122}/PKG-INFO +7 -4
  2. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2015/example.py +1 -1
  3. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +1 -1
  4. pysdm_examples-2.122/PySDM_examples/Fisher_1991/__init__.py +11 -0
  5. pysdm_examples-2.122/PySDM_examples/Jouzel_and_Merlivat_1984/__init__.py +11 -0
  6. pysdm_examples-2.122/PySDM_examples/Jouzel_and_Merlivat_1984/thermodynamic_profiles.py +32 -0
  7. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py +2 -6
  8. pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d/__init__.py +19 -0
  9. {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/gui.py +4 -2
  10. {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/gui_viewer.py +1 -1
  11. {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/mpdata_2d.py +1 -1
  12. {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/simulation.py +2 -2
  13. {pysdm_examples-2.120 → pysdm_examples-2.122}/docs/pysdm_examples_landing.md +6 -3
  14. {pysdm_examples-2.120 → pysdm_examples-2.122}/pyproject.toml +1 -1
  15. {pysdm_examples-2.120 → pysdm_examples-2.122}/pysdm_examples.egg-info/PKG-INFO +7 -4
  16. {pysdm_examples-2.120 → pysdm_examples-2.122}/pysdm_examples.egg-info/SOURCES.txt +14 -13
  17. pysdm_examples-2.120/PySDM_examples/Morrison_and_Grabowski_2007/cumulus.py +0 -136
  18. pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998/__init__.py +0 -9
  19. pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998/sounding.py +0 -93
  20. {pysdm_examples-2.120 → pysdm_examples-2.122}/MANIFEST.in +0 -0
  21. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py +0 -0
  22. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abade_and_Albuquerque_2024/settings.py +0 -0
  23. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abade_and_Albuquerque_2024/simulation.py +0 -0
  24. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py +0 -0
  25. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
  26. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
  27. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
  28. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +0 -0
  29. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Alpert_and_Knopf_2016/__init__.py +0 -0
  30. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Alpert_and_Knopf_2016/simulation.py +0 -0
  31. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Alpert_and_Knopf_2016/table.py +0 -0
  32. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Alpert_and_Knopf_2016/table_1.py +0 -0
  33. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Alpert_and_Knopf_2016/table_2.py +0 -0
  34. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_and_Shima_2017/__init__.py +0 -0
  35. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -0
  36. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_and_Shima_2017/settings.py +0 -0
  37. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_and_Shima_2017/simulation.py +0 -0
  38. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2015/__init__.py +0 -0
  39. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2015/settings.py +0 -0
  40. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2015/spin_up.py +0 -0
  41. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/__init__.py +0 -0
  42. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/commons.py +0 -0
  43. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/curved_text.py +0 -0
  44. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/frozen_fraction.py +0 -0
  45. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/make_particulator.py +0 -0
  46. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/plots.py +0 -0
  47. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Arabas_et_al_2025/run_simulation.py +0 -0
  48. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -0
  49. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -0
  50. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bartman_2020_MasterThesis/fig_5_SCIPY_VS_ADAPTIVE.py +0 -0
  51. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bartman_et_al_2021/__init__.py +0 -0
  52. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bartman_et_al_2021/label.py +0 -0
  53. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Berry_1967/__init__.py +0 -0
  54. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Berry_1967/example.py +0 -0
  55. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Berry_1967/example_fig_6.py +0 -0
  56. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Berry_1967/settings.py +0 -0
  57. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Berry_1967/spectrum_plotter.py +0 -0
  58. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bieli_et_al_2022/__init__.py +0 -0
  59. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bieli_et_al_2022/settings.py +0 -0
  60. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bieli_et_al_2022/simulation.py +0 -0
  61. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bolin_1958/__init__.py +0 -0
  62. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bolot_et_al_2013/__init__.py +0 -0
  63. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +0 -0
  64. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bulenok_2023_MasterThesis/performance_comparison_Srivastava_Setup.py +0 -0
  65. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -0
  66. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +0 -0
  67. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Ervens_and_Feingold_2012/__init__.py +0 -0
  68. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Ervens_and_Feingold_2012/settings.py +0 -0
  69. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py +0 -0
  70. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Gonfiantini_1986/__init__.py +0 -0
  71. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -0
  72. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py +0 -0
  73. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
  74. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Graf_et_al_2019/__init__.py +0 -0
  75. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py +0 -0
  76. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/__init__.py +0 -0
  77. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/plotting.py +0 -0
  78. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/settings.py +0 -0
  79. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/simulation.py +0 -0
  80. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Jensen_and_Nugent_2017/table_3.py +0 -0
  81. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kinzer_And_Gunn_1951/__init__.py +0 -0
  82. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kinzer_And_Gunn_1951/table_1_and_2.py +0 -0
  83. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kreidenweis_et_al_2003/__init__.py +0 -0
  84. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kreidenweis_et_al_2003/settings.py +0 -0
  85. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Kreidenweis_et_al_2003/simulation.py +0 -0
  86. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lamb_et_al_2017/__init__.py +0 -0
  87. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/__init__.py +0 -0
  88. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/aerosol.py +0 -0
  89. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/aerosol_code.py +0 -0
  90. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/constants_def.py +0 -0
  91. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/plot_helper.py +0 -0
  92. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/settings.py +0 -0
  93. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Lowe_et_al_2019/simulation.py +0 -0
  94. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Merlivat_and_Nief_1967/__init__.py +0 -0
  95. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Miyake_et_al_1968/__init__.py +0 -0
  96. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Morrison_and_Grabowski_2007/common.py +0 -0
  97. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py +0 -0
  98. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Niedermeier_et_al_2014/__init__.py +0 -0
  99. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Niedermeier_et_al_2014/settings.py +0 -0
  100. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Niedermeier_et_al_2014/simulation.py +0 -0
  101. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pierchala_et_al_2022/__init__.py +0 -0
  102. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pierchala_et_al_2022/commons.py +0 -0
  103. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pruppacher_and_Rasmussen_1979/__init__.py +0 -0
  104. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pyrcel/__init__.py +0 -0
  105. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pyrcel/profile_plotter.py +0 -0
  106. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pyrcel/settings.py +0 -0
  107. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Pyrcel/simulation.py +0 -0
  108. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py +0 -0
  109. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Rozanski_and_Sonntag_1982/multibox.py +0 -0
  110. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/__init__.py +0 -0
  111. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/error_measure.py +0 -0
  112. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/example.py +0 -0
  113. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/example_timing.py +0 -0
  114. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/settings.py +0 -0
  115. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py +0 -0
  116. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/tutorial_example.py +0 -0
  117. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py +0 -0
  118. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shima_et_al_2009/tutorial_settings.py +0 -0
  119. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shipway_and_Hill_2012/__init__.py +0 -0
  120. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py +0 -0
  121. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shipway_and_Hill_2012/plot.py +0 -0
  122. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shipway_and_Hill_2012/settings.py +0 -0
  123. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Shipway_and_Hill_2012/simulation.py +0 -0
  124. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Singer_Ward/__init__.py +0 -0
  125. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Singer_Ward/aerosol.py +0 -0
  126. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Srivastava_1982/__init__.py +0 -0
  127. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Srivastava_1982/equations.py +0 -0
  128. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Srivastava_1982/example.py +0 -0
  129. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Srivastava_1982/settings.py +0 -0
  130. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Srivastava_1982/simulation.py +0 -0
  131. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Stewart_1975/__init__.py +0 -0
  132. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Toon_et_al_1980/__init__.py +0 -0
  133. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Van_Hook_1968/__init__.py +0 -0
  134. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Yang_et_al_2018/__init__.py +0 -0
  135. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Yang_et_al_2018/settings.py +0 -0
  136. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Yang_et_al_2018/simulation.py +0 -0
  137. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/Zaba_et_al_2025/__init__.py +0 -0
  138. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/_HOWTOs/__init__.py +0 -0
  139. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/__init__.py +0 -0
  140. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Azimi/__init__.py +0 -0
  141. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Azimi/cloudy_data.py +0 -0
  142. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Azimi/cloudy_data_0d.py +0 -0
  143. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Azimi/settings1D.py +0 -0
  144. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Azimi/simulation_0D.py +0 -0
  145. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py +0 -0
  146. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
  147. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py +0 -0
  148. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
  149. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/simulation1D.py +0 -0
  150. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_0D.py +0 -0
  151. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/deJong_Mackay_et_al_2023/simulation_ss.py +0 -0
  152. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/seeding/__init__.py +0 -0
  153. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/seeding/settings.py +0 -0
  154. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/seeding/simulation.py +0 -0
  155. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/__init__.py +0 -0
  156. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/basic_simulation.py +0 -0
  157. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/dummy_controller.py +0 -0
  158. {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/fields.py +0 -0
  159. {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/gui_controller.py +0 -0
  160. {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/gui_settings.py +0 -0
  161. {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/make_default_product_collection.py +0 -0
  162. {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/plots.py +0 -0
  163. {pysdm_examples-2.120/PySDM_examples/Szumowski_et_al_1998 → pysdm_examples-2.122/PySDM_examples/utils/kinematic_2d}/storage.py +0 -0
  164. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/progbar_controller.py +0 -0
  165. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/pvanim.py +0 -0
  166. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/read_vtk_1d.py +0 -0
  167. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/widgets/__init__.py +0 -0
  168. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/widgets/freezer.py +0 -0
  169. {pysdm_examples-2.120 → pysdm_examples-2.122}/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
  170. {pysdm_examples-2.120 → pysdm_examples-2.122}/README.md +0 -0
  171. {pysdm_examples-2.120 → pysdm_examples-2.122}/pysdm_examples.egg-info/dependency_links.txt +0 -0
  172. {pysdm_examples-2.120 → pysdm_examples-2.122}/pysdm_examples.egg-info/requires.txt +0 -0
  173. {pysdm_examples-2.120 → pysdm_examples-2.122}/pysdm_examples.egg-info/top_level.txt +0 -0
  174. {pysdm_examples-2.120 → pysdm_examples-2.122}/setup.cfg +0 -0
  175. {pysdm_examples-2.120 → pysdm_examples-2.122}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pysdm-examples
3
- Version: 2.120
3
+ Version: 2.122
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
@@ -75,9 +75,12 @@ The 2D prescribed-flow framework used here can be traced back to the work of
75
75
  and dry-air potential temperature.
76
76
  In PySDM-examples, the Eulerian advection is handled using the <a href="https://doi.org/10.21105/joss.03896">PyMPDATA</a> Numba-based
77
77
  implementation of the <a href="https://doi.org/10.1002/fld.1071">MPDATA numerical scheme of Smolarkiewicz (e.g., 2006)</a>.
78
- An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below:
79
-
80
- <source src="https://github.com/open-atmos/PySDM/releases/download/tip/docs_intro_animation_ubuntu-24.04.mp4" type="video/mp4">
78
+ An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below
79
+ (<a href="https://github.com/open-atmos/PySDM/blob/main/examples/PySDM_examples/_HOWTOs/paraview_hello_world.ipynb">see
80
+ the Paraview hello-world HOWTO Jupyter notbook for code generating the simulation and visualisation</a>):
81
+ <center>
82
+ <img src="https://github.com/open-atmos/PySDM/releases/download/tip/docs_intro_animation_ubuntu-24.04.gif" style="width:80%" />
83
+ </center>
81
84
 
82
85
  Example notebooks:
83
86
  - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2015.html">Arabas_et_al_2015</a>
@@ -1,6 +1,6 @@
1
1
  from open_atmos_jupyter_utils import TemporaryFile
2
2
  from PySDM_examples.Arabas_et_al_2015 import Settings, SpinUp
3
- from PySDM_examples.Szumowski_et_al_1998 import Simulation, Storage
3
+ from PySDM_examples.utils.kinematic_2d import Simulation, Storage
4
4
  from PySDM_examples.utils import DummyController
5
5
 
6
6
  from PySDM import Formulae
@@ -2,7 +2,7 @@ import importlib
2
2
 
3
3
  from matplotlib import pyplot as plt
4
4
  from PySDM_examples.Arabas_et_al_2015 import Settings
5
- from PySDM_examples.Szumowski_et_al_1998 import Simulation, Storage
5
+ 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
@@ -0,0 +1,11 @@
1
+ # pylint: disable=invalid-name
2
+ """
3
+ based on the [Jouzel and Merlivat 1984](https://doi.org/10.1029/JD089iD07p11749) calculations
4
+ of delta_{18O} and delta_D used in d-excess formula and solved
5
+ by integration of the eq. (1) in
6
+ [Fisher 1991](https://doi.org/10.3402/tellusb.v43i5.15414) and eq. (3) in Jouzel and Merlivat 1984
7
+
8
+
9
+ fig_2.ipynb:
10
+ .. include:: ./fig_2.ipynb.badges.md
11
+ """
@@ -0,0 +1,11 @@
1
+ # pylint: disable=invalid-name
2
+ """
3
+ kinetic fractionation factors used in modelling isotopic effect
4
+ in snow formation, replacing saturation fractionation factors with
5
+ alpha_{saturation} alpha_{kinetic}
6
+ (see [Jouzel and Merlivat 1984](https://doi.org/10.1029/JD089iD07p11749))
7
+
8
+
9
+ fig_8_9.ipynb:
10
+ .. include:: ./fig_8_9.ipynb.badges.md
11
+ """
@@ -0,0 +1,32 @@
1
+ """
2
+ From [Jouzel & Merlivat 1984](https://doi.org/10.1029/JD089iD07p11749).
3
+ """
4
+
5
+ import numpy as np
6
+ from scipy.interpolate import make_interp_spline
7
+
8
+ from PySDM.physics.constants_defaults import T0
9
+ from PySDM.physics import si
10
+
11
+
12
+ pressure = make_interp_spline(
13
+ x=np.asarray([-10, -20, -30, -40, -50])[::-1] + T0,
14
+ y=np.asarray([925, 780, 690, 630, 600])[::-1] * si.mbar,
15
+ )
16
+ """ Table 1, first two columns: temperature and pressure"""
17
+ pressure.extrapolate = False
18
+
19
+
20
+ def ice_saturation_curve_4(const, T):
21
+ """eq. (15)"""
22
+ return 0.99 - 0.006 * (T - const.T0)
23
+
24
+
25
+ def vapour_mixing_ratio(formulae, T):
26
+ """mixing ratio with saturation wrt ice calculated with curve 4 equation"""
27
+ const = formulae.constants
28
+ svp = formulae.saturation_vapour_pressure
29
+ p_v = ice_saturation_curve_4(const, T) * svp.pvs_ice(T)
30
+ rho_v = p_v / const.Rv / T
31
+ rho_d = (pressure(T) - p_v) / const.Rd / T
32
+ return rho_v / rho_d
@@ -3,10 +3,6 @@
3
3
  prescribed-flow simulation settings data from
4
4
  [Morrison & Grabowski 2007 (JAS)](https://doi.org/10.1175/JAS3980)
5
5
 
6
- fig_2.ipynb:
7
- .. include:: ./fig_2.ipynb.badges.md
8
-
9
- fig_3.ipynb:
10
- .. include:: ./fig_3.ipynb.badges.md
6
+ fig_1.ipynb:
7
+ .. include:: ./fig_1.ipynb.badges.md
11
8
  """
12
- from .cumulus import Cumulus
@@ -0,0 +1,19 @@
1
+ # pylint: disable=invalid-name
2
+ """
3
+ The 2D prescribed-flow framework used here can be traced back to the work
4
+ of [Kessler 1969 (section 3C)](https://doi.org/10.1007/978-1-935704-36-2_1), can be found also in
5
+ [Szumowski et al. 1998 (Atmos. Res.)](https://doi.org/10.1016/S0169-8095(97)00082-3).
6
+
7
+ The setup mimics a stratiform cloud deck and features periodic horizontal boundary condition
8
+ and vanishing flow at vertical boundaries.
9
+ It was introduced in [Morrison & Grabowski 2007](https://doi.org/10.1175/JAS3980) and later adopted
10
+ for particle-based simulations in [Arabas et al. 2015](https://doi.org/10.5194/gmd-8-1677-2015)
11
+ It uses a non-devergent single-eddy flow field resulting in an updraft-downdraft pair in the domain.
12
+ The flow field advects two scalar fields in an Eulerian way: water vapour mixing ratio
13
+ and dry-air potential temperature.
14
+ """
15
+
16
+ from .gui_settings import GUISettings
17
+ from .mpdata_2d import MPDATA_2D
18
+ from .simulation import Simulation
19
+ from .storage import Storage
@@ -2,8 +2,10 @@ import os
2
2
  import sys
3
3
 
4
4
  from open_atmos_jupyter_utils import TemporaryFile
5
- from PySDM_examples.Szumowski_et_al_1998.gui_controller import GUIController
6
- from PySDM_examples.Szumowski_et_al_1998.gui_viewer import GUIViewer
5
+ from PySDM_examples.utils.kinematic_2d.gui_controller import (
6
+ GUIController,
7
+ )
8
+ from PySDM_examples.utils.kinematic_2d.gui_viewer import GUIViewer
7
9
  from PySDM_examples.utils.widgets import HTML, Tab, VBox, display
8
10
 
9
11
  from PySDM.exporters import NetCDFExporter
@@ -3,7 +3,7 @@ import warnings
3
3
  import numpy as np
4
4
  from matplotlib import pyplot, rcParams
5
5
  from open_atmos_jupyter_utils import save_and_make_link
6
- from PySDM_examples.Szumowski_et_al_1998.plots import (
6
+ from PySDM_examples.utils.kinematic_2d.plots import (
7
7
  _ImagePlot,
8
8
  _SpectrumPlot,
9
9
  _TemperaturePlot,
@@ -5,7 +5,7 @@ from threading import Thread
5
5
  import numpy as np
6
6
  from PyMPDATA import Options, ScalarField, Solver, Stepper, VectorField
7
7
  from PyMPDATA.boundary_conditions import Periodic
8
- from PySDM_examples.Szumowski_et_al_1998.fields import (
8
+ from PySDM_examples.utils.kinematic_2d.fields import (
9
9
  nondivergent_vector_field_2d,
10
10
  x_vec_coord,
11
11
  z_vec_coord,
@@ -1,8 +1,8 @@
1
1
  import numpy as np
2
- from PySDM_examples.Szumowski_et_al_1998.make_default_product_collection import (
2
+ from PySDM_examples.utils.kinematic_2d.make_default_product_collection import (
3
3
  make_default_product_collection,
4
4
  )
5
- from PySDM_examples.Szumowski_et_al_1998.mpdata_2d import MPDATA_2D
5
+ from PySDM_examples.utils.kinematic_2d.mpdata_2d import MPDATA_2D
6
6
  from PySDM_examples.utils import DummyController
7
7
 
8
8
  from PySDM.backends import CPU
@@ -39,9 +39,12 @@ The 2D prescribed-flow framework used here can be traced back to the work of
39
39
  and dry-air potential temperature.
40
40
  In PySDM-examples, the Eulerian advection is handled using the <a href="https://doi.org/10.21105/joss.03896">PyMPDATA</a> Numba-based
41
41
  implementation of the <a href="https://doi.org/10.1002/fld.1071">MPDATA numerical scheme of Smolarkiewicz (e.g., 2006)</a>.
42
- An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below:
43
-
44
- <source src="https://github.com/open-atmos/PySDM/releases/download/tip/docs_intro_animation_ubuntu-24.04.mp4" type="video/mp4">
42
+ An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below
43
+ (<a href="https://github.com/open-atmos/PySDM/blob/main/examples/PySDM_examples/_HOWTOs/paraview_hello_world.ipynb">see
44
+ the Paraview hello-world HOWTO Jupyter notbook for code generating the simulation and visualisation</a>):
45
+ <center>
46
+ <img src="https://github.com/open-atmos/PySDM/releases/download/tip/docs_intro_animation_ubuntu-24.04.gif" style="width:80%" />
47
+ </center>
45
48
 
46
49
  Example notebooks:
47
50
  - `PySDM_examples.Arabas_et_al_2015`
@@ -4,4 +4,4 @@ local_scheme = "no-local-version"
4
4
  version_scheme = "post-release"
5
5
 
6
6
  [build-system]
7
- requires = ['setuptools==80.7.1', 'setuptools-scm==8.3.1']
7
+ requires = ['setuptools==80.8.0', 'setuptools-scm==8.3.1']
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pysdm-examples
3
- Version: 2.120
3
+ Version: 2.122
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
@@ -75,9 +75,12 @@ The 2D prescribed-flow framework used here can be traced back to the work of
75
75
  and dry-air potential temperature.
76
76
  In PySDM-examples, the Eulerian advection is handled using the <a href="https://doi.org/10.21105/joss.03896">PyMPDATA</a> Numba-based
77
77
  implementation of the <a href="https://doi.org/10.1002/fld.1071">MPDATA numerical scheme of Smolarkiewicz (e.g., 2006)</a>.
78
- An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below:
79
-
80
- <source src="https://github.com/open-atmos/PySDM/releases/download/tip/docs_intro_animation_ubuntu-24.04.mp4" type="video/mp4">
78
+ An animation depicting PySDM simulation capturing <mark>aerosol collisional processing</mark> by warm rain is shown below
79
+ (<a href="https://github.com/open-atmos/PySDM/blob/main/examples/PySDM_examples/_HOWTOs/paraview_hello_world.ipynb">see
80
+ the Paraview hello-world HOWTO Jupyter notbook for code generating the simulation and visualisation</a>):
81
+ <center>
82
+ <img src="https://github.com/open-atmos/PySDM/releases/download/tip/docs_intro_animation_ubuntu-24.04.gif" style="width:80%" />
83
+ </center>
81
84
 
82
85
  Example notebooks:
83
86
  - <a href="https://open-atmos.github.io/PySDM/PySDM_examples/Arabas_et_al_2015.html">Arabas_et_al_2015</a>
@@ -53,6 +53,7 @@ PySDM_examples/Bulenok_2023_MasterThesis/setups.py
53
53
  PySDM_examples/Bulenok_2023_MasterThesis/utils.py
54
54
  PySDM_examples/Ervens_and_Feingold_2012/__init__.py
55
55
  PySDM_examples/Ervens_and_Feingold_2012/settings.py
56
+ PySDM_examples/Fisher_1991/__init__.py
56
57
  PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py
57
58
  PySDM_examples/Gonfiantini_1986/__init__.py
58
59
  PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py
@@ -65,6 +66,8 @@ PySDM_examples/Jensen_and_Nugent_2017/plotting.py
65
66
  PySDM_examples/Jensen_and_Nugent_2017/settings.py
66
67
  PySDM_examples/Jensen_and_Nugent_2017/simulation.py
67
68
  PySDM_examples/Jensen_and_Nugent_2017/table_3.py
69
+ PySDM_examples/Jouzel_and_Merlivat_1984/__init__.py
70
+ PySDM_examples/Jouzel_and_Merlivat_1984/thermodynamic_profiles.py
68
71
  PySDM_examples/Kinzer_And_Gunn_1951/__init__.py
69
72
  PySDM_examples/Kinzer_And_Gunn_1951/table_1_and_2.py
70
73
  PySDM_examples/Kreidenweis_et_al_2003/__init__.py
@@ -82,7 +85,6 @@ PySDM_examples/Merlivat_and_Nief_1967/__init__.py
82
85
  PySDM_examples/Miyake_et_al_1968/__init__.py
83
86
  PySDM_examples/Morrison_and_Grabowski_2007/__init__.py
84
87
  PySDM_examples/Morrison_and_Grabowski_2007/common.py
85
- PySDM_examples/Morrison_and_Grabowski_2007/cumulus.py
86
88
  PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py
87
89
  PySDM_examples/Niedermeier_et_al_2014/__init__.py
88
90
  PySDM_examples/Niedermeier_et_al_2014/settings.py
@@ -118,18 +120,6 @@ PySDM_examples/Srivastava_1982/example.py
118
120
  PySDM_examples/Srivastava_1982/settings.py
119
121
  PySDM_examples/Srivastava_1982/simulation.py
120
122
  PySDM_examples/Stewart_1975/__init__.py
121
- PySDM_examples/Szumowski_et_al_1998/__init__.py
122
- PySDM_examples/Szumowski_et_al_1998/fields.py
123
- PySDM_examples/Szumowski_et_al_1998/gui.py
124
- PySDM_examples/Szumowski_et_al_1998/gui_controller.py
125
- PySDM_examples/Szumowski_et_al_1998/gui_settings.py
126
- PySDM_examples/Szumowski_et_al_1998/gui_viewer.py
127
- PySDM_examples/Szumowski_et_al_1998/make_default_product_collection.py
128
- PySDM_examples/Szumowski_et_al_1998/mpdata_2d.py
129
- PySDM_examples/Szumowski_et_al_1998/plots.py
130
- PySDM_examples/Szumowski_et_al_1998/simulation.py
131
- PySDM_examples/Szumowski_et_al_1998/sounding.py
132
- PySDM_examples/Szumowski_et_al_1998/storage.py
133
123
  PySDM_examples/Toon_et_al_1980/__init__.py
134
124
  PySDM_examples/Van_Hook_1968/__init__.py
135
125
  PySDM_examples/Yang_et_al_2018/__init__.py
@@ -158,6 +148,17 @@ PySDM_examples/utils/dummy_controller.py
158
148
  PySDM_examples/utils/progbar_controller.py
159
149
  PySDM_examples/utils/pvanim.py
160
150
  PySDM_examples/utils/read_vtk_1d.py
151
+ PySDM_examples/utils/kinematic_2d/__init__.py
152
+ PySDM_examples/utils/kinematic_2d/fields.py
153
+ PySDM_examples/utils/kinematic_2d/gui.py
154
+ PySDM_examples/utils/kinematic_2d/gui_controller.py
155
+ PySDM_examples/utils/kinematic_2d/gui_settings.py
156
+ PySDM_examples/utils/kinematic_2d/gui_viewer.py
157
+ PySDM_examples/utils/kinematic_2d/make_default_product_collection.py
158
+ PySDM_examples/utils/kinematic_2d/mpdata_2d.py
159
+ PySDM_examples/utils/kinematic_2d/plots.py
160
+ PySDM_examples/utils/kinematic_2d/simulation.py
161
+ PySDM_examples/utils/kinematic_2d/storage.py
161
162
  PySDM_examples/utils/widgets/__init__.py
162
163
  PySDM_examples/utils/widgets/freezer.py
163
164
  PySDM_examples/utils/widgets/progbar_updater.py
@@ -1,136 +0,0 @@
1
- import numpy as np
2
- from PySDM_examples.Morrison_and_Grabowski_2007.common import Common
3
- from PySDM_examples.Szumowski_et_al_1998 import sounding
4
- from scipy.integrate import solve_ivp
5
- from scipy.interpolate import interp1d
6
-
7
- from PySDM.physics import si
8
-
9
-
10
- class Cumulus(Common):
11
- def __init__(self, formulae):
12
- super().__init__(formulae)
13
- self.size = (9 * si.km, 2.7 * si.km)
14
- self.hx = 1.8 * si.km
15
- self.x0 = 3.6 * si.km
16
- self.xc = self.size[0] / 2
17
- self.dz = 50 * si.m
18
- self.grid = tuple(s / self.dz for s in self.size)
19
- for g in self.grid:
20
- assert int(g) == g
21
- self.grid = tuple(int(g) for g in self.grid)
22
- self.dt = 1 * si.s
23
- self.simulation_time = 60 * si.min
24
-
25
- self.__init_profiles()
26
-
27
- def __init_profiles(self):
28
- z_of_p = self.__z_of_p()
29
- T_of_z = interp1d(z_of_p, sounding.temperature)
30
- p_of_z = interp1d(z_of_p, sounding.pressure)
31
- q_of_z = interp1d(z_of_p, sounding.mixing_ratio)
32
-
33
- z_points_scalar = np.linspace(
34
- self.dz / 2, self.size[-1] - self.dz / 2, num=self.grid[-1], endpoint=True
35
- )
36
- z_points_both = np.linspace(
37
- 0, self.size[-1], num=2 * self.grid[-1] + 1, endpoint=True
38
- )
39
- rhod_of_z = self.__rhod_of_z(T_of_z, p_of_z, q_of_z, z_of_p, z_points_both)
40
- self.rhod = interp1d(z_points_both / self.size[-1], rhod_of_z)
41
- self.initial_water_vapour_mixing_ratio = q_of_z(z_points_scalar)
42
- self.th_std0 = self.formulae.trivia.th_std(
43
- p_of_z(z_points_scalar), T_of_z(z_points_scalar)
44
- )
45
-
46
- def rhod_of_zZ(self, zZ):
47
- return self.rhod(zZ)
48
-
49
- def __rhod_of_z(self, T_of_z, p_of_z, q_of_z, z_of_p, z_points):
50
- def drhod_dz(z, _):
51
- lv = self.formulae.latent_heat_vapourisation.lv(T_of_z(z))
52
- return self.formulae.hydrostatics.drho_dz(
53
- p_of_z(z), T_of_z(z), q_of_z(z), lv
54
- )
55
-
56
- theta_std0 = self.formulae.trivia.th_std(
57
- sounding.pressure[0], sounding.temperature[0]
58
- )
59
- rhod0 = self.formulae.state_variable_triplet.rho_d(
60
- sounding.pressure[0], sounding.mixing_ratio[0], theta_std0
61
- )
62
- rhod_solution = solve_ivp(
63
- fun=drhod_dz,
64
- t_span=(0, np.amax(z_of_p)),
65
- y0=np.asarray((rhod0,)),
66
- t_eval=z_points,
67
- )
68
- assert rhod_solution.success
69
- return rhod_solution.y[0]
70
-
71
- def __z_of_p(self):
72
- T_virt_of_p = interp1d(
73
- sounding.pressure,
74
- sounding.temperature
75
- * (1 + sounding.mixing_ratio / self.formulae.constants.eps)
76
- / (1 + sounding.mixing_ratio),
77
- )
78
-
79
- def dz_dp(p, _):
80
- return (
81
- -self.formulae.constants.Rd
82
- * T_virt_of_p(p)
83
- / self.formulae.constants.g_std
84
- / p
85
- )
86
-
87
- z_of_p = solve_ivp(
88
- fun=dz_dp,
89
- t_span=(max(sounding.pressure), min(sounding.pressure)),
90
- y0=np.asarray((0,)),
91
- t_eval=sounding.pressure,
92
- )
93
- assert z_of_p.success
94
- return z_of_p.y[0]
95
-
96
- @staticmethod
97
- def z0(z):
98
- return np.where(z <= 1.7 * si.km, 0, 0.7 * si.km)
99
-
100
- @staticmethod
101
- def hz(z):
102
- return np.where(z <= 1.7 * si.km, 3.4 * si.km, 2.0 * si.km)
103
-
104
- def alpha(self, x):
105
- return np.where(abs(x - self.xc) <= 0.9 * si.km, 1, 0)
106
-
107
- @staticmethod
108
- def beta(x):
109
- return np.where(x <= 5.4 * si.km, 1, -1)
110
-
111
- @staticmethod
112
- def A1(t):
113
- if t <= 900 * si.s:
114
- return 5.73e2
115
- if t <= 1500 * si.s:
116
- return 5.73e2 + 2.02e3 * (1 + np.cos(np.pi * ((t - 900) / 600 + 1)))
117
- return 1.15e3 + 1.72e3 * (1 + np.cos(np.pi * ((min(t, 2400) - 1500) / 900 + 1)))
118
-
119
- @staticmethod
120
- def A2(t):
121
- if t <= 300 * si.s:
122
- return 0
123
- if t <= 1500 * si.s:
124
- return 6e2 * (1 + np.cos(np.pi * ((t - 300) / 600 - 1)))
125
- return 5e2 * (1 + np.cos(np.pi * ((min(2400, t) - 1500) / 900 - 1)))
126
-
127
- # see Appendix (page 2859)
128
- def stream_function(self, xX, zZ, t):
129
- x = xX * self.size[0]
130
- z = zZ * self.size[-1]
131
- return (
132
- -self.A1(t)
133
- * np.cos(self.alpha(x) * np.pi * (x - self.x0) / self.hx)
134
- * np.sin(self.beta(x) * np.pi * (z - self.z0(z)) / self.hz(z))
135
- + self.A2(t) / 2 * zZ**2
136
- )
@@ -1,9 +0,0 @@
1
- # pylint: disable=invalid-name
2
- """
3
- 2D GUI-equipped prescribed-flow warm-rain case based on
4
- [Szumowski et al. 1998 (Atmos. Res.)](https://doi.org/10.1016/S0169-8095(97)00082-3)
5
- """
6
- from .gui_settings import GUISettings
7
- from .mpdata_2d import MPDATA_2D
8
- from .simulation import Simulation
9
- from .storage import Storage
@@ -1,93 +0,0 @@
1
- import numpy as np
2
-
3
- from PySDM.physics import constants as const
4
- from PySDM.physics import si
5
-
6
- pressure = (
7
- np.array(
8
- (
9
- 1014,
10
- 1010,
11
- 1000,
12
- 990,
13
- 975,
14
- 960,
15
- 950,
16
- 925,
17
- 900,
18
- 875,
19
- 850,
20
- 825,
21
- 800,
22
- 790,
23
- 775,
24
- 765,
25
- 755,
26
- 745,
27
- 730,
28
- 715,
29
- 700,
30
- )
31
- )
32
- * si.hPa
33
- )
34
-
35
- temperature = (
36
- np.array(
37
- (
38
- 25.2,
39
- 24.8,
40
- 23.6,
41
- 22.5,
42
- 21.8,
43
- 20.5,
44
- 19.9,
45
- 18.2,
46
- 16.8,
47
- 14.8,
48
- 13.3,
49
- 11.9,
50
- 11.0,
51
- 11.3,
52
- 10.9,
53
- 11.2,
54
- 10.2,
55
- 11.0,
56
- 11.2,
57
- 10.0,
58
- 8.8,
59
- )
60
- )
61
- * si.kelvin
62
- + const.T0
63
- )
64
-
65
- mixing_ratio = (
66
- np.array(
67
- (
68
- 14.5,
69
- 14.5,
70
- 14.5,
71
- 14.0,
72
- 13.7,
73
- 13.9,
74
- 13.9,
75
- 10.3,
76
- 10.3,
77
- 10.0,
78
- 9.9,
79
- 8.9,
80
- 7.9,
81
- 4.0,
82
- 2.3,
83
- 1.2,
84
- 1.2,
85
- 0.9,
86
- 0.6,
87
- 2.0,
88
- 1.6,
89
- )
90
- )
91
- * si.g
92
- / si.kg
93
- )
File without changes
File without changes
File without changes