Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question
5

Outside Air -Ideal Loads

asked 2018-04-17 08:40:04 -0600

PY's avatar

updated 2018-04-17 09:14:24 -0600

I need the hourly outdoor-air flow for my buildings. Normally I export my hourly data to an excel sheet with a measure. For the outside air, I tried to use Output:Variable,*,Zone Ideal Loads Outdoor Air Mass Flow Rate,hourly; !- HVAC Average [kg/s], but the excel file is full of zeros. The same with Zone Ideal Loads Outdoor Air Sensible Heating Rate.

My ratios of outdoor air is defined in the space types in OS:DesignSpecification:OutdoorAir, with the Sum method and they are not zeros (of course) neither is the schedule.

Does anyone know how I can have access to this data ?

edit retag flag offensive close merge delete

Comments

Do you have a thermostat defined for your zones? (optionally: can you upload your model somewhere and add a link in your question?)

Julien Marrec's avatar Julien Marrec  ( 2018-04-17 09:03:59 -0600 )edit

Yes I have thermostat in my model. The other Output Variables like Zone Ideal Loads Zone Total Heating Energy, are okay.

PY's avatar PY  ( 2018-04-17 09:09:25 -0600 )edit

So, I think you're requesting the right variable Zone Ideal Loads Outdoor Air Mass Flow Rate, so there must be something else at play here, your model would help troubleshooting.

Julien Marrec's avatar Julien Marrec  ( 2018-04-17 09:11:16 -0600 )edit

Check the resulting IDF file, to ensure the ZoneHVAC:IdealLoadsAirSystem does have its Design Specification Outdoor Air Object Name set correctly too.

Julien Marrec's avatar Julien Marrec  ( 2018-04-17 09:12:18 -0600 )edit

2 Answers

Sort by ยป oldest newest most voted
5

answered 2018-04-17 09:47:12 -0600

updated 2024-10-18 14:13:10 -0600

sashadf1's avatar

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:

  • If you clicked on a ThermalZone checkbox in the OS App to enable Ideal Air Loads (meaning zone.setUseIdealAirLoads(true) behind the scenes), you'll end up with an HVACTemplate:Zone:IdealLoadsAirSystem which 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]
  • If you use the API, you can explicitly create a 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:


Proof in action

Initial setup

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")

Using an explicit ZoneHVACIdealLoadsAirSystem

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 ...
(more)
edit flag offensive delete link more

Comments

I opened two issues on github on this topic #3100 and #3101 FYI. These are feature requests, so use the "+1" feature as you see fit.

Julien Marrec's avatar Julien Marrec  ( 2018-04-17 10:25:12 -0600 )edit

You're right, a ZoneVentilation:DesignFlowRate object is created. However, the schedule does not seem to apply to each flow rate. Flow Rate Per Person is okay but Flow Rate Per Zone Floor Area is always on.Then Zone Ventilation Mass Flow Rate [kg/s] is inacurate.

I'm not familiar with the API, (it's on my to-do list) so I can't implement your solution but thanks a lot.

PY's avatar PY  ( 2018-04-17 10:40:53 -0600 )edit
Julien Marrec's avatar Julien Marrec  ( 2018-04-18 05:02:28 -0600 )edit

In case you find C++ hard to read: Basically if your DSOA Outdoor Air Method is "Max", it creates a single ZV corresponding to the max of FlowPerPerson, FlowPerArea, ACH or Flow (the 4 possible methods)

If "Sum", then it's going to create one ZV for each of the 4 "methods" where the value isn't zero.

ZV schedule is alwaysOn (=1) for ACH, Flow, or FlowPerArea, For FlowPerPerson, it's the Actual "People Schedule" for that zone IF there are actually people in your zone (otherwise no ZV)

Julien Marrec's avatar Julien Marrec  ( 2018-04-18 05:05:11 -0600 )edit

I think this behavior is perhaps what you want.

What OpenStudio does right now amounts to enabling Demand Controlled Ventilation (DCV), because it actually tracks the real people occupation at each timestep. Which is something you might or might not want...

This is indeed what ASHRAE 62.1 tells you to do. FlowPerArea is always on, that's to meant to remove inherent building contaminants (think paint VOCs, etc), while the FlowPerPerson would depend on the occupation because it's meant to remove the people's contaminants (CO2 generated by people etc).

