Skip to content

aerocore: defects in the aerosol path - #58

Open
Sohex wants to merge 1 commit into
alphaparrot:masterfrom
Sohex:fix/aerocore-defects
Open

aerocore: defects in the aerosol path#58
Sohex wants to merge 1 commit into
alphaparrot:masterfrom
Sohex:fix/aerocore-defects

Conversation

@Sohex

@Sohex Sohex commented Aug 19, 2026

Copy link
Copy Markdown

The aerosol module compiles and is reachable through l_aero, and carries several independent defects that would surface on a first use of that path. They are fixed together because they are found together and none is usefully separable.

Offered as groundwork rather than as a fix to observed behaviour. With l_aero at its default the module does nothing, so no current run changes; what changes is that the path is correct for anyone who turns it on.

The diff is commented per defect. Compiles cleanly.

I am happy to split this into one commit per defect if you would rather review them separately.

The aerosol module compiles and is reachable through l_aero, but the code path
has evidently never been run: it carries several independent defects that would
show up immediately on a first use. They are fixed together here because they
are found together and none is separable in a useful way.

This is offered as groundwork rather than as a fix to observed behaviour. With
l_aero at its default the module does nothing, so nothing in a current run
changes; what changes is that the path is correct for anyone who turns it on.

The details are in the diff, which is commented per defect.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Sohex

Sohex commented Aug 19, 2026

Copy link
Copy Markdown
Author

A cross-check that may help when you and Maureen scope the re-run: the viscosity exponent in this PR is confirmed by Cohen et al. (2024)'s own appendix.

Their eq. A5 gives the Rosner (1986) parameterisation as

η = 5·√(π·m·k_B·T)·(k_B·T/ε)^0.16 / (16 · 1.22 · π·d²)

with m = 4.652e-26 kg, d = 3.64e-10 m and ε/k_B = 95.5 K for N₂. The code writes that exponent as (4/25) — which in Fortran is integer division and evaluates to 0, so (temp/eps)**0 = 1 and the temperature dependence is deleted outright. Every other factor in the expression matches A5 exactly; it is only the exponent that is lost.

So the paper documents 0.16 and the model computed 0. The size of it, using their own ε:

T (K) (T/95.5)^0.16 viscosity low by Stokes settling fast by
200 1.126 11.2% 12.6%
250 1.167 14.3% 16.6%
300 1.201 16.7% 20.1%

Settling goes as 1/η, so for temperate rocky planets around 250 K the particles were falling roughly 17% too fast. That is a systematic bias in the settling scheme rather than noise, and it is in the same direction everywhere, so it should show up as a coherent shift in the equilibrium haze burden rather than as scatter.

Worth pairing with #60 (the radiation was using radmod's hardcoded 50 nm rather than the configured radius) and #61 (the bottom-layer sink) when deciding what a re-run needs to carry.

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.

1 participant