top of page
OpenStudio Intro-thumb1.png

1. OpenStudio - Create VAV System with BCL Measure

In this video, we will show how to quickly create and assign a Variable Air Volume (VAV) air handler system with chilled water and heating water loops to your building using a measure downloaded from the Building Component Library.

We have a fairly complex, and large, office building.
I am going to show you how to input the HVAC system for this building.
But first, I will show you a building component library (BCL) measure that works real well for inputting a common system.
It will not apply to this building. This building is older, with an older type of system.
But, I will show you the shortcut first. Just to show you some of the power of the building component library measures.
Go to your model and go to the measure tab.
Let us take a look at the building component library. We will check to see if this measure needs any updates.
This measure is under HVAC-Whole System.
It is part of the advanced energy design guide (AEDG) series of measures.  We will use AEDG as a search term.
Let us look at this. The one we are going to use is this AEDG Office HVAC VAV with Chilled Water System (AedgOfficeHvacVavChw).
It looks like it is up-to-date. If it was not up-to-date, it would tell you this measure is not up-to-date.
You may download the latest version. Check it and click the download button.
But, it looks like it is up-to-date.
The other thing that I wanted to show you; On the building component library there are a whole new bunch of measures that you can download.
The measures will change your building systems and even install whole systems onto your building.
These were created by the national renewable energy laboratory (NREL).
They are based on the ASHRAE Advance Energy Design Guide recommendations.
You will see a whole bunch of different options that you can choose from.
But, we are going to choose the office building VAV system with a chilled water plant.
Go up to components and measures-apply now.
Go to HVAC and it is going to be a “whole system”. Let us select the VAV system with chilled water.
The first input is asking if we have any ceiling return air plenums.
We do have ceiling cavities, but all of our (air) returns are ducted.
So, we do not have any ceiling return plenums.
But, you can choose what space type to assign to a return air plenum.
We do have ceiling cavity plenums, but like I said, all of the returns are ducted inside that plenum.
So, we do not need to apply that now.
Here, it is asking for the cost of the system.
This check box, “apply recommended availability and ventilation schedules for air handlers”; we will leave this checked.
Click “apply measure”.
It looks like the measure was successful. we started with zero air loops or plant loops or conditioned zones.
We ended up with ten air loops, two plant loops, and sixty-nine zones that are conditioned.
I should say that this measure applies one of these vav air loops to each story.
You will have to assign stories on your building model.
You can see that I have got several stories assigned. I will set to "render by building story".
Each one of these stories was assigned an HVAC air handler system.
You can see that in this info right here, there are zero errors or warnings.
Sometimes you might get some errors or warnings that you will have to troubleshoot your model if the measure doesn't run. You might be missing key information.
It applied the measure to the model. Let us go ahead and save this as a newer version.
Okay. We can go to our air loops and you can select the air loops drop down here.
You will notice it has created all of these air loops based on the story and it has assigned those air loops to the spaces within that story.
It has created a VAV air handler with an air-to-air heat exchanger for heat recovery, a cooling water coil, a heating water coil, and a variable flow fan.
It has a set point manager based on an outdoor air reset. There are a bunch of VAV terminal boxes with no reheat and the zones of course.
You can go to the thermal zones tab and you will see that each one of these thermal zones was assigned a VAV terminal box.
The zone also has a convective hot water baseboard for for zone level heating.
We can go back to the HVAC systems tab and we should see a chilled water plant and a heating water plant that was created as well.
Yes, we have a chilled water loop here. Air cooled chiller. Variable flow pump. All the chilled water coils and the air handlers.
Likewise, the heating water loop, stame thing. Variable flow pump. Boiler. Set point controller and all of the air handler heating coils and baseboard coils.
Finally, we can go and run the simulation and see if it works.
First, we are going to go to the simulation settings tab. We will just shorten the simulation run to a single day. That way we are not sitting here forever.
If you want to speed it up even more, we can put the number of time steps per hour to just one.
Click save.
There are other advanced settings that you can do to speed up your simulation for shading and convergence and all that stuff.
But, we will just go ahead and run right now.
So...there is um...looks like there is output all in all it actually completed successfully.
I did forget I had some output variables selected, so that probably increased the the post processing for the sql file.
Otherwise, it ran successfully and it actually took energy plus a minute and thirty seconds.
So, that is how you quickly assign an HVAC system to an energy model without having any systems input previously.
Next video we will describe how to manually intput a dual-duct vav system onto this building.
Thank you. Please like and subscribe.

2. OpenStudio - Create Central Plant Systems

In this video, we will show how to create steam and water loop systems using the district heating and cooling objects.  We will also discuss fluid to fluid heat exchangers and how to connect equipment between loops.

The first task: We have to install some of the central plant loops.
This building is served by a central steam system.  
We have to create a central steam system plant loop. Go to the plus button at the top.  
Let us scroll down to empty plant loop. Add to model.  
I should note: OpenStudio does not support steam, although EnergyPlus does. 
We are going to get around that by just increasing the system operating temperature.
It will throw some errors when we run the simulation, but it should not cause a severe error.
It will just be a warning saying that we are using too hot of a temperature for the loop.
To start our loop we will install a pump. Go over to the library tab, let us input a variable speed pump.  
Just drag and drop the variable speed pump over here. We can select this.  
Once again, this is a steam system so we don't actually have a circulating pump.  
In order to get around that we can just put the rated pump head at zero.  
That way this pump will not use energy during the simulation. So, we will not have a pump energy penalty because of course the system is steam. 
The rest of the stuff we can leave at auto-sized.
This this should not matter. We will do "intermittent" for this pump.
It does not matter since we are not going to have a penalty for this pump. Because this is a steam system.
Next, we want to install a district system.
You can use district heating or district cooling systems when you do not want to go through the trouble of sizing a boiler system and distribution piping and all that stuff.
The district systems mean that they have unlimited capacity. Although, you can hard size the capacity. 
With auto-size it basically means they will have unlimited capacity for heating or cooling.
Now, we need to install an adiabatic pipe. Let us see. We need to go to pipe, adiabatic.  
If you do have pipes that have interior or exterior heat losses, you can install those.
But, for the most part, I do not worry about those unless there are significant pipe heat losses  on your system.
We will install an adiabatic bypass pipe on here.
Again, this is a steam system, so it it really should not matter.
Anytime you create a loop, and specifically if you have a constant volume system, you must have a bypass pipe or duct.
This is for when your boiler or chiller or VAV boxes are not operating.
If you have a constant volume pump or fan, it can bypass around.
If you have a variable speed pump or fan, generally, you do not need those bypasses. But, we will put that in here anyway.  
Next, we want to create a setpoint manager. We will selecte a SetpointManager:Scheduled.
Scheduled hot water temperature. We should probably rename these. District steam heating.
Scheduled steam temperature. You can see that it dragged in a schedule for us called "hot water temperature".
We need to go up to the schedules tab and rename that and adjust to steam temperature.
I believe it is about 240 fahrenheit. I cannot remember what  the steam pressure for that is.
We will go back to the HVAC systems tab.
Go to plant loop one. Look at the set point manager. Now the schedule's name is steam temperature.
We will call this steam loop. We will just leave this as water. We do not want to make things worse on the error outputs.
This maximum loop temperature: 240 fahrenheit.
We can leave the rest of this stuff as default. This building has a steam to hot water heat exchanger on it.
We will put the heat exchanger on the demand side of this loop.
Go down to heat exchanger. Were is that fluid-to-fluid...we can put that in here.  
Same thing with the bypass pipe. Now we have our fluid to fluid heat exchanger.
We can call this "steam to water heat exchanger".  
Most of the stuff we can leave as auto sized unless you know specifically what size it is.  
For the model type, again, you can choose what type of heat exchanger you have. We will just leave it as ideal for now.
Like I said in previous videos, if you want to find out more about these components you can go into the EnergyPlus input output reference.
You can look up HeatExchanger:FluidToFluid and read all about it. Type in HeatExchanger:FluidToFluid and then search for the item in the EnergyPlus input output reference.
You can read about all of the inputs and outputs for this particular object.  
We can leave these as auto sized for control type.
We will choose "heating set point modulated" because we are going to be modulating the steam to control our heating water temperature.
This is the temperature difference to activate the heat exchanger.
It is the temperature difference across the heat exchanger that allows the heat exchanger to operate.
Let us see...loop to loop. We will just leave this as "loop to loop".
All the rest of the stuff we can leave as default sizing factor of one. The maximum temperature we will input 250°F.  
One more thing. Going back to our steam loop. I forgot to mention.  
If you do have a...well this is a steam loop, so it is not really applicable.
But, if you do have a common pipe system, you can select common pipe down here.
In this case you have to place a pump right here and that is how you would create a primary-secondary pumping system with a common pipe.
So, that is how you create the steam loop.  
Next, we need to create the water loop. We will go up to the plus button at the top.
Scroll down to empty plant loop. Add to model.
Next,  go to the library. We will just drag in this adiabatic pipe here.  
We want to put in a variable speed pump...variable speed.  
I will call this heating water pump. I can leave these as auto-sized.
I can not remember. I think for this particular project...I do not think I had the information for this pump.
We will just leave this as default.  
If you have the specifics on the pump performance, you can enter those here.
Pump control type: we are going to set this as intermittent. It will only run as needed.
If you have it set as continuous, it will run all the time. So, it is important to set that as intermittent.  
If you have the pump located in some zone where it is losing heat to the zone you can select here.
We will put this in the basement thermal zone.
Finally, the design minimum flow rate fraction.
This is also applicable if you do not select the minimum flow rate for the pump. The minimum stable flow rate for the pump.
You can also just put in a fraction here and I think typically we do not let the pumps run below 30 percent.
We will just put in 30% here.
Next, we need to drop in our heat exchanger. Go to my model tab. Heat exchanger fluid to fluid.
Drag this from there. You can see that this is connected and it is automatically connected to the previous loop.
You can see it has these connectors right here. If you click the connector, it will take us to our district steam loop right here.
Likewise, the heat exchanger is down on the demand side of the steam loop.
If we click this connector, it will take us to the supply side of our heating water loop. We will select the plant loop.
We are going to call this "heating water loop". Fluid type is 
water. Maximum loop temperature here is 180°F.
I beleive I had that information...oh...let us see...maybe it was 120°F.
Anyway we will just leave that as 180°F for now.  
Minimum loop temperature...and the rest of this stuff we can leave as a default.
Load distribution scheme. If you do have multiple sources on your loop, you might look at the load distribution scheme and how those sources are being staged on and off.
We will just leave this as "optimal" for now. Optimal just stages it based on the most efficient part load ratio for each piece of equipment.  
If you do have a primary-secondary system, you would select this. You would either have a common pipe or a two-way common pipe. 
You would have to install the the secondary loop pump on the demand side down here. Loop type is heating. 180°F.
We will just leave the rest as it is. Then we need to go back to library and install a setpoint manager.
We will use a scheduled set point manager again. Scheduled hot water temperature.
In this case it is automatically called hot water temperature. I don't really like that name.
We should call it "heating water temperature" not "hot water temperature".
Heating water temperature. I believe we had that set for 180°F for the loop temperature.
You can just hover over it type in the temperature that you want.  
Let us go back to the HVAC tab.
The heating water loop. We have our setpoint manager installed. Now, the loop is ready to take on any demand side equipment.
And, that is how you input both a district steam system and a heat exchanger and a heating water loop. 
Next, we can go up to the plus sign again.
We will install our district cooling system. Go to empty plant loop, add to model. Scroll down.
Let us just do a variable speed pump, adiabatic pipe, district cooling.
Do auto sized on this. We will leave the pump head as normal. We will name this cooling water plant loop.
I can leave the rest of this as default.  Let us see. Design loop exit temperature was 45°F.
We can just set this to maybe 80°F. It does not really matter. The rest of this stuff, we can leave as normal. 
Go to the library tab. We need to put a set point manager. Select scheduled setpoint manager: scheduled chilled water temperature.
Go back to the schedules. Chilled water temperature. Make sure that this is set for 45°F.
Go back to the loop.
That is how you install a district chilled water system. It is now ready to take on any demand side equipment.
Thank you. Please like and subscribe.

