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; }
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; }
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); }
private void TransferCorrespondingDbProperties( IrrigationPower1Input machInput) { //calculators use aliases to change db properties if (machInput.MarketValue > 0) { machInput.CAPPrice = machInput.MarketValue; } }
//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); }
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); }
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); }
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); }
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); }
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); }
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); }