Skip to content

Conversation

tluettm
Copy link
Collaborator

@tluettm tluettm commented Jan 4, 2025

Added homogeneous freezing routines as an optional freezing mode in the freezing dynamic

Copy link

codecov bot commented May 19, 2025

Codecov Report

Attention: Patch coverage is 92.85714% with 12 lines in your changes missing coverage. Please review.

Project coverage is 85.66%. Comparing base (fcdf165) to head (c8afbe2).
Report is 3 commits behind head on main.

Files with missing lines Patch % Lines
...DM/physics/homogeneous_ice_nucleation_rate/null.py 76.92% 3 Missing ⚠️
...hysics/homogeneous_ice_nucleation_rate/constant.py 84.61% 2 Missing ⚠️
...DM/physics/homogeneous_ice_nucleation_rate/koop.py 84.61% 2 Missing ⚠️
...ysics/homogeneous_ice_nucleation_rate/koop_corr.py 84.61% 2 Missing ⚠️
...ics/homogeneous_ice_nucleation_rate/koop_murray.py 84.61% 2 Missing ⚠️
PySDM/physics/trivia.py 66.66% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1488      +/-   ##
==========================================
+ Coverage   85.53%   85.66%   +0.12%     
==========================================
  Files         396      403       +7     
  Lines        9601     9771     +170     
==========================================
+ Hits         8212     8370     +158     
- Misses       1389     1401      +12     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@slayoo slayoo changed the title Homogeneous freezing Homogeneous freezing (as a new option in Freezing dynamic, disabled by default + new physics formulae for hom. nucl. rate); new example: Spichtinger_et_al_2023 Jun 9, 2025
@slayoo
Copy link
Member

slayoo commented Jun 10, 2025

@tluettm, trying to figure out why the windows condensation_c examples set consistently timeouts on Windows, I've noticed that in this PR's builds we have the following timings (windows-latest, 3.12, condensation_c):

============================ slowest 10 durations =============================
373.91s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Abade_and_Albuquerque_2024\\fig_2.ipynb]
213.65s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Grabowski_and_Pawlowska_2023\\figure_3.ipynb]
211.55s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Grabowski_and_Pawlowska_2023\\figure_4.ipynb]
209.62s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Grabowski_and_Pawlowska_2023\\figure_ripening_rate.ipynb]
145.35s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Grabowski_and_Pawlowska_2023\\figure_1.ipynb]
145.11s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Grabowski_and_Pawlowska_2023\\figure_2.ipynb]
124.77s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Jensen_and_Nugent_2017\\Fig_4_and_7_and_Tab_4_bottom_rows.ipynb]
124.51s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Jensen_and_Nugent_2017\\Fig_3_and_Tab_4_upper_rows.ipynb]
123.46s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Jensen_and_Nugent_2017\\Fig_6.ipynb]
123.33s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Jensen_and_Nugent_2017\\Fig_5.ipynb]
======================= 25 passed in 1944.32s (0:32:24) =======================

while the current main branch gives (also windows-latest, 3.12, condensation_c):

============================ slowest 10 durations =============================
359.66s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Abade_and_Albuquerque_2024\\fig_2.ipynb]
201.63s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Grabowski_and_Pawlowska_2023\\figure_3.ipynb]
200.23s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Grabowski_and_Pawlowska_2023\\figure_4.ipynb]
199.16s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Grabowski_and_Pawlowska_2023\\figure_ripening_rate.ipynb]
137.97s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Grabowski_and_Pawlowska_2023\\figure_1.ipynb]
137.29s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Grabowski_and_Pawlowska_2023\\figure_2.ipynb]
118.93s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Jensen_and_Nugent_2017\\Fig_3_and_Tab_4_upper_rows.ipynb]
118.18s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Jensen_and_Nugent_2017\\Fig_4_and_7_and_Tab_4_bottom_rows.ipynb]
117.47s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Jensen_and_Nugent_2017\\Fig_6.ipynb]
117.11s call     tests/examples_tests/test_run_notebooks.py::test_run_notebooks[D:\\a\\PySDM\\PySDM\\examples\\PySDM_examples\\Jensen_and_Nugent_2017\\Fig_5.ipynb]
======================= 25 passed in 1857.59s (0:30:57) =======================

It is 1.5 minutes longer now, and seems the longer time is reproducible.
I wonder if this could be caused by longer compilation time in FreezingMethods::__init__()?
Perhaps worth checking if introducing @cached_property could help?

@tluettm
Copy link
Collaborator Author

tluettm commented Jun 12, 2025

@slayoo You can try to add it where you think it would help. For me its not clear where to introduce @cached_property without getting a TypeError

@tluettm tluettm added this pull request to the merge queue Jun 18, 2025
Merged via the queue into open-atmos:main with commit 9717362 Jun 18, 2025
536 of 541 checks passed
emmacware pushed a commit to emmacware/PySDM that referenced this pull request Jun 20, 2025
… by default + new physics formulae for hom. nucl. rate); new example: `Spichtinger_et_al_2023` (open-atmos#1488)

Co-authored-by: Sylwester Arabas <[email protected]>
emmacware pushed a commit to emmacware/PySDM that referenced this pull request Jul 22, 2025
… by default + new physics formulae for hom. nucl. rate); new example: `Spichtinger_et_al_2023` (open-atmos#1488)

Co-authored-by: Sylwester Arabas <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants