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

Matt Koch's profile - activity

2023-11-18 05:28:19 -0500 received badge  Popular Question (source)
2022-03-18 14:34:29 -0500 received badge  Popular Question (source)
2021-08-18 16:35:06 -0500 received badge  Popular Question (source)
2021-04-17 09:28:47 -0500 received badge  Popular Question (source)
2021-01-11 15:08:31 -0500 marked best answer VRF & DOAS Design & Operation

So, I tried the VRF & DOAS measure from BCL in OpenStudio 2.4. I have a few questions.

1) Where in the EnergyPlus output, can I find the VRF outdoor unit capacity (similar to an RTU capacity)? Is the only way to get these to add some VRF-related output variables to the OpenStudio 2.4 reports section and then look at design day numbers in DView or ResultsViewer?

2) On the DOAS side of things, i.e. the "traditional" air loop, rather than the VRF structure, each zone has a field "Account for Dedicated Outdoor Air System", which appears to be set to "No" by default. But since VRF and DOAS do not "communicate" with each other shouldn't this be set to "Yes", so that the outdoor air coming into the zone is viewed as a (mild) load on the VRF terminal for that zone? The effect may be small if the OA is space neutral, but depending on what the various zones are doing, I could imagine OA temperature being off from zone set point by a few degrees?

3) I am doing a ASHRAE 90.102997 Appendix G analysis, requiring to compare a "System 6" (RTUs with PFPB) to a VRF & DOAS system. I always thought that the latter is much more efficient than the former, but I get much more annual cooling and heating energy for VRF & DOAS than for RTU & PFPB. Something is amiss, I am sure. Anyone seen this before?

2021-01-10 16:47:36 -0500 marked best answer WSHP Air to Water - how to insert into plant or air loop?

So, I am trying to insert a "Wtr-to-Air HP Elec Backup" into my model, either a plant loop or an air loop, but neither will accept it when dragging it over. Both pop up the error "The selected component is not allowed at this location."

image description

image description

I have looked at the WSHP measures, and at least one of them seems to work, though it makes little sense to me. So I was just wanting to see if I can create such a system from scratch. Any clues would be appreciated.

2021-01-10 16:47:36 -0500 received badge  Self-Learner (source)
2020-11-26 11:41:42 -0500 received badge  Popular Question (source)
2020-01-07 19:50:02 -0500 marked best answer OpenStudio Results measure: Optional not initialized.

OpenStudio 2.9.1 on Windows 7 Pro just tossed this error at me from the OpenStudio Results measure: "Interior Lighting Summary section failed and was skipped because: Optional not initialized. Detail on error follows.". Has anyone seen this before? Any fixes? Does this mean that other results from this measure may be suspect? Are the EnergyPlus results still trustworthy? I think I am still using a measure version from before 2.9.1 - Could that be a problem?

2020-01-07 19:49:44 -0500 answered a question OpenStudio Results measure: Optional not initialized.

David, as usual, your insight is brilliant and spot-on. Thanks for saving me from udder and complete failure. I had to r

2019-12-31 20:22:29 -0500 commented answer OpenStudio Results measure: Optional not initialized.

Thank you David. Yes, I thought so about the object names as well, but really, other than one or more dashes and some nu

2019-12-28 19:36:49 -0500 asked a question OpenStudio Results measure: Optional not initialized.

OpenStudio Results measure: Optional not initialized. OpenStudio 2.9.1 on Windows 7 Pro just tossed this error at me fro

2019-10-23 04:17:34 -0500 received badge  Popular Question (source)
2019-09-02 18:21:19 -0500 commented answer How to normalize experimental data to a performance curve?

I just used the AEDG VRF with DOAS measure. It generated one outdoor unit and 21 indoor units. So far, so good. Furtherm

2019-07-27 17:20:30 -0500 commented answer import ZoneHVACTerminalUnitVariableRefrigerantFlow from IDF file

Thanks Matthew! I have been away from OS/EP for a while. I just saw that EP is moving from IDF to epJSON altogether in t

2019-07-21 17:25:43 -0500 commented question import ZoneHVACTerminalUnitVariableRefrigerantFlow from IDF file

