Blend program - cooling load

Hello,

I’m trying to figure out how blend program works. Test script attached. I blend one air-conditioned program and one non air-conditioned program (by setting the cooling setpoint to 100C), and adjust the ratio. It seems the annual cooling load does not vary proportionally with the ratio of the air-con program.

Blend program test.gh (90.0 KB)

Am i setting up something wrong? If i’m not wrong, what’s the use of the blend program then? I’ll still have to model AC and non AC spaces explicitly.

I don’t know how this is handled in LB, and if there’s any existing rules-of-thumb guiding setpoint blending. However from first principles, this assumption seems incorrect.

Specifically, I don’t think there’s a way to combine setpoints (to a scalar output) so that highly different setpoints (i.e 23C, 100C) reflect the resulting annual energy in a reasonable fashion since the annual energy is a nonlinear function of that setpoint temperature. In contrast, it makes sense to use weighted averages (based on program floor area) for properties like lighting/equipment loads since the combined lighting/equipment load is linearly related.

I agree with @SaeranVasanthakumar here and his intuition about how setpoints are “blended” or “averaged” is correct.

In the current “Blend Programs” component, there’s simply a linear averaging happening between the two setpoint objects that are blended. This is fine for most buildings where all of the spaces are at roughly the same setpoint or when blending a 23C setpoint with a 26C setpoint since this will give a 24.5C setpoint, which is probably “good enough” for this type of case. However, blending a 23C and a 100C setpoint will yield a 73C setpoint, which is functionally the same as a 100C setpoint since the temperature in the rooms isn’t likely to reach 73C.

Furthermore, if a program has no setpoints at all, it’s effectively ignored in the blending calculation with an assumption that the program is like a closet or plenum, in which case the low internal loads and conditioning of the surrounding spaces tends to keep it at relatively the same setpoint as the surrounding rooms. This is fine for most full-building blends of programs where the building is expected to be conditioned with the exception of a few outlier storage spaces. But it’s not appropriate for a hybrid building where you have one half of a building that is fully naturally ventilated and another half that is fully conditioned.

Thank you @SaeranVasanthakumar , let’s forget about blending multiple programs first, let’s say I have only one program. What puzzles me is why there is a reset set-point of say 26C at night by default, are buildings in U.S. all conditioned at night? Am I right that the only way to shut down the default night operation is by setting the set-point to 100C?
Do you know what Chris mean by “if a program has no setpoints at all”? How can a program be without setpoints?

No problem, I can try to clarify the single program behaviour as I understand it. But, I think you should first mark Chris’ post as the solution to your main question. It details the logic of multiple program blending very clearly.

If you don’t specify a program explicitly, then by default Honeybee uses a “Generic Office” program, which then provides a default setpoint schedule. I think this is why you are seeing the 26C reset setpoint. It’s not an assumption about setpoints for all buildings, it’s just the default program assumption.

I’m not sure if this is the only way, but its how I shut down HVAC systems in a schedule - set setpoints to +/- 100C. You can also disable HVAC systems completely by toggling _conditioned to False in the HB Room from Solid component.

Not sure if I follow this question. Aren’t your previous questions asking why there’s a night default setpoint temperature, and how to remove it? A program with no setpoints just means exactly that: an unconditioned space like a closet, plenum, or office space passively conditioned by natural ventilation.

Thank you very much @SaeranVasanthakumar ! It clears all my doubts so far.

1 Like

I have a question that I thought was related to the Blending program, but I believe that’s not the case after this answer. Here’s my problem: I need to exclude certain areas of my building’s floor plan from the calculation of ideal loads (I’m working at the neighborhood level and have the footprints’ geometries and conditioned area, but not their actual geometry). How can I determine if a part of the story is a plenum? Is there a way to exclude a specific area from the floor plan when considering the surfaces for ideal loads? Thank you, and best regards.

Hi @Batiste ,

I’m not sure that I understand your question but a Honeybee Room with no Program assigned to it is a Plenum. To create Rooms like this, just plug Plenum in for your program like so:

image

That should ensure that the Rooms don’t consume any energy directly. If you also need to exclude the Rooms from the floor area of EUI calculations, you can use the HB Set Multiplier component to set excl_floor_ to False and have the floor area of the Room ignored in EUI calculations.

Apologies for the confusion. We want to create a mix of conditioned and unconditioned areas within the building, but we only have the floor-level geometry and the surface area of each apartment. However, we don’t have the exact geometry or position information. I’m not sure if there is a way to subdivide the floor geometry based on ratios or create corridors. The closest solution I found is the “Create bar from building type ratio” measure used in UrbanOpt, but since we are developing our own Programs and Construction Sets tailored to the characteristics of Spain, we have been using DragonFly and Honeybee-Energy.

I hope I have explained myself better now, and I thank you si mucho for your time

Thanks for the clarification, @Batiste and I understand what you’re asking here.

It is possible to blend the Plenum program with other programs like so:


blend_with_plenum.gh (15.5 KB)

… and this will adjust things like the lighting power density, the occupant density, the ventilation, etc. to respect the ratios of the plenum program to the occupied programs. The one issue is that, when it comes to thermostat setpoints, the setpoints of the occupied program will take precedence as I described above and each Dragonfly Room2D can only be conditioned or unconditioned.

So you’re still basically modeling the building as conditioned (albeit with lower internal loads and ventilation requirements) and you’re not really making a blend of completely unconditioned and conditioned spaces. Still, if the only thing separating your conditioned and unconditioned rooms in the real world is a flimsy gypsum interior wall, then the unconditioned spaces are basically going to be at the temperature of the neighboring conditioned rooms and they are effectively “conditioned” though conduction from them. So I would think that just blending the plenum and occupied spaces is a good enough representation given by the fact that your heating/cooling loads will be higher thanks to conduction from the occupied spaces to the unoccupied ones. Or, at the least, the blending method should be good enough if you’re already willing to accept the error that’s implicit in the “Create bar from building type ratio” measure, which doesn’t really take into account how the envelope loads in the unconditioned spaces differ from the conditioned ones, which is really the only thing we’re missing in the blending method.

If I’m wrong and there’s something much more robust that separates your conditioned and unconditioned spaces (eg. an exterior insulated wall or an insulated floor), then you might consider modeling the conditioned and unconditioned parts as two separate Dragonfly buildings instead of one with a blended program. Or if you know that all of the conditioned spaces are in the core and all of the unconditioned ones are on the perimeter, you can use a perimeter offset and assign different programs to the core vs. perimeter Room2Ds.

I hope that helps and feel free to ask any more questions about this.

1 Like