# How does the example of AFN in LBT1.3 work?

afn_apartment_model.gh (105.6 KB)
in.idf (236.8 KB)

this is the example from LBT1.3 download files, and the idf I got. I try to understand, the settings of Airflownetwork,

AirflowNetwork:MultiZone:Zone,
Loft_855163f2,                          !- Zone Name
NoVent,                                 !- Ventilation Control Mode
,                                       !- Ventilation Control Zone Temperature Setpoint Schedule Name
0,                                      !- Minimum Venting Open Factor {dimensionless}
0,                                      !- Indoor and Outdoor Temperature Difference Lower Limit For Maximum Venting Open Factor {deltaC}
100,                                    !- Indoor and Outdoor Temperature Difference Upper Limit for Minimum Venting Open Factor {deltaC}
0,                                      !- Indoor and Outdoor Enthalpy Difference Lower Limit For Maximum Venting Open Factor {deltaJ/kg}
300000,                                 !- Indoor and Outdoor Enthalpy Difference Upper Limit for Minimum Venting Open Factor {deltaJ/kg}
,                                       !- Venting Availability Schedule Name
Standard,                               !- Single Sided Wind Pressure Coefficient Algorithm

1. can we change the Ventilation Control Mode to other types like “Temperature” or “Enthalpy”? I didn’t find a component to do this

2. the Ventcontrol component will effect the following code, and change the open factor of the openings. But like the E+ reference says: " NoVent : All of the zone’s openable windows and doors are closed at all times independent of indoor or outdoor conditions. The Venting Availability Schedule is ignored in this case. This is the default value for this field." So what is the meaning of the Ventcontrol then?

EnergyManagementSystem:Program,
Bedroombe_WindowOpening1,               !- Name
IF (Bedroombe_Sensor1 > 22.0) && (Bedroombe_Sensor1 < 27.0) && (Outdoor_Sensor > 13.0) && (Outdoor_Sensor < 28.0), !- Program Line 1
SET Aperturebfef_OpenFactor1 = 0.5,     !- Program Line 2
SET Doorfbffc_OpenFactor2 = 0.0,        !- Program Line 3
SET Aperturefbb_OpenFactor3 = 0.5,      !- Program Line 4
ELSE,                                   !- Program Line 5
SET Aperturebfef_OpenFactor1 = 0,       !- Program Line 6
SET Doorfbffc_OpenFactor2 = 0,          !- Program Line 7
SET Aperturefbb_OpenFactor3 = 0,        !- Program Line 8
ENDIF;                                  !- Program Line 9


AFN_GainLoss_output.gh (112.8 KB)
I find the file from an old discussion Honeybee_Energy_AFN_Natural Ventilation Load_ Output - #16 by chris
and when I give some settings for Ventcontrol, there will be nat_vent_load in the result. I think that means those settings are effective to AFN, and the windows are some how open. Right?

I think I should move this issue here, I’m trying to make the Earth Tube working in LTB 1.3 Honeybee Earth Tube component is ready to fly! - #6 by chris

and for other Airflow example, like Evaporative_Cooling_Tower, Vented_Double-Skin_Facade, and ThermalChimney, what I’m trying to do is,

1. update the file to Honeybee Legacy new version
2. try to re-model them to LBT 1.3 if it’s possible

But I still can not make sure the difference between “Group – Airflow Network” and “Group – Airflow”
Does it mean, I can only use one of them in Honeybee? Which has priority if I model them both in Honeybee because of my mistake? Or I just get a chaos?

1. can we change the Ventilation Control Mode to other types like “Temperature” or “Enthalpy”? I didn’t find a component to do this

Right now you can only control ventilation with Temperature. The “Temperature” Ventilation Control Mode is actually much simpler then what HB exposes. It just opens windows when T_{zone} > T_{out} \text{ and } T_{zone} > T_{set}, which are all inputs that are exposed in the HB Ventilation Control component.

1. the Ventcontrol component will effect the following code, and change the open factor of the openings. But like the E+ reference says: " NoVent : All of the zone’s openable windows and doors are closed at all times independent of indoor or outdoor conditions. The Venting Availability Schedule is ignored in this case. This is the default value for this field." So what is the meaning of the Ventcontrol then?

The ventilating action can be controlled at the zone level or surface level. Ventilation at the zone level means all zone windows are synchronized to a single control strategy, whereas the surface level permits individual windows or doors to have different control strategies. You’re looking at the AFN’s Zone object, so the “NoVent” there just means ventilation isn’t controlled at the zone level, finding the AFN Surface, and SimpleOpening objects will indicate the actual control strategies applied in HB.

