コード例 #1
0
        public static void ChangeMachineryInputByInputMultipliers(IrrigationPower1Input machInput,
                                                                  double multiplier)
        {
            //cost = cost per acin * acin/ac * input.times * comp.amount * tp.amount
            machInput.FuelCost = (machInput.FuelCost * multiplier * machInput.OCAmount);
            //amount = amount per acre * input.times * comp.amount * tp.amount
            machInput.FuelAmount = (machInput.FuelAmount * multiplier);
            //extra energy
            machInput.EnergyExtraCost = (machInput.EnergyExtraCost * multiplier * machInput.OCAmount);
            //lube
            machInput.LubeOilCost   = (machInput.LubeOilCost * multiplier * machInput.OCAmount);
            machInput.LubeOilAmount = (machInput.LubeOilAmount * multiplier);
            machInput.RepairCost    = (machInput.RepairCost * multiplier * machInput.OCAmount);
            //water
            machInput.SeasonWaterApplied = (machInput.SeasonWaterApplied * multiplier * machInput.OCAmount);
            machInput.WaterCost          = (machInput.WaterCost * multiplier * machInput.OCAmount);
            //irrigation labor
            machInput.LaborCost   = (machInput.LaborCost * multiplier * machInput.OCAmount);
            machInput.LaborAmount = (machInput.LaborAmount * multiplier);
            //equip labor
            machInput.EquipmentLaborAmount = (machInput.EquipmentLaborAmount * multiplier);
            machInput.EquipmentLaborCost   = (machInput.EquipmentLaborCost * multiplier * machInput.OCAmount);

            machInput.CapitalRecoveryCost       = (machInput.CapitalRecoveryCost * multiplier * machInput.AOHAmount);
            machInput.TaxesHousingInsuranceCost = (machInput.TaxesHousingInsuranceCost * multiplier * machInput.AOHAmount);
            //this is ok for machinerystock analysis
            machInput.TotalOC = machInput.FuelCost + machInput.LubeOilCost
                                + machInput.RepairCost + machInput.LaborCost
                                + machInput.EnergyExtraCost + machInput.WaterCost + machInput.EquipmentLaborCost;
            machInput.TotalAOH = machInput.CapitalRecoveryCost + machInput.TaxesHousingInsuranceCost;
        }
コード例 #2
0
 public static void ChangeMachineryInputByMultiplier(IrrigationPower1Input machInput,
                                                     double multiplier)
 {
     //cost per hour * hrs/acre * input.times
     machInput.FuelCost   = (machInput.FuelCost * multiplier);
     machInput.FuelAmount = (machInput.FuelAmount * multiplier);
     //extra energy
     machInput.EnergyExtraCost = (machInput.EnergyExtraCost * multiplier);
     //lube
     machInput.LubeOilCost   = (machInput.LubeOilCost * multiplier);
     machInput.LubeOilAmount = (machInput.LubeOilAmount * multiplier);
     //repair
     machInput.RepairCost = (machInput.RepairCost * multiplier);
     //water
     machInput.SeasonWaterApplied = (machInput.SeasonWaterApplied * multiplier);
     machInput.WaterCost          = (machInput.WaterCost * multiplier);
     //irrigation labor
     machInput.LaborCost   = (machInput.LaborCost * multiplier);
     machInput.LaborAmount = (machInput.LaborAmount * multiplier);
     //equip labor
     machInput.EquipmentLaborAmount = (machInput.EquipmentLaborAmount * multiplier);
     machInput.EquipmentLaborCost   = (machInput.EquipmentLaborCost * multiplier);
     //cap recovery
     machInput.CapitalRecoveryCost       = (machInput.CapitalRecoveryCost * multiplier);
     machInput.TaxesHousingInsuranceCost = (machInput.TaxesHousingInsuranceCost);
     //this is ok for machinerystock analysis (but not for npv)
     machInput.TotalOC = machInput.FuelCost + machInput.LubeOilCost
                         + machInput.RepairCost + machInput.LaborCost
                         + machInput.EnergyExtraCost + machInput.WaterCost + machInput.EquipmentLaborCost;
     machInput.TotalAOH = machInput.CapitalRecoveryCost + machInput.TaxesHousingInsuranceCost;
 }
