private void OnPlantEnding(object sender, EventArgs e) { if (Wt > 0.0) { Detached.Add(Live); Detached.Add(Dead); SurfaceOrganicMatter.Add(Wt * 10, N * 10, 0, Plant.CropType, Name); } Clear(); }
private void OnPlantEnding(object sender, EventArgs e) { Biomass total = Live + Dead; if (total.Wt > 0.0) { Detached.Add(Live); Detached.Add(Dead); SurfaceOrganicMatter.Add(total.Wt * 10, total.N * 10, 0, Plant.CropType, Name); } Clear(); }
protected void OnDoActualPlantGrowth(object sender, EventArgs e) { if (Plant.IsAlive) { Biomass Loss = new Biomass(); Loss.StructuralWt = Live.StructuralWt * SenescenceRate; Loss.NonStructuralWt = Live.NonStructuralWt * SenescenceRate; Loss.StructuralN = Live.StructuralN * SenescenceRate; Loss.NonStructuralN = Live.NonStructuralN * SenescenceRate; Live.StructuralWt -= Loss.StructuralWt; Live.NonStructuralWt -= Loss.NonStructuralWt; Live.StructuralN -= Loss.StructuralN; Live.NonStructuralN -= Loss.NonStructuralN; Dead.StructuralWt += Loss.StructuralWt; Dead.NonStructuralWt += Loss.NonStructuralWt; Dead.StructuralN += Loss.StructuralN; Dead.NonStructuralN += Loss.NonStructuralN; double DetachedFrac = 0; if (DetachmentRateFunction != null) { DetachedFrac = DetachmentRateFunction.Value; } if (DetachedFrac > 0.0) { double DetachedWt = Dead.Wt * DetachedFrac; double DetachedN = Dead.N * DetachedFrac; Dead.StructuralWt *= (1 - DetachedFrac); Dead.StructuralN *= (1 - DetachedFrac); Dead.NonStructuralWt *= (1 - DetachedFrac); Dead.NonStructuralN *= (1 - DetachedFrac); Dead.MetabolicWt *= (1 - DetachedFrac); Dead.MetabolicN *= (1 - DetachedFrac); if (DetachedWt > 0) { SurfaceOrganicMatter.Add(DetachedWt * 10, DetachedN * 10, 0, Plant.CropType, Name); } } if (DryMatterContent != null) { LiveFWt = Live.Wt / DryMatterContent.Value; } } }
/// <summary> /// Populate the AddFaecesType object /// </summary> /// <param name="iPaddID"></param> /// <param name="aValue"></param> /// <returns></returns> private bool PopulateFaeces(int iPaddID, SurfaceOrganicMatter.AddFaecesType aValue) { int N = (int)GrazType.TOMElement.N; int P = (int)GrazType.TOMElement.P; int S = (int)GrazType.TOMElement.S; bool result = false; FModel.ReturnExcretion(iPaddID, out FExcretion); if (FExcretion.dDefaecations > 0) { aValue.Defaecations = FExcretion.dDefaecations; aValue.VolumePerDefaecation = FExcretion.dDefaecationVolume; aValue.AreaPerDefaecation = FExcretion.dDefaecationArea; aValue.Eccentricity = FExcretion.dDefaecationEccentricity; aValue.OMWeight = FExcretion.OrgFaeces.DM; aValue.OMN = FExcretion.OrgFaeces.Nu[N]; aValue.OMP = FExcretion.OrgFaeces.Nu[P]; aValue.OMS = FExcretion.OrgFaeces.Nu[S]; aValue.OMAshAlk = FExcretion.OrgFaeces.AshAlk; aValue.NO3N = FExcretion.InOrgFaeces.Nu[N] * FExcretion.dFaecalNO3Propn; aValue.NH4N = FExcretion.InOrgFaeces.Nu[N] * (1.0 - FExcretion.dFaecalNO3Propn); aValue.POXP = FExcretion.InOrgFaeces.Nu[P]; aValue.SO4S = FExcretion.InOrgFaeces.Nu[S]; result = true; } return result; }