Carbon
Overview¶
SWAT+ offers three soil carbon representations. The choice is set by the integer bsn_cc%cswat in codes.bsn:
cswat |
Model | Pools |
|---|---|---|
| 0 | Static (legacy) | Single residue + humus, C is not tracked as a state |
| 1 | C-FARM | Single active soil carbon pool with first-order turnover |
| 2 | Century | Three litter pools and three soil C pools (microbial, slow, passive) following Parton et al. (1993, 1994) |
The carbon model controls how plant residue, manure, tillage, and grazing inputs are routed into the soil and the subsequent CO2, N and P fluxes.
Process equations¶
Static (cswat = 0)¶
Mineralisation and immobilisation are computed in nut_nminrl.f90. There is no explicit soil C state. Plant residue carbon is implicit through the 0.42 * biomass conversion. Residue decomposes at rate
with 80% of mineralised N going to NO3 and 20% to active humus N. See nutrient cycling.
C-FARM (cswat = 1)¶
Selected when bsn_cc%cswat = 1. A single active soil organic carbon pool is updated daily through residue inputs, microbial decomposition, and tillage-driven mixing. The tillage method is set by bsn_cc%idc_till:
idc_till |
Method |
|---|---|
| 1 | DSSAT-style |
| 2 | EPIC-style |
| 3 | Kemanian (default) |
| 4 | DNDC-style |
In hru_control.f90, when cswat = 1:
Surface residue decomposes in cbn_surfrsd_decomp.f90 using the combined temperature-moisture factor csf from the N cycle. Below-ground residue is partitioned to soil pools through cbn_rsd_transfer.f90. The cbn_zhang2.f90 routine then runs the Century-style multi-pool turnover that C-FARM and Century share.
C-FARM also adds the plant biomass increment as carbon (hpc_d(j)%npp_c) and accumulates respiratory CO2.
Tillage residue mixing uses mgt_newtillmix_cswat1.f90 (vs mgt_newtillmix_cswat0.f90 for the static model). Tillage activity decays over till_eff_days days, controlled per layer by soil(j)%ly(ly)%tillagef_tillmix.
Century (cswat = 2)¶
The full Century pool scheme as implemented in cbn_zhang2.f90. Pools:
- Litter: structural (
ls), metabolic (lm), with the structural pool further split into lignin (lsl) and non-lignin - Soil organic carbon: microbial biomass (
bm), slow humus (hs), passive humus (hp)
For each pool, potential transformation under optimal conditions uses a first-order rate (the *_para rates in carbon_module.f90). Daily realised transformation is
cdg and sut are the temperature and water factors from the N cycle. ox is the oxygen factor
with OX_aa = 10.0, OX_bb = 0.035. xbm is the texture and structure factor: 1 in the surface litter and 1 - 0.75 * (silt + clay) elsewhere.
Default Parton optimal rates (per day):
| Pool | Surface | Subsurface |
|---|---|---|
| Microbial biomass (BMR) | 0.0164 | 0.02 |
| Slow humus (HSR) | - | 0.000548 |
| Passive humus (HPR) | - | 0.000012 |
| Metabolic litter (LMR) | 0.0405 | 0.0507 |
| Structural litter (LSR) | 0.0107 | 0.0132 |
CO2 allocations on transformation:
| From | To CO2 (surface) | To CO2 (subsurface) |
|---|---|---|
| Biomass | 0.60 | 0.85 - 0.68 * (silt+clay) |
| Metabolic litter | 0.60 | 0.55 |
| Non-lignin structural | 0.60 | 0.55 |
| Lignin structural | 0.30 | 0.30 |
| Slow humus | 0.55 | 0.55 |
| Passive humus | 0.55 | 0.55 |
Biomass-to-passive humus allocation in subsurface layers: 0.003 + 0.032 * clay. Slow-to-passive allocation: max(0.001, PRMT_45 - 0.00009 * clay) with PRMT_45 = 0.003.
Microbial-biomass leaching uses a water-balance form
with KOC = 4000 (organic carbon partition coefficient, part_DOC_para).
Lignin shape factor for structural litter: xlslf = exp(-3 * lslf) where lslf is lignin fraction of structural litter.
C:N ratios are kept within Parton bounds for each pool and the transformation can release or consume mineral N depending on the deficit (cpn1..cpn5 and sum1..sum5).
The basins_carbon.tes file overrides the Parton defaults. Read by carbon_read.f90 into cbn_tes (carbon_module.f90). The optional carbon_coef.cbn file (carbon_coef_read.f90) lets a user provide per-layer coefficients.
DOC and DIC¶
The Century implementation accumulates dissolved organic carbon (DOC) and dissolved inorganic carbon (DIC) percolation. Defaults peroc_DIC_para = 0.95, peroc_DOC_para = 0.70, hlife_doc_para = 50 days for DOC half-life in groundwater. Source: carbon_module.f90, cbn_zhang2.f90.
Switches and parameters¶
| File | Field | Default | Effect |
|---|---|---|---|
codes.bsn |
cswat |
0 | 0 = static, 1 = C-FARM, 2 = Century |
codes.bsn |
idc_till |
3 | Tillage method when cswat = 1 |
basins_carbon.tes |
(full Century coefficient set) | see carbon_module.f90 |
Overrides Parton defaults |
carbon_coef.cbn |
per-layer Century coefficients | optional | Layer-by-layer overrides |
Notable Century coefficients (from carbon_module.f90):
| Name | Default | Meaning |
|---|---|---|
CFB_para |
0.42 | Carbon fraction of residue |
er_POC_para |
1.5 | POC enrichment ratio |
peroc_DOC_para |
0.70 | DOC percolation coefficient |
peroc_DIC_para |
0.95 | DIC percolation coefficient |
part_DOC_para |
4000 | DOC partition coefficient |
hlife_doc_para |
50 days | DOC half-life in groundwater |
ALSLCO2_para |
0.30 | Lignin-to-CO2 allocation |
APCO2_para |
0.55 | Passive humus to CO2 |
ASCO2_para |
0.55 | Slow humus to CO2 |
BMR_para_sur / BMR_para_sub |
0.0164 / 0.02 | Microbial biomass turnover (d^-1) |
HPR_para |
0.000012 | Passive humus turnover (d^-1) |
HSR_para |
0.000548 | Slow humus turnover (d^-1) |
PRMT_45_para |
0.003 | Slow-to-passive allocation coefficient |
PRMT_51_para |
1.0 | Microbial activity coefficient for top layer |
OX_aa_para |
10.0 | Oxygen factor coefficient |
OX_bb_para |
0.035 | Oxygen factor coefficient |
Implementation¶
Core: cbn_zhang2.f90 (Century pool transformations), cbn_surfrsd_decomp.f90 (surface residue), cbn_rsd_decomp.f90 (sub-surface residue, used in legacy paths), cbn_rsd_transfer.f90 (residue routing into Century pools).
Inputs: carbon_module.f90 (data types and defaults), carbon_read.f90 (basins_carbon.tes), carbon_coef_read.f90 (carbon_coef.cbn).
Tillage: mgt_newtillmix_cswat0.f90, mgt_newtillmix_cswat1.f90, mgt_newtillmix_wet.f90, mgt_tillfactor.f90, mgt_biomix.f90.
Driver in hru_control.f90 switches by bsn_cc%cswat. Outputs are written by output_landscape_init.f90 and soil_nutcarb_write.f90. The cbn_diagnostics flag in carbon_module.f90 controls verbose layer printout.