Skip to contents

Nets the nitrogen surviving manure management onto the field, applying the IPCC 2019 management-loss fractions to the collected/housed streams from split_manure_management(): applied_n = n_stream * (1 - FracLossMS) where FracLossMS = FracGasMS + FracLeachMS + EF3 + FracN2MS. The grazing (pasture/range/paddock) stream is deposited in situ and keeps its full nitrogen (its in-situ soil losses belong to the soil stage). Indirect N2O is reported as a labelled sub-flux of the already-removed volatilized and leached nitrogen (the same N is not removed twice). Carbon applied to the field is c_stream * (1 - c_loss_fraction), the stream's carbon less what its management system mineralises in storage, and the volatile solids are scaled by the same ratio. The applied C:N is therefore a RESULT of that loss rather than an imposed cap. Loss fractions and their sources are in inst/extdata/manure/manure_storage_c_loss.csv: nothing for grazing or daily spread, which have no storage stage; 0.420 of initial carbon for solid storage and 0.424 for poultry litter (Pardo et al. 2015, doi:10.1111/gcb.12806 ); 0.110 (cattle) and 0.128 (pigs) for slurry, derived from Kupper et al. 2020 (doi:10.1016/j.agee.2020.106963 ) using this package's own 0.47 kg C per kg volatile solids.

Until whep#1006 this was a cap, pmin(c_stream, applied_n * post-storage C:N), which produced a loss only as a side effect of holding the applied C:N down. That made the loss depend on the excreted composition rather than on the storage system: when excreted carbon moved, the reported loss for cattle solid storage fell from 40.3% to 6.9% with no coefficient changing.

Usage

apply_management_losses(split, options = list())

Arguments

split

A tibble from split_manure_management(), optionally with the n_bedding and c_bedding columns add_manure_bedding() adds.

options

A named list. method selects the loss method ("ipcc_2019_tier2"). bedding_c_loss selects how bedding carbon is treated in storage: "same_as_excreta" (default) or "none"; see the Bedding section. indirect_n2o_source selects the edition of indirect_n2o_ef the EF4 and EF5 of the indirect N2O are read from: "ipcc_2019" (default; EF5 0.011, Vol 4, Ch 11, Table 11.3 (Updated), p. 11.26 of the 2019 Refinement) or "ipcc_2006" (EF5 0.0075, Table 11.3, p. 11.24 of the 2006 Guidelines, the value shipped before whep#1245). EF4 is 0.010 in both, so only the leached share of n2o_indirect_n moves, by a factor of 1.467; applied_n does not. ef3_source selects the edition of ipcc_manure_ef3 the direct N2O of each stored stream is read from: "ipcc_2019" (default; Vol 4, Ch 10, Table 10.21 (Updated) of the 2019 Refinement) or "as_shipped" (the mixed table read before whep#601). It moves n2o_direct_n and n2_n, and so applied_n, of the collected streams; the grazing stream carries no management N2O either way. slurry_crust sets the liquid-slurry crust share under the 2019 edition: "half" (default, EF3 0.0025), "none" (0) or "all" (0.005); see ipcc_manure_ef3. method_direct_n2o records the choice (e.g. "ipcc_2019; slurry_crust_half").

Value

The input rows with manure_type, applied_n, applied_c, applied_vs, n_volatilized, n_leached, n2o_direct_n, n2_n, n2o_indirect_n, c_lost, vs_destroyed, n_bedding, c_bedding, method_losses, method_bedding_c, method_indirect_n2o and method_direct_n2o.

Bedding

When the rows carry n_bedding and c_bedding (from add_manure_bedding()), the straw bedded under housed animals is part of the manure that reaches the field, and the applied C:N is the C:N of the bedded farmyard manure rather than of the excreta alone. Without those columns nothing changes: they default to zero and every number is the excreta-only one.

Nitrogen follows IPCC 2019 Refinement Vol. 4 Ch. 10 Eq. 10.34 (p. 10.94) exactly: NbeddingMS sits outside the (1 - FracLossMS) term, because "mineralization of nitrogen compounds in beddings occurs more slowly compared to manure and the concentration of ammonia fraction in organic beddings is negligible", so "both volatilization and leaching losses during storage of bedding are assumed to be zero" (p. 10.93). Bedding nitrogen therefore raises applied_n one-for-one and raises none of the loss side-streams.

Carbon has no IPCC rule at all – manure CO2 is out of scope there – so bedding_c_loss selects it. "same_as_excreta" (default) applies the stream's own storage carbon-loss fraction to the bedding carbon too: the 0.420 for solid storage comes from Pardo et al. 2015 (doi:10.1111/gcb.12806 , Table 2), a systematic review of whole manure heaps, and a heap in solid storage in practice already contains its litter, so the measured loss is a whole-heap loss. "none" keeps every gram of bedding carbon, mirroring the zero storage loss IPCC gives bedding nitrogen; it is the upper bound on applied carbon and raises the applied carbon of a bedded solid-storage stream by 0.420 / (1 - 0.420) = 72% of the bedding carbon relative to the default.

Volatile solids stay excreta-only under both, so the Tier 2 methane engine in build_livestock_ghg_extension() is untouched. IPCC 2019 Ch. 10 does ask for bedding to be combined with volatile solids when estimating manure methane; that is a separate change to a separate engine and is not made here.

Examples

excretion <- tibble::tribble(
  ~year, ~territory, ~sub_territory, ~livestock_category,
  ~n_excretion, ~c_excretion, ~vs_excretion,
  2020L, "203", NA, "Cattle_milk", 100, 1900, 60
)
apply_management_losses(split_manure_management(excretion))
#> # A tibble: 5 × 24
#>    year territory sub_territory livestock_category species_gen mms_type         
#>   <int> <chr>     <lgl>         <chr>              <chr>       <chr>            
#> 1  2020 203       NA            Cattle_milk        Cattle      Anaerobic Lagoon 
#> 2  2020 203       NA            Cattle_milk        Cattle      Daily Spread     
#> 3  2020 203       NA            Cattle_milk        Cattle      Liquid/Slurry    
#> 4  2020 203       NA            Cattle_milk        Cattle      Pasture/Range/Pa…
#> 5  2020 203       NA            Cattle_milk        Cattle      Solid Storage    
#> # ℹ 18 more variables: manure_type <chr>, stream <chr>, applied_n <dbl>,
#> #   applied_c <dbl>, applied_vs <dbl>, n_volatilized <dbl>, n_leached <dbl>,
#> #   n2o_direct_n <dbl>, n2_n <dbl>, n2o_indirect_n <dbl>, c_lost <dbl>,
#> #   vs_destroyed <dbl>, n_bedding <dbl>, c_bedding <dbl>, method_losses <chr>,
#> #   method_bedding_c <chr>, method_indirect_n2o <chr>, method_direct_n2o <chr>