First time here? Check out the Help page!
1 | initial version |
I dug into the source code. There are two different thing that could be happening:
zone.setUseIdealAirLoads(true)
behind the scenes), you'll end up with an HVACTemplate:ZoneIdealLoadsAirSystem with will get expanded by E+ as a ZoneHVAC:IdealLoadsAirSystem, but it won't have the DesignSpecific:OutdoorAir
(DSOA) object. Instead, a ZoneVentilation:DesignFlowRate
object is created to match the DSOA, so you can request the output variable Zone Ventilation Mass Flow Rate [kg/s]
ZoneHVACIdealLoadsAirSystem
and assign that as an actual equipment to the thermal Zone, and in this case the DSOA will be gotten and properly translated, and you can use the Output variable Zone Ideal Loads Outdoor Air Mass Flow Rate
2 | No.2 Revision |
I dug into the source code. There are two different thing that could be happening:
zone.setUseIdealAirLoads(true)
behind the scenes), you'll end up with an HVACTemplate:ZoneIdealLoadsAirSystem with will get expanded by E+ as a ZoneHVAC:IdealLoadsAirSystem, but it won't have the DesignSpecific:OutdoorAir
(DSOA) object. Instead, a ZoneVentilation:DesignFlowRate
object is created to match the DSOA, so you can request the output variable Zone Ventilation Mass Flow Rate [kg/s]
ZoneHVACIdealLoadsAirSystem
and assign that as an actual equipment to the thermal Zone, and in this case the DSOA will be gotten and properly translated, and you can use the Output variable Zone Ideal Loads Outdoor Air Mass Flow Rate
Source:
OS:ZoneHVACIdealLoadsAirSystem
: ForwardTranslateZoneHVACIdealLoadsAirSystem.cpp#L178:L198Example using an explicit ZoneHVACIdealLoadsAirSystem
In [1]: # Create an Example model m = OpenStudio::Model::exampleModel() # It has one zone, connected to a AirLoopHVAC, we remove it m.getAirLoopHVACs[0].remove
# We create a ZoneHVACIdealLoadsAirSystem and add it to the thermal Zone i = OpenStudio::Model::ZoneHVACIdealLoadsAirSystem.new(m) i.addToThermalZone(z)
In [2]: puts i # Notice DSOA is empty... Out[2]: OS:ZoneHVAC:IdealLoadsAirSystem, {03253713-01e8-44d8-a6a9-ea3509fdcbe0}, !- Handle Zone HVAC Ideal Loads Air System 1, !- Name , !- Availability Schedule Name {79065160-831c-4d50-97bb-a32156865d3d}, !- Zone Supply Air Node Name {846003a5-290c-490b-8623-3e59384f5dd3}, !- Zone Exhaust Air Node Name , !- Maximum Heating Supply Air Temperature {C} , !- Minimum Cooling Supply Air Temperature {C} , !- Maximum Heating Supply Air Humidity Ratio {kg-H2O/kg-air} , !- Minimum Cooling Supply Air Humidity Ratio {kg-H2O/kg-air} , !- Heating Limit , !- Maximum Heating Air Flow Rate {m3/s} , !- Maximum Sensible Heating Capacity {W} , !- Cooling Limit , !- Maximum Cooling Air Flow Rate {m3/s} , !- Maximum Total Cooling Capacity {W} , !- Heating Availability Schedule Name , !- Cooling Availability Schedule Name , !- Dehumidification Control Type , !- Cooling Sensible Heat Ratio {dimensionless} , !- Humidification Control Type , !- Design Specification Outdoor Air Object Name , !- Demand Controlled Ventilation Type , !- Outdoor Air Economizer Type , !- Heat Recovery Type , !- Sensible Heat Recovery Effectiveness {dimensionless} ; !- Latent Heat Recovery Effectiveness {dimensionless}
In [3]: # Translate to E+ w = ft.translateModel(m)
In [4]: # Show result puts w.getObjectsByType("ZoneHVAC:IdealLoadsAirSystem".to_IddObjectType)
Out[4]: ZoneHVAC:IdealLoadsAirSystem, Zone HVAC Ideal Loads Air System 1, !- Name , !- Availability Schedule Name Node 3, !- Zone Supply Air Node Name Node 2, !- Zone Exhaust Air Node Name , !- System Inlet Air Node Name , !- Maximum Heating Supply Air Temperature {C} , !- Minimum Cooling Supply Air Temperature {C} , !- Maximum Heating Supply Air Humidity Ratio {kgWater/kgDryAir} , !- Minimum Cooling Supply Air Humidity Ratio {kgWater/kgDryAir} , !- Heating Limit , !- Maximum Heating Air Flow Rate {m3/s} , !- Maximum Sensible Heating Capacity {W} , !- Cooling Limit , !- Maximum Cooling Air Flow Rate {m3/s} , !- Maximum Total Cooling Capacity {W} , !- Heating Availability Schedule Name , !- Cooling Availability Schedule Name , !- Dehumidification Control Type , !- Cooling Sensible Heat Ratio {dimensionless} , !- Humidification Control Type Design Specification Outdoor Air 1, !- Design Specification Outdoor Air Object Name , !- Outdoor Air Inlet Node Name , !- Demand Controlled Ventilation Type , !- Outdoor Air Economizer Type , !- Heat Recovery Type , !- Sensible Heat Recovery Effectiveness {dimensionless} ; !- Latent Heat Recovery Effectiveness {dimensionless}
3 | No.3 Revision |
I dug into the source code. There are two different thing that could be happening:
zone.setUseIdealAirLoads(true)
behind the scenes), you'll end up with an HVACTemplate:ZoneIdealLoadsAirSystem with will get expanded by E+ as a ZoneHVAC:IdealLoadsAirSystem, but it won't have the DesignSpecific:OutdoorAir
(DSOA) object. Instead, a ZoneVentilation:DesignFlowRate
object is created to match the DSOA, so you can request the output variable Zone Ventilation Mass Flow Rate [kg/s]
ZoneHVACIdealLoadsAirSystem
and assign that as an actual equipment to the thermal Zone, and in this case the DSOA will be gotten and properly translated, and you can use the Output variable Zone Ideal Loads Outdoor Air Mass Flow Rate
Source:
OS:ZoneHVACIdealLoadsAirSystem
: ForwardTranslateZoneHVACIdealLoadsAirSystem.cpp#L178:L198Example using an explicit ZoneHVACIdealLoadsAirSystem
In [1]:
4 | No.4 Revision |
I dug into the source code. There are two different thing that could be happening:
zone.setUseIdealAirLoads(true)
behind the scenes), you'll end up with an HVACTemplate:ZoneIdealLoadsAirSystem with will get expanded by E+ as a ZoneHVAC:IdealLoadsAirSystem, but it won't have the DesignSpecific:OutdoorAir
(DSOA) object. Instead, a ZoneVentilation:DesignFlowRate
object is created to match the DSOA, so you can request the output variable Zone Ventilation Mass Flow Rate [kg/s]
ZoneHVACIdealLoadsAirSystem
and assign that as an actual equipment to the thermal Zone, and in this case the DSOA will be gotten and properly translated, and you can use the Output variable Zone Ideal Loads Outdoor Air Mass Flow Rate
Source:
OS:ZoneHVACIdealLoadsAirSystem
: ForwardTranslateZoneHVACIdealLoadsAirSystem.cpp#L178:L198Example using an explicit ZoneHVACIdealLoadsAirSystem
In [1]:
# Create an Example model
model (1 Zone, 4 spaces, 1 spaceType)
m = OpenStudio::Model::exampleModel()
# It has one zone, connected to a AirLoopHVAC, we remove it
m.getAirLoopHVACs[0].remove
# Create a DSOA and assign to the only space Type in the model
space_type = m.getSpaceTypes[0]
dsoa = DesignSpecificationOutdoorAir.new(m)
dsoa.setOutdoorAirFlowAirChangesperHour(0.6)
dsoa.setName("DSOA 0.6 ACH")
In [2]:
# We create a ZoneHVACIdealLoadsAirSystem and add it to the thermal Zone
i = OpenStudio::Model::ZoneHVACIdealLoadsAirSystem.new(m)
i.addToThermalZone(z)
In [2]: [3]: puts i # Notice DSOA is empty...
Out[2]:
Out[3]:
OS:ZoneHVAC:IdealLoadsAirSystem,
{03253713-01e8-44d8-a6a9-ea3509fdcbe0}, !- Handle
Zone HVAC Ideal Loads Air System 1, !- Name
, !- Availability Schedule Name
{79065160-831c-4d50-97bb-a32156865d3d}, !- Zone Supply Air Node Name
{846003a5-290c-490b-8623-3e59384f5dd3}, !- Zone Exhaust Air Node Name
, !- Maximum Heating Supply Air Temperature {C}
, !- Minimum Cooling Supply Air Temperature {C}
, !- Maximum Heating Supply Air Humidity Ratio {kg-H2O/kg-air}
, !- Minimum Cooling Supply Air Humidity Ratio {kg-H2O/kg-air}
, !- Heating Limit
, !- Maximum Heating Air Flow Rate {m3/s}
, !- Maximum Sensible Heating Capacity {W}
, !- Cooling Limit
, !- Maximum Cooling Air Flow Rate {m3/s}
, !- Maximum Total Cooling Capacity {W}
, !- Heating Availability Schedule Name
, !- Cooling Availability Schedule Name
, !- Dehumidification Control Type
, !- Cooling Sensible Heat Ratio {dimensionless}
, !- Humidification Control Type
, !- Design Specification Outdoor Air Object Name
, !- Demand Controlled Ventilation Type
, !- Outdoor Air Economizer Type
, !- Heat Recovery Type
, !- Sensible Heat Recovery Effectiveness {dimensionless}
; !- Latent Heat Recovery Effectiveness {dimensionless}
In [3]:
[4]:
# Translate to E+
w = ft.translateModel(m)
In [4]:
# Show result
puts w.getObjectsByType("ZoneHVAC:IdealLoadsAirSystem".to_IddObjectType)
Out[4]:
ZoneHVAC:IdealLoadsAirSystem,
Zone HVAC Ideal Loads Air System 1, !- Name
, !- Availability Schedule Name
Node 3, !- Zone Supply Air Node Name
Node 2, !- Zone Exhaust Air Node Name
, !- System Inlet Air Node Name
, !- Maximum Heating Supply Air Temperature {C}
, !- Minimum Cooling Supply Air Temperature {C}
, !- Maximum Heating Supply Air Humidity Ratio {kgWater/kgDryAir}
, !- Minimum Cooling Supply Air Humidity Ratio {kgWater/kgDryAir}
, !- Heating Limit
, !- Maximum Heating Air Flow Rate {m3/s}
, !- Maximum Sensible Heating Capacity {W}
, !- Cooling Limit
, !- Maximum Cooling Air Flow Rate {m3/s}
, !- Maximum Total Cooling Capacity {W}
, !- Heating Availability Schedule Name
, !- Cooling Availability Schedule Name
, !- Dehumidification Control Type
, !- Cooling Sensible Heat Ratio {dimensionless}
, !- Humidification Control Type
Design Specification Outdoor Air 1, DSOA 0.6 ACH, !- Design Specification Outdoor Air Object Name
, !- Outdoor Air Inlet Node Name
, !- Demand Controlled Ventilation Type
, !- Outdoor Air Economizer Type
, !- Heat Recovery Type
, !- Sensible Heat Recovery Effectiveness {dimensionless}
; !- Latent Heat Recovery Effectiveness {dimensionless}
In [5]:
i.remove
z.setUseIdealAirLoads(true)
w = ft.translateModel(m)
puts w.getObjectsByType("ZoneVentilation:DesignFlowRate".to_IddObjectType)
Out[5]:
ZoneVentilation:DesignFlowRate,
Thermal Zone 1 Ventilation Air Changes per Hour, !- Name
Thermal Zone 1, !- Zone or ZoneList Name
{03b5360a-8d83-4cd5-b891-217534a53d2c}, !- Schedule Name
AirChanges/Hour, !- Design Flow Rate Calculation Method
, !- Design Flow Rate {m3/s}
, !- Flow Rate per Zone Floor Area {m3/s-m2}
, !- Flow Rate per Person {m3/s-person}
0.6, !- Air Changes per Hour {1/hr}
, !- Ventilation Type
, !- Fan Pressure Rise {Pa}
, !- Fan Total Efficiency
, !- Constant Term Coefficient
, !- Temperature Term Coefficient
, !- Velocity Term Coefficient
; !- Velocity Squared Term Coefficient
5 | No.5 Revision |
I dug into the source code. There are two different thing that could be happening:
zone.setUseIdealAirLoads(true)
behind the scenes), you'll end up with an HVACTemplate:ZoneIdealLoadsAirSystem with will get expanded by E+ as a ZoneHVAC:IdealLoadsAirSystem, but it won't have the DesignSpecific:OutdoorAir
(DSOA) object. Instead, a ZoneVentilation:DesignFlowRate
object is created to match the DSOA, so you can request the output variable Zone Ventilation Mass Flow Rate [kg/s]
ZoneHVACIdealLoadsAirSystem
and assign that as an actual equipment to the thermal Zone, and in this case the DSOA will be gotten and properly translated, and you can use the Output variable Zone Ideal Loads Outdoor Air Mass Flow Rate
Source:
OS:ZoneHVACIdealLoadsAirSystem
: ForwardTranslateZoneHVACIdealLoadsAirSystem.cpp#L178:L198ruby
puts "hello world!'
In [1]:
# Create an Example model (1 Zone, 4 spaces, 1 spaceType)
m = OpenStudio::Model::exampleModel()
# It has one zone, connected to a AirLoopHVAC, we remove it
m.getAirLoopHVACs[0].remove
# Create a DSOA and assign to the only space Type in the model
space_type = m.getSpaceTypes[0]
dsoa = DesignSpecificationOutdoorAir.new(m)
dsoa.setOutdoorAirFlowAirChangesperHour(0.6)
dsoa.setName("DSOA 0.6 ACH")
In [2]:
# We create a ZoneHVACIdealLoadsAirSystem and add it to the thermal Zone
i = OpenStudio::Model::ZoneHVACIdealLoadsAirSystem.new(m)
i.addToThermalZone(z)
In [3]: puts i # Notice DSOA is empty...
Out[3]:
OS:ZoneHVAC:IdealLoadsAirSystem,
{03253713-01e8-44d8-a6a9-ea3509fdcbe0}, !- Handle
Zone HVAC Ideal Loads Air System 1, !- Name
, !- Availability Schedule Name
{79065160-831c-4d50-97bb-a32156865d3d}, !- Zone Supply Air Node Name
{846003a5-290c-490b-8623-3e59384f5dd3}, !- Zone Exhaust Air Node Name
, !- Maximum Heating Supply Air Temperature {C}
, !- Minimum Cooling Supply Air Temperature {C}
, !- Maximum Heating Supply Air Humidity Ratio {kg-H2O/kg-air}
, !- Minimum Cooling Supply Air Humidity Ratio {kg-H2O/kg-air}
, !- Heating Limit
, !- Maximum Heating Air Flow Rate {m3/s}
, !- Maximum Sensible Heating Capacity {W}
, !- Cooling Limit
, !- Maximum Cooling Air Flow Rate {m3/s}
, !- Maximum Total Cooling Capacity {W}
, !- Heating Availability Schedule Name
, !- Cooling Availability Schedule Name
, !- Dehumidification Control Type
, !- Cooling Sensible Heat Ratio {dimensionless}
, !- Humidification Control Type
, !- Design Specification Outdoor Air Object Name
, !- Demand Controlled Ventilation Type
, !- Outdoor Air Economizer Type
, !- Heat Recovery Type
, !- Sensible Heat Recovery Effectiveness {dimensionless}
; !- Latent Heat Recovery Effectiveness {dimensionless}
In [4]:
# Translate to E+
w = ft.translateModel(m)
# Show result
puts w.getObjectsByType("ZoneHVAC:IdealLoadsAirSystem".to_IddObjectType)
Out[4]:
ZoneHVAC:IdealLoadsAirSystem,
Zone HVAC Ideal Loads Air System 1, !- Name
, !- Availability Schedule Name
Node 3, !- Zone Supply Air Node Name
Node 2, !- Zone Exhaust Air Node Name
, !- System Inlet Air Node Name
, !- Maximum Heating Supply Air Temperature {C}
, !- Minimum Cooling Supply Air Temperature {C}
, !- Maximum Heating Supply Air Humidity Ratio {kgWater/kgDryAir}
, !- Minimum Cooling Supply Air Humidity Ratio {kgWater/kgDryAir}
, !- Heating Limit
, !- Maximum Heating Air Flow Rate {m3/s}
, !- Maximum Sensible Heating Capacity {W}
, !- Cooling Limit
, !- Maximum Cooling Air Flow Rate {m3/s}
, !- Maximum Total Cooling Capacity {W}
, !- Heating Availability Schedule Name
, !- Cooling Availability Schedule Name
, !- Dehumidification Control Type
, !- Cooling Sensible Heat Ratio {dimensionless}
, !- Humidification Control Type
DSOA 0.6 ACH, !- Design Specification Outdoor Air Object Name
, !- Outdoor Air Inlet Node Name
, !- Demand Controlled Ventilation Type
, !- Outdoor Air Economizer Type
, !- Heat Recovery Type
, !- Sensible Heat Recovery Effectiveness {dimensionless}
; !- Latent Heat Recovery Effectiveness {dimensionless}
In [5]:
i.remove
z.setUseIdealAirLoads(true)
w = ft.translateModel(m)
puts w.getObjectsByType("ZoneVentilation:DesignFlowRate".to_IddObjectType)
Out[5]:
ZoneVentilation:DesignFlowRate,
Thermal Zone 1 Ventilation Air Changes per Hour, !- Name
Thermal Zone 1, !- Zone or ZoneList Name
{03b5360a-8d83-4cd5-b891-217534a53d2c}, !- Schedule Name
AirChanges/Hour, !- Design Flow Rate Calculation Method
, !- Design Flow Rate {m3/s}
, !- Flow Rate per Zone Floor Area {m3/s-m2}
, !- Flow Rate per Person {m3/s-person}
0.6, !- Air Changes per Hour {1/hr}
, !- Ventilation Type
, !- Fan Pressure Rise {Pa}
, !- Fan Total Efficiency
, !- Constant Term Coefficient
, !- Temperature Term Coefficient
, !- Velocity Term Coefficient
; !- Velocity Squared Term Coefficient
6 | No.6 Revision |
I dug into the source code. There are two different thing that could be happening:
zone.setUseIdealAirLoads(true)
behind the scenes), you'll end up with an HVACTemplate:ZoneIdealLoadsAirSystem with will get expanded by E+ as a ZoneHVAC:IdealLoadsAirSystem, but it won't have the DesignSpecific:OutdoorAir
(DSOA) object. Instead, a ZoneVentilation:DesignFlowRate
object is created to match the DSOA, so you can request the output variable Zone Ventilation Mass Flow Rate [kg/s]
ZoneHVACIdealLoadsAirSystem
and assign that as an actual equipment to the thermal Zone, and in this case the DSOA will be gotten and properly translated, and you can use the Output variable Zone Ideal Loads Outdoor Air Mass Flow Rate
Source:
OS:ZoneHVACIdealLoadsAirSystem
: ForwardTranslateZoneHVACIdealLoadsAirSystem.cpp#L178:L198ruby
puts "hello world!'
In [1]:
# Create an Example model (1 Zone, 4 spaces, 1 spaceType)
m = OpenStudio::Model::exampleModel()
# It has one zone, connected to a AirLoopHVAC, we remove it
m.getAirLoopHVACs[0].remove
# Create a DSOA and assign to the only space Type in the model
space_type = m.getSpaceTypes[0]
dsoa = DesignSpecificationOutdoorAir.new(m)
dsoa.setOutdoorAirFlowAirChangesperHour(0.6)
dsoa.setName("DSOA 0.6 ACH")
In [2]:
# We create a ZoneHVACIdealLoadsAirSystem and add it to the thermal Zone
i = OpenStudio::Model::ZoneHVACIdealLoadsAirSystem.new(m)
i.addToThermalZone(z)
In [3]: puts i # Notice DSOA is empty...
Out[3]:
OS:ZoneHVAC:IdealLoadsAirSystem,
{03253713-01e8-44d8-a6a9-ea3509fdcbe0}, !- Handle
Zone HVAC Ideal Loads Air System 1, !- Name
, !- Availability Schedule Name
{79065160-831c-4d50-97bb-a32156865d3d}, !- Zone Supply Air Node Name
{846003a5-290c-490b-8623-3e59384f5dd3}, !- Zone Exhaust Air Node Name
, !- Maximum Heating Supply Air Temperature {C}
, !- Minimum Cooling Supply Air Temperature {C}
, !- Maximum Heating Supply Air Humidity Ratio {kg-H2O/kg-air}
, !- Minimum Cooling Supply Air Humidity Ratio {kg-H2O/kg-air}
, !- Heating Limit
, !- Maximum Heating Air Flow Rate {m3/s}
, !- Maximum Sensible Heating Capacity {W}
, !- Cooling Limit
, !- Maximum Cooling Air Flow Rate {m3/s}
, !- Maximum Total Cooling Capacity {W}
, !- Heating Availability Schedule Name
, !- Cooling Availability Schedule Name
, !- Dehumidification Control Type
, !- Cooling Sensible Heat Ratio {dimensionless}
, !- Humidification Control Type
, !- Design Specification Outdoor Air Object Name
, !- Demand Controlled Ventilation Type
, !- Outdoor Air Economizer Type
, !- Heat Recovery Type
, !- Sensible Heat Recovery Effectiveness {dimensionless}
; !- Latent Heat Recovery Effectiveness {dimensionless}
In [4]:
# Translate to E+
w = ft.translateModel(m)
# Show result
puts w.getObjectsByType("ZoneHVAC:IdealLoadsAirSystem".to_IddObjectType)
Out[4]:
ZoneHVAC:IdealLoadsAirSystem,
Zone HVAC Ideal Loads Air System 1, !- Name
, !- Availability Schedule Name
Node 3, !- Zone Supply Air Node Name
Node 2, !- Zone Exhaust Air Node Name
, !- System Inlet Air Node Name
, !- Maximum Heating Supply Air Temperature {C}
, !- Minimum Cooling Supply Air Temperature {C}
, !- Maximum Heating Supply Air Humidity Ratio {kgWater/kgDryAir}
, !- Minimum Cooling Supply Air Humidity Ratio {kgWater/kgDryAir}
, !- Heating Limit
, !- Maximum Heating Air Flow Rate {m3/s}
, !- Maximum Sensible Heating Capacity {W}
, !- Cooling Limit
, !- Maximum Cooling Air Flow Rate {m3/s}
, !- Maximum Total Cooling Capacity {W}
, !- Heating Availability Schedule Name
, !- Cooling Availability Schedule Name
, !- Dehumidification Control Type
, !- Cooling Sensible Heat Ratio {dimensionless}
, !- Humidification Control Type
DSOA 0.6 ACH, !- Design Specification Outdoor Air Object Name
, !- Outdoor Air Inlet Node Name
, !- Demand Controlled Ventilation Type
, !- Outdoor Air Economizer Type
, !- Heat Recovery Type
, !- Sensible Heat Recovery Effectiveness {dimensionless}
; !- Latent Heat Recovery Effectiveness {dimensionless}
In [5]:
i.remove
z.setUseIdealAirLoads(true)
w = ft.translateModel(m)
puts w.getObjectsByType("ZoneVentilation:DesignFlowRate".to_IddObjectType)
Out[5]:
ZoneVentilation:DesignFlowRate,
Thermal Zone 1 Ventilation Air Changes per Hour, !- Name
Thermal Zone 1, !- Zone or ZoneList Name
{03b5360a-8d83-4cd5-b891-217534a53d2c}, !- Schedule Name
AirChanges/Hour, !- Design Flow Rate Calculation Method
, !- Design Flow Rate {m3/s}
, !- Flow Rate per Zone Floor Area {m3/s-m2}
, !- Flow Rate per Person {m3/s-person}
0.6, !- Air Changes per Hour {1/hr}
, !- Ventilation Type
, !- Fan Pressure Rise {Pa}
, !- Fan Total Efficiency
, !- Constant Term Coefficient
, !- Temperature Term Coefficient
, !- Velocity Term Coefficient
; !- Velocity Squared Term Coefficient
7 | No.7 Revision |
I dug into the source code. There are two different thing that could be happening:
zone.setUseIdealAirLoads(true)
behind the scenes), you'll end up with an HVACTemplate:Zone:IdealLoadsAirSystem
with will get expanded by E+ as a ZoneHVAC:IdealLoadsAirSystem
by E+, but it won't have the DesignSpecific:OutdoorAir
(DSOA) object. Instead, a ZoneVentilation:DesignFlowRate
object is created to match the DSOA, so you can request the output variable Zone Ventilation Mass Flow Rate [kg/s]
ZoneHVACIdealLoadsAirSystem
and assign that as an actual equipment to the thermal Zone, and in this case the DSOA will be gotten and properly translated, and you can use the Output variable Zone Ideal Loads Outdoor Air Mass Flow Rate
Source:
OS:ZoneHVACIdealLoadsAirSystem
: ForwardTranslateZoneHVACIdealLoadsAirSystem.cpp#L178:L198In [1]:
# Create an Example model (1 Zone, 4 spaces, 1 spaceType)
m = OpenStudio::Model::exampleModel()
# It has one zone, connected to a AirLoopHVAC, we remove it
m.getAirLoopHVACs[0].remove
# Create a DSOA and assign to the only space Type in the model
space_type = m.getSpaceTypes[0]
dsoa = DesignSpecificationOutdoorAir.new(m)
dsoa.setOutdoorAirFlowAirChangesperHour(0.6)
dsoa.setName("DSOA 0.6 ACH")
In [2]:
# We create a ZoneHVACIdealLoadsAirSystem and add it to the thermal Zone
i = OpenStudio::Model::ZoneHVACIdealLoadsAirSystem.new(m)
i.addToThermalZone(z)
In [3]: puts i # Notice DSOA is empty...
Out[3]:
OS:ZoneHVAC:IdealLoadsAirSystem,
{03253713-01e8-44d8-a6a9-ea3509fdcbe0}, !- Handle
Zone HVAC Ideal Loads Air System 1, !- Name
, !- Availability Schedule Name
{79065160-831c-4d50-97bb-a32156865d3d}, !- Zone Supply Air Node Name
{846003a5-290c-490b-8623-3e59384f5dd3}, !- Zone Exhaust Air Node Name
, !- Maximum Heating Supply Air Temperature {C}
, !- Minimum Cooling Supply Air Temperature {C}
, !- Maximum Heating Supply Air Humidity Ratio {kg-H2O/kg-air}
, !- Minimum Cooling Supply Air Humidity Ratio {kg-H2O/kg-air}
, !- Heating Limit
, !- Maximum Heating Air Flow Rate {m3/s}
, !- Maximum Sensible Heating Capacity {W}
, !- Cooling Limit
, !- Maximum Cooling Air Flow Rate {m3/s}
, !- Maximum Total Cooling Capacity {W}
, !- Heating Availability Schedule Name
, !- Cooling Availability Schedule Name
, !- Dehumidification Control Type
, !- Cooling Sensible Heat Ratio {dimensionless}
, !- Humidification Control Type
, !- Design Specification Outdoor Air Object Name
, !- Demand Controlled Ventilation Type
, !- Outdoor Air Economizer Type
, !- Heat Recovery Type
, !- Sensible Heat Recovery Effectiveness {dimensionless}
; !- Latent Heat Recovery Effectiveness {dimensionless}
In [4]:
# Translate to E+
w = ft.translateModel(m)
# Show result
puts w.getObjectsByType("ZoneHVAC:IdealLoadsAirSystem".to_IddObjectType)
Out[4]:
ZoneHVAC:IdealLoadsAirSystem,
Zone HVAC Ideal Loads Air System 1, !- Name
, !- Availability Schedule Name
Node 3, !- Zone Supply Air Node Name
Node 2, !- Zone Exhaust Air Node Name
, !- System Inlet Air Node Name
, !- Maximum Heating Supply Air Temperature {C}
, !- Minimum Cooling Supply Air Temperature {C}
, !- Maximum Heating Supply Air Humidity Ratio {kgWater/kgDryAir}
, !- Minimum Cooling Supply Air Humidity Ratio {kgWater/kgDryAir}
, !- Heating Limit
, !- Maximum Heating Air Flow Rate {m3/s}
, !- Maximum Sensible Heating Capacity {W}
, !- Cooling Limit
, !- Maximum Cooling Air Flow Rate {m3/s}
, !- Maximum Total Cooling Capacity {W}
, !- Heating Availability Schedule Name
, !- Cooling Availability Schedule Name
, !- Dehumidification Control Type
, !- Cooling Sensible Heat Ratio {dimensionless}
, !- Humidification Control Type
DSOA 0.6 ACH, !- Design Specification Outdoor Air Object Name
, !- Outdoor Air Inlet Node Name
, !- Demand Controlled Ventilation Type
, !- Outdoor Air Economizer Type
, !- Heat Recovery Type
, !- Sensible Heat Recovery Effectiveness {dimensionless}
; !- Latent Heat Recovery Effectiveness {dimensionless}
In [5]:
i.remove
z.setUseIdealAirLoads(true)
w = ft.translateModel(m)
puts w.getObjectsByType("ZoneVentilation:DesignFlowRate".to_IddObjectType)
Out[5]:
ZoneVentilation:DesignFlowRate,
Thermal Zone 1 Ventilation Air Changes per Hour, !- Name
Thermal Zone 1, !- Zone or ZoneList Name
{03b5360a-8d83-4cd5-b891-217534a53d2c}, !- Schedule Name
AirChanges/Hour, !- Design Flow Rate Calculation Method
, !- Design Flow Rate {m3/s}
, !- Flow Rate per Zone Floor Area {m3/s-m2}
, !- Flow Rate per Person {m3/s-person}
0.6, !- Air Changes per Hour {1/hr}
, !- Ventilation Type
, !- Fan Pressure Rise {Pa}
, !- Fan Total Efficiency
, !- Constant Term Coefficient
, !- Temperature Term Coefficient
, !- Velocity Term Coefficient
; !- Velocity Squared Term Coefficient
8 | No.8 Revision |
Short story: if you have clicked on "Use Ideal Air Loads" in the OS App next to the thermal Zone, you will want to request Zone Ventilation Mass Flow Rate [kg/s]
instead, as it uses a ZoneVentilation:DesignFlowRate
to mimic the DSOA, all output variables available for this object are here
I dug into the source code. There are two different thing that could be happening:
zone.setUseIdealAirLoads(true)
behind the scenes), you'll end up with an HVACTemplate:Zone:IdealLoadsAirSystem
with will get expanded by E+ as a ZoneHVAC:IdealLoadsAirSystem
by E+, but it won't have the DesignSpecific:OutdoorAir
(DSOA) object. Instead, a ZoneVentilation:DesignFlowRate
object is created to match the DSOA, so you can request the output variable Zone Ventilation Mass Flow Rate [kg/s]
ZoneHVACIdealLoadsAirSystem
and assign that as an actual equipment to the thermal Zone, and in this case the DSOA will be gotten and properly translated, and you can use the Output variable Zone Ideal Loads Outdoor Air Mass Flow Rate
Source:
OS:ZoneHVACIdealLoadsAirSystem
: ForwardTranslateZoneHVACIdealLoadsAirSystem.cpp#L178:L198In [1]:
# Create an Example model (1 Zone, 4 spaces, 1 spaceType)
m = OpenStudio::Model::exampleModel()
# It has one zone, connected to a AirLoopHVAC, we remove it
m.getAirLoopHVACs[0].remove
# Create a DSOA and assign to the only space Type in the model
space_type = m.getSpaceTypes[0]
dsoa = DesignSpecificationOutdoorAir.new(m)
dsoa.setOutdoorAirFlowAirChangesperHour(0.6)
dsoa.setName("DSOA 0.6 ACH")
In [2]:
# We create a ZoneHVACIdealLoadsAirSystem and add it to the thermal Zone
i = OpenStudio::Model::ZoneHVACIdealLoadsAirSystem.new(m)
i.addToThermalZone(z)
In [3]: puts i # Notice DSOA is empty...
Out[3]:
OS:ZoneHVAC:IdealLoadsAirSystem,
{03253713-01e8-44d8-a6a9-ea3509fdcbe0}, !- Handle
Zone HVAC Ideal Loads Air System 1, !- Name
, !- Availability Schedule Name
{79065160-831c-4d50-97bb-a32156865d3d}, !- Zone Supply Air Node Name
{846003a5-290c-490b-8623-3e59384f5dd3}, !- Zone Exhaust Air Node Name
, !- Maximum Heating Supply Air Temperature {C}
, !- Minimum Cooling Supply Air Temperature {C}
, !- Maximum Heating Supply Air Humidity Ratio {kg-H2O/kg-air}
, !- Minimum Cooling Supply Air Humidity Ratio {kg-H2O/kg-air}
, !- Heating Limit
, !- Maximum Heating Air Flow Rate {m3/s}
, !- Maximum Sensible Heating Capacity {W}
, !- Cooling Limit
, !- Maximum Cooling Air Flow Rate {m3/s}
, !- Maximum Total Cooling Capacity {W}
, !- Heating Availability Schedule Name
, !- Cooling Availability Schedule Name
, !- Dehumidification Control Type
, !- Cooling Sensible Heat Ratio {dimensionless}
, !- Humidification Control Type
, !- Design Specification Outdoor Air Object Name
, !- Demand Controlled Ventilation Type
, !- Outdoor Air Economizer Type
, !- Heat Recovery Type
, !- Sensible Heat Recovery Effectiveness {dimensionless}
; !- Latent Heat Recovery Effectiveness {dimensionless}
In [4]:
# Translate to E+
w = ft.translateModel(m)
# Show result
puts w.getObjectsByType("ZoneHVAC:IdealLoadsAirSystem".to_IddObjectType)
Out[4]:
ZoneHVAC:IdealLoadsAirSystem,
Zone HVAC Ideal Loads Air System 1, !- Name
, !- Availability Schedule Name
Node 3, !- Zone Supply Air Node Name
Node 2, !- Zone Exhaust Air Node Name
, !- System Inlet Air Node Name
, !- Maximum Heating Supply Air Temperature {C}
, !- Minimum Cooling Supply Air Temperature {C}
, !- Maximum Heating Supply Air Humidity Ratio {kgWater/kgDryAir}
, !- Minimum Cooling Supply Air Humidity Ratio {kgWater/kgDryAir}
, !- Heating Limit
, !- Maximum Heating Air Flow Rate {m3/s}
, !- Maximum Sensible Heating Capacity {W}
, !- Cooling Limit
, !- Maximum Cooling Air Flow Rate {m3/s}
, !- Maximum Total Cooling Capacity {W}
, !- Heating Availability Schedule Name
, !- Cooling Availability Schedule Name
, !- Dehumidification Control Type
, !- Cooling Sensible Heat Ratio {dimensionless}
, !- Humidification Control Type
DSOA 0.6 ACH, !- Design Specification Outdoor Air Object Name
, !- Outdoor Air Inlet Node Name
, !- Demand Controlled Ventilation Type
, !- Outdoor Air Economizer Type
, !- Heat Recovery Type
, !- Sensible Heat Recovery Effectiveness {dimensionless}
; !- Latent Heat Recovery Effectiveness {dimensionless}
In [5]:
i.remove
z.setUseIdealAirLoads(true)
w = ft.translateModel(m)
puts w.getObjectsByType("ZoneVentilation:DesignFlowRate".to_IddObjectType)
Out[5]:
ZoneVentilation:DesignFlowRate,
Thermal Zone 1 Ventilation Air Changes per Hour, !- Name
Thermal Zone 1, !- Zone or ZoneList Name
{03b5360a-8d83-4cd5-b891-217534a53d2c}, !- Schedule Name
AirChanges/Hour, !- Design Flow Rate Calculation Method
, !- Design Flow Rate {m3/s}
, !- Flow Rate per Zone Floor Area {m3/s-m2}
, !- Flow Rate per Person {m3/s-person}
0.6, !- Air Changes per Hour {1/hr}
, !- Ventilation Type
, !- Fan Pressure Rise {Pa}
, !- Fan Total Efficiency
, !- Constant Term Coefficient
, !- Temperature Term Coefficient
, !- Velocity Term Coefficient
; !- Velocity Squared Term Coefficient
9 | No.9 Revision |
Short story: if you have clicked on "Use Ideal Air Loads" in the OS App next to the thermal Zone, you will want to request Zone Ventilation Mass Flow Rate [kg/s]
instead, as it uses a ZoneVentilation:DesignFlowRate
to mimic the DSOA, all output variables available for this object are here
I dug into the source code. There are two different thing that could be happening:
zone.setUseIdealAirLoads(true)
behind the scenes), you'll end up with an HVACTemplate:Zone:IdealLoadsAirSystem
ZoneHVAC:IdealLoadsAirSystem
by E+, but it won't have the DesignSpecific:OutdoorAir
(DSOA) object. Instead, a ZoneVentilation:DesignFlowRate
object is created to match the DSOA, so you can request the output variable Zone Ventilation Mass Flow Rate [kg/s]
ZoneHVACIdealLoadsAirSystem
and assign that as an actual equipment to the thermal Zone, and in this case the DSOA will be gotten and properly translated, and you can use the Output variable Zone Ideal Loads Outdoor Air Mass Flow Rate
Source:
OS:ZoneHVACIdealLoadsAirSystem
: ForwardTranslateZoneHVACIdealLoadsAirSystem.cpp#L178:L198In [1]:
# Create an Example model (1 Zone, 4 spaces, 1 spaceType)
m = OpenStudio::Model::exampleModel()
# It has one zone, connected to a AirLoopHVAC, we remove it
m.getAirLoopHVACs[0].remove
# Create a DSOA and assign to the only space Type in the model
space_type = m.getSpaceTypes[0]
dsoa = DesignSpecificationOutdoorAir.new(m)
dsoa.setOutdoorAirFlowAirChangesperHour(0.6)
dsoa.setName("DSOA 0.6 ACH")
In [2]:
# We create a ZoneHVACIdealLoadsAirSystem and add it to the thermal Zone
i = OpenStudio::Model::ZoneHVACIdealLoadsAirSystem.new(m)
i.addToThermalZone(z)
In [3]: puts i # Notice DSOA is empty...
Out[3]:
OS:ZoneHVAC:IdealLoadsAirSystem,
{03253713-01e8-44d8-a6a9-ea3509fdcbe0}, !- Handle
Zone HVAC Ideal Loads Air System 1, !- Name
, !- Availability Schedule Name
{79065160-831c-4d50-97bb-a32156865d3d}, !- Zone Supply Air Node Name
{846003a5-290c-490b-8623-3e59384f5dd3}, !- Zone Exhaust Air Node Name
, !- Maximum Heating Supply Air Temperature {C}
, !- Minimum Cooling Supply Air Temperature {C}
, !- Maximum Heating Supply Air Humidity Ratio {kg-H2O/kg-air}
, !- Minimum Cooling Supply Air Humidity Ratio {kg-H2O/kg-air}
, !- Heating Limit
, !- Maximum Heating Air Flow Rate {m3/s}
, !- Maximum Sensible Heating Capacity {W}
, !- Cooling Limit
, !- Maximum Cooling Air Flow Rate {m3/s}
, !- Maximum Total Cooling Capacity {W}
, !- Heating Availability Schedule Name
, !- Cooling Availability Schedule Name
, !- Dehumidification Control Type
, !- Cooling Sensible Heat Ratio {dimensionless}
, !- Humidification Control Type
, !- Design Specification Outdoor Air Object Name
, !- Demand Controlled Ventilation Type
, !- Outdoor Air Economizer Type
, !- Heat Recovery Type
, !- Sensible Heat Recovery Effectiveness {dimensionless}
; !- Latent Heat Recovery Effectiveness {dimensionless}
In [4]:
# Translate to E+
w = ft.translateModel(m)
# Show result
puts w.getObjectsByType("ZoneHVAC:IdealLoadsAirSystem".to_IddObjectType)
Out[4]:
ZoneHVAC:IdealLoadsAirSystem,
Zone HVAC Ideal Loads Air System 1, !- Name
, !- Availability Schedule Name
Node 3, !- Zone Supply Air Node Name
Node 2, !- Zone Exhaust Air Node Name
, !- System Inlet Air Node Name
, !- Maximum Heating Supply Air Temperature {C}
, !- Minimum Cooling Supply Air Temperature {C}
, !- Maximum Heating Supply Air Humidity Ratio {kgWater/kgDryAir}
, !- Minimum Cooling Supply Air Humidity Ratio {kgWater/kgDryAir}
, !- Heating Limit
, !- Maximum Heating Air Flow Rate {m3/s}
, !- Maximum Sensible Heating Capacity {W}
, !- Cooling Limit
, !- Maximum Cooling Air Flow Rate {m3/s}
, !- Maximum Total Cooling Capacity {W}
, !- Heating Availability Schedule Name
, !- Cooling Availability Schedule Name
, !- Dehumidification Control Type
, !- Cooling Sensible Heat Ratio {dimensionless}
, !- Humidification Control Type
DSOA 0.6 ACH, !- Design Specification Outdoor Air Object Name
, !- Outdoor Air Inlet Node Name
, !- Demand Controlled Ventilation Type
, !- Outdoor Air Economizer Type
, !- Heat Recovery Type
, !- Sensible Heat Recovery Effectiveness {dimensionless}
; !- Latent Heat Recovery Effectiveness {dimensionless}
In [5]:
i.remove
z.setUseIdealAirLoads(true)
w = ft.translateModel(m)
puts w.getObjectsByType("ZoneVentilation:DesignFlowRate".to_IddObjectType)
Out[5]:
ZoneVentilation:DesignFlowRate,
Thermal Zone 1 Ventilation Air Changes per Hour, !- Name
Thermal Zone 1, !- Zone or ZoneList Name
{03b5360a-8d83-4cd5-b891-217534a53d2c}, !- Schedule Name
AirChanges/Hour, !- Design Flow Rate Calculation Method
, !- Design Flow Rate {m3/s}
, !- Flow Rate per Zone Floor Area {m3/s-m2}
, !- Flow Rate per Person {m3/s-person}
0.6, !- Air Changes per Hour {1/hr}
, !- Ventilation Type
, !- Fan Pressure Rise {Pa}
, !- Fan Total Efficiency
, !- Constant Term Coefficient
, !- Temperature Term Coefficient
, !- Velocity Term Coefficient
; !- Velocity Squared Term Coefficient
10 | No.10 Revision |
Short story: if you have clicked on "Use Ideal Air Loads" in the OS App next to the thermal Zone, you will want to request Zone Ventilation Mass Flow Rate [kg/s]
instead, as it uses a ZoneVentilation:DesignFlowRate
to mimic the DSOA, all output variables available for this object are here
I dug into the source code. There are two different thing that could be happening:
zone.setUseIdealAirLoads(true)
behind the scenes), you'll end up with an HVACTemplate:Zone:IdealLoadsAirSystem
ZoneHVAC:IdealLoadsAirSystem
by E+, but it won't have the DesignSpecific:OutdoorAir
(DSOA) object. Instead, a ZoneVentilation:DesignFlowRate
object is created to match the DSOA, so you can request the output variable Zone Ventilation Mass Flow Rate [kg/s]
ZoneHVACIdealLoadsAirSystem
and assign that as an actual equipment to the thermal Zone, and in this case the DSOA will be gotten and properly translated, and you can use the Output variable Zone Ideal Loads Outdoor Air Mass Flow Rate
Source:
OS:ZoneHVACIdealLoadsAirSystem
: ForwardTranslateZoneHVACIdealLoadsAirSystem.cpp#L178:L198In [1]:
# Create an Example model (1 Zone, 4 spaces, 1 spaceType)
m = OpenStudio::Model::exampleModel()
# It has one zone, connected to a AirLoopHVAC, we remove it
m.getAirLoopHVACs[0].remove
# Create a DSOA and assign to the only space Type in the model
space_type = m.getSpaceTypes[0]
dsoa = DesignSpecificationOutdoorAir.new(m)
dsoa.setOutdoorAirFlowAirChangesperHour(0.6)
dsoa.setName("DSOA 0.6 ACH")
In [2]:
# We create a ZoneHVACIdealLoadsAirSystem and add it to the thermal Zone
i = OpenStudio::Model::ZoneHVACIdealLoadsAirSystem.new(m)
i.addToThermalZone(z)
In [3]: puts i # Notice DSOA is empty...
Out[3]:
OS:ZoneHVAC:IdealLoadsAirSystem,
{03253713-01e8-44d8-a6a9-ea3509fdcbe0}, !- Handle
Zone HVAC Ideal Loads Air System 1, !- Name
, !- Availability Schedule Name
{79065160-831c-4d50-97bb-a32156865d3d}, !- Zone Supply Air Node Name
{846003a5-290c-490b-8623-3e59384f5dd3}, !- Zone Exhaust Air Node Name
, !- Maximum Heating Supply Air Temperature {C}
, !- Minimum Cooling Supply Air Temperature {C}
, !- Maximum Heating Supply Air Humidity Ratio {kg-H2O/kg-air}
, !- Minimum Cooling Supply Air Humidity Ratio {kg-H2O/kg-air}
, !- Heating Limit
, !- Maximum Heating Air Flow Rate {m3/s}
, !- Maximum Sensible Heating Capacity {W}
, !- Cooling Limit
, !- Maximum Cooling Air Flow Rate {m3/s}
, !- Maximum Total Cooling Capacity {W}
, !- Heating Availability Schedule Name
, !- Cooling Availability Schedule Name
, !- Dehumidification Control Type
, !- Cooling Sensible Heat Ratio {dimensionless}
, !- Humidification Control Type
, !- Design Specification Outdoor Air Object Name
, !- Demand Controlled Ventilation Type
, !- Outdoor Air Economizer Type
, !- Heat Recovery Type
, !- Sensible Heat Recovery Effectiveness {dimensionless}
; !- Latent Heat Recovery Effectiveness {dimensionless}
In [4]:
# Translate to E+
w = ft.translateModel(m)
# Show result
puts w.getObjectsByType("ZoneHVAC:IdealLoadsAirSystem".to_IddObjectType)
Out[4]:
ZoneHVAC:IdealLoadsAirSystem,
Zone HVAC Ideal Loads Air System 1, !- Name
, !- Availability Schedule Name
Node 3, !- Zone Supply Air Node Name
Node 2, !- Zone Exhaust Air Node Name
, !- System Inlet Air Node Name
, !- Maximum Heating Supply Air Temperature {C}
, !- Minimum Cooling Supply Air Temperature {C}
, !- Maximum Heating Supply Air Humidity Ratio {kgWater/kgDryAir}
, !- Minimum Cooling Supply Air Humidity Ratio {kgWater/kgDryAir}
, !- Heating Limit
, !- Maximum Heating Air Flow Rate {m3/s}
, !- Maximum Sensible Heating Capacity {W}
, !- Cooling Limit
, !- Maximum Cooling Air Flow Rate {m3/s}
, !- Maximum Total Cooling Capacity {W}
, !- Heating Availability Schedule Name
, !- Cooling Availability Schedule Name
, !- Dehumidification Control Type
, !- Cooling Sensible Heat Ratio {dimensionless}
, !- Humidification Control Type
DSOA 0.6 ACH, !- Design Specification Outdoor Air Object Name
, !- Outdoor Air Inlet Node Name
, !- Demand Controlled Ventilation Type
, !- Outdoor Air Economizer Type
, !- Heat Recovery Type
, !- Sensible Heat Recovery Effectiveness {dimensionless}
; !- Latent Heat Recovery Effectiveness {dimensionless}
In [5]:
i.remove
z.setUseIdealAirLoads(true)
w = ft.translateModel(m)
puts w.getObjectsByType("ZoneVentilation:DesignFlowRate".to_IddObjectType)
Out[5]:
ZoneVentilation:DesignFlowRate,
Thermal Zone 1 Ventilation Air Changes per Hour, !- Name
Thermal Zone 1, !- Zone or ZoneList Name
{03b5360a-8d83-4cd5-b891-217534a53d2c}, !- Schedule Name
AirChanges/Hour, !- Design Flow Rate Calculation Method
, !- Design Flow Rate {m3/s}
, !- Flow Rate per Zone Floor Area {m3/s-m2}
, !- Flow Rate per Person {m3/s-person}
0.6, !- Air Changes per Hour {1/hr}
, !- Ventilation Type
, !- Fan Pressure Rise {Pa}
, !- Fan Total Efficiency
, !- Constant Term Coefficient
, !- Temperature Term Coefficient
, !- Velocity Term Coefficient
; !- Velocity Squared Term Coefficient