PySDM 2.80__tar.gz → 2.81__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (883) hide show
  1. {PySDM-2.80 → pysdm-2.81}/.github/workflows/tests+artifacts+pypi.yml +11 -7
  2. pysdm-2.81/PKG-INFO +209 -0
  3. pysdm-2.81/PySDM.egg-info/PKG-INFO +209 -0
  4. {PySDM-2.80 → pysdm-2.81}/PySDM.egg-info/requires.txt +0 -1
  5. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Kreidenweis_et_al_2003/simulation.py +1 -1
  6. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Srivastava_1982/simulation.py +1 -1
  7. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Azimi/simulation_0D.py +3 -3
  8. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Mackay_et_al_2023/simulation_0D.py +9 -9
  9. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/seeding/simulation.py +4 -1
  10. pysdm-2.81/examples/pyproject.toml +5 -0
  11. {PySDM-2.80 → pysdm-2.81}/examples/setup.py +0 -1
  12. pysdm-2.81/pyproject.toml +7 -0
  13. {PySDM-2.80 → pysdm-2.81}/setup.py +1 -1
  14. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/partmc/test_dry_wet_equilibration.py +4 -2
  15. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/test_adaptive_displacement.py +1 -1
  16. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/no_env/lamb_et_al_2017/test_fig_4.py +1 -1
  17. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/no_env/pierchala_et_al_2022/test_fig_3.py +5 -5
  18. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/no_env/pierchala_et_al_2022/test_fig_4.py +2 -2
  19. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_b/arabas_and_shima_2017/test_conservation.py +2 -2
  20. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_b/arabas_and_shima_2017/test_initialisation.py +2 -3
  21. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/attributes/test_isotopes.py +4 -3
  22. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/test_freezing_methods.py +2 -1
  23. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/collisions/test_efficiencies.py +1 -1
  24. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/collisions/test_fragmentations.py +1 -1
  25. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/test_seeding.py +4 -1
  26. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/test_terminal_velocity.py +1 -1
  27. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/impl/test_moments.py +1 -1
  28. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_spectra.py +4 -3
  29. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/products/test_concentration_product.py +2 -2
  30. PySDM-2.80/PKG-INFO +0 -194
  31. PySDM-2.80/PySDM.egg-info/PKG-INFO +0 -194
  32. PySDM-2.80/examples/pyproject.toml +0 -5
  33. PySDM-2.80/pyproject.toml +0 -8
  34. {PySDM-2.80 → pysdm-2.81}/.appveyor.yml +0 -0
  35. {PySDM-2.80 → pysdm-2.81}/.binder/apt.txt +0 -0
  36. {PySDM-2.80 → pysdm-2.81}/.binder/postBuild +0 -0
  37. {PySDM-2.80 → pysdm-2.81}/.binder/requirements.txt +0 -0
  38. {PySDM-2.80 → pysdm-2.81}/.codecov.yml +0 -0
  39. {PySDM-2.80 → pysdm-2.81}/.github/dependabot.yml +0 -0
  40. {PySDM-2.80 → pysdm-2.81}/.github/pysdm_logo.png +0 -0
  41. {PySDM-2.80 → pysdm-2.81}/.github/pysdm_logo.svg +0 -0
  42. {PySDM-2.80 → pysdm-2.81}/.github/workflows/cancel.yml +0 -0
  43. {PySDM-2.80 → pysdm-2.81}/.github/workflows/joss.yml +0 -0
  44. {PySDM-2.80 → pysdm-2.81}/.github/workflows/joss_paper.yml +0 -0
  45. {PySDM-2.80 → pysdm-2.81}/.github/workflows/readme_snippets.yml +0 -0
  46. {PySDM-2.80 → pysdm-2.81}/.github/workflows/stale.yml +0 -0
  47. {PySDM-2.80 → pysdm-2.81}/.gitignore +0 -0
  48. {PySDM-2.80 → pysdm-2.81}/.gitmodules +0 -0
  49. {PySDM-2.80 → pysdm-2.81}/.pre-commit-config.yaml +0 -0
  50. {PySDM-2.80 → pysdm-2.81}/.zenodo.json +0 -0
  51. {PySDM-2.80 → pysdm-2.81}/LICENSE +0 -0
  52. {PySDM-2.80 → pysdm-2.81}/PySDM/__init__.py +0 -0
  53. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/__init__.py +0 -0
  54. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/chemistry/__init__.py +0 -0
  55. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/chemistry/acidity.py +0 -0
  56. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/chemistry/concentration.py +0 -0
  57. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/chemistry/hydrogen_ion_concentration.py +0 -0
  58. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/ice/__init__.py +0 -0
  59. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/ice/cooling_rate.py +0 -0
  60. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/ice/freezing_temperature.py +0 -0
  61. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/ice/immersed_surface_area.py +0 -0
  62. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/impl/__init__.py +0 -0
  63. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/impl/attribute.py +0 -0
  64. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/impl/attribute_registry.py +0 -0
  65. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/impl/base_attribute.py +0 -0
  66. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/impl/cell_attribute.py +0 -0
  67. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/impl/derived_attribute.py +0 -0
  68. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/impl/dummy_attribute.py +0 -0
  69. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/impl/extensive_attribute.py +0 -0
  70. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/impl/intensive_attribute.py +0 -0
  71. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/impl/maximum_attribute.py +0 -0
  72. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/impl/mole_amount.py +0 -0
  73. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/isotopes/__init__.py +0 -0
  74. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/isotopes/delta.py +0 -0
  75. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/isotopes/moles.py +0 -0
  76. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/numerics/__init__.py +0 -0
  77. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/numerics/cell_id.py +0 -0
  78. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/numerics/cell_origin.py +0 -0
  79. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/numerics/position_in_cell.py +0 -0
  80. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/__init__.py +0 -0
  81. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/area.py +0 -0
  82. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/critical_supersaturation.py +0 -0
  83. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/critical_volume.py +0 -0
  84. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/dry_radius.py +0 -0
  85. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/dry_volume.py +0 -0
  86. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/equilibrium_supersaturation.py +0 -0
  87. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/heat.py +0 -0
  88. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/hygroscopicity.py +0 -0
  89. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/multiplicity.py +0 -0
  90. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/radius.py +0 -0
  91. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/relative_fall_velocity.py +0 -0
  92. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/reynolds_number.py +0 -0
  93. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/temperature.py +0 -0
  94. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/terminal_velocity.py +0 -0
  95. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/volume.py +0 -0
  96. {PySDM-2.80 → pysdm-2.81}/PySDM/attributes/physics/water_mass.py +0 -0
  97. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/__init__.py +0 -0
  98. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_common/__init__.py +0 -0
  99. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_common/backend_methods.py +0 -0
  100. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_common/freezing_attributes.py +0 -0
  101. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_common/index.py +0 -0
  102. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_common/indexed_storage.py +0 -0
  103. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_common/pair_indicator.py +0 -0
  104. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_common/pairwise_storage.py +0 -0
  105. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_common/random_common.py +0 -0
  106. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_common/storage_utils.py +0 -0
  107. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/__init__.py +0 -0
  108. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/atomic_operations.py +0 -0
  109. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/conf.py +0 -0
  110. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/methods/__init__.py +0 -0
  111. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/methods/chemistry_methods.py +0 -0
  112. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/methods/collisions_methods.py +0 -0
  113. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/methods/condensation_methods.py +0 -0
  114. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/methods/displacement_methods.py +0 -0
  115. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/methods/fragmentation_methods.py +0 -0
  116. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/methods/freezing_methods.py +0 -0
  117. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/methods/index_methods.py +0 -0
  118. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/methods/isotope_methods.py +0 -0
  119. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/methods/moments_methods.py +0 -0
  120. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/methods/pair_methods.py +0 -0
  121. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/methods/physics_methods.py +0 -0
  122. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/methods/seeding_methods.py +0 -0
  123. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/methods/terminal_velocity_methods.py +0 -0
  124. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/random.py +0 -0
  125. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/storage.py +0 -0
  126. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/storage_impl.py +0 -0
  127. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/test_helpers/__init__.py +0 -0
  128. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/test_helpers/scipy_ode_condensation_solver.py +0 -0
  129. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/toms748.py +0 -0
  130. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_numba/warnings.py +0 -0
  131. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/__init__.py +0 -0
  132. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/bisection.py +0 -0
  133. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/conf.py +0 -0
  134. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/methods/__init__.py +0 -0
  135. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/methods/collisions_methods.py +0 -0
  136. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/methods/condensation_methods.py +0 -0
  137. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/methods/displacement_methods.py +0 -0
  138. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/methods/freezing_methods.py +0 -0
  139. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/methods/index_methods.py +0 -0
  140. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/methods/isotope_methods.py +0 -0
  141. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/methods/moments_methods.py +0 -0
  142. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/methods/pair_methods.py +0 -0
  143. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/methods/physics_methods.py +0 -0
  144. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/methods/terminal_velocity_methods.py +0 -0
  145. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/methods/thrust_rtc_backend_methods.py +0 -0
  146. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/nice_thrust.py +0 -0
  147. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/random.py +0 -0
  148. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/storage.py +0 -0
  149. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/test_helpers/__init__.py +0 -0
  150. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/test_helpers/cpp2python.py +0 -0
  151. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/test_helpers/fake_thrust_rtc.py +0 -0
  152. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/impl_thrust_rtc/test_helpers/flag.py +0 -0
  153. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/numba.py +0 -0
  154. {PySDM-2.80 → pysdm-2.81}/PySDM/backends/thrust_rtc.py +0 -0
  155. {PySDM-2.80 → pysdm-2.81}/PySDM/builder.py +0 -0
  156. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/__init__.py +0 -0
  157. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/ambient_thermodynamics.py +0 -0
  158. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/aqueous_chemistry.py +0 -0
  159. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/__init__.py +0 -0
  160. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/breakup_efficiencies/__init__.py +0 -0
  161. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/breakup_efficiencies/constEb.py +0 -0
  162. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/breakup_fragmentations/__init__.py +0 -0
  163. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/breakup_fragmentations/always_n.py +0 -0
  164. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/breakup_fragmentations/constant_mass.py +0 -0
  165. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/breakup_fragmentations/expon_frag.py +0 -0
  166. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/breakup_fragmentations/exponential.py +0 -0
  167. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/breakup_fragmentations/feingold1988.py +0 -0
  168. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/breakup_fragmentations/gaussian.py +0 -0
  169. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/breakup_fragmentations/impl/__init__.py +0 -0
  170. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/breakup_fragmentations/impl/volume_based.py +0 -0
  171. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/breakup_fragmentations/lowlist82.py +0 -0
  172. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/breakup_fragmentations/slams.py +0 -0
  173. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/breakup_fragmentations/straub2010.py +0 -0
  174. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/coalescence_efficiencies/__init__.py +0 -0
  175. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/coalescence_efficiencies/_gravitational.py +0 -0
  176. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/coalescence_efficiencies/_parameterized.py +0 -0
  177. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/coalescence_efficiencies/berry1967.py +0 -0
  178. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/coalescence_efficiencies/constEc.py +0 -0
  179. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/coalescence_efficiencies/lowlist1982.py +0 -0
  180. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/coalescence_efficiencies/specified_eff.py +0 -0
  181. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/coalescence_efficiencies/straub2010.py +0 -0
  182. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/collision.py +0 -0
  183. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/collision_kernels/__init__.py +0 -0
  184. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/collision_kernels/constantK.py +0 -0
  185. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/collision_kernels/electric.py +0 -0
  186. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/collision_kernels/geometric.py +0 -0
  187. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/collision_kernels/golovin.py +0 -0
  188. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/collision_kernels/hydrodynamic.py +0 -0
  189. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/collision_kernels/impl/__init__.py +0 -0
  190. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/collision_kernels/impl/gravitational.py +0 -0
  191. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/collision_kernels/impl/parameterized.py +0 -0
  192. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/collision_kernels/linear.py +0 -0
  193. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/collisions/collision_kernels/simple_geometric.py +0 -0
  194. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/condensation.py +0 -0
  195. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/displacement.py +0 -0
  196. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/eulerian_advection.py +0 -0
  197. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/freezing.py +0 -0
  198. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/impl/__init__.py +0 -0
  199. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/impl/chemistry_utils.py +0 -0
  200. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/impl/random_generator_optimizer.py +0 -0
  201. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/impl/random_generator_optimizer_nopair.py +0 -0
  202. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/impl/register_dynamic.py +0 -0
  203. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/isotopic_fractionation.py +0 -0
  204. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/relaxed_velocity.py +0 -0
  205. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/seeding.py +0 -0
  206. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/terminal_velocity/__init__.py +0 -0
  207. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/terminal_velocity/gunn_and_kinzer.py +0 -0
  208. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/terminal_velocity/power_series.py +0 -0
  209. {PySDM-2.80 → pysdm-2.81}/PySDM/dynamics/terminal_velocity/rogers_and_yau.py +0 -0
  210. {PySDM-2.80 → pysdm-2.81}/PySDM/environments/__init__.py +0 -0
  211. {PySDM-2.80 → pysdm-2.81}/PySDM/environments/box.py +0 -0
  212. {PySDM-2.80 → pysdm-2.81}/PySDM/environments/impl/__init__.py +0 -0
  213. {PySDM-2.80 → pysdm-2.81}/PySDM/environments/impl/moist.py +0 -0
  214. {PySDM-2.80 → pysdm-2.81}/PySDM/environments/impl/register_environment.py +0 -0
  215. {PySDM-2.80 → pysdm-2.81}/PySDM/environments/kinematic_1d.py +0 -0
  216. {PySDM-2.80 → pysdm-2.81}/PySDM/environments/kinematic_2d.py +0 -0
  217. {PySDM-2.80 → pysdm-2.81}/PySDM/environments/parcel.py +0 -0
  218. {PySDM-2.80 → pysdm-2.81}/PySDM/exporters/__init__.py +0 -0
  219. {PySDM-2.80 → pysdm-2.81}/PySDM/exporters/netcdf_exporter.py +0 -0
  220. {PySDM-2.80 → pysdm-2.81}/PySDM/exporters/netcdf_exporter_1d.py +0 -0
  221. {PySDM-2.80 → pysdm-2.81}/PySDM/exporters/vtk_exporter.py +0 -0
  222. {PySDM-2.80 → pysdm-2.81}/PySDM/exporters/vtk_exporter_1d.py +0 -0
  223. {PySDM-2.80 → pysdm-2.81}/PySDM/formulae.py +0 -0
  224. {PySDM-2.80 → pysdm-2.81}/PySDM/impl/__init__.py +0 -0
  225. {PySDM-2.80 → pysdm-2.81}/PySDM/impl/arakawa_c.py +0 -0
  226. {PySDM-2.80 → pysdm-2.81}/PySDM/impl/camel_case.py +0 -0
  227. {PySDM-2.80 → pysdm-2.81}/PySDM/impl/mesh.py +0 -0
  228. {PySDM-2.80 → pysdm-2.81}/PySDM/impl/null_physics_class.py +0 -0
  229. {PySDM-2.80 → pysdm-2.81}/PySDM/impl/particle_attributes.py +0 -0
  230. {PySDM-2.80 → pysdm-2.81}/PySDM/impl/particle_attributes_factory.py +0 -0
  231. {PySDM-2.80 → pysdm-2.81}/PySDM/impl/wall_timer.py +0 -0
  232. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/__init__.py +0 -0
  233. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/aerosol_composition/__init__.py +0 -0
  234. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/aerosol_composition/dry_aerosol.py +0 -0
  235. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/discretise_multiplicities.py +0 -0
  236. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/equilibrate_wet_radii.py +0 -0
  237. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/impl/__init__.py +0 -0
  238. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/impl/spectrum.py +0 -0
  239. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/init_fall_momenta.py +0 -0
  240. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/sampling/__init__.py +0 -0
  241. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/sampling/spatial_sampling.py +0 -0
  242. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/sampling/spectral_sampling.py +0 -0
  243. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/sampling/spectro_glacial_sampling.py +0 -0
  244. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/spectra/__init__.py +0 -0
  245. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/spectra/exponential.py +0 -0
  246. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/spectra/gamma.py +0 -0
  247. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/spectra/gaussian.py +0 -0
  248. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/spectra/lognormal.py +0 -0
  249. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/spectra/sum.py +0 -0
  250. {PySDM-2.80 → pysdm-2.81}/PySDM/initialisation/spectra/top_hat.py +0 -0
  251. {PySDM-2.80 → pysdm-2.81}/PySDM/particulator.py +0 -0
  252. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/__init__.py +0 -0
  253. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/air_dynamic_viscosity/__init__.py +0 -0
  254. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/air_dynamic_viscosity/zografos_et_al_1987.py +0 -0
  255. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/bulk_phase_partitioning/__init__.py +0 -0
  256. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/bulk_phase_partitioning/kaul_et_al_2015.py +0 -0
  257. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/condensation_coordinate/__init__.py +0 -0
  258. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/condensation_coordinate/volume.py +0 -0
  259. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/condensation_coordinate/volume_logarithm.py +0 -0
  260. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/constants.py +0 -0
  261. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/constants_defaults.py +0 -0
  262. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/diffusion_kinetics/__init__.py +0 -0
  263. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/diffusion_kinetics/fuchs_sutugin.py +0 -0
  264. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/diffusion_kinetics/grabowski_et_al_2011.py +0 -0
  265. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/diffusion_kinetics/lowe_et_al_2019.py +0 -0
  266. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/diffusion_kinetics/neglect.py +0 -0
  267. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/diffusion_kinetics/pruppacher_and_klett_2005.py +0 -0
  268. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/diffusion_thermics/__init__.py +0 -0
  269. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/diffusion_thermics/grabowski_et_al_2011.py +0 -0
  270. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/diffusion_thermics/lowe_et_al_2019.py +0 -0
  271. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/diffusion_thermics/neglect.py +0 -0
  272. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/diffusion_thermics/seinfeld_and_pandis_2010.py +0 -0
  273. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/diffusion_thermics/tracy_welch_porter.py +0 -0
  274. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/dimensional_analysis.py +0 -0
  275. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/drop_growth/__init__.py +0 -0
  276. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/drop_growth/mason_1951.py +0 -0
  277. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/drop_growth/mason_1971.py +0 -0
  278. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/fragmentation_function/__init__.py +0 -0
  279. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/fragmentation_function/always_n.py +0 -0
  280. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/fragmentation_function/constant_mass.py +0 -0
  281. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/fragmentation_function/expon_frag.py +0 -0
  282. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/fragmentation_function/exponential.py +0 -0
  283. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/fragmentation_function/feingold1988.py +0 -0
  284. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/fragmentation_function/gaussian.py +0 -0
  285. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/fragmentation_function/lowlist82.py +0 -0
  286. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/fragmentation_function/slams.py +0 -0
  287. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/fragmentation_function/straub2010nf.py +0 -0
  288. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/freezing_temperature_spectrum/__init__.py +0 -0
  289. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/freezing_temperature_spectrum/bigg_1953.py +0 -0
  290. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/freezing_temperature_spectrum/niemand_et_al_2012.py +0 -0
  291. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/freezing_temperature_spectrum/null.py +0 -0
  292. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/heterogeneous_ice_nucleation_rate/__init__.py +0 -0
  293. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/heterogeneous_ice_nucleation_rate/abifm.py +0 -0
  294. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/heterogeneous_ice_nucleation_rate/constant.py +0 -0
  295. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/heterogeneous_ice_nucleation_rate/null.py +0 -0
  296. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/hydrostatics/__init__.py +0 -0
  297. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/hydrostatics/default.py +0 -0
  298. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/hygroscopicity/__init__.py +0 -0
  299. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/hygroscopicity/kappa_koehler.py +0 -0
  300. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/hygroscopicity/kappa_koehler_leading_terms.py +0 -0
  301. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/impl/__init__.py +0 -0
  302. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/impl/fake_unit_registry.py +0 -0
  303. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/impl/flag.py +0 -0
  304. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_diffusivity_ratios/__init__.py +0 -0
  305. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_diffusivity_ratios/grahams_law.py +0 -0
  306. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_diffusivity_ratios/hellmann_and_harvey_2020.py +0 -0
  307. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_diffusivity_ratios/stewart_1975.py +0 -0
  308. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_equilibrium_fractionation_factors/__init__.py +0 -0
  309. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_equilibrium_fractionation_factors/barkan_and_luz_2005.py +0 -0
  310. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_equilibrium_fractionation_factors/ellehoj_et_al_2013.py +0 -0
  311. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_equilibrium_fractionation_factors/horita_and_wesolowski_1994.py +0 -0
  312. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_equilibrium_fractionation_factors/lamb_et_al_2017.py +0 -0
  313. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_equilibrium_fractionation_factors/majoube_1970.py +0 -0
  314. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_equilibrium_fractionation_factors/majoube_1971.py +0 -0
  315. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_equilibrium_fractionation_factors/merlivat_and_nief_1967.py +0 -0
  316. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_equilibrium_fractionation_factors/van_hook_1968.py +0 -0
  317. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_meteoric_water_line_excess/__init__.py +0 -0
  318. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_meteoric_water_line_excess/barkan_and_luz_2007.py +0 -0
  319. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_meteoric_water_line_excess/dansgaard_1964.py +0 -0
  320. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_ratio_evolution/__init__.py +0 -0
  321. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_ratio_evolution/gedzelman_and_arnold_1994.py +0 -0
  322. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_ratio_evolution/merlivat_and_jouzel_1979.py +0 -0
  323. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_ratio_evolution/rayleigh_distillation.py +0 -0
  324. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_relaxation_timescale/__init__.py +0 -0
  325. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/isotope_relaxation_timescale/miyake_et_al_1968.py +0 -0
  326. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/latent_heat/__init__.py +0 -0
  327. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/latent_heat/constant.py +0 -0
  328. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/latent_heat/kirchhoff.py +0 -0
  329. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/latent_heat/lowe2019.py +0 -0
  330. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/latent_heat/seinfeld_and_pandis_2010.py +0 -0
  331. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/optical_albedo/__init__.py +0 -0
  332. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/optical_albedo/bohren1987.py +0 -0
  333. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/optical_depth/__init__.py +0 -0
  334. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/optical_depth/stephens_1978.py +0 -0
  335. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/particle_advection/__init__.py +0 -0
  336. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/particle_advection/explicit_in_space.py +0 -0
  337. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/particle_advection/implicit_in_space.py +0 -0
  338. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/particle_shape_and_density/__init__.py +0 -0
  339. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/particle_shape_and_density/liquid_spheres.py +0 -0
  340. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/particle_shape_and_density/mixed_phase_spheres.py +0 -0
  341. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/particle_shape_and_density/porous_spheroids.py +0 -0
  342. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/saturation_vapour_pressure/__init__.py +0 -0
  343. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/saturation_vapour_pressure/august_roche_magnus.py +0 -0
  344. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/saturation_vapour_pressure/bolton_1980.py +0 -0
  345. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/saturation_vapour_pressure/flatau_walko_cotton.py +0 -0
  346. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/saturation_vapour_pressure/lowe1977.py +0 -0
  347. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/saturation_vapour_pressure/murphy_koop_2005.py +0 -0
  348. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/saturation_vapour_pressure/wexler_1976.py +0 -0
  349. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/state_variable_triplet/__init__.py +0 -0
  350. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/state_variable_triplet/libcloudphplusplus.py +0 -0
  351. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/surface_tension/__init__.py +0 -0
  352. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/surface_tension/compressed_film_ovadnevaite.py +0 -0
  353. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/surface_tension/compressed_film_ruehl.py +0 -0
  354. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/surface_tension/constant.py +0 -0
  355. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/surface_tension/szyszkowski_langmuir.py +0 -0
  356. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/terminal_velocity/__init__.py +0 -0
  357. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/terminal_velocity/gunn_kinzer_1949.py +0 -0
  358. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/terminal_velocity/power_series.py +0 -0
  359. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/terminal_velocity/rogers_yau.py +0 -0
  360. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/trivia.py +0 -0
  361. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/ventilation/__init__.py +0 -0
  362. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/ventilation/froessling_1938.py +0 -0
  363. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/ventilation/neglect.py +0 -0
  364. {PySDM-2.80 → pysdm-2.81}/PySDM/physics/ventilation/pruppacher_rasmussen_1979.py +0 -0
  365. {PySDM-2.80 → pysdm-2.81}/PySDM/products/__init__.py +0 -0
  366. {PySDM-2.80 → pysdm-2.81}/PySDM/products/ambient_thermodynamics/__init__.py +0 -0
  367. {PySDM-2.80 → pysdm-2.81}/PySDM/products/ambient_thermodynamics/ambient_dry_air_density.py +0 -0
  368. {PySDM-2.80 → pysdm-2.81}/PySDM/products/ambient_thermodynamics/ambient_dry_air_potential_temperature.py +0 -0
  369. {PySDM-2.80 → pysdm-2.81}/PySDM/products/ambient_thermodynamics/ambient_pressure.py +0 -0
  370. {PySDM-2.80 → pysdm-2.81}/PySDM/products/ambient_thermodynamics/ambient_relative_humidity.py +0 -0
  371. {PySDM-2.80 → pysdm-2.81}/PySDM/products/ambient_thermodynamics/ambient_temperature.py +0 -0
  372. {PySDM-2.80 → pysdm-2.81}/PySDM/products/ambient_thermodynamics/ambient_water_vapour_mixing_ratio.py +0 -0
  373. {PySDM-2.80 → pysdm-2.81}/PySDM/products/aqueous_chemistry/__init__.py +0 -0
  374. {PySDM-2.80 → pysdm-2.81}/PySDM/products/aqueous_chemistry/acidity.py +0 -0
  375. {PySDM-2.80 → pysdm-2.81}/PySDM/products/aqueous_chemistry/aqueous_mass_spectrum.py +0 -0
  376. {PySDM-2.80 → pysdm-2.81}/PySDM/products/aqueous_chemistry/aqueous_mole_fraction.py +0 -0
  377. {PySDM-2.80 → pysdm-2.81}/PySDM/products/aqueous_chemistry/gaseous_mole_fraction.py +0 -0
  378. {PySDM-2.80 → pysdm-2.81}/PySDM/products/aqueous_chemistry/total_dry_mass_mixing_ratio.py +0 -0
  379. {PySDM-2.80 → pysdm-2.81}/PySDM/products/collision/__init__.py +0 -0
  380. {PySDM-2.80 → pysdm-2.81}/PySDM/products/collision/collision_rates.py +0 -0
  381. {PySDM-2.80 → pysdm-2.81}/PySDM/products/collision/collision_timestep_mean.py +0 -0
  382. {PySDM-2.80 → pysdm-2.81}/PySDM/products/collision/collision_timestep_min.py +0 -0
  383. {PySDM-2.80 → pysdm-2.81}/PySDM/products/condensation/__init__.py +0 -0
  384. {PySDM-2.80 → pysdm-2.81}/PySDM/products/condensation/activable_fraction.py +0 -0
  385. {PySDM-2.80 → pysdm-2.81}/PySDM/products/condensation/condensation_timestep.py +0 -0
  386. {PySDM-2.80 → pysdm-2.81}/PySDM/products/condensation/event_rates.py +0 -0
  387. {PySDM-2.80 → pysdm-2.81}/PySDM/products/condensation/peak_supersaturation.py +0 -0
  388. {PySDM-2.80 → pysdm-2.81}/PySDM/products/displacement/__init__.py +0 -0
  389. {PySDM-2.80 → pysdm-2.81}/PySDM/products/displacement/averaged_terminal_velocity.py +0 -0
  390. {PySDM-2.80 → pysdm-2.81}/PySDM/products/displacement/flow_velocity_component.py +0 -0
  391. {PySDM-2.80 → pysdm-2.81}/PySDM/products/displacement/max_courant_number.py +0 -0
  392. {PySDM-2.80 → pysdm-2.81}/PySDM/products/displacement/surface_precipitation.py +0 -0
  393. {PySDM-2.80 → pysdm-2.81}/PySDM/products/freezing/__init__.py +0 -0
  394. {PySDM-2.80 → pysdm-2.81}/PySDM/products/freezing/cooling_rate.py +0 -0
  395. {PySDM-2.80 → pysdm-2.81}/PySDM/products/freezing/freezable_specific_concentration.py +0 -0
  396. {PySDM-2.80 → pysdm-2.81}/PySDM/products/freezing/frozen_particle_concentration.py +0 -0
  397. {PySDM-2.80 → pysdm-2.81}/PySDM/products/freezing/ice_nuclei_concentration.py +0 -0
  398. {PySDM-2.80 → pysdm-2.81}/PySDM/products/freezing/total_unfrozen_immersed_surface_area.py +0 -0
  399. {PySDM-2.80 → pysdm-2.81}/PySDM/products/housekeeping/__init__.py +0 -0
  400. {PySDM-2.80 → pysdm-2.81}/PySDM/products/housekeeping/dynamic_wall_time.py +0 -0
  401. {PySDM-2.80 → pysdm-2.81}/PySDM/products/housekeeping/super_droplet_count_per_gridbox.py +0 -0
  402. {PySDM-2.80 → pysdm-2.81}/PySDM/products/housekeeping/time.py +0 -0
  403. {PySDM-2.80 → pysdm-2.81}/PySDM/products/housekeeping/timers.py +0 -0
  404. {PySDM-2.80 → pysdm-2.81}/PySDM/products/impl/__init__.py +0 -0
  405. {PySDM-2.80 → pysdm-2.81}/PySDM/products/impl/activation_filtered_product.py +0 -0
  406. {PySDM-2.80 → pysdm-2.81}/PySDM/products/impl/concentration_product.py +0 -0
  407. {PySDM-2.80 → pysdm-2.81}/PySDM/products/impl/moist_environment_product.py +0 -0
  408. {PySDM-2.80 → pysdm-2.81}/PySDM/products/impl/moment_product.py +0 -0
  409. {PySDM-2.80 → pysdm-2.81}/PySDM/products/impl/product.py +0 -0
  410. {PySDM-2.80 → pysdm-2.81}/PySDM/products/impl/rate_product.py +0 -0
  411. {PySDM-2.80 → pysdm-2.81}/PySDM/products/impl/register_product.py +0 -0
  412. {PySDM-2.80 → pysdm-2.81}/PySDM/products/impl/spectrum_moment_product.py +0 -0
  413. {PySDM-2.80 → pysdm-2.81}/PySDM/products/optical/__init__.py +0 -0
  414. {PySDM-2.80 → pysdm-2.81}/PySDM/products/optical/cloud_albedo.py +0 -0
  415. {PySDM-2.80 → pysdm-2.81}/PySDM/products/optical/cloud_optical_depth.py +0 -0
  416. {PySDM-2.80 → pysdm-2.81}/PySDM/products/parcel/__init__.py +0 -0
  417. {PySDM-2.80 → pysdm-2.81}/PySDM/products/parcel/cloud_water_path.py +0 -0
  418. {PySDM-2.80 → pysdm-2.81}/PySDM/products/parcel/parcel_displacement.py +0 -0
  419. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/__init__.py +0 -0
  420. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/arbitrary_moment.py +0 -0
  421. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/cloud_water_content.py +0 -0
  422. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/effective_radius.py +0 -0
  423. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/effective_radius_activated.py +0 -0
  424. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/mean_radius.py +0 -0
  425. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/mean_radius_activated.py +0 -0
  426. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/mean_volume_radius.py +0 -0
  427. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/number_size_spectrum.py +0 -0
  428. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/particle_concentration.py +0 -0
  429. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/particle_concentration_activated.py +0 -0
  430. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/particle_size_spectrum.py +0 -0
  431. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/particle_volume_versus_radius_logarithm_spectrum.py +0 -0
  432. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/radius_binned_number_averaged_terminal_velocity.py +0 -0
  433. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/size_standard_deviation.py +0 -0
  434. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/total_particle_concentration.py +0 -0
  435. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/total_particle_specific_concentration.py +0 -0
  436. {PySDM-2.80 → pysdm-2.81}/PySDM/products/size_spectral/water_mixing_ratio.py +0 -0
  437. {PySDM-2.80 → pysdm-2.81}/PySDM.egg-info/SOURCES.txt +0 -0
  438. {PySDM-2.80 → pysdm-2.81}/PySDM.egg-info/dependency_links.txt +0 -0
  439. {PySDM-2.80 → pysdm-2.81}/PySDM.egg-info/top_level.txt +0 -0
  440. {PySDM-2.80 → pysdm-2.81}/README.md +0 -0
  441. {PySDM-2.80 → pysdm-2.81}/docs/markdown/pysdm_landing.md +0 -0
  442. {PySDM-2.80 → pysdm-2.81}/docs/templates/index.html.jinja2 +0 -0
  443. {PySDM-2.80 → pysdm-2.81}/examples/MANIFEST.in +0 -0
  444. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py +0 -0
  445. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Abade_and_Albuquerque_2024/fig_2.ipynb +0 -0
  446. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Abade_and_Albuquerque_2024/settings.py +0 -0
  447. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Abade_and_Albuquerque_2024/simulation.py +0 -0
  448. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py +0 -0
  449. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
  450. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
  451. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
  452. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Abdul_Razzak_Ghan_2000/fig_4_kinetic_limitations.ipynb +0 -0
  453. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Abdul_Razzak_Ghan_2000/figs1-5.ipynb +0 -0
  454. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +0 -0
  455. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Alpert_and_Knopf_2016/__init__.py +0 -0
  456. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Alpert_and_Knopf_2016/fig_1.ipynb +0 -0
  457. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Alpert_and_Knopf_2016/fig_2.ipynb +0 -0
  458. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Alpert_and_Knopf_2016/fig_3.ipynb +0 -0
  459. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Alpert_and_Knopf_2016/fig_4.ipynb +0 -0
  460. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Alpert_and_Knopf_2016/fig_5.ipynb +0 -0
  461. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Alpert_and_Knopf_2016/simulation.py +0 -0
  462. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Alpert_and_Knopf_2016/table.py +0 -0
  463. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Alpert_and_Knopf_2016/table_1.py +0 -0
  464. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Alpert_and_Knopf_2016/table_2.py +0 -0
  465. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_and_Shima_2017/__init__.py +0 -0
  466. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -0
  467. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_and_Shima_2017/fig_5.ipynb +0 -0
  468. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_and_Shima_2017/settings.py +0 -0
  469. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_and_Shima_2017/simulation.py +0 -0
  470. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2015/__init__.py +0 -0
  471. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2015/example.py +0 -0
  472. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +0 -0
  473. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2015/gui.ipynb +0 -0
  474. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2015/paraview_hello_world.ipynb +0 -0
  475. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2015/settings.py +0 -0
  476. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2015/spin_up.py +0 -0
  477. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2023/__init__.py +0 -0
  478. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2023/aida.ipynb +0 -0
  479. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2023/commons.py +0 -0
  480. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2023/copula_hello.ipynb +0 -0
  481. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2023/curved_text.py +0 -0
  482. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2023/fig_2.ipynb +0 -0
  483. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2023/fig_A2.ipynb +0 -0
  484. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2023/figs_10_and_11_and_animations.ipynb +0 -0
  485. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2023/figs_3_and_7_and_8.ipynb +0 -0
  486. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2023/figs_5_and_6.ipynb +0 -0
  487. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2023/frozen_fraction.py +0 -0
  488. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2023/make_particulator.py +0 -0
  489. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2023/plots.py +0 -0
  490. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Arabas_et_al_2023/run_simulation.py +0 -0
  491. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -0
  492. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -0
  493. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bartman_2020_MasterThesis/fig_5_SCIPY_VS_ADAPTIVE.py +0 -0
  494. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bartman_et_al_2021/__init__.py +0 -0
  495. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bartman_et_al_2021/demo.ipynb +0 -0
  496. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bartman_et_al_2021/demo_fig2.ipynb +0 -0
  497. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bartman_et_al_2021/demo_fig3.ipynb +0 -0
  498. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bartman_et_al_2021/label.py +0 -0
  499. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Berry_1967/__init__.py +0 -0
  500. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Berry_1967/example.py +0 -0
  501. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Berry_1967/example_fig_6.py +0 -0
  502. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Berry_1967/figs_5_8_10.ipynb +0 -0
  503. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Berry_1967/settings.py +0 -0
  504. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Berry_1967/spectrum_plotter.py +0 -0
  505. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bieli_et_al_2022/__init__.py +0 -0
  506. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bieli_et_al_2022/make_fig_3.ipynb +0 -0
  507. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bieli_et_al_2022/settings.py +0 -0
  508. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bieli_et_al_2022/simulation.py +0 -0
  509. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bolot_et_al_2013/__init__.py +0 -0
  510. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bolot_et_al_2013/fig_1.ipynb +0 -0
  511. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +0 -0
  512. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bulenok_2023_MasterThesis/performance_comparison_Srivastava_Setup.ipynb +0 -0
  513. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -0
  514. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +0 -0
  515. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Ervens_and_Feingold_2012/__init__.py +0 -0
  516. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Ervens_and_Feingold_2012/settings.py +0 -0
  517. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py +0 -0
  518. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Gedzelman_and_Arnold_1994/fig_2.ipynb +0 -0
  519. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -0
  520. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_1.ipynb +0 -0
  521. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_2.ipynb +0 -0
  522. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_3.ipynb +0 -0
  523. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_4.ipynb +0 -0
  524. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_ripening_rate.ipynb +0 -0
  525. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py +0 -0
  526. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
  527. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Graf_et_al_2019/Table_1.ipynb +0 -0
  528. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Graf_et_al_2019/__init__.py +0 -0
  529. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Graf_et_al_2019/figure_4.ipynb +0 -0
  530. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py +0 -0
  531. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Jaruga_and_Pawlowska_2018/fig_2.ipynb +0 -0
  532. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Jaruga_and_Pawlowska_2018/fig_3.ipynb +0 -0
  533. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Jensen_and_Nugent_2017/Fig_1.ipynb +0 -0
  534. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Jensen_and_Nugent_2017/Fig_3_and_Tab_4_upper_rows.ipynb +0 -0
  535. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Jensen_and_Nugent_2017/Fig_4_and_7_and_Tab_4_bottom_rows.ipynb +0 -0
  536. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Jensen_and_Nugent_2017/Fig_5.ipynb +0 -0
  537. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Jensen_and_Nugent_2017/Fig_6.ipynb +0 -0
  538. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Jensen_and_Nugent_2017/Fig_8.ipynb +0 -0
  539. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Jensen_and_Nugent_2017/__init__.py +0 -0
  540. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Jensen_and_Nugent_2017/plotting.py +0 -0
  541. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Jensen_and_Nugent_2017/settings.py +0 -0
  542. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Jensen_and_Nugent_2017/simulation.py +0 -0
  543. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Jensen_and_Nugent_2017/table_3.py +0 -0
  544. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Kreidenweis_et_al_2003/__init__.py +0 -0
  545. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Kreidenweis_et_al_2003/fig_1.ipynb +0 -0
  546. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Kreidenweis_et_al_2003/settings.py +0 -0
  547. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Lamb_et_al_2017/__init__.py +0 -0
  548. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Lamb_et_al_2017/fig_4.ipynb +0 -0
  549. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Lowe_et_al_2019/__init__.py +0 -0
  550. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Lowe_et_al_2019/aerosol.py +0 -0
  551. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Lowe_et_al_2019/aerosol_code.py +0 -0
  552. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Lowe_et_al_2019/constants_def.py +0 -0
  553. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Lowe_et_al_2019/fig_1.ipynb +0 -0
  554. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Lowe_et_al_2019/fig_2.ipynb +0 -0
  555. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Lowe_et_al_2019/fig_3.ipynb +0 -0
  556. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Lowe_et_al_2019/fig_s2.ipynb +0 -0
  557. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Lowe_et_al_2019/plot_helper.py +0 -0
  558. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Lowe_et_al_2019/settings.py +0 -0
  559. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Lowe_et_al_2019/simulation.py +0 -0
  560. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Merlivat_and_Nief_1967/__init__.py +0 -0
  561. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Merlivat_and_Nief_1967/fig_2.ipynb +0 -0
  562. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Miyake_et_al_1968/__init__.py +0 -0
  563. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Miyake_et_al_1968/fig_19.ipynb +0 -0
  564. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py +0 -0
  565. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Morrison_and_Grabowski_2007/common.py +0 -0
  566. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Morrison_and_Grabowski_2007/cumulus.py +0 -0
  567. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Morrison_and_Grabowski_2007/fig_2.ipynb +0 -0
  568. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Morrison_and_Grabowski_2007/fig_3.ipynb +0 -0
  569. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py +0 -0
  570. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Niedermeier_et_al_2014/__init__.py +0 -0
  571. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Niedermeier_et_al_2014/fig_2.ipynb +0 -0
  572. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Niedermeier_et_al_2014/settings.py +0 -0
  573. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Niedermeier_et_al_2014/simulation.py +0 -0
  574. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Pierchala_et_al_2022/__init__.py +0 -0
  575. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Pierchala_et_al_2022/commons.py +0 -0
  576. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Pierchala_et_al_2022/fig_3.ipynb +0 -0
  577. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Pierchala_et_al_2022/fig_4.ipynb +0 -0
  578. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Pyrcel/__init__.py +0 -0
  579. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Pyrcel/example_basic_run.ipynb +0 -0
  580. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Pyrcel/profile_plotter.py +0 -0
  581. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Pyrcel/settings.py +0 -0
  582. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Pyrcel/simulation.py +0 -0
  583. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Pyrcel/tutorial_settings.py +0 -0
  584. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Pyrcel/tutorial_simulation.py +0 -0
  585. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py +0 -0
  586. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Rozanski_and_Sonntag_1982/figs_4_5_6.ipynb +0 -0
  587. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shima_et_al_2009/__init__.py +0 -0
  588. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shima_et_al_2009/error_measure.py +0 -0
  589. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shima_et_al_2009/example.py +0 -0
  590. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shima_et_al_2009/example_timing.py +0 -0
  591. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shima_et_al_2009/fig_2.ipynb +0 -0
  592. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shima_et_al_2009/settings.py +0 -0
  593. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py +0 -0
  594. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shima_et_al_2009/tutorial_example.py +0 -0
  595. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py +0 -0
  596. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shima_et_al_2009/tutorial_settings.py +0 -0
  597. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shipway_and_Hill_2012/__init__.py +0 -0
  598. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shipway_and_Hill_2012/fig_1.ipynb +0 -0
  599. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py +0 -0
  600. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shipway_and_Hill_2012/plot.py +0 -0
  601. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shipway_and_Hill_2012/settings.py +0 -0
  602. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Shipway_and_Hill_2012/simulation.py +0 -0
  603. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Singer_Ward/MWE_joss_paper.ipynb +0 -0
  604. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Singer_Ward/__init__.py +0 -0
  605. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Singer_Ward/aerosol.py +0 -0
  606. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Singer_Ward/kohler.ipynb +0 -0
  607. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Srivastava_1982/__init__.py +0 -0
  608. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Srivastava_1982/equations.py +0 -0
  609. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Srivastava_1982/example.py +0 -0
  610. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Srivastava_1982/figures.ipynb +0 -0
  611. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Srivastava_1982/settings.py +0 -0
  612. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Szumowski_et_al_1998/__init__.py +0 -0
  613. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Szumowski_et_al_1998/fields.py +0 -0
  614. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Szumowski_et_al_1998/gui.py +0 -0
  615. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Szumowski_et_al_1998/gui_controller.py +0 -0
  616. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Szumowski_et_al_1998/gui_settings.py +0 -0
  617. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Szumowski_et_al_1998/gui_viewer.py +0 -0
  618. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Szumowski_et_al_1998/make_default_product_collection.py +0 -0
  619. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Szumowski_et_al_1998/mpdata_2d.py +0 -0
  620. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Szumowski_et_al_1998/plots.py +0 -0
  621. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Szumowski_et_al_1998/simulation.py +0 -0
  622. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Szumowski_et_al_1998/sounding.py +0 -0
  623. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Szumowski_et_al_1998/storage.py +0 -0
  624. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Van_Hook_1968/__init__.py +0 -0
  625. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Van_Hook_1968/fig_1.ipynb +0 -0
  626. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Yang_et_al_2018/__init__.py +0 -0
  627. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Yang_et_al_2018/fig_2.ipynb +0 -0
  628. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Yang_et_al_2018/settings.py +0 -0
  629. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/Yang_et_al_2018/simulation.py +0 -0
  630. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/__init__.py +0 -0
  631. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Azimi/__init__.py +0 -0
  632. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Azimi/box.ipynb +0 -0
  633. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Azimi/cloudy_data.py +0 -0
  634. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Azimi/cloudy_data_0d.py +0 -0
  635. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Azimi/rainshaft.ipynb +0 -0
  636. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Azimi/settings1D.py +0 -0
  637. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py +0 -0
  638. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Mackay_et_al_2023/data/straub_fig10.csv +0 -0
  639. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Mackay_et_al_2023/fig_9.ipynb +0 -0
  640. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Mackay_et_al_2023/figs_10_11_12_13.ipynb +0 -0
  641. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Mackay_et_al_2023/figs_3_4_5.ipynb +0 -0
  642. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Mackay_et_al_2023/figs_6_7_8.ipynb +0 -0
  643. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
  644. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py +0 -0
  645. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
  646. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Mackay_et_al_2023/simulation1D.py +0 -0
  647. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/deJong_Mackay_et_al_2023/simulation_ss.py +0 -0
  648. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/seeding/__init__.py +0 -0
  649. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/seeding/hello_world.ipynb +0 -0
  650. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/seeding/seeding_no_collisions.ipynb +0 -0
  651. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/seeding/settings.py +0 -0
  652. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/utils/__init__.py +0 -0
  653. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/utils/basic_simulation.py +0 -0
  654. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/utils/dummy_controller.py +0 -0
  655. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/utils/notebook_vars.py +0 -0
  656. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/utils/progbar_controller.py +0 -0
  657. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/utils/read_vtk_1d.py +0 -0
  658. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/utils/widgets/__init__.py +0 -0
  659. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/utils/widgets/freezer.py +0 -0
  660. {PySDM-2.80 → pysdm-2.81}/examples/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
  661. {PySDM-2.80 → pysdm-2.81}/examples/README.md +0 -0
  662. {PySDM-2.80 → pysdm-2.81}/examples/docs/pysdm_examples_landing.md +0 -0
  663. {PySDM-2.80 → pysdm-2.81}/paper/joss-ARG-fig_1.pdf +0 -0
  664. {PySDM-2.80 → pysdm-2.81}/paper/paper.bib +0 -0
  665. {PySDM-2.80 → pysdm-2.81}/paper/paper.md +0 -0
  666. {PySDM-2.80 → pysdm-2.81}/paper/paperv1.md +0 -0
  667. {PySDM-2.80 → pysdm-2.81}/paper/readme.pdf +0 -0
  668. {PySDM-2.80 → pysdm-2.81}/paper/test.pdf +0 -0
  669. {PySDM-2.80 → pysdm-2.81}/setup.cfg +0 -0
  670. {PySDM-2.80 → pysdm-2.81}/tests/__init__.py +0 -0
  671. {PySDM-2.80 → pysdm-2.81}/tests/examples_tests/__init__.py +0 -0
  672. {PySDM-2.80 → pysdm-2.81}/tests/examples_tests/conftest.py +0 -0
  673. {PySDM-2.80 → pysdm-2.81}/tests/examples_tests/test_run_examples.py +0 -0
  674. {PySDM-2.80 → pysdm-2.81}/tests/examples_tests/test_run_notebooks.py +0 -0
  675. {PySDM-2.80 → pysdm-2.81}/tests/examples_tests/test_tests_completeness.py +0 -0
  676. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/__init__.py +0 -0
  677. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/alpert_and_knopf_2016/__init__.py +0 -0
  678. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/alpert_and_knopf_2016/test_ak16_fig_1.py +0 -0
  679. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/alpert_and_knopf_2016/test_frozen_fraction.py +0 -0
  680. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/berry_1967/__init__.py +0 -0
  681. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/berry_1967/test_coalescence.py +0 -0
  682. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/bieli_et_al_2022/__init__.py +0 -0
  683. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/bieli_et_al_2022/test_moments.py +0 -0
  684. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/dejong_and_mackay_et_al_2023/__init__.py +0 -0
  685. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/dejong_and_mackay_et_al_2023/test_collision.py +0 -0
  686. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/dejong_and_mackay_et_al_2023/test_fig_6.py +0 -0
  687. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/dejong_and_mackay_et_al_2023/test_fig_7.py +0 -0
  688. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/dejong_and_mackay_et_al_2023/test_fig_8.py +0 -0
  689. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/dejong_azimi/test_box.py +0 -0
  690. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/partmc/__init__.py +0 -0
  691. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/shima_et_al_2009/__init__.py +0 -0
  692. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/shima_et_al_2009/test_lwc_constant.py +0 -0
  693. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/srivastava_1982/__init__.py +0 -0
  694. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/srivastava_1982/test_eq_10.py +0 -0
  695. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/srivastava_1982/test_eq_13.py +0 -0
  696. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/box/srivastava_1982/test_equations.py +0 -0
  697. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/conftest.py +0 -0
  698. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_1d/deJong_Azimi/__init__.py +0 -0
  699. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_1d/deJong_Azimi/test_few_steps.py +0 -0
  700. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_1d/deJong_Azimi/test_initial_condition.py +0 -0
  701. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_1d/shipway_and_hill_2012/__init__.py +0 -0
  702. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_1d/shipway_and_hill_2012/test_1d_exporters.py +0 -0
  703. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_1d/shipway_and_hill_2012/test_few_steps.py +0 -0
  704. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_1d/shipway_and_hill_2012/test_initial_condition.py +0 -0
  705. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_1d/shipway_and_hill_2012/test_settings.py +0 -0
  706. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/__init__.py +0 -0
  707. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/dummy_storage.py +0 -0
  708. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/test_environment.py +0 -0
  709. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/test_export.py +0 -0
  710. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/test_freezing.py +0 -0
  711. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/test_gui_settings.py +0 -0
  712. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/test_initialisation.py +0 -0
  713. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/test_spin_up.py +0 -0
  714. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/no_env/gedzelman_and_arnold_1994/__init__.py +0 -0
  715. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/no_env/gedzelman_and_arnold_1994/test_fig_2.py +0 -0
  716. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/no_env/lamb_et_al_2017/__init__.py +0 -0
  717. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/no_env/miyake_et_al_1968/__init__.py +0 -0
  718. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/no_env/miyake_et_al_1968/test_fig_19.py +0 -0
  719. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/no_env/pierchala_et_al_2022/__init__.py +0 -0
  720. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/no_env/pierchala_et_al_2022/test_supplement.py +0 -0
  721. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/lowe_et_al_2019/__init__.py +0 -0
  722. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/lowe_et_al_2019/conftest.py +0 -0
  723. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/lowe_et_al_2019/test_dz_sensitivity.py +0 -0
  724. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/lowe_et_al_2019/test_fig_1.py +0 -0
  725. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/lowe_et_al_2019/test_fig_2.py +0 -0
  726. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/lowe_et_al_2019/test_fig_s2.py +0 -0
  727. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/lowe_et_al_2019/test_surface_tension_models.py +0 -0
  728. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/lowe_et_al_2019/test_zero_forg.py +0 -0
  729. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/pyrcel/__init__.py +0 -0
  730. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/pyrcel/test_parcel_example.py +0 -0
  731. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/rozanski_and_sonntag_1982/__init__.py +0 -0
  732. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/rozanski_and_sonntag_1982/test_figs_4_5_6.py +0 -0
  733. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/seeding/__init__.py +0 -0
  734. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/seeding/test_hello_world.py +0 -0
  735. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_a/seeding/test_seeding_no_collisions.py +0 -0
  736. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_b/arabas_and_shima_2017/__init__.py +0 -0
  737. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_b/arabas_and_shima_2017/test_displacement.py +0 -0
  738. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_b/arabas_and_shima_2017/test_event_rates.py +0 -0
  739. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_b/arabas_and_shima_2017/test_vs_scipy.py +0 -0
  740. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_b/yang_et_al_2018/__init__.py +0 -0
  741. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_b/yang_et_al_2018/test_displacement.py +0 -0
  742. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_b/yang_et_al_2018/test_initialisation.py +0 -0
  743. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_b/yang_et_al_2018/test_just_do_it.py +0 -0
  744. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/abade_and_albuquerque_2024/__init__.py +0 -0
  745. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/abade_and_albuquerque_2024/test_fig_2.py +0 -0
  746. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/abdul_razzak_ghan_2000/__init__.py +0 -0
  747. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/abdul_razzak_ghan_2000/test_ARG_example.py +0 -0
  748. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/abdul_razzak_ghan_2000/test_just_do_it.py +0 -0
  749. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/abdul_razzak_ghan_2000/test_single_supersaturation_peak.py +0 -0
  750. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/grabowski_and_pawlowska_2023/__init__.py +0 -0
  751. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/grabowski_and_pawlowska_2023/test_condensation_tolerance.py +0 -0
  752. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/grabowski_and_pawlowska_2023/test_figure_1_and_2.py +0 -0
  753. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/grabowski_and_pawlowska_2023/test_figure_3.py +0 -0
  754. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/grabowski_and_pawlowska_2023/test_figure_4.py +0 -0
  755. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/grabowski_and_pawlowska_2023/test_ripening_rate.py +0 -0
  756. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/graf_et_al_2019/__init__.py +0 -0
  757. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/graf_et_al_2019/test_fig_4.py +0 -0
  758. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/graf_et_al_2019/test_table_1.py +0 -0
  759. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/jensen_and_nugent_2017/__init__.py +0 -0
  760. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/jensen_and_nugent_2017/test_fig_1.py +0 -0
  761. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/jensen_and_nugent_2017/test_fig_3_and_tab_4_upper_rows.py +0 -0
  762. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/jensen_and_nugent_2017/test_fig_4_and_7_and_tab_4_bottom_rows.py +0 -0
  763. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/jensen_and_nugent_2017/test_fig_5.py +0 -0
  764. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/jensen_and_nugent_2017/test_fig_6.py +0 -0
  765. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/jensen_and_nugent_2017/test_table_3.py +0 -0
  766. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/kreidenweis_et_al_2003/__init__.py +0 -0
  767. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/kreidenweis_et_al_2003/test_fig_1.py +0 -0
  768. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/kreidenweis_et_al_2003/test_ionic_strength.py +0 -0
  769. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/kreidenweis_et_al_2003/test_spectrum_at_t_0.py +0 -0
  770. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/kreidenweis_et_al_2003/test_table_3.py +0 -0
  771. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/niedermeier_et_al_2013/__init__.py +0 -0
  772. {PySDM-2.80 → pysdm-2.81}/tests/smoke_tests/parcel_c/niedermeier_et_al_2013/test_temperature_profile.py +0 -0
  773. {PySDM-2.80 → pysdm-2.81}/tests/tutorials_tests/__init__.py +0 -0
  774. {PySDM-2.80 → pysdm-2.81}/tests/tutorials_tests/conftest.py +0 -0
  775. {PySDM-2.80 → pysdm-2.81}/tests/tutorials_tests/test_run_notebooks.py +0 -0
  776. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/__init__.py +0 -0
  777. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/attributes/__init__.py +0 -0
  778. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/attributes/test_acidity.py +0 -0
  779. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/attributes/test_area_radius.py +0 -0
  780. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/attributes/test_critical_supersaturation.py +0 -0
  781. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/attributes/test_fall_velocity.py +0 -0
  782. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/attributes/test_impl_attribute_registry.py +0 -0
  783. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/attributes/test_multiplicities.py +0 -0
  784. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/attributes/test_reynolds_number.py +0 -0
  785. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/__init__.py +0 -0
  786. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/storage/__init__.py +0 -0
  787. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/storage/test_basic_ops.py +0 -0
  788. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/storage/test_index.py +0 -0
  789. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/storage/test_setitem.py +0 -0
  790. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/test_collisions_methods.py +0 -0
  791. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/test_ctor_defaults.py +0 -0
  792. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/test_fake_thrust.py +0 -0
  793. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/test_isotope_methods.py +0 -0
  794. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/test_moments_methods.py +0 -0
  795. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/test_oxidation.py +0 -0
  796. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/test_pair_methods.py +0 -0
  797. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/test_physics_methods.py +0 -0
  798. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/test_seeding_methods.py +0 -0
  799. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/backends/test_toms748.py +0 -0
  800. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/conftest.py +0 -0
  801. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dummy_environment.py +0 -0
  802. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dummy_particulator.py +0 -0
  803. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/__init__.py +0 -0
  804. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/collisions/__init__.py +0 -0
  805. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/collisions/conftest.py +0 -0
  806. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/collisions/test_croupiers.py +0 -0
  807. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/collisions/test_defaults.py +0 -0
  808. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/collisions/test_kernels.py +0 -0
  809. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/collisions/test_sdm_breakup.py +0 -0
  810. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/collisions/test_sdm_multi_cell.py +0 -0
  811. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/collisions/test_sdm_single_cell.py +0 -0
  812. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/condensation/test_diagnostics.py +0 -0
  813. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/condensation/test_parcel_sanity_checks.py +0 -0
  814. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/condensation/test_ventilation.py +0 -0
  815. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/displacement/__init__.py +0 -0
  816. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/displacement/displacement_settings.py +0 -0
  817. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/displacement/test_advection.py +0 -0
  818. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/displacement/test_courant_product.py +0 -0
  819. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/displacement/test_sedimentation.py +0 -0
  820. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/test_eulerian_advection.py +0 -0
  821. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/test_impl_register_dynamic.py +0 -0
  822. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/test_isotopic_fractionation.py +0 -0
  823. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/dynamics/test_relaxed_velocity.py +0 -0
  824. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/environments/__init__.py +0 -0
  825. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/environments/test_impl.py +0 -0
  826. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/impl/__init__.py +0 -0
  827. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/impl/test_camel_case.py +0 -0
  828. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/impl/test_mesh.py +0 -0
  829. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/impl/test_particle_attributes.py +0 -0
  830. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/initialisation/__init__.py +0 -0
  831. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/initialisation/test_aerosol_init.py +0 -0
  832. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/initialisation/test_discretise_multiplicities.py +0 -0
  833. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/initialisation/test_equilibrate_wet_radii.py +0 -0
  834. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/initialisation/test_init_fall_momenta.py +0 -0
  835. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/initialisation/test_spatial_discretisation.py +0 -0
  836. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/initialisation/test_spectra_lognormal.py +0 -0
  837. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/initialisation/test_spectral_discretisation.py +0 -0
  838. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/initialisation/test_spectro_glacial_discretisation.py +0 -0
  839. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/__init__.py +0 -0
  840. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_accommodation_coefficients.py +0 -0
  841. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_air_dynamic_viscosity.py +0 -0
  842. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_bulk_phase_partitioning.py +0 -0
  843. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_constants.py +0 -0
  844. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_dimensional_analysis.py +0 -0
  845. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_drop_growth.py +0 -0
  846. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_formulae.py +0 -0
  847. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_fragmentation_functions.py +0 -0
  848. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_freezing_temperature_spectra.py +0 -0
  849. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_hygroscopicity_fierce_diagrams.py +0 -0
  850. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_isotope_diffusivity_ratios.py +0 -0
  851. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_isotope_equilibrium_fractionation_factors.py +0 -0
  852. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_isotope_meteoric_water_line_excess.py +0 -0
  853. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_isotope_ratio_evolution.py +0 -0
  854. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_isotope_relaxation_timescale.py +0 -0
  855. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_latent_heat.py +0 -0
  856. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_optical.py +0 -0
  857. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_particle_shape_and_density.py +0 -0
  858. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_saturation_vapour_pressure.py +0 -0
  859. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_spectra_top_hat.py +0 -0
  860. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_surface_tension.py +0 -0
  861. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_thermal_conductivity.py +0 -0
  862. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_trivia.py +0 -0
  863. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/physics/test_ventilation_coefficient.py +0 -0
  864. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/products/__init__.py +0 -0
  865. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/products/test_ambient_relative_humidity.py +0 -0
  866. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/products/test_arbitrary_moment.py +0 -0
  867. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/products/test_averaged_terminal_velocity.py +0 -0
  868. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/products/test_collision_rates.py +0 -0
  869. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/products/test_cooling_rate.py +0 -0
  870. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/products/test_effective_radii.py +0 -0
  871. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/products/test_impl.py +0 -0
  872. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/products/test_parcel_liquid_water_path.py +0 -0
  873. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/products/test_particle_size_product.py +0 -0
  874. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/products/test_particle_size_spectrum.py +0 -0
  875. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/test_builder.py +0 -0
  876. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/test_formulae.py +0 -0
  877. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/test_imports.py +0 -0
  878. {PySDM-2.80 → pysdm-2.81}/tests/unit_tests/test_particulator.py +0 -0
  879. {PySDM-2.80 → pysdm-2.81}/tutorials/README.md +0 -0
  880. {PySDM-2.80 → pysdm-2.81}/tutorials/collisions/collection_droplet.svg +0 -0
  881. {PySDM-2.80 → pysdm-2.81}/tutorials/collisions/collisions_playground.ipynb +0 -0
  882. {PySDM-2.80 → pysdm-2.81}/tutorials/condensation/condensation_playground.ipynb +0 -0
  883. {PySDM-2.80 → pysdm-2.81}/tutorials/condensation/kohler_curve.svg +0 -0