Create VAV System with BCL Measure
Create Central Plant Systems

3. OpenStudio - Create Air Loops

In this video, we discuss how to create custom air loops for heating, ventilation, and air conditioning systems.  We will create a simple heat-vent system and a dual-duct system and connect them to our central plant systems.

The next task is to install a heat and vent system for the basement area.
This basement area also has baseboard hot water heaters in the zones.
Go to the thermal zones tab.
Fortunately for us, the basement is considered a whole single thermal zone.
We only have to worry about this one thermal zone. The basement.
Go to the library tab. We will search for baseboard convective water.
Drag that into our zone equipment. Now the basement has baseboard hot water heaters as its primary heating source.
Now, go up to this chain link icon up here on the edit tab. Click it.
Select heating water loop as the heating water source for these baseboard convectors.
The rest of this stuff is customizable.
Rated average water temperature maybe 160°F (71.1°C).
We will just leave the rest of this stuff as default and auto sized.
If you do know the specifics, you can change those items there.
Let us go to the HVAC systems tab. Go to the plus at the top.
We will add a new...well we can do this warm air gas-fired furnace.
We will add this to the model. It comes in as all prepared for us.
However, we are not going to use a gas furnace for heating.
We are going to use a hot water heating coil. So, we will delete that.
Go to the library tab. We need to search for coil heating water.
Hot water heating coil. We will drop this in here.
We can select the heating water coil. We will just call this HV for heat and vent.
Again, for the heating water coil, you go up to the the chain link button on the edit tab. Click it.
We need to link this heating water coil to our heating water loop.
Go back to the edit properties tab. We can leave all the rest of this stuff at its default values.
I recall this system was a constant volume system.
We will just leave this as a constant volume fan.
We will just rename all these things.
This is going to be a HV. I will just call it HV-1.
The airflow rate for this was 3,000 cfm (5,100 m3/h).
Design outdoor air flow rate. I do not think I have that information.
We will just leave all the rest of this as a default for now.
Design supply air temperature was 105°F (40.6°C).
Well let us see.  This is for sizing. We probably want to size the coil for 100% outdoor air in heating and cooling.
That would be the sizing of the system. We can just leave all the rest of this stuff as default for now.
You will note that it already has a air terminal (constant volume diffuser) on the demand side.
If you know what size any of this stuff is, you can always go to the edit tab and edit those.
We are just going to assign the zones. We will click the splitter right here.
We only have one zone, so we are going to click the basement (zone). Add that basement zone to the HV system.
Then, as discussed before, this is a constant volume system, so it is good to have a bypass duct...
oh...let us see...
I am not sure if a bypass duct is necessary...but...nope
It will not let us do that. Yeah...that would be only for...
I believe that would be only for VAV systems.
There might be some additional settings under your air loop system for bypass on constant volume systems.
That is it for our heat vent system.
Now, we need to add the dual duct air handlers.
Go up to the plus button. This time we will scroll down to a dual duct air loop. Click "add to model".
We will call this AHU1.
We can leave this auto sized for now. The central heating maximum system airflow ratio.
Let us see...I think for this system it was 50%.
What else.
Design supply air temperature. This was 105°F (40.6°C). Yep.
The rest of this stuff we can leave as default.
Click save.
Next we need to install an outdoor air system. Air loop hvac outdoor air system.
Let us see, I have a bunch of stuff in here from a library connection.
Let us go back to default libraries and we will just remove this.  Click OK.
That way we do not have that cluttering up our list.
Let us go back to the air loop.
We need to add an air loop hvac outdoor air system.
Drop that it AHU1 Outdoor Air System.
We also need to add in a an air-to-air heat exchanger.
Air-to-air. Here we go. You can choose what type of heat exchanger.
I believe we have an energy recovery wheel on this system.
We will just drop this in between here. One energy recovery heat exchanger.
We also have a fan. An exhaust fan. Powered exhaust fan; variable speed.
Drop this in here.
Let us see. I am trying to remember if this fan had inlet guide vanes.
We will get into those details later.
Let us go to outdoor air. This was 17,500 cfm (29,730 m3/h).
Maximum flow rate was 150,000 (254,850 m3/h).
Ok,so minimum was 17,500 maximum was 150,000.
Economizer control type: fixed dry bulb.
That should be it for the outside air system.
Next we need to go to our heat exchanger.
I think I just left the performance criteria on the default values for this.
Except for the flow rate.
Those default values were pretty close to what the performance was on the heat exchanger.
Let us see, we had a rotary heat exchanger.
The frost control strategy was exhaust only.
And, lockout for economizer: yes. This basically locks out the heat wheel if the system is calling for economizer (free cooling).
Let us go to our powered exhaust.
Fan total efficiency was 80%. Pressure rise: 7"W.C. (1,740 Pa).
Maximum flow rate was 60,000 cfm (101,940 m3/h)...that does not seem right...
Our maximum flow rate was...oh...this was 60,000 cfm.
Yeah. My mistake. Maximum flow rate for the outdoor air system should be also be 60,000.
It is a hundred percent outdoor air system.
Fan power minimum flow rate input method: we will select fraction for this.
If we select fraction, we have to put in a minimum flow fraction on here.
Minimum flow for the system I believe is 33%.
If you select fixed flow rate instead, you would have to put in a minimum air flow rate value in this category.
Fan power coefficients: I believe these were left as a default.
They fit pretty well because this was a single fan.
If you have dual fans or parallel fans these fan power coefficients will change.
I will have to go into more detailed analysis of those in a different video.
Next, we need to install our heating coil.
Let us look for coil, heating, water. We will drop our heating water coil in here.
This is AHU1 Pre-Heat Hot Water Heating Coil.
Again, we have to go to the chain link button to connect it to our heating water loop.
I think I just left all this stuff as auto sized for now.
We can just leave all of this stuff as auto sized.
Rated inlet...make sure to change this...this was 180.
I believe that is what our hot water system was.
Rated outlet air temperature. This is just a preheat coil, so we will just set it for 55°F (12.8°C).
I do have a rated capacity. In the interest of time we will just skip over some of these. Just auto size most of the stuff.
If you do have these values, it is good to put them in there.
Next, we want to install a setpoint manager.
This is a mixed air or a preheat deck. A mixed air deck set point temperature.
We will go to setpoint manager scheduled.
We can just do scheduled deck temperature. It doesn't really matter. We are going to rename this anyway.
Scheduled mixed air deck temperature.
Now, go to schedules again. Edit this to call it mixed air deck temperature.
We will set this for 55°F (12.8°C). Go back to the air loop air handler.
Next, we need to install a fan. I do not know why this is always collapsing. It is always too small.
Fan, variable volume. We will just stick that here and call this AHU1 supply fan variable speed.
Again, you can you can edit all of these values.
Like I said, if you have parallel fans, your fan power coefficients might be slightly different.
Now, we need to install a hot deck heating water coil.
We will just leave all of these things as default values for now.
Rated outlet air; I think this was 105°F (40.6°C) for outlet air temperature.
We need to to do a set point manager. I believe this one had an outdoor air reset setpoint manager.
We will go down to setpoint manager: outdoor air reset.
Drag this in here. This was temperature. Outdoor low temperature.
The set point at the low temperature was 105°F(40.6°C). The maximum. The low temperature of outdoor air was 50°F(10°C).
So, when it gets down to 50°F it is supplying air at a maximum of 105 degrees fahrenheit.
If the outdoor air temperature gets up to...
Let us see...if the outdoor air temperature gets up to 65°F(18.3°C) it is going to be supplying a minimum of 70°F(21.1°C) air.
This one is very simple. If you do have a more complex system, where you are changing these values based on a schedule, you can add in that information there.
We do not have that.
Let us go to a coil: cooling coil, cooling water.
Again, drop this in here to the cold deck.
Click on the link. This time we are going to select the chilled water loop as the connection.
AHU1 chilled water coil. These can all be customized based on what you have for a chilled water coil performance.
We need to go to setpoint manager; outdoor air reset.
For this one, the set point for a low temperature resets up to 65°F(18.3°C) at a low oustide air temperature of 50°F(10°C).
The lowest cold deck temperature will be 55°F(12.8°C) supply air when the outdoor air temperature gets up to 65°F(18.3°C) or greater.
That is it for the supply side of the system.
Now, we need to go to our library and drop in a dual duct terminal box.
What are these called...yeah...vav dual duct...where were those...air terminal.
Here we go. Air terminal, dual duct, vav. We will drop this in here.
You can see that it automatically connects the cold deck duct and the hot deck duct to that dual duct terminal unit.
If you have a zone minimum airflow fraction of something other than 30% you can adjust those here.
This ensures a zone minimum ventilation air flow to the zone regardless of whether there is a demand for heating or cooling.
If you put this to zero, if there is no heating or cooling demand at the zone, it will shut that vav box down entirely.
Normally, you do not want to do that. You want to maintain some minimum level of ventilation airflow to the space.
The next task is to assign our zones.
It is plenum 2-3, 3-4, 4-5, 5-6,...oops...yeah that is not working is it.
We should be able to drag these plenum zones should automatically populate with terminal boxes.
But, we can go to our library and go to thermal zones and drag those in here. we can drag that in here.
Then, if we select the splitter, it should populate with terminal boxes. There it goes.
Now we have terminal boxes on there. 4-5, 5-6, 6-7, 7-8, 8-9 and a whole bunch of zones...
Okay. Now you can see that we have our all of our zones assigned.
If you want to zoom out with these you can use these magnifying glasses up here.
We will just click on the magnifying glass to zoom out.
You can see that our system has a whole lot of zones.
We can zoom in if you want to see better.
That is how you install a dual duct vav air handler.
And it looks like we forgot to link this to our heating water system.
You can tell because it doesn't have the connectors on the coil.
So, let us go up to the chain link and connect it to our heating water loop.
Again, if you can click these connectors it will take you to that loop.
You can see that the heating water loop all of a sudden has a lot of coils attached to it.
You can see that this is AHU1 coil, baseboard heater, and the heat vent unit.
You can click these to take you back to the air handling equipment.
If you look, we can go to the thermal zones tab.
You can see that now we have that equipment assigned to our thermal zones.
So, that is how you install HVAC systems with heating and cooling coils. 
Coils with heating water or chilled water systems.
Thank you. Please like and subscribe.

