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

Revision history [back]

I'm working on on adding a report for solar collectors to the OpenStudio Results measure but can't tell you when that's going to be completed as I have other things on my plate.

For now, I suggest doing this:

  • Report the area of the collectors that you integrated in your model.
  • Add two output variables to your model: Solar Collector Efficiency" and Solar Collector Heat Transfer Energy. You can report it annually (set reporting frequency to RunPeriod) or maybe monthly if you want more detail. That will give you the average efficiency of the solar collector and the total heat transfer by the collector and will allow you to double check that your results are correct and physically sound.

If you only added a couple of collectors, reporting the area of the collectors can be done easily manually using the openstudio application, otherwise just write a little piece of code like so (I'm writing on the go without trying it, so excuse any typos)

all_collectors = (model.getSolarCollectorFlatPlatePhotovoltaicThermals +
                  model.getSolarCollectorIntegralCollectorStorages + 
                  model.getSolarCollectorFlatPlateWaters)

total_area_m2 = 0
n_sc = 0

all_collectors.each do |sc|
    # Skip collectors that aren't linked to a plant loop or don't have a surface
   next if sc.surface.empty?
   next if sc.plantLoop.empty?
   n_sc += 1
   area_m2 = sc.surface.get.netArea
   total_area_m2 += area_m2
end

total_area_ft2 = OpenStudio::convert(total_area_m2, "m^2", "ft^2").get

puts "There area #{n_sc} collectors properly defined, for a total area of #{OpenStudio.toNeatString(total_area_m2, 0, true)} m^2 // #{OpenStudio.toNeatString(total_area_ft2, 0, true)} ft^2"

I'm working on on adding a report for solar collectors to the OpenStudio Results measure but can't tell you when that's going to be completed as I have other things on my plate.

For now, I suggest doing this:

  • Report the area of the collectors that you integrated in your model.
  • Add two output variables to your model: Solar Collector Efficiency"Efficiency and Solar Collector Heat Transfer Energy. You can report it annually (set reporting frequency to RunPeriod) or maybe monthly if you want more detail. That will give you the average efficiency of the solar collector and the total heat transfer by the collector and will allow you to double check that your results are correct and physically sound.

If you only added a couple of collectors, reporting the area of the collectors can be done easily manually using the openstudio application, otherwise just write a little piece of code like so (I'm writing on the go without trying it, so excuse any typos)

all_collectors = (model.getSolarCollectorFlatPlatePhotovoltaicThermals +
                  model.getSolarCollectorIntegralCollectorStorages + 
                  model.getSolarCollectorFlatPlateWaters)

total_area_m2 = 0
n_sc = 0

all_collectors.each do |sc|
    # Skip collectors that aren't linked to a plant loop or don't have a surface
   next if sc.surface.empty?
   next if sc.plantLoop.empty?
   n_sc += 1
   area_m2 = sc.surface.get.netArea
   total_area_m2 += area_m2
end

total_area_ft2 = OpenStudio::convert(total_area_m2, "m^2", "ft^2").get

puts "There area #{n_sc} collectors properly defined, for a total area of #{OpenStudio.toNeatString(total_area_m2, 0, true)} m^2 // #{OpenStudio.toNeatString(total_area_ft2, 0, true)} ft^2"

I'm working Following your question I just realized that even the eplustbl.htm has virtually no useful information on solar collectors. I've decided to work on on adding a report for solar collectors to the OpenStudio Results measure but can't tell you when that's going to be completed as I have other things on my plate.

For now, I suggest doing this:

  • Report the area of the collectors that you integrated in your model.
  • Add two output variables to your model: Solar Collector Efficiency and Solar Collector Heat Transfer Energy. You can report it annually (set reporting frequency to RunPeriod) or maybe monthly if you want more detail. That will give you the average efficiency of the solar collector and the total heat transfer by the collector and will allow you to double check that your results are correct and physically sound.

If you only added a couple of collectors, reporting the area of the collectors can be done easily manually using the openstudio application, otherwise just write a little piece of code like so (I'm writing on the go without trying it, so excuse any typos)

all_collectors = (model.getSolarCollectorFlatPlatePhotovoltaicThermals +
                  model.getSolarCollectorIntegralCollectorStorages + 
                  model.getSolarCollectorFlatPlateWaters)

total_area_m2 = 0
n_sc = 0

all_collectors.each do |sc|
    # Skip collectors that aren't linked to a plant loop or don't have a surface
   next if sc.surface.empty?
   next if sc.plantLoop.empty?
   n_sc += 1
   area_m2 = sc.surface.get.netArea
   total_area_m2 += area_m2
end

total_area_ft2 = OpenStudio::convert(total_area_m2, "m^2", "ft^2").get

puts "There area #{n_sc} collectors properly defined, for a total area of #{OpenStudio.toNeatString(total_area_m2, 0, true)} m^2 // #{OpenStudio.toNeatString(total_area_ft2, 0, true)} ft^2"