Julien Marrec's avatar Julien Marrec  ( 2018-04-18 05:10:43 -0600 )edit
2

answered 2018-04-17 09:24:44 -0600

updated 2018-04-17 09:25:51 -0600

If you select to have your zones modeled with ideal air loads in OpenStudio, at runtime OpenStudio will add in ZoneHVAC:IdealLoadsAirSystem objects to your zones, but most of the fields for the objects will be left blank. One of those blank fields is the Design Specification Outdoor Air Object Name which tells ideal air loads what ventilation rate to use. So the default is to assume no ventilation.

You need to use an EnergyPlus measure to link your Design Specification Outdoor Air definitions in your spaces/spacetypes with the field in the Ideal Loads Air System object.

The Ideal Loads Options measure on BCL will do that for you and will also optionally include all the output variables you may want.

edit flag offensive delete link more

Comments

(FYI: This can be done using an OpenStudio measure, see my answer)

Julien Marrec's avatar Julien Marrec  ( 2018-04-17 10:09:47 -0600 )edit

Thank you for the measure.

I tried to use it. I selected Use Individual Zone Design Outdoor but the excel file is still full of zeros. When I open the E+ file, there is nothing specified in Design Specification Outdoor Air Object Name. Besides, I can't open the in.idf file with IDF Editor, it seems that the measure create a problem (Too many fiedls for Object: Meter:Custom)

PY's avatar PY  ( 2018-04-17 10:49:03 -0600 )edit

How many zones do you have in your model? If you have many and request several output variables for each one you can exceed the amount that you can view in the IDF Editor. You could uncheck the box in the measure that makes these meters and make your own meters for only a few specific zones to avoid going over the limit.

What do you see for the Zone Ideal Loads Outdoor Air Mass Flow Rate variables in DView? Still zero? Did you make sure the schedule for your design specification outdoor air objects is non-zero?

mdahlhausen's avatar mdahlhausen  ( 2018-04-17 11:12:46 -0600 )edit

I have 96 Zones. I unchecked the box in the measure and it's fine now. There is nothing in DView, the value is 0 throughout the year. I checked the schedule for my design specification outdoor air objects and it's 1 from 8 am to 9pm and null elsewhere.

PY's avatar PY  ( 2018-04-17 14:17:30 -0600 )edit

Can you post a link to your model or send me a link? I'd like to make sure there isn't an issue with the measure.

mdahlhausen's avatar mdahlhausen  ( 2018-04-17 15:48:58 -0600 )edit

Here is a link to my model : link text

PY's avatar PY  ( 2018-04-18 18:57:43 -0600 )edit

Yep, it's an EnergyPlus bug. The Design Specification Outdoor Air Object Name fields defined in HVACTemplate:Zone:IdealLoadsAirSystem objects aren't being included in the ZoneHVAC:IdealLoadsAirSystem object at expansion. I've filed an issue.

[EDIT:] Not a bug; I needed to include a field in in the HVACTemplate object to tell the ZoneHVAC object to use the DSOA it was given. I've fixed the measure and re-uploaded to BCL. Per Julien's answer, you'll need to request the Zone Ventilation Mass Flow Rate variable.

mdahlhausen's avatar mdahlhausen  ( 2018-04-19 11:35:25 -0600 )edit

Thanks a lot for your help Matthew

PY's avatar PY  ( 2018-04-26 11:12:59 -0600 )edit

Guys, I have more or less the same problem that i cannot fix... In the "Ideal load option" measure of the open studio, I have chose "use individual zone design out door air" for out door specification...Than I have defined "design specification outdoor air object " for each zone...but when I run the simulation there is this error:

Error: Unable to find design specification outdoor air for zone 2nd floor bedrooms. Please specify a design specification outdoor air object for the zone, or select None for Outdoor Air Specification.

any idea what is the problem?

Thanks

Mamak's avatar Mamak  ( 2019-05-24 10:33:20 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Training Workshops

Careers

Question Tools

3 followers

Stats

Asked: 2018-04-17 08:40:04 -0600

Seen: 939 times

Last updated: Oct 29