Create Air Loops

4. OpenStudio Chiller Comparison - Import Schedule

In this video, we will discuss how to import an 8,760 hour schedule for chilled water plant load and flow.  The imported load and flow profiles will be used by the LoadProfile:Plant object to simulate the chilled water load of our facility.  Next video, we will show how to input the chillers and customize their performance curves to match manufacturer provided data.

We are going to go through an example of comparing chiller performance between two different chillers.
We already have our model setup with weather files. We mostly have our chilled water and condenser loops put together.
We have the condenser water loop and chilled water loop. The only thing left to input into this model is the chillers and a load profile on the system.
We are going to be comparing chiller performance between two different chillers.
First, we will input a load profile. This load profile can be extracted from trend logs from the building automation control system or trending devices installed on the equipment. Or, it can be modeled.
We will be using a combination. I had about three quarters of the year trended on the plant. I had to fill in the rest of the year using some regression models to estimate the total load profile throughout the entire year.
First, we must input the load profile. Go to the library tab on the right. Scroll down to Load Profile - Plant.
Drop this load profile on the demand side of your chilled water loop.
Click it. You will see that it is called "Load Profile". It has several inputs; a load schedule name and flow rate fraction schedule name.
These can be input as an 8,"760 data point file. We are going to input those into the OpenStudio model using a "".csv"" file."
We have to find a specific measure on the building component library.
Go up to "Components & Measures"," ""Find Measure"". Go down to ""Whole Building"". Here it is; ""Add Interval Schedule From File""."
We will click can go to the Building Component Library to find out more about it.
Go to "Browse Measures"," ""Whole Building Schedules"". This one here."
It allows you to add interval schedules into your OpenStudio model using this measure. You can use these interval schedules for anything.
They could be lighting power loads measured throughout the entire year. It could be occupancy rates within a room. 
Anything that can be scheduled in OpenStudio can be input as a schedule. The schedules can go from hourly all the way down to 15-minute intervals.
So, if you have trend data taken from an occupancy sensor for example, that can be input into a full year-long schedule and it can be simulated in OpenStudio.
We will be simulating the load and flow fraction profiles for this chilled water plant.
Go ahead and download this measure. Go to back up to Components and Measures...let us see...I am sorry...let us go back...
We have to get our data into a ".csv" file or rather two ".csv" files.
Here is our data. You must make sure that the data is input in the proper units. The base unit of power for EnergyPlus / OpenStudio is watts. Flow fraction is going to be a fractional, decimal number.
Let us do the loads first. We will do a shift-ctrl-down arrow click to select all of the data. Ctrl-c to copy.
Drop this into our spreadsheet program. Paste. Scroll down. You can see that it starts at one and we can go all the way down to the bottom. You see it is 8,760 data points.
That represents 8,760 hours per year, so each one of these loads is in watts and it is every hour.
The last thing that we need to do is ensure that these values are the proper convention. EnergyPlus has a load convention of a negative value or cooling loads.
We need to make sure that all these numbers are a negative value to represent cooling.
We will just change these to a negative value. Push Save.
Save this as "Load.csv" file. Drop it into our project folder. Yes, okay. Okay.
We also need to do the same thing for the flow fraction. Select all of the data. Paste. Save as. We are going to call this one "Flow". Okay.
Now we have the load and flow fraction input into a csv file. We need to import those csv files into OpenStudio as a schedule to be used by the Load Profile Plant object.
Go up to Components & Measures, Apply Measure Now. I believe this was under Whole Building, Schedules. Right here, okay.
We will call the first schedule "Load ". We need to input the path to the csv file. Shift-right click. Copy As Path. Paste. There.
Finally, we select what units it is going to be. This is a load profile so it will be using watts.
Click the apply measure. Okay. It was successful. No warnings and no errors. Accept the changes.
We also have to do the same thing with the flow profile. Apply Measure Now. Let us save this.
Same thing...Whole Building," Schedules...we will call this schedule ""Flow""...the file path...then...okay", this is a unitless schedule because it is a flow fraction. Apply Measure.
Success. Zero warnings. Zero errors. Accept changes. Okay, now we have both of those 8,760 schedules input into the OpenStudio model.
We can go to our chilled water loop. The Load Profile, Plant object. On the right, we can edit it. Find the load schedule name. It should be in is called Load.
Then, the flow rate fraction name is looks like I already have some previous ones input in here...that is okay. We will leave that as Flow.
Finally, we need to input the peak flow rate for this chilled water system...for this load profile.
I can go back to the top...I believe the peak flow rate was 8,200 gpm (517 l/s).
So, that is how you input a load profile onto a water loop or an air loop. In particular, this is our chilled water loop.
Our next video will discuss how to input the chillers and how to customize the chiller performance based on manufacturer's data.
Thank you. Please like and subscribe.

Import Schedule

5. OpenStudio Chiller Comparison - Create Chillers

In this video, we will discuss how to input the basic chiller parameters, the reference conditions, and the characterization curves.  We will create two chiller library components for later use as library files. Finally, we will insert the chillers onto our chilled water loop for simulation.

