Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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;
        }
Beispiel #3
0
        //   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)
 {
 }
Beispiel #9
0
 public override void ConnectToSimulation(HowLeakyEngine sim)
 {
 }