Internal surface temperature of photovoltaic roof

i want to use Honeybee to simulate the effect of roof photovoltaic heat generation on the roof surface temperature. I’m a newbie, so how can I relate the output of Photovoltaic Properties to building constructions and simulate the temperature by Honeybee-legacy or 1.8.0? Thanks a lot!

Below are the only things I can do.

Now I’ve added PV as shades to the model, but this doesn’t take into account the effect of PV heating, does Ladybug has a battery that can simulate the effect of residual heat from the PV on the ambient temperature?

It’s hard to know what you mean, @Zin . The PVWatts model this is built into EnergyPlus definitely accounts for the temperature of the PV modules and its impact on the efficiency of the PV.

EnergyPlus is not an engine for modeling outdoor air temperature. If you are tying to model something like that, you should be using something like the Urban Weather Generator (UWG) engine in Dragonfly or some other software like EnviMet.

Hi @chris ,
thanks for the reply.
I would like to explore the effect of PV-roof on indoor surface temperature, and I know that in addition to affecting radiation, heat production from PV must also affect indoor temperature. But I can only set up the PV as a shading component, is there any good way to solve this problem?


You could make a custom component, that takes in the radation and ambient temperarture, and simulates the temperature of the PV panel, without necessarily doing a complete PV calculation.

The formula for this is fairly simple and can be found many places, e.g. PV syst thermal model Project design > Array and system losses > Array Thermal losses

And then use that as a boundary condition for the heat transfer in.

1 Like

Hi, @LittleBuddha
I’m a complete newbie when it comes to grasshopper, so could you elaborate more on exactly what you mean? Is it creating a component with Python and enter the specific formula? Muchly appreciated. :face_holding_back_tears:

Yes, and the code will be something like the following, that I have not checked if works:

def PVtemp(irr, me, at, ul):
irr (float): Irradiance per hour per gridpoint
me (float): module efficiency in percent %
at (float): Dry bulb temperature in C per hour
ul (float): A list of hourly values.

Known limitations
    Timestep has to be set to 1 hour   

for ptIRRdata in irr[0]:
    nTemp = []
    for hour, irrAtHour in enumerate(ptIRRdata):
        tempcell = at[hour] + ((irrAtHour * (0.9 - me / 100)) / ul[hour])
        ntemp = (tempcell - 25.0) * tc
    nTemp.append(ntemp )
return nTemp

Insert this into a Python component, with the proper set of inputs, and outputs, and it might work out of the box.

If not, embrace the joy of troubleshooting the code and inputs, and python will set you free.

1 Like

It looks difficult, but I’ll try my best. Really appreciate your prompt reply and patience!

There is quite a bit of research on this topic with some nice measurement campaigns having been completed. You can find one from 2011 here:

Proper doi: Redirecting

1 Like