Now we will customize our chillers. First, let us save our project.
It will be helpful to create a library file that contains our chiller/s. Go to file new.
We will go to the hvac systems tab. Push the plus button. Scroll down to "Empty Plant Loop". Add to model.
Go over to our library and scroll down to Chiller-Electric EIR. We will select a water-cooled chiller.
Drag it and drop it into the loop. Select it. We have to input the reference conditions for the chiller.
First, we want to call this chiller by its model number...So, let us go through them.
These are all reference values. These reference values correspond with the performance curves. The bi-quadratic and quadratic performance curves of the chiller.
It is important that the reference and curves correspond. If you change these reference values, you might not get the results that you expect unless you also change the performance curves.
Reference Capacity; that is the cooling capacity of the chiller. It most likely will also be your design capacity, but not necessarily.
As stated, all of these reference values must correspond with the performance curve. And, your design values should land in between the bounds of that curve.
Reference Capacity is the cooling capacity of the chiller.
Let us take a look at our chiller performance data. For the reference capacity we are going to use the design capacity of 1,184 tons (4,037 kW).
Reference Coefficient of Performance; will be 5.785.
Reference Leaving Chilled Water Temperature; will be 40°F (4.44°C).
Reference Entering Condenser Fluid Temperature; will be 80°F (26.7°C).
Reference Chilled Water Flow Rate; is 2,022 gpm (127.6 l/s).
Condenser Fluid Flow Rate; is 2,400 gpm (151.4 l/s).
You will also notice here that these three values are grayed out.
In OpenStudio we will have to go into the OpenStudio file directly rename these values. For now, let us skip past those.
Minimum Part Load Ratio; that will be the lowest output that the chiller can perform without shutting down. For our chiller is 1.517.
Maximum Part Load Ratio; will be 1. Sometimes you might get equipment manufacturers that have oversized chillers for the application. So, the chiller might have a larger maximum part load ratio.
Optimum Part Load Ratio; is the the point at which the chiller is running at reference conditions.
For our system, that will be 40°F (4.4C) chilled water temperature and 80°F (26.7°C) condenser fluid temperature and at the design condenser flow rate.
Design flow rate will be the highest coefficient of performance during those conditions.
For example, we have our design conditions here. We have our coefficient of performances here.
It looks like the highest coefficient of performance is 6.417.  That corresponds to a part load ratio of 0.5998. So, the optimum part load ratio is 0.5998.
Minimum Unloading Ratio; will be the minimum part load ratio that the chiller can operate down to
without implementing any false loading.
This is common for smaller chillers. I think most of the larger chillers nowadays do not do false loading or hot gas bypass. The chiller we are using does not.
We will make it the same value as the minimum part load ratio.
We do not have a condenser fan because this is a water-cooled chiller.
Fraction of Compressor Electric Consumption Rejected by the Condenser; we will put 100%.
If you have significant condenser heat losses going into the mechanical room, you might say that this is less than one.
Leaving Chilled Water Lower Temperature Limit; this will be the lowest water temperature that the chiller can produce. We will just leave that at default.
Chiller Flow Mode; we will leave this as default. You can change this value if you have a different configuration.
For example, if you have a primary-secondary chiller configuration. Or, if the chiller is able to modulate the chilled water flow (going through it). You might select some of these other options.
Sizing Factor; we are not doing any auto-sizing, so this does not matter. We have already hard sized all the values.
End Use Subcategory; is just an electric meter that can keep track of the power or the energy consumption of this chiller.
We can rename this. That way we can track the energy consumption of this chiller separately from the rest of the system.
So, those are the basic inputs for the Electric EIR Chiller object. Go ahead and save this file as a library file (OSM file).
We will call it the model number of the chiller. Click save.
Now, we need to do the same thing for the other chiller model. Select the model number. Save this file as a different OSM file. Click save.
Again, we go through the same process of inputing the the data for the the other chiller.
Okay. We will save the file.
Now we have created our two library files for the chillers. Next, we need to generate the bi-quadratic and quadratic performance curves for the chillers.
First, we need gather all of our performance information and compile it into a spreadsheet. 
It is helpful to gather the information from the equipment manufacturer and place it onto a table where you can sort the data as you need to.
To gather the information...we will clear the filters generate the bi-quadratic curves, you need two pieces of data for the independent variables and two more pieces of data for the dependent variables.
The first independent variable is the evaporator leaving temperature (chilled water supply temperature).
You need to tell the equipment manufacturer that your chilled water supply temperature should be within the range. Plus or minus a certain amount.
Our supply temperature is going to be 40°F ± 5°F (4.44°C ± 2.7°C).  So, we would give these chilled water values: 35°F to 45°F (1.7°C to 7.2°C) the equipment manufacturer. 
For the condenser entering fluid temperature it will be the same thing. This will be dependent on the performance of the chiller and cooling tower/s.
For our example, it will be within a range of 80°F (26.7°C) maximum and 41°F (5°C) minimum condenser water temperature.
It is very important to note that, for generating these curves, it has to be at a constant rated flow rate.
For our example, the condenser fluid flow rate should be 2,400 gpm (151.4 l/s) ± 10% and evaporator fluid flow rate should be 2,050 gpm (129.3 l/s) ± 10%.
This plus or minus 10 percent is important. EnergyPlus has a tolerance of ± 10% for how well the curves are fit.
It is better to have a lower tolerance than 10%. I have found that 5% actually works better. It will generate a more reliable performance curve.
But, 10% will work if you have limited data from the manufacturer.
You need to request the data from the manufacturer at a constant rated evaporator and condenser flow rate and with your range of chilled water and condenser water temperatures.
Requested performance data would include the chilled water capacity and the chiller input power.
Once you have all of this data and as it is compiled into a table, you can sort the table and compile all of the information onto a handy spreadsheet.
Then, you will be taking these these values and dropping them into a customized regression analysis calculator.
I will drop a link into the description below so that you can access that calculator.
We have it put into this folder "chiller characterization curves". We will open up that specialized calculator.
This can find this elsewhere on the internet. There are different versions of it.
I have found this one is handy because it has a visualization of the curve.  It is helpful if you are trying to troubleshoot things.
It does have instructions on the front. This this calculator is also good for generating performance curves heat pumps. And, split system air conditioners.
And, various other objects in EnergyPlus that require bi-quadratic,cubic, and quadratic curves.
The instructions go through an example of how to generate a performance curve for a heat pump, down here.
For our example we will be generating a bi-quadratic curve for a chiller.
Select "Other" from the drop down menu. Select "Temperature" from the drop down menu. "Bi-quadratic". We are working in the imperial system units, so we will select IP units.
Now, go back to the performance spreadsheet that we created with the manufacturer's performance data.
Um...let us go back...we are going to work on the existing chiller for now. We will select that information. Copy it. Paste it into the spreadsheet.
It is helpful to highlight the reference conditions for the chiller.
Like I said, the reference conditions are going to be these conditions up here.
We have 40°F (4.44°C) degree chilled water temperature, 80°F (26.7°C) entering condenser water temperature and a chilled water capacity of 14,400,000 Btu/hr (4,220 kW).
This one is...oh...i am sorry...that is for the new chiller, which is this one right here.
The existing chiller has 14,208,000 Btu/hr (4,164 kW). So, let us go back to the specialized calculator
and find those values.
40, 80, 14, we will highlight these values. It is handy to highlight these values because these are our reference conditions.
You want to make sure that these reference conditions...copy and paste these into the rated data. What they are calling "Rated Data" is the reference conditions.
It is important that this set of data also appears in the table down here.
I have modified this spreadsheet. It is kind of finicky. It does not like cloud-based file folders, so I had to modify it.
Right away, it will ask us where to drop the output files. We will drop it into our chiller characterization curves folder. Click ok.
It outputs the bi-quadratic curve varaibles for us. Let us go back to our OpenStudio model.
Let us open the existing Go to hvac. We will select our chiller.
You will notice over here that there are three curves. Two bi-quadratic curves and a quadratic curve.
If you scroll down you can you can edit these values down here.
You can see this Coefficient 1 Constant, right here, is an input. It corresponds with this Coefficient
1 Constant.
You can see that this curve is a capacity as a function of temperature. And this is cooling capacity as a function of temperature.
Unfortunately, OpenStudio will not let you edit these grayed-out values. So, we have to go into the OSM file and manually edit these.
That is okay, because it is a lot easier to input this data instead of going one by one in the OpenStudio application. We can just copy and paste it into the OSM file.
We will browse for this OSM file that we have in our folder. Open it with a text editor.
Search for the chiller model we can search for by the keyword "quadratic". Anyway, there it is.
The first bi-quadratic curve is a cooling capacity as a function of temperature. We want to rename this curve to correspond with the model number. Rename it.
For cooling capacity as a function of temperature, the custom calculator created this data. We can copy these values and drop them into the OpenStudio OSM file.
The second bi-quadratic curve is an energy input as a function of...oh input ratio as a function of temperature.
This is not a very good description. Paste the model name. We will rename this EIR as a function of temperature.
Now, select the values for EIR as a function of temperature. Copy them. Paste these into our OpenStudio model file.
The third curve that we need is the quadratic curve. We will have to generate those with the calculator.
We will just rename this again. Add the name the model number. This is EIR as a function of part load ratio.
You will notice this is this is a quadratic curve. Click save. Let us go back to our custom calculator.
We will save this as a copy and rename this as a function of part load ratio, existing. Save. Okay.
We can just delete this data now. For the quadratic curve, we will select "Other".
For the independent variables we will select "Flow". Change this to "Quadratic". "IP" Imperial units.
Go back to the performance data that we have. Select energy input ratio as a function of part load ratio this time.
We will select, copy, and paste the chiller capacity, chiller input power, and the part load ratio.
Like I said, these reference values should be the rated data here. These values should also be located within this list down here.
So, that is how you input those. Click the generate curves button. Again, browse for the default file path.
It outputs the data...let us see...this got messed up from the last time.  Need to fix these. Okay.
Once is the input. One thing that I forgot to mention...
While doing the curve generation calculators, there is an R-squared value that these calculators generate.
We will go back to look at the first one we created. You can see this R-squared value here for each one of these outputs (group of coefficients for the performance curve).
The R-squared value is a regression analysis statistic. It is an indicated of how close the data fits the the curve.
It is how close our raw data matches the mathematical curve that was created. You can see that this one fits the curve by about 92%, which is pretty good.
It is not a hundred percent, but it is pretty close. So, the only one we are going to be using on this calculator is this energy input ratio as a function of full flow.
We will copy these values here. Go back to our OpenStudio model file. Paste these into the quadratic curve values here. Okay.
We have defined all of our curves. The two bi-quadratic curves and the quadratic curve. We can click save in the text editor.
We can go back to the OpenStudio application. Go to file. Revert to saved...oh...I am sorry. There is one more step.
The end of objects have to end with a semicolon. We will go back to the OpenStudio model file and add a semicolon to these curve objects. Click save.
Let us reload it. Okay. Let us see. Okay. You can see that we now have...this chiller curves have been renamed here on the right.
All of these values are overwritten. We can check it. Let us go down to the quadratic curve we were working on.
Negative 0.3959...and...yep. Negative 0.3959. Check the next one. Coefficient 2x = 4.1756...0.1756. Okay.
So, that is how you input the curve objects for the chiller. We will go through and edit the curve objects for the other chiller as well...
Okay. We have gone through and edited the performance curves for that second chiller.
You can see it we have put those values in there. All these values have been edited. We have saved the file.
Now we will open up our project again. The next step is to add those chillers to our project library.
Go up to File, Load Library. Browse for those chillers that we created. This was the existing chiller. We will open it.
Again, go to File, Load Library. Browse for the other chiller. This is the new chiller. Select it. Open. Those have been added to our library files.
You can check that out. Go up to Preferences, Change Default Libraries. You can see that these two chillers have been added to our default libraries.
That means they are now in our libraries tab. Let us go to the hvac systems tab. Chilled water loop. Okay.
We can go to our library tab over here. Scroll down to Chillers - Electric EIR. We should see those chillers in the library now....
Okay. Right here. Chiller water cooled WME and chiller water cooled YKTH. The YKTH was our existing chiller.
The next step is to drag and drop this existing chiller into our chilled body loop. We need three of them to satisfy the capacity of the loop.
That is how you create custom chiller objects and input the the load profile.
We have our existing chillers ready to run. We can save the project.
And do not forget to drop those chillers into the condenser water loop. Go to the condenser water loop. 
Go to My Model tab. Select those three chillers and drop those into the condenser water loop.
Now we have all three of those chillers connected to both the chilled water loop and the condenser water loop.
We can save the file. Go to the run simulation tab. Click run. In our next video we will discuss the results and talk about some troubleshooting techniques.
Thank you! Please like and subscribe.

6. OpenStudio Chiller Comparison - Troubleshoot Curves

In this video we will discuss how to troubleshoot the biquadratic and quadratic characterization curves. We will discuss some common mistakes and briefly describe how the curves are used by EnergyPlus. Finally, we will run the simulation to quantify energy savings by replacing the older chillers with new.

Okay. It was successful. Let us go to our error file and see if there was any warnings generated.
Okay. This is what I suspected. It is saying that our capacity ratio as a function of temperature 
curve is not equal to one at the rated conditions.
It is also saying the energy input as a function of part load ratio (PLR) curve is also not equal to 1 at the rated conditions.
It is repeating the warning for the other two chillers. We have two curves that we need to take a look at a little bit closer.
Let us first go to the capacity as a function of temperature curve. Let us see.
Capacity as a function of temperature. These values are in SI units, so the temperatures are in celsius.
We can go back to our model. Go to the HVAC tab.
We will take a look at our chilled water loop. The chillers. These are all in IP units.
We can quickly switch back to metric units by going to Preferences, Units, Metric.
Now we can see what our design our reference conditions are. Our reference conditions for this chiller are approximately 4.5 celsius evaporator and 26.6 celsius condenser. ~4.5°C and ~27°C. 
You can see the output of our curve is 0.65 at our design conditions. You can see that in the the output file.
It is 0.653 for the output of that curve. At our design conditions this value should be 1.
This value, 1, gets multiplied by our reference capacity. Our reference capacity was 14,208 kBtu/hr (4.16kW) at design conditions. So, 14,208 kBtu/hr x 1 (design conditions) is 14,208 kBtu/hr.
So, this is a problem. Similarly, if we took a look at efficiency, the efficiency at design conditions should be 1 as well. It is pretty close 0.99.
You can see that by the output of our curves. This mathematical curve fits the data by 92%. That means it is a pretty good curve.
Unfortunately, this curve is only at about 16% fit. 16% fit for capacity.
Back to capacity, you can see that it is way off. It should be closer to 1. So, there might be some 
problems with this.
We can immediately recognize that the curve dips down to zero capacity for a low condenser temperature and a high chilled water temperature. That does not make sense.
If your condenser temperature is low and your chilled water temperature is high, you should have the most capacity from the chiller.
This curve really should slope down from somewhere close to 1 up in this corner all the way down to this corner here.
We are missing some data that creates this curve.
We can take a look at the numbers that we input. We have a lot of good data for 40°F (4.4°C) chilled water temperature.
We have mostly variable data for the condenser temperature.
You can see that the chilled water temperature is not variable. It is all 40°F (4.4°C). So, we are missing some information here.
If we look at the chiller is what we had stated for our boundary conditions...our design chilled water temperature is 40°F (4.4°C).
It is plus or minus 5°F (2.7°C). This range of chilled waters should go from 35°F (1.7°C) to 40°F (4.4°C) to 45°F (7.2°C). The data that we input only only goes to 40°F (4.4°C). It is very sparse in the high temperatures.
We do not have any temperatures that go down to 35°F (1.7°C).
That is some data that we need to ask the manufacturer about.
The other thing; you will notice our design conditions are 40°F (4.4°C) and 80°F (26.7°C).
We have a fixed capacity and a fixed energy input for that value.
But,we have a lot of other values at 40 and 80 here. These represent different part load ratios (PLRs) as the chiller goes from 100% down to minimum part load.
All of the values on this table should be at a 100% PLR for the reference conditions.
We need to get rid of some of these lower PLR values. The mathematical curve output is at 100% PLR.
That 100% PLR gets multiplied by the capacity to give you multiple steps all the way down to the minimum capacity.
This curve really should be somewhat flat depending on the chiller characteristics. It should not have that much slope to it.
As you reduce your PLR, it steps down this this flat surface, it gets lowered down further and further based on its PLR.
This curve should be generated at 100% PLR.
If we go back to our chiller performance...we have a whole bunch of extra PLRs stuck in here.
That is another thing we have to go back to our salesman/equipment manufacturer and get more information to fill in some of these values.
We need more data for low chilled water temperatures, in this regime, for a range of condenser temperatures. We are missing data on this side of the curve.
We also need more data for the higher chilled water temperature and range of condenser temperatures. We are missing data on this side of the curve.
The data that we have is only along the middle of this surface at the moment.
We will go back to our vendor and get more information......
Okay. We have consolidated the data. We have a range of temperatures for higher evaporator temperatures and low evaporator temperatures and various condenser temperatures. so one of the things that that we
One of the things we messed last time; we were  looking at plus or minus 10% of flow. That is true.
But, it should also be plus or minus 10% of PLR.
Like I said before, the PLR should be as close to one as possible.
I left this in here as as a demonstration. We still have a doubling up of values. 40 and 70 here...40 and 70 here.
40 and 60...40 and 60...40 and 60. We have a range of values that we can kind of get rid of. We can 
get rid of these because they are not close to 1 part load ratio (PLR).
We still have some doubling up. These values are are kind of close to each other. We could probably just get rid of one of them.
We would probably want to keep the one that is as close as possible to 1 PLR. We can get rid of this higher one here.
Same thing with 40 and 60...40 60 here...40 and 60 here...we can get rid of that higher value.
There. That should give us a pretty good curve fit. We can select this data here...and we will rerun the curve...
Oops...we want to make sure that our reference conditions fall in this the same value on on 
the table. Press to generate...
Okay. This is a better curve fit. It is now about 98% on EIR curve and 80% on capacity curve.
We can take a look at our bi-quadratic curve. That that looks more reasonable. It is more flat. It covers all four corners of this chart.
We can take a look at the efficiency (electric input to cooling output=EIR) curve. EIR is going to have more of a curve to it. The dip in the curve is based on the chillers optimum part load conditions.
Those curves look pretty good. We will go back into our OpenStudio library files and edit those.
The other curve...let us see...we had a capacity as a function of temperature and EIR as a function of part load.
So, we also need to go back to our EIR as a function of PLR. We will save this and open the Capacity as a function of PLR...this one.
Okay. With this one...I had this graph in here to visualize can see there is this outlier 
value here on the chart.
This obviously does not make any sense. We are not going to have a negative input power.
That was another error that caused our our output to be...the mathematical curve did not fit the data. R-squared was low.
If we looked at the quadratic curve...let us see...we want to look at...yeah...efficiency as a function of PLR. That was the error in the eplusout.err file.
Yes. EIR as a function of PLR comes out to 0.837 at design conditions. It is outputting right here.
This really should be one at design conditions. You can see it; at 1 PLR the output should be 1 EIR. It is actually right down here towards 0.84.
This negative value is causing that. We can get rid of this data. We can re-run the calculation.
Now you can see that our curve fit is almost 96%. If we look at the graph, you can see that at the design conditions, 1 PLR = 1 EIR.
This curve has a dip to it because the highest coefficient of performance (COP) is going to be somewhere less than 1 part load ration (PLR).
For this chiller, it comes out at something like 0.7 PLR. So, that is the quadratic curve.
We will have to go back and edit all of these in our library file and the project file. 
Okay. We have edited those curve objects again on our library file and our project file.
We are running the simulation again. Again, success. Let us go and check the error file (eplusout.err)...the run file.
Okay. Great. We were successful. We were able to get rid of those curve calculation problems. It looks 
like our curves are a pretty good fit now.
The next task is to do the same thing for the other chiller. We need to double check our curves and make modifications as needed. Then, we will run that chiller simulation as well.....
Okay. We have both of our models run and we can take a look at the results.
We can see that the existing chillers used approximately 18 million kBtu/yr (5,275,279kWh/yr) and the 
new chillers are only using 16 million kBtu/yr (4,689,137kWh/yr).
So, there is a fairly sizable energy savings there. We can go to the monthly overview of each one of these. Take a look.
We can compare the graph, but it is not very easy to see. We can expand the table and check out how many kilowatt hours we saved.
For the existing chillers: total for the year we are using this many kilowatt hours.
For the new chillers: we are using this many kilowatt hours. Yeah. We are saving about 419,000 kilowatt hours per year.
That is how you do a chiller comparison using OpenStudio and inputting chiller characterization curves and chiller inputs.
Thank you! Please like and subscribe.


7. OpenStudio - In-Depth: Creating Space Types