@@ -67,7 +67,7 @@ jobs:
67
67
  persist-credentials: false
68
68
  - uses: actions/setup-python@v5.0.0
69
69
  with:
70
- python-version: 3.9
70
+ python-version: "3.12"
71
71
  - run: |
72
72
  pip install pdoc nbformat
73
73
  pip install -e .
@@ -131,7 +131,7 @@ jobs:
131
131
  strategy:
132
132
  matrix:
133
133
  platform: [ubuntu-latest, macos-13, macos-14, windows-latest]
134
- python-version: ["3.9", "3.11"]
134
+ python-version: ["3.9", "3.12"]
135
135
  test-suite: ["unit_tests/!(dynamics)", "unit_tests/dynamics/!(condensation)", "unit_tests/dynamics/condensation", "smoke_tests/no_env", "smoke_tests/box", "smoke_tests/parcel_a", "smoke_tests/parcel_b", "smoke_tests/parcel_c", "smoke_tests/kinematic_1d", "smoke_tests/kinematic_2d", "tutorials_tests"]
136
136
  exclude:
137
137
  - platform: "macos-14"
@@ -197,7 +197,7 @@ jobs:
197
197
  strategy:
198
198
  matrix:
199
199
  platform: [ubuntu-24.04, macos-13, windows-latest]
