public void UpdateFallowWaterBalance(HowLeakyEngine Sim) { try { if (Sim.InFallow()) { SumFallowRainfall += Sim.ClimateModule.Rain; SumFallowRunoff += Sim.SoilModule.Runoff; SumFallowSoilevaporation += Sim.SoilModule.SoilEvap; SumFallowDrainage += Sim.SoilModule.DeepDrainage; SumFallowSoilerosion += Sim.SoilModule.HillSlopeErosion; if (Sim.SoilModule.TotalCoverAllCrops > 0.5) { ++FallowDaysWithMore50pcCov; } } else if (Sim.IsPlanting()) { SumFallowSoilwater += Sim.CalcFallowSoilWater(); } } catch (Exception e) { throw new Exception(e.Message); } }
public SimulationThread(ProjectHLK project, List <Simulation> simulations, HowLeakyOutputType outputType = HowLeakyOutputType.DailyBin) { var remapdict = BuildOutputsRemapDict(project.OutputsCSV.Split(',').ToList()); OutputType = outputType; // SQLiteFilename=Path.Combine(project.OutputsDirectory,$"Outputs.sqlite"); HLEngine = new HowLeakyEngine(project.OutputsCSV, remapdict); Simulations = simulations; Project = project; }
// public string SQLiteFilename{get;set;} public SimulationThread(ProjectHLK project, KeyValuePair <string, List <Simulation> > pair, HowLeakyOutputType outputType = HowLeakyOutputType.DailyBin) { var remapdict = BuildOutputsRemapDict(project.OutputsCSV.Split(',').ToList()); OutputType = outputType; // SQLiteFilename=Path.Combine(project.OutputsDirectory,$"{pair.Key}.sqlite"); HLEngine = new HowLeakyEngine(project.OutputsCSV, remapdict); Simulations = pair.Value; Project = project; }
public void CalculateSummaryOutputs(HowLeakyEngine Sim, _CustomHowLeakyEngine_VegModule crop) { double denom = crop.PlantingCount; AvgCropRainfall = MathTools.Divide(SumCropRainfall, denom); AvgCropIrrigation = MathTools.Divide(SumCropIrrigation, denom); AvgCropRunoff = MathTools.Divide(SumCropRunoff, denom); CropSoilEvaporation = MathTools.Divide(SumCropSoilEvaporation, denom); CropTranspiration = MathTools.Divide(SumCropTranspiration, denom); AvgCropEvapoTranspiration = MathTools.Divide(SumCropEvapotranspiration, denom); AvgCropOverflow = MathTools.Divide(SumCropOverflow, denom); AvgCropDrainage = MathTools.Divide(SumCropDrainage, denom); AvgCropLateralFlow = MathTools.Divide(SumCropLateralFlow, denom); AvgCropSoilErrosion = MathTools.Divide(SumCropSoilErosion, denom); AnnualCropSedimentDelivery = MathTools.Divide(SumCropSoilErosion, denom) * Sim.SoilModule.InputModel.SedDelivRatio; }
public void Update(HowLeakyEngine Sim) { try { var month = Sim.TodaysDate.Month - 1; Rainfall[month] += Sim.ClimateModule.Rain; Irrigation[month] += Sim.SoilModule.Irrigation; Runoff[month] += Sim.SoilModule.Runoff; Potevap[month] += Sim.SoilModule.PotSoilEvap; SoilEvaporation[month] += Sim.SoilModule.SoilEvap; Transpiration[month] += Sim.GetTotalTranspiration(); Evapotranspiration[month] += (Sim.SoilModule.SoilEvap + Sim.GetTotalTranspiration()); Overflow[month] += Sim.SoilModule.Overflow; Drainage[month] += Sim.SoilModule.DeepDrainage; LateralFlow[month] += Sim.SoilModule.LateralFlow; SoilErosion[month] += Sim.SoilModule.HillSlopeErosion; Counts[month] += 1; } catch (Exception e) { throw new Exception(e.Message); } }
public void UpdateCropWaterBalance(HowLeakyEngine Sim, _CustomHowLeakyEngine_VegModule crop) { try { if (crop.ExistsInTheGround) { SumCropRainfall += Sim.ClimateModule.Rain; SumCropIrrigation += Sim.SoilModule.Irrigation; SumCropRunoff += Sim.SoilModule.Runoff; SumCropSoilEvaporation += Sim.SoilModule.SoilEvap; SumCropTranspiration += crop.TotalTranspiration; SumCropEvapotranspiration = SumCropSoilEvaporation + SumCropTranspiration; SumCropOverflow += Sim.SoilModule.Overflow; SumCropDrainage += Sim.SoilModule.DeepDrainage; SumCropLateralFlow += Sim.SoilModule.LateralFlow; SumCropSoilErosion += Sim.SoilModule.HillSlopeErosion; } } catch (Exception e) { throw (new Exception(e.Message)); } }
public void UpdateCropSummary(HowLeakyEngine Sim, _CustomHowLeakyEngine_VegModule crop) { double numyears = (double)(Sim.NumberOfDaysInSimulation / 365.0); //TODO: Should this be a double if (!MathTools.DoublesAreEqual(crop.HarvestCount, 0)) { YieldPerHarvest = crop.CumulativeYield / (double)crop.HarvestCount; } else { YieldPerHarvest = 0; } YieldPerYear = crop.CumulativeYield / numyears; if (!MathTools.DoublesAreEqual(crop.PlantingCount, 0)) { CropsHarvestedDivCropsPlanted = crop.HarvestCount / (double)crop.PlantingCount * 100.0; YieldPerPlant = crop.CumulativeYield / (double)crop.PlantingCount; } else { CropsHarvestedDivCropsPlanted = 0; YieldPerPlant = 0; } if (!MathTools.DoublesAreEqual(crop.AccumulatedTranspiration, 0)) { YieldDivTranspir = crop.CumulativeYield / crop.AccumulatedTranspiration; ResidueCovDivTranspir = crop.AccumulatedResidue / crop.AccumulatedTranspiration; } else { YieldDivTranspir = 0; ResidueCovDivTranspir = 0; } }
public virtual void ConnectToSimulation(HowLeakyEngine sim) { }
public override void ConnectToSimulation(HowLeakyEngine sim) { }