boost::optional<IdfObject> ForwardTranslator::translateLifeCycleCostParameters( model::LifeCycleCostParameters & modelObject ) { // create, register, and name object IdfObject idfObject = createRegisterAndNameIdfObject(openstudio::IddObjectType::LifeCycleCost_Parameters, modelObject); idfObject.setString(LifeCycleCost_ParametersFields::DiscountingConvention, modelObject.discountingConvention()); idfObject.setString(LifeCycleCost_ParametersFields::InflationApproach, modelObject.inflationApproach()); boost::optional<double> d = modelObject.realDiscountRate(); if (d){ idfObject.setDouble(LifeCycleCost_ParametersFields::RealDiscountRate, *d); } d = modelObject.nominalDiscountRate(); if (d){ idfObject.setDouble(LifeCycleCost_ParametersFields::NominalDiscountRate, *d); } d = modelObject.inflation(); if (d){ idfObject.setDouble(LifeCycleCost_ParametersFields::Inflation, *d); } if (!modelObject.isBaseDateMonthDefaulted()){ idfObject.setString(LifeCycleCost_ParametersFields::BaseDateMonth, modelObject.baseDateMonth().valueDescription()); } idfObject.setInt(LifeCycleCost_ParametersFields::BaseDateYear, modelObject.baseDateYear()); if (!modelObject.isServiceDateMonthDefaulted()){ idfObject.setString(LifeCycleCost_ParametersFields::ServiceDateMonth, modelObject.serviceDateMonth().valueDescription()); } idfObject.setInt(LifeCycleCost_ParametersFields::ServiceDateYear, modelObject.serviceDateYear()); idfObject.setInt(LifeCycleCost_ParametersFields::LengthofStudyPeriodinYears, modelObject.lengthOfStudyPeriodInYears()); d = modelObject.taxRate(); if (d){ idfObject.setDouble(LifeCycleCost_ParametersFields::Taxrate, *d); } if (modelObject.isDepreciationMethodDefaulted()){ idfObject.setString(LifeCycleCost_ParametersFields::DepreciationMethod, "None"); }else{ idfObject.setString(LifeCycleCost_ParametersFields::DepreciationMethod, modelObject.depreciationMethod()); } // if useNISTFuelEscalationRates then load idf obbjects from file in resources if (modelObject.useNISTFuelEscalationRates()){ boost::optional<std::string> region = modelObject.nistRegion(); if (!region){ region = "U.S. Avg"; } boost::optional<std::string> sector = modelObject.nistSector(); if (!sector){ sector = "Commercial"; } static boost::optional<IdfFile> usePriceEscalationFile; if (!usePriceEscalationFile){ usePriceEscalationFile = findIdfFile(":/Resources/LCCusePriceEscalationDataSet2011.idf"); } OS_ASSERT(usePriceEscalationFile); for (IdfObject object : usePriceEscalationFile->objects()){ std::string name = object.name().get(); if ((name.find(*region) == 0) && (name.find(*sector) != string::npos)){ m_idfObjects.push_back(object); } } }else{ std::string baseDateMonth; if (!modelObject.isBaseDateMonthDefaulted()){ baseDateMonth = modelObject.baseDateMonth().valueDescription(); } int baseDateYear = modelObject.baseDateYear(); int lengthOfStudyPeriodInYears = modelObject.lengthOfStudyPeriodInYears(); // make a use price escalation for each fuel type we have inflation for makeUsePriceEscalation(modelObject.electricityInflation(), "Electricity", baseDateMonth, baseDateYear, lengthOfStudyPeriodInYears, m_idfObjects); makeUsePriceEscalation(modelObject.naturalGasInflation(), "NaturalGas", baseDateMonth, baseDateYear, lengthOfStudyPeriodInYears, m_idfObjects); makeUsePriceEscalation(modelObject.steamInflation(), "Steam", baseDateMonth, baseDateYear, lengthOfStudyPeriodInYears, m_idfObjects); makeUsePriceEscalation(modelObject.gasolineInflation(), "Gasoline", baseDateMonth, baseDateYear, lengthOfStudyPeriodInYears, m_idfObjects); makeUsePriceEscalation(modelObject.dieselInflation(), "Diesel", baseDateMonth, baseDateYear, lengthOfStudyPeriodInYears, m_idfObjects); makeUsePriceEscalation(modelObject.coalInflation(), "Coal", baseDateMonth, baseDateYear, lengthOfStudyPeriodInYears, m_idfObjects); makeUsePriceEscalation(modelObject.fuelOil1Inflation(), "FuelOil#1", baseDateMonth, baseDateYear, lengthOfStudyPeriodInYears, m_idfObjects); makeUsePriceEscalation(modelObject.fuelOil2Inflation(), "FuelOil#2", baseDateMonth, baseDateYear, lengthOfStudyPeriodInYears, m_idfObjects); makeUsePriceEscalation(modelObject.propaneInflation(), "Propane", baseDateMonth, baseDateYear, lengthOfStudyPeriodInYears, m_idfObjects); makeUsePriceEscalation(modelObject.waterInflation(), "Water", baseDateMonth, baseDateYear, lengthOfStudyPeriodInYears, m_idfObjects); } return idfObject; }