... and I guess I was just wondering whether that is by design or by bug? I apologize if my original question was not ph

2019-07-21 17:24:03 -0500 commented question import ZoneHVACTerminalUnitVariableRefrigerantFlow from IDF file

So, I know that the reverse translator cannot do much more than a few curves. That is why I am going to getString, getDo

2019-07-21 17:19:54 -0500 commented answer import ZoneHVACTerminalUnitVariableRefrigerantFlow from IDF file

Thank you kindly for your reply, Luis. You are correct, my makecoolingcoil function does not look like it would create a

2019-07-21 17:16:26 -0500 commented answer import ZoneHVACTerminalUnitVariableRefrigerantFlow from IDF file

Thank you kindly for your reply, Matthew. Unfortunately, I would start from scratch with JSON, while I have gone a bit o

2019-07-14 15:07:57 -0500 asked a question import ZoneHVACTerminalUnitVariableRefrigerantFlow from IDF file

import ZoneHVACTerminalUnitVariableRefrigerantFlow from IDF file I have a question specific to OpenStudio::Model::ZoneHV

2019-06-24 08:24:59 -0500 marked best answer results check on variable primary loop

I am simulating a test case where I impose a pre-calculated load profile upon a variable primary loop with water-cooled chiller. There is only one chiller, one cooling tower, one variable speed chilled water pump and one constant speed condenser water pump. In the OpenStudio HVAC diagram. the chilled water pump is at the chiller inlet and the condenser water pump is at the cooling tower outlet. I am reporting the chiller's evaporator and condenser mass flow rates and inlet and outlet temperatures and the cooling tower's mass flow rate and inlet and outlet temperatures. I am also reporting the chiller's evaporator and condenser as well as the cooling tower's heat transfer rates and the pumps' heat gain rates. The idea is obviously to see if everything matches up for each of the 8,760 h.

Much of it it does. However, I see major discrepancies between the cooling tower heat transfer rate and the sum of the condenser heat transfer rate and condenser water pump heat gain rate. I would have thought the sum of the latter two should have been equal to the former. Furthermore, I see minor discrepancies between the evaporator heat transfer rate and the sum of the load profile heat transfer rate and chilled water pump heat gain rate. Again, I would have thought the sum of the latter two should have been equal to the former.

Moreover, the evaporator inlet temperature is equal to the chilled water pump outlet temperature, as I would have expected. However, the Condenser inlet temperature is slightly different from the condenser water pump outlet temperature, when I would have thought they should be the same. What's more, the condenser water pump outlet temperature is often less than the cooling tower outlet temperature, when I thought it should be greater than that because this pump sits at the outlet of the cooling tower and should add heat. Finally, the condenser outlet temperature never equals the tower inlet temperature.

Also, using the difference between cooling tower inlet and outlet temperature as the range and the difference between cooling tower outlet temperature and wet bulb temperature as the approach, with the air flow rate ratio as provided by the calculation, I would have expected that the CoolTools approach temperature would be equal to this approach temperature at least during some periods, where the cooling tower operates in forced convection mode. However, I find this to be the case at no time.

Certainly I am missing something, such as a perhaps a thermal storage effect. However, I did this both with "Rate" and "Energy" output variables, thinking that the "Energy" output variables might smooth out any rate effects, but I get the same as if I multiplied the "Rate" output variables with 3600.

Any insight would be appreciated.

2019-03-25 07:15:38 -0500 marked best answer Set Output Table to IP Units