コード例 #3
0
        public bool AddCalculationsToCurrentElement(
            CalculatorParameters calcParameters,
            XElement currentCalculationsElement, XElement currentElement)
        {
            bool bHasCalculations = false;

            if (currentElement.Name.LocalName
                == Input.INPUT_PRICE_TYPES.inputgroup.ToString() &&
                calcParameters.ExtensionDocToCalcURI.URINodeName
                != Constants.LINKEDVIEWS_TYPES.linkedview.ToString())
            {
                bHasCalculations = BIIP1Calculator.SetTotalMachineryStockCalculations(
                    currentCalculationsElement, currentElement);
            }
            else
            {
                if (currentCalculationsElement != null)
                {
                    IrrigationPower1Input machInput = new IrrigationPower1Input();
                    machInput.SetIrrigationPower1InputProperties(calcParameters,
                                                                 currentCalculationsElement, currentElement);
                    //init analyzer props
                    machInput.SetCalculatorProperties(currentCalculationsElement);
                    //run the calculations
                    bHasCalculations = RunIrrPowerStockCalculations(machInput,
                                                                    calcParameters);
                    //serialize object back to xml (note that the base calc is not run here)
                    string sAttNameExtension = string.Empty;
                    //update the calculator attributes
                    machInput.SetAndRemoveCalculatorAttributes(sAttNameExtension,
                                                               currentCalculationsElement);
                    machInput.SetIrrigationPower1Attributes(calcParameters,
                                                            currentCalculationsElement, currentElement);
                    //set calculatorid (primary way to display calculation attributes)
                    CalculatorHelpers.SetCalculatorId(
                        currentCalculationsElement, currentElement);
                    //input groups only aggregate inputs (not input series)
                    if (currentElement.Name.LocalName
                        == Input.INPUT_PRICE_TYPES.input.ToString())
                    {
                        //add the machinery to the machstock.machstocks dictionary
                        //the count is 1-based, while iNodePosition is 0-based
                        //so the count is the correct next index position
                        int iNodePosition = BIIP1Calculator.IrrPowerStock
                                            .GetNodePositionCount(calcParameters.AnalyzerParms.FilePositionIndex,
                                                                  machInput);
                        if (iNodePosition < 0)
                        {
                            iNodePosition = 0;
                        }
                        bHasCalculations = BIIP1Calculator.IrrPowerStock
                                           .AddIrrPower1StocksToDictionary(
                            calcParameters.AnalyzerParms.FilePositionIndex, iNodePosition,
                            machInput);
                    }
                }
            }
            return(bHasCalculations);
        }
コード例 #4
0
 private void TransferCorrespondingDbProperties(
     IrrigationPower1Input machInput)
 {
     //calculators use aliases to change db properties
     if (machInput.MarketValue > 0)
     {
         machInput.CAPPrice = machInput.MarketValue;
     }
 }
コード例 #5
0
        //add a IrrigationPower1Input to the baseStat.IrrPowerStocks dictionary
        public static bool AddIrrPower1StocksToDictionary(
            this IrrPower1Stock baseStat,
            int filePosition, int nodePosition, IrrigationPower1Input calculator)
        {
            bool bIsAdded = false;

            if (filePosition < 0 || nodePosition < 0)
            {
                baseStat.ErrorMessage
                    = Errors.MakeStandardErrorMsg("ANALYSES_INDEX_OUTOFBOUNDS");
                return(false);
            }
            if (baseStat.IrrPowerStocks == null)
            {
                baseStat.IrrPowerStocks
                    = new Dictionary <int, List <IrrigationPower1Input> >();
            }
            if (baseStat.IrrPowerStocks.ContainsKey(filePosition))
            {
                if (baseStat.IrrPowerStocks[filePosition] != null)
                {
                    for (int i = 0; i <= nodePosition; i++)
                    {
                        if (baseStat.IrrPowerStocks[filePosition].Count <= i)
                        {
                            baseStat.IrrPowerStocks[filePosition]
                            .Add(new IrrigationPower1Input());
                        }
                    }
                    baseStat.IrrPowerStocks[filePosition][nodePosition]
                             = calculator;
                    bIsAdded = true;
                }
            }
            else
            {
                //add the missing dictionary entry
                List <IrrigationPower1Input> baseStats
                    = new List <IrrigationPower1Input>();
                KeyValuePair <int, List <IrrigationPower1Input> > newStat
                    = new KeyValuePair <int, List <IrrigationPower1Input> >(
                          filePosition, baseStats);
                baseStat.IrrPowerStocks.Add(newStat);
                bIsAdded = AddIrrPower1StocksToDictionary(baseStat,
                                                          filePosition, nodePosition, calculator);
            }
            return(bIsAdded);
        }
