Why does the zone temperature change when II block all heat exchange with the external world
I am testing the EnergyPlus python API while building up experience with EnergyPlus. I constructed an IDF file that defines a rectangular box (50 m x 100 m x 10 m). The walls are concrete and the roof is steel. There are no windows. In the weather file I set dni=ghi=0 through the year and made the ambient dry bulb temperature constant at 20 oC for every hour through the year in the weather data file.
The floor is a concrete slab. The monthly ground temperatures are set as:
Site:GroundTemperature:BuildingSurface,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0;
There are no controls defined in the IDF file and there is no ventilation. There are no People, Lights, Equipment, and Infiltration entries in the IDF file.
The following EWP columns are set to the values shown:
- Direct Normal Radiation, Wh/m2 = 0.1 (0.1 instead of 0 because I was worried about possible EP data validity checks, unlikely but just in case)
- Global Horizontal Radiation = 0.1
- Horizontal Infrared Radiation Intensity, Wh/m2 = 0.1
- Diffuse Horizontal Radiation, Wh/m2 = 0.1
- Dry bulb temperature,°C = 20
- Dew point temperature, °C = 20
I would expect a constant zone air temperature when I run the simulation but the simulated zone air temperatures vary as shown in the following image:
For the first 960 hours of the annual simulation:
and for one day (Hours 2400 to 2424):
The y-axis is what is output to the CSV file by the following IDF line:
- "Output:Variable, * ,Zone Air Temperature,Hourly;"
All walls are SunExposed and WindExposed. The sun input is set to near zero. I did not set the wind speed to zero because I did not expect significant convection when the outside air and the floor are at the same temperature through the year and there are no internal loads.
The algorithms are set in the IDF file as follows:
- HeatBalanceAlgorithm,ConductionTransferFunction;
- SurfaceConvectionAlgorithm:Inside,TARP;
- SurfaceConvectionAlgorithm:Outside,DOE-2;
Finally, I used the EnergyPlus python API and ran the simulation using the following python script:
api = EnergyPlusAPI()
state = api.state_manager.new_state()
if log:
global APILOG
APILOG=open(outputfolder+"/"+"apilog.csv","w")
api.runtime.callback_end_zone_timestep_after_zone_reporting(state, time_step_handler)
api.exchange.request_variable(state, u"Zone Air Temperature", u"ZONE ONE")
The APILOG was to log the zone air temperature during simulation computations. I was exploring what might be happening. The values recorded in the "apilog.csv" file are similar to those shown in the chart shown above.
The following are the links to download the IDF and EPW files:
The EPW file: https://drive.google.com/file/d/1hQOP...
The IDF file : https://drive.google.com/file/d/1dbwA...
There may be internal routines in EP that take over when the weather data are not reasonable. But I do not think this is likely. Is there anyone who can suggest an explanation?
Thanks.