200
- python-version: ["3.9", "3.11"]
200
+ python-version: ["3.9", "3.12"]
201
201
  runs-on: ${{ matrix.platform }}
202
202
  steps:
203
203
  - uses: actions/checkout@v4.1.6
@@ -233,7 +233,7 @@ jobs:
233
233
  strategy:
234
234
  matrix:
235
235
  platform: [ubuntu-24.04, macos-13, windows-latest]
236
- python-version: ["3.9", "3.11"]
236
+ python-version: ["3.9", "3.12"]
237
237
  test-suite: [ "chemistry_freezing_isotopes", "condensation_a", "condensation_b", "coagulation", "breakup", "multi-process_a", "multi-process_b"]
238
238
  fail-fast: false
239
239
  runs-on: ${{ matrix.platform }}
@@ -318,7 +318,7 @@ jobs:
318
318
  fetch-depth: 0 # https://github.com/pypa/setuptools_scm/issues/480
319
319
  - uses: actions/setup-python@v5.0.0
320
320
  with:
321
- python-version: "3.11"
321
+ python-version: "3.12"
322
322
 
323
323
  - run: pip install twine build
324
324
 
@@ -326,7 +326,11 @@ jobs:
326
326
  unset CI
327
327
  cd ${{ matrix.packages-dir }}
