Skip to content

Bulk droplet activation destroyed by uninitialized mode parameters (dispersion_aer==0) in ndrop_bam.F90 #1594

Description

@duncanwp

Summary

In the bulk-aerosol droplet activation code (ndrop_bam.F90), modes with dispersion_aer == 0 never get their f1, f2, eta parameters set, but maxsat reads all three for every mode with no guard — leading to nondeterministic, often near-total suppression of activation.

Location

src/physics/cam/ndrop_bam.F90:188-222, 321-357, 482-508

Problem

Modes with dispersion_aer == 0 (e.g. volcanic aerosol — the case the skip logic was added for) never get f1, f2, eta assigned, but maxsat reads all three for every mode with no guard. Garbage eta near zero triggers the sum = 1.e20 branch, forcing smax ≈ 1e-10 and suppressing essentially all activation; other garbage values perturb smax arbitrarily.

Impact

Nondeterministic (compiler/memory-dependent) droplet activation in bulk-aerosol (CAM4-physics) configurations containing any zero-dispersion climate aerosol. Affects prognostic state.

Suggested fix

Guard the maxsat accumulation so zero-dispersion modes are skipped consistently (matching the skip logic elsewhere), or initialize f1/f2/eta to inert values for those modes.


Found via a systematic line-by-line scientific code review of src/physics/cam/ at commit 21a78294 (≈cam6_4_180). This is a candidate bug identified by code inspection; it has not yet been confirmed by a model run. An issue-tracker search on 2026-06-11 found no existing report.

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

Status
To Do

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions