//--------------------------------------------------------------------- /// <summary> /// Adds frass for a species to the foliar LITTER pools at a site. /// Assumes that some of the N has been resorbed. /// </summary> public static void AddFrassLitter(double inputFrassBiomass, ISpecies species, ActiveSite site) { double inputDecayValue = 1.0; // Decay value is calculated for surface/soil layers (leaf/fine root), // therefore, this is just a dummy value. if (inputFrassBiomass > 0) { //SiteVars.LitterfallC[site] += defoliatedLeafBiomass * 0.47; //double frassBiomass = Math.Max(0.0, OtherData.frassdepk * defoliatedLeafBiomass); // Frass C added is a function of defoliated leaf biomass, but adjusted for the CN of litter and frass // Any C lost is due to insect metabolism double inputFrassC = inputFrassBiomass * 0.47; double inputFrassN = inputFrassC / (double)SpeciesData.LeafLitterCN[species]; double actualFrassC = inputFrassN * (double)OtherData.CNratiofrass; // the difference between input and actual is C lost to insect metabolism double actualFrassBiomass = actualFrassC / 0.47; //PlugIn.ModelCore.UI.WriteLine("AddFrass.Month={0:0}, inputfrassN={1:0.000}, inputfrassbiomass={2:0.00}, actualfrassbiomass={3:0.00} ", Century.Month, inputFrassN, inputFrassBiomass, actualFrassBiomass); SiteVars.FrassC[site] += actualFrassC; LitterLayer.PartitionResidue( actualFrassBiomass, inputDecayValue, OtherData.CNratiofrass, 0.1, OtherData.StructuralCN, LayerName.Leaf, LayerType.Surface, site); } }
//--------------------------------------------------------------------- /// <summary> /// Adds some biomass for a species to the foliar LITTER pools at a site. /// Assumes that some of the N has been resorbed. /// </summary> public static void AddResorbedFoliageLitter(double foliarBiomass, ISpecies species, ActiveSite site) { double inputDecayValue = 1.0; // Decay value is calculated for surface/soil layers (leaf/fine root), // therefore, this is just a dummy value. if (foliarBiomass > 0) { SiteVars.LitterfallC[site] += foliarBiomass * 0.47; LitterLayer.PartitionResidue( foliarBiomass, inputDecayValue, SpeciesData.LeafLitterCN[species], SpeciesData.LeafLignin[species], OtherData.StructuralCN, LayerName.Leaf, LayerType.Surface, site); } }
//--------------------------------------------------------------------- /// <summary> /// Kills fine roots and add the biomass to the Dead Fine Roots pool. /// </summary> public static void AddFineRootLitter(double abovegroundFoliarBiomass, ICohort cohort, ISpecies species, ActiveSite site) { double fineRootBiomass = CalculateFineRoot(cohort, abovegroundFoliarBiomass); double inputDecayValue = 1.0; // Decay value is calculated for surface/soil (leaf/fine root), // therefore, this is just a dummy value. if (fineRootBiomass > 0) { LitterLayer.PartitionResidue( fineRootBiomass, inputDecayValue, SpeciesData.FineRootCN[species], SpeciesData.FineRootLignin[species], OtherData.StructuralCN, LayerName.FineRoot, LayerType.Soil, site); } }