But I still can not make sure the difference between “Group – Airflow Network” and “Group – Airflow”

The basic difference is that the Airflow Network group numerically simulates the evolution of air pressure in the building per timestep, which drives the airflow, whereas the Airflow group uses simple equations that simulate airflow based on some estimate or approximations of air pressure difference.

So the AFN will simulates infiltration using dynamicly changing pressure:
Q_{infil} = C \sqrt{P} \text{ } [m^3/m^2 s]

Whereas the Airflow group will just assume a constant Q_{infil}=0.00056 \text{ } m^3/m^2 s, based on benchmarks from blower door tests which correlate infiltration rates with envelope pressure difference for target airtightness.

The documentation has a section on what the AFN is meant to be used for: Group – Airflow Network: Input Output Reference — EnergyPlus 9.3

@SaeranVasanthakumar first of all, many thanks for your explanation. So I make it clear, in LBT, the AFN is limited to MultiZoneWithoutDistribution. And the keyword NoVent in AirflowNetwork:MultiZone:Zone is not important when I put the HB Window Opening component in to my model. The four parameters of HB Window Opening take over the job of configuration for the air flow.

a further question is, does it mean I can not change the AFN Control type from MultiZoneWithoutDistribution to others like MultiZoneWithDistribution using additional strings if I really want build some ducts and fans into the system?

#### Field: AirflowNetwork Control

The following selections are available to control the Airflow Network simulation:

MultiZoneWithDistribution: MultiZone air flow calculations are performed during all simulation timesteps, including the impacts of the air distribution system when a HVAC system fan is operating. Any ZoneInfiltration:, ZoneVentilation:, ZoneMixing and ZoneCrossMixing objects specified in the input data file are not simulated.

MultiZoneWithoutDistribution: MultiZone air flow calculations are performed during all simulation timesteps, but the air distribution system portion of the network is not modeled even if it is specified in the input data file. Any ZoneInfiltration:, ZoneVentilation:, ZoneMixing and ZoneCrossMixing objects specified in the input data file are not simulated.

MultiZoneWithDistributionOnlyDuringFanOperation: MultiZone air flow calculations, including the impacts of the air distribution system, are only performed when the HVAC system fan is operating. Any ZoneInfiltration:, ZoneVentilation:, ZoneMixing and ZoneCrossMixing objects specified in the input data file are used when the HVAC system fan is OFF (if none are specified, then no air flow calculations are performed when the fan is OFF).

NoMultiZoneOrDistribution: No multizone air flow calculations (with or without the air distribution system portion of the network) are performed during the simulation. Any ZoneInfiltration:, ZoneVentilation:, ZoneMixing and ZoneCrossMixing objects specified in the input data file are simulated (if none are specified, then no air flow calculations are performed). Note: Having an input data file with no AirflowNetwork:SimulationControl objects gives the same impact – no multizone air flow calculations. However, this choice is provided as a convenience to the user to easily disable the multizone air flow calculations for an input data file that already contains AirflowNetwork objects.

Note: A ZoneInfiltration:* object indicates any one of ZoneInfiltration:DesignFlowRate, ZoneInfiltration:EffectiveLeakageArea,and ZoneInfiltration:FlowCoefficient objects.A object ofZoneVentilation:* indicates any one of ZoneVentilation:DesignFlowRate and ZoneVentilation:WindandStackOpenArea objects**.**

I’m trying to model this using LBT, the outdoor air is first getting pre-heated in Earth tube and then get the solar gain energy in Room A, before it is supplied to Room B with duct and fan. The component in HB-Legacy is not included to LBT yet, and an additional string is needed like @chris said Honeybee Earth Tube component is ready to fly! - #6 by chris
the problem is not solved jet, why can I get the information about the effect of the earth tube in HB Result component.
The Earth Tube belongs also to Airflow Group, so, does it mean I can not use it if the AFN component is applied? and the ZoneCoolTower:Shower, ZoneThermalChimney neither?
earthtube_test (1).gh (133.1 KB)

@fn

Unfortunately I don’t have any concrete answers to these questions since it’s a custom workflow that I’ve never tried, but I can make some educated guesses based on what I know. I reccomend doing some experimentation and asking EP-specific questions on UnmetHours to find better answers to your questions.

a further question is, does it mean I can not change the AFN Control type from MultiZoneWithoutDistribution to others like MultiZoneWithDistribution using additional strings if I really want build some ducts and fans into the system?