Today we will be talking about one of the most important features of OpenStudio.
The space types. This is the space types tab.
OpenStudio uses space types to apply all of the information that you need to a space.
Then, those spaces get converted to thermal zones and those thermal zones get passed to EnergyPlus for the simulation.
EnergyPlus does not have space types, so you have to create each space separately in EnergyPlus.
With OpenStudio, you can create what is called a space type.
The space type has all of the information of the room. It has how many people are in the room during the day.
It has electric lighting that gets turned on and off throughout the day, electrical plug loads, gas loads, and infiltration.
Space types also have the required ventilation rates for the room.
They also have all schedules that turn equipment on and off or show occupancy or activity levels.
You can apply all of this information to the space using a space type.
Then, it is converted to thermal zones in EnergyPlus.
OpenStudio has a parent child relationship with a lot of it's features, including space types.
Before OpenStudio passes information to EnergyPlus, it looks at the highest level: at thermal zones.
The thermal zones are comprised of spaces.
EnergyPlus will first look at this level; the thermal zone (spaces) level.
You can apply very specific information to an individual space at this level.
For example, if you have six classrooms and one of the classrooms has two extra people, you can apply it at this level.
Or, one of the classrooms has a lot more lighting, you can apply it at this level.
So, this is the first place OpenStudio looks.
All of this information under properties, loads, surfaces, shading, air flows...all of that information...that is where OpenStudio looks first.
If it cannot find that information, OpenStudio will then look at the facilities tab.
The facilities tab is a handy place where you can assign a generic default 
schedule set, construction set, or space type.
If the building is constructed of all the same materials, you can assign a default construction set here.
Same with schedule sets and space types.
These three will get passed to everything on the spaces tab.
If OpenStudio still cannot find that information, here...OpenStudio will finally look at the space types tab.
This is the lowest level you can go and the space types tab is the great thing about OpenStudio.
We will be creating a space type, a classroom. We will be using the building code of australia, national construction code 2019, as a reference.
We do not have a project that we are working on right now, so we will be constructing a code reference building.
We will be using that information later on to model a real building and compare it to the reference building.
Go to the plus symbol. We will create a new space type. For this example we will be doing a classroom.
The construction code has two separate types of classrooms.
There is general classrooms, which have an area per person. The ventilation code has it separated into two different types of classrooms.
Classrooms for persons up to 16 years of age and classrooms for persons over 16 years.
For now, we will do classroom for persons under 16 years of age.
The first thing that we can input is a default construction set. We are not going to put that in here.
We are going to use this whole model that we create as a template file. A library file.
Then, depending on where you build the structure in australia, this construction type will be different.
We are just going to create a generic space type for now.
Later, this can be applied to all constructions built no matter where the climate zone is.
Next is default schedule sets. We will get into this a little bit later.
Next is design specification outdoor air. We need to create an outdoor air ventilation...a required ventilation rate for the room.
Let us go to the library and click design specifications outdoor air.
We can drag in any one of these. We will rename it and and reassign the values anyway.
Drag this in here. We will call this based on the Australian ventilation code 2012 ... 1668.2.
The code requires that we have 12 liters per second (25cfm) per person.
The code also requires that we have a minimum area airflow of 0.35 liters per second per square meter (0.07 cfm/sqft).
The code says that we have to sum those two. 
It is going to calculate the area ventilation rate and it is going to calculate all the people in the room and multiply that by this per person flow rate. Then it will add these two together.
If you have a different application where you are calculating the maximum, you would select that here.
EnergyPlus will calculate this one and then calculate this one and it will choose the highest of the two.
That is how you create a design specification outdoor air. The ventilation rate.
The next is space infiltration design flow rates or space infiltration effective leakage areas.
These are a little bit different.
We will create an infiltration design flow rate.
Go to the library tab. Space Infiltration Design Flow Rates. Drag in one of these. We will just rename it anyway.
Select it. Rename it. We will specify air changes per hour. That is how the Australian code has it written.
We will specify the air changes per hour right here as 1.
The Australian code reference building has air changes that vary throughout the day based on...if the air handler equipment is on or off.
We will apply a schedule to this that modulates the air changes per hour.
It will be multiplied is a fraction that is multiplied by the "1" we input.
Go to the schedules tab. Schedules. Plus. Fractional.
The fractional is a value from zero to one. Click apply...
First...we can rename this based on the appropriate code reference.
For an Australian reference building, school building, it has a schedule that starts the HVAC equipment at seven.
Hover over this seven right here...we can zoom in 15 minute increment.
Hover over the seven and double click it to make a split.
The building is shut down at night time. The ventilation rate when the equipment is shut down is 0.7 air changes per hour.
While the building is operational...what was the building operating...
Let us 343.
While the HVAC equipment is operating it is 0.35 air changes per hour.
Type 0.35 and enter. That will modulate the infiltration flow rate throughout the day.
This fraction is going to multiply by our 1 air changes per hour and then this fraction is going to buy multiplied by our 1 air changes per hour.
Let us go back to the spaces tab. Go to loads.
You can see that there is this infiltration applied to our space type.
Now, go to My Model. Rule Set Schedules. You can see this is the schedule that we just created for infiltration.
Drag that into our schedules. Now it is multiplying this schedule by our design flow rate which is one air changes per hour.
That is how you add infiltration to your space type.
The next task will be to install loads into our space type. You will drop your loads here.
They could be electrical loads, lighting loads, and people (occupant) heat loads, as well as an internal thermal mass load.
To do that, we need to go to the loads tab. The first load definition that we will create is electrical plug load.
Go down to the bottom and click the add new object "plus" button.
We will need to go to the construction code for a reference building...
Here. Table 2l says that a reference building 9b school has 5 watts per square meter internal heat gain from a appliances and equipment.
We will just call this 5 watts per square meter for an electrical plug load.
We will rename this to our 9b school and reference the applicable construction code table.
It was five watts per square meter plug load.
The radiant fraction we will just say is 50 percent. There is no latent fraction; it is going to be all dry heat.
You can also specify a fraction of the load that is lost, for whatever reason. 
For example if you have equipment mounted on a wall and that equipment is losing some of the heat elsewhere. Outside of that space.
You can specify that here.
So, that is what we will call an electrical plug load.
Next, we will create a lighting load.
Go to the lights definition again. Click the "plus" sign right here...
We need to go to the construction code again. Page 379.
This shows maximum illumination power densities for various space types on this table j6.2a.
We need to find our school, general purpose here. It has a maximum of 4.5 watts per square meter.
Input that here: 4.5 watts per square meter....
For a typical light fixture...the luminous efficiency is going to be 25 percent. For a typical T-8 led light bulb.
We will say the rest of the load will be a radiant load.
We will not have any return air fraction on this one.
This will be dependent on the type of fixtures. Since we are doing a reference building it just says 4.5 watts per square meter.
However, if you do have fixtures that are inset into the ceiling or in inset into a return air plenum you would have a percentage of that load going to the return airstream right here.
We will rename this based on the construction code table that we just referenced.
Finally, we need to create a people definition for a general classroom.
Again, this is on the construction code.
Let us go to people definition. We will click "plus". This is our code reference.
It is going to be table D1.13 on the construction code. This table here.
For a school, general classroom, the area per person is two square meters (22sqft).
Input Floor Area per Person; 2 square meters per person
If your construction code requires tracking are supposed to track a predicted mean vote thermal comfort for the occupants.
You can select the ASHRAE 55 comfort warnings on here.
We will just do Zone Averaged. You can add an extensible group here.
It is the algorithm for whichever type of calculation you are doing for the predicted mean vote.
We will use the Adaptive ASHRAE 55 for this example.
So, that is how you add people definitions that you can add to a space type later.
Finally, we need to create an internal mass definition.
We will go down to internal mass and then we will click "plus".
This represents all of the furnishings inside the room.
It is a thermal mass (thermal flywheel, thermal storage and release).
The the internal furnishings absorb heat throughout the day or night and then re-radiate that heat at some later time.
The radiation may be protracted out over some later time.
We will just call this "classroom furnishings".
We will specify a surface area per space floor area of 4.
This will be dependent on how thick of a material you are creating.
You can drag in a construction from your library and and drop it in here.
If you have wooden furnishings, you might use a wood construction. If you have metal furnishings, you might use metal.
For our example we are going to create one.
Let us go to the constructions tab. Go to constructions. Oh! It looks like i have already created one...anyway...
You would just click a "plus" down at the bottom. We will name this classroom furnishings.
I used 25 millimeter (~1-inch) wood from the library. Go to the library tab.
Go to materials. Drag in a typical material from your library. I used 25 millimeter wood material.
Like I has specified previously, the internal mass is going to be based on how thick that material is and what the specific heat capacity is for storing heat.
Let us go back to the loads tab and internal mass definitions.
I already put that into My Model. Go to My Model tab. Go to Constructions. Just drag that classroom furnishings material into the construction. There.
That is how you create an internal mass definition.
Now that we have all of our loads specified, we can go back to our Space Types tab. Let us go to Loads.
First, we want to drag in the electrical plug loads definition. Go to My Model. Go to Electrical Equipment Definitions.
Here is the classroom electrical plug load definition that we created. Drag that and drop that into the definition here.
We probably want to rename this to something more applicable to this particular classroom.
Next, we will drop in the lighting load definition. Go to My Model. Lights.
Here is the lighting. The T-8 led lighting that we created. Drop that into the definition here.
We will rename this to classroom, less than 16 years age, light. This is based on that construction code that we referenced.
Lastly, go to My Model. People Definitions. We will drag in a people density definition.
We said it was like 2 square meters per person. Rename that to "people".
Now, go back to My Model tab. We need to drag in our classroom furnishings internal thermal mass definition.
Rename this to "classroom furnishings".
Okay. Now we have all of our loads added to this space type.
The next step is to create schedules for each of these loads.
A schedule that turns the electrical equipment on and off inside the classroom.
A schedule that turns the lights on and off. An occupancy schedule for when the people enter and exit the classroom.
Go ahead and do that. Go to our Schedules tab to create the schedules. Go to the Schedules tab at the top.
There is our Infiltration schedule that we created previously.
Let us first create an occupancy schedule.
For the Australian construction code the schedules for a reference building are specified using this table 2j for a class 9b school.
You can see we are going to be looking at occupancy here. Monday through Friday.
We need to create a fractional schedule. Fractional. Zero to one. Zero means zero occupants and one means fully occupied. Click apply.
Rename this based on the national construction code table 2j occupancy schedule for a class 9b school.
The table says: starting at seven in the morning it is at five percent.
Let us zoom in on the table. 15 minute increments. We will drag this over to seven in the morning. Double click to create a divider.
It starts out at zero occupancy so type zero and enter.
From seven in the morning to eight in the morning it is five percent. Let us put another divider here. Type 0.05 and enter. That is five percent.
Then, from eight in the morning to nine in the morning it is at 75 percent. Type 0.75 enter.
From nine in the morning all the way to noon it is ninety percent. From noon to 2 it is 50%. From two to three it is 90%. From three to four it is 70%.
Then, from four to five is 50%. From five to eight it is 20%. From eight to nine it is 10%. Then it is finally 5% to midnight.
Let us zoom out to hourly so we can see our total occupancy profile for the school.
Next we need to create a lighting schedule...let us go back up here...oops
Yeah, lighting schedule. Artificial lighting schedule.
Click "plus" to create a new schedule. Again, it is going to be a fractional schedule zero to one.
We will rename this to our lighting schedule based on the construction code reference building table 2j.
Start the lighting schedule: from midnight all the way to seven is 5%. Zoom in. Seven is 5%.
Then seven to eights 30%. Eight to nine is 85%. Nine to noon is 95%. Noon to two is 80%. Two to three is 95%. Three to four it is 90%. Four two five is 70%.
Five to eight is 20%. Eight to nine is 10%. Nine to midnight is 5%.
So, there is our lighting schedule.
Finally, we need to create an electrical equipment schedule. We are just doing electrical equipment.
Create another fractional schedule. Rename it to our equipment schedule based on this table 2j....
We will look at "appliances and equipment". Noon to seven is 5%. Zoom in here...
Seven to eight is 30%...Okay. There there is our scheduled profile for equipment inside the a typical school.
Ok, there it is.
The last thing that we need to create is an occupant heat gain schedule.
This is multiplied by the number of occupants in the space, throughout the day.
It is based on the the type of activity that those occupants in the space are doing...
This is taken from the construction code table 2n. You can take a look at that.
It is on this page here...2n...the construction code for reference building has internal heat gains for occupants and hot meals.
We will just be doing occupants, "other applications". They have a default 75 watt of sensible heat gain and 55 watt of latent heat gain.
This is their default value. Then, you can also adjust it based on other metabolic rates.
They have a reference here for table 45 on the design application manual 09...
That is located, let us see...on this table here.
If you have different occupancy types, the the occupants will have different metabolic rates.
In a theater, everybody is seated. They are not producing very much heat.
However, if you are talking about a bowling alley or athletics or any sort of heavy factory manufacturing work, they will have higher metabolic rates.
For this example, for a school, this is a pretty good estimate for sensible and latent heat gain.
We will use 75 for sensible and 55 for latent.
Now, create a new schedule. We will select activity level. It is calculated as a watts per person. Click apply.
We will reference the construction code table 2n.
The total comes out to 130 watts per person. There is no schedule on that. The code just says that the schedule is dependent on on the occupancy in the building.
The occupancy schedule that we created over here. That activity level gets multiplied by the number of people in the room throughout the day.
That is how you create an occupancy heat gain schedule.
Finally, we can go back to our Space Types tab. Go to the loads tab. We can assign these schedules.
For the electric equipment schedule; go to My Model...let us see...Ruleset Schedules.
The equipment schedule; we will drag this in here and assign it to this electrical equipment load definition.
Same thing for the lighting. We will add the lighting schedule to that. Same thing for the occupancy schedule.
Then, that activity level schedule, 130 watts per person, we will drag in and add to the occupancy heat gain right here.
So, that fills in all of our information for our space types.
Finally, we will go back to the general tab and discuss a time saving technique.
There is a default schedule set option right here. We have not filled that in.
This can be used instead of dragging and dropping all of those schedules on our load tab...
all of these schedules that we dropped in. All of these schedules right here can be combined into a schedule set.
That default schedule set can be dropped in here. It will automatically populate all of these schedules here.
Let us go back out and delete these for now. I will show you how to do a schedule set.
Let us go to the schedules tab. You can see that we have a schedule sets tab at the top here.
We will create a typical classroom schedule set. Let us go ahead and do the plus button.
We will rename this to the applicable code reference school schedule set. Okay.
Then, we will drop in the number of people...let us go to My Model...and the occupancy schedule for classrooms is going to be this one here.
That is the number of people. The activity level; that is the the occupant heat gain.
The activity level of the occupants dictates how much heat each occupant puts into the space.
Then we will get a lighting schedule for that classroom. Typical lighting schedule.
We will get the internal electrical equipment schedule for that room.
We can drop our infiltration schedule into here.
If you have any of these other equipment scheduels, you can drop those in there.
One thing that we might add to this is an HVAC operation schedule. This is also based on the construction code...reference building.
They have a typical heating, air conditioning, and ventilation schedule for a typical 9b school building. A reference building.
This tells when the the HVAC equipment is allowed to turn on and off for the reference building.
We are going to have to create this schedule here to comply with the reference building, for this code. Let us go ahead and do that.
We will go back to the Schedules tab...Click plus.
We will create a fractional schedule. Apply. We will call this our HVAC operation schedule based on that construction code reference building table.
The reference building table says that the HVAC turns on at seven in the morning. We will input 0 up until seven.
It turns on (input=1) at seven in the morning. Then it turns off at 6:00pm
in the evening.
So, that is when the HVAC system is allowed to operate.
We will go back to our schedule set. We can drop that HVAC operation schedule in there as well.
Now, let is go back to our Space Types tab. You will note that we do not have any schedules assigned to these loads.
The infiltration, the lighting, plug loads, people loads, activity schedules.
We go to the general tab and we drop our schedule set in here.
It will automatically assign all of those schedules to those those definitions for that space type. So, that is the the good thing about schedule sets.
That is how you create a space type in OpenStudio.
Now, what can you do with this space type?
You can assign this space type to all classrooms in your project and all of those classrooms will be populated with all these loads.
That is how you create space types.
I will go ahead. I will go through and create all of the space types for a typical school. Create all of those schedules and equipment loads.
I will show you how to upload this to the Building Component Library so that other people can use that as reference for their projects.....
I have got all these space types input here for an entire school.
Storage rooms, workshops, multi-purpose rooms, libraries, kitchens, classrooms, conference rooms.
That concludes our lesson on how to create space types.
We will follow up this video with another video on how to upload those space types to the Building Component Library.
And, how to download those from the Building Component Library so you can share with your colleagues in other locations or in the office.
Thank you! Please like and subscribe!

