Skip to content

feat(P3): implement additional rates + some fixes#681

Open
haakon-e wants to merge 4 commits intomainfrom
he/update-p3-melting
Open

feat(P3): implement additional rates + some fixes#681
haakon-e wants to merge 4 commits intomainfrom
he/update-p3-melting

Conversation

@haakon-e
Copy link
Copy Markdown
Member

@haakon-e haakon-e commented Feb 12, 2026

This pull request adds new rates for the 2M (with P3) microphysics scheme, including

  • ice self-collection
  • sublimation/deposition
  • heterogeneous ice nucleation (Frostenberg mean)
  • deposition nucleation

Notably, these additional rates mean ice number is now adjusted by the P3 scheme.

Additional changes include

  • adding a method for numerical epsilon for rime volume
  • squashing a few bugs
  • improving docs
  • no longer limiting het_ice_nucleation and ice_melt by dt
    • TODO: Reformulate these methods as rates, instead of absolute changes in number concentration.

@haakon-e
Copy link
Copy Markdown
Member Author

haakon-e commented Feb 12, 2026

@haakon-e haakon-e changed the base branch from he/docs-improve-formatting-fix-typo to main February 17, 2026 21:53
@haakon-e haakon-e force-pushed the he/update-p3-melting branch 3 times, most recently from eeadbe5 to 1f5f9a8 Compare February 20, 2026 20:12
@haakon-e haakon-e changed the base branch from main to he/fix-2m-tendencies March 2, 2026 00:50
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from 1f5f9a8 to c172fe9 Compare March 2, 2026 00:50
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch from fbd7881 to e88d224 Compare March 2, 2026 01:04
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from c172fe9 to 5e20908 Compare March 2, 2026 01:04
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch from e88d224 to f5021ff Compare March 2, 2026 01:45
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from 5e20908 to 85389a5 Compare March 2, 2026 01:45
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch from f5021ff to 5c10212 Compare March 2, 2026 01:48
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from 85389a5 to 07bcdda Compare March 2, 2026 01:48
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch from 5c10212 to c06175b Compare March 2, 2026 01:49
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from 07bcdda to e3cf649 Compare March 2, 2026 01:49
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch 2 times, most recently from ec34417 to d3091fb Compare March 2, 2026 02:05
@haakon-e haakon-e force-pushed the he/update-p3-melting branch 2 times, most recently from f0ea9b8 to e1dd6a8 Compare March 2, 2026 02:22
Copy link
Copy Markdown
Member Author

@haakon-e haakon-e left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

comments to assist review.

Comment thread docs/src/plots/P3ImmersionFreezing.jl
Comment thread docs/src/plots/P3Melting.jl
Comment thread src/parameters/Microphysics2MParams.jl Outdated
Comment thread src/BulkMicrophysicsTendencies.jl Outdated
dn_ice_dt += n_dep
dq_ice_dt += m_dep
dq_rim_dt += m_dep
db_rim_dt += m_dep / 900
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dividing by 900 here is related to my note to self in src/parameters/MicrophysicsP3.jl. Need to check which ice densities I need.

Comment thread src/BulkMicrophysicsTendencies.jl
Comment thread src/IceNucleation.jl
Comment thread src/P3_processes.jl
Comment thread src/P3_processes.jl
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch from d3091fb to 9a89238 Compare March 11, 2026 22:47
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from e1dd6a8 to 3223573 Compare March 11, 2026 22:47
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch from 9a89238 to d11950c Compare March 11, 2026 22:54
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from 3223573 to 14b07f3 Compare March 11, 2026 22:54
@haakon-e haakon-e changed the title fix: do not limit P3 melting with dt feat(P3): implement additional rates + some fixes Mar 11, 2026
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch from d11950c to 74e6b25 Compare March 11, 2026 23:10
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from 14b07f3 to d1764d5 Compare March 11, 2026 23:10
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch from 9566603 to 995c1e6 Compare March 18, 2026 21:19
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from 6d77112 to ad42162 Compare March 18, 2026 21:19
@trontrytel trontrytel added the Needs review Please review my pull request label Mar 18, 2026
Comment thread src/BulkMicrophysicsTendencies.jl Outdated
Comment thread src/Common.jl
The ventilation factor is given by

```math
F_v(D) = a_v + b_v ⋅ ∛Sc ⋅ √Re(D)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we use cbrt instead of ∛ ?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And sqrt too

@haakon-e haakon-e force-pushed the he/update-p3-melting branch from ad42162 to f004be0 Compare March 19, 2026 17:40
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch from 995c1e6 to 2505161 Compare March 19, 2026 21:51
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from f004be0 to b91bcdf Compare March 19, 2026 21:51
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch from 2505161 to e6b719c Compare March 20, 2026 01:20
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from b91bcdf to f49bff2 Compare March 20, 2026 01:20
Comment thread src/BulkMicrophysicsTendencies.jl Outdated

# TODO: The parameterixation should return a rate, `∂N/∂t`, not number changes `ΔN`
inpc = CM_HetIce.INP_concentration_mean(heterogeneous, T) / ρ # [particles / kg air]
n_het = max(0, inpc - n_ice) # [particles / kg air]
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is fine. But we could also track how many particles were created through heterogeneous ice formation separately. And then cap heterogeneous ice formation based on that. As it is right now, we could exceed this threshold because of other ice multiplication processes, not just because we have used up all INPs

Comment thread src/BulkMicrophysicsTendencies.jl Outdated
Comment thread src/BulkMicrophysicsTendencies.jl Outdated
Comment thread src/BulkMicrophysicsTendencies.jl Outdated
Copy link
Copy Markdown
Member

@trontrytel trontrytel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left some comments. Looks great, and I'm sure we will have more fixes as we start running it in Atmos

@trontrytel trontrytel added Approved 🍀 and removed Needs review Please review my pull request labels Mar 20, 2026
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch from e6b719c to 737a3ea Compare March 20, 2026 21:01
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from f49bff2 to 7ef4121 Compare March 20, 2026 21:01
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch from 737a3ea to 4ecaff8 Compare March 20, 2026 21:51
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from 7ef4121 to b86c198 Compare March 20, 2026 21:51
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch from 4ecaff8 to e6bcd40 Compare March 20, 2026 23:21
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from b86c198 to 6badb1a Compare March 20, 2026 23:21
- To improve compilation of some GPU kernels,
provide an unrolled implementation of logsumexp
new tendencies for bulk 2M scheme:
- ice self-collection
- ice sublimation / vapor deposition
- empirical ice nucleation (Frostenberg mean)

numerics:
- add numeric epsilon for rime volume
- squash a few bugs
- improve docs
@haakon-e haakon-e force-pushed the he/fix-2m-tendencies branch from e6bcd40 to e0496e3 Compare March 22, 2026 22:29
@haakon-e haakon-e force-pushed the he/update-p3-melting branch from 6badb1a to f7f4661 Compare March 22, 2026 22:31
Base automatically changed from he/fix-2m-tendencies to main March 24, 2026 02:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Approved 🍀 P3 Predicted particle properties

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add collisions/coalescence parameterizations P3: Microphysical rates

2 participants