コード例 #6
0
 public static void AddIrrPower1InputTotals(IrrigationPower1Input machInput,
                                            XElement machInputCalcElement)
 {
     //these have already been adjusted by input multipliers (ocamount, times)
     machInput.TotalOC = machInput.FuelCost + machInput.LaborCost
                         + machInput.RepairCost + machInput.LubeOilCost
                         + machInput.EnergyExtraCost + machInput.WaterCost + machInput.EquipmentLaborCost;
     machInput.TotalAOH = machInput.CapitalRecoveryCost
                          + machInput.TaxesHousingInsuranceCost;
     CalculatorHelpers.SetAttributeDoubleF2(machInputCalcElement,
                                            CostBenefitCalculator.TOC, machInput.TotalOC);
     CalculatorHelpers.SetAttributeDoubleF2(machInputCalcElement,
                                            CostBenefitCalculator.TAOH, machInput.TotalAOH);
     //extra multiplier needed for display
     CalculatorHelpers.SetAttributeDoubleF2(machInputCalcElement,
                                            Input.INPUT_TIMES, machInput.Times);
 }
コード例 #7
0
        public static int GetNodePositionCount(this IrrPower1Stock baseStat,
                                               int filePosition, IrrigationPower1Input calculator)
        {
            int iNodeCount = 0;

            if (baseStat.IrrPowerStocks == null)
            {
                return(iNodeCount);
            }
            if (baseStat.IrrPowerStocks.ContainsKey(filePosition))
            {
                if (baseStat.IrrPowerStocks[filePosition] != null)
                {
                    iNodeCount = baseStat.IrrPowerStocks[filePosition].Count;
                }
            }
            return(iNodeCount);
        }
コード例 #8
0
        public bool RunIrrPowerStockCalculations(IrrigationPower1Input machInput,
                                                 CalculatorParameters calcParameters)
        {
            bool bHasCalculations = false;

            //see if any db props are being changed by calculator
            TransferCorrespondingDbProperties(machInput);
            //set the multiplier (the multiplier in most inputs is 1,
            //this is kept here to keep a uniform pattern when the multiplier
            //can be changed -see the food nutrition calculator)
            double multiplier = IOMachineryStockSubscriber
                                .GetMultiplierForInput(machInput);

            if (multiplier != 1)
            {
                bHasCalculations = SetIrrPowerStockCalculations(multiplier,
                                                                calcParameters, machInput);
            }
            else
            {
                bHasCalculations = true;
            }
            return(bHasCalculations);
        }
