ESCOMP / CTSM

Community Terrestrial Systems Model (includes the Community Land Model of CESM)
http://www.cesm.ucar.edu/models/cesm2.0/land/
Other
309 stars 313 forks source link

Initialize t_soisno to 272K instead of 274K to avoid deep soil carbon in permafrost regions #1460

Closed olyson closed 3 years ago

olyson commented 3 years ago

Brief summary of bug

More of a undesirable model feature than a bug. We found that initializing t_soisno to 272K instead of 274K (for cold start) solves the problem of significant deep soil carbon in permafrost regions.

General bug information

CTSM version you are using: master/main (specific tag I'm using for testing is branch_tags/PPE.n08_ctsm5.1.dev023)

Does this bug cause significantly incorrect results in the model's science? Yes

Configurations affected: All BGC

Details of bug

There is too much soil carbon deep in the soil column in permafrost regions. Since t_soisno is initialized above freezing (274K) in a cold start, the model diffuses carbon deep into the soil column in the first couple of decades. Once the soil column eventually freezes that carbon is locked in. If t_soisno is initialized below freezing (272K) this doesn't happen. The effect on this on other models quantities appears to be minimal.

Important output or errors that show the problem

See the following section of the cnmatrix google document (https://docs.google.com/document/d/1yhcymw3FgGLlwAuLZxl7t-iQ021HbUlmAQlm9Vo7ewE/edit) for links to results/diagnostics):

"Initialize soil temperature at 272K instead of 274K. Timeseries plot of AD for a representative gridcell. Survivability timeseries plots for AD for default (t_soisno=274) and new (t_soisno=272). Diagnostics for AD with t_soisno=272 compared to t_soisno=274. Vertical profile plot for single point. Vertical profile plot for global. Diagnostics for pAD are here. (complete, seems to work, deep soil carbon doesn’t get frozen in in permafrost regions)."

The code modification required is in TemperatureType.F90, changing this line:

this%t_soisno_col(c,1:nlevgrnd) = 274._r8

to this:

this%t_soisno_col(c,1:nlevgrnd) = 272._r8

See /glade/work/oleson/PPE.n08_ctsm5.1.dev023/cime/scripts/ctsm51c6_PPEn08ctsm51d023_2deg_GSWP3V1_Sparse400_cs_ts_tsoisno272_2000AD/SourceMods/src.clm/TemperatureType.F90

ekluzek commented 3 years ago

Thanks for creating this as an issue @olyson. I'll include this update with a few other small answer changes that are scheduled.