Upon trying to run the "Set Output Table to IP Units" EnergyPlus measure in OpenStudio, I get the following error (sorry, I do not know how to format this). Does anyone know what might be wrong? The "eplustbl.html" file in the "run" directory does seem to show IP units after all.

  [08:23:01.914749 WARN] IP units were provided, SI units were expected. Leave EnergyPlus tabular results in SI units to     run this report.
 [08:23:01.928749 ERROR] Optional not initialized
    C:/Users/MattK/AppData/Local/Temp/OpenStudioApp.A12740/resources/measures/OpenStudioResults/measure.rb:276:in `get'
    C:/Users/MattK/AppData/Local/Temp/OpenStudioApp.A12740/resources/measures/OpenStudioResults/measure.rb:276:in `run'
    :/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/util/measure.rb:454:in `apply_measure'
    :/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/util/measure.rb:74:in `block in apply_measures'
    :/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/util/measure.rb:32:in `each_index'
    :/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/util/measure.rb:32:in `apply_measures'
    :/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/jobs/run_reporting_measures.rb:85:in `perform'
    :/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/run.rb:261:in `step'
    :/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/run.rb:210:in `run'
    :/openstudio_cli.rb:804:in `execute'
    :/openstudio_cli.rb:620:in `execute'
    :/openstudio_cli.rb:1517:in `<main>'
    eval:85:in `eval'
    eval:85:in `require_embedded_absolute'
    eval:70:in `block in require'
    eval:64:in `each'
    eval:64:in `require'
    eval:2:in `<main>'