328
328
  python -m build 2>&1 | tee build.log
329
- exit `fgrep -i warning build.log | grep -v impl_numba/warnings.py | grep -v "no previously-included files matching" | wc -l`
329
+ exit `fgrep -i warning build.log | grep -v impl_numba/warnings.py \
330
+ | grep -v "no previously-included files matching" \
331
+ | grep -v "version of {dist_name} already set" \
332
+ | grep -v -E "UserWarning: version of PySDM(-examples)? already set" \
333
+ | wc -l`
330
334
  twine check --strict dist/*
331
335
 
332
336
  - uses: actions/upload-artifact@v4
@@ -338,7 +342,7 @@ jobs:
338
342
  strategy:
339
343
  matrix:
340
344
  platform: [ubuntu-latest, macos-13, macos-14, windows-latest]
341
- python-version: ["3.9", "3.11"]
345
+ python-version: ["3.9", "3.12"]
342
346
  exclude:
343
347
  - platform: macos-14
344
348
  python-version: "3.9"
pysdm-2.81/PKG-INFO ADDED
@@ -0,0 +1,209 @@
1
+ Metadata-Version: 2.1
2
+ Name: PySDM
3
+ Version: 2.81
4
+ Summary: Pythonic particle-based (super-droplet) warm-rain/aqueous-chemistry cloud microphysics package with box, parcel & 1D/2D prescribed-flow examples in Python, Julia and Matlab
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
11
+ Project-URL: Source, https://github.com/open-atmos/PySDM
12
+ Keywords: physics-simulation,monte-carlo-simulation,gpu-computing,atmospheric-modelling,particle-system,numba,thrust,nvrtc,pint,atmospheric-physics
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Topic :: Scientific/Engineering
19
+ Classifier: Topic :: Scientific/Engineering :: Atmospheric Science
20
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
21
+ Classifier: Topic :: Scientific/Engineering :: Physics
22
+ Classifier: Topic :: Software Development :: Libraries
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Requires-Dist: ThrustRTC==0.3.20
26
+ Requires-Dist: CURandRTC>=0.1.2
27
+ Requires-Dist: numba>=0.51.2
28
+ Requires-Dist: numpy
29
+ Requires-Dist: Pint
30
+ Requires-Dist: chempy
31
+ Requires-Dist: scipy
32
+ Requires-Dist: pyevtk
33
+ Requires-Dist: flexparser<0.4
34
+ Provides-Extra: tests
35
+ Requires-Dist: matplotlib; extra == "tests"
36
+ Requires-Dist: pytest; extra == "tests"
37
+ Requires-Dist: pytest-timeout; extra == "tests"
38
+ Requires-Dist: pyrcel; extra == "tests"
39
+ Requires-Dist: jupyter-core<5.0.0; extra == "tests"
40
+ Requires-Dist: ipywidgets!=8.0.3; extra == "tests"
41
+
42
+ # <img src="https://raw.githubusercontent.com/open-atmos/PySDM/main/.github/pysdm_logo.png" width=100 height=146 alt="pysdm logo">
43
+
44
+ [![Python 3](https://img.shields.io/static/v1?label=Python&logo=Python&color=3776AB&message=3)](https://www.python.org/)
45
+ [![LLVM](https://img.shields.io/static/v1?label=LLVM&logo=LLVM&color=gold&message=Numba)](https://numba.pydata.org)
46
+ [![CUDA](https://img.shields.io/static/v1?label=CUDA&logo=nVidia&color=87ce3e&message=ThrustRTC)](https://pypi.org/project/ThrustRTC/)
47
+ [![Linux OK](https://img.shields.io/static/v1?label=Linux&logo=Linux&color=yellow&message=%E2%9C%93)](https://en.wikipedia.org/wiki/Linux)
48
+ [![macOS OK](https://img.shields.io/static/v1?label=macOS&logo=Apple&color=silver&message=%E2%9C%93)](https://en.wikipedia.org/wiki/macOS)
49
+ [![Windows OK](https://img.shields.io/static/v1?label=Windows&logo=Windows&color=white&message=%E2%9C%93)](https://en.wikipedia.org/wiki/Windows)
50
+ [![Jupyter](https://img.shields.io/static/v1?label=Jupyter&logo=Jupyter&color=f37626&message=%E2%9C%93)](https://jupyter.org/)
51
+ [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/open-atmos/PySDM/graphs/commit-activity)
52
+ [![OpenHub](https://www.openhub.net/p/atmos-cloud-sim-uj-PySDM/widgets/project_thin_badge?format=gif)](https://www.openhub.net/p/atmos-cloud-sim-uj-PySDM)
53
+ [![status](https://joss.theoj.org/papers/62cad07440b941f73f57d187df1aa6e9/status.svg)](https://joss.theoj.org/papers/62cad07440b941f73f57d187df1aa6e9)
54
+ [![DOI](https://zenodo.org/badge/199064632.svg)](https://zenodo.org/badge/latestdoi/199064632)
55
+ [![EU Funding](https://img.shields.io/static/v1?label=EU%20Funding%20by&color=103069&message=FNP&logoWidth=25&logo=image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAeCAYAAABTwyyaAAAEzklEQVRYw9WYS2yUVRiGn3P5ZzozpZ3aUsrNgoKlKBINmkhpCCwwxIAhsDCpBBIWhmCMMYTEhSJ4i9EgBnSBEm81MRrFBhNXEuUSMCopiRWLQqEGLNgr085M5//POS46NNYFzHQ6qGc1i5nzP/P973m/9ztCrf7A8T9csiibCocUbvTzfxLcAcaM3cY3imXz25lT3Y34G7gQYAKV3+bFAHcATlBTPogJNADG92iY28FHW97kyPbnuW/W7xgzAhukQ9xe04PJeOT0HkQRwK0TlEeGWb/kOO9v3kdD3a8YK9GhDMfa6mg9fxunOm/lWPtcpDI4K7n/jnN8+uQbrFrUSiwU/DtSEUB/MsKKBT+zYslJqiYNgVE4JwhHkzy86wlWvrKVWDSZ/YFjZlU39yw4y/rGoyQGowWB67zl4QQue+jssMdXrQvZ/00jyeHwqCgDKwnsiJjSvkYAxsG5K9WsenYbJdqAtAjhCIxCSZt/4fK1w5A2WCvxrUAKCHwNVoA2aGmvq11jJQQapEXrgMBKqmJJugejKGWLIxXrBPFoigfv/omd675gRkU/xgqUDlAhH3UDaAAlLSqUQekAYyVTyhLs3tDMsvntlIYzOFcEcOcEGd9jx9oDbGs6QO0t/Tijxi9S4bhzxiWaVh5m94Zm0n7oui4ybo0raUlcncQnxx+g+WgDF/vLoYDmoqSl/dJUnt7XRCoTZjij0Z6Pc2LiNS4EBBkNvoeOJXN+yPWWSZeANOhwJq/98nKVwNdoL8B5AROxBKBL0gjh8DMhdCh3eJnrA0yqhLpplwmyup6IajvAOIGfKGVx3VmCRGnOMpe5QAdG0bT8CAeeep0d6z6nqjSJnQiZWEllLMWrmz6k+fE9rGk8MVqYgsGv5ZH2i1Opr+9kajzB5d74hKQ+KS3d/WVMLhtgdu1lriRiOR/4nDVunaR24x7qp3UV5Cb/fJvC83nv26W81LIK58SYNFmwq4hsGx/5BwKlzYRma2NUthgOJSew4i7ru9nJYCQF5tApb2yvjiDQKJV/IfJKh0o6qssSLKv/jcAoRKHQQzE2Lj2OMV5OkWFc4MZIpsev8uXWXRx6ZicbGk8QZLxxgwe+x/rlR3h3816+f2E7lbEU+ZDn3vKVpePCdFovzCISHqbl5EIoQOteKMPB1rto65zNyfOz+KOrGl06lHPQyi/WOohH0/T0l1MZH6A3GUEKl7Pmr2la6wBrBWWRDP2DUcqjKVKBGom9RZmABAykwnglafpSJSPQvsfiOR0EQ7ExVmazA8cY6N4K1iw6RdAXRwi4mgrheT5Dvs4LeuS81a15Ll/3dQisFVSVpnj7sf1sX/sZvhAc+6UOrQyBVUQ8gx/orFmDsZqtaw/y1qZ9zKjp5vDpenyjcNe+cLNmTiUdf/bEOddVQ0VpgsOn54ET+EYxvWKALSu+5tGG76it7MNaiZKGQ23zCIcMfUMxBnrjN3fmHHvCAlp+vJcXWx6itqoXpAEnUNLx8iMfo5Xh1i17R3PJYCpC2cZ3qK3sQ8WGEDDuXlAQuFKGHzpmopXhTNfk0bmxs7uC1w6uJul79AxFkMIiBJy5UoUWjrZLU5DCFdTARDHuDqVw+OkSwI0MCEW4gtNF2BPrBCo8fKNbtILWX9aUDqFqHnn7AAAAAElFTkSuQmCC)](https://www.fnp.org.pl/en/)
56
+ [![PL Funding](https://img.shields.io/static/v1?label=PL%20Funding%20by&color=d21132&message=NCN&logoWidth=25&logo=image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAABmJLR0QA/wD/AP+gvaeTAAAAKUlEQVQ4jWP8////fwYqAiZqGjZqIHUAy4dJS6lqIOMdEZvRZDPcDQQAb3cIaY1Sbi4AAAAASUVORK5CYII=)](https://www.ncn.gov.pl/?language=en)
57
+ [![US Funding](https://img.shields.io/static/v1?label=US%20DOE%20Funding%20by&color=267c32&message=ASR&logoWidth=25&logo=image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAQCAMAAAA25D/gAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAASFBMVEVOTXyyIjRDQnNZWINZWITtzdFUU4BVVIFVVYHWiZM9PG/KZnNXVoJaWYT67/FKSXhgX4hgX4lcW4VbWoX03uHQeIN2VXj///9pZChlAAAAAWJLR0QXC9aYjwAAAAd0SU1FB+EICRMGJV+KCCQAAABdSURBVBjThdBJDoAgEETRkkkZBBX0/kd11QTTpH1/STqpAAwWBkobSlkGbt0o5xmEfqxDZJB2Q6XMoBwnVSbTylWp0hi42rmbwTOYPDfR5Kc+07IIUQQvghX9THsBHcES8/SiF0kAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTctMDgtMDlUMTk6MDY6MzcrMDA6MDCX1tBgAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE3LTA4LTA5VDE5OjA2OjM3KzAwOjAw5oto3AAAAABJRU5ErkJggg==)](https://asr.science.energy.gov/)
58
+
59
+ [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0.html)
60
+
61
+ [![Github Actions Build Status](https://github.com/open-atmos/PySDM/workflows/tests+artifacts+pypi/badge.svg?branch=main)](https://github.com/open-atmos/PySDM/actions)
62
+ [![Appveyor Build status](http://ci.appveyor.com/api/projects/status/github/open-atmos/PySDM?branch=main&svg=true)](https://ci.appveyor.com/project/slayoo/pysdm/branch/main)
63
+ [![Coverage Status](https://codecov.io/gh/open-atmos/PySDM/branch/main/graph/badge.svg)](https://app.codecov.io/gh/open-atmos/PySDM)
64
+ [![PyPI version](https://badge.fury.io/py/PySDM.svg)](https://pypi.org/project/PySDM)
65
+ [![API docs](https://shields.mitmproxy.org/badge/docs-pdoc.dev-brightgreen.svg)](https://open-atmos.github.io/PySDM/)
66
+
67
+ PySDM is a package for simulating the dynamics of population of particles.
68
+ It is intended to serve as a building block for simulation systems modelling
69
+ fluid flows involving a dispersed phase,
70
+ with PySDM being responsible for representation of the dispersed phase.
71
+ Currently, the development is focused on atmospheric cloud physics
72
+ applications, in particular on modelling the dynamics of particles immersed in moist air
73
+ using the particle-based (a.k.a. super-droplet) approach
74
+ to represent aerosol/cloud/rain microphysics.
75
+ The package features a Pythonic high-performance implementation of the
76
+ Super-Droplet Method (SDM) Monte-Carlo algorithm for representing collisional growth
77
+ ([Shima et al. 2009](https://rmets.onlinelibrary.wiley.com/doi/abs/10.1002/qj.441)), hence the name.
78
+
79
+ There is a growing set of example Jupyter notebooks exemplifying how to perform
80
+ various types of calculations and simulations using PySDM.
81
+ Most of the example notebooks reproduce results and plot from literature, see below for
82
+ a list of examples and links to the notebooks (which can be either executed or viewed
83
+ "in the cloud").
84
+
85
+ There are also a growing set of [tutorials](https://github.com/open-atmos/PySDM/tree/main/tutorials), also in the form of Jupyter notebooks.
86
+ These tutorials are intended for teaching purposes and include short explanations of cloud microphysical
87
+ concepts paired with widgets for running interactive simulations using PySDM.
88
+ Each tutorial also comes with a set of questions at the end that can be used as homework problems.
89
+ Like the examples, these tutorials can be executed or viewed "in the cloud" making it an especially
90
+ easy way for students to get started.
91
+
92
+ PySDM has two alternative parallel number-crunching backends
93
+ available: multi-threaded CPU backend based on [Numba](http://numba.pydata.org/)
94
+ and GPU-resident backend built on top of [ThrustRTC](https://pypi.org/project/ThrustRTC/).
95
+ The [`Numba`](https://open-atmos.github.io/PySDM/PySDM/backends/numba.html) backend (aliased ``CPU``) features multi-threaded parallelism for
96
+ multi-core CPUs, it uses the just-in-time compilation technique based on the LLVM infrastructure.
97
+ The [`ThrustRTC`](https://open-atmos.github.io/PySDM/PySDM/backends/thrust_rtc.html) backend (aliased ``GPU``) offers GPU-resident operation of PySDM
98
+ leveraging the [SIMT](https://en.wikipedia.org/wiki/Single_instruction,_multiple_threads)
99
+ parallelisation model.
100
+ Using the ``GPU`` backend requires nVidia hardware and [CUDA driver](https://developer.nvidia.com/cuda-downloads).
101
+
102
+ For an overview of PySDM features (and the preferred way to cite PySDM in papers), please refer to our JOSS papers:
103
+ - [Bartman et al. 2022](https://doi.org/10.21105/joss.03219) (PySDM v1).
104
+ - [de Jong, Singer et al. 2023](https://doi.org/10.21105/joss.04968) (PySDM v2).
105
+
106
+ PySDM includes an extension of the SDM scheme to represent collisional breakup described in [de Jong, Mackay et al. 2023](10.5194/gmd-16-4193-2023).
107
+ For a list of talks and other materials on PySDM as well as a list of published papers featuring PySDM simulations, see the [project wiki](https://github.com/open-atmos/PySDM/wiki).
108
+
109
+ A [pdoc-generated](https://pdoc.dev/) documentation of PySDM public API is maintained at: [https://open-atmos.github.io/PySDM](https://open-atmos.github.io/PySDM)
110
+
111
+ ## Example Jupyter notebooks (reproducing results from literature):
112
+
113
+ See [PySDM-examples README](https://github.com/open-atmos/PySDM/blob/main/examples/README.md).
114
+
115
+ ![animation](https://github.com/open-atmos/PySDM/wiki/files/kinematic_2D_example.gif)
116
+
117
+ ## Dependencies and Installation
118
+
119
+ PySDM dependencies are: [Numpy](https://numpy.org/), [Numba](http://numba.pydata.org/), [SciPy](https://scipy.org/),
120
+ [Pint](https://pint.readthedocs.io/), [chempy](https://pypi.org/project/chempy/),
121
+ [pyevtk](https://pypi.org/project/pyevtk/),
122
+ [ThrustRTC](https://fynv.github.io/ThrustRTC/) and [CURandRTC](https://github.com/fynv/CURandRTC).
123
+
124
+ To install PySDM using ``pip``, use: ``pip install PySDM``
125
+ (or ``pip install git+https://github.com/open-atmos/PySDM.git`` to get updates
126
+ beyond the latest release).
127
+
128
+ Conda users may use ``pip`` as well, see the [Installing non-conda packages](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-pkgs.html#installing-non-conda-packages) section in the conda docs. Dependencies of PySDM are available at the following conda channels:
129
+ - numba: [numba](https://anaconda.org/numba/numba)
130
+ - conda-forge: [pyevtk](https://anaconda.org/conda-forge/pyevtk), [pint](https://anaconda.org/conda-forge/pint) and []()
131
+ - fyplus: [ThrustRTC](https://anaconda.org/fyplus/thrustrtc), [CURandRTC](https://anaconda.org/fyplus/curandrtc)
132
+ - bjodah: [chempy](https://anaconda.org/bjodah/chempy)
133
+ - nvidia: [cudatoolkit](https://anaconda.org/nvidia/cudatoolkit)
134
+
135
+ For development purposes, we suggest cloning the repository and installing it using ``pip -e``.
136
+ Test-time dependencies can be installed with ``pip -e .[tests]``.
137
+
138
+ PySDM examples constitute the [``PySDM-examples``](https://github.com/open-atmos/PySDM-examples) package.
139
+ The examples have additional dependencies listed in [``PySDM_examples`` package ``setup.py``](https://github.com/open-atmos/PySDM/blob/main/examples/setup.py) file.
140
+ Running the example Jupyter notebooks requires the ``PySDM_examples`` package to be installed.
141
+ The suggested install and launch steps are:
142
+ ```
143
+ git clone https://github.com/open-atmos/PySDM.git
144
+ pip install -e PySDM
145
+ pip install -e PySDM/examples
146
+ jupyter-notebook PySDM/examples/PySDM_examples
147
+ ```
148
+ Alternatively, one can also install the examples package from pypi.org by
149
+ using ``pip install PySDM-examples`` (note that this does not apply to notebooks itself,
150
+ only the supporting .py files).
151
+
152
+ ## Contributing, reporting issues, seeking support
153
+
154
+ #### Our technologicial stack:
155
+ [![Python 3](https://img.shields.io/static/v1?label=+&logo=Python&color=darkred&message=Python)](https://www.python.org/)
156
+ [![Numba](https://img.shields.io/static/v1?label=+&logo=Numba&color=orange&message=Numba)](https://numba.pydata.org)
157
+ [![LLVM](https://img.shields.io/static/v1?label=+&logo=LLVM&color=gold&message=LLVM)](https://llvm.org)
158
+ [![CUDA](https://img.shields.io/static/v1?label=+&logo=nVidia&color=darkgreen&message=ThrustRTC/CUDA)](https://pypi.org/project/ThrustRTC/)
159
+ [![NumPy](https://img.shields.io/static/v1?label=+&logo=numpy&color=blue&message=NumPy)](https://numpy.org/)
160
+ [![pytest](https://img.shields.io/static/v1?label=+&logo=pytest&color=purple&message=pytest)](https://pytest.org/)
161
+ [![Colab](https://img.shields.io/static/v1?label=+&logo=googlecolab&color=darkred&message=Colab)](https://colab.research.google.com/)
162
+ [![Codecov](https://img.shields.io/static/v1?label=+&logo=codecov&color=orange&message=Codecov)](https://codecov.io/)
163
+ [![PyPI](https://img.shields.io/static/v1?label=+&logo=pypi&color=gold&message=PyPI)](https://pypi.org/)
164
+ [![GithubActions](https://img.shields.io/static/v1?label=+&logo=github&color=darkgreen&message=GitHub&nbsp;Actions)](https://github.com/features/actions)
165
+ [![Jupyter](https://img.shields.io/static/v1?label=+&logo=Jupyter&color=blue&message=Jupyter)](https://jupyter.org/)
166
+ [![PyCharm](https://img.shields.io/static/v1?label=+&logo=pycharm&color=purple&message=PyCharm)](https:///)
167
+
168
+ Submitting new code to the project, please preferably use [GitHub pull requests](https://github.com/open-atmos/PySDM/pulls) - it helps to keep record of code authorship,
169
+ track and archive the code review workflow and allows to benefit
170
+ from the continuous integration setup which automates execution of tests
171
+ with the newly added code.
172
+
173
+ Code contributions are assumed to imply transfer of copyright.
174
+ Should there be a need to make an exception, please indicate it when creating
175
+ a pull request or contributing code in any other way. In any case,
176
+ the license of the contributed code must be compatible with GPL v3.
177
+
178
+ Developing the code, we follow [The Way of Python](https://www.python.org/dev/peps/pep-0020/) and
179
+ the [KISS principle](https://en.wikipedia.org/wiki/KISS_principle).
180
+ The codebase has greatly benefited from [PyCharm code inspections](https://www.jetbrains.com/help/pycharm/code-inspection.html)
181
+ and [Pylint](https://pylint.org), [Black](https://black.readthedocs.io/en/stable/) and [isort](https://pycqa.github.io/isort/)
182
+ code analysis (which are all part of the CI workflows).
183
+
184
+ We also use [pre-commit hooks](https://pre-commit.com).
185
+ In our case, the hooks modify files and re-format them.
186
+ The pre-commit hooks can be run locally, and then the resultant changes need to be staged before committing.
187
+ To set up the hooks locally, install pre-commit via `pip install pre-commit` and
188
+ set up the git hooks via `pre-commit install` (this needs to be done every time you clone the project).
189
+ To run all pre-commit hooks, run `pre-commit run --all-files`.
190
+ The `.pre-commit-config.yaml` file can be modified in case new hooks are to be added or
191
+ existing ones need to be altered.
192
+
193
+ Further hints addressed at PySDM developers are maintained in the [open-atmos/python-dev-hints Wiki](https://github.com/open-atmos/python-dev-hints/wiki).
194
+
195
+ Issues regarding any incorrect, unintuitive or undocumented bahaviour of
196
+ PySDM are best to be reported on the [GitHub issue tracker](https://github.com/open-atmos/PySDM/issues/new).
197
+ Feature requests are recorded in the "Ideas..." [PySDM wiki page](https://github.com/open-atmos/PySDM/wiki/Ideas-for-new-features-and-examples).
198
+
199
+ We encourage to use the [GitHub Discussions](https://github.com/open-atmos/PySDM/discussions) feature
200
+ (rather than the issue tracker) for seeking support in understanding, using and extending PySDM code.
201
+
202
+ We look forward to your contributions and feedback.
203
+
204
+ ## Licensing:
205
+
206
+ copyright: [Jagiellonian University](https://en.uj.edu.pl/en) (2019-2023) & [AGH University of Krakow](https://agh.edu.pl/en) (2023-...)
207
+ licence: [GPL v3](https://www.gnu.org/licenses/gpl-3.0.html)
208
+
209
+
@@ -0,0 +1,209 @@
1
+ Metadata-Version: 2.1
2
+ Name: PySDM
3
+ Version: 2.81
4
+ Summary: Pythonic particle-based (super-droplet) warm-rain/aqueous-chemistry cloud microphysics package with box, parcel & 1D/2D prescribed-flow examples in Python, Julia and Matlab
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
11
+ Project-URL: Source, https://github.com/open-atmos/PySDM
12
+ Keywords: physics-simulation,monte-carlo-simulation,gpu-computing,atmospheric-modelling,particle-system,numba,thrust,nvrtc,pint,atmospheric-physics
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Topic :: Scientific/Engineering
19
+ Classifier: Topic :: Scientific/Engineering :: Atmospheric Science
20
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
21
+ Classifier: Topic :: Scientific/Engineering :: Physics
22
+ Classifier: Topic :: Software Development :: Libraries
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Requires-Dist: ThrustRTC==0.3.20
26
+ Requires-Dist: CURandRTC>=0.1.2
27
+ Requires-Dist: numba>=0.51.2
28
+ Requires-Dist: numpy
29
+ Requires-Dist: Pint
30
+ Requires-Dist: chempy
31
+ Requires-Dist: scipy
32
+ Requires-Dist: pyevtk
33
+ Requires-Dist: flexparser<0.4
34
+ Provides-Extra: tests
35
+ Requires-Dist: matplotlib; extra == "tests"
36
+ Requires-Dist: pytest; extra == "tests"
37
+ Requires-Dist: pytest-timeout; extra == "tests"
38
+ Requires-Dist: pyrcel; extra == "tests"
39
+ Requires-Dist: jupyter-core<5.0.0; extra == "tests"
40
+ Requires-Dist: ipywidgets!=8.0.3; extra == "tests"
41
+
42
+ # <img src="https://raw.githubusercontent.com/open-atmos/PySDM/main/.github/pysdm_logo.png" width=100 height=146 alt="pysdm logo">
43
+
44
+ [![Python 3](https://img.shields.io/static/v1?label=Python&logo=Python&color=3776AB&message=3)](https://www.python.org/)
45
+ [![LLVM](https://img.shields.io/static/v1?label=LLVM&logo=LLVM&color=gold&message=Numba)](https://numba.pydata.org)
46
+ [![CUDA](https://img.shields.io/static/v1?label=CUDA&logo=nVidia&color=87ce3e&message=ThrustRTC)](https://pypi.org/project/ThrustRTC/)
47
+ [![Linux OK](https://img.shields.io/static/v1?label=Linux&logo=Linux&color=yellow&message=%E2%9C%93)](https://en.wikipedia.org/wiki/Linux)
48
+ [![macOS OK](https://img.shields.io/static/v1?label=macOS&logo=Apple&color=silver&message=%E2%9C%93)](https://en.wikipedia.org/wiki/macOS)
49
+ [![Windows OK](https://img.shields.io/static/v1?label=Windows&logo=Windows&color=white&message=%E2%9C%93)](https://en.wikipedia.org/wiki/Windows)
50
+ [![Jupyter](https://img.shields.io/static/v1?label=Jupyter&logo=Jupyter&color=f37626&message=%E2%9C%93)](https://jupyter.org/)
51
+ [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/open-atmos/PySDM/graphs/commit-activity)
52
+ [![OpenHub](https://www.openhub.net/p/atmos-cloud-sim-uj-PySDM/widgets/project_thin_badge?format=gif)](https://www.openhub.net/p/atmos-cloud-sim-uj-PySDM)
53
+ [![status](https://joss.theoj.org/papers/62cad07440b941f73f57d187df1aa6e9/status.svg)](https://joss.theoj.org/papers/62cad07440b941f73f57d187df1aa6e9)
54
+ [![DOI](https://zenodo.org/badge/199064632.svg)](https://zenodo.org/badge/latestdoi/199064632)
55
+ [![EU Funding](https://img.shields.io/static/v1?label=EU%20Funding%20by&color=103069&message=FNP&logoWidth=25&logo=image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAeCAYAAABTwyyaAAAEzklEQVRYw9WYS2yUVRiGn3P5ZzozpZ3aUsrNgoKlKBINmkhpCCwwxIAhsDCpBBIWhmCMMYTEhSJ4i9EgBnSBEm81MRrFBhNXEuUSMCopiRWLQqEGLNgr085M5//POS46NNYFzHQ6qGc1i5nzP/P973m/9ztCrf7A8T9csiibCocUbvTzfxLcAcaM3cY3imXz25lT3Y34G7gQYAKV3+bFAHcATlBTPogJNADG92iY28FHW97kyPbnuW/W7xgzAhukQ9xe04PJeOT0HkQRwK0TlEeGWb/kOO9v3kdD3a8YK9GhDMfa6mg9fxunOm/lWPtcpDI4K7n/jnN8+uQbrFrUSiwU/DtSEUB/MsKKBT+zYslJqiYNgVE4JwhHkzy86wlWvrKVWDSZ/YFjZlU39yw4y/rGoyQGowWB67zl4QQue+jssMdXrQvZ/00jyeHwqCgDKwnsiJjSvkYAxsG5K9WsenYbJdqAtAjhCIxCSZt/4fK1w5A2WCvxrUAKCHwNVoA2aGmvq11jJQQapEXrgMBKqmJJugejKGWLIxXrBPFoigfv/omd675gRkU/xgqUDlAhH3UDaAAlLSqUQekAYyVTyhLs3tDMsvntlIYzOFcEcOcEGd9jx9oDbGs6QO0t/Tijxi9S4bhzxiWaVh5m94Zm0n7oui4ybo0raUlcncQnxx+g+WgDF/vLoYDmoqSl/dJUnt7XRCoTZjij0Z6Pc2LiNS4EBBkNvoeOJXN+yPWWSZeANOhwJq/98nKVwNdoL8B5AROxBKBL0gjh8DMhdCh3eJnrA0yqhLpplwmyup6IajvAOIGfKGVx3VmCRGnOMpe5QAdG0bT8CAeeep0d6z6nqjSJnQiZWEllLMWrmz6k+fE9rGk8MVqYgsGv5ZH2i1Opr+9kajzB5d74hKQ+KS3d/WVMLhtgdu1lriRiOR/4nDVunaR24x7qp3UV5Cb/fJvC83nv26W81LIK58SYNFmwq4hsGx/5BwKlzYRma2NUthgOJSew4i7ru9nJYCQF5tApb2yvjiDQKJV/IfJKh0o6qssSLKv/jcAoRKHQQzE2Lj2OMV5OkWFc4MZIpsev8uXWXRx6ZicbGk8QZLxxgwe+x/rlR3h3816+f2E7lbEU+ZDn3vKVpePCdFovzCISHqbl5EIoQOteKMPB1rto65zNyfOz+KOrGl06lHPQyi/WOohH0/T0l1MZH6A3GUEKl7Pmr2la6wBrBWWRDP2DUcqjKVKBGom9RZmABAykwnglafpSJSPQvsfiOR0EQ7ExVmazA8cY6N4K1iw6RdAXRwi4mgrheT5Dvs4LeuS81a15Ll/3dQisFVSVpnj7sf1sX/sZvhAc+6UOrQyBVUQ8gx/orFmDsZqtaw/y1qZ9zKjp5vDpenyjcNe+cLNmTiUdf/bEOddVQ0VpgsOn54ET+EYxvWKALSu+5tGG76it7MNaiZKGQ23zCIcMfUMxBnrjN3fmHHvCAlp+vJcXWx6itqoXpAEnUNLx8iMfo5Xh1i17R3PJYCpC2cZ3qK3sQ8WGEDDuXlAQuFKGHzpmopXhTNfk0bmxs7uC1w6uJul79AxFkMIiBJy5UoUWjrZLU5DCFdTARDHuDqVw+OkSwI0MCEW4gtNF2BPrBCo8fKNbtILWX9aUDqFqHnn7AAAAAElFTkSuQmCC)](https://www.fnp.org.pl/en/)
56
+ [![PL Funding](https://img.shields.io/static/v1?label=PL%20Funding%20by&color=d21132&message=NCN&logoWidth=25&logo=image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAABmJLR0QA/wD/AP+gvaeTAAAAKUlEQVQ4jWP8////fwYqAiZqGjZqIHUAy4dJS6lqIOMdEZvRZDPcDQQAb3cIaY1Sbi4AAAAASUVORK5CYII=)](https://www.ncn.gov.pl/?language=en)
57
+ [![US Funding](https://img.shields.io/static/v1?label=US%20DOE%20Funding%20by&color=267c32&message=ASR&logoWidth=25&logo=image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAQCAMAAAA25D/gAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAASFBMVEVOTXyyIjRDQnNZWINZWITtzdFUU4BVVIFVVYHWiZM9PG/KZnNXVoJaWYT67/FKSXhgX4hgX4lcW4VbWoX03uHQeIN2VXj///9pZChlAAAAAWJLR0QXC9aYjwAAAAd0SU1FB+EICRMGJV+KCCQAAABdSURBVBjThdBJDoAgEETRkkkZBBX0/kd11QTTpH1/STqpAAwWBkobSlkGbt0o5xmEfqxDZJB2Q6XMoBwnVSbTylWp0hi42rmbwTOYPDfR5Kc+07IIUQQvghX9THsBHcES8/SiF0kAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTctMDgtMDlUMTk6MDY6MzcrMDA6MDCX1tBgAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE3LTA4LTA5VDE5OjA2OjM3KzAwOjAw5oto3AAAAABJRU5ErkJggg==)](https://asr.science.energy.gov/)
58
+
59
+ [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0.html)
60
+
61
+ [![Github Actions Build Status](https://github.com/open-atmos/PySDM/workflows/tests+artifacts+pypi/badge.svg?branch=main)](https://github.com/open-atmos/PySDM/actions)
62
+ [![Appveyor Build status](http://ci.appveyor.com/api/projects/status/github/open-atmos/PySDM?branch=main&svg=true)](https://ci.appveyor.com/project/slayoo/pysdm/branch/main)
63
+ [![Coverage Status](https://codecov.io/gh/open-atmos/PySDM/branch/main/graph/badge.svg)](https://app.codecov.io/gh/open-atmos/PySDM)
64
+ [![PyPI version](https://badge.fury.io/py/PySDM.svg)](https://pypi.org/project/PySDM)
65
+ [![API docs](https://shields.mitmproxy.org/badge/docs-pdoc.dev-brightgreen.svg)](https://open-atmos.github.io/PySDM/)
66
+
67
+ PySDM is a package for simulating the dynamics of population of particles.
68
+ It is intended to serve as a building block for simulation systems modelling
69
+ fluid flows involving a dispersed phase,
70
+ with PySDM being responsible for representation of the dispersed phase.
71
+ Currently, the development is focused on atmospheric cloud physics
72
+ applications, in particular on modelling the dynamics of particles immersed in moist air
73
+ using the particle-based (a.k.a. super-droplet) approach
74
+ to represent aerosol/cloud/rain microphysics.
75
+ The package features a Pythonic high-performance implementation of the
76
+ Super-Droplet Method (SDM) Monte-Carlo algorithm for representing collisional growth
77
+ ([Shima et al. 2009](https://rmets.onlinelibrary.wiley.com/doi/abs/10.1002/qj.441)), hence the name.
78
+
79
+ There is a growing set of example Jupyter notebooks exemplifying how to perform
80
+ various types of calculations and simulations using PySDM.
81
+ Most of the example notebooks reproduce results and plot from literature, see below for
82
+ a list of examples and links to the notebooks (which can be either executed or viewed
83
+ "in the cloud").
84
+
85
+ There are also a growing set of [tutorials](https://github.com/open-atmos/PySDM/tree/main/tutorials), also in the form of Jupyter notebooks.
86
+ These tutorials are intended for teaching purposes and include short explanations of cloud microphysical
87
+ concepts paired with widgets for running interactive simulations using PySDM.
88
+ Each tutorial also comes with a set of questions at the end that can be used as homework problems.
89
+ Like the examples, these tutorials can be executed or viewed "in the cloud" making it an especially
90
+ easy way for students to get started.
91
+
92
+ PySDM has two alternative parallel number-crunching backends
93
+ available: multi-threaded CPU backend based on [Numba](http://numba.pydata.org/)
94
+ and GPU-resident backend built on top of [ThrustRTC](https://pypi.org/project/ThrustRTC/).
95
+ The [`Numba`](https://open-atmos.github.io/PySDM/PySDM/backends/numba.html) backend (aliased ``CPU``) features multi-threaded parallelism for
96
+ multi-core CPUs, it uses the just-in-time compilation technique based on the LLVM infrastructure.
97
+ The [`ThrustRTC`](https://open-atmos.github.io/PySDM/PySDM/backends/thrust_rtc.html) backend (aliased ``GPU``) offers GPU-resident operation of PySDM
98
+ leveraging the [SIMT](https://en.wikipedia.org/wiki/Single_instruction,_multiple_threads)
99
+ parallelisation model.
100
+ Using the ``GPU`` backend requires nVidia hardware and [CUDA driver](https://developer.nvidia.com/cuda-downloads).
101
+
102
+ For an overview of PySDM features (and the preferred way to cite PySDM in papers), please refer to our JOSS papers:
103
+ - [Bartman et al. 2022](https://doi.org/10.21105/joss.03219) (PySDM v1).
104
+ - [de Jong, Singer et al. 2023](https://doi.org/10.21105/joss.04968) (PySDM v2).
105
+
106
+ PySDM includes an extension of the SDM scheme to represent collisional breakup described in [de Jong, Mackay et al. 2023](10.5194/gmd-16-4193-2023).
107
+ For a list of talks and other materials on PySDM as well as a list of published papers featuring PySDM simulations, see the [project wiki](https://github.com/open-atmos/PySDM/wiki).
108
+
109
+ A [pdoc-generated](https://pdoc.dev/) documentation of PySDM public API is maintained at: [https://open-atmos.github.io/PySDM](https://open-atmos.github.io/PySDM)
110
+
111
+ ## Example Jupyter notebooks (reproducing results from literature):
112
+
113
+ See [PySDM-examples README](https://github.com/open-atmos/PySDM/blob/main/examples/README.md).
114
+
115
+ ![animation](https://github.com/open-atmos/PySDM/wiki/files/kinematic_2D_example.gif)
116
+
117
+ ## Dependencies and Installation
118
+
119
+ PySDM dependencies are: [Numpy](https://numpy.org/), [Numba](http://numba.pydata.org/), [SciPy](https://scipy.org/),
120
+ [Pint](https://pint.readthedocs.io/), [chempy](https://pypi.org/project/chempy/),
121
+ [pyevtk](https://pypi.org/project/pyevtk/),
122
+ [ThrustRTC](https://fynv.github.io/ThrustRTC/) and [CURandRTC](https://github.com/fynv/CURandRTC).
123
+
124
+ To install PySDM using ``pip``, use: ``pip install PySDM``
125
+ (or ``pip install git+https://github.com/open-atmos/PySDM.git`` to get updates
126
+ beyond the latest release).
127
+
128
+ Conda users may use ``pip`` as well, see the [Installing non-conda packages](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-pkgs.html#installing-non-conda-packages) section in the conda docs. Dependencies of PySDM are available at the following conda channels:
129
+ - numba: [numba](https://anaconda.org/numba/numba)
130
+ - conda-forge: [pyevtk](https://anaconda.org/conda-forge/pyevtk), [pint](https://anaconda.org/conda-forge/pint) and []()
131
+ - fyplus: [ThrustRTC](https://anaconda.org/fyplus/thrustrtc), [CURandRTC](https://anaconda.org/fyplus/curandrtc)
132
+ - bjodah: [chempy](https://anaconda.org/bjodah/chempy)
133
+ - nvidia: [cudatoolkit](https://anaconda.org/nvidia/cudatoolkit)
134
+
135
+ For development purposes, we suggest cloning the repository and installing it using ``pip -e``.
136
+ Test-time dependencies can be installed with ``pip -e .[tests]``.
137
+
138
+ PySDM examples constitute the [``PySDM-examples``](https://github.com/open-atmos/PySDM-examples) package.
139
+ The examples have additional dependencies listed in [``PySDM_examples`` package ``setup.py``](https://github.com/open-atmos/PySDM/blob/main/examples/setup.py) file.
140
+ Running the example Jupyter notebooks requires the ``PySDM_examples`` package to be installed.
141
+ The suggested install and launch steps are:
142
+ ```
143
+ git clone https://github.com/open-atmos/PySDM.git
144
+ pip install -e PySDM
145
+ pip install -e PySDM/examples
146
+ jupyter-notebook PySDM/examples/PySDM_examples
147
+ ```
148
+ Alternatively, one can also install the examples package from pypi.org by
149
+ using ``pip install PySDM-examples`` (note that this does not apply to notebooks itself,
150
+ only the supporting .py files).
151
+
152
+ ## Contributing, reporting issues, seeking support
153
+
154
+ #### Our technologicial stack:
155
+ [![Python 3](https://img.shields.io/static/v1?label=+&logo=Python&color=darkred&message=Python)](https://www.python.org/)
156
+ [![Numba](https://img.shields.io/static/v1?label=+&logo=Numba&color=orange&message=Numba)](https://numba.pydata.org)
157
+ [![LLVM](https://img.shields.io/static/v1?label=+&logo=LLVM&color=gold&message=LLVM)](https://llvm.org)
158
+ [![CUDA](https://img.shields.io/static/v1?label=+&logo=nVidia&color=darkgreen&message=ThrustRTC/CUDA)](https://pypi.org/project/ThrustRTC/)
159
+ [![NumPy](https://img.shields.io/static/v1?label=+&logo=numpy&color=blue&message=NumPy)](https://numpy.org/)
160
+ [![pytest](https://img.shields.io/static/v1?label=+&logo=pytest&color=purple&message=pytest)](https://pytest.org/)
161
+ [![Colab](https://img.shields.io/static/v1?label=+&logo=googlecolab&color=darkred&message=Colab)](https://colab.research.google.com/)
162
+ [![Codecov](https://img.shields.io/static/v1?label=+&logo=codecov&color=orange&message=Codecov)](https://codecov.io/)
163
+ [![PyPI](https://img.shields.io/static/v1?label=+&logo=pypi&color=gold&message=PyPI)](https://pypi.org/)
164
+ [![GithubActions](https://img.shields.io/static/v1?label=+&logo=github&color=darkgreen&message=GitHub&nbsp;Actions)](https://github.com/features/actions)
165
+ [![Jupyter](https://img.shields.io/static/v1?label=+&logo=Jupyter&color=blue&message=Jupyter)](https://jupyter.org/)
166
+ [![PyCharm](https://img.shields.io/static/v1?label=+&logo=pycharm&color=purple&message=PyCharm)](https:///)
167
+
168
+ Submitting new code to the project, please preferably use [GitHub pull requests](https://github.com/open-atmos/PySDM/pulls) - it helps to keep record of code authorship,
169
+ track and archive the code review workflow and allows to benefit
170
+ from the continuous integration setup which automates execution of tests
171
+ with the newly added code.
172
+
173
+ Code contributions are assumed to imply transfer of copyright.
174
+ Should there be a need to make an exception, please indicate it when creating
175
+ a pull request or contributing code in any other way. In any case,
176
+ the license of the contributed code must be compatible with GPL v3.
177
+
178
+ Developing the code, we follow [The Way of Python](https://www.python.org/dev/peps/pep-0020/) and
179
+ the [KISS principle](https://en.wikipedia.org/wiki/KISS_principle).
180
+ The codebase has greatly benefited from [PyCharm code inspections](https://www.jetbrains.com/help/pycharm/code-inspection.html)
181
+ and [Pylint](https://pylint.org), [Black](https://black.readthedocs.io/en/stable/) and [isort](https://pycqa.github.io/isort/)
182
+ code analysis (which are all part of the CI workflows).
183
+
184
+ We also use [pre-commit hooks](https://pre-commit.com).
185
+ In our case, the hooks modify files and re-format them.
186
+ The pre-commit hooks can be run locally, and then the resultant changes need to be staged before committing.
187
+ To set up the hooks locally, install pre-commit via `pip install pre-commit` and
188
+ set up the git hooks via `pre-commit install` (this needs to be done every time you clone the project).
189
+ To run all pre-commit hooks, run `pre-commit run --all-files`.
190
+ The `.pre-commit-config.yaml` file can be modified in case new hooks are to be added or
191
+ existing ones need to be altered.
192
+
193
+ Further hints addressed at PySDM developers are maintained in the [open-atmos/python-dev-hints Wiki](https://github.com/open-atmos/python-dev-hints/wiki).
194
+
195
+ Issues regarding any incorrect, unintuitive or undocumented bahaviour of
196
+ PySDM are best to be reported on the [GitHub issue tracker](https://github.com/open-atmos/PySDM/issues/new).
197
+ Feature requests are recorded in the "Ideas..." [PySDM wiki page](https://github.com/open-atmos/PySDM/wiki/Ideas-for-new-features-and-examples).
198
+
199
+ We encourage to use the [GitHub Discussions](https://github.com/open-atmos/PySDM/discussions) feature
200
+ (rather than the issue tracker) for seeking support in understanding, using and extending PySDM code.
201
+
202
+ We look forward to your contributions and feedback.
203
+
204
+ ## Licensing:
205
+
206
+ copyright: [Jagiellonian University](https://en.uj.edu.pl/en) (2019-2023) & [AGH University of Krakow](https://agh.edu.pl/en) (2023-...)
207
+ licence: [GPL v3](https://www.gnu.org/licenses/gpl-3.0.html)
208
+
209
+
@@ -12,7 +12,6 @@ flexparser<0.4
12
12
  matplotlib
13
13
  pytest
14
14
  pytest-timeout
15
- PyPartMC==1.3.6
16
15
  pyrcel
17
16
  jupyter-core<5.0.0
18
17
  ipywidgets!=8.0.3
@@ -114,7 +114,7 @@ class Simulation(BasicSimulation):
114
114
  key="S_VI",
115
115
  dry_radius_bins_edges=settings.dry_radius_bins_edges,
116
116
  name="dm_S_VI/dlog_10(dry diameter)",
117
- unit='ug / m^3"',
117
+ unit="ug / m^3",
118
118
  ),
119
119
  )
120
120
 
@@ -70,7 +70,7 @@ class Simulation:
70
70
  if step != 0:
71
71
  particulator.run(steps=1)
72
72
  for prod in self.settings.prods:
73
- self.simulation_res[n_sd][prod][seed][step] = (
73
+ (self.simulation_res[n_sd][prod][seed][step],) = (
74
74
  particulator.products[prod].get()
75
75
  )
76
76
 
@@ -48,9 +48,9 @@ def run_box(settings, backend_class=CPU):
48
48
  for i, step in enumerate(settings.steps):
49
49
  particulator.run(step - particulator.n_steps)
50
50
  y[i] = particulator.products["dv/dlnr"].get()[0]
51
- mom[i, 0] = particulator.products["M0"].get()
52
- mom[i, 1] = particulator.products["M1"].get()
53
- mom[i, 2] = particulator.products["M2"].get()
51
+ (mom[i, 0],) = particulator.products["M0"].get()
52
+ (mom[i, 1],) = particulator.products["M1"].get()
53
+ (mom[i, 2],) = particulator.products["M2"].get()
54
54
 
55
55
  return namedtuple("_", ("radius_bins_left_edges", "dv_dlnr", "moments"))(
56
56
  radius_bins_left_edges=settings.radius_bins_edges[:-1], dv_dlnr=y, moments=mom
@@ -79,11 +79,11 @@ def run_box_breakup(
79
79
  core.run(step - core.n_steps)
80
80
  y[i] = core.products["dv/dlnr"].get()[0]
81
81
  if return_nv:
82
- y2[i] = core.products["N(v)"].get()[0]
83
- rates[i, 0] = core.products["cr"].get()
84
- rates[i, 1] = core.products["crd"].get()
85
- rates[i, 2] = core.products["cor"].get()
86
- rates[i, 3] = core.products["br"].get()
82
+ (y2[i],) = core.products["N(v)"].get()
83
+ (rates[i, 0],) = core.products["cr"].get()
84
+ (rates[i, 1],) = core.products["crd"].get()
85
+ (rates[i, 2],) = core.products["cor"].get()
86
+ (rates[i, 3],) = core.products["br"].get()
87
87
 
88
88
  x = (settings.radius_bins_edges[:-1] / si.micrometres,)[0]
89
89
 
@@ -124,10 +124,10 @@ def run_box_NObreakup(settings, steps=None, backend_class=CPU):
124
124
  # run
125
125
  for i, step in enumerate(steps):
126
126
  core.run(step - core.n_steps)
127
- y[i] = core.products["dv/dlnr"].get()[0]
128
- rates[i, 0] = core.products["cr"].get()
129
- rates[i, 1] = core.products["crd"].get()
130
- rates[i, 2] = core.products["cor"].get()
127
+ (y[i],) = core.products["dv/dlnr"].get()
128
+ (rates[i, 0],) = core.products["cr"].get()
129
+ (rates[i, 1],) = core.products["crd"].get()
130
+ (rates[i, 2],) = core.products["cor"].get()
131
131
 
132
132
  x = (settings.radius_bins_edges[:-1] / si.micrometres,)[0]
133
133
 
@@ -90,7 +90,10 @@ class Simulation:
90
90
  data[data == 0] = np.nan
91
91
  attr.append(data)
92
92
  for key, prod in output["products"].items():
93
- prod.append(float(self.particulator.products[key].get()))
93
+ value = self.particulator.products[key].get()
94
+ if not isinstance(value, float):
95
+ (value,) = value
96
+ prod.append(float(value))
94
97
  for out in ("attributes", "products"):
95
98
  for key, val in output[out].items():
96
99
  output[out][key] = np.array(val)
@@ -0,0 +1,5 @@
1
+ [tool.setuptools_scm]
2
+ root = ".."
3
+
4
+ [build-system]
5
+ requires = ['setuptools==75.3.0', 'setuptools-scm==8.1.0']
@@ -26,7 +26,6 @@ setup(
26
26
  use_scm_version={
27
27
  "local_scheme": lambda _: "",
28
28
  "version_scheme": "post-release",
29
- "root": "..",
30
29
  },
31
30
  install_requires=[
32
31
  "PySDM",
@@ -0,0 +1,7 @@
1
+ [tool.isort]
2
+ profile = "black"
3
+
4
+ [tool.setuptools_scm]
5
+
6
+ [build-system]
7
+ requires = ['setuptools==75.3.0', 'setuptools-scm==8.1.0']
@@ -79,8 +79,8 @@ setup(
79
79
  "matplotlib",
80
80
  "pytest",
81
81
  "pytest-timeout",
82
- "PyPartMC==1.3.6",
83
82
  ]
83
+ + (["PyPartMC==1.3.6"] if sys.version_info < (3, 12) else []) # TODO #1410
84
84
  + (
85
85
  [
86
86
  "pywinpty" + ("==0.5.7" if CI else ""),