architecture-building-systems / RC_BuildingSimulator

A Resistance Capacitance Model for an Energetic Simulation of a Building
Other
94 stars 34 forks source link

multi-zone simulation #57

Open MatthiVH opened 2 years ago

MatthiVH commented 2 years ago

Hi,

I was wondering if the python model can be used for a multi-zone hourly simulation as well (and if you have an example of this, e.g. with 2 zones)?

Best, Matthias

pjayathissa commented 2 years ago

Hi Matthias

There is an easy, medium, and really difficult way of doing this

Easy

In the past, I have assumed that the thermal transfer between two interior zones is negligible compared to thermal exchanges to the exterior environment. For many internally conditioned spaces, this works. As in the internal temperatures are so similar that we can assume adiabatic exchange. You can then run this as two different zones with no interactions between each other and get quite accurate results. In my opinion, the error margin in the assumption of air changes per hour, is usually greater than internal zone variations.

Medium

Hack your own energetic connection between the two zones at each timestep. This can be done for example by hacking the 'internal gains' parameter. At each timestep

Zone2.solve_energy(internal_gains=internal_gains + zone_transfer, solar_gains=SouthWindow.solar_gains, t_out=t_out, t_m_prev=t_m_prev)


Hacking the internal_gains attribute is the easiest as it doesn't have any complex physics associated with it.

If you do achieve this, can you make a pull-request with your code into the examples folder? I think it would make a nice addition for others to follow. 
Just double check that this method isn't creating any weird overshoots. I could imagine an error occurring when the walls are paper-thin, a large temperature difference, and the timesteps of one hour could result in a large energy transfer, which then makes the other room hot, and it bounces back. Some way of capturing the logarithmic dynamics of interior temperature transfer may be required. Maybe even just stopping the energy transfer if the temperature difference hits 0 to stop the overshoot

## Hard
Rewriting the code to allow for multizone simulation. You may fall down a rabbit hole here, but I'm not going to stop you. Good luck

Prageeth