Question-and-Answer Resource for the Building Energy Modeling Community
Get s tarted with the Help page

# SolarCollector heat extraction from roof

I'm trying to model a building integrated solar collector in EnergyPlus. Eventually, I'll write an OpenStudio measure to add the solarcollector to a specified surface.

I'm quite new to EnergyPlus and the modeling of solar collectors. In reviewing the results from the different EnergyPlus examples I found that when using a SolarCollector:FlatPlate:Water, heat supplied to the water is not extracted from the roof. Therefore, simulated heat load on the building will be higher than actual.

When using an SolarCollector:IntegralCollectorStorage, this is accounted for using the SurfaceProperty:OtherSideConditionsModel. This accounts for a ventilated cavity.

The only way I currently see to model my scenario is to:

• See if i can model using my flatplate using an ICS collector
• Use the ventilated cavity model, with a minimal cavity opening

Would this be the preferred way of simulating such a system? Or is there some other way to have EnergyPlus account for heat losses due to heating of the water?

edit retag close merge delete

Sort by » oldest newest most voted

I'll let someone else address the best approach in EnergyPlus for this, but I wanted to give some advice when for when you write the measure. Basically start simple, with the measure being little more than a block of hard coded IDF text that gets dropped in. It will pretty quick and will work for what you need. To make it useful for future models, parametric studies, and to share start to expose some variables as user arguments and add in looping and conditional logic as needed. In my example Simple PV E+ measure which was also based on example files I exposed a user argument for shading surface type and then loop through shading surfaces of the correct type.

The one things that makes yours more complex is the connection to the building water system. The simple PV is pretty isolated other than a reference to a surface in the model. It is also more work to do building integrated, but should be possible. I did some initial testing with integrated PV with cavity, but never made a measure with it.

I create an array of strings, and then at the end of the measure make a workspace object out of them. Below is part of the code to show what it looks like

# array to hold new IDF objects needed for PV
string_objects = []

string_objects << "
PhotovoltaicPerformance:Simple,
pvPerformanceObject,  !- Name
#{fraction_surfacearea_with_pv},  !- Fraction of Surface Area with Active Solar Cells {dimensionless}
Fixed,                            !- Conversion Efficiency Input Mode
#{value_for_cell_efficiency};     !- Value for Cell Efficiency if Fixed
"
generator_list = []

#set the fields to the values you want
gen_name = "gen #{surface_name}".to_s

# add name to generator list array
generator_list << gen_name

# make Generator:Photovoltaic object
string_objects << "
Generator:Photovoltaic,
#{gen_name},                     !- Name
#{surface_name},                 !- Surface Name ** change to match your surface
PhotovoltaicPerformance:Simple,  !- Photovoltaic Performance Object Type
pvPerformanceObject,             !- Module Performance Name
Decoupled,                       !- Heat Transfer Integration Mode
1.0,                             !- Number of Modules in Parallel {dimensionless}
1.0;                             !- Number of Modules in Series {dimensionless}
"

end #end of shading surfaces each do

# some more stuff

# add all of the strings to workspace
string_objects.each do |string_object|
object = idfObject.get
end

more

Thanks a lot for this. Actually I'm going to simulate an building integrated PVT module. I decided to not use the EnergyPlus PVT class, since it offers no complexity for the SolarCollector part. I'm going to model the PV and SolarCollector part seperately, and assume the temperature delta from the SolarCollector has negligible effect on the efficiency of the PV cell.

I already started writing the ruby code, and was planning on using your EnergyPlus measure as input.

( 2015-01-28 04:14:22 -0500 )edit

About the connection to the water system. I tried to do this by editing all the nodes in the idf file, but it turned out to be impossible since there is no way to distinguish whether a node is used as in- or output. I ended up inserting an AdiabaticPipe in OpenStudio, and replacing it using the script

( 2015-01-28 04:14:35 -0500 )edit

If I remember right, the simple PVT model does have the ability to model integrated building surface heat transfer.

( 2015-01-30 10:57:02 -0500 )edit

@ Archmage

Thanks for your response. As far as I can see, the SolarCollector:FlatPlate:Water doesn't have a field 'Boundary Condition Model Name' like the SolarCollector:IntegralCollectorStorage. Perhaps there is some other way to apply these boundary conditions?

In my case I still require a more advanced collector model, so I still wouldn't use the PhotovoltaicThermal class.

( 2015-02-02 02:33:08 -0500 )edit
1

The surface integration is set in the associated Generator:Photovoltaic part of the input for PVT, in the field Heat Transfer Integration Mode. The thermal efficiency can be scheduled in the simple model, so if you have an off-line method of calculating the performance of the solar collector you could feed it a schedule. I would not be comfortable using a regular solar collector model for PVT.

( 2015-02-02 16:42:41 -0500 )edit