Create Chillers
Troubleshoot Curves
Creating Space Types

8. OpenStudio: Uploads to BCL


Today we are going to discuss the Building Component Library (BCL) and how to upload components to the BCL.
What is it? We have already discussed this in previous videos...
The National Renewable Energy Laboratory (NREL) created the Building Component Library a number of years ago.
It allows researchers and engineers to share various aspects of their energy modeling with each other on a public forum.
It is not unlike other public repositories for instance: components for sketchup or for revit or any other number of modeling or design programs.
You can go up to the resources and browse the BCL based on the type of information that you are looking for.
The library contains measures; these are all snippets of program that can transform your energy model.
It can automatically change things such as electric lighting controls.
Or it might go through and model your building and then it would change the windows to a different type of window to see what the energy difference is.
There are many different kinds of programs.
Also, there is components, which are simply constructions. Mostly constructions. Components could also be different types of equipment.
You can search for different types of windows or doors to plug into your energy model. You can find those here.
Today, we are going to show how to upload that information to share it on the Building Component Library (BCL).
Then, everybody else in the public can also access that information.
It creates a collaborative effort with everybody in the energy modeling community sharing this information. It makes energy modeling easier for everyone.
Let us go back to the home page and go down to this bottom right. It says contribute (to add content to the BCL).
There are four steps in this process. We are going to discuss each step. Step by step.
Let us go to step one. It says organize your data...
One thing to the past, NREL was hosting the BCL on its website.
There was no tracking on the different versions of data that were being input to the library.
They ended up switching over to Github as a version tracker. It tracks the different versions of programs and components that are being uploaded to the library.
You have to get a Github account. Go to and sign up for an account. It is free.
I have already got an account, so I will just sign in.
It takes you to the home page here when you are already have an account.
I believe when you first set up your account it is going to take you to a profile page. Like this...
That is the first step; create a Github account.
The next step is to create a repository. A repository is like a a big folder where you keep all of your measures or components or programs.
Github is a lot larger than than just the building component library. Github is used for tracking all sorts of different programming code throughout the world.
It is also a collaborative website where programmers can get together and merge their programs with each other to create a much larger program.
Github tracks all kinds of different things such as conflicts between two different programmers or conflicts of programming code with the main code and and that sort of thing.
For our purposes, we just need to create a repository. The appropriate structure for the repository is going to be this right here.
Let us go back to our Github page. Go to the top here, where it says "Repositories" and click it.
We need to create a new repository. I already have one set up, so I am just going to copy the name of this.
We will click "new" to create a new repository. You will only have to create a repository twice.
You will create a repository for measures and you will create a repository for components.
After you are done creating those two repositories, everything is greatly simplified. We will get into that a little bit later...
We will name this as a dash 2. You want to give it a description...Helix Energy Partners BCL components...
We will create a components repository for now and then we will have to create a a measures repository later. Those are the two repositories that you will have to create.
After you are done you do not have to create any more.
We will make this public. You want to add a readme file. This file is so anyone can see the description of this repository.
You can just type in a simple read me about that.
Add git ignore. This is for programmers. This is so that Github can ignore certain file types.
So Github does not have to track everything that is in the program folders.
There are certain file types associated with programming code that are not not necessary for tracking. They might be library files or something that the programming language uses.
All of the OpenStudio measures are programmed using ruby, so we are going to select ruby here.
Then, choose a license. We will select a simple BSD 2 simplified license. Public license. Click "Create Repository".
Now we have our repository created. You can see there is a "readme" here. You can just edit it.
This is where we keep our components that have been uploaded to the BCL.
That is how you edit the readme file.
You can add any additional notes for committing these changes but we will just click "Commit changes".
Let us go back to our main repository folder. From here, we need to add a file.
Specifically, we need to create an xml file and the specified file structure. Go up here to add file, create new file.
To add I said, we wanted to create this structure here...
To add folders, we will type in "lib". This will be the first folder. Then, you type in a slash to create that folder.
Then "components". Then slash. Then, we are going to call this Australian underscore 9b underscore spaces.
This folder name, according to this, needs to be unique across the whole repository.
So, for each of your components that you are uploading, this folder name and all folders below it should be unique across the whole repository.
So, we have created that folder. Now we need to create a component.xml file.
Going back to the BCL steps to create this...
The the xml file is a directory for each of the the measures and components located in the library.
Let us open this, I am just going to go back to here real quick...
Go to components. We will just select windows...
The xml file has this information in it. The name, the type, the description. It also has a tag on there.
For example windows; that allows the Building Component Library to filter and search for components and measures.
The Building Component Library reads the meta data in the xml file so that it can return relative search results for anyone that is looking for very specific information.
...we have created this component.xml. If you go back to the instructions steps, they allow you to download an example component right here.
Otherwise, you can just browse the BCL and download any one of these components as an example.
We will just download this example component here.
We will open it can edit this with any sort of text editor.
We will just copy all of this information in this example xml file and we will go back to our Github component xml file and then just paste it in here.
Then, you want to add the name of this component. We did Australia_9b_Spaces so that is the name of our component.
You want to make sure that every one of these that this snippets of data is nested within a beginning tag and an end tag.
You also have to create a unique identification code for the uid and the version id.
You can just search the web for uuid generator and any one of these...You can just copy the uuid and paste it in here.
We also need to create one for the version, so we will just refresh the page. Copy that uuid and paste this in here for the version.
The display name is going to be this right here, when you are searching the BCL.
For our display name we are going to name it this right here: Australian NCC 2019 Class 9b School-Space types.
The description is going to be this right here. When you are searching the Building Component Library.
We are going to call this...and you want to make sure it is in between those tags...Australian National Construction Code Standard Reference Space Types for K-12 Schools.
...we will just add in "2019" for the year of the code...
Then, a modeler description; any additional information to the energy modeler.
We do not have any very specific information, so we can just put in that same information there.
Tags: this is going to be a whole building. The space types we are going to upload are applicable to a whole building.
When you're searching the BCL, the tags are located over here.
It says "Component Tag". You can search any one of these.
For instance, if you are going to upload a weather file or a type of exterior wall construction.
That is the tag you want to use.
Our example is using "whole building" so we will just leave this whole building tag as it is.
Attributes:...this one is going to be a k-12 school. Some of these attributes are...
Actually all of these attributes are for the legacy version of OpenStudio. They are used for sorting.
I think, nowadays, it is mostly just tags that are used.
But, if you want, you can add some some of these attributes in. They can be useful later if you are going to be doing some programming.
We will just add a few of these in here. Make sure that you insert it in between these. We are just going to copy this here and paste. 
The first attribute we are going to do is country. To see a list of attributes...Let us see...
You can go to the attributes page and do a filter to search by attributes. We will do country.
You can see that the attribute name is country. We put in country here.
Legacy API query string; this is used for programming. The data type is a string.
So, our string is going to be "Australia".
We will add in another attribute: climate zone.
Again search for attributes, just to tag this. It is supposed to make your measures and components a little bit easier to search for on the BCL.
We will use "Climate Zone". It will be used for "All" climate zones in Australia. That is good enough.
Our building type is going to be K-12...oh sorry...we already have climate zone down here...okay. All right.
Finally, files.
The file extension that we are uploading is going to be OpenStudio (.osm). The version identifier of the program is going to be...
Let us open up this our .osm file with a text editor. You can see at the very top; version identifier of the program is going to be this 3.2.1. So, "3.2.1".
The file name is going to be the name of our .osm file. Paste this in space types.osm.
The file type is a .osm file. That concludes our .xml file for this component.
We will just commit the new file. If you want to add additional description in here you can do that. Okay, we have created the .xml file.
The next step is to create a nested folder in here under your component folder called files. 
These are all files attachments that the component.xml references.
Go to "add file" to create a new file. We will create "files"...I believe...
Yeah, so this is the example component we have. The component.xml and then inside that component folder there is another folder called "files".
That is where we are going to place our .osm file. Put a slash to create that folder.
Then, we are going to create our .osm file. We will copy the file name and then type ".osm" to create the .osm file.
Next, go back to the text editor where we opened up the .osm file. Select all. Copy. Paste.
Then just click the "Commit new file" button.
If you want, if you are an advanced programmer, you can create additional branches off of this for doing some program editing and then later on you can merge those branches to this main branch.
We will just create the main branch. Commit new file. That is basically step one for creating your Github repository.
The next step is step two; register your repo with the BCL.
We will expand this. This step is accomplished via the BCL manifest.
It shows a link right here. Open up this link. This takes you to the building component library "BCL manifest" repository.
Number one says to fork this repository. You would go up here to I click it I already have it forked right can see it is already forked.
Just to give you a quick demonstration on what forking is...we will just fork any...we can fork this one.
For example I do not have this one forked yet. Just click "fork" here. It says it is forking that repository.
You can see that it is forked from the building components library and it has created your own repository under your account.
It brought in all of the the information from that that forked repository. That is how you fork a repository.
Let us just delete this...okay.
Go back to our forked repository. The next step is to, in the forked repo, add a section of in the .json file with basic information about your repository. Name, organization type, and url.
Once you have the repository forked it, should bring in this .json file.
Click on it. We need to edit it. Scroll all the way down to the bottom.
You can see that I already have my repository in there, the original one I created.
We will have to add the new one that we just created.
To add your components repository to that manifest, you need to copy the one above.
Make sure you cut/copy from the bottom. In between these two brackets. Up to this comma.
Click in between the brackets and paste. The name of our repository that we just created was this right here. That is the name of the repository.
The organization is your Github account name. We are creating a component repository.
If you are creating a measure repository you would just type in measure there.
The url for that repository is going to be this, right here.
You can commit the changes and add any specific information about what you are changing. We are just updating it, adding our component repository to the BCL manifest.
Click "Commit changes". That changes the BCL manifest on our repository.
In order to change the BCL manifest on the NREL repository, you have to create a "pull request".
Go up to pull requests. Click the "New pull request" button.
It is saying that there are conflicts. The manifest .json file at NREL is different from the one at our repository.
If you scroll down, you can see the changes that we made to that. We added our repository to the manifest.
Click "Create pull request". Title: "an example of how to create a pull request". 
Requestiing to add our repository to the main BCL manifest.
Click "Create pull request".
You will notice that there is a review required. The folks over at BCL will review those changes and then either approve or deny those changes.
So, now we have created a pull request against the original BCL manifest.
The BCL folks will review your your change to the .json file. If acceptable they will merge your request to the main branch.
That is step two.
Let us go to step three. Configure your repo to automatically add new releases to the BCL.
Once your repo has been approved and registered with the BCL manifest, you need to set up web hooks so that the BCL can be automatically notified if you add new content to your repo. 
New components or measures, update those existing components or measures.
If you do some editing on your programs, all of those updates can be automatically added to the Building Component Library.
The instructions say to select web hooks from the left navigation menu on your repo's setting page...
Let us go back to our repository. I have just deleted our example that we did.
I am going to use my original repository as an example from now on.
Go to the repository that we created. This is our components repository. Go up to settings here.
Click "Webhooks". Click the "Add webhook" button. The guide says enter the payload url.
...this BCL2 will need to be updated when the BCL the BCL is finally moved to its final url. We need to use this one right here.
Click there and paste it in. The content type will be application.json...enable ssl...we need to select individual events.
Let us get rid of "pushes". We will select "releases". Make sure that is set as "active".
Click the "Add webhook" button at the bottom. Okay. We have added our webhook.
The final step...step four; create a release of your repository.
Let us go back here. Click our repository. It will take us back to the code page. Over on the right, you will see a "Create new release" link, here. Click that.
We need to choose a title, tag version, name, and description.
We will do version one. Create a new tag, click that. We will call this "Initial Release". Initial release of the HEPLLC components repository.
If you are doing testing or something, you can do a pre-release but this says that you do not want to check this pre-release box.
If you do check it, then the release will not be added to the BCL. So, we will leave this unchecked.
Click "Publish release" button at the bottom. There you go. We created a release of our repository.
Then, it says the BCL will index your new content. To see the status of your repo, including indexing errors, you can visit the BCL dashboard and click on your repo page.
We can open up this here. We can search for our repository. Here. Right here.
Okay. This is our repository. Content type is "component". We have one release. The latest release version is this.
You can find the link to our repository here. It says our repository is says that the release was successful...
However, it says no content was added in this release. It looks like we have an error on our .xml file. "mismatched tagline 30"
Let us go back to our repository. Let us look at the .xml file.
Line 30, right here. Sometimes it is easier to edit these files in a in a programming editor. Or even something like notepad++.
We will copy the contents of this file and paste into notepad++. Save the file as an .xml file. That way notepad knows what type of file it is. Okay.
Notepad++ is handy because it it can highlight the beginning and ending of snippets of program. You can see that this is the main header; attributes.
This is the first attribute, second attribute, third attribute. It looks like we have some extra data in here. It needs to be deleted.
Let us go back to Github. We will just quickly edit this file.
We see that there is two here. We only need the beginning and ending of that.
We will commit the changes. That edits the file. Now we have to do another release of this repository.
Go to releases. Draft a new release...we want version two; create a new version. Edit AU spaces xml. Fix AU spaces xml. Publish the release here.
Then, we can go back to the Building Component Library repo details.
Let us just refresh this. You can see version 2 was released. It was successful and it was added with one components to the BCL.
So, let us browse the BCL. We will see if it was added in there.
We added a component. The component was a whole well... let us see...we can browse by repo. Here it is.
We have one component added to the BCL. Click it. You can see: there is our component.
Anyone in the world can search for this component on the BCL and they can download it with the download button. They can use it for their energy modeling.
Now that we have our repository set up and it is hooked into the BCL, it is really easy to add additional components to the repository.
And do new releases that get uploaded to the BCL.
Let us go back to our components repository. Go to code. Click add file. Create new file.
You want to place the file in the same location as the other components so...lib/components.
Then, we will create the new folder. For example we are going to create a new window. "new window" folder.
Then, component.xml. Then you would add in all of the metadata just like we did before. Commit new file.
If you want you know the structure for that .xml you can just download this as a sample .xml component.
Then, we need to add our file. Create new file again. Create the files folder. Then "new window.osm".
If you create a new window...for example...we will just create a new OpenStudio file.
Go to constructions, materials. Add glazing window materials...add clear three millimeter.
Construction, let us call it "new window". Let us drag in this clear three millimeter. Save this as our new window file.
Then let us go to the desktop and open the .osm file. Paste it in here. That is our new window file. Commit new file.
Now we have in our components folder Australian spaces and we have created this new window.
It contains the .xml and the supporting files for that .xml is the .osm file.
Finally, you do a new release. Go to releases. Draft a new release. Same thing. Version zero zero...3. Create a new tag. "Add new window"..."added a new window".
Then, you would just publish the release.
So, that is how you set up your repo. Afterwards, it is really easy to just add additional components and measures to the BCL.
Thank you! Please like and subscribe!

