PySDM 2.70__tar.gz → 2.72__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 (861) hide show
  1. {PySDM-2.70 → PySDM-2.72}/.github/workflows/tests+artifacts+pypi.yml +2 -3
  2. {PySDM-2.70 → PySDM-2.72}/PKG-INFO +23 -23
  3. {PySDM-2.70 → PySDM-2.72}/PySDM/builder.py +2 -2
  4. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/ambient_thermodynamics.py +3 -0
  5. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/aqueous_chemistry.py +2 -0
  6. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/collision.py +4 -0
  7. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/condensation.py +3 -1
  8. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/displacement.py +3 -0
  9. PySDM-2.72/PySDM/dynamics/eulerian_advection.py +22 -0
  10. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/freezing.py +2 -0
  11. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/impl/__init__.py +2 -0
  12. PySDM-2.72/PySDM/dynamics/impl/register_dynamic.py +21 -0
  13. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/isotopic_fractionation.py +2 -0
  14. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/relaxed_velocity.py +2 -0
  15. {PySDM-2.70 → PySDM-2.72}/PySDM/environments/impl/moist.py +7 -7
  16. {PySDM-2.70 → PySDM-2.72}/PySDM/environments/kinematic_1d.py +1 -3
  17. {PySDM-2.70 → PySDM-2.72}/PySDM/environments/kinematic_2d.py +4 -8
  18. {PySDM-2.70 → PySDM-2.72}/PySDM.egg-info/PKG-INFO +23 -23
  19. {PySDM-2.70 → PySDM-2.72}/PySDM.egg-info/SOURCES.txt +3 -1
  20. {PySDM-2.70 → PySDM-2.72}/README.md +22 -22
  21. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shipway_and_Hill_2012/mpdata_1d.py +34 -17
  22. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shipway_and_Hill_2012/simulation.py +5 -4
  23. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Szumowski_et_al_1998/gui_settings.py +7 -2
  24. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Szumowski_et_al_1998/mpdata_2d.py +41 -34
  25. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Szumowski_et_al_1998/simulation.py +7 -9
  26. {PySDM-2.70 → PySDM-2.72}/examples/setup.py +2 -1
  27. PySDM-2.72/pdoc_templates/index.html.jinja2 +23 -0
  28. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/test_adaptive_displacement.py +2 -0
  29. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/test_eulerian_advection.py +2 -1
  30. PySDM-2.72/tests/unit_tests/dynamics/test_impl_register_dynamic.py +40 -0
  31. PySDM-2.70/.github/workflows/pdoc_index_workaround.py +0 -21
  32. PySDM-2.70/PySDM/dynamics/eulerian_advection.py +0 -23
  33. {PySDM-2.70 → PySDM-2.72}/.appveyor.yml +0 -0
  34. {PySDM-2.70 → PySDM-2.72}/.binder/apt.txt +0 -0
  35. {PySDM-2.70 → PySDM-2.72}/.binder/postBuild +0 -0
  36. {PySDM-2.70 → PySDM-2.72}/.binder/requirements.txt +0 -0
  37. {PySDM-2.70 → PySDM-2.72}/.codecov.yml +0 -0
  38. {PySDM-2.70 → PySDM-2.72}/.github/dependabot.yml +0 -0
  39. {PySDM-2.70 → PySDM-2.72}/.github/workflows/cancel.yml +0 -0
  40. {PySDM-2.70 → PySDM-2.72}/.github/workflows/joss.yml +0 -0
  41. {PySDM-2.70 → PySDM-2.72}/.github/workflows/joss_paper.yml +0 -0
  42. {PySDM-2.70 → PySDM-2.72}/.github/workflows/readme_snippets.yml +0 -0
  43. {PySDM-2.70 → PySDM-2.72}/.github/workflows/stale.yml +0 -0
  44. {PySDM-2.70 → PySDM-2.72}/.gitignore +0 -0
  45. {PySDM-2.70 → PySDM-2.72}/.gitmodules +0 -0
  46. {PySDM-2.70 → PySDM-2.72}/.pre-commit-config.yaml +0 -0
  47. {PySDM-2.70 → PySDM-2.72}/.zenodo.json +0 -0
  48. {PySDM-2.70 → PySDM-2.72}/LICENSE +0 -0
  49. {PySDM-2.70 → PySDM-2.72}/PySDM/__init__.py +0 -0
  50. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/__init__.py +0 -0
  51. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/chemistry/__init__.py +0 -0
  52. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/chemistry/acidity.py +0 -0
  53. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/chemistry/concentration.py +0 -0
  54. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/chemistry/hydrogen_ion_concentration.py +0 -0
  55. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/ice/__init__.py +0 -0
  56. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/ice/cooling_rate.py +0 -0
  57. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/ice/freezing_temperature.py +0 -0
  58. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/ice/immersed_surface_area.py +0 -0
  59. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/impl/__init__.py +0 -0
  60. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/impl/attribute.py +0 -0
  61. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/impl/attribute_registry.py +0 -0
  62. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/impl/base_attribute.py +0 -0
  63. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/impl/cell_attribute.py +0 -0
  64. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/impl/derived_attribute.py +0 -0
  65. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/impl/dummy_attribute.py +0 -0
  66. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/impl/extensive_attribute.py +0 -0
  67. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/impl/intensive_attribute.py +0 -0
  68. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/impl/maximum_attribute.py +0 -0
  69. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/impl/mole_amount.py +0 -0
  70. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/isotopes/__init__.py +0 -0
  71. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/isotopes/delta.py +0 -0
  72. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/isotopes/moles.py +0 -0
  73. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/numerics/__init__.py +0 -0
  74. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/numerics/cell_id.py +0 -0
  75. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/numerics/cell_origin.py +0 -0
  76. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/numerics/position_in_cell.py +0 -0
  77. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/__init__.py +0 -0
  78. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/area.py +0 -0
  79. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/critical_supersaturation.py +0 -0
  80. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/critical_volume.py +0 -0
  81. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/dry_radius.py +0 -0
  82. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/dry_volume.py +0 -0
  83. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/equilibrium_supersaturation.py +0 -0
  84. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/heat.py +0 -0
  85. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/hygroscopicity.py +0 -0
  86. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/multiplicity.py +0 -0
  87. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/radius.py +0 -0
  88. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/relative_fall_velocity.py +0 -0
  89. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/reynolds_number.py +0 -0
  90. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/temperature.py +0 -0
  91. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/terminal_velocity.py +0 -0
  92. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/volume.py +0 -0
  93. {PySDM-2.70 → PySDM-2.72}/PySDM/attributes/physics/water_mass.py +0 -0
  94. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/__init__.py +0 -0
  95. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_common/__init__.py +0 -0
  96. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_common/backend_methods.py +0 -0
  97. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_common/freezing_attributes.py +0 -0
  98. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_common/index.py +0 -0
  99. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_common/indexed_storage.py +0 -0
  100. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_common/pair_indicator.py +0 -0
  101. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_common/pairwise_storage.py +0 -0
  102. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_common/random_common.py +0 -0
  103. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_common/storage_utils.py +0 -0
  104. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/__init__.py +0 -0
  105. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/atomic_operations.py +0 -0
  106. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/conf.py +0 -0
  107. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/methods/__init__.py +0 -0
  108. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/methods/chemistry_methods.py +0 -0
  109. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/methods/collisions_methods.py +0 -0
  110. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/methods/condensation_methods.py +0 -0
  111. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/methods/displacement_methods.py +0 -0
  112. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/methods/fragmentation_methods.py +0 -0
  113. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/methods/freezing_methods.py +0 -0
  114. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/methods/index_methods.py +0 -0
  115. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/methods/isotope_methods.py +0 -0
  116. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/methods/moments_methods.py +0 -0
  117. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/methods/pair_methods.py +0 -0
  118. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/methods/physics_methods.py +0 -0
  119. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/methods/terminal_velocity_methods.py +0 -0
  120. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/random.py +0 -0
  121. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/storage.py +0 -0
  122. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/storage_impl.py +0 -0
  123. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/test_helpers/__init__.py +0 -0
  124. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/test_helpers/scipy_ode_condensation_solver.py +0 -0
  125. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/toms748.py +0 -0
  126. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_numba/warnings.py +0 -0
  127. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/__init__.py +0 -0
  128. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/bisection.py +0 -0
  129. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/conf.py +0 -0
  130. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/methods/__init__.py +0 -0
  131. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/methods/collisions_methods.py +0 -0
  132. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/methods/condensation_methods.py +0 -0
  133. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/methods/displacement_methods.py +0 -0
  134. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/methods/freezing_methods.py +0 -0
  135. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/methods/index_methods.py +0 -0
  136. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/methods/isotope_methods.py +0 -0
  137. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/methods/moments_methods.py +0 -0
  138. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/methods/pair_methods.py +0 -0
  139. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/methods/physics_methods.py +0 -0
  140. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/methods/terminal_velocity_methods.py +0 -0
  141. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/methods/thrust_rtc_backend_methods.py +0 -0
  142. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/nice_thrust.py +0 -0
  143. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/random.py +0 -0
  144. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/storage.py +0 -0
  145. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/test_helpers/__init__.py +0 -0
  146. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/test_helpers/cpp2python.py +0 -0
  147. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/test_helpers/fake_thrust_rtc.py +0 -0
  148. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/impl_thrust_rtc/test_helpers/flag.py +0 -0
  149. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/numba.py +0 -0
  150. {PySDM-2.70 → PySDM-2.72}/PySDM/backends/thrust_rtc.py +0 -0
  151. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/__init__.py +0 -0
  152. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/__init__.py +0 -0
  153. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/breakup_efficiencies/__init__.py +0 -0
  154. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/breakup_efficiencies/constEb.py +0 -0
  155. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/breakup_fragmentations/__init__.py +0 -0
  156. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/breakup_fragmentations/always_n.py +0 -0
  157. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/breakup_fragmentations/constant_mass.py +0 -0
  158. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/breakup_fragmentations/expon_frag.py +0 -0
  159. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/breakup_fragmentations/exponential.py +0 -0
  160. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/breakup_fragmentations/feingold1988.py +0 -0
  161. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/breakup_fragmentations/gaussian.py +0 -0
  162. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/breakup_fragmentations/impl/__init__.py +0 -0
  163. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/breakup_fragmentations/impl/volume_based.py +0 -0
  164. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/breakup_fragmentations/lowlist82.py +0 -0
  165. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/breakup_fragmentations/slams.py +0 -0
  166. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/breakup_fragmentations/straub2010.py +0 -0
  167. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/coalescence_efficiencies/__init__.py +0 -0
  168. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/coalescence_efficiencies/_gravitational.py +0 -0
  169. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/coalescence_efficiencies/_parameterized.py +0 -0
  170. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/coalescence_efficiencies/berry1967.py +0 -0
  171. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/coalescence_efficiencies/constEc.py +0 -0
  172. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/coalescence_efficiencies/lowlist1982.py +0 -0
  173. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/coalescence_efficiencies/specified_eff.py +0 -0
  174. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/coalescence_efficiencies/straub2010.py +0 -0
  175. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/collision_kernels/__init__.py +0 -0
  176. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/collision_kernels/constantK.py +0 -0
  177. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/collision_kernels/electric.py +0 -0
  178. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/collision_kernels/geometric.py +0 -0
  179. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/collision_kernels/golovin.py +0 -0
  180. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/collision_kernels/hydrodynamic.py +0 -0
  181. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/collision_kernels/impl/__init__.py +0 -0
  182. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/collision_kernels/impl/gravitational.py +0 -0
  183. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/collision_kernels/impl/parameterized.py +0 -0
  184. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/collision_kernels/linear.py +0 -0
  185. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/collisions/collision_kernels/simple_geometric.py +0 -0
  186. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/impl/chemistry_utils.py +0 -0
  187. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/impl/random_generator_optimizer.py +0 -0
  188. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/impl/random_generator_optimizer_nopair.py +0 -0
  189. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/terminal_velocity/__init__.py +0 -0
  190. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/terminal_velocity/gunn_and_kinzer.py +0 -0
  191. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/terminal_velocity/power_series.py +0 -0
  192. {PySDM-2.70 → PySDM-2.72}/PySDM/dynamics/terminal_velocity/rogers_and_yau.py +0 -0
  193. {PySDM-2.70 → PySDM-2.72}/PySDM/environments/__init__.py +0 -0
  194. {PySDM-2.70 → PySDM-2.72}/PySDM/environments/box.py +0 -0
  195. {PySDM-2.70 → PySDM-2.72}/PySDM/environments/impl/__init__.py +0 -0
  196. {PySDM-2.70 → PySDM-2.72}/PySDM/environments/parcel.py +0 -0
  197. {PySDM-2.70 → PySDM-2.72}/PySDM/exporters/__init__.py +0 -0
  198. {PySDM-2.70 → PySDM-2.72}/PySDM/exporters/netcdf_exporter.py +0 -0
  199. {PySDM-2.70 → PySDM-2.72}/PySDM/exporters/netcdf_exporter_1d.py +0 -0
  200. {PySDM-2.70 → PySDM-2.72}/PySDM/exporters/vtk_exporter.py +0 -0
  201. {PySDM-2.70 → PySDM-2.72}/PySDM/exporters/vtk_exporter_1d.py +0 -0
  202. {PySDM-2.70 → PySDM-2.72}/PySDM/formulae.py +0 -0
  203. {PySDM-2.70 → PySDM-2.72}/PySDM/impl/__init__.py +0 -0
  204. {PySDM-2.70 → PySDM-2.72}/PySDM/impl/arakawa_c.py +0 -0
  205. {PySDM-2.70 → PySDM-2.72}/PySDM/impl/camel_case.py +0 -0
  206. {PySDM-2.70 → PySDM-2.72}/PySDM/impl/mesh.py +0 -0
  207. {PySDM-2.70 → PySDM-2.72}/PySDM/impl/null_physics_class.py +0 -0
  208. {PySDM-2.70 → PySDM-2.72}/PySDM/impl/particle_attributes.py +0 -0
  209. {PySDM-2.70 → PySDM-2.72}/PySDM/impl/particle_attributes_factory.py +0 -0
  210. {PySDM-2.70 → PySDM-2.72}/PySDM/impl/wall_timer.py +0 -0
  211. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/__init__.py +0 -0
  212. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/aerosol_composition/__init__.py +0 -0
  213. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/aerosol_composition/dry_aerosol.py +0 -0
  214. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/discretise_multiplicities.py +0 -0
  215. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/equilibrate_wet_radii.py +0 -0
  216. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/impl/__init__.py +0 -0
  217. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/impl/spectrum.py +0 -0
  218. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/init_fall_momenta.py +0 -0
  219. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/sampling/__init__.py +0 -0
  220. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/sampling/spatial_sampling.py +0 -0
  221. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/sampling/spectral_sampling.py +0 -0
  222. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/sampling/spectro_glacial_sampling.py +0 -0
  223. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/spectra/__init__.py +0 -0
  224. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/spectra/exponential.py +0 -0
  225. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/spectra/gamma.py +0 -0
  226. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/spectra/gaussian.py +0 -0
  227. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/spectra/lognormal.py +0 -0
  228. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/spectra/sum.py +0 -0
  229. {PySDM-2.70 → PySDM-2.72}/PySDM/initialisation/spectra/top_hat.py +0 -0
  230. {PySDM-2.70 → PySDM-2.72}/PySDM/particulator.py +0 -0
  231. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/__init__.py +0 -0
  232. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/air_dynamic_viscosity/__init__.py +0 -0
  233. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/air_dynamic_viscosity/zografos_et_al_1987.py +0 -0
  234. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/bulk_phase_partitioning/__init__.py +0 -0
  235. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/bulk_phase_partitioning/kaul_et_al_2015.py +0 -0
  236. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/condensation_coordinate/__init__.py +0 -0
  237. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/condensation_coordinate/volume.py +0 -0
  238. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/condensation_coordinate/volume_logarithm.py +0 -0
  239. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/constants.py +0 -0
  240. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/constants_defaults.py +0 -0
  241. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/diffusion_kinetics/__init__.py +0 -0
  242. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/diffusion_kinetics/fuchs_sutugin.py +0 -0
  243. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/diffusion_kinetics/grabowski_et_al_2011.py +0 -0
  244. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/diffusion_kinetics/lowe_et_al_2019.py +0 -0
  245. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/diffusion_kinetics/neglect.py +0 -0
  246. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/diffusion_kinetics/pruppacher_and_klett_2005.py +0 -0
  247. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/diffusion_thermics/__init__.py +0 -0
  248. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/diffusion_thermics/grabowski_et_al_2011.py +0 -0
  249. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/diffusion_thermics/lowe_et_al_2019.py +0 -0
  250. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/diffusion_thermics/neglect.py +0 -0
  251. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/diffusion_thermics/seinfeld_and_pandis_2010.py +0 -0
  252. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/diffusion_thermics/tracy_welch_porter.py +0 -0
  253. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/dimensional_analysis.py +0 -0
  254. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/drop_growth/__init__.py +0 -0
  255. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/drop_growth/mason_1951.py +0 -0
  256. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/drop_growth/mason_1971.py +0 -0
  257. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/fragmentation_function/__init__.py +0 -0
  258. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/fragmentation_function/always_n.py +0 -0
  259. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/fragmentation_function/constant_mass.py +0 -0
  260. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/fragmentation_function/expon_frag.py +0 -0
  261. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/fragmentation_function/exponential.py +0 -0
  262. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/fragmentation_function/feingold1988.py +0 -0
  263. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/fragmentation_function/gaussian.py +0 -0
  264. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/fragmentation_function/lowlist82.py +0 -0
  265. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/fragmentation_function/slams.py +0 -0
  266. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/fragmentation_function/straub2010nf.py +0 -0
  267. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/freezing_temperature_spectrum/__init__.py +0 -0
  268. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/freezing_temperature_spectrum/bigg_1953.py +0 -0
  269. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/freezing_temperature_spectrum/niemand_et_al_2012.py +0 -0
  270. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/freezing_temperature_spectrum/null.py +0 -0
  271. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/heterogeneous_ice_nucleation_rate/__init__.py +0 -0
  272. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/heterogeneous_ice_nucleation_rate/abifm.py +0 -0
  273. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/heterogeneous_ice_nucleation_rate/constant.py +0 -0
  274. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/heterogeneous_ice_nucleation_rate/null.py +0 -0
  275. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/hydrostatics/__init__.py +0 -0
  276. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/hydrostatics/default.py +0 -0
  277. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/hygroscopicity/__init__.py +0 -0
  278. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/hygroscopicity/kappa_koehler.py +0 -0
  279. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/hygroscopicity/kappa_koehler_leading_terms.py +0 -0
  280. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/impl/__init__.py +0 -0
  281. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/impl/fake_unit_registry.py +0 -0
  282. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/impl/flag.py +0 -0
  283. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_diffusivity_ratios/__init__.py +0 -0
  284. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_diffusivity_ratios/grahams_law.py +0 -0
  285. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_diffusivity_ratios/hellmann_and_harvey_2020.py +0 -0
  286. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_diffusivity_ratios/stewart_1975.py +0 -0
  287. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_equilibrium_fractionation_factors/__init__.py +0 -0
  288. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_equilibrium_fractionation_factors/barkan_and_luz_2005.py +0 -0
  289. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_equilibrium_fractionation_factors/ellehoj_et_al_2013.py +0 -0
  290. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_equilibrium_fractionation_factors/horita_and_wesolowski_1994.py +0 -0
  291. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_equilibrium_fractionation_factors/lamb_et_al_2017.py +0 -0
  292. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_equilibrium_fractionation_factors/majoube_1970.py +0 -0
  293. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_equilibrium_fractionation_factors/majoube_1971.py +0 -0
  294. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_equilibrium_fractionation_factors/merlivat_and_nief_1967.py +0 -0
  295. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_equilibrium_fractionation_factors/van_hook_1968.py +0 -0
  296. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_meteoric_water_line_excess/__init__.py +0 -0
  297. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_meteoric_water_line_excess/barkan_and_luz_2007.py +0 -0
  298. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_meteoric_water_line_excess/dansgaard_1964.py +0 -0
  299. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_ratio_evolution/__init__.py +0 -0
  300. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_ratio_evolution/gedzelman_and_arnold_1994.py +0 -0
  301. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_ratio_evolution/merlivat_and_jouzel_1979.py +0 -0
  302. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_ratio_evolution/rayleigh_distillation.py +0 -0
  303. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_relaxation_timescale/__init__.py +0 -0
  304. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/isotope_relaxation_timescale/miyake_et_al_1968.py +0 -0
  305. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/latent_heat/__init__.py +0 -0
  306. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/latent_heat/constant.py +0 -0
  307. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/latent_heat/kirchhoff.py +0 -0
  308. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/latent_heat/lowe2019.py +0 -0
  309. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/latent_heat/seinfeld_and_pandis_2010.py +0 -0
  310. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/optical_albedo/__init__.py +0 -0
  311. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/optical_albedo/bohren1987.py +0 -0
  312. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/optical_depth/__init__.py +0 -0
  313. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/optical_depth/stephens_1978.py +0 -0
  314. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/particle_advection/__init__.py +0 -0
  315. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/particle_advection/explicit_in_space.py +0 -0
  316. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/particle_advection/implicit_in_space.py +0 -0
  317. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/particle_shape_and_density/__init__.py +0 -0
  318. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/particle_shape_and_density/liquid_spheres.py +0 -0
  319. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/particle_shape_and_density/mixed_phase_spheres.py +0 -0
  320. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/particle_shape_and_density/porous_spheroids.py +0 -0
  321. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/saturation_vapour_pressure/__init__.py +0 -0
  322. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/saturation_vapour_pressure/august_roche_magnus.py +0 -0
  323. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/saturation_vapour_pressure/bolton_1980.py +0 -0
  324. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/saturation_vapour_pressure/flatau_walko_cotton.py +0 -0
  325. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/saturation_vapour_pressure/lowe1977.py +0 -0
  326. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/saturation_vapour_pressure/murphy_koop_2005.py +0 -0
  327. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/saturation_vapour_pressure/wexler_1976.py +0 -0
  328. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/state_variable_triplet/__init__.py +0 -0
  329. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/state_variable_triplet/libcloudphplusplus.py +0 -0
  330. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/surface_tension/__init__.py +0 -0
  331. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/surface_tension/compressed_film_ovadnevaite.py +0 -0
  332. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/surface_tension/compressed_film_ruehl.py +0 -0
  333. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/surface_tension/constant.py +0 -0
  334. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/surface_tension/szyszkowski_langmuir.py +0 -0
  335. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/terminal_velocity/__init__.py +0 -0
  336. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/terminal_velocity/gunn_kinzer_1949.py +0 -0
  337. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/terminal_velocity/power_series.py +0 -0
  338. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/terminal_velocity/rogers_yau.py +0 -0
  339. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/trivia.py +0 -0
  340. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/ventilation/__init__.py +0 -0
  341. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/ventilation/froessling_1938.py +0 -0
  342. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/ventilation/neglect.py +0 -0
  343. {PySDM-2.70 → PySDM-2.72}/PySDM/physics/ventilation/pruppacher_rasmussen_1979.py +0 -0
  344. {PySDM-2.70 → PySDM-2.72}/PySDM/products/__init__.py +0 -0
  345. {PySDM-2.70 → PySDM-2.72}/PySDM/products/ambient_thermodynamics/__init__.py +0 -0
  346. {PySDM-2.70 → PySDM-2.72}/PySDM/products/ambient_thermodynamics/ambient_dry_air_density.py +0 -0
  347. {PySDM-2.70 → PySDM-2.72}/PySDM/products/ambient_thermodynamics/ambient_dry_air_potential_temperature.py +0 -0
  348. {PySDM-2.70 → PySDM-2.72}/PySDM/products/ambient_thermodynamics/ambient_pressure.py +0 -0
  349. {PySDM-2.70 → PySDM-2.72}/PySDM/products/ambient_thermodynamics/ambient_relative_humidity.py +0 -0
  350. {PySDM-2.70 → PySDM-2.72}/PySDM/products/ambient_thermodynamics/ambient_temperature.py +0 -0
  351. {PySDM-2.70 → PySDM-2.72}/PySDM/products/ambient_thermodynamics/ambient_water_vapour_mixing_ratio.py +0 -0
  352. {PySDM-2.70 → PySDM-2.72}/PySDM/products/aqueous_chemistry/__init__.py +0 -0
  353. {PySDM-2.70 → PySDM-2.72}/PySDM/products/aqueous_chemistry/acidity.py +0 -0
  354. {PySDM-2.70 → PySDM-2.72}/PySDM/products/aqueous_chemistry/aqueous_mass_spectrum.py +0 -0
  355. {PySDM-2.70 → PySDM-2.72}/PySDM/products/aqueous_chemistry/aqueous_mole_fraction.py +0 -0
  356. {PySDM-2.70 → PySDM-2.72}/PySDM/products/aqueous_chemistry/gaseous_mole_fraction.py +0 -0
  357. {PySDM-2.70 → PySDM-2.72}/PySDM/products/aqueous_chemistry/total_dry_mass_mixing_ratio.py +0 -0
  358. {PySDM-2.70 → PySDM-2.72}/PySDM/products/collision/__init__.py +0 -0
  359. {PySDM-2.70 → PySDM-2.72}/PySDM/products/collision/collision_rates.py +0 -0
  360. {PySDM-2.70 → PySDM-2.72}/PySDM/products/collision/collision_timestep_mean.py +0 -0
  361. {PySDM-2.70 → PySDM-2.72}/PySDM/products/collision/collision_timestep_min.py +0 -0
  362. {PySDM-2.70 → PySDM-2.72}/PySDM/products/condensation/__init__.py +0 -0
  363. {PySDM-2.70 → PySDM-2.72}/PySDM/products/condensation/activable_fraction.py +0 -0
  364. {PySDM-2.70 → PySDM-2.72}/PySDM/products/condensation/condensation_timestep.py +0 -0
  365. {PySDM-2.70 → PySDM-2.72}/PySDM/products/condensation/event_rates.py +0 -0
  366. {PySDM-2.70 → PySDM-2.72}/PySDM/products/condensation/peak_supersaturation.py +0 -0
  367. {PySDM-2.70 → PySDM-2.72}/PySDM/products/displacement/__init__.py +0 -0
  368. {PySDM-2.70 → PySDM-2.72}/PySDM/products/displacement/averaged_terminal_velocity.py +0 -0
  369. {PySDM-2.70 → PySDM-2.72}/PySDM/products/displacement/flow_velocity_component.py +0 -0
  370. {PySDM-2.70 → PySDM-2.72}/PySDM/products/displacement/max_courant_number.py +0 -0
  371. {PySDM-2.70 → PySDM-2.72}/PySDM/products/displacement/surface_precipitation.py +0 -0
  372. {PySDM-2.70 → PySDM-2.72}/PySDM/products/freezing/__init__.py +0 -0
  373. {PySDM-2.70 → PySDM-2.72}/PySDM/products/freezing/cooling_rate.py +0 -0
  374. {PySDM-2.70 → PySDM-2.72}/PySDM/products/freezing/freezable_specific_concentration.py +0 -0
  375. {PySDM-2.70 → PySDM-2.72}/PySDM/products/freezing/frozen_particle_concentration.py +0 -0
  376. {PySDM-2.70 → PySDM-2.72}/PySDM/products/freezing/ice_nuclei_concentration.py +0 -0
  377. {PySDM-2.70 → PySDM-2.72}/PySDM/products/freezing/total_unfrozen_immersed_surface_area.py +0 -0
  378. {PySDM-2.70 → PySDM-2.72}/PySDM/products/housekeeping/__init__.py +0 -0
  379. {PySDM-2.70 → PySDM-2.72}/PySDM/products/housekeeping/dynamic_wall_time.py +0 -0
  380. {PySDM-2.70 → PySDM-2.72}/PySDM/products/housekeeping/super_droplet_count_per_gridbox.py +0 -0
  381. {PySDM-2.70 → PySDM-2.72}/PySDM/products/housekeeping/time.py +0 -0
  382. {PySDM-2.70 → PySDM-2.72}/PySDM/products/housekeeping/timers.py +0 -0
  383. {PySDM-2.70 → PySDM-2.72}/PySDM/products/impl/__init__.py +0 -0
  384. {PySDM-2.70 → PySDM-2.72}/PySDM/products/impl/activation_filtered_product.py +0 -0
  385. {PySDM-2.70 → PySDM-2.72}/PySDM/products/impl/concentration_product.py +0 -0
  386. {PySDM-2.70 → PySDM-2.72}/PySDM/products/impl/moist_environment_product.py +0 -0
  387. {PySDM-2.70 → PySDM-2.72}/PySDM/products/impl/moment_product.py +0 -0
  388. {PySDM-2.70 → PySDM-2.72}/PySDM/products/impl/product.py +0 -0
  389. {PySDM-2.70 → PySDM-2.72}/PySDM/products/impl/rate_product.py +0 -0
  390. {PySDM-2.70 → PySDM-2.72}/PySDM/products/impl/register_product.py +0 -0
  391. {PySDM-2.70 → PySDM-2.72}/PySDM/products/impl/spectrum_moment_product.py +0 -0
  392. {PySDM-2.70 → PySDM-2.72}/PySDM/products/optical/__init__.py +0 -0
  393. {PySDM-2.70 → PySDM-2.72}/PySDM/products/optical/cloud_albedo.py +0 -0
  394. {PySDM-2.70 → PySDM-2.72}/PySDM/products/optical/cloud_optical_depth.py +0 -0
  395. {PySDM-2.70 → PySDM-2.72}/PySDM/products/parcel/__init__.py +0 -0
  396. {PySDM-2.70 → PySDM-2.72}/PySDM/products/parcel/cloud_water_path.py +0 -0
  397. {PySDM-2.70 → PySDM-2.72}/PySDM/products/parcel/parcel_displacement.py +0 -0
  398. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/__init__.py +0 -0
  399. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/arbitrary_moment.py +0 -0
  400. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/cloud_water_content.py +0 -0
  401. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/effective_radius.py +0 -0
  402. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/effective_radius_activated.py +0 -0
  403. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/mean_radius.py +0 -0
  404. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/mean_radius_activated.py +0 -0
  405. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/mean_volume_radius.py +0 -0
  406. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/number_size_spectrum.py +0 -0
  407. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/particle_concentration.py +0 -0
  408. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/particle_concentration_activated.py +0 -0
  409. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/particle_size_spectrum.py +0 -0
  410. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/particle_volume_versus_radius_logarithm_spectrum.py +0 -0
  411. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/radius_binned_number_averaged_terminal_velocity.py +0 -0
  412. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/size_standard_deviation.py +0 -0
  413. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/total_particle_concentration.py +0 -0
  414. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/total_particle_specific_concentration.py +0 -0
  415. {PySDM-2.70 → PySDM-2.72}/PySDM/products/size_spectral/water_mixing_ratio.py +0 -0
  416. {PySDM-2.70 → PySDM-2.72}/PySDM.egg-info/dependency_links.txt +0 -0
  417. {PySDM-2.70 → PySDM-2.72}/PySDM.egg-info/requires.txt +0 -0
  418. {PySDM-2.70 → PySDM-2.72}/PySDM.egg-info/top_level.txt +0 -0
  419. {PySDM-2.70 → PySDM-2.72}/examples/MANIFEST.in +0 -0
  420. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Abade_and_Albuquerque_2024/__init__.py +0 -0
  421. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Abade_and_Albuquerque_2024/fig_2.ipynb +0 -0
  422. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Abade_and_Albuquerque_2024/settings.py +0 -0
  423. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Abade_and_Albuquerque_2024/simulation.py +0 -0
  424. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Abdul_Razzak_Ghan_2000/__init__.py +0 -0
  425. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Abdul_Razzak_Ghan_2000/aerosol.py +0 -0
  426. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_ARG2000_paper.py +0 -0
  427. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Abdul_Razzak_Ghan_2000/data_from_CloudMicrophysics_ARG.py +0 -0
  428. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Abdul_Razzak_Ghan_2000/fig_4_kinetic_limitations.ipynb +0 -0
  429. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Abdul_Razzak_Ghan_2000/figs1-5.ipynb +0 -0
  430. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Abdul_Razzak_Ghan_2000/run_ARG_parcel.py +0 -0
  431. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Alpert_and_Knopf_2016/__init__.py +0 -0
  432. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Alpert_and_Knopf_2016/fig_1.ipynb +0 -0
  433. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Alpert_and_Knopf_2016/fig_2.ipynb +0 -0
  434. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Alpert_and_Knopf_2016/fig_3.ipynb +0 -0
  435. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Alpert_and_Knopf_2016/fig_4.ipynb +0 -0
  436. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Alpert_and_Knopf_2016/fig_5.ipynb +0 -0
  437. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Alpert_and_Knopf_2016/simulation.py +0 -0
  438. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Alpert_and_Knopf_2016/table.py +0 -0
  439. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Alpert_and_Knopf_2016/table_1.py +0 -0
  440. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Alpert_and_Knopf_2016/table_2.py +0 -0
  441. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_and_Shima_2017/__init__.py +0 -0
  442. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_and_Shima_2017/example.py +0 -0
  443. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_and_Shima_2017/fig_5.ipynb +0 -0
  444. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_and_Shima_2017/settings.py +0 -0
  445. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_and_Shima_2017/simulation.py +0 -0
  446. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2015/__init__.py +0 -0
  447. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2015/example.py +0 -0
  448. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2015/example_benchmark.py +0 -0
  449. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2015/gui.ipynb +0 -0
  450. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2015/paraview_hello_world.ipynb +0 -0
  451. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2015/settings.py +0 -0
  452. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2015/spin_up.py +0 -0
  453. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2023/__init__.py +0 -0
  454. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2023/aida.ipynb +0 -0
  455. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2023/commons.py +0 -0
  456. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2023/copula_hello.ipynb +0 -0
  457. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2023/curved_text.py +0 -0
  458. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2023/fig_11.ipynb +0 -0
  459. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2023/fig_2.ipynb +0 -0
  460. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2023/fig_A2.ipynb +0 -0
  461. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2023/figs_3_and_7_and_8.ipynb +0 -0
  462. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2023/figs_5_and_6.ipynb +0 -0
  463. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2023/frozen_fraction.py +0 -0
  464. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2023/make_particulator.py +0 -0
  465. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2023/plots.py +0 -0
  466. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Arabas_et_al_2023/run_simulation.py +0 -0
  467. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bartman_2020_MasterThesis/__init__.py +0 -0
  468. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bartman_2020_MasterThesis/fig_4_adaptive_sdm.py +0 -0
  469. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bartman_2020_MasterThesis/fig_5_SCIPY_VS_ADAPTIVE.py +0 -0
  470. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bartman_et_al_2021/__init__.py +0 -0
  471. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bartman_et_al_2021/demo.ipynb +0 -0
  472. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bartman_et_al_2021/demo_fig2.ipynb +0 -0
  473. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bartman_et_al_2021/demo_fig3.ipynb +0 -0
  474. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bartman_et_al_2021/label.py +0 -0
  475. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Berry_1967/__init__.py +0 -0
  476. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Berry_1967/example.py +0 -0
  477. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Berry_1967/example_fig_6.py +0 -0
  478. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Berry_1967/figs_5_8_10.ipynb +0 -0
  479. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Berry_1967/settings.py +0 -0
  480. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Berry_1967/spectrum_plotter.py +0 -0
  481. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bieli_et_al_2022/__init__.py +0 -0
  482. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bieli_et_al_2022/make_fig_3.ipynb +0 -0
  483. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bieli_et_al_2022/settings.py +0 -0
  484. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bieli_et_al_2022/simulation.py +0 -0
  485. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bolot_et_al_2013/__init__.py +0 -0
  486. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bolot_et_al_2013/fig_1.ipynb +0 -0
  487. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bulenok_2023_MasterThesis/__init__.py +0 -0
  488. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bulenok_2023_MasterThesis/performance_comparison_Srivastava_Setup.ipynb +0 -0
  489. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bulenok_2023_MasterThesis/setups.py +0 -0
  490. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Bulenok_2023_MasterThesis/utils.py +0 -0
  491. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Ervens_and_Feingold_2012/__init__.py +0 -0
  492. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Ervens_and_Feingold_2012/settings.py +0 -0
  493. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Gedzelman_and_Arnold_1994/__init__.py +0 -0
  494. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Gedzelman_and_Arnold_1994/fig_2.ipynb +0 -0
  495. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py +0 -0
  496. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_1.ipynb +0 -0
  497. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_2.ipynb +0 -0
  498. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_3.ipynb +0 -0
  499. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_4.ipynb +0 -0
  500. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_ripening_rate.ipynb +0 -0
  501. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py +0 -0
  502. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py +0 -0
  503. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Graf_et_al_2019/Table_1.ipynb +0 -0
  504. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Graf_et_al_2019/__init__.py +0 -0
  505. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Graf_et_al_2019/figure_4.ipynb +0 -0
  506. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Jaruga_and_Pawlowska_2018/__init__.py +0 -0
  507. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Jaruga_and_Pawlowska_2018/fig_2.ipynb +0 -0
  508. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Jaruga_and_Pawlowska_2018/fig_3.ipynb +0 -0
  509. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Jensen_and_Nugent_2017/Fig_1.ipynb +0 -0
  510. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Jensen_and_Nugent_2017/Fig_3_and_Tab_4_upper_rows.ipynb +0 -0
  511. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Jensen_and_Nugent_2017/Fig_4_and_7_and_Tab_4_bottom_rows.ipynb +0 -0
  512. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Jensen_and_Nugent_2017/Fig_5.ipynb +0 -0
  513. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Jensen_and_Nugent_2017/Fig_6.ipynb +0 -0
  514. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Jensen_and_Nugent_2017/Fig_8.ipynb +0 -0
  515. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Jensen_and_Nugent_2017/__init__.py +0 -0
  516. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Jensen_and_Nugent_2017/plotting.py +0 -0
  517. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Jensen_and_Nugent_2017/settings.py +0 -0
  518. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Jensen_and_Nugent_2017/simulation.py +0 -0
  519. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Jensen_and_Nugent_2017/table_3.py +0 -0
  520. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Kreidenweis_et_al_2003/__init__.py +0 -0
  521. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Kreidenweis_et_al_2003/fig_1.ipynb +0 -0
  522. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Kreidenweis_et_al_2003/settings.py +0 -0
  523. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Kreidenweis_et_al_2003/simulation.py +0 -0
  524. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Lamb_et_al_2017/__init__.py +0 -0
  525. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Lamb_et_al_2017/fig_4.ipynb +0 -0
  526. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Lowe_et_al_2019/__init__.py +0 -0
  527. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Lowe_et_al_2019/aerosol.py +0 -0
  528. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Lowe_et_al_2019/aerosol_code.py +0 -0
  529. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Lowe_et_al_2019/constants_def.py +0 -0
  530. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Lowe_et_al_2019/fig_1.ipynb +0 -0
  531. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Lowe_et_al_2019/fig_2.ipynb +0 -0
  532. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Lowe_et_al_2019/fig_3.ipynb +0 -0
  533. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Lowe_et_al_2019/fig_s2.ipynb +0 -0
  534. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Lowe_et_al_2019/plot_helper.py +0 -0
  535. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Lowe_et_al_2019/settings.py +0 -0
  536. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Lowe_et_al_2019/simulation.py +0 -0
  537. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Merlivat_and_Nief_1967/__init__.py +0 -0
  538. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Merlivat_and_Nief_1967/fig_2.ipynb +0 -0
  539. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Miyake_et_al_1968/__init__.py +0 -0
  540. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Miyake_et_al_1968/fig_19.ipynb +0 -0
  541. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Morrison_and_Grabowski_2007/__init__.py +0 -0
  542. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Morrison_and_Grabowski_2007/common.py +0 -0
  543. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Morrison_and_Grabowski_2007/cumulus.py +0 -0
  544. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Morrison_and_Grabowski_2007/fig_2.ipynb +0 -0
  545. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Morrison_and_Grabowski_2007/fig_3.ipynb +0 -0
  546. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Morrison_and_Grabowski_2007/strato_cumulus.py +0 -0
  547. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Niedermeier_et_al_2014/__init__.py +0 -0
  548. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Niedermeier_et_al_2014/fig_2.ipynb +0 -0
  549. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Niedermeier_et_al_2014/settings.py +0 -0
  550. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Niedermeier_et_al_2014/simulation.py +0 -0
  551. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Pierchala_et_al_2022/__init__.py +0 -0
  552. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Pierchala_et_al_2022/commons.py +0 -0
  553. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Pierchala_et_al_2022/fig_3.ipynb +0 -0
  554. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Pierchala_et_al_2022/fig_4.ipynb +0 -0
  555. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Pyrcel/__init__.py +0 -0
  556. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Pyrcel/example_basic_run.ipynb +0 -0
  557. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Pyrcel/profile_plotter.py +0 -0
  558. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Pyrcel/settings.py +0 -0
  559. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Pyrcel/simulation.py +0 -0
  560. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Pyrcel/tutorial_settings.py +0 -0
  561. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Pyrcel/tutorial_simulation.py +0 -0
  562. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Rozanski_and_Sonntag_1982/__init__.py +0 -0
  563. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Rozanski_and_Sonntag_1982/figs_4_5_6.ipynb +0 -0
  564. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shima_et_al_2009/__init__.py +0 -0
  565. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shima_et_al_2009/error_measure.py +0 -0
  566. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shima_et_al_2009/example.py +0 -0
  567. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shima_et_al_2009/example_timing.py +0 -0
  568. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shima_et_al_2009/fig_2.ipynb +0 -0
  569. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shima_et_al_2009/settings.py +0 -0
  570. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shima_et_al_2009/spectrum_plotter.py +0 -0
  571. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shima_et_al_2009/tutorial_example.py +0 -0
  572. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shima_et_al_2009/tutorial_plotter.py +0 -0
  573. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shima_et_al_2009/tutorial_settings.py +0 -0
  574. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shipway_and_Hill_2012/__init__.py +0 -0
  575. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shipway_and_Hill_2012/fig_1.ipynb +0 -0
  576. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shipway_and_Hill_2012/plot.py +0 -0
  577. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Shipway_and_Hill_2012/settings.py +0 -0
  578. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Singer_Ward/MWE_joss_paper.ipynb +0 -0
  579. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Singer_Ward/__init__.py +0 -0
  580. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Singer_Ward/aerosol.py +0 -0
  581. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Singer_Ward/kohler.ipynb +0 -0
  582. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Srivastava_1982/__init__.py +0 -0
  583. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Srivastava_1982/equations.py +0 -0
  584. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Srivastava_1982/example.py +0 -0
  585. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Srivastava_1982/figures.ipynb +0 -0
  586. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Srivastava_1982/settings.py +0 -0
  587. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Srivastava_1982/simulation.py +0 -0
  588. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Szumowski_et_al_1998/__init__.py +0 -0
  589. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Szumowski_et_al_1998/fields.py +0 -0
  590. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Szumowski_et_al_1998/gui.py +0 -0
  591. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Szumowski_et_al_1998/gui_controller.py +0 -0
  592. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Szumowski_et_al_1998/gui_viewer.py +0 -0
  593. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Szumowski_et_al_1998/make_default_product_collection.py +0 -0
  594. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Szumowski_et_al_1998/plots.py +0 -0
  595. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Szumowski_et_al_1998/sounding.py +0 -0
  596. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Szumowski_et_al_1998/storage.py +0 -0
  597. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Van_Hook_1968/__init__.py +0 -0
  598. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Van_Hook_1968/fig_1.ipynb +0 -0
  599. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Yang_et_al_2018/__init__.py +0 -0
  600. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Yang_et_al_2018/fig_2.ipynb +0 -0
  601. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Yang_et_al_2018/settings.py +0 -0
  602. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/Yang_et_al_2018/simulation.py +0 -0
  603. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/__init__.py +0 -0
  604. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Azimi/__init__.py +0 -0
  605. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Azimi/box.ipynb +0 -0
  606. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Azimi/cloudy_data.py +0 -0
  607. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Azimi/cloudy_data_0d.py +0 -0
  608. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Azimi/rainshaft.ipynb +0 -0
  609. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Azimi/settings1D.py +0 -0
  610. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Azimi/simulation_0D.py +0 -0
  611. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Mackay_et_al_2023/__init__.py +0 -0
  612. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Mackay_et_al_2023/data/straub_fig10.csv +0 -0
  613. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Mackay_et_al_2023/fig_9.ipynb +0 -0
  614. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Mackay_et_al_2023/figs_10_11_12_13.ipynb +0 -0
  615. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Mackay_et_al_2023/figs_3_4_5.ipynb +0 -0
  616. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Mackay_et_al_2023/figs_6_7_8.ipynb +0 -0
  617. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Mackay_et_al_2023/plot_rates.py +0 -0
  618. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Mackay_et_al_2023/settings1D.py +0 -0
  619. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Mackay_et_al_2023/settings_0D.py +0 -0
  620. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Mackay_et_al_2023/simulation1D.py +0 -0
  621. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Mackay_et_al_2023/simulation_0D.py +0 -0
  622. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/deJong_Mackay_et_al_2023/simulation_ss.py +0 -0
  623. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/utils/__init__.py +0 -0
  624. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/utils/basic_simulation.py +0 -0
  625. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/utils/dummy_controller.py +0 -0
  626. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/utils/notebook_vars.py +0 -0
  627. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/utils/progbar_controller.py +0 -0
  628. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/utils/read_vtk_1d.py +0 -0
  629. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/utils/widgets/__init__.py +0 -0
  630. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/utils/widgets/freezer.py +0 -0
  631. {PySDM-2.70 → PySDM-2.72}/examples/PySDM_examples/utils/widgets/progbar_updater.py +0 -0
  632. {PySDM-2.70 → PySDM-2.72}/examples/README.md +0 -0
  633. {PySDM-2.70 → PySDM-2.72}/examples/pyproject.toml +0 -0
  634. {PySDM-2.70 → PySDM-2.72}/paper/joss-ARG-fig_1.pdf +0 -0
  635. {PySDM-2.70 → PySDM-2.72}/paper/paper.bib +0 -0
  636. {PySDM-2.70 → PySDM-2.72}/paper/paper.md +0 -0
  637. {PySDM-2.70 → PySDM-2.72}/paper/paperv1.md +0 -0
  638. {PySDM-2.70 → PySDM-2.72}/paper/readme.pdf +0 -0
  639. {PySDM-2.70 → PySDM-2.72}/paper/test.pdf +0 -0
  640. {PySDM-2.70 → PySDM-2.72}/pyproject.toml +0 -0
  641. {PySDM-2.70 → PySDM-2.72}/setup.cfg +0 -0
  642. {PySDM-2.70 → PySDM-2.72}/setup.py +0 -0
  643. {PySDM-2.70 → PySDM-2.72}/tests/__init__.py +0 -0
  644. {PySDM-2.70 → PySDM-2.72}/tests/examples_tests/__init__.py +0 -0
  645. {PySDM-2.70 → PySDM-2.72}/tests/examples_tests/conftest.py +0 -0
  646. {PySDM-2.70 → PySDM-2.72}/tests/examples_tests/test_run_examples.py +0 -0
  647. {PySDM-2.70 → PySDM-2.72}/tests/examples_tests/test_run_notebooks.py +0 -0
  648. {PySDM-2.70 → PySDM-2.72}/tests/examples_tests/test_tests_completeness.py +0 -0
  649. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/__init__.py +0 -0
  650. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/alpert_and_knopf_2016/__init__.py +0 -0
  651. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/alpert_and_knopf_2016/test_ak16_fig_1.py +0 -0
  652. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/alpert_and_knopf_2016/test_frozen_fraction.py +0 -0
  653. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/berry_1967/__init__.py +0 -0
  654. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/berry_1967/test_coalescence.py +0 -0
  655. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/bieli_et_al_2022/__init__.py +0 -0
  656. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/bieli_et_al_2022/test_moments.py +0 -0
  657. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/dejong_and_mackay_et_al_2023/__init__.py +0 -0
  658. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/dejong_and_mackay_et_al_2023/test_collision.py +0 -0
  659. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/dejong_and_mackay_et_al_2023/test_fig_6.py +0 -0
  660. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/dejong_and_mackay_et_al_2023/test_fig_7.py +0 -0
  661. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/dejong_and_mackay_et_al_2023/test_fig_8.py +0 -0
  662. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/dejong_azimi/test_box.py +0 -0
  663. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/partmc/__init__.py +0 -0
  664. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/partmc/test_dry_wet_equilibration.py +0 -0
  665. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/shima_et_al_2009/__init__.py +0 -0
  666. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/shima_et_al_2009/test_lwc_constant.py +0 -0
  667. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/srivastava_1982/__init__.py +0 -0
  668. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/srivastava_1982/test_eq_10.py +0 -0
  669. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/srivastava_1982/test_eq_13.py +0 -0
  670. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/box/srivastava_1982/test_equations.py +0 -0
  671. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/conftest.py +0 -0
  672. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_1d/deJong_Azimi/__init__.py +0 -0
  673. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_1d/deJong_Azimi/test_few_steps.py +0 -0
  674. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_1d/deJong_Azimi/test_initial_condition.py +0 -0
  675. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_1d/shipway_and_hill_2012/__init__.py +0 -0
  676. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_1d/shipway_and_hill_2012/test_1d_exporters.py +0 -0
  677. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_1d/shipway_and_hill_2012/test_few_steps.py +0 -0
  678. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_1d/shipway_and_hill_2012/test_initial_condition.py +0 -0
  679. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_1d/shipway_and_hill_2012/test_settings.py +0 -0
  680. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/__init__.py +0 -0
  681. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/dummy_storage.py +0 -0
  682. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/test_environment.py +0 -0
  683. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/test_export.py +0 -0
  684. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/test_freezing.py +0 -0
  685. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/test_gui_settings.py +0 -0
  686. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/test_initialisation.py +0 -0
  687. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/kinematic_2d/arabas_et_al_2015/test_spin_up.py +0 -0
  688. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/no_env/gedzelman_and_arnold_1994/__init__.py +0 -0
  689. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/no_env/gedzelman_and_arnold_1994/test_fig_2.py +0 -0
  690. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/no_env/lamb_et_al_2017/__init__.py +0 -0
  691. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/no_env/lamb_et_al_2017/test_fig_4.py +0 -0
  692. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/no_env/miyake_et_al_1968/__init__.py +0 -0
  693. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/no_env/miyake_et_al_1968/test_fig_19.py +0 -0
  694. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/no_env/pierchala_et_al_2022/__init__.py +0 -0
  695. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/no_env/pierchala_et_al_2022/test_fig_3.py +0 -0
  696. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/no_env/pierchala_et_al_2022/test_fig_4.py +0 -0
  697. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/no_env/pierchala_et_al_2022/test_supplement.py +0 -0
  698. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_a/lowe_et_al_2019/__init__.py +0 -0
  699. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_a/lowe_et_al_2019/conftest.py +0 -0
  700. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_a/lowe_et_al_2019/test_dz_sensitivity.py +0 -0
  701. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_a/lowe_et_al_2019/test_fig_1.py +0 -0
  702. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_a/lowe_et_al_2019/test_fig_2.py +0 -0
  703. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_a/lowe_et_al_2019/test_fig_s2.py +0 -0
  704. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_a/lowe_et_al_2019/test_surface_tension_models.py +0 -0
  705. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_a/lowe_et_al_2019/test_zero_forg.py +0 -0
  706. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_a/pyrcel/__init__.py +0 -0
  707. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_a/pyrcel/test_parcel_example.py +0 -0
  708. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_a/rozanski_and_sonntag_1982/__init__.py +0 -0
  709. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_a/rozanski_and_sonntag_1982/test_figs_4_5_6.py +0 -0
  710. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_b/arabas_and_shima_2017/__init__.py +0 -0
  711. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_b/arabas_and_shima_2017/test_conservation.py +0 -0
  712. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_b/arabas_and_shima_2017/test_displacement.py +0 -0
  713. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_b/arabas_and_shima_2017/test_event_rates.py +0 -0
  714. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_b/arabas_and_shima_2017/test_initialisation.py +0 -0
  715. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_b/arabas_and_shima_2017/test_vs_scipy.py +0 -0
  716. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_b/yang_et_al_2018/__init__.py +0 -0
  717. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_b/yang_et_al_2018/test_displacement.py +0 -0
  718. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_b/yang_et_al_2018/test_initialisation.py +0 -0
  719. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_b/yang_et_al_2018/test_just_do_it.py +0 -0
  720. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/abade_and_albuquerque_2024/__init__.py +0 -0
  721. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/abade_and_albuquerque_2024/test_fig_2.py +0 -0
  722. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/abdul_razzak_ghan_2000/__init__.py +0 -0
  723. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/abdul_razzak_ghan_2000/test_ARG_example.py +0 -0
  724. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/abdul_razzak_ghan_2000/test_just_do_it.py +0 -0
  725. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/abdul_razzak_ghan_2000/test_single_supersaturation_peak.py +0 -0
  726. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/grabowski_and_pawlowska_2023/__init__.py +0 -0
  727. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/grabowski_and_pawlowska_2023/test_condensation_tolerance.py +0 -0
  728. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/grabowski_and_pawlowska_2023/test_figure_1_and_2.py +0 -0
  729. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/grabowski_and_pawlowska_2023/test_figure_3.py +0 -0
  730. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/grabowski_and_pawlowska_2023/test_figure_4.py +0 -0
  731. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/grabowski_and_pawlowska_2023/test_ripening_rate.py +0 -0
  732. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/graf_et_al_2019/__init__.py +0 -0
  733. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/graf_et_al_2019/test_fig_4.py +0 -0
  734. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/graf_et_al_2019/test_table_1.py +0 -0
  735. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/jensen_and_nugent_2017/__init__.py +0 -0
  736. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/jensen_and_nugent_2017/test_fig_1.py +0 -0
  737. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/jensen_and_nugent_2017/test_fig_3_and_tab_4_upper_rows.py +0 -0
  738. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/jensen_and_nugent_2017/test_fig_4_and_7_and_tab_4_bottom_rows.py +0 -0
  739. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/jensen_and_nugent_2017/test_fig_5.py +0 -0
  740. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/jensen_and_nugent_2017/test_fig_6.py +0 -0
  741. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/jensen_and_nugent_2017/test_table_3.py +0 -0
  742. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/kreidenweis_et_al_2003/__init__.py +0 -0
  743. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/kreidenweis_et_al_2003/test_fig_1.py +0 -0
  744. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/kreidenweis_et_al_2003/test_ionic_strength.py +0 -0
  745. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/kreidenweis_et_al_2003/test_spectrum_at_t_0.py +0 -0
  746. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/kreidenweis_et_al_2003/test_table_3.py +0 -0
  747. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/niedermeier_et_al_2013/__init__.py +0 -0
  748. {PySDM-2.70 → PySDM-2.72}/tests/smoke_tests/parcel_c/niedermeier_et_al_2013/test_temperature_profile.py +0 -0
  749. {PySDM-2.70 → PySDM-2.72}/tests/tutorials_tests/__init__.py +0 -0
  750. {PySDM-2.70 → PySDM-2.72}/tests/tutorials_tests/conftest.py +0 -0
  751. {PySDM-2.70 → PySDM-2.72}/tests/tutorials_tests/test_run_notebooks.py +0 -0
  752. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/__init__.py +0 -0
  753. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/attributes/__init__.py +0 -0
  754. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/attributes/test_acidity.py +0 -0
  755. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/attributes/test_area_radius.py +0 -0
  756. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/attributes/test_critical_supersaturation.py +0 -0
  757. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/attributes/test_fall_velocity.py +0 -0
  758. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/attributes/test_impl_attribute_registry.py +0 -0
  759. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/attributes/test_isotopes.py +0 -0
  760. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/attributes/test_multiplicities.py +0 -0
  761. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/attributes/test_reynolds_number.py +0 -0
  762. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/__init__.py +0 -0
  763. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/storage/__init__.py +0 -0
  764. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/storage/test_basic_ops.py +0 -0
  765. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/storage/test_index.py +0 -0
  766. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/storage/test_setitem.py +0 -0
  767. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/test_collisions_methods.py +0 -0
  768. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/test_ctor_defaults.py +0 -0
  769. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/test_fake_thrust.py +0 -0
  770. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/test_freezing_methods.py +0 -0
  771. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/test_isotope_methods.py +0 -0
  772. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/test_moments_methods.py +0 -0
  773. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/test_oxidation.py +0 -0
  774. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/test_pair_methods.py +0 -0
  775. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/test_physics_methods.py +0 -0
  776. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/backends/test_toms748.py +0 -0
  777. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/conftest.py +0 -0
  778. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dummy_environment.py +0 -0
  779. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dummy_particulator.py +0 -0
  780. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/__init__.py +0 -0
  781. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/collisions/__init__.py +0 -0
  782. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/collisions/conftest.py +0 -0
  783. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/collisions/test_croupiers.py +0 -0
  784. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/collisions/test_defaults.py +0 -0
  785. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/collisions/test_efficiencies.py +0 -0
  786. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/collisions/test_fragmentations.py +0 -0
  787. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/collisions/test_kernels.py +0 -0
  788. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/collisions/test_sdm_breakup.py +0 -0
  789. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/collisions/test_sdm_multi_cell.py +0 -0
  790. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/collisions/test_sdm_single_cell.py +0 -0
  791. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/condensation/test_diagnostics.py +0 -0
  792. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/condensation/test_parcel_sanity_checks.py +0 -0
  793. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/condensation/test_ventilation.py +0 -0
  794. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/displacement/__init__.py +0 -0
  795. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/displacement/displacement_settings.py +0 -0
  796. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/displacement/test_advection.py +0 -0
  797. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/displacement/test_courant_product.py +0 -0
  798. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/displacement/test_sedimentation.py +0 -0
  799. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/test_isotopic_fractionation.py +0 -0
  800. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/test_relaxed_velocity.py +0 -0
  801. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/dynamics/test_terminal_velocity.py +0 -0
  802. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/impl/__init__.py +0 -0
  803. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/impl/test_camel_case.py +0 -0
  804. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/impl/test_mesh.py +0 -0
  805. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/impl/test_moments.py +0 -0
  806. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/impl/test_particle_attributes.py +0 -0
  807. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/initialisation/__init__.py +0 -0
  808. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/initialisation/test_aerosol_init.py +0 -0
  809. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/initialisation/test_equilibrate_wet_radii.py +0 -0
  810. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/initialisation/test_init_fall_momenta.py +0 -0
  811. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/initialisation/test_spatial_discretisation.py +0 -0
  812. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/initialisation/test_spectra_lognormal.py +0 -0
  813. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/initialisation/test_spectral_discretisation.py +0 -0
  814. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/initialisation/test_spectro_glacial_discretisation.py +0 -0
  815. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/__init__.py +0 -0
  816. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_accommodation_coefficients.py +0 -0
  817. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_air_dynamic_viscosity.py +0 -0
  818. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_bulk_phase_partitioning.py +0 -0
  819. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_constants.py +0 -0
  820. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_dimensional_analysis.py +0 -0
  821. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_drop_growth.py +0 -0
  822. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_formulae.py +0 -0
  823. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_fragmentation_functions.py +0 -0
  824. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_freezing_temperature_spectra.py +0 -0
  825. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_hygroscopicity_fierce_diagrams.py +0 -0
  826. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_isotope_diffusivity_ratios.py +0 -0
  827. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_isotope_equilibrium_fractionation_factors.py +0 -0
  828. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_isotope_meteoric_water_line_excess.py +0 -0
  829. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_isotope_ratio_evolution.py +0 -0
  830. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_isotope_relaxation_timescale.py +0 -0
  831. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_latent_heat.py +0 -0
  832. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_optical.py +0 -0
  833. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_particle_shape_and_density.py +0 -0
  834. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_saturation_vapour_pressure.py +0 -0
  835. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_spectra.py +0 -0
  836. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_spectra_top_hat.py +0 -0
  837. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_surface_tension.py +0 -0
  838. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_thermal_conductivity.py +0 -0
  839. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_trivia.py +0 -0
  840. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/physics/test_ventilation_coefficient.py +0 -0
  841. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/products/__init__.py +0 -0
  842. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/products/test_ambient_relative_humidity.py +0 -0
  843. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/products/test_arbitrary_moment.py +0 -0
  844. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/products/test_averaged_terminal_velocity.py +0 -0
  845. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/products/test_collision_rates.py +0 -0
  846. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/products/test_concentration_product.py +0 -0
  847. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/products/test_cooling_rate.py +0 -0
  848. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/products/test_effective_radii.py +0 -0
  849. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/products/test_impl.py +0 -0
  850. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/products/test_parcel_liquid_water_path.py +0 -0
  851. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/products/test_particle_size_product.py +0 -0
  852. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/products/test_particle_size_spectrum.py +0 -0
  853. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/test_builder.py +0 -0
  854. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/test_formulae.py +0 -0
  855. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/test_imports.py +0 -0
  856. {PySDM-2.70 → PySDM-2.72}/tests/unit_tests/test_particulator.py +0 -0
  857. {PySDM-2.70 → PySDM-2.72}/tutorials/README.md +0 -0
  858. {PySDM-2.70 → PySDM-2.72}/tutorials/collisions/collection_droplet.svg +0 -0
  859. {PySDM-2.70 → PySDM-2.72}/tutorials/collisions/collisions_playground.ipynb +0 -0
  860. {PySDM-2.70 → PySDM-2.72}/tutorials/condensation/condensation_playground.ipynb +0 -0
  861. {PySDM-2.70 → PySDM-2.72}/tutorials/condensation/kohler_curve.svg +0 -0
