boost::optional<IdfObject> ForwardTranslator::translateGeneratorFuelCellWaterSupply(GeneratorFuelCellWaterSupply & modelObject) { boost::optional<std::string> s; boost::optional<double> d; boost::optional<Node> node; boost::optional<CurveQuadratic> curvequad; boost::optional<CurveCubic> curvecubic; boost::optional<Schedule> sch; IdfObject pcm = createAndRegisterIdfObject(openstudio::IddObjectType::Generator_FuelCell_WaterSupply, modelObject); //Name s = modelObject.name(); if (s) { pcm.setName(*s); } //ReformerWaterFlowRateFunctionofFuelRateCurveName curvequad = modelObject.reformerWaterFlowRateFunctionofFuelRateCurve(); if (curvequad) { pcm.setString(Generator_FuelCell_WaterSupplyFields::ReformerWaterFlowRateFunctionofFuelRateCurveName, curvequad.get().nameString()); } //ReformerWaterPumpPowerFunctionofFuelRateCurveName curvecubic = modelObject.reformerWaterPumpPowerFunctionofFuelRateCurve(); if (curvecubic) { pcm.setString(Generator_FuelCell_WaterSupplyFields::ReformerWaterPumpPowerFunctionofFuelRateCurveName, curvecubic.get().nameString()); } //PumpHeatLossFactor d = modelObject.pumpHeatLossFactor(); if (d) { pcm.setDouble(Generator_FuelCell_WaterSupplyFields::PumpHeatLossFactor, d.get()); } //WaterTemperatureModelingMode s = modelObject.waterTemperatureModelingMode(); if (s) { pcm.setString(Generator_FuelCell_WaterSupplyFields::WaterTemperatureModelingMode, s.get()); } //WaterTemperatureReferenceNodeName node = modelObject.waterTemperatureReferenceNode(); if (node) { pcm.setString(Generator_FuelCell_WaterSupplyFields::WaterTemperatureReferenceNodeName, node.get().nameString()); } //WaterTemperatureScheduleName sch = modelObject.waterTemperatureSchedule(); if (sch) { pcm.setString(Generator_FuelCell_WaterSupplyFields::WaterTemperatureScheduleName, sch.get().nameString()); } return pcm; }
boost::optional<IdfObject> ForwardTranslator::translateScheduleConstant( ScheduleConstant & modelObject ) { IdfObject scheduleConstant = createAndRegisterIdfObject(openstudio::IddObjectType::Schedule_Constant, modelObject); scheduleConstant.setName(modelObject.name().get()); scheduleConstant.setString(Schedule_ConstantFields::ScheduleTypeLimitsName, modelObject.getString(OS_Schedule_ConstantFields::ScheduleTypeLimitsName,true).get()); scheduleConstant.setDouble(Schedule_ConstantFields::HourlyValue, modelObject.value()); return boost::optional<IdfObject>(scheduleConstant); }
boost::optional<IdfObject> ForwardTranslator::translateSite( Site & modelObject ) { IdfObject site = createAndRegisterIdfObject(openstudio::IddObjectType::Site_Location, modelObject); OptionalString optS = modelObject.name(); if(optS) { site.setName(*optS); } OptionalDouble od = modelObject.latitude(); if(od) { site.setDouble(Site_LocationFields::Latitude, *od); } od = modelObject.longitude(); if(od) { site.setDouble(Site_LocationFields::Longitude, *od); } od = modelObject.timeZone(); if(od) { site.setDouble(Site_LocationFields::TimeZone, *od); } od = modelObject.elevation(); if(od) { site.setDouble(Site_LocationFields::Elevation, *od); } // translate shading groups ShadingSurfaceGroupVector shadingSurfaceGroups = modelObject.shadingSurfaceGroups(); std::sort(shadingSurfaceGroups.begin(), shadingSurfaceGroups.end(), WorkspaceObjectNameLess()); for (ShadingSurfaceGroup& shadingSurfaceGroup : shadingSurfaceGroups){ translateAndMapModelObject(shadingSurfaceGroup); } return boost::optional<IdfObject>(site); }
boost::optional<IdfObject> ForwardTranslator::translateScheduleCompact( ScheduleCompact & modelObject ) { IdfObject scheduleCompact = createAndRegisterIdfObject(openstudio::IddObjectType::Schedule_Compact, modelObject); OptionalString os; if ((os = modelObject.name())) { scheduleCompact.setName(*os); } boost::optional<ScheduleTypeLimits> scheduleTypeLimits = modelObject.scheduleTypeLimits(); if (scheduleTypeLimits){ boost::optional<IdfObject> idfScheduleTypeLimits = translateAndMapModelObject(*scheduleTypeLimits); if (idfScheduleTypeLimits){ scheduleCompact.setString(Schedule_CompactFields::ScheduleTypeLimitsName, idfScheduleTypeLimits->name().get()); } } for (const IdfExtensibleGroup& eg : modelObject.extensibleGroups()) { scheduleCompact.pushExtensibleGroup(eg.fields()); } return boost::optional<IdfObject>(scheduleCompact); }
boost::optional<IdfObject> ForwardTranslator::translateGeneratorFuelSupply(GeneratorFuelSupply & modelObject) { boost::optional<std::string> s; boost::optional<double> d; boost::optional<int> i; boost::optional<Node> node; boost::optional<Schedule> schedule; boost::optional<CurveCubic> curve; std::vector< std::pair<std::string, double> > constituents; IdfObject pcm = createAndRegisterIdfObject(openstudio::IddObjectType::Generator_FuelSupply, modelObject); //Name s = modelObject.name(); if (s) { pcm.setName(*s); } //fuelTemperatureModelingMode s = modelObject.fuelTemperatureModelingMode(); if (s) { pcm.setString(Generator_FuelSupplyFields::FuelTemperatureModelingMode, s.get()); } //FuelTemperatureReferenceNodeName node = modelObject.fuelTemperatureReferenceNode(); if (node) { pcm.setString(Generator_FuelSupplyFields::FuelTemperatureReferenceNodeName, node.get().nameString()); } //FuelTemperatureScheduleName schedule = modelObject.fuelTemperatureSchedule(); if (schedule) { pcm.setString(Generator_FuelSupplyFields::FuelTemperatureScheduleName, schedule.get().nameString()); } //CompressorPowerMultiplierFunctionofFuelRateCurveName curve = modelObject.compressorPowerMultiplierFunctionofFuelRateCurve(); if (curve) { pcm.setString(Generator_FuelSupplyFields::CompressorPowerMultiplierFunctionofFuelRateCurveName, curve.get().nameString()); } //CompressorHeatLossFactor d = modelObject.compressorHeatLossFactor(); if (d) { pcm.setDouble(Generator_FuelSupplyFields::CompressorHeatLossFactor, d.get()); } //FuelType s = modelObject.fuelType(); if (s) { pcm.setString(Generator_FuelSupplyFields::FuelType, s.get()); } //LiquidGenericFuelLowerHeatingValue d = modelObject.liquidGenericFuelLowerHeatingValue(); if (d) { pcm.setDouble(Generator_FuelSupplyFields::LiquidGenericFuelLowerHeatingValue, d.get()); } //LiquidGenericFuelHigherHeatingValue d = modelObject.liquidGenericFuelHigherHeatingValue(); if (d) { pcm.setDouble(Generator_FuelSupplyFields::LiquidGenericFuelHigherHeatingValue, d.get()); } //LiquidGenericFuelMolecularWeight d = modelObject.liquidGenericFuelMolecularWeight(); if (d) { pcm.setDouble(Generator_FuelSupplyFields::LiquidGenericFuelMolecularWeight, d.get()); } //LiquidGenericFuelCO2EmissionFactor d = modelObject.liquidGenericFuelCO2EmissionFactor(); if (d) { pcm.setDouble(Generator_FuelSupplyFields::LiquidGenericFuelCO2EmissionFactor, d.get()); } //UserDefinedConstituents constituents = modelObject.constituents(); if (!constituents.empty()) { for (auto constituent : constituents) { auto eg = pcm.pushExtensibleGroup(); eg.setString(Generator_FuelSupplyExtensibleFields::ConstituentName, constituent.first); eg.setDouble(Generator_FuelSupplyExtensibleFields::ConstituentMolarFraction, constituent.second); } } //NumberofUserDefinedConstituents i = constituents.size(); if (i) { pcm.setDouble(Generator_FuelSupplyFields::NumberofConstituentsinGaseousConstituentFuelSupply, i.get()); } return pcm; }