Uploads to BCL
Modify Fan Curve

9. OpenStudio - Fan Curves, Modify for Parallel Fans


Today we are going to talk about fans in EnergyPlus. EnergyPlus allows you only two options for fans in an air Loop.
It gives you an option for a supply fan and an exhaust fan, which work quite well for most applications.
The fan curves that they use are pretty good general-purpose curves for a fan; 
But what if we are doing something like multiple fans, multiple plug fans in parallel, for instance?
In order to do that, you have to create a custom fan curve that is specific to that array. To do that, you need to have some data first.
The performance of the fan and then some fan curves of the fan or fans running at various different percentages of airflow.
Then you can construct a new fan curve using a "Line Fit Algorithm" in Excel. 
EnergyPlus uses a curve, and it is based on Unity which is: "1".
It multiplies the fan power by this curve (function) as a function of part load.
If the fan is flowing at a lower percentage than 100 percent, it will multiply that fan power based on this curve. That is how 
EnergyPlus calculates the fan energy use for that time step. 
You can see that the blue lines are the EnergyPlus curve;
The orange lines are the new curve that we will create based on having three plug fans running in parallel and being staged on and off.
This is a triple-fan model, and from 100% full load all the way down to 66% part load, that has all three fans running.
Then we have a double fan, two fans running down to 33%, and then a single fan down to the minimum flow, which in this case is 10,000 CFM (4.72 m3/s).
What you can do is assemble your performance curves for the fans and start at 17% flow (or this is a part load ratio;) 70% flow or 70% part load ratio.
You can assemble the airflows and horsepower or wattage and the pressure drop.
It does not matter; you can have these values be in cubic meters per second and watts and Pascal's.
This EnergyPlus line fit is based on zero to Unity, so it is a multiplier of the fan power.
These are the values that we come up with starting at 17%, and the horsepower for that comes out to 0.83 at 10,000 CFM. Then you go a step up to the next one.
This shows one fan operating at 33%, and this is at 2,000 CFM.
The horsepower is seven, and the pressure drop at this system flow is 1.1, so you continue down the list and fill in these values for your fans.
The next step up (this is a part load ratio of 67%) is where you start stepping it up to two fans operating in parallel...
And finally, at the maximum flow. Then what we can do is we can go to OpenStudio and select the fan.
The first input value that we need to input is the: "Fan Total Efficiency." 
We are starting out with a fan total efficiency of 70% (this is the default EnergyPlus fan efficiency value).
We need to calculate the new efficiency value, and this is at the design flow rate, so our design flow rate is at 60,000 cubic feet per minute (28.32 m3/s). 
You can just calculate fan efficiency with a simple efficiency equation.
We come up with a fan efficiency of 73.3% at full flow, so we are going to save this as a different version so we can compare the models later.
We will edit the fan total efficiency to this value here: "0.733," so that is the new fan total efficiency.
Our pressure rise is going to remain the same, and we have 10 inches of water column (2490 Pa) here, and the same with their airflow that is also going to remain the same...
For most fans, you can go down to about 30% speed for a single fan, but when you have these parallel fans, you can go down to a much lower speed or a much lower volumetric flow rate.
In this instance, our lowest part load ratio, our lowest flow rate, is 0.167, so we are going to change this to 0.167... 
This is a fraction, so we are just going to leave this as a fraction so that it is referencing this.
Alternatively, you could say that there is a fixed minimum flow rate; in that instance, we would say our minimum flow rate is 10 000 CFM.
Either way, you could specify it as a fraction or specify it as a flow of rate.
Motor efficiency is at 93%, which is pretty standard for most fans; it might be a little bit different, but it is not going to make a big difference.
Then finally, we will take a look at the fan power coefficients, so let us take a look at that: we will go back to our spreadsheet.
Excel has a built-in tool called: "line estimate" or "line EST."
It calculates a line function based on your dependent and independent variables.
For this instance, we have four variables and an intersect; or rather five coefficients. We have a fourth-order polynomial that Excel is estimating.
We use the input data, which is the independent variable, and that is our part load ratios down this side.
The part load ratio is a function of airflow, so it is a percentage of the full-load airflow.
Then we also used the independent variables, which, in this instance, is the fan power output.
This is calculated based on the fan power, so the brake horsepower (Watts).
In using this line estimate tool, we can output the coefficients for the new curve. This is what that curve looks like if it is plotted on a plot from zero to Unity;
Just like the EnergyPlus curve was plotted, this is what we discussed earlier.
In essence, these are your coefficients. If we look at the: "Input-output" reference, you can see those coefficients for a "Fan:VariableVolume".
You can see that it has one, two, three, four, and five coefficients, and they are all based on this equation here...
And that is what is plotting this function right here from zero to Unity.
Those are our coefficients; right there, it is pretty straightforward.
What we can do is just copy and paste these as values.
Then we can copy these values into the fan power coefficients in OpenStudio.
You want to make sure that you do it in the correct order.
This is our fourth-order coefficient first, so that is what? Our fourth-order coefficient. So we will copy this value into the very last coefficient, which is 5 here.
It is actually going to go backward. Copy this one to this. Then this one is here to the coefficient three. Then this one here...
To the coefficient two. This one is here to the coefficient one.
That is it in a nutshell. That is how you would adjust the fan power curves if you had a different fan configuration.
Now with this new kit fan power curve, instead of modeling a single fan, we are modeling a three-fan array.
Thank you. Please like and subscribe!

bottom of page