1. 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 measure that works very well for inputting a common HVAC system. It will not directly apply to this building because this building is older and has an older type of system, but I want to show you the shortcut first just to demonstrate some of the power of the Building Component Library measures. Go to your model and go to the Measures tab. Let us take a look at the Building Component Library and 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 series of measures, so we will use AEDG as a search term. The measure we are going to use is called AEDG Office HVAC VAV with Chilled Water System. It looks like it is up to date. If it was not up to date, it would say that the measure is not up to date and give you the option to download the latest version. In this case, it looks fine. The other thing I wanted to show you is that the Building Component Library contains a whole new set of measures that can modify building systems or even install entire systems into your model. These measures were created by the National Renewable Energy Laboratory and are based on the ASHRAE Advanced Energy Design Guide recommendations. You will see many different options to choose from, but we are going to select the office building VAV system with a chilled water plant. Go to Components and Measures and click Apply Now. Go to HVAC and select a Whole System. Choose the VAV system with chilled water. The first input asks whether the building has ceiling return air plenums. We do have ceiling cavities, but all of the return air is ducted, so we do not have ceiling return plenums. You can assign a space type to a return air plenum if applicable, but in this case we do not need to apply that. The next input asks for the cost of the system. There is a checkbox to apply recommended availability and ventilation schedules for air handlers, and we will leave that checked. Click Apply Measure. The measure runs successfully. We started with zero air loops, zero plant loops, and zero conditioned zones, and we ended up with ten air loops, two plant loops, and sixty-nine conditioned zones. This measure applies one VAV air loop per building story, so you must have stories assigned in your building model. You can see that several stories have been assigned, and if we render by building story, each story has been assigned an HVAC air handler system. The information panel shows zero errors and zero warnings. Sometimes you may see errors or warnings if key information is missing, in which case you would need to troubleshoot the model. In this case, the measure applied successfully. We will save this model as a new version. Next, we can go to the Air Loops tab and use the drop-down menu to view the air loops that were created. You will see that air loops were created based on each building story and assigned to the spaces on that story. Each air loop consists of a VAV air handler with an air-to-air heat exchanger for heat recovery, a chilled water cooling coil, a hot water heating coil, and a variable flow fan. It also includes a setpoint manager based on outdoor air reset. There are multiple VAV terminal boxes without reheat serving the zones. If we go to the Thermal Zones tab, we can see that each thermal zone has been assigned a VAV terminal box. Each zone also has a convective hot water baseboard heater for zone-level heating. Going back to the HVAC Systems tab, we can see that a chilled water plant and a heating water plant were also created. The chilled water loop includes an air-cooled chiller, a variable flow pump, and all of the chilled water coils serving the air handlers. The heating water loop includes a variable flow pump, a boiler, a setpoint controller, and all of the air handler heating coils and baseboard heating coils. Finally, we can run the simulation to confirm that the system works. First, we go to the Simulation Settings tab and shorten the simulation run to a single day so that it completes quickly. To speed it up even more, we can reduce the number of timesteps per hour to one. Click Save. There are additional advanced settings that can be adjusted to improve simulation speed related to shading and convergence, but we will proceed with these settings for now. The simulation runs and completes successfully. There are some output warnings, but overall the run is successful. I did have some output variables selected, which increased the post-processing time for the SQL file. Even so, the EnergyPlus simulation completed in about one minute and thirty seconds. This demonstrates how you can quickly assign a complete HVAC system to an energy model that previously had no systems defined. In the next video, we will go over how to manually input a dual-duct VAV system for this building. Thank you, and please like and subscribe.
2. Create Central Plant Systems
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, which also includes baseboard hot water heaters in the zones. We begin by going to the thermal zones tab. Fortunately, the basement is considered a single thermal zone, so we only need to work with this one zone. From the library tab, we search for baseboard convective water and drag it into the zone equipment. This assigns baseboard hot water heaters as the primary heating source for the basement. Next, we click the chain link icon in the edit tab and select the heating water loop as the heating water source for these baseboard convectors. The rated average water temperature can be set to 160°F (71.1°C), while the remaining properties are left at their default, auto-sized values. If specific performance data is available, those values can be adjusted here. Next, we go to the HVAC systems tab and click the plus button to add a new system. We add a warm air gas-fired furnace to the model, but since we are not using gas heating, we delete the gas furnace component. From the library, we search for a coil heating water component and drop it into the system, renaming it as the heat and vent unit, or HV. Using the chain link button again, we connect this heating water coil to the heating water loop. All other properties can remain at their default values. This system is a constant volume system, so we keep the constant volume fan and rename the system HV-1. The airflow rate is set to 3,000 cfm (5,100 m³/h), while the design outdoor air flow rate is left unspecified. The design supply air temperature is set to 105°F (40.6°C), and for sizing purposes, the system is assumed to handle 100% outdoor air in both heating and cooling. The air terminal is already present on the demand side, and we assign the basement zone to this system using the splitter. Since this is a constant volume system, a bypass duct is not required. We then move on to installing the dual duct air handlers. From the plus button, we add a dual duct air loop and rename it AHU1. Most values are left auto-sized, but the central heating maximum system airflow ratio is set to 50%, and the design supply air temperature is set to 105°F (40.6°C). After saving, we add an air loop HVAC outdoor air system, naming it AHU1 Outdoor Air System. We also install an air-to-air heat exchanger, selecting an energy recovery wheel, and add a powered exhaust fan with variable speed. The outdoor air minimum flow rate is set to 17,500 cfm (29,730 m³/h), and the maximum flow rate is set to 60,000 cfm (101,940 m³/h), since this is a 100% outdoor air system. The economizer control type is set to fixed dry bulb. For the heat exchanger, we keep most default values, specify a rotary heat exchanger, set the frost control strategy to exhaust only, and enable economizer lockout. The powered exhaust fan is set with an 80% total efficiency, a pressure rise of 7 inches water column (1,740 Pa), and a minimum flow fraction of 33%. Next, we install the heating water preheat coil, name it AHU1 Pre-Heat Hot Water Heating Coil, and link it to the heating water loop. Most values are left auto-sized, but the rated inlet water temperature is set to 180°F, and the rated outlet air temperature is set to 55°F (12.8°C). We then add a scheduled setpoint manager for the mixed air deck temperature and set it to 55°F. A variable volume supply fan is added next, followed by a hot deck heating water coil with a rated outlet air temperature of 105°F (40.6°C). An outdoor air reset setpoint manager is applied so that at an outdoor air temperature of 50°F (10°C), the supply air temperature is 105°F, and at 65°F (18.3°C), the supply air temperature resets down to 70°F (21.1°C). For the cold deck, we install a chilled water cooling coil, connect it to the chilled water loop, and apply another outdoor air reset setpoint manager so that the cold deck supplies 55°F (12.8°C) air at higher outdoor air temperatures. Finally, we install dual duct VAV terminal boxes from the library and connect them to both the hot and cold decks. The zone minimum airflow fraction is typically left at around 30% to maintain minimum ventilation, even when there is no heating or cooling demand. We then assign all required zones by dragging thermal zones into the air loop and allowing the splitter to automatically populate terminal boxes. Once all zones are assigned, we verify connections and notice that one heating water coil is not yet linked. Using the chain link button, we connect it to the heating water loop, which now shows multiple connected components including the AHU coil, baseboard heaters, and the heat and vent unit. Reviewing the thermal zones tab confirms that all HVAC equipment is properly assigned. This completes the installation of HVAC systems with heating and cooling coils using hot water and chilled water systems. Thank you. Please like and subscribe.
3. 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 and search for baseboard convective water. Drag that into our zone equipment. Now the basement has baseboard hot water heaters as its primary heating source. Next, go up to the chain link icon on the edit tab and click it. Select the heating water loop as the heating water source for these baseboard convectors. The rest of these settings are customizable. The rated average water temperature can be set to about 160°F (71.1°C). We will leave the remaining values as default and auto-sized. If you know the specific design values, you can change them here. Now let us go to the HVAC systems tab and click the plus button at the top. We will add a warm air gas-fired furnace to the model. It comes in already prepared. However, we are not going to use a gas furnace for heating, because we are going to use a hot water heating coil instead. So we delete the gas furnace. Go to the library tab and search for a coil heating water. Drop the hot water heating coil into the system. Select the heating water coil and name it HV for heat and vent. Again, go up to the chain link button on the edit tab and click it to link this heating water coil to the heating water loop. Go back to the edit properties tab and leave the rest of the values at their defaults. This system is a constant volume system, so we leave the fan as a constant volume fan. Rename the system to HV-1. The airflow rate is 3,000 cfm (5,100 m³/h). We do not have the design outdoor air flow rate information, so we leave it as default. The design supply air temperature is 105°F (40.6°C). For sizing purposes, we want to size the coil for 100% outdoor air in both heating and cooling, so we leave the remaining settings as default. You will notice that the system already includes an air terminal, a constant volume diffuser, on the demand side. Next, we assign the zones. Click the splitter and add the basement zone to the HV system. Since there is only one zone, this is straightforward. Because this is a constant volume system, we briefly consider adding a bypass duct, but it is not allowed in this configuration. Bypass ducts are typically used only for VAV systems, and there may be additional settings for bypass control in other air loop configurations. At this point, the heat and vent system is complete. Now we move on to adding the dual duct air handlers. Click the plus button again, scroll down, and add a dual duct air loop to the model. Name it AHU1. We leave the system auto-sized for now. The central heating maximum system airflow ratio is set to 50%. The design supply air temperature is set to 105°F (40.6°C). The rest of the settings are left at their default values, and we click save. Next, we install an outdoor air system by adding an air loop HVAC outdoor air system. To avoid clutter from external library connections, we revert to the default libraries and remove unnecessary items. We then add the outdoor air system to the air loop and name it AHU1 Outdoor Air System. We also need to add an air-to-air heat exchanger. From the air-to-air heat exchanger options, we select an energy recovery wheel and drop it into the outdoor air system. Next, we add a powered exhaust fan with variable speed. The minimum outdoor air flow rate is set to 17,500 cfm (29,730 m³/h), and the maximum flow rate is initially noted as 150,000 cfm (254,850 m³/h). The economizer control type is set to fixed dry bulb. Moving to the heat exchanger settings, most performance criteria are left at default values, as they closely match the actual system performance. The heat exchanger type is rotary, the frost control strategy is set to exhaust only, and economizer lockout is enabled so the heat wheel is disabled during economizer operation. Next, we review the powered exhaust fan. The fan total efficiency is set to 80%, and the pressure rise is 7 inches water column (1,740 Pa). The maximum flow rate is corrected to 60,000 cfm (101,940 m³/h), which matches the 100% outdoor air system requirement. The fan power minimum flow rate input method is set to fraction, and the minimum flow fraction is set to 33%. If fixed flow rate were selected instead, a specific airflow value would need to be entered. The fan power coefficients are left at their default values, which are appropriate for a single fan system. Next, we install the heating water preheat coil. From the library, select coil heating water and drop it into the air loop. Name it AHU1 Pre-Heat Hot Water Heating Coil. Use the chain link button to connect it to the heating water loop. Most values are left auto-sized. The rated inlet water temperature is set to 180°F, and the rated outlet air temperature is set to 55°F (12.8°C), since this is a preheat coil. Rated capacity and other detailed parameters are skipped for now and left to auto-size, although entering known values is recommended when available. We then install a setpoint manager for the mixed air or preheat deck. Select a scheduled setpoint manager and rename it to scheduled mixed air deck temperature. In the schedules tab, set this temperature to 55°F (12.8°C), and return to the air loop air handler. Next, install a variable volume supply fan and name it AHU1 supply fan variable speed. All values are left at default, noting that fan power coefficients may differ for parallel or dual fan arrangements. Now we install the hot deck heating water coil. Most values are left at default, with the rated outlet air temperature set to 105°F (40.6°C). We then add an outdoor air reset setpoint manager. At an outdoor air temperature of 50°F (10°C), the supply air temperature is set to a maximum of 105°F (40.6°C). When the outdoor air temperature rises to 65°F (18.3°C), the supply air temperature resets down to a minimum of 70°F (21.1°C). This is a simple reset strategy, and more complex scheduling options can be added if needed. Next, we install a chilled water cooling coil on the cold deck. From the library, select a cooling coil, cooling water, and drop it into the cold deck. Use the chain link button to connect it to the chilled water loop and name it AHU1 chilled water coil. Add another outdoor air reset setpoint manager so that at a low outdoor air temperature of 50°F (10°C), the setpoint resets up to 65°F (18.3°C), and the cold deck supplies a minimum of 55°F (12.8°C) air when the outdoor air temperature reaches 65°F (18.3°C) or higher. This completes the supply side of the system. Now we add the dual duct terminal boxes. From the library, select air terminal, dual duct, VAV, and drop it into the system. The terminal automatically connects to both the hot deck and cold deck ducts. The zone minimum airflow fraction can be adjusted if needed, but it is typically set around 30% to ensure minimum ventilation airflow even when there is no heating or cooling demand. Setting this value to zero would shut the terminal down completely when there is no demand, which is generally not desirable. The next task is to assign the zones. Attempting to drag plenum zones directly does not work as expected, so we go to the library, select thermal zones, and drag them into the system manually. For example, we drag zone 2-3NTZ into the system. After selecting the splitter, the system automatically populates with terminal boxes for the remaining zones, such as 4-5, 5-6, 6-7, 7-8, 8-9, and several others. At this point, all zones are assigned. Using the magnifying glass tools, we can zoom out to see the entire system or zoom in for more detail. This completes the installation of the dual duct VAV air handler. We then notice that one of the heating water coils is not linked to the heating water system, as indicated by the missing connectors. Clicking the chain link button allows us to connect it to the heating water loop. Once connected, the heating water loop shows multiple attached components, including the AHU1 coil, the baseboard heaters, and the heat and vent unit. Clicking these connections allows navigation back to the air handling equipment. Finally, by reviewing the thermal zones tab, we can see that all HVAC equipment is properly assigned to the zones. This demonstrates how to install HVAC systems with heating and cooling coils using heating water and chilled water systems. Thank you. Please like and subscribe.
4. 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. The model is already set up with weather files, and most of the chilled water and condenser loops are already in place, including the condenser water loop and chilled water loop. The only remaining inputs are the chillers themselves and a load profile for the system. The comparison will be based on how the two chillers perform under the same load conditions. The load profile can be obtained from building automation system trend logs or other trending devices installed on the equipment, or it can be modeled. In this case, a combination is used: about three-quarters of the year comes from trended plant data, and the remainder of the year is filled in using regression models to estimate the full annual load profile. The first step is to input the load profile. Go to the library tab and scroll down to Load Profile – Plant, then drop this object on the demand side of the chilled water loop. When selected, it shows inputs such as a load schedule name and a flow rate fraction schedule name. These schedules are based on 8,760 data points, representing every hour of the year, and they are imported into OpenStudio using CSV files. To do this, a specific Building Component Library measure is required. Go to Components & Measures, select Find Measure, then navigate to Whole Building and locate the measure called Add Interval Schedule From File. This measure allows interval schedules to be added to OpenStudio from CSV files and can be used for many applications such as lighting loads, occupancy schedules, or any other schedulable input. Schedules can range from hourly to 15-minute intervals, making it possible to directly simulate real trend data collected over an entire year. Before importing the schedules, the data must be prepared correctly. Two CSV files are required: one for the load and one for the flow fraction. The load data must be in watts, which is the base unit used by EnergyPlus and OpenStudio, and the flow fraction must be a unitless decimal value. The load data is copied into a spreadsheet, verified to contain 8,760 hourly values, and converted to negative values to follow EnergyPlus convention for cooling loads. This file is saved as Load.csv and placed in the project folder. The same process is followed for the flow fraction data, which is saved as Flow.csv. Once the files are ready, the Add Interval Schedule From File measure is applied twice: once to create the Load schedule using watts as the unit, and once to create the Flow schedule as a unitless schedule. Both measures apply successfully with zero warnings or errors. After the schedules are imported, return to the chilled water loop and select the Load Profile, Plant object. Assign the Load schedule as the load schedule name and the Flow schedule as the flow rate fraction schedule name. Finally, input the peak flow rate for the chilled water system, which in this case is 8,200 gpm (517 L/s). At this point, the chilled water loop has a complete load profile applied and is ready for chiller input and performance comparison. The next step, which will be covered separately, is to add the chillers themselves and customize their performance using manufacturer’s data. Thank you. Please like and subscribe.
5. 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,” and add it to the 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 and input the reference conditions for the chiller. First, we want to call this chiller by its model number. These are all reference values, and these reference values correspond with the bi-quadratic and quadratic performance curves of the chiller. It is important that the reference values and curves correspond. If you change these reference values, you might not get the results you expect unless you also change the performance curves. Reference capacity is the cooling capacity of the chiller and is often, but not always, the design capacity. All reference values must correspond with the performance curve, and design values should land within the bounds of the curve. For our chiller, the reference capacity is 1,184 tons (4,037 kW), the reference coefficient of performance is 5.785, the reference leaving chilled water temperature is 40°F (4.44°C), the reference entering condenser fluid temperature is 80°F (26.7°C), the reference chilled water flow rate is 2,022 gpm (127.6 L/s), and the condenser fluid flow rate is 2,400 gpm (151.4 L/s). Some values are grayed out and must be renamed directly in the OpenStudio file later. The minimum part load ratio is 0.1517, the maximum part load ratio is 1, and the optimum part load ratio corresponds to the highest COP, which in this case is 6.417 at a part load ratio of 0.5998. The minimum unloading ratio will match the minimum part load ratio since this chiller does not use false loading. This is a water-cooled chiller, so there is no condenser fan. The fraction of compressor electric consumption rejected by the condenser is 1.0. Leaving chilled water lower temperature limit and flow mode are left at default. The sizing factor does not matter because values are hard sized. The end-use subcategory can be renamed to track this chiller’s energy separately. Save this file as a library OSM using the model number. Repeat the same process for the second chiller and save it as a separate library file. Next, we generate the bi-quadratic and quadratic performance curves. First, gather performance data from the manufacturer and compile it into a spreadsheet. To generate bi-quadratic curves, you need two independent variables and two dependent variables. The independent variables are evaporator leaving temperature and condenser entering fluid temperature. Our chilled water supply temperature is 40°F ± 5°F, so manufacturer data should cover 35°F to 45°F (1.7°C to 7.2°C). Condenser entering water temperature will range from 41°F (5°C) to 80°F (26.7°C). All data must be at constant rated flow rates. For this example, condenser flow is 2,400 gpm ±10% and evaporator flow is about 2,050 gpm ±10%. EnergyPlus has a ±10% tolerance for curve fitting, though 5% works better if possible. Requested manufacturer data should include chilled water capacity and chiller input power. Compile the data into a table and use a regression calculator to generate curves. The calculator used supports visualization and includes instructions for bi-quadratic and quadratic curves for chillers, heat pumps, and other EnergyPlus objects. Select “Other,” choose “Temperature,” select “Bi-quadratic,” and use IP units. Paste in the manufacturer data. Highlight the reference conditions, which must also be entered as rated data. For the existing chiller, the reference conditions are 40°F chilled water temperature, 80°F condenser entering temperature, and 14,208,000 Btu/hr (4,164 kW). Generate the curves and save the output files to the chiller characterization curves folder. Now open the OpenStudio model and select the chiller. You will see three curves: two bi-quadratic curves and one quadratic curve. These correspond to cooling capacity as a function of temperature, energy input ratio as a function of temperature, and energy input ratio as a function of part load ratio. OpenStudio does not allow editing these grayed-out values directly, so open the OSM file in a text editor. Search for the chiller model or for “quadratic.” Rename the curve objects to include the model number. Copy the coefficients generated by the calculator and paste them into the appropriate curve objects in the OSM file. For the quadratic curve, go back to the calculator, select “Other,” choose “Flow,” select “Quadratic,” and paste in the capacity, input power, and part load ratio data. Generate the curve and copy the coefficients. Pay attention to the R-squared values, which indicate how well the curve fits the data. Values around 0.92 are acceptable. Paste the quadratic coefficients into the OSM file. Ensure each object ends with a semicolon, then save the file and reload it in OpenStudio. Verify that the curve names and coefficients have updated correctly. Repeat this entire curve-editing process for the second chiller and save the file. Finally, load both chiller library files into your project using File > Load Library. Verify they appear under Preferences > Change Default Libraries and in the Chillers – Electric EIR section of the library tab. Go to the chilled water loop and drag the existing chiller into the loop. Add three chillers to meet the required capacity. Do not forget to also place those chillers into the condenser water loop by selecting them from the My Model tab and dropping them into the condenser loop. Now the chillers are connected to both loops. Save the project and run the simulation. In the next step, the results and troubleshooting techniques will be discussed. Thank you, and please like and subscribe.
6. 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 were any warnings generated. 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, and it is also saying the energy input as a function of part load ratio (PLR) curve is not equal to one at the rated conditions. The warning is repeated for the other two chillers, so we have two curves that we need to examine more closely. First, we look at the capacity as a function of temperature curve. These values are in SI units, so the temperatures are in Celsius. We go back to our model, go to the HVAC tab, and look at the chilled water loop and the chillers. These are in IP units, so we switch to metric units through Preferences, Units, Metric. Now we can see that our reference conditions are approximately 4.5°C evaporator temperature and 26.6°C condenser temperature. At these design conditions, the output of the curve is about 0.65, specifically 0.653, whereas it should be 1. This value multiplies the reference capacity, which was 14,208 kBtu/hr (4.16 MW). At design conditions, it should therefore output the full reference capacity, but it does not, which indicates a problem. Similarly, the efficiency curve at design conditions should be 1. It is close, around 0.99, but the capacity curve is far off. The EIR curve has a fit of about 92%, which is acceptable, but the capacity curve fit is only around 16%, which is not good. We can also see that the curve behavior does not make physical sense, since it drops toward zero capacity at low condenser temperatures and high chilled water temperatures, which is the opposite of expected chiller behavior. Looking deeper at the data, we can see that the curve shape indicates missing or insufficient input data. If the condenser temperature is low and the chilled water temperature is high, the chiller should have maximum capacity, but the curve slopes incorrectly. When we examine the input table, we notice that most of the data points are at a fixed chilled water temperature of 40°F (4.4°C), with variation mainly in condenser temperature. We are missing data for chilled water temperatures lower than 40°F and higher than 40°F, even though our stated boundary conditions were 40°F ± 5°F, which means the data should span from 35°F (1.7°C) to 45°F (7.2°C). We also notice that at the reference conditions of 40°F chilled water and 80°F condenser temperature, we have multiple data points corresponding to different part load ratios. However, the capacity as a function of temperature curve should be generated at 100% PLR only. The part load behavior is handled separately by the PLR curve. Including multiple PLRs in the temperature-based curve distorts the regression and causes the curve to be incorrect. This tells us that we need to go back to the manufacturer to request additional data covering low and high chilled water temperatures across a range of condenser temperatures, and that all reference-condition data should be at full load. After consolidating and cleaning the data, we correct another issue we missed earlier. In addition to keeping flow rates within ±10%, the PLR should also be within ±10% of 1. Ideally, PLR should be as close to 1 as possible when generating the temperature-based curves. We remove data points that are far from 1 PLR and eliminate duplicate or very similar points, keeping those closest to full load. Once this cleaned dataset is used, we rerun the regression. This produces a much better curve fit, with about 98% fit for the EIR curve and around 80% for the capacity curve. The bi-quadratic capacity curve now looks physically reasonable, relatively flat and covering all corners of the temperature range, while the EIR curve shows the expected dip near the optimum part load condition. We then review the EIR as a function of PLR curve and notice an outlier that produces a negative input power, which is not physically possible. This outlier severely degrades the curve fit and causes the EIR at design conditions to be about 0.84 instead of 1. Removing this bad data point and rerunning the regression yields a curve fit of nearly 96%, with the EIR correctly equal to 1 at PLR = 1 and a reasonable dip at the optimal PLR of around 0.7. We then go back and edit all the corrected curve coefficients in both the library files and the project file, rerun the simulation, and check the error file again. This time, the simulation runs successfully without curve-related warnings, confirming that the curves are now well defined and properly normalized at the reference conditions. We repeat the same verification and correction process for the second chiller, run both models, and compare the results. The existing chillers use approximately 18 million kBtu per year (about 5,275,279 kWh per year), while the new chillers use about 16 million kBtu per year (around 4,689,137 kWh per year). This results in an annual energy savings of roughly 419,000 kWh. That completes the chiller comparison using OpenStudio with properly generated and validated chiller characterization curves.
7. In-Depth: Creating Space Types
We will briefly discuss the advantage of space types and then go through the process of creating a space type. Our process will be using the Building Code of Australia (NCC Volume 1), Australian Standard 1668.2, and the AIRAH Technical Handbook. However, as the program relies on fundamental physics, the process will be similar in other countries and only differ based on the specific code requirements.
Today we discussed one of the most important features of OpenStudio: space types. Space types are used to apply all required information—such as people, lighting, plug loads, gas loads, infiltration, ventilation rates, and schedules—to spaces, which are then converted into thermal zones and passed to EnergyPlus for simulation. Since EnergyPlus does not use space types, OpenStudio acts as an organizational layer that simplifies modeling. OpenStudio follows a parent–child hierarchy when assigning data. It first looks at information applied directly at the thermal zone or space level. If information is not found there, it checks the Facilities tab for default construction sets, schedule sets, or space types. If it still cannot find the required data, OpenStudio finally looks at the Space Types tab, which is the lowest level. Space types are powerful because they allow standardized data to be applied across many spaces efficiently while still allowing overrides at the space level when needed. We then created a classroom space type based on the Australian National Construction Code 2019 as a reference building example. Since this model is intended to be reusable as a template or library file, we did not assign a default construction set, allowing future climate-specific construction sets to be applied later. We defined a design specification outdoor air object based on Australian ventilation code 1668.2, using 12 L/s per person and 0.35 L/s per square meter, summed together. Next, we created an infiltration design flow rate using air changes per hour, set to 1 ACH, and applied a fractional schedule to modulate infiltration throughout the day based on HVAC operation. This schedule was created to reflect higher infiltration when HVAC systems are off and lower infiltration during occupied periods, and it was assigned through the space type loads tab. Next, we added internal loads to the space type. These included electrical plug loads set at 5 W/m² based on the reference building code, lighting loads set at 4.5 W/m² with appropriate radiant fractions, a people definition using 2 m² per person, and an internal mass definition representing classroom furnishings. The internal mass was modeled using a construction created from a 25 mm wood material to represent furniture thermal storage effects. Each load definition was created separately and then assigned to the classroom space type. This approach allows consistent reuse of load definitions across multiple space types and projects. Finally, we created and assigned schedules for occupancy, lighting, electrical equipment, infiltration, and occupant activity levels using fractional and activity schedules derived from the construction code reference tables. Occupancy and equipment schedules varied throughout the day to reflect realistic school operation. We also created an HVAC operation schedule defining when systems are allowed to run. Instead of assigning each schedule individually, we demonstrated how to create a default schedule set that bundles all schedules together. Assigning this schedule set to the space type automatically populated all schedule fields, saving time and reducing errors. Once completed, this space type can be applied to all classrooms in a project, ensuring consistent loads and schedules. We concluded by noting that multiple space types can be created for an entire school and shared through the Building Component Library for reuse across projects and teams.
8. In-Depth: Uploads to BCL
We will discuss how to upload components and measures to the BCL to share with other energy modelers and researchers. First, we will show how to create a component repository, register it with the BCL, and set it up to automatically add new releases. Then we will go through a quick example of how to add content (components or measures) to the 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 note...in 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 Github.com 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. 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 folders... 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 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. The xml file is a directory for each of the the measures and components located in the library. 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 up... You can edit this with any sort of text editor. We will just copy all of this information in this example xml file and paste it into our Github component xml file. 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 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. 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 it in here for the version. The display name is going to be this right here, when you are searching the BCL. Australian NCC 2019 Class 9b School-Space types. The description is going to be this right here. Australian National Construction Code Standard Reference Space Types for K-12 Schools. We will 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. Attributes... We will add country as Australia and climate zone as All. Finally, files. The file extension that we are uploading is going to be OpenStudio (.osm). The version identifier is 3.2.1. The file name is school space types.osm. The file type is .osm. That concludes our .xml file. We will commit the new file. The next step is to create a nested folder called files. This is where all files attachments that the component.xml references go. We will create the files folder and then create our .osm file. Open the .osm file with a text editor. Select all. Copy. Paste. Commit new file. That is basically step one for creating your Github repository. Step two; register your repo with the BCL. This is accomplished via the BCL manifest. You need to fork the BCL manifest repository. Forking creates your own copy under your Github account. In the forked repo, edit the .json file. Scroll to the bottom and add your repository information. Commit the changes. Then create a pull request so the BCL team can review it. Step three; configure your repo to automatically add new releases to the BCL. This is done using webhooks. Go to repository settings. Click Webhooks. Add webhook. Paste the payload URL. Set content type to application/json. Select releases only. Make sure it is active. Step four; create a release. Click Create new release. Add a tag, title, and description. Do not check pre-release. Publish the release. The BCL will index your content. If there are errors, fix them and create a new release. Once successful, your component will appear in the BCL and can be downloaded by anyone. After setup, adding new components is easy. Create a new folder. Add component.xml. Add supporting files. Publish a new release. That is how you set up your repository and upload content to the Building Component Library. Thank you! Please like and subscribe!
9. Fan Curve - Modify for Parallel Fans
In this video we will discuss how to modify the default fan curve to simulate multiple, parallel fans. A copy of the spreadsheet calculator used in this video can be obtained here:
FanPowerCurveCalculator
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, and 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) or 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, which 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%, which 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 the 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 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. 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 intercept, 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. The part load ratio is a function of airflow, so it is a percentage of the full-load airflow. Then we also use the dependent variables, which in this instance is the fan power output. This is calculated based on the fan power, so the brake horsepower in 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 from zero to Unity, just like the EnergyPlus curve. 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. That is what is plotting this function from zero to Unity. Those are our coefficients. What we can do is just copy and paste these values into the fan power coefficients in OpenStudio. You want to make sure that you do it in the correct order. The fourth-order coefficient goes into the last coefficient field, which is coefficient five, and then you work backward: copy the next value to coefficient four, then to coefficient three, then coefficient two, and finally 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 fan power curve, instead of modeling a single fan, we are modeling a three-fan array. Thank you. Please like and subscribe!
10. Measure Writing 1
In this video, we will discuss what OpenStudio measures are, how they are used, and how to create your own measures by coding using Ruby programming language.
Today we will talk about OpenStudio Measures. Take a look at the Measures tab. First, let us discuss how OpenStudio creates your energy model. OpenStudio gathers all of the inputs from each one of these tabs, the input variables that you input into the model, and it creates an .OSM file. This file is the input file for OpenStudio. This input file has all of the schedules, all of the equipment, all of the zone assignments—basically, all of the inputs for the energy model. Then OpenStudio runs it through a translator. It translates that OSM input file into an EnergyPlus input file. The EnergyPlus input file is very similar. You can find it by going to the project folder, then the run folder, and selecting the in.IDF file. IDF is an EnergyPlus input file. If you open it up, it looks very similar to the OpenStudio input file. But OpenStudio does a lot of shortcuts—shortcuts that make it easy for the user to create the energy model. After you input the information using the OpenStudio graphical user interface, OpenStudio has to translate these inputs to EnergyPlus. It has to expand those shortcuts and fill in missing information. That is what the translator does. It changes the OpenStudio input file to an EnergyPlus input file. The EnergyPlus input file has all of the object definitions: walls, insulation, equipment, schedules, etc. The IDF file is used strictly for the EnergyPlus simulation engine. EnergyPlus uses that input file and performs all the physics-based calculations necessary to create your energy model simulation. Then it spits out an output file. The output file contains the information that you see when you go to the Reports tab. Now, stepping back to Measures. Energy modelers use measures to automatically edit some of the input variables in the input file, and they can edit some of those inputs that the OpenStudio interface does not have. You can download these measures from the Building Component Library. For example, under HVAC–Ventilation, Whole System–Distribution, there are different measures that you can use. This measure, Air Wall Zone Mixing, creates an air wall in your OpenStudio model. You can tell it is an OpenStudio measure because it has the OpenStudio logo. Conversely, Add Zone Mixing Object is an EnergyPlus measure. This measure adds a zone mixing object directly to the EnergyPlus input file, and it is applied after the OpenStudio input file has been translated to the EnergyPlus input file. So, there are different types of measures you can write, and these measures go into the input files and change parameters automatically. For example, if you want to change all of the walls in your model to be sun-exposed, the measure program goes into the input file and automatically changes that parameter for all walls. A measure is essentially a short script that opens the input file and changes some of the input parameters. It can also completely transform your model. Some measures are used to replace entire HVAC systems. For instance, if a model has a rooftop HVAC system and you want to replace it with a chilled water variable air volume system, you can use an advanced energy design guide measure from the Building Component Library. Today, we are going to show how to write a simple measure. We are going to start with an input object that OpenStudio does not support, but EnergyPlus does. We will go to our air loop and look at the return fan. This return fan has many inputs, but there is one particular input that OpenStudio does not expose. In the EnergyPlus Input Output Reference Manual, you will find an input called Design Return Air Flow Fraction of Supply Air Flow. If you look at the AirLoopHVAC object properties in OpenStudio, you will not find this input—it is not supported. So, we will create an EnergyPlus measure that inserts this particular input into the IDF file. After OpenStudio translates the model to an EnergyPlus input file, this measure will insert the return airflow fraction of supply airflow variable. This input limits the return fan to a maximum airflow that is a fraction of the supply fan airflow. The system provides full supply airflow, but the return fan only returns a fraction of that flow, assuming that exhaust fans elsewhere in the building remove the rest of the air. To do this, we go to Measures and copy an existing EnergyPlus measure, such as Add Zone Mixing Object, and modify it. We copy it, add it to My Measures, and rename it “edit return air flow fraction.” We edit the description and modeler description to explain what the measure does. We specify that it is an EnergyPlus measure and categorize it as an HVAC whole-system measure. Then we click Create Measure and Open for Editing. The measure opens as a Ruby program. It starts with a class definition and includes the descriptions we entered. Then it defines arguments. Arguments are the user inputs that appear in the OpenStudio GUI. We modify these arguments so that instead of a zone name, we use an air loop name, and instead of a design level, we use a return airflow fraction. The air loop name is a string argument, and the return airflow fraction is a double argument. The “true” value indicates that the input is required for the measure to run. We set the display name to “Return Air Flow Fraction” and the units as a fraction from zero to one. Next, we define what happens when the measure runs. Because we are editing an EnergyPlus input file, we work in the workspace. We assign the user inputs to variables in the run loop. We then create an array of AirLoopHVAC objects by searching the workspace for all objects of type AirLoopHVAC. A runner is used to report messages back to the user during execution. We then loop through each air loop using a do loop. EnergyPlus objects are arrays, where position zero is the name of the air loop. We compare this name to the user-specified loop name. When we find a match, we write the return airflow fraction into position ten of the AirLoopHVAC object array using setString. This position corresponds to the Design Return Air Flow Fraction of Supply Air Flow field. This overwrites the value if it already exists or inserts it if it does not. Finally, we register a final condition with the runner to report success. We save the measure, return to OpenStudio, and apply the measure. We enter the air loop name and specify a return airflow fraction, such as 0.6. When we run the model, the runners confirm that the return airflow fraction was changed successfully. Opening the EnergyPlus IDF file confirms that the Design Return Air Flow Fraction of Supply Air Flow field has been added to the AirLoopHVAC object. That is how you write an OpenStudio measure to edit the EnergyPlus input file. Thank you. Please like and subscribe.
11. Measure Writing 2
In this video, we will do some clean up on the measure that we have written. We will also show how to upload your measure to the Building Component Library to share with other users.
Now that we were successful with our measure, there are a few cleanup items that we should do. It will make the code a little bit more friendly for future users, and we will clean up some verbiage. I will also show you how to upload a measure to the Building Component Library (BCL). This code that we wrote last time has actually been implemented in the latest release of OpenStudio, so there is no reason to upload this to the BCL, but I will still show you how to upload measures to the BCL. Let us go back to the code. For the modeler description, it should discuss some items that are helpful for the energy modeler. I wanted to add some items here. If the fan is set for autosized, it does not affect the sizing of the return fan. If the fan is set for autosized, the sizing calculation will actually size that return fan for full loop flow by default. This particular field that we are changing only affects the actual simulation of the energy model. That is important for the energy modeler to know: the fan will still be autosized for the full flow of the system, and only during the simulation of the system will it be limited to the value we are editing in this measure. It will only limit the return fan flow rate during the simulation, which is helpful information for the modeler. Another thing that I had noticed is that we messed this up. The return fraction was set with units as a percentage. I will show you. We are showing it as a percentage, but we are actually writing it as a fraction. If it were a percentage, we would be writing 60. It is actually a fraction, so we need to change this to fraction. That should work. Down here, we are reporting the initial condition of the model, and that is true, but that actually happens after the program retrieves all the air loops. Let us move this comment down and change it to say “get all HVAC air loops in the model.” Then it will report the initial condition of the model, saying that the building started with a certain number of HVAC air loop objects. Next, we will go down to these commented-out items that are left over from the measure we copied and clean these up. The comment says “validate the input names and get zones,” but we are not getting any zones with this measure, so we can delete this. We will uncomment loop_name_valid and define it with a default value of false. We do not need source_loop_valid because we are only validating one variable, which is the loop name. The other variable we are editing is the return fraction, but for now we are only validating the loop name. Instead of zones.each do, we will use air_loops.each do, since we are checking air loops. For each air loop in the vector, we define it as air_loop. If the loop name equals the first field string of the air loop object—which should be the air loop name—and it matches the user-specified input, then loop_name_valid is set to true. We do not need an else-if statement, since we are only validating one variable. If it is true, it means the program found an air loop in the model whose name matches the user input. Otherwise, it will show an error stating that the expected air loop could not be found, which helps the user realize they may have mistyped the name. Next, we validate the return airflow fraction input. We need to make sure the user inputs a correct value. If the return fraction is less than zero or greater than one, we show a runner error saying “Choose a number between zero and one for return airflow fraction,” and then return false. Otherwise, we proceed. We can also repeat the requested return airflow fraction back to the user using runner.registerInfo, showing the value they entered. For additional troubleshooting, inside the air_loops loop we can add a counter to count the number of fields in the AirLoopHVAC object by using air_loop.numFields. We then report to the user how many fields exist in that air loop. If you open the in.idf file and search for AirLoopHVAC, each entry is a field, and initially there are nine fields. After adding the return airflow fraction field, the count should increase. This gives helpful feedback to the user while the program executes. That should be enough information to help users understand and troubleshoot the measure. Save the code and return to the OpenStudio application. Instead of deleting and reinserting the measure, we can use the “Sync Project Measures with Library” button to update it. Click Update, and then run the measure. If messages are missing, replace puts statements with runner.registerInfo, save again, sync, and rerun. You will see messages showing the number of fields in the air loop before and after. In the latest version of OpenStudio, the Design Return Air Flow Fraction of Supply Air Flow is already implemented, which means this measure is now defunct, but it can still be used as a template for editing other fields before translation to EnergyPlus. To upload the measure to the Building Component Library, open a browser, go to the BCL, and log in. Go to My Dashboard, Create Content, and Upload Measure. The BCL accepts tar, gz, or zip files. Navigate to your My Measures folder, find the “edit return airflow fraction” folder, select all contents, zip them, and place the zip file in a convenient location. Upload the zip file to the BCL, select your group, make it accessible to all site users, add revision information such as the date, and save. Submit it for review, set the moderation state to published, and apply. The measure is now published and accessible on the BCL. Thank you. Please like and subscribe!
12. Create Performance Tables
We discuss how to input performance tables based on manufacturer's data instead of using characterized polynomial curves. These tables can be use in most places where performance curves are used in EnergyPlus such as equipment with evaporators and condensers. You can download the spreadsheet file we used in this episode here: Curve to Table
Today we’re going to talk about performance curves. In a previous episode, we discussed how to generate performance curves using a curve-fit approach. This time, we’ll focus on generating performance curves using a table lookup method. We are working with a variable refrigerant volume (VRF) system and specifically looking at the outdoor unit. The curve we are interested in is the Cooling Capacity Ratio Modifier Function of Low Temperature. This curve is a function of two temperatures. According to the EnergyPlus Input Output Reference Manual, these two temperatures are the indoor wet-bulb temperature and the outdoor condenser entering air dry-bulb temperature. Looking at the manufacturer’s data, there are two performance curves: one showing cooling capacity as a function of indoor wet-bulb temperature, and another showing cooling capacity as a function of outdoor dry-bulb temperature. These two curves are used together to generate the cooling capacity temperature modifier. If the curve is simple, the values can be typed in directly. For more complex curves, a tool such as plotdigitizer.com can be used. An image of the chart is loaded into the tool, then the chart is calibrated by defining the minimum and maximum values for the X- and Y-axes. For the indoor wet-bulb curve, the X-axis ranges from 15 to 24 and the Y-axis ranges from 0.8 to 1.2. After calibration, data points are added and the tool displays the corresponding coordinates. Although the curve is not perfectly linear, it can be approximated as linear over low, standard, and high temperature ranges. The extracted data is then copied into a spreadsheet. The same process is repeated for the outdoor dry-bulb temperature curve. The chart is loaded, calibrated, and digitized. In this case, the X-axis ranges from −5 to 55 and the Y-axis ranges from 0.3 to 1.3. Once the data points are extracted, they are copied into the spreadsheet. It is important that all independent variables are sorted in ascending order, from smallest to largest, because EnergyPlus relies on proper ordering for interpolation. Next, the data is aggregated. The indoor wet-bulb modifier and the outdoor dry-bulb modifier are multiplied together to produce the cooling capacity modifier. These combined values form the output table. EnergyPlus uses the indoor wet-bulb temperature as the first independent variable and the outdoor dry-bulb temperature as the second independent variable, interpolating between values to determine the appropriate cooling capacity modifier during simulation. In the spreadsheet, the independent variables, dependent variables, and model object list are defined. Calculated values should be copied and pasted as fixed values so they remain unchanged. A unique identifier generator is used to ensure all objects have unique handles when imported into the OpenStudio model. The final output includes a table lookup object, the model object list, and both independent variables. The .osm file is then opened in a text editor and the VRF air conditioner object is located, specifically the Cooling Capacity Ratio Modifier Function of Low Temperature curve. The default model already contains a table lookup for this curve. The existing dependent variables can be replaced while keeping the same identifiers, or the new tables and variables can be pasted at the bottom of the .osm file. The handle of the new table lookup is then assigned to the VRF air conditioner so the new curve is used. This method allows manufacturer performance data to be entered directly into OpenStudio and EnergyPlus without using multivariable polynomial equations. Instead, it relies on table lookup based on manufacturer charts. One final reminder is that all object definitions must end with semicolons, not commas, otherwise OpenStudio will generate errors. Thank you. Please like and subscribe!
13. EEMs 1: Demand Controlled Ventilation (DCV)
In this episode, we discuss how to simulate one of the easiest Energy Efficiency Measures (EEMs); Demand Controlled Ventilation (DCV). DCV varies the amount of outdoor air based on the actual number of occupants in the spaces. Airflow rates are calculated proportionally using the sum of the zone level outdoor air requirements or using the ASHRAE 62.1 Ventilation Rate Procedure. Not covered in this video: More advanced versions of this measure can modulate the outdoor airflow rates based on Indoor Air Quality (IAQ) measured by Carbon Dioxide levels or other indoor contaminants.
Hi all, we are back with another episode. In this episode, we are going to discuss one of the simplest Energy Efficiency Measures to implement in OpenStudio: Demand Controlled Ventilation. We have a simple rest stop restroom building. We go to the HVAC Systems tab and add a simple rooftop air loop system. This system does not have cooling, so we delete the cooling from it. We then assign all of the zones in the building to this single HVAC system. We do have an outdoor air system, and the default system is hard-sized with zero minimum outdoor air flow rate. That would not be applicable to this scenario because we do have area-based minimum outdoor air flow rate requirements for the spaces, so we change this setting to autosized. If we go to Space Types and select the restroom, under Design Specification Outdoor Air, we can see that we have 7 CFM per person and an outdoor air flow rate of 0.02 CFM per square foot. This value is probably too low, so we update it to 0.06 CFM per square foot. We then go back to the air loop system, select the air loop itself, and scroll down to see how the system outdoor air is being calculated. For this scenario, we use the Zone Sum method. The other options are the ASHRAE Standard 62.1 ventilation rate procedures, which take into account ventilation effectiveness and primary air flows in multizone systems. Since this example system is simple, we leave it as Zone Sum. We run the simulation, which serves as our baseline without demand controlled ventilation, and save this file separately. To implement demand controlled ventilation, we go back to the air loop, select the air loop system, click the Control button at the top, and turn on demand controlled ventilation. We then run the simulation again. Once it finishes successfully, we go to the Results Summary tab to review the results. First, we open the baseline model in DView and look at the outdoor air mass flow rate. We can see that it is constant throughout the year, meaning the system runs continuously and provides a constant outdoor air flow. Next, we open the model with demand controlled ventilation implemented and again view the outdoor air mass flow rate. This time, the profile fluctuates. If we zoom into a specific day, such as February 9th, we can clearly see the difference. The baseline provides a constant outdoor air flow rate, while the demand controlled ventilation case modulates the outdoor air flow. With demand controlled ventilation, when there are fewer people in the building, the outdoor air flow rate drops to the minimum required level. As more people enter the building, the airflow increases, and as people leave, the outdoor air requirement decreases. This behavior is driven by the occupancy schedule. The system counts the number of people in the building and calculates the required ventilation air based on the design outdoor air requirement per person, which in this case is about 7 CFM per person. The outdoor air profile closely follows the occupancy profile throughout the day. There are, however, additional considerations. If the building has zone exhaust fans, those exhaust flows must be made up through the outdoor air system or through infiltration. If the exhaust airflow requirement is significant, the outdoor air flow profile may not reduce as much as expected, even with demand controlled ventilation enabled. This can result in a profile that looks closer to the baseline during certain periods. Other factors can also limit the effectiveness of demand controlled ventilation. For example, if the minimum outdoor air flow rate is hard-sized in the outdoor air controller, the system will not go below that value. Similarly, if a minimum outdoor air schedule or a minimum fraction of outdoor air schedule is applied, the system will not reset below those limits. These behaviors are documented in the EnergyPlus Input Output Reference Manual under Controller:MechanicalVentilation and Controller:OutdoorAir, which explain how minimum and maximum limits affect demand controlled ventilation. In summary, implementing demand controlled ventilation in OpenStudio is straightforward: select the air loop, go to the Control tab, and enable the demand controlled ventilation option. More advanced methods of modeling DCV exist, such as those based on measured contaminant levels like carbon dioxide, but those approaches are not covered here. This example demonstrates the basic and most commonly used approach to modeling demand controlled ventilation. Thank you. Please like and subscribe!
14. OpenStudio - EEMs 1: DCV Measure
In the previous episode, we discussed how to simulate Demand Controlled Ventilation (DCV). In this episode, we discuss how to quickly implement DCV across your entire model using the Building Component Library (BCL) measure "Enable Demand Controlled Ventilation". The measure can be downloaded through OpenStudio or can be downloaded directly from the BCL here: https://bcl.nrel.gov/content/3ff4b412-8689-4b11-a588-935c621dc97d
Hi all, we are back with another episode. In our previous episode we talked about how to implement demand controlled ventilation (DCV). In this episode, we are going to demonstrate an OpenStudio measure that will do all of that work for you. We have an office building and a storage building. This building has several different air loops in it, each with outside air systems. In the previous episode, we talked about implementing demand controlled ventilation using the toggle button. In this episode, we are going to use one of the measures from the Building Component Library (BCL). Go up to Components and Measures, then go to Find Measures. This can be found in the HVAC category under Ventilation. It is going to be this one here: “Enable Demand Controlled Ventilation.” Check it and then click the Download button. That will download it to your computer. Alternatively, you could go to the BCL website at bcl.nrel.gov, search for “demand,” scroll down, and find this same measure. You can click it to view a description of the measure, along with notes about implementing it. Now that we have downloaded the measure to our project, we can go to the Measures tab. Let us save this as another project. Go to HVAC, then Ventilation, and drag in the “Enable Demand Controlled Ventilation” measure. By doing this, we are keeping our base model unchanged. The measure will be implemented only for this run. We can always go back and delete it later if we want to keep our model unchanged. Alternatively, you could go up to Components and Measures and apply the measure directly, which would permanently modify the model with no way to revert. By dragging the measure into the workflow, we can run the simulation and see how it turns out. If we do not like the results, we can delete the measure and the original model will remain unchanged. Go to the Inputs section and select “Enable DCV.” Then go ahead and run the model. The model runs successfully. If we scroll back up, we can see messages describing how the measure was implemented. It shows that DCV was enabled for multiple air loops, such as FC-9, FC-5, and others. All air loops that had outside air systems now have demand controlled ventilation enabled. The summary indicates that DCV was enabled for 11 air loops. Next, we can compare the before and after models. Go to the Reports folder. We can see the baseline model and the model with DCV enabled. Comparing the two, we see that the DCV model uses less energy. The baseline energy use is 1,188,506 kBtu, and the DCV case is 941,274 kBtu. This results in an annual savings of 247,232 kBtu, which is approximately 261,000 MJ per year. If we assume a blended energy rate of about 2 cents per kBtu, this translates to nearly $5,000 USD in annual savings, simply by implementing demand controlled ventilation across the building. This demonstrates how quickly and easily you can enable DCV across an entire model using a BCL measure, without manually going into each individual air loop and toggling the control. Thank you. Please like and subscribe.
15. OpenStudio EnergyPlus - VRF/VRV Basics 1
In this video we will discuss the basic steps to simulate a Variable Refrigerant Flow (Variable Refrigerant Volume) system. We will do basic equipment sizing, import the EnergyPlus default VRF/VRV objects from the library, and modify them to suite our needs. This video uses a measure for getting additional information from the output reports; for more information, see this episode here: https://youtu.be/divAgzO2IUc
In the next several videos, we are going to discuss how to simulate variable refrigerant systems. For our test building, we have a very simple office building composed of two zones, and we are going to install a VRF system, also known as variable refrigerant flow or variable refrigerant volume (VRF/VRV). Right now, the model is set up to simulate using ideal air loads. To get an idea of what our sizing is going to be, we will first simulate the model. After the simulation, we will go to the Reports tab and look at the EnergyPlus results. In the table of contents, you will see several useful items, including the Zone Component Load Summary and the Facility Component Load Summary. These were added to the standard report using a custom measure, which I discussed in another video about extracting information from output reports. A link to that video is provided in the description. Next, we go to the Zones tab. This building has two zones. Selecting Thermal Zone 1 shows the cooling peak load components. The loads are broken down into categories such as people, lights, equipment, infiltration, ventilation, roof loads, and fenestration loads. At the bottom, you see totals for sensible load, delayed sensible load (based on the thermal mass of the building), latent load, and total load. These values are estimated by EnergyPlus as part of its initial load estimation process. Scrolling further down, you can see the actual simulation conditions. These show the time when the peak conditions occurred and the simulated results. You can see that the estimated values are quite close to the actual simulated values. Sensible load is calculated by combining the appropriate components and excluding latent load. EnergyPlus then applies a sizing factor, if specified, to determine the design sensible load used to size the equipment. The sizing factors are defined in the simulation settings, where you can specify heating and cooling sizing factors. These multipliers are applied to the simulated peak loads. EnergyPlus performs similar calculations for heating peak load components, starting with an estimate and then refining it through simulation. These results are what we will use to size our zone equipment and, ultimately, the outdoor equipment. We then go to the simulation folder and open the EnergyPlus report to review the thermal zone data. After that, we save the OpenStudio project as a new project called “Generic VRF.” Initially, we will use the standard library files that come with OpenStudio. Later, we will download manufacturer-specific equipment from the Building Component Library and compare the results. Next, we go to the HVAC Systems tab. At the top, we select VRF. Since there is no VRF system yet, we go to the library on the right, scroll to the VRF category, and drag a VRF system into the model. This is a generic library object provided by OpenStudio. Because we have two zones, we need two terminal units. We drag and drop two terminal units into the VRF system. From the “My Model” tab, we scroll down to find the thermal zones and assign Thermal Zone 1 to one terminal unit and Thermal Zone 2 to the other. At this point, everything is autosized, meaning EnergyPlus will handle all equipment sizing automatically. If we look back at the Thermal Zones tab, we can see that ideal air loads are no longer enabled and the zones are now served by the VRF terminal units. Next, we go to the Settings tab and select Simulation Control. Previously, we were only running sizing calculations. Now, we select “Run Simulation for Weather File Run Periods” to run a full-year simulation. After running the simulation successfully, we review the reports again. Looking at the Coil Sizing Summary, we notice that the VRF terminal units use a single coil for both heating and cooling. EnergyPlus sizes the coil based on the most extreme load, whether heating or cooling. In this case, the climate is heating-dominated, so the coil is sized based on the heating peak load. Cooling is not separately sized because its requirement is lower. These autosized values represent optimized sizing results from EnergyPlus. In reality, manufacturer equipment does not come in these exact sizes. Actual equipment capacities are often slightly higher to ensure performance requirements are met. For example, a Mitsubishi indoor unit might provide 30,000 BTUH of cooling and 34,000 BTUH of heating, which is higher than the EnergyPlus autosized values. Because of this, it is important not to rely solely on default or autosized values when doing energy modeling. Instead, we should adjust the model to better reflect real-world equipment performance. Going back to the HVAC Systems tab, we edit the VRF terminal units accordingly. For the first terminal unit, we hard-size the airflow to match the Mitsubishi equipment: 1,271 CFM for maximum heating and cooling, and 883 CFM for minimum flow when there is no heating or cooling demand. Outdoor air flow rates remain unchanged, as they are controlled by zone and occupancy parameters. We also assign the controlling thermostat location to the appropriate thermal zone. We review the fan pressure rise and leave it at 0.2 inches of water column, which is reasonable for a small ducted system. The maximum flow rate is set to 1,271 CFM. For the cooling coil, we input a rated cooling capacity of 30,000 BTUH and set the rated airflow rate to 1,271 CFM. For the heating coil, we input a rated heating capacity of 34,000 BTUH with the same airflow rate. We repeat this process for the second terminal unit, using a different type of indoor unit to demonstrate variation. Next, we examine the outdoor unit. EnergyPlus autosized it at approximately 50,000 BTUH, but actual manufacturer equipment may not match this exactly. We select a Mitsubishi outdoor unit with a rated cooling capacity of 72,000 BTUH and heating capacity of 80,000 BTUH. We input the gross rated cooling capacity and convert the EER to a coefficient of performance, which comes out to approximately 3.8. For heating, we input the rated heating capacity and calculate the heating capacity sizing ratio as 80,000 divided by 72,000, or about 1.11. The rated heating COP is approximately 4.31. Other parameters, such as minimum and maximum operating temperatures, are left at default values since we are modeling generic equipment. We note that this system does not include heat recovery, so we leave that option disabled. We adjust the default vertical piping height to a more realistic value of 15 feet for a single-story building. The remaining parameters are left at their default values. After running the simulation again, we review the results and confirm that the building is using energy as expected. We check the eplusout.err file to ensure there are no severe errors. The warnings that appear are common and generally indicate that the default EnergyPlus performance curves do not perfectly align with the manufacturer-rated conditions we entered. This is expected when using generic curves with specific equipment data. EnergyPlus uses rated conditions as a reference point, or unity (1), and extrapolates performance above or below those conditions using performance curves. When rated conditions do not align perfectly with the default curves, warnings are generated. These warnings are informational and typically do not invalidate the simulation results. With no severe errors present, the model is considered valid. This completes the implementation of a variable refrigerant flow system in OpenStudio. In the next episode, we will download manufacturer-specific performance curves from the Building Component Library, install them in the model, and compare the results against the generic equipment. That is it for today. Thank you. Please like and subscribe.
16. OpenStudio EnergyPlus - VRF/VRV Basics 2
In this video we will clean up a couple if items we missed in the previous episode that discussed how to model a VRF/VRV system using the generic performance curves from EnergyPlus.
Hello all. We are back. There are a few cleanup items that we need to do. A couple of things that we missed last episode. One is a major issue that has to do with VRF systems. Let us go take a look at our generic VRF system that we modeled in the last episode. We will take a look at the outdoor unit. One thing that we missed on the last episode was the compressors. The outdoor unit that we are trying to simulate, using the generic performance curves, is this Mitsubishi unit. It it only has one hermetic compressor. We are going to take a look at that. We will scroll down to the compressors for this. The generic model has three compressors in it. The one we are trying to simulate only has one. So, that is going to make a significant difference in the simulation because the Mitsubishi equipment can only turn down so far. The generic equipment, if it had three compressors, it would have a significantly higher turndown. The next part of that is ratio of compressor size to total compressor capacity. We only have one compressor, so that ratio will be 1.0. In contrast, if you had three compressors, one divided by three is is is 33% (0.33). The next correction has to do with the defrost strategy. The default generic defrost strategy is resistive heat. Unfortunately, for whatever reason, the generic defrost capacity is basically zero watts. You can see this right here. It does not make any sense. To correct that, we can simply put autosized here. The next thing that we need to talk about is the big shakeup with VRF systems. This goes back quite a number of years. Let us see. Where do I start. VRF systems were introduced to the USA over a decade ago. AHRI cobbled together a performance rating standard for VRF systems. They borrowed the standard from residential heat pumps. There are a number of performance differences between residential heat pumps and VRF systems. Therefore, the standard was not an appropriate standard to use for VRF. But they used it any way. The VRF systems were looking very promising. They looked like they were supposed to perform really well. Over the years, it started to dawn on people that they were not performing as they should. The VRF/VRV systems were coming up significantly short of of where they were supposed to be. You can see a number of these test cases. These are systems that were installed and measured for performance; on this chart. This is the line where they were supposed to be performing. So, that was one big issue. Another issue; engineers were using these efficiency ratings and comparing them to other types of equipment. This is something you really should not do. It is just not equivalent. These AHRI standards are designed for comparing oranges to oranges. They are not designed for comparing oranges to apples. To continue...people were comparing them to hydronic systems. The hydronics industry started realizing that. They cried foul. They put together a white paper discussing this. They are saying; these these VRF systems are are claiming that they can do this. But, because of the way AHRI 1230 was put together, they are not being tested correctly. The error is about 47%, which is a significant difference. So, the end result of this was that AHRI revised their standard; they revised the testing procedure for these ratings. The result is that the VRF systems are no longer as efficient as they claimed. Their rated efficiency is not as quite as good as as they were originally claimed to be. The federal efficiency standards were revised. Some of the energy codes changed as a result of that. For example, California sort of threw up their hands. They said "just look at the federal efficiency standards". We look at the federal code and make comparisons. We can see that, for heating performance, the VRF systems had an an efficiency drop of about 9%. For cooling it was about 3%. Not quite the 47% that the hydronics industry was claiming. They are obviously that is a little bit biased. So, we are going to adjust this generic system. This generic system was originally modeled back in 2010. As a result, it has that bias included. To adjust for that bias, we need to change these coefficients of performance. For cooling the deduction is actually 3%. We need to reduce it by 3%. The cooling COP for this generic VRF/VRV is uh 3.8. We will multiply that by 97%. So, in reality, the COP is more like 3.686. For heating, back in 2010, the rated coefficient of performance was 4.31. We need to drop that down by about 9%. We calculate 4.31 times 91%. That drops us down to 3.922. Yeah. That that will help us account for that lack of performance. The performance that they actually perform at. It will help us account for the equipment performances back in 2010, when this when this model was put together. So, those are the three items that we need to adjust. Let us go ahead and run the simulation. We will make a comparison of the 2010 generic VRF curves to an actual generci system in 2024. The simulation has completed successfully. We will take a look at the performance. We have about 125,000 KBTU for the newer 2024 version (the updated rated version). If we look at the one we did last episode...it was 117,000 KBTU. So, you can see, there is a a performance difference. So, that is something that you should account for if you are going to be modeling VRF/VRV systems using the generic performance curves that come from OpenStudio. The next episode we will discuss how to download actual equipment performance curves from the building component library. It will be fore this Mitsubishi system that we are discussing. We will even download an LG system and do a comparison side-by-side. Thank you! Please like and subscribe.
17.OpenStudio EnergyPlus - VRF/VRV Mitsubishi, LG, Daikin
In this video we will continue the discussion on simulating a Variable Refrigerant Flow (Variable Refrigerant Volume) system. We will download some brand (Mitsubishi, LG, and Daikin) equipment performance data from the Building Component Library (BCL) and compare to the performance of the generic objects in EnergyPlus.
We are back and this time we are going to model the Mitsubishi VRF system. First, we save this as a new file and then download the Mitsubishi library from the Building Component Library by searching for Mitsubishi and downloading the zip file. Inside the zip file is an XML description, an OSM file, and a PDF with notes to the energy modeler. We copy the OSM and PDF files into the project folder, then go to preferences and add the downloaded OSM file as a default library. After that, we delete the previously modeled generic VRF system and go to the library tab to locate the Mitsubishi VRF system, specifically the PUHY EP72 option, which provides ducted and non-ducted choices. We review the PDF notes to understand the naming conventions, which include ducted versus non-ducted efficiency ratings and standard versus high-heat options. For simplicity and based on the climate, we choose the non-ducted high-heat option. Next, we add the required terminal units, such as the PFY P30 and PKFY P30, and assign them to the appropriate thermal zones. We also assign the master thermostat location and select an always-available schedule. Once the thermal zones are connected to the terminal units, we run the simulation. After completion, we review the error output file, which contains several warnings. These include fan system discrete speed warnings and airflow-per-capacity warnings, which are common for VRF systems in EnergyPlus. These warnings are mainly guideline checks and are not considered critical, as AHRI standards do not impose strict limits on these values. Some warnings indicate that the VRF heat pump operating temperature limits were exceeded, or that the system appeared to be heating or cooling under unusual outdoor temperature conditions. These issues occurred during the warm-up period while EnergyPlus was performing equipment and zone sizing, not during the actual annual simulation run, so they are not a major concern. There is also a warning about a terminal unit part load ratio exceeding limits, which has been reported as a bug and may occur because terminal units can exceed a part load ratio of one. Overall, despite these warnings, the simulation completes successfully. We then review the simulation reports and compare the Mitsubishi system results with the generic VRF system modeled earlier. The generic system used about 125,000 kBTU per year, while the Mitsubishi system used approximately 118,000 kBTU, indicating slightly better performance. We also compare unmet hours for heating and cooling. Cooling unmet hours are negligible for both systems, while heating unmet hours are similar when looking at unmet degree hours. Occupant-weighted unmet hours are higher for the Mitsubishi system, possibly due to higher airflows or comfort-related factors, but overall the performance between the two systems is quite comparable. Next, we review the notes to the energy modeler for both the terminal units and the outdoor unit. For ducted units, it is important to verify that the static pressure assumptions match the project conditions, and adjustments can be made by editing the fan design pressure rise in the VRF system settings. Additional notes discuss outdoor unit installation considerations, such as adjusting minimum and maximum outdoor temperatures if the unit is installed below indoor units, and limitations in EnergyPlus for modeling certain features like drain pan heaters or waste heat recovery. Several performance curves are shown, comparing Mitsubishi-specific curves to generic EnergyPlus curves, highlighting differences in capacity and efficiency across temperature ranges and part load ratios. Finally, we extend the comparison by modeling other manufacturers’ VRF systems, including Daikin and LG, using the same procedure of downloading equipment from the Building Component Library, installing it, and running simulations. The Daikin system shows annual energy use of around 132–133 kBTU, the LG system about 123 kBTU, compared to 124 kBTU for the generic system and 117 kBTU for Mitsubishi. Performance varies by system and climate, and additional factors such as unmet hours can be reviewed for deeper analysis. This demonstrates how to use manufacturer-specific performance data in OpenStudio and compare it against generic VRF models. Thank you. Please like and subscribe.
18. OpenStudio EnergyPlus - Measure Writing Using AI
In this video we will use Artificial Intelligence (Claude AI) to write a custom OpenStudio measure. We will use the Apply Measure Now command to transform our OpenStudio model, run the simulation, and check out the results. The measure created in this tutorial is available on the Building Component Library here: https://bcl.nrel.gov/content/a1b2c3d4-e5f6-7890-abcd-ef1234567890
All right, we are back. This time we are going to talk about custom measure writing in OpenStudio. We are going to write a custom measure, and this time we are going to use AI to help us do that by using Claude to write the code. We start with a very simple shoebox model that currently has a packaged rooftop air conditioner system installed. Our goal is to replace this with an air-to-water heat pump system. To begin, we delete the existing air loop and add a fully hydronic system instead, which creates both a chilled water loop and a heating water loop in the model. Once the zone is assigned, we can see that the model now contains these two hydraulic loops. Looking at the chilled water loop, we see that it currently uses a water-source condenser connected to a cooling tower, while the heating water loop uses a simple hot water boiler. What we actually want, however, is an air-source heat pump system. At the moment, OpenStudio primarily supports water-to-water heat pumps using equation-fit objects, but it does not directly support air-source heat pumps in the same way. To model an air-source heat pump, we need to use EIR-formulated heat pump objects, specifically HeatPump:PlantLoop:EIR:Cooling and HeatPump:PlantLoop:EIR:Heating. Because this requires swapping multiple components in the plant loops, we decide to write a custom measure to automate the process. We then go to Claude and carefully formulate a prompt for writing the custom measure. The prompt specifies that the measure should be applied using “Apply Measure Now.” It should delete the existing condenser water plant loop with a CoolingTower:SingleSpeed, replace the existing Chiller:Electric:EIR with an air-source HeatPump:PlantLoop:EIR:Cooling, and modify the heating water loop by adding an air-source HeatPump:PlantLoop:EIR:Heating in parallel with the existing Boiler:HotWater. We also ask Claude to generate the required measure files, including the Ruby measure code, a measure.xml file, and a readme.md file, since all three are required for a valid OpenStudio measure. Claude completes the task and even provides optional arguments for the measure. We download all the generated files and place them into a new folder inside the My Measures directory, making sure the folder name matches the measure name. We then return to OpenStudio, go to Apply Measure Now, and locate the new measure, which appears under the HVAC and cooling category. We leave the inputs set to autosized and apply the measure. The output messages indicate that the condenser loop was deleted, the electric chiller was replaced with an air-source cooling heat pump, and heating capacity was added in parallel with the existing boiler. The measure runs successfully, and we accept the changes. After applying the measure, we review the updated plant loop configuration. The new air-source heat pump components appear on the chilled water and heating water loops. There is some uncertainty about whether the heat pump is located on the correct side of the loop, since four-pipe system schematics typically place cooling heat pumps on the supply side. This is something that may need further verification by reviewing the Input Output Reference manual and running test simulations to catch any configuration errors. Finally, we run the EnergyPlus simulation to verify the results. The model completes without any severe errors, and only minor warnings appear, such as schedule and pump efficiency messages that do not appear to affect the main system behavior. The EnergyPlus results show that the building is using energy as expected, indicating that the measure likely worked. While additional testing and validation are recommended, this demonstrates how AI—specifically Claude—can be used to rapidly create a custom OpenStudio measure that automates complex system changes. Thank you. Please like and subscribe.

