Findings — 2026-05-02¶
Identifiability is per-parameter and per-observation-type¶
The main finding from this round of work. Joint recovery of four parameters of a closed-loop NPZ system (μ uptake rate, m_lin linear mortality, m_quad quadratic mortality, r_remin remineralization fraction) gives sharply different results depending on what is observed:
| Parameter | Steady-state observations | Time-resolved observations | Improvement |
|---|---|---|---|
| μ | 79 % rel RMSE | 11 % | 7× |
| m_lin | 46 % | 22 % | 2× |
| m_quad | 47 % | 42 % | 1.1× |
| r_remin | 308 % | 88 % | 3.5× |
Time-resolved observations (five snapshots through the integration rather than one final snapshot) work for μ, only partly help m_lin and r_remin, and barely help m_quad. The underlying reason is that closed-loop cycling lets parameters trade off against each other when only the final state is seen; the cycling rate itself only shows up in the trajectory shape.
r_remin keeps a residual partial overlap with the mortality terms because it shows up in the equations as a product (recycle = r_remin × mortality). Even time-resolved data does not fully break this. Pinning down r_remin would need a different observation type entirely (POC export flux, total mass), not better statistics on N and P.
What this means for real Darwin: BGC-Argo time series will pin down rate parameters that ship-cruise snapshots cannot; some parameter pairs will need extra observation types whatever the time resolution. Identifiability has to be checked per parameter against the available observations, not assumed.
Recovery behaviour of the differentiable setup¶
The other prototype results, in order of complexity:
- Single-tracer 1D reaction-diffusion: depth-dependent loss rate λ(z) recovered at 2.3 % rel RMSE from one noisy final snapshot.
- Coupled nutrient + phytoplankton with fixed mortality, learning only the depth-dependent uptake rate μ(z): 11.5 % on μ; observed N fit 1.6 %, observed P fit 10.3 %.
- Same coupled system, joint recovery of μ(z) and depth-dependent mortality(z): μ 6.1 %, mortality 8.6 %, N fit 1.4 %, P fit 9.3 %. μ recovery improves over the single-parameter case because the model no longer has to push μ around to make up for a wrong fixed mortality.
In all four cases, autograd flows correctly through hand-written numerical integration of the time-stepped physics, the neural-network-predicts-parameter pairing is stable across thousands of training steps, and gradient descent converges. Mass conservation holds to within 5 % when recycling is full (forward-Euler numerical drift only) — the integrator is closed correctly.
Verified parameter inventory of ECCO-Darwin¶
- Darwin 1 (Carroll 2020 build): 103 independent tunable scalar parameters. Carroll et al. 2020 calibrated 6 of them through Green's functions (iron dust solubility, iron scavenging rate, small phytoplankton growth rate, large phytoplankton growth rate, diatom palatability, PIC/POC ratio) — 5.8 % calibration coverage. The other 94 % are held at expert or literature defaults. One of those (the 100-day fixed DOC remineralization rate) is explicitly flagged by Savelli et al. 2026 as a real limitation of the current calibration.
- Darwin 3 (recent rework, used in v05 and v06 setups): 100 distinct tunable parameter names exposed through the namelist, 657 individual values when arrays are expanded across plankton, group, and matrix dimensions. Darwin 3 is namelist-driven — parameters that change across space can be learned without recompiling the source, unlike Darwin 1 where most kinetic parameters live in hard-coded Fortran.
Full per-parameter listings with file and line references for both Darwin 1 and Darwin 3: docs/ecco_darwin_parameter_inventory.md.