JGCRI / hector

The Hector Simple Climate Model
http://jgcri.github.io/hector/
GNU General Public License v3.0
107 stars 45 forks source link

Enable permafrost by default in Hector #721

Closed bpbond closed 5 months ago

bpbond commented 6 months ago

Following #720 , this PR changes the model's INI files so that permafrost carbon is nonzero—i.e., enabled—by default. The parameterization follows that of Woodard et al. 2021.

Adding permafrost produces a warmer model overall:

pf-ssp245

Specifically, for SSP2.45 we see +100-150 ppm CO2 and +0.5 °C with permafrost enabled. The permafrost pool loses about 250 Pg C, and the thawed pool peaks about ~130 Pg C. These results are consistent with Figure 3 in Woodard et al. (which used a much older version of the model and different parameterization).

As expected, there's almost no difference between running a single global biome and splitting into two biomes. This changes if we impose a 2x warming in the permafrost biome, as done by Woodard et al., but it seems cleaner and clearer for the default model to use a single global biome.

Note: the early 1990s squiggle in the permafrost_c pool is due to the large Mt. Pinatubo cooling effect, which causes significant (re)freezing of soil carbon. This is expected.

Closes #675

bpbond commented 6 months ago

For a full context, here are diagnostics for two extreme SSPs:

pf-ssp119

pf-ssp585

github-actions[bot] commented 6 months ago

Differences in Hector outputs

Hello, this is leeyabot!

The current pull request's outputs do not differ from 3.1.1 (b9c5a4e5).

bpbond commented 6 months ago

Closing down for the long weekend. @kdorheim I have resolved most issues but a few R tests are still failing:

Screenshot 2023-12-29 at 5 42 14 PM

I will deal with those in 2024! 🥳

github-actions[bot] commented 6 months ago

Differences in Hector outputs

Hello, this is leeyabot!

The current pull request's outputs do not differ from 3.1.1 (b9c5a4e5).

bpbond commented 6 months ago

@kdorheim There is something subtle causing the model's climate to diverge, ever so slightly, when the we compare global versus biome-specific runs in test-biome.R. Ugh, it is being a complete PITA to track down. I will update when I know more.

bpbond commented 6 months ago

Here's what is happening when we hit the test in test-biome.R. This runs the model with a single global biome (A), splits the biome into two, resets the model, runs again (B), and then compares A and B:

1-no_rounding

We're failing the test because the default tolerance is 1.5e-8 — very stringent. Above I've plotted with a tolerance of 1e-4 and you can see that by the end of the 21st century the model's climate has diverged 0.05 ppm CO2 and ~0.0003 degC between the two runs.