NREL / EnergyPlus

EnergyPlus™ is a whole building energy simulation program that engineers, architects, and researchers use to model both energy consumption and water use in buildings.
https://energyplus.net
Other
1.11k stars 388 forks source link

OA equipment list in wrong order should be severe/fatal error or automatically re-sort the list #5696

Open mjwitte opened 8 years ago

mjwitte commented 8 years ago

Issue overview

User file with electric preheat coil, the OA mixing box calculation appears to be incorrect. The real problem is that the equipment is not in flow order in the AirLoopHVAC:OutdoorAirSystem:EquipmentList. This can be confusing for heat recovery and if there is a relief fan, but the primary OA flow needs to start with the outermost component and flow towards the OA mixing box.

Details

Some additional details for this issue (if relevant):

Add to this list or remove from it as applicable. This is a simple templated set of guidelines.

mjwitte commented 8 years ago

@kbenne FYI.

kbenne commented 8 years ago

@mjwitte yep thanks. I already took care of it. https://github.com/NREL/OpenStudio/commit/226404d6ff286ea2904cdbcea386f7fc6018f9d4

Most of the components were already in flow order, but then we stupidly tacked the oa mixer itself to the end. The wrong end! Can't believe this lurked so long.

rraustad commented 8 years ago

Thinking out loud what to do after OA equipment list is read in.

CheckOASysFirstCompInletIsOANode( ErrorsFound  ); // must be a fatal?
CheckOASysFirstCompOutletIsInletToNext( ErrorsFound  ); // certainly a fatal
CheckOASysLastCompOutletIsMixedAirNode( ErrorsFound ); // certainly a fatal
CanWeReorganizeOAEquipListOrder( ErrorsFound ); ?????????????
mjwitte commented 8 years ago

CheckOASysFirstCompInletIsOANode - not necessarily. It should be fine to draw air from somewhere else. One hitch to this is that a relief fan won't meet these rules, and for that component, it doesn't really matter where it lands in the list, so need to be able to skip that and go to the next component? Or ignore it if it's last in the list.

rraustad commented 8 years ago

So the OA system can draw from non-OA nodes, OK, like DOAS feeding air loop mixers. Relief fan in OA system equip list? I guess you mean a fan in the OA equip list that's in the OA inlet stream to account for fan pressure ? Why would an exhaust/relief fan be in the OA equipment list? The OA equip list only has equipment that's in the "OA Inlet" air stream, not exhaust right? HX, mixer, OA fan, coils, yes, relief fan...no

mjwitte commented 8 years ago

OA system can have a relief fan that only acts on the exhaust (relief) air stream. See example file 5ZoneAirCooledConvCoefPIU.

  AirLoopHVAC:OutdoorAirSystem:EquipmentList,
    OA Sys 1 Equipment,      !- Name
    OutdoorAir:Mixer,        !- Component 1 Object Type
    OA Mixing Box 1,         !- Component 1 Name
    Fan:VariableVolume,      !- Component 2 Object Type
    Relief Fan 1;            !- Component 2 Name

One could also have a fan in the OA inlet stream, but that, of course would need to be in flow order, so that's consistent with the other components. If one had a relief fan and heat recovery so that there's more than one component in the exhaust stream, then I'm not sure if the order of those components matter. Doesn't the OA system re-simulate backwards up the list when there is a heat exchanger, or some type of second pass?

rraustad commented 8 years ago

Got it. Nothing like a good puzzle. Yes, the OA comps re-sim backwards if there is a HX present.

for ( CompNum = 1; CompNum <= OutsideAirSys( OASysNum ).NumComponents; ++CompNum ) {
    CompType = OutsideAirSys( OASysNum ).ComponentType( CompNum );
    CompName = OutsideAirSys( OASysNum ).ComponentName( CompNum );
    SimOAComponent( CompType, CompName, OutsideAirSys( OASysNum ).ComponentType_Num( CompNum ), FirstHVACIteration, OutsideAirSys( OASysNum ).ComponentIndex( CompNum ), AirLoopNum, Sim, OASysNum, OAHeatCoil, OACoolCoil, OAHX );
    if ( OAHX ) ReSim = true;
}
// if there were heat exchangers and/or desiccant wheel in the OA path, need to simulate again
// in reverse order to propagate the air flow and conditions out the relief air path to the relief air
// exit node
if ( ReSim ) {
    for ( CompNum = OutsideAirSys( OASysNum ).NumComponents - 1; CompNum >= 1; --CompNum ) {
        CompType = OutsideAirSys( OASysNum ).ComponentType( CompNum );
        CompName = OutsideAirSys( OASysNum ).ComponentName( CompNum );
        SimOAComponent( CompType, CompName, OutsideAirSys( OASysNum ).ComponentType_Num( CompNum ), FirstHVACIteration, OutsideAirSys( OASysNum ).ComponentIndex( CompNum ), AirLoopNum, Sim, OASysNum, OAHeatCoil, OACoolCoil, OAHX );
    }
    // now simulate again propogate current temps back through OA system
    for( CompNum = 1; CompNum <= OutsideAirSys( OASysNum ).NumComponents; ++CompNum ) {
        CompType = OutsideAirSys( OASysNum ).ComponentType( CompNum );
        CompName = OutsideAirSys( OASysNum ).ComponentName( CompNum );
        SimOAComponent( CompType, CompName, OutsideAirSys( OASysNum ).ComponentType_Num( CompNum ), FirstHVACIteration, OutsideAirSys( OASysNum ).ComponentIndex( CompNum ), AirLoopNum, Sim, OASysNum, OAHeatCoil, OACoolCoil, OAHX );
    }
}
wfbuhl commented 8 years ago

So what's going on with this issue? No longer an issue? sOME BODY WORKING ON IT?

rraustad commented 8 years ago

No one actively working on this as far as I know.