@@ -69,11 +69,10 @@ jobs:
69
69
  with:
70
70
  python-version: 3.9
71
71
  - run: |
72
- pip install pdoc3
72
+ pip install pdoc
73
73
  pip install -e .
74
74
  pip install -e examples
75
- python -We -m pdoc --html PySDM examples/PySDM_examples
76
- python -We .github/workflows/pdoc_index_workaround.py
75
+ PDOC_ALLOW_EXEC=1 python -We -m pdoc -o html PySDM examples/PySDM_examples -t pdoc_templates
77
76
  - if: ${{ github.ref == 'refs/heads/main' && matrix.platform == 'ubuntu-latest' }}
78
77
  uses: JamesIves/github-pages-deploy-action@4.1.1
79
78
  with:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PySDM
3
- Version: 2.70
3
+ Version: 2.72
4
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
5
  Home-page: https://github.com/open-atmos/PySDM
6
6
  Author: https://github.com/open-atmos/PySDM/graphs/contributors
@@ -32,7 +32,7 @@ Description: # PySDM
32
32
  [![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)
33
33
  [![Coverage Status](https://codecov.io/gh/open-atmos/PySDM/branch/main/graph/badge.svg)](https://app.codecov.io/gh/open-atmos/PySDM)
34
34
  [![PyPI version](https://badge.fury.io/py/PySDM.svg)](https://pypi.org/project/PySDM)
35
- [![API docs](https://img.shields.io/badge/API_docs-pdoc3-blue.svg)](https://open-atmos.github.io/PySDM/)
35
+ [![API docs](https://shields.mitmproxy.org/badge/docs-pdoc.dev-brightgreen.svg)](https://open-atmos.github.io/PySDM/)
36
36
 
37
37
  PySDM is a package for simulating the dynamics of population of particles.
38
38
  It is intended to serve as a building block for simulation systems modelling
@@ -62,9 +62,9 @@ Description: # PySDM
62
62
  PySDM has two alternative parallel number-crunching backends
63
63
  available: multi-threaded CPU backend based on [Numba](http://numba.pydata.org/)
64
64
  and GPU-resident backend built on top of [ThrustRTC](https://pypi.org/project/ThrustRTC/).
65
- The [`Numba`](https://open-atmos.github.io/PySDM/PySDM/backends/numba/numba.html) backend (aliased ``CPU``) features multi-threaded parallelism for
65
+ The [`Numba`](https://open-atmos.github.io/PySDM/PySDM/backends/numba.html) backend (aliased ``CPU``) features multi-threaded parallelism for
66
66
  multi-core CPUs, it uses the just-in-time compilation technique based on the LLVM infrastructure.
67
- The [`ThrustRTC`](https://open-atmos.github.io/PySDM/PySDM/backends/thrustRTC/thrustRTC.html) backend (aliased ``GPU``) offers GPU-resident operation of PySDM
67
+ The [`ThrustRTC`](https://open-atmos.github.io/PySDM/PySDM/backends/thrust_rtc.html) backend (aliased ``GPU``) offers GPU-resident operation of PySDM
68
68
  leveraging the [SIMT](https://en.wikipedia.org/wiki/Single_instruction,_multiple_threads)
69
69
  parallelisation model.
70
70
  Using the ``GPU`` backend requires nVidia hardware and [CUDA driver](https://developer.nvidia.com/cuda-downloads).
@@ -76,7 +76,7 @@ Description: # PySDM
76
76
  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).
77
77
  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).
78
78
 
79
- A [pdoc-generated](https://pdoc3.github.io/pdoc) documentation of PySDM public API is maintained at: [https://open-atmos.github.io/PySDM](https://open-atmos.github.io/PySDM)
79
+ 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)
80
80
 
81
81
  ## Example Jupyter notebooks (reproducing results from literature):
82
82
 
@@ -186,8 +186,8 @@ Description: # PySDM
186
186
  listings provide sample code roughly reproducing the
187
187
  Figure 2 from [Shima et al. 2009 paper](http://doi.org/10.1002/qj.441)
188
188
  using PySDM from Python, Julia and Matlab.
189
- It is a [`Coalescence`](https://open-atmos.github.io/PySDM/PySDM/dynamics/coalescence.html)-only set-up in which the initial particle size
190
- spectrum is [`Exponential`](https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra.html#PySDM.initialisation.spectra.Exponential) and is deterministically sampled to match
189
+ It is a [`Coalescence`](https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/sollision.html#Coalescence)-only set-up in which the initial particle size
190
+ spectrum is [`Exponential`](https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra/exponential.html#Exponential) and is deterministically sampled to match
191
191
  the condition of each super-droplet having equal initial multiplicity:
192
192
  <details>
193
193
  <summary>Julia (click to expand)</summary>
@@ -241,9 +241,9 @@ Description: # PySDM
241
241
  ```
242
242
  </details>
243
243
 
244
- The key element of the PySDM interface is the [``Particulator``](https://open-atmos.github.io/PySDM/PySDM/particulator.html)
244
+ The key element of the PySDM interface is the [``Particulator``](https://open-atmos.github.io/PySDM/PySDM/particulator.html#Particulator)
245
245
  class instances of which are used to manage the system state and control the simulation.
246
- Instantiation of the [``Particulator``](https://open-atmos.github.io/PySDM/PySDM/particulator.html) class is handled by the [``Builder``](https://open-atmos.github.io/PySDM/PySDM/builder.html)
246
+ Instantiation of the [``Particulator``](https://open-atmos.github.io/PySDM/PySDM/particulator.html#Particulator) class is handled by the [``Builder``](https://open-atmos.github.io/PySDM/PySDM/builder.html#Builder)
247
247
  as exemplified below:
248
248
  <details>
249
249
  <summary>Julia (click to expand)</summary>
@@ -313,18 +313,18 @@ Description: # PySDM
313
313
  The ``backend`` argument may be set to ``CPU`` or ``GPU``
314
314
  what translates to choosing the multi-threaded backend or the
315
315
  GPU-resident computation mode, respectively.
316
- The employed [`Box`](https://open-atmos.github.io/PySDM/PySDM/environments/box.html) environment corresponds to a zero-dimensional framework
316
+ The employed [`Box`](https://open-atmos.github.io/PySDM/PySDM/environments/box.html#Box) environment corresponds to a zero-dimensional framework
317
317
  (particle positions are not considered).
318
318
  The vectors of particle multiplicities ``n`` and particle volumes ``v`` are
319
319
  used to initialise super-droplet attributes.
320
- The [`Coalescence`](https://open-atmos.github.io/PySDM/PySDM/dynamics/coalescence.html)
320
+ The [`Coalescence`](https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/collision.html#Coalescence)
321
321
  Monte-Carlo algorithm (Super Droplet Method) is registered as the only
322
322
  dynamic in the system.
323
- Finally, the [`build()`](https://open-atmos.github.io/PySDM/PySDM/builder.html#PySDM.builder.Builder.build) method is used to obtain an instance
324
- of [`Particulator`](https://open-atmos.github.io/PySDM/PySDM/particulator.html#PySDM.particulator.Particulator) which can then be used to control time-stepping and
323
+ Finally, the [`build()`](https://open-atmos.github.io/PySDM/PySDM/builder.html#Builder.build) method is used to obtain an instance
324
+ of [`Particulator`](https://open-atmos.github.io/PySDM/PySDM/particulator.html#Particulator) which can then be used to control time-stepping and
325
325
  access simulation state.
326
326
 
327
- The [`run(nt)`](https://open-atmos.github.io/PySDM/PySDM/particulator.html#PySDM.particuparticulatorr.Particulator.run) method advances the simulation by ``nt`` timesteps.
327
+ The [`run(nt)`](https://open-atmos.github.io/PySDM/PySDM/particulator.html#Particulator.run) method advances the simulation by ``nt`` timesteps.
328
328
  In the listing below, its usage is interleaved with plotting logic
329
329
  which displays a histogram of particle mass distribution
330
330
  at selected timesteps:
@@ -441,16 +441,16 @@ Description: # PySDM
441
441
  SPECTRUM_INIT["ParticleVolumeVersusRadiusLogarithmSpectrum.__init__()"] -->|instantiates| SPECTRUM
442
442
  SPECTRUM[":ParticleVolumeVersusRadiusLogarithmSpectrum"] -->|added as element of| PRODUCTS
443
443
 
444
- click COAL "https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/collision.html"
444
+ click COAL "https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/collision.html#Coalescence"
445
445
  click BUILDER_INSTANCE "https://open-atmos.github.io/PySDM/PySDM/builder.html"
446
446
  click BUILDER_INIT "https://open-atmos.github.io/PySDM/PySDM/builder.html"
447
447
  click BUILDER_ADD_DYN "https://open-atmos.github.io/PySDM/PySDM/builder.html"
448
- click ENV_INIT "https://open-atmos.github.io/PySDM/PySDM/environments/index.html"
449
- click ENV "https://open-atmos.github.io/PySDM/PySDM/environments/index.html"
450
- click KERNEL_INIT "https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/collision_kernels/index.html"
451
- click KERNEL "https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/collision_kernels/index.html"
452
- click EXP_INIT "https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra/index.html"
453
- click IS "https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra/index.html"
448
+ click ENV_INIT "https://open-atmos.github.io/PySDM/PySDM/environments.html"
449
+ click ENV "https://open-atmos.github.io/PySDM/PySDM/environments.html"
450
+ click KERNEL_INIT "https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/collision_kernels.html"
451
+ click KERNEL "https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/collision_kernels.html"
452
+ click EXP_INIT "https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra.html"
453
+ click IS "https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra.html"
454
454
  click CM_INIT "https://open-atmos.github.io/PySDM/PySDM/initialisation/sampling/spectral_sampling.html"
455
455
  click CM_INSTANCE "https://open-atmos.github.io/PySDM/PySDM/initialisation/sampling/spectral_sampling.html"
456
456
  click SAMPLE "https://open-atmos.github.io/PySDM/PySDM/initialisation/sampling/spectral_sampling.html"
@@ -466,7 +466,7 @@ Description: # PySDM
466
466
 
467
467
  In the following example, a condensation-only setup is used with the adiabatic
468
468
  [`Parcel`](https://open-atmos.github.io/PySDM/PySDM/environments/parcel.html) environment.
469
- An initial [`Lognormal`](https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra.html#PySDM.initialisation.spectra.Lognormal)
469
+ An initial [`Lognormal`](https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra/lognormal.html#Lognormal)
470
470
  spectrum of dry aerosol particles is first initialised to equilibrium wet size for the given
471
471
  initial humidity.
472
472
  Subsequent particle growth due to [`Condensation`](https://open-atmos.github.io/PySDM/PySDM/dynamics/condensation.html) of water vapour (coupled with the release of latent heat)
@@ -476,7 +476,7 @@ Description: # PySDM
476
476
  and depict the evolution of
477
477
  [`PeakSupersaturation`](https://open-atmos.github.io/PySDM/PySDM/products/condensation/peak_supersaturation.html),
478
478
  [`EffectiveRadius`](https://open-atmos.github.io/PySDM/PySDM/products/size_spectral/effective_radius.html),
479
- [`ParticleConcentration`](https://open-atmos.github.io/PySDM/PySDM/products/size_spectral/particle_concentration.html#PySDM.products.particles_concentration.ParticleConcentration)
479
+ [`ParticleConcentration`](https://open-atmos.github.io/PySDM/PySDM/products/size_spectral/particle_concentration.html#ParticleConcentration)
480
480
  and the
481
481
  [`WaterMixingRatio `](https://open-atmos.github.io/PySDM/PySDM/products/size_spectral/water_mixing_ratio.html).
482
482
 
@@ -121,8 +121,8 @@ class Builder:
121
121
  self._resolve_attribute(attr_name)
122
122
  self.req_attr_names = None
123
123
 
124
- for dynamic in self.particulator.dynamics.values():
125
- dynamic.register(self)
124
+ for key, dynamic in self.particulator.dynamics.items():
125
+ self.particulator.dynamics[key] = dynamic.instantiate(builder=self)
126
126
 
127
127
  single_buffer_for_all_products = np.empty(self.particulator.mesh.grid)
128
128
  for product in products:
@@ -2,7 +2,10 @@
2
2
  environment-sync triggering class
3
3
  """
4
4
 
5
+ from PySDM.dynamics.impl import register_dynamic
5
6
 
7
+
8
+ @register_dynamic()
6
9
  class AmbientThermodynamics:
7
10
  def __init__(self):
8
11
  self.particulator = None
@@ -13,12 +13,14 @@ from PySDM.dynamics.impl.chemistry_utils import (
13
13
  M,
14
14
  SpecificGravities,
15
15
  )
16
+ from PySDM.dynamics.impl import register_dynamic
16
17
 
17
18
  DEFAULTS = namedtuple("_", ("pH_min", "pH_max", "pH_rtol", "ionic_strength_threshold"))(
18
19
  pH_min=-1.0, pH_max=14.0, pH_rtol=1e-6, ionic_strength_threshold=0.02 * M
19
20
  )
20
21
 
21
22
 
23
+ @register_dynamic()
22
24
  class AqueousChemistry: # pylint: disable=too-many-instance-attributes
23
25
  def __init__(
24
26
  self,
@@ -23,6 +23,7 @@ from PySDM.dynamics.impl.random_generator_optimizer_nopair import (
23
23
  RandomGeneratorOptimizerNoPair,
24
24
  )
25
25
  from PySDM.physics import si
26
+ from PySDM.dynamics.impl import register_dynamic
26
27
 
27
28
  # pylint: disable=too-many-lines
28
29
 
@@ -36,6 +37,7 @@ DEFAULTS = namedtuple(
36
37
  )
37
38
 
38
39
 
40
+ @register_dynamic()
39
41
  class Collision: # pylint: disable=too-many-instance-attributes
40
42
  def __init__(
41
43
  self,
@@ -288,6 +290,7 @@ class Collision: # pylint: disable=too-many-instance-attributes
288
290
  )
289
291
 
290
292
 
293
+ @register_dynamic()
291
294
  class Coalescence(Collision):
292
295
  def __init__(
293
296
  self,
@@ -316,6 +319,7 @@ class Coalescence(Collision):
316
319
  )
317
320
 
318
321
 
322
+ @register_dynamic()
319
323
  class Breakup(Collision):
320
324
  def __init__(
321
325
  self,
@@ -7,7 +7,8 @@ from collections import namedtuple
7
7
 
8
8
  import numpy as np
9
9
 
10
- from ..physics import si
10
+ from PySDM.physics import si
11
+ from PySDM.dynamics.impl import register_dynamic
11
12
 
12
13
  DEFAULTS = namedtuple("_", ("rtol_x", "rtol_thd", "cond_range", "schedule"))(
13
14
  rtol_x=1e-6,
@@ -17,6 +18,7 @@ DEFAULTS = namedtuple("_", ("rtol_x", "rtol_thd", "cond_range", "schedule"))(
17
18
  )
18
19
 
19
20
 
21
+ @register_dynamic()
20
22
  class Condensation: # pylint: disable=too-many-instance-attributes
21
23
  def __init__(
22
24
  self,
@@ -11,9 +11,12 @@ from collections import namedtuple
11
11
 
12
12
  import numpy as np
13
13
 
14
+ from PySDM.dynamics.impl import register_dynamic
15
+
14
16
  DEFAULTS = namedtuple("_", ("rtol", "adaptive"))(rtol=1e-2, adaptive=True)
15
17
 
16
18
 
19
+ @register_dynamic()
17
20
  class Displacement: # pylint: disable=too-many-instance-attributes
18
21
  def __init__(
19
22
  self,
@@ -0,0 +1,22 @@
1
+ """
2
+ wrapper class for triggering integration in the Eulerian advection solver
3
+ """
4
+
5
+ from PySDM.dynamics.impl import register_dynamic
6
+
7
+
8
+ @register_dynamic()
9
+ class EulerianAdvection:
10
+ def __init__(self, solvers):
11
+ self.solvers = solvers
12
+ self.particulator = None
13
+
14
+ def register(self, builder):
15
+ self.particulator = builder.particulator
16
+
17
+ def __call__(self):
18
+ for field in ("water_vapour_mixing_ratio", "thd"):
19
+ self.particulator.environment.get_predicted(field).download(
20
+ getattr(self.particulator.environment, f"get_{field}")(), reshape=True
21
+ )
22
+ self.solvers(self.particulator.dynamics["Displacement"])
@@ -7,8 +7,10 @@ from PySDM.backends.impl_common.freezing_attributes import (
7
7
  TimeDependentAttributes,
8
8
  )
9
9
  from PySDM.physics.heterogeneous_ice_nucleation_rate import Null
10
+ from PySDM.dynamics.impl import register_dynamic
10
11
 
11
12
 
13
+ @register_dynamic()
12
14
  class Freezing:
13
15
  def __init__(self, *, singular=True, record_freezing_temperature=False, thaw=False):
14
16
  assert not (record_freezing_temperature and singular)
@@ -1 +1,3 @@
1
1
  """ stuff not intended to be imported from user code """
2
+
3
+ from .register_dynamic import register_dynamic
@@ -0,0 +1,21 @@
1
+ """ decorator for dynamics classes
2
+ ensuring that their instances can be re-used with multiple builders """
3
+
4
+ from copy import deepcopy
5
+
6
+
7
+ def _instantiate(self, *, builder):
8
+ copy = deepcopy(self)
9
+ copy.register(builder=builder)
10
+ return copy
11
+
12
+
13
+ def register_dynamic():
14
+ def decorator(cls):
15
+ if hasattr(cls, "instantiate"):
16
+ assert cls.instantiate is _instantiate
17
+ else:
18
+ setattr(cls, "instantiate", _instantiate)
19
+ return cls
20
+
21
+ return decorator
@@ -4,11 +4,13 @@ requires condensation dynamic to be registered (and run beforehand)
4
4
  """
5
5
 
6
6
  from PySDM.dynamics.condensation import Condensation
7
+ from PySDM.dynamics.impl import register_dynamic
7
8
 
8
9
  LIGHT_ISOTOPES = ("1H", "16O")
9
10
  HEAVY_ISOTOPES = ("2H", "3H", "17O", "18O")
10
11
 
11
12
 
13
+ @register_dynamic()
12
14
  class IsotopicFractionation:
13
15
  def __init__(self, isotopes: tuple = HEAVY_ISOTOPES):
14
16
  self.isotopes = isotopes
@@ -6,8 +6,10 @@ towards the terminal velocity
6
6
 
7
7
  from PySDM.attributes.impl.attribute import Attribute
8
8
  from PySDM.particulator import Particulator
9
+ from PySDM.dynamics.impl import register_dynamic
9
10
 
10
11
 
12
+ @register_dynamic()
11
13
  class RelaxedVelocity: # pylint: disable=too-many-instance-attributes
12
14
  """
13
15
  A dynamic which updates the fall momentum according to a relaxation timescale
@@ -44,21 +44,21 @@ class Moist:
44
44
  result[var] = self.particulator.Storage.empty((self.mesh.n_cell,), float)
45
45
  return result
46
46
 
47
- def __getitem__(self, index):
48
- """returns a Storage representing the variable (field) at a given index or
49
- otherwise a NaN-filled Storage if the index is not found (in order to simplify
47
+ def __getitem__(self, key: str):
48
+ """returns a Storage representing the variable (field) at a given key or
49
+ otherwise a NaN-filled Storage if the key is not found (in order to simplify
50
50
  generic code which uses optional variables, e.g. air viscosity, etc.)"""
51
- if index in self._values["current"]:
52
- return self._values["current"][index]
51
+ if key in self._values["current"]:
52
+ return self._values["current"][key]
53
53
  return self._nan_field
54
54
 
55
- def get_predicted(self, index):
55
+ def get_predicted(self, key: str):
56
56
  if self._values["predicted"] is None:
57
57
  raise AssertionError(
58
58
  "It seems the AmbientThermodynamics dynamic was not added"
59
59
  " when building particulator"
60
60
  )
61
- return self._values["predicted"][index]
61
+ return self._values["predicted"][key]
62
62
 
63
63
  def _recalculate_temperature_pressure_relative_humidity(self, target):
64
64
  self.particulator.backend.temperature_pressure_rh(
@@ -26,7 +26,7 @@ class Kinematic1D(Moist):
26
26
  self._tmp["rhod"] = rhod
27
27
 
28
28
  def get_water_vapour_mixing_ratio(self) -> np.ndarray:
29
- return self.particulator.dynamics["EulerianAdvection"].solvers.advectee.get()
29
+ return self.particulator.dynamics["EulerianAdvection"].solvers.advectee
30
30
 
31
31
  def get_thd(self) -> np.ndarray:
32
32
  return self.thd0
@@ -61,9 +61,7 @@ class Kinematic1D(Moist):
61
61
  v_wet, n_per_kg = spectral_discretisation.sample(
62
62
  backend=self.particulator.backend, n_sd=self.particulator.n_sd
63
63
  )
64
- # attributes["dry volume"] = v_wet
65
64
  attributes["volume"] = v_wet
66
- # attributes["kappa times dry volume"] = attributes["dry volume"] * kappa
67
65
  else:
68
66
  r_dry, n_per_kg = spectral_discretisation.sample(
69
67
  backend=self.particulator.backend, n_sd=self.particulator.n_sd
@@ -85,16 +85,12 @@ class Kinematic2D(Moist):
85
85
  return attributes
86
86
 
87
87
  def get_thd(self):
88
- return (
89
- self.particulator.dynamics["EulerianAdvection"].solvers["th"].advectee.get()
90
- )
88
+ return self.particulator.dynamics["EulerianAdvection"].solvers["th"]
91
89
 
92
90
  def get_water_vapour_mixing_ratio(self):
93
- return (
94
- self.particulator.dynamics["EulerianAdvection"]
95
- .solvers["water_vapour_mixing_ratio"]
96
- .advectee.get()
97
- )
91
+ return self.particulator.dynamics["EulerianAdvection"].solvers[
92
+ "water_vapour_mixing_ratio"
93
+ ]
98
94
 
99
95
  def sync(self):
100
96
  self.particulator.dynamics["EulerianAdvection"].solvers.wait()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PySDM
3
- Version: 2.70
3
+ Version: 2.72
4
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
5
  Home-page: https://github.com/open-atmos/PySDM
6
6
  Author: https://github.com/open-atmos/PySDM/graphs/contributors
@@ -32,7 +32,7 @@ Description: # PySDM
32
32
  [![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)
33
33
  [![Coverage Status](https://codecov.io/gh/open-atmos/PySDM/branch/main/graph/badge.svg)](https://app.codecov.io/gh/open-atmos/PySDM)
34
34
  [![PyPI version](https://badge.fury.io/py/PySDM.svg)](https://pypi.org/project/PySDM)
35
- [![API docs](https://img.shields.io/badge/API_docs-pdoc3-blue.svg)](https://open-atmos.github.io/PySDM/)
35
+ [![API docs](https://shields.mitmproxy.org/badge/docs-pdoc.dev-brightgreen.svg)](https://open-atmos.github.io/PySDM/)
36
36
 
37
37
  PySDM is a package for simulating the dynamics of population of particles.
38
38
  It is intended to serve as a building block for simulation systems modelling
@@ -62,9 +62,9 @@ Description: # PySDM
62
62
  PySDM has two alternative parallel number-crunching backends
63
63
  available: multi-threaded CPU backend based on [Numba](http://numba.pydata.org/)
64
64
  and GPU-resident backend built on top of [ThrustRTC](https://pypi.org/project/ThrustRTC/).
65
- The [`Numba`](https://open-atmos.github.io/PySDM/PySDM/backends/numba/numba.html) backend (aliased ``CPU``) features multi-threaded parallelism for
65
+ The [`Numba`](https://open-atmos.github.io/PySDM/PySDM/backends/numba.html) backend (aliased ``CPU``) features multi-threaded parallelism for
66
66
  multi-core CPUs, it uses the just-in-time compilation technique based on the LLVM infrastructure.
67
- The [`ThrustRTC`](https://open-atmos.github.io/PySDM/PySDM/backends/thrustRTC/thrustRTC.html) backend (aliased ``GPU``) offers GPU-resident operation of PySDM
67
+ The [`ThrustRTC`](https://open-atmos.github.io/PySDM/PySDM/backends/thrust_rtc.html) backend (aliased ``GPU``) offers GPU-resident operation of PySDM
68
68
  leveraging the [SIMT](https://en.wikipedia.org/wiki/Single_instruction,_multiple_threads)
69
69
  parallelisation model.
70
70
  Using the ``GPU`` backend requires nVidia hardware and [CUDA driver](https://developer.nvidia.com/cuda-downloads).
@@ -76,7 +76,7 @@ Description: # PySDM
76
76
  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).
77
77
  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).
78
78
 
79
- A [pdoc-generated](https://pdoc3.github.io/pdoc) documentation of PySDM public API is maintained at: [https://open-atmos.github.io/PySDM](https://open-atmos.github.io/PySDM)
79
+ 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)
80
80
 
81
81
  ## Example Jupyter notebooks (reproducing results from literature):
82
82
 
@@ -186,8 +186,8 @@ Description: # PySDM
186
186
  listings provide sample code roughly reproducing the
187
187
  Figure 2 from [Shima et al. 2009 paper](http://doi.org/10.1002/qj.441)
188
188
  using PySDM from Python, Julia and Matlab.
189
- It is a [`Coalescence`](https://open-atmos.github.io/PySDM/PySDM/dynamics/coalescence.html)-only set-up in which the initial particle size
190
- spectrum is [`Exponential`](https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra.html#PySDM.initialisation.spectra.Exponential) and is deterministically sampled to match
189
+ It is a [`Coalescence`](https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/sollision.html#Coalescence)-only set-up in which the initial particle size
190
+ spectrum is [`Exponential`](https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra/exponential.html#Exponential) and is deterministically sampled to match
191
191
  the condition of each super-droplet having equal initial multiplicity:
192
192
  <details>
193
193
  <summary>Julia (click to expand)</summary>
@@ -241,9 +241,9 @@ Description: # PySDM
241
241
  ```
242
242
  </details>
243
243
 
244
- The key element of the PySDM interface is the [``Particulator``](https://open-atmos.github.io/PySDM/PySDM/particulator.html)
244
+ The key element of the PySDM interface is the [``Particulator``](https://open-atmos.github.io/PySDM/PySDM/particulator.html#Particulator)
245
245
  class instances of which are used to manage the system state and control the simulation.
246
- Instantiation of the [``Particulator``](https://open-atmos.github.io/PySDM/PySDM/particulator.html) class is handled by the [``Builder``](https://open-atmos.github.io/PySDM/PySDM/builder.html)
246
+ Instantiation of the [``Particulator``](https://open-atmos.github.io/PySDM/PySDM/particulator.html#Particulator) class is handled by the [``Builder``](https://open-atmos.github.io/PySDM/PySDM/builder.html#Builder)
247
247
  as exemplified below:
248
248
  <details>
249
249
  <summary>Julia (click to expand)</summary>
@@ -313,18 +313,18 @@ Description: # PySDM
313
313
  The ``backend`` argument may be set to ``CPU`` or ``GPU``
314
314
  what translates to choosing the multi-threaded backend or the
315
315
  GPU-resident computation mode, respectively.
316
- The employed [`Box`](https://open-atmos.github.io/PySDM/PySDM/environments/box.html) environment corresponds to a zero-dimensional framework
316
+ The employed [`Box`](https://open-atmos.github.io/PySDM/PySDM/environments/box.html#Box) environment corresponds to a zero-dimensional framework
317
317
  (particle positions are not considered).
318
318
  The vectors of particle multiplicities ``n`` and particle volumes ``v`` are
319
319
  used to initialise super-droplet attributes.
320
- The [`Coalescence`](https://open-atmos.github.io/PySDM/PySDM/dynamics/coalescence.html)
320
+ The [`Coalescence`](https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/collision.html#Coalescence)
321
321
  Monte-Carlo algorithm (Super Droplet Method) is registered as the only
322
322
  dynamic in the system.
323
- Finally, the [`build()`](https://open-atmos.github.io/PySDM/PySDM/builder.html#PySDM.builder.Builder.build) method is used to obtain an instance
324
- of [`Particulator`](https://open-atmos.github.io/PySDM/PySDM/particulator.html#PySDM.particulator.Particulator) which can then be used to control time-stepping and
323
+ Finally, the [`build()`](https://open-atmos.github.io/PySDM/PySDM/builder.html#Builder.build) method is used to obtain an instance
324
+ of [`Particulator`](https://open-atmos.github.io/PySDM/PySDM/particulator.html#Particulator) which can then be used to control time-stepping and
325
325
  access simulation state.
326
326
 
327
- The [`run(nt)`](https://open-atmos.github.io/PySDM/PySDM/particulator.html#PySDM.particuparticulatorr.Particulator.run) method advances the simulation by ``nt`` timesteps.
327
+ The [`run(nt)`](https://open-atmos.github.io/PySDM/PySDM/particulator.html#Particulator.run) method advances the simulation by ``nt`` timesteps.
328
328
  In the listing below, its usage is interleaved with plotting logic
329
329
  which displays a histogram of particle mass distribution
330
330
  at selected timesteps:
@@ -441,16 +441,16 @@ Description: # PySDM
441
441
  SPECTRUM_INIT["ParticleVolumeVersusRadiusLogarithmSpectrum.__init__()"] -->|instantiates| SPECTRUM
442
442
  SPECTRUM[":ParticleVolumeVersusRadiusLogarithmSpectrum"] -->|added as element of| PRODUCTS
443
443
 
444
- click COAL "https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/collision.html"
444
+ click COAL "https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/collision.html#Coalescence"
445
445
  click BUILDER_INSTANCE "https://open-atmos.github.io/PySDM/PySDM/builder.html"
446
446
  click BUILDER_INIT "https://open-atmos.github.io/PySDM/PySDM/builder.html"
447
447
  click BUILDER_ADD_DYN "https://open-atmos.github.io/PySDM/PySDM/builder.html"
448
- click ENV_INIT "https://open-atmos.github.io/PySDM/PySDM/environments/index.html"
449
- click ENV "https://open-atmos.github.io/PySDM/PySDM/environments/index.html"
450
- click KERNEL_INIT "https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/collision_kernels/index.html"
451
- click KERNEL "https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/collision_kernels/index.html"
452
- click EXP_INIT "https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra/index.html"
453
- click IS "https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra/index.html"
448
+ click ENV_INIT "https://open-atmos.github.io/PySDM/PySDM/environments.html"
449
+ click ENV "https://open-atmos.github.io/PySDM/PySDM/environments.html"
450
+ click KERNEL_INIT "https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/collision_kernels.html"
451
+ click KERNEL "https://open-atmos.github.io/PySDM/PySDM/dynamics/collisions/collision_kernels.html"
452
+ click EXP_INIT "https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra.html"
453
+ click IS "https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra.html"
454
454
  click CM_INIT "https://open-atmos.github.io/PySDM/PySDM/initialisation/sampling/spectral_sampling.html"
455
455
  click CM_INSTANCE "https://open-atmos.github.io/PySDM/PySDM/initialisation/sampling/spectral_sampling.html"
456
456
  click SAMPLE "https://open-atmos.github.io/PySDM/PySDM/initialisation/sampling/spectral_sampling.html"
@@ -466,7 +466,7 @@ Description: # PySDM
466
466
 
467
467
  In the following example, a condensation-only setup is used with the adiabatic
468
468
  [`Parcel`](https://open-atmos.github.io/PySDM/PySDM/environments/parcel.html) environment.
469
- An initial [`Lognormal`](https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra.html#PySDM.initialisation.spectra.Lognormal)
469
+ An initial [`Lognormal`](https://open-atmos.github.io/PySDM/PySDM/initialisation/spectra/lognormal.html#Lognormal)
470
470
  spectrum of dry aerosol particles is first initialised to equilibrium wet size for the given
471
471
  initial humidity.
472
472
  Subsequent particle growth due to [`Condensation`](https://open-atmos.github.io/PySDM/PySDM/dynamics/condensation.html) of water vapour (coupled with the release of latent heat)
@@ -476,7 +476,7 @@ Description: # PySDM
476
476
  and depict the evolution of
477
477
  [`PeakSupersaturation`](https://open-atmos.github.io/PySDM/PySDM/products/condensation/peak_supersaturation.html),
478
478
  [`EffectiveRadius`](https://open-atmos.github.io/PySDM/PySDM/products/size_spectral/effective_radius.html),
479
- [`ParticleConcentration`](https://open-atmos.github.io/PySDM/PySDM/products/size_spectral/particle_concentration.html#PySDM.products.particles_concentration.ParticleConcentration)
479
+ [`ParticleConcentration`](https://open-atmos.github.io/PySDM/PySDM/products/size_spectral/particle_concentration.html#ParticleConcentration)
480
480
  and the
481
481
  [`WaterMixingRatio `](https://open-atmos.github.io/PySDM/PySDM/products/size_spectral/water_mixing_ratio.html).
482
482
 
@@ -15,7 +15,6 @@ setup.py
15
15
  .github/workflows/cancel.yml
16
16
  .github/workflows/joss.yml
17
17
  .github/workflows/joss_paper.yml
18
- .github/workflows/pdoc_index_workaround.py
19
18
  .github/workflows/readme_snippets.yml
20
19
  .github/workflows/stale.yml
21
20
  .github/workflows/tests+artifacts+pypi.yml
@@ -177,6 +176,7 @@ PySDM/dynamics/impl/__init__.py
177
176
  PySDM/dynamics/impl/chemistry_utils.py
178
177
  PySDM/dynamics/impl/random_generator_optimizer.py
179
178
  PySDM/dynamics/impl/random_generator_optimizer_nopair.py
179
+ PySDM/dynamics/impl/register_dynamic.py
180
180
  PySDM/dynamics/terminal_velocity/__init__.py
181
181
  PySDM/dynamics/terminal_velocity/gunn_and_kinzer.py
182
182
  PySDM/dynamics/terminal_velocity/power_series.py
@@ -632,6 +632,7 @@ paper/paper.md
632
632
  paper/paperv1.md
633
633
  paper/readme.pdf
634
634
  paper/test.pdf
635
+ pdoc_templates/index.html.jinja2
635
636
  tests/__init__.py
636
637
  tests/examples_tests/__init__.py
637
638
  tests/examples_tests/conftest.py
@@ -776,6 +777,7 @@ tests/unit_tests/backends/storage/test_index.py
776
777
  tests/unit_tests/backends/storage/test_setitem.py
777
778
  tests/unit_tests/dynamics/__init__.py
778
779
  tests/unit_tests/dynamics/test_eulerian_advection.py
780
+ tests/unit_tests/dynamics/test_impl_register_dynamic.py
779
781
  tests/unit_tests/dynamics/test_isotopic_fractionation.py
780
782
  tests/unit_tests/dynamics/test_relaxed_velocity.py
781
783
  tests/unit_tests/dynamics/test_terminal_velocity.py