コード例 #9
0
        public static bool AddMachineryInputToStock(IrrPower1Stock machStock, double multiplier,
                                                    IrrigationPower1Input machinput, string currentNodeName)
        {
            bool bHasCalculations = false;
            bool bAdjustTotals    = false;

            //eliminate double counting before using this
            //add the base totals (fuelamount, fuelcost ...)
            BIMachineryStockCalculator.AddMachineryInputToStock(machStock, multiplier,
                                                                machinput, currentNodeName, bAdjustTotals);
            //multipliers (input.times, out.compositionamount, oc.amount, tp.amount)
            //don't change per hour machinery costs, only total costs
            if (currentNodeName.EndsWith(Input.INPUT_PRICE_TYPES.input.ToString()))
            {
                //i.e. machinput.cost = machinput.cost * multiplier * input.ocamount
                //multiplier = input.times * oc.amount * tp.amount
                ChangeMachineryInputByInputMultipliers(machinput, multiplier);
            }
            else
            {
                //i.e. machinput.cost = machinput.cost * multiplier (1 in stock analyzers)
                ChangeMachineryInputByMultiplier(machinput, multiplier);
            }
            //add the totals for the irrpower stock
            machStock.TotalEngineEfficiency       += machinput.EngineEfficiency;
            machStock.TotalFuelConsumptionPerHour += machinput.FuelConsumptionPerHour;
            machStock.TotalWaterHP                            += machinput.WaterHP;
            machStock.TotalBrakeHP                            += machinput.BrakeHP;
            machStock.TotalFlowRate                           += machinput.FlowRate;
            machStock.TotalStaticHead                         += machinput.StaticHead;
            machStock.TotalPressureHead                       += machinput.PressureHead;
            machStock.TotalFrictionHead                       += machinput.FrictionHead;
            machStock.TotalOtherHead                          += machinput.OtherHead;
            machStock.TotalPumpEfficiency                     += machinput.PumpEfficiency;
            machStock.TotalGearDriveEfficiency                += machinput.GearDriveEfficiency;
            machStock.TotalExtraPower1                        += machinput.ExtraPower1;
            machStock.TotalExtraPower2                        += machinput.ExtraPower2;
            machStock.TotalEnergyExtraCostPerNetAcOrHa        += machinput.EnergyExtraCostPerNetAcOrHa;
            machStock.TotalEnergyExtraCost                    += machinput.EnergyExtraCost;
            machStock.TotalPumpCapacity                       += machinput.PumpCapacity;
            machStock.TotalEngineFlywheelPower                += machinput.EngineFlywheelPower;
            machStock.TotalFuelAmountRequired                 += machinput.FuelAmountRequired;
            machStock.TotalPumpingPlantPerformance            += machinput.PumpingPlantPerformance;
            machStock.TotalSeasonWaterNeed                    += machinput.SeasonWaterNeed;
            machStock.TotalSeasonWaterExtraCredit             += machinput.SeasonWaterExtraCredit;
            machStock.TotalSeasonWaterExtraDebit              += machinput.SeasonWaterExtraDebit;
            machStock.TotalWaterPrice                         += machinput.WaterPrice;
            machStock.TotalDistributionUniformity             += machinput.DistributionUniformity;
            machStock.TotalSeasonWaterApplied                 += machinput.SeasonWaterApplied;
            machStock.TotalWaterCost                          += machinput.WaterCost;
            machStock.TotalPumpHoursPerUnitArea               += machinput.PumpHoursPerUnitArea;
            machStock.TotalIrrigationTimes                    += machinput.IrrigationTimes;
            machStock.TotalIrrigationDurationPerSet           += machinput.IrrigationDurationPerSet;
            machStock.TotalIrrigationDurationLaborHoursPerSet += machinput.IrrigationDurationLaborHoursPerSet;
            machStock.TotalIrrigationNetArea                  += machinput.IrrigationNetArea;
            machStock.TotalEquipmentLaborAmount               += machinput.EquipmentLaborAmount;
            machStock.TotalEquipmentLaborCost                 += machinput.EquipmentLaborCost;
            machStock.TotalRepairCostsPerNetAcOrHa            += machinput.RepairCostsPerNetAcOrHa;
            machStock.TotalRandMPercent                       += machinput.RandMPercent;
            bHasCalculations = true;
            return(bHasCalculations);
        }