[08:23:01.929749 ERROR] :/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/util/measure.rb failed with message Runner error :/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/util/measure.rb failed with Optional not initialized, C:/Users/MattK/AppData/Local/Temp/OpenStudioApp.A12740/resources/measures/OpenStudioResults/measure.rb:276:in `get'
C:/Users/MattK/AppData/Local/Temp/OpenStudioApp.A12740/resources/measures/OpenStudioResults/measure.rb:276:in `run'
:/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/util/measure.rb:454:in `apply_measure'
:/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/util/measure.rb:74:in `block in apply_measures'
:/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/util/measure.rb:32:in `each_index'
:/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/util/measure.rb:32:in `apply_measures'
:/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/jobs/run_reporting_measures.rb:85:in `perform'
:/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/run.rb:261:in `step'
:/ruby/2.2.0/gems/openstudio-workflow-1.3.1/lib/openstudio/workflow/run.rb:210:in `run'
:/openstudio_cli.rb:804:in `execute'
:/openstudio_cli.rb:620:in `execute'
:/openstudio_cli.rb:1517:in `<main>'
eval:85:in `eval'
eval:85:in `require_embedded_absolute'
eval:70:in `block in require'
eval ...
(more)
2019-02-15 19:06:20 -0500 commented answer VRF & DOAS - complete model?

Furthermore, the engineering manual for Daikin FXMQ-PBVJU contains capacity tables for the indoor (not outdoor) units: h

2019-02-15 19:01:59 -0500 commented answer VRF & DOAS - complete model?

Thanks rraustad, and sorry for the tardy reply - unfortunately, I can pursue this only part-time. Yes, I understand abou

2019-02-10 14:09:48 -0500 commented answer VRF & DOAS - complete model?

So, I spent yesterday and today trying to compile a performance map per FSEC for a Daikin REYQ336TAYDU. I have gotten po

2019-02-06 19:10:16 -0500 commented answer VRF & DOAS - complete model?

So, is that to say that: 1) the FSEC document shows "the right way" to do VRF (even in OpenStudio) 2) the "VRF+DOAS sy

2019-01-18 21:55:11 -0500 commented answer VRF & DOAS - complete model?

Thank you kindly, mdahlhausen! I created a mock-up model and did a VRF-DOAS on the 1st version per the measure you sugge

2019-01-17 18:37:40 -0500 asked a question VRF & DOAS - complete model?

VRF & DOAS - complete model? I am just curious. There are a lot of exchanges on VRF with DOAS for OpenStudio/EnergyP

2018-12-24 13:25:32 -0500 answered a question Strange result after applying VRFwithDOAS measure

I have tried - so far in vain - for many months to compare a "VRF with DOAS" system to a "RTU with integrated OA" system

2018-11-01 12:11:12 -0500 marked best answer OpenStudio weather file design days

The uploaded file below shows the OpenStudio Site tab, and at the bottom of it a number of design days. I suppose I only need one (the worst case) design cooling day and one (the worst case) design heating day, yet there are three of each for this (San Antonio International Airport) weather file.

Is there a recommendation as to which of the many to keep - can I delete the others?

The cooling design days are all 0.4%, but then there are DB=>MWB, DP=>MDB, Condns Enth=>MDB and Condns WB=> MDB. The heating design days are all 0.4% as well, but then there are Condns DB, Condns WS=>MCDB and Condns DP=>MCDB.

Weather.png

2018-10-18 17:54:47 -0500 commented answer How to connect a ChillerAbsorption to a hot water loop?

I cannot make the Chiller:Absorption:Indirect work. Yes, I can pull it from the Library tab into my chilled water loop.

2018-09-13 08:44:12 -0500 marked best answer DView vs. ResultsViewer

This is just a request to see if maybe ResultsViewer could be kept on/reinstated for new OpenStudio releases? DView takes forever to open and when it does, it has very limited capabilities. In contrast, ResultsViewer allows for very clear selection of data to be shown and also has a data picker, plus it is a lot faster even with large data files. One particular example I recently had to deal with is design day simulation runs. In ResultsViewer, I can easily pick the design day I want. In DView, I just got shown one day and it was not clear which day that was and how to select other days, if that were even possible.

2018-08-11 21:34:01 -0500 commented question VRF & DOAS Design & Operation

I finally found time to graft the VRF systems from EnergyPlus-8.7.0\ExampleFiles\VariableRefrigerantFlow_5Zone.idf into

2018-06-24 15:38:54 -0500 marked best answer remove curve via openstudio measure

I have created a custom VRF systems & terminals measure for Daikin units. I have curves only where absolutely necessary, and where possible, I am referring to common curves. For example, two different AirConditioner:VariableRefrigerantFlow objects can have the same CoolCapFT curve, so there should not be a need to create a CoolCapFT 1 curve for one and CoolCapFT curve 2 for the other - it unnecessarily clutters the .osm file.

Nevertheless, it seems that upon creation of a, for example, AirConditioner:VariableRefrigerantFlow, OpenStudio automatically creates all kinds of curves, even though later on I reassign a consistent set of curves and these curves then become obsolete.

So I thought I'd just develop a curves clean-up measures. I noticed that these annoyance curves all have similar names and then an incremental counter appended to them, so I just look for curves that contain that common name sub-string and remove them. The curves are definitely recognized, but for some reason, not removed from the .osm file when I run the measure, though.

For example, in measure.rb, I do the following:

curve_names = []
curve_names << "VRFCoolCapFT"
curve_names << "VRFCoolCapFTBoundary"
curve_names << "VRFCoolCapFTHi"
curve_names << "VRFCoolEIRFT"
curve_names << "VRFCoolEIRFTBoundary"
curve_names << "VRFCoolEIRFTHi"
curve_names << "CoolingEIRLowPLR"
curve_names << "CoolingEIRHiPLR"
curve_names << "CoolingCombRatio"
curve_names << "CoolingLengthCorrectionFactor"

curve_names << "VRFHeatCapFT"
curve_names << "VRFHeatCapFTBoundary"
curve_names << "VRFHeatCapFTHi"
curve_names << "VRFHeatEIRFT"
curve_names << "VRFHeatEIRFTBoundary"
curve_names << "VRFHeatEIRFTHi"
curve_names << "HeatingEIRLowPLR"
curve_names << "HeatingEIRHiPLR"
curve_names << "HeatingCombRatio"
curve_names << "HeatingLengthCorrectionFactor"

curve_names << "VRFTUCoolCapFT"
curve_names << "VRFACCoolCapFFF"
curve_names << "VRFTUHeatCAPFT"
curve_names << "VRFACHeatCapFFF"

curve_names << "Fan On Off Power Curve"
curve_names << "Fan On Off Efficiency Curve"

deletecurves(runner, model, curve_names)

And that last function is defined as follows:

def deletecurves(runner, model, curve_names)
  biquadratic_curves = model.getObjectsByType(OpenStudio::Model::CurveBiquadratic::iddObjectType)
  biquadratic_curves.each do |biquadratic_curve|
    biquadratic_curve_name = biquadratic_curve.name.get
    curve_names.each do |curve_name|
      if biquadratic_curve_name.include? curve_name then
        puts "Will delete Biquadratic: #{biquadratic_curve.name}\n"
        biquadratic_curve.remove
      end
    end
  end

  linear_curves = model.getObjectsByType(OpenStudio::Model::CurveLinear::iddObjectType)
  linear_curves.each do |linear_curve|
    linear_curve_name = linear_curve.name.get
    curve_names.each do |curve_name|
      if linear_curve_name.include? curve_name then
        puts "Will delete Linear: #{linear_curve.name}\n"
        linear_curve.remove
      end
    end
  end

  quadratic_curves = model.getObjectsByType(OpenStudio::Model::CurveQuadratic::iddObjectType)
  quadratic_curves.each do |quadratic_curve|
    quadratic_curve_name = quadratic_curve.name.get
    curve_names.each do |curve_name|
      if quadratic_curve_name.include? curve_name then
        puts "Will delete Quadratic: #{quadratic_curve.name}\n"
        quadratic_curve.remove
      end
    end
  end

  cubic_curves = model.getObjectsByType(OpenStudio::Model::CurveCubic::iddObjectType)
  cubic_curves.each do |cubic_curve|
    cubic_curve_name = cubic_curve.name.get
    curve_names.each do |curve_name|
      if cubic_curve_name.include? curve_name then
        puts "Will delete Cubic: #{cubic_curve.name}\n"
        cubic_curve.remove
      end
    end
  end

  exponent_curves = model.getObjectsByType(OpenStudio::Model::CurveExponent::iddObjectType)
  exponent_curves.each do |exponent_curve|
    exponent_curve_name = exponent_curve.name.get
    curve_names.each do |curve_name|
      if exponent_curve_name.include? curve_name then
        puts "Will delete Exponent: #{exponent_curve.name}\n"
        exponent_curve.remove
      end
    end
  end

I'd appreciate any hints for resolving this issue.

2018-06-24 15:38:50 -0500 commented answer remove curve via openstudio measure

Thank you so much, y'all. I finally found some time to play with this, and yes, model.removeObject(curve.handle) does se

2018-06-15 07:27:08 -0500 commented answer remove curve via openstudio measure

Thank you, mdahlhausen. I copied your method, but unfortunately, it still does not delete those curves, even though it c

2018-06-14 13:42:54 -0500 edited question remove curve via openstudio measure

remove curve via openstudio measure I have created a custom VRF systems & terminals measure for Daikin units. I have

2018-06-14 13:42:33 -0500 asked a question remove curve via openstudio measure

remove curve via openstudio measure I have created a custom VRF systems & terminals measure for Daikin units. I have

2018-06-13 15:02:52 -0500 marked best answer does openstudio reverse translator only collect curve objects?

So, just curious. The file vrf_library.idf contains a whole bunch of EnergyPlus objects.

However, I observe the following:

library = OpenStudio::Workspace::load("#{File.dirname(__FILE__)}/resources/vrf_library.idf").get

# UNFORTUNATELY, the following ONLY captures curves from the library file!!!

reverse_translator = OpenStudio::EnergyPlus::ReverseTranslator.new
library_model = reverse_translator.translateWorkspace(library)

puts "Start Translation!"
puts library_model
puts "Stop Translation"

library_curve_linear = library_model.getObjectByTypeAndName(OpenStudio::Model::CurveLinear::iddObjectType,"OS Default Cooling Cycling").get.to_CurveLinear.get
library_curve_cubic = library_model.getObjectByTypeAndName(OpenStudio::Model::CurveCubic::iddObjectType,"OS Default Heating Combination").get.to_CurveCubic.get
library_curve_biquadratic = library_model.getObjectByTypeAndName(OpenStudio::Model::CurveBiquadratic::iddObjectType,"OS Default HR Capacity").get.to_CurveBiquadratic.get

puts "Start Curve Linear!"
puts library_curve_linear
puts "Stop Curve Linear!"

puts "Start Curve Cubic!"
puts library_curve_cubic
puts "Stop Curve cubic!"

puts "Start Curve BiQuadratic!"
puts library_curve_biquadratic
puts "Stop Curve BiQuadratic!"

The line "puts library_model" literally only prints curves, none of the other objects. Is that an inherent limitation in OpenStudio?

2018-06-13 13:30:57 -0500 asked a question packaged equipment fan energy

packaged equipment fan energy So, I am aware that most compliance codes/standards require breaking out fan energy consum