The current AFN implementation was built specifically for “MultiZoneWithout Distribution” so I don’t know what changes are required to get the AFN to work with “MultiZoneWithDistribution”. Looking at the EP Input Output reference, it looks like the primary changes seems to be adding a AFN:Distribution nodes to corresponding objects in the air loop, and then coupling AFN-defined air ducts to specific zones to get the duct-zone air leakage and conduction loss.

This doesn’t seem to require changing anything in the natural ventilation objects HB is defining, so it’s possible you can define all this with additional strings and change to the “MultiZoneWithDistribution” condition.

The component in HB-Legacy is not included to LBT yet, and an additional string is needed like @chris said Honeybee Earth Tube component is ready to fly! - #6 by chris
the problem is not solved jet, why can I get the information about the effect of the earth tube in HB Result component.

You can use the “Read Custom Results” component to get any custom outputs for the Earthtube, listed in the Input/Output section for Earthtube (or you can search the “Read Result Dictionary” component for “Earth Tube” outputs.

The Earth Tube belongs also to Airflow Group, so, does it mean I can not use it if the AFN component is applied? and the ZoneCoolTower:Shower, ZoneThermalChimney neither?

Yeah this is confusing. The AFN document seems to only explicitly mention excluding zone mixing, ventilation and infiltration objects, but zone earth tubes and thermal chimney objects are in the same group and behave in the same way: changing the zone heat balance directly based on buoyance-based airflow approximations without actual pressure values.

My best guess is that you can add the “Earth tube” to the AFN network. The AFN models ventilation, infiltration, and zone mixing explicitly, but doesn’t have any objects for earth tubes or thermal chimneys, so my guess is that they exclude only the airflow components the AFN models. I don’t see any reason why the earth tubes/thermal chimney heat transfer couldn’t be incorporated in the zone heat balance while solving for the AFN-driven heat transfer, so I think it should be possible. The only limitation of course is that the earth tube/thermal chimney model wouldn’t be integrated into the AFN-pressure network, and would simply be changing based on the outdoor to zone temperature difference (an approximation of buoyancy). This would be a good question to ask on UnmetHours.

I will try in Unmethours. There comes another question, if the AirflowNetwork:SimulationControl in Honeybee is constantly MultiZoneWithoutDistribution, then using additional string will cause 2nd AirflowNetwork:SimulationControl statement. How does Energyplus handle this situation? will the later AirflowNetwork:SimulationControl statement be used and the earlier statement be ignored? Or it will cause some error? I’ll test this first

@fn, since it’s only one line, you can also just manually revise the IDF with the IDF editor, or even in notepad.

it seems there are 2 separate road map with Airflow Group and AFN group, and they don’t work together.

1. Airflow group, earth tube, solar chimney are bulit-in, I need find a way to have a constant flow rate in one opening for Romm A, to see the exhaust air temperature. But I looked into the I/O reference, in the output list there is no item related to the exhaust air of ZoneVentilation:DesignFlowRate
2.with AFN, because of the large or high rooms, AFN with artificial divide of large room to subzones is not suitable, Airroom model is needed, and for the air exchange rate between subzones.

@SaeranVasanthakumar
I listed 4 possibilities to achieve this goal, none is easy

1. use simple Ventilation so that earth tube and chimney can be applied. the keyword ZoneVentilation in the idf. But the difficulty is to get an Exhaust to proof the air flow balance. No values for this purpose from earthtube output, and I have no idea how to get it. But almost sure not with ZoneVentilation:WindandStackOpenArea in HB
2. I find this ZoneAirMassFlowConservation statement, but it seems only for HVAC system, not for natural ventilation
3. build the linkage as an extra zone and connect the room A and room B. I’m still trying.
4. use RoomAir Model, with help of Butterfly to get the flow exchange rate or something else, I don’t understand yet, it looks complicate.

earthtube_test_AFN.gh (326.6 KB)

my first challenge here is, how to get the results of a single room. I mean the zone with the id greenhouse

This is some advanced stuff you’re doing here with EarthTubes and additional strings, @fn . When you say “get the results of a single room”, do you mean get a certain output after the simulation is run? Or do you need a certain variable as the simulation is running, which would be incorporated into an EMS program?

FYI, for a highly customized simulation of a few rooms like this, you may want to use the HB Set Identifier component to fix the EnergyPlus simulation name of the Room as a single value (instead of always having to get the uuid there).

Hi @chris, glad to see you here. with single room I mean one zone instead of the whole building in the energy output and energy blance component from sql data. I can the way to check the header in data to locate the element I want, and filter the result list. I mean focus on Room A and Room B, and not really care the other rooms. But you pointed out the HB Set Identifier, I think this is a better way, I know HB components not well.

To be honest, I don’t want to get openfoam involved if you can help me together to find a way to use earthtube and chminey pure e+ to proof how much effect these two passive methods have. That will be thankful. earthtube and AFN are not compatible. New Challenge with EMS!

Hi @chris , one more question. Is there any component to set the node name of ZoneHVAC:EquipmentConnections like the HB Set Indentifier does? Right now it is given by sequence, it is more convenient to give a name related to the value for HB Set Indentifier, like “node” + indetifier

similar topic

maybe Earth Tube Labyrinth - Unmet Hours
https://energyplus.net/assets/nrel_custom/pdfs/pdfs_v9.5.0/EMSApplicationGuide.pdf
page 37 5.1.4 Outdoor Air System Node Conditions

to make use of a separate model, outside of EnergyPlus,
for some unique type of component (such as a labyrinth or earth-tube) that preconditions outdoor
air; the results of that model could be fed into the air system model in EnergyPlus using these
actuators.

The first one simulates the earth-tube only and then outputs the hourly dry bulb and wet bulb temperatures to a .csv file The second simulation utilizes EMS routines to replace the dry bulb and wet bulb hourly temperatures in the weather file with those found in the .csv output file but only for the outdoor air intake node… See code below: (note this was done with v.5)

EnergyManagementSystem:Sensor, Earth_Tube_DB_Sched, !Name EarthTubeDBSch, ! Output:Variable Index Key Name Schedule Value; ! Output:Variable or Output:Meter Name

EnergyManagementSystem:Sensor, Earth_Tube_WB_Sched, !Name EarthTubeWBSch, ! Output:Variable Index Key Name Schedule Value; ! Output:Variable or Output:Meter Name

EnergyManagementSystem:Actuator, ET_OADB_Override, ! Name DOAS Outside Air Inlet, ! Component Name Outdoor Air System Node, ! Component Type Drybulb Temperature; ! Control Variable

EnergyManagementSystem:Actuator, ET_OAWB_Override, ! Name DOAS Outside Air Inlet, ! Component Name Outdoor Air System Node, ! Component Type Wetbulb Temperature; ! Control Variable

EnergyManagementSystem:Program, SchedOA, ! Name SET ET_OADB_Override = Earth_Tube_DB_Sched, SET ET_OAWB_Override = Earth_Tube_WB_Sched;

EnergyManagementSystem:ProgramCallingManager, Schedule OA, ! Name AfterPredictorBeforeHVACManagers, ! EnergyPlus Model Calling Point SchedOA; ! Program Name 1

Output:EnergyManagementSystem, Verbose, Verbose, Verbose;

Schedule:File, EarthTubeDBSch, !- Name Any Number, !- ScheduleType W:\M\CALC\ETDB.csv, !- Name of File 1, !- Column Number 0, !- Rows to Skip at Top 8760, !- Number of Hours of Data Comma; !- Column Separator

Schedule:File, EarthTubeWBSch, !- Name Any Number, !- ScheduleType W:\M\CALC\ETWB.csv, !- Name of File 1, !- Column Number 0, !- Rows to Skip at Top 8760, !- Number of Hours of Data Comma; !- Column Separator


I don’t think the earth tube is simulating the impact of it’s inflow air with respect to the conservation of mass in the zone. The AFN does conserve mass, using it’s pressure network, but, from what I’m reading in the Engineering Reference, the earth tube only estimates volumetric air flow in the tube, and then EnergyPlus assumes the sensible and latent heat from the earth tube’s volume of air is combined with the room air conditions (same as convective, infiltration and simple ventilation heat transfer in EP).

Why not just keep track of the thermal energy balance instead? You should be able to see the relative impact of this additional heat transfer on the zone energy demand for both rooms.

Are you trying to model the heat exchange between air flows from different sources spatially (i.e. tracking mass and heat changes for naturally ventilated buoyant air through zones)? You may want to look at Salmaan Craig’s work, I recall he built some custom tools to model the heat transfer due to buoyant air flows in zones. Can’t find a link to it, but here’s his google scholar page: ‪Salmaan Craig, Eng.D‬ - ‪Google Scholar‬.

This would work, but is this because you want to model the duct leakage and heat loss without the AFN? If that isn’t important, you could also model the air exchange as transfer air from Room A to Room B, using the ZoneMixing object, (if they are adjacent).

Some care has to be taken since ZoneMixing destroys the conservation of energy principle (only one zone has impact of heat transfer simulated), but this can be accounted for by setting an equivalent Fan:ZoneExhaust flow rate in the sending zone.

Some good discussion on this trick here:

a lot thing to read, thanks @SaeranVasanthakumar . Who uses ZoneMixing? - Unmet Hours this is great to read