Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UnitarySystem set point based control of humidity not working correctly #6892

Closed
1 of 3 tasks
rraustad opened this issue Aug 7, 2018 · 6 comments
Closed
1 of 3 tasks
Labels
Defect Includes code to repair a defect in EnergyPlus SeverityHigh This defect is high severity, generally indicating a hard crash without a workaround

Comments

@rraustad
Copy link
Contributor

rraustad commented Aug 7, 2018

Issue overview

Testing of new AirLoopHVAC:UnitarySystem shows incorrect logic when checking for outlet humidity level.

Line 10766 of UnitarySystem.cc

if (PartLoadFrac == 0.0) {
    OutletHumRatDXCoil = NoLoadHumRatOut;
} else {
    OutletHumRatDXCoil = DataLoopNode::Node(OutletNode).HumRat;
}

However, SolveRoot iterates on PLR via function DOE2DXCoilResidual (doesn't use SimDXCoil) and does not set the outlet node humidity ratio which is set in Report for DXCoils. So here, the OutletHumRatDXCoil shows the last iterations humrat. This may also be happening for other coil types. I thought at one point that the node conditions were set at the end of the CalcDOE2 routine but don't see that now.

Details

Some additional details for this issue (if relevant):

  • Platform (Operating system, version)
  • Version of EnergyPlus (if using an intermediate build, include SHA)
  • Unmethours link or helpdesk ticket number

Checklist

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

  • Defect file added (EnergyPlusDevSupport defect file folder 6892)
  • Ticket added to Pivotal for defect (development team task)
  • Pull request created (the pull request will have additional tasks related to reviewing changes that fix this defect)
@rraustad rraustad added Defect Includes code to repair a defect in EnergyPlus SeverityHigh This defect is high severity, generally indicating a hard crash without a workaround labels Aug 8, 2018
@rraustad rraustad self-assigned this Aug 8, 2018
@mjwitte
Copy link
Contributor

mjwitte commented Mar 18, 2019

@rraustad For this, I see three options to fix:

  1. In the various residual functions in unitarysystem, for the ones that call a Calc* function, add lines to set the outlet node temp and humrat so they are current at the end of each root solver call.
  2. In the various residual functions in unitarysystem, for the ones that call a Calc* function, change them to call Sim* instead.
  3. In the various Calc* functions called from these residuals, add lines to set the outlet node temp and humrat.
    Which is better/safer?
    I will add these to Better humidity control for chilled water coils and for AirloopHVAC:UnitarySystem #7215

@rraustad
Copy link
Contributor Author

I would rather set the node conditions at the end of the calc routine so that the sim function didn't need to be called during iterations. The methodology of using Init, Calc, Update, and Report to do specific things did not take into account that it would be faster to just iterate on the Calc routine and then call the Sim function after iterations have converged. Or the 4th option is to use the DXCoilOutletTemp and DXCoilOutletHumRat variables instead of the node conditions in the UnitarySystem (although the water coils don't use these variables, should have been more generic) but it seems like more work. At bottom of DX Calc functions is:

DXCoilOutletTemp(DXCoilNum) = DXCoil(DXCoilNum).OutletAirTemp;
DXCoilOutletHumRat(DXCoilNum) = DXCoil(DXCoilNum).OutletAirHumRat;

@mjwitte
Copy link
Contributor

mjwitte commented Mar 18, 2019

OK, I'll do that. So, if the Calc function sets the leaving node conditions, can that be removed from the Report function?

@mjwitte
Copy link
Contributor

mjwitte commented Mar 18, 2019

Actual, the Update function, but never mind, won't touch that, will just add to the calc functions for now.

@mjwitte
Copy link
Contributor

mjwitte commented Mar 18, 2019

Added these lines to CalcDOE2DXCoil, CalcVRFCoolingCoil, CalcDXHeatingCoil, CalcMultiSpeedDXCoil, CalcMultiSpeedDXCoilCooling, CalcMultiSpedDXCoilHeating

        // set outlet node conditions
        int airOutletNode = DXCoil(DXCoilNum).AirOutNode;
        Node(airOutletNode).Temp = DXCoil(DXCoilNum).OutletAirTemp;
        Node(airOutletNode).HumRat = DXCoil(DXCoilNum).OutletAirHumRat;

And this works great - at least for Coil:Cooling:DX:SingleSpeed in the DOAS DX defect file. Hopefully no side effects elsewhere. Will push up these changes soon.

@mjwitte
Copy link
Contributor

mjwitte commented Mar 26, 2019

Closed via #7215

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Defect Includes code to repair a defect in EnergyPlus SeverityHigh This defect is high severity, generally indicating a hard crash without a workaround
Projects
None yet
Development

No branches or pull requests

2 participants