boost::optional<IdfObject> ForwardTranslator::translateCoilHeatingDXSingleSpeed( CoilHeatingDXSingleSpeed & modelObject ) { IdfObject _coilSystemHeatingDX(IddObjectType::CoilSystem_Heating_DX); m_idfObjects.push_back(_coilSystemHeatingDX); boost::optional<IdfObject> _coilHeatingDXSingleSpeed = translateCoilHeatingDXSingleSpeedWithoutUnitary(modelObject); OS_ASSERT(_coilHeatingDXSingleSpeed); OptionalString s; s = modelObject.name(); // Type and Name if( s ) { _coilSystemHeatingDX.setString(CoilSystem_Heating_DXFields::HeatingCoilObjectType,_coilHeatingDXSingleSpeed->iddObject().name()); _coilSystemHeatingDX.setString(CoilSystem_Heating_DXFields::HeatingCoilName,*s); _coilSystemHeatingDX.setName(*s + " CoilSystem"); } // Availability Schedule Schedule schedule = modelObject.availabilitySchedule(); boost::optional<IdfObject> _schedule = translateAndMapModelObject(schedule); if( _schedule ) { _coilSystemHeatingDX.setString(CoilSystem_Heating_DXFields::AvailabilityScheduleName,_schedule->name().get()); } return _coilSystemHeatingDX; }
boost::optional<IdfObject> ForwardTranslator::translateAirLoopHVACUnitaryHeatPumpAirToAir( AirLoopHVACUnitaryHeatPumpAirToAir & modelObject ) { boost::optional<std::string> s; boost::optional<double> value; IdfObject idfObject(IddObjectType::AirLoopHVAC_UnitaryHeatPump_AirToAir); m_idfObjects.push_back(idfObject); // Name s = modelObject.name(); if( s ) { idfObject.setName(*s); } // AvailabilityScheduleName if( boost::optional<Schedule> schedule = modelObject.availabilitySchedule() ) { if( boost::optional<IdfObject> _schedule = translateAndMapModelObject(schedule.get()) ) { idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::AvailabilityScheduleName,_schedule->name().get()); } } // AirInletNodeName boost::optional<std::string> airInletNodeName; if( boost::optional<ModelObject> mo = modelObject.inletModelObject() ) { if( boost::optional<Node> node = mo->optionalCast<Node>() ) { if( s = node->name() ) { airInletNodeName = s; idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::AirInletNodeName,s.get()); } } } // AirOutletNodeName boost::optional<std::string> airOutletNodeName; if( boost::optional<ModelObject> mo = modelObject.outletModelObject() ) { if( boost::optional<Node> node = mo->optionalCast<Node>() ) { if( s = node->name() ) { airOutletNodeName = s; idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::AirOutletNodeName,s.get()); } } } // SupplyAirFlowRateDuringCoolingOperation if( modelObject.isSupplyAirFlowRateDuringCoolingOperationAutosized() ) { idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::SupplyAirFlowRateDuringCoolingOperation,"Autosize"); } else if( value = modelObject.supplyAirFlowRateDuringCoolingOperation() ) { idfObject.setDouble(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::SupplyAirFlowRateDuringCoolingOperation,value.get()); } // SupplyAirFlowRateDuringHeatingOperation if( modelObject.isSupplyAirFlowRateDuringHeatingOperationAutosized() ) { idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::SupplyAirFlowRateDuringHeatingOperation,"Autosize"); } else if( value = modelObject.supplyAirFlowRateDuringHeatingOperation() ) { idfObject.setDouble(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::SupplyAirFlowRateDuringHeatingOperation,value.get()); } // SupplyAirFlowRateWhenNoCoolingorHeatingisNeeded if( modelObject.isSupplyAirFlowRateWhenNoCoolingorHeatingisNeededAutosized() ) { idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::SupplyAirFlowRateWhenNoCoolingorHeatingisNeeded,"Autosize"); } else if( value = modelObject.supplyAirFlowRateWhenNoCoolingorHeatingisNeeded() ) { idfObject.setDouble(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::SupplyAirFlowRateWhenNoCoolingorHeatingisNeeded,value.get()); } // ControllingZoneorThermostatLocation if( boost::optional<ThermalZone> tz = modelObject.controllingZone() ) { idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::ControllingZoneorThermostatLocation,tz->name().get() ); } // SupplyAirFanName HVACComponent fan = modelObject.supplyAirFan(); boost::optional<IdfObject> _fan = translateAndMapModelObject(fan); if( _fan ) { idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::SupplyAirFanObjectType,_fan->iddObject().name() ); idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::SupplyAirFanName,_fan->name().get()); } // HeatingCoilName boost::optional<IdfObject> _heatingCoil; HVACComponent heatingCoil = modelObject.heatingCoil(); if( boost::optional<CoilHeatingDXSingleSpeed> coilHeatingDXSingleSpeed = heatingCoil.optionalCast<CoilHeatingDXSingleSpeed>() ) { _heatingCoil = translateCoilHeatingDXSingleSpeedWithoutUnitary(coilHeatingDXSingleSpeed.get()); if( _heatingCoil ) { idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::HeatingCoilObjectType,_heatingCoil->iddObject().name()); idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::HeatingCoilName,_heatingCoil->name().get()); } } // CoolingCoilName boost::optional<IdfObject> _coolingCoil; boost::optional<CoilCoolingDXSingleSpeed> coolingCoil = modelObject.coolingCoil().optionalCast<CoilCoolingDXSingleSpeed>(); if( coolingCoil ) { _coolingCoil = translateCoilCoolingDXSingleSpeedWithoutUnitary(coolingCoil.get()); } if( _coolingCoil ) { m_map.insert(std::make_pair(coolingCoil->handle(),_coolingCoil.get())); idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::CoolingCoilObjectType,_coolingCoil->iddObject().name()); idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::CoolingCoilName,_coolingCoil->name().get()); } // SupplementalHeatingCoilName boost::optional<IdfObject> _supplementalHeatingCoil; boost::optional<HVACComponent> supplementalHeatingCoil = modelObject.supplementalHeatingCoil(); if( supplementalHeatingCoil ) { _supplementalHeatingCoil = translateAndMapModelObject(supplementalHeatingCoil.get()); } if( _supplementalHeatingCoil ) { idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::SupplementalHeatingCoilObjectType, _supplementalHeatingCoil->iddObject().name()); idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::SupplementalHeatingCoilName,_supplementalHeatingCoil->name().get()); } // MaximumSupplyAirTemperaturefromSupplementalHeater if( modelObject.isMaximumSupplyAirTemperaturefromSupplementalHeaterAutosized() ) { idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::MaximumSupplyAirTemperaturefromSupplementalHeater,"Autosize"); } else if( value = modelObject.maximumSupplyAirTemperaturefromSupplementalHeater() ) { idfObject.setDouble(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::MaximumSupplyAirTemperaturefromSupplementalHeater,value.get()); } // MaximumOutdoorDryBulbTemperatureforSupplementalHeaterOperation if( value = modelObject.maximumOutdoorDryBulbTemperatureforSupplementalHeaterOperation() ) { idfObject.setDouble(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::MaximumOutdoorDryBulbTemperatureforSupplementalHeaterOperation,value.get()); } // FanPlacement if( s = modelObject.fanPlacement() ) { idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::FanPlacement,s.get()); } // SupplyAirFanOperatingModeScheduleName if( boost::optional<Schedule> schedule = modelObject.supplyAirFanOperatingModeSchedule() ) { boost::optional<IdfObject> _schedule = translateAndMapModelObject(schedule.get()); if( _schedule ) { idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::SupplyAirFanOperatingModeScheduleName,_schedule->name().get()); } } // Dehumidification Control Type if (!modelObject.isDehumidificationControlTypeDefaulted()) { idfObject.setString(AirLoopHVAC_UnitaryHeatPump_AirToAirFields::DehumidificationControlType, modelObject.dehumidificationControlType()); } // Fill in node names for inner components if( airInletNodeName && _fan ) { _fan->setString(Fan_ConstantVolumeFields::AirInletNodeName,airInletNodeName.get()); } //if( airOutletNodeName && _heatingCoil ) //{ // //_heatingCoil->setString(Coil_Heating_DX_SingleSpeedFields::AirOutletNodeName,airOutletNodeName.get()); //} if( _fan && _coolingCoil ) { std::string nodeName = modelObject.name().get() + " Fan - Cooling Coil Node"; _fan->setString(Fan_ConstantVolumeFields::AirOutletNodeName,nodeName); _coolingCoil->setString(Coil_Cooling_DX_SingleSpeedFields::AirInletNodeName,nodeName); } if( _coolingCoil && _heatingCoil ) { std::string nodeName = modelObject.name().get() + " Cooling Coil - Heating Coil Node"; _coolingCoil->setString(Coil_Cooling_DX_SingleSpeedFields::AirOutletNodeName,nodeName); _heatingCoil->setString(Coil_Heating_DX_SingleSpeedFields::AirInletNodeName,nodeName); } if( _supplementalHeatingCoil ) { std::string nodeName = modelObject.name().get() + " Heating Coil - Supplemental Coil Node"; if( _heatingCoil ) { _heatingCoil->setString(Coil_Heating_DX_SingleSpeedFields::AirOutletNodeName,nodeName); } if( _supplementalHeatingCoil->iddObject().type() == IddObjectType::Coil_Heating_Gas ) { if( airOutletNodeName ) { _supplementalHeatingCoil->setString(Coil_Heating_GasFields::AirOutletNodeName,airOutletNodeName.get()); _supplementalHeatingCoil->setString(Coil_Heating_GasFields::AirInletNodeName,nodeName); } } else if( _supplementalHeatingCoil->iddObject().type() == IddObjectType::Coil_Heating_Electric ) { if( airOutletNodeName ) { _supplementalHeatingCoil->setString(Coil_Heating_ElectricFields::AirOutletNodeName,airOutletNodeName.get()); _supplementalHeatingCoil->setString(Coil_Heating_ElectricFields::AirInletNodeName,nodeName); } } } return idfObject; }