コード例 #10
0
        public bool AddMachineryInputToStock(double multiplier, IrrigationPower1Input machinput,
                                             string currentNodeName)
        {
            bool bHasCalculations = false;
            //add the base machinput properties
            bool bAdjustTotals = false;

            bHasCalculations
                = BIMachineryStockCalculator
                  .AddMachineryInputToStock(this.IrrPowerStock, multiplier, machinput, currentNodeName, bAdjustTotals);
            //multipliers (input.times, input.ocamount, out.compositionamount, oc.amount, tp.amount)
            //are not used with per hourly costs, but are used with total op and aoh costs (fuelcost, capitalrecovery)
            if (currentNodeName.EndsWith(Input.INPUT_PRICE_TYPES.input.ToString()))
            {
                //i.e. machinput.cost = input.times * input.ocamount
                ChangeMachineryInputByInputMultipliers(machinput, multiplier);
            }
            else
            {
                //i.e. budget adjustment = if operation multiplier = op.amount,
                //if timeperiod multiplier = tp.amount)
                ChangeMachineryInputByMultiplier(machinput, multiplier);
            }
            this.IrrPowerStock.TotalEngineEfficiency       += machinput.EngineEfficiency;
            this.IrrPowerStock.TotalFuelConsumptionPerHour += machinput.FuelConsumptionPerHour;
            this.IrrPowerStock.TotalWaterHP                            += machinput.WaterHP;
            this.IrrPowerStock.TotalBrakeHP                            += machinput.BrakeHP;
            this.IrrPowerStock.TotalFlowRate                           += machinput.FlowRate;
            this.IrrPowerStock.TotalStaticHead                         += machinput.StaticHead;
            this.IrrPowerStock.TotalPressureHead                       += machinput.PressureHead;
            this.IrrPowerStock.TotalFrictionHead                       += machinput.FrictionHead;
            this.IrrPowerStock.TotalOtherHead                          += machinput.OtherHead;
            this.IrrPowerStock.TotalPumpEfficiency                     += machinput.PumpEfficiency;
            this.IrrPowerStock.TotalGearDriveEfficiency                += machinput.GearDriveEfficiency;
            this.IrrPowerStock.TotalExtraPower1                        += machinput.ExtraPower1;
            this.IrrPowerStock.TotalExtraPower2                        += machinput.ExtraPower2;
            this.IrrPowerStock.TotalEnergyExtraCostPerNetAcOrHa        += machinput.EnergyExtraCostPerNetAcOrHa;
            this.IrrPowerStock.TotalEnergyExtraCost                    += machinput.EnergyExtraCost;
            this.IrrPowerStock.TotalPumpCapacity                       += machinput.PumpCapacity;
            this.IrrPowerStock.TotalEngineFlywheelPower                += machinput.EngineFlywheelPower;
            this.IrrPowerStock.TotalFuelAmountRequired                 += machinput.FuelAmountRequired;
            this.IrrPowerStock.TotalPumpingPlantPerformance            += machinput.PumpingPlantPerformance;
            this.IrrPowerStock.TotalSeasonWaterNeed                    += machinput.SeasonWaterNeed;
            this.IrrPowerStock.TotalSeasonWaterExtraCredit             += machinput.SeasonWaterExtraCredit;
            this.IrrPowerStock.TotalSeasonWaterExtraDebit              += machinput.SeasonWaterExtraDebit;
            this.IrrPowerStock.TotalWaterPrice                         += machinput.WaterPrice;
            this.IrrPowerStock.TotalDistributionUniformity             += machinput.DistributionUniformity;
            this.IrrPowerStock.TotalSeasonWaterApplied                 += machinput.SeasonWaterApplied;
            this.IrrPowerStock.TotalWaterCost                          += machinput.WaterCost;
            this.IrrPowerStock.TotalPumpHoursPerUnitArea               += machinput.PumpHoursPerUnitArea;
            this.IrrPowerStock.TotalIrrigationTimes                    += machinput.IrrigationTimes;
            this.IrrPowerStock.TotalIrrigationDurationPerSet           += machinput.IrrigationDurationPerSet;
            this.IrrPowerStock.TotalIrrigationDurationLaborHoursPerSet += machinput.IrrigationDurationLaborHoursPerSet;
            this.IrrPowerStock.TotalIrrigationNetArea                  += machinput.IrrigationNetArea;
            this.IrrPowerStock.TotalEquipmentLaborAmount               += machinput.EquipmentLaborAmount;
            this.IrrPowerStock.TotalEquipmentLaborCost                 += machinput.EquipmentLaborCost;
            this.IrrPowerStock.TotalRepairCostsPerNetAcOrHa            += machinput.RepairCostsPerNetAcOrHa;
            this.IrrPowerStock.TotalRandMPercent                       += machinput.RandMPercent;
            bHasCalculations = true;
            return(bHasCalculations);
        }
コード例 #11
0
        public bool SetIrrPowerStockCalculations(double multiplier,
                                                 CalculatorParameters calcParameters, IrrigationPower1Input machInput)
        {
            bool bHasCalculations = false;

            if (machInput != null)
            {
                //don't adjust machinery per hour costs by any multiplier
                //pattern is fine but not appropriate here
                //in this extension, calculations are carried out in the
                //budget/investment calculators
                //BIIrrPowerStockCalculator biCalculator = new BIIrrPowerStockCalculator();
                //biCalculator.ChangeIrrPowerInputByMultiplier(machInput, multiplier);
                //bHasCalculations = true;
            }
            else
            {
                calcParameters.ErrorMessage = Errors.MakeStandardErrorMsg("CALCULATORS_WRONG_ONE");
            }
            return(bHasCalculations);
        }