-
Notifications
You must be signed in to change notification settings - Fork 392
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
Make Water-to-Air Heat Pump cycling and latent degradation consistent with other coils #10043
Conversation
I will make documentation changes once a reviewer has approved the IDD changes (just let me know). For transition rules:
Part Load Fraction correlation: (1-Cd) + Cd*PLR Cd = A*(1-exp(-1/A)), where A = 4tau(Nmax/3600) where:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nealkruis IDD changes look good, except for \min-fields
. Some have comments below, but every object with new or deleted fields should be double-checked. min-fields
should extend at least to the last field with a default.
idd/Energy+.idd.in
Outdated
@@ -53026,6 +52989,28 @@ Coil:Cooling:DX:VariableSpeed, | |||
\type real | |||
\minimum 0 | |||
\default 0 | |||
N7, \field Maximum Cycling Rate |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does Coil:Cooling:DX:VariableSpeed need a bump on \min-fields
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's currently 31, but after the 90.1 metric update the last default field is N93. The prior alpha field is A45...so maybe it should be 93+45=138?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A13 is a required field. min-fields = 36. This includes these 3 new fields and the 2 recently added 2017/2023 reference fan power fields.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, there's exceptions to the rule, min-fields should also cover the last required-field, and if there are defaulted fields in extensible groups (or pseudo-extensible like this one), min-fields should stop at the last required group, in this case the Speed 1 inputs. So, @rraustad is correct, 36.
idd/Energy+.idd.in
Outdated
@@ -56508,7 +56493,7 @@ Coil:Cooling:WaterToAirHeatPump:ParameterEstimation, | |||
\memo evaporation from wet coil when compressor cycles off with continuous fan operation. | |||
\memo Parameter estimation model is a deterministic model that requires a consistent set of | |||
\memo parameters to describe the operating conditions of the heat pump components. | |||
\min-fields 18 | |||
\min-fields 22 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs to extend all the way to the end of the object now, needs to include the last defaulted field.
idd/Energy+.idd.in
Outdated
|
||
Coil:Heating:WaterToAirHeatPump:ParameterEstimation, | ||
\memo Direct expansion (DX) heating coil for water-to-air heat pump (includes electric | ||
\memo compressor), single-speed, parameter estimation model. Parameter estimation model is | ||
\memo a deterministic model that requires a consistent set of parameters to describe | ||
\memo the operating conditions of the heat pump components. | ||
\min-fields 15 | ||
\min-fields 16 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bumping this by one doesn't really do anything for this object. Either extend to include the new field at the end (to help make it visible in idfs) or leave as-is.
idd/Energy+.idd.in
Outdated
\note cubic curve = a + b*PLR + c*PLR**2 + d*PLR**3 | ||
\note PLR = part load ratio (heating load/steady state capacity) | ||
\type object-list | ||
\object-list UnivariateFunctions | ||
|
||
Coil:Cooling:WaterToAirHeatPump:EquationFit, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This object needs a min-fields.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess this one is still needed.
idd/Energy+.idd.in
Outdated
\note cubic curve = a + b*PLR + c*PLR**2 + d*PLR**3 | ||
\note PLR = part load ratio (heat load/steady state capacity) | ||
\type object-list | ||
\object-list UnivariateFunctions | ||
|
||
Coil:Heating:WaterToAirHeatPump:VariableSpeedEquationFit, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reduce min-fields?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It appears neither of the WaterToAirHeatPump:EquationFit
objects had \min-fields before. I can add them.
|
…ing with other changes
… and transition rules
OK, I think I got things mostly worked out. To catalog exactly what happened:
This made this PR a bit beefier than expected, but it was already much bigger of an effort than I thought, so it's fine. Things that need to be done now that I have it "in place":
That's my known list, which is likely to grow, but I need to step away from it for now. If we need to have a discussion, I'm happy to set one up for Monday, just let me know. |
@Myoldmopar, this looks good to me! Thanks for taking care of all the transition mechanics here! |
OK, so there were a few failing tests, and I have them fixed up locally, about to push. There are diffs showing up on CI, but once I eliminate the failing unit tests, I think they are the exact same diffs that were present on earlier commits of this branch. I will run diffs again locally comparing first to develop (which should reproduce diffs here), then to an earlier version of this branch (which should have none). |
I fixed the one remaining failing unit test, so there should only be diffs from this point on. I ran regressions locally against develop:
So then I compared the current HEAD of the branch against a previous commit in the branch. I checked out cdf2cf5 and pulled in develop so that the only differences are the changes I have made to clean out WSHP fields. Thankfully, the only diffs are table diffs - even with hourly outputs. 🎈 🎉 Yay, it seems I didn't break anything 👍 🎈 🎉 OK, this needs scrutinizing and still a few things per the checklist comment above, but I think it's close now. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Myoldmopar A few comments on this complex transition.
@@ -280,8 +302,64 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile | |||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | |||
|
|||
! Do any kind of Preprocessing that is needed here (eg: a first pass on objects to store some attributes etc) | |||
|
|||
|
|||
ALLOCATE(CoilLatentStuff(NumIDFRecords)) ! Excessively large, but better than resizing the array over and over |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can use GetNumObjectsFound('AIRLOOPHVAC:UNITARYSYSTEM')
etc to get a precise count for any object type.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, updated it to allocate to the sum of the count of the relevant objects.
IF (CurArgs .GE. 95) CurArgs = CurArgs + 2 ! only do this speed if we have that many inputs | ||
IF (CurArgs .GE. 105) CurArgs = CurArgs + 2 ! only do this speed if we have that many inputs | ||
IF (CurArgs .GE. 115) CurArgs = CurArgs + 2 ! only do this speed if we have that many inputs | ||
IF (CurArgs >= 25) CurArgs = CurArgs + 2 ! this will always trigger for speed 1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These should all be +3? e.g. >=28, 38, etc.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK yes, good call! Since I added the three above to CurArgs, these now need to go higher. Updated!
CoilLatentStuff(NumCoilLatentStuff)%NewCurveName = TRIM(IDFRecords(Num)%Alphas(1)) // "-AutogeneratedPLFCurve" | ||
CoilLatentStuff(NumCoilLatentStuff)%HeatingCoilType = MakeUPPERCase(IDFRecords(Num)%Alphas(12)) | ||
IF (CoilLatentStuff(NumCoilLatentStuff)%HeatingCoilType == 'COIL:HEATING:WATERTOAIRHEATPUMP:PARAMETERESTIMATION') CoilLatentStuff(NumCoilLatentStuff)%ActuallyCreateCurve = .true. | ||
IF (CoilLatentStuff(NumCoilLatentStuff)%HeatingCoilType == 'COIL:HEATING:WATERTOAIRHEATPUMP:EQUATIONFIT') CoilLatentStuff(NumCoilLatentStuff)%ActuallyCreateCurve = .true. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Where does ActuallyCreateCurve
get used? I think you could use that here to skip incrementing NumCoilLatentStuff
(and skip the other assignments here) for a parent object that doesn't have an applicable coil type.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, yeah, it's supposed to have been used in the parent objects below to skip creating the curve. Is it OK to leave the assignments the way they are here in the preprocessor, but skip the curve creation below? Or do you think we should change it here in the preprocessing section. At the time of adding that flag, I was still a bit confused about when we would or wouldn't need to generate this new curve, so maybe it's simpler than I am making it out to be.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Anyway, I added an
IF (.NOT. CoilLatentStuff(Num3)%ActuallyCreateCurve) CYCLE
block to each parent object for now. I'm open to updating it.
CASE('HVACTEMPLATE:ZONE:WATERTOAIRHEATPUMP') ! PR 10043 | ||
CALL GetNewObjectDefInIDD(ObjectName,NwNumArgs,NwAorN,NwReqFld,NwObjMinFlds,NwFldNames,NwFldDefaults,NwFldUnits) | ||
nodiff=.false. | ||
!- remove N20 F29 Fraction of On-Cycle Power Use |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So, this field goes away and the existing value doesn't get used for anything? Should probably add a warning to the audit file? Actually this whole thing deserves a warning to the audit file and perhaps even a preprocessor warning that shows in the EnergyPlus output. I can find an example of that if need be.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah a warning is a good idea, and could you take a peek at the ExpandObject changes when you get a chance?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ExpandObject changes look good. I'm not sure we have testing coverage for every parent/coil combination, but there should be enough.
IF (TRIM(CoilLatentStuff(Num3)%cMaxCyclingRate) == '') THEN | ||
latentNmax = 2.5 ! does this need to be converted to seconds? | ||
ELSE | ||
READ(CoilLatentStuff(Num3)%cMaxCyclingRate, *) latentNmax |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of READ
, it's somewhat safer to use
latentNmax = ProcessNumber(ICoilLatentStuff(Num3)%cMaxCyclingRate,ErrFlag)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I knew there was a better way, updating it now.
DO Num3 = 1, NumCoilLatentStuff | ||
IF (('COIL:COOLING:WATERTOAIRHEATPUMP:PARAMETERESTIMATION' /= CoilLatentStuff(Num3)%CoolingCoilType) .OR. (MakeUPPERCase(InArgs(1)) /= CoilLatentStuff(Num3)%CoolingCoilName)) CYCLE | ||
nodiff=.false. | ||
OutArgs(1:27)=InArgs(1:27) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this safe if the incoming object has <27 fields? I think you need to copy 1:CurArgs here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm...so how do we know whether to append them? Is this OK?
OutArgs(1:CurArgs)=InArgs(1:CurArgs)
IF (CurArgs > 27) THEN
OutArgs(28) = CoilLatentStuff(Num3)%NewCurveName
OutArgs(29) = CoilLatentStuff(Num3)%cMaxCyclingRate
OutArgs(30) = CoilLatentStuff(Num3)%cHeatPumpTimeConst
OutArgs(31) = CoilLatentStuff(Num3)%cHPDelayTime
CurArgs = 31
END IF
If there is less than 27 input, then I'm not sure what the outcome would be.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good question, I believe the fields in between will be written as blank, but we'll have to test one to be sure.
I ran transition on the entire set of 23.1 example files. Found a couple issues and fixed them, and everything transitioned successfully. I am now running the full set of example files from both this branch (manually transitioned) and then the auto-transitioned files next. I'm grabbing the run status (exit code) from each, as well as the ERR file contents (cleaned of timestamps). I'll compare those and report back tonight or first thing in the morning. Assuming they are producing the same ERR file contents, that should be indicative that my transition code is properly getting 23.1 files up to where we expect them to be for 23.2. 🤞 |
@nealkruis I noticed that in the example files, the new PLF curve appears to (at least in 5ZoneWLHPPlantLoopTower) be set to the existing linear curve:
However, when my transition code is running, it mines data from the parent unitary WAHP:
Then during the main transition loop, I create a new linear curve as such:
So my curve is 0.8337x + 0.1663. The example files in the branch right now have 0.75x + 0.25. I hoped that cleaning this up would eliminate the diffs entirely, but they don't seem to. I'm currently still diagnosing some transition issues. In the meantime, could you comment on this stuff? |
ALLLLLRIGHT I think this is ready.
OK -- I think it's worth a once-over on this whole PR set of changes and then maybe move this into the merge queue. @nealkruis @mjwitte @rraustad @RichSee if you have anything further please let me know. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, I looked it over one more time. I am good with it except one IDD comment from @mjwitte . Perhaps the IDD in general is worth another look after the 90.1 changes were reverted from it. Either way I think this is very close.
2.5, !- Maximum Cycling Rate | ||
60.0, !- Heat Pump Time Constant | ||
0.01, !- Fraction of On-Cycle Power Use | ||
60, !- Heat Pump Fan Delay Time |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Docs shuffling fields around and updating sample inputs, 👍
idd/Energy+.idd.in
Outdated
@@ -28328,22 +28328,15 @@ HVACTemplate:Zone:WaterToAirHeatPump, | |||
\default 2.5 | |||
\note The maximum on-off cycling rate for the compressor | |||
\note Suggested value is 2.5 for a typical heat pump | |||
N19, \field Heat Pump Time Constant | |||
N19, \field Latent Capacity Time Constant |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IDD changes all appear to be functioning properly, and since they were generally copy/pasted, I don't feel inclined to scrutinize spelling and such. Moving on...
idd/Energy+.idd.in
Outdated
\note cubic curve = a + b*PLR + c*PLR**2 + d*PLR**3 | ||
\note PLR = part load ratio (heating load/steady state capacity) | ||
\type object-list | ||
\object-list UnivariateFunctions | ||
|
||
Coil:Cooling:WaterToAirHeatPump:EquationFit, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess this one is still needed.
Real64 MdotFurnace; // Mass flow rate through furnace [kg/s] | ||
Real64 FanPartLoadRatio; // Part load ratio of furnace fan (mdot actual/mdot design) | ||
Real64 CompPartLoadRatio; // Part load ratio of furnace compressor (load / steady-state output) | ||
Real64 WSHPRuntimeFrac; // Runtime fraction of water source heat pump |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code changes seem to be working well based heavily on CI results and local testing.
@@ -9,263 +9,3 @@ This was previously an Excel workbook that made for very difficult version contr | |||
Describe input change here | |||
|
|||
Use links like: [PR#9480](https://github.com/NREL/EnergyPlus/pull/9480/) | |||
|
|||
# Object Change: Coil:Cooling:DX:TwoSpeed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These changes should have gone in the 23.1 to 23.2 file, so I put it in over there.
@@ -4,8 +4,339 @@ Input Changes version 23.1.0 to 23.2.0 | |||
This file documents the structural changes on the input of EnergyPlus that could affect interfaces, etc. | |||
This was previously an Excel workbook that made for very difficult version control, especially during busy times around code freezes. | |||
|
|||
# Object Change: OBJECT NAME HERE | |||
# Key Note |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be good for someone to read through this, but not mandatory before merge. The text could be improved post-IO-freeze if absolutely necessary.
I'll resolve conflicts one more time here. If I don't hear any concerns from anyone in the near term, I'm going to merge this in. Thanks all! |
OK! Goodbye PR #10043! |
\paragraph{Field: Heat Pump Fan Delay Time}\label{field-heat-pump-fan-delay-time-000} | ||
|
||
This numeric field contains the time delay for the heat pump supply air fan to shut off after the compressor cycles off in seconds. This value can be obtained from the manufacturer or the heat pump catalog. Enter a value of zero when the heat pump's fan operating mode is continuous. Suggested value is 60 seconds. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't recall discussing this Fan Delay Time input and how it relates to the coil versus the parent. I'm not really sure where this belongs at this point so I'll assume this is correctly accounted for in these changes. I scanned through the rest of the changes and this is the only thing that stands out.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@rraustad, the fan delay is a strange input that is used only for the latent degradation model in these coils. I'm not sure why it's not used in other the air-to-air DX coils. Eventually it would be good to have a base coil class that all these coils inherit from that is the one and only place where the latent degradation model is implemented.
A8; \field Part Load Fraction Correlation Curve Name | ||
\note quadratic curve = a + b*PLR + c*PLR**2 | ||
\note cubic curve = a + b*PLR + c*PLR**2 + d*PLR**3 | ||
\note PLR = part load ratio (heat load/steady state capacity) | ||
\type object-list | ||
\object-list UnivariateFunctions |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
\required-field
is missing here.
EnergyPlus/src/EnergyPlus/WaterToAirHeatPumpSimple.cc
Lines 610 to 620 in f1db7f4
simpleWAHP.PLFCurveIndex = Curve::GetCurveIndex(state, AlphArray(8)); // convert curve name to number | |
if (simpleWAHP.PLFCurveIndex == 0) { | |
if (lAlphaBlanks(8)) { | |
ShowSevereError(state, format("{}{}=\"{}\", missing", RoutineName, CurrentModuleObject, simpleWAHP.Name)); | |
ShowContinueError(state, format("...required {} is blank.", cAlphaFields(8))); | |
} else { | |
ShowSevereError(state, format("{}{}=\"{}\", invalid", RoutineName, CurrentModuleObject, simpleWAHP.Name)); | |
ShowContinueError(state, format("...not found {}=\"{}\".", cAlphaFields(8), AlphArray(8))); | |
} | |
ErrorsFound = true; |
A9, \field Part Load Fraction Correlation Curve Name | ||
\note quadratic curve = a + b*PLR + c*PLR**2 | ||
\note cubic curve = a + b*PLR + c*PLR**2 + d*PLR**3 | ||
\note PLR = part load ratio (cooling load/steady state capacity) | ||
\type object-list | ||
\object-list UnivariateFunctions |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
\required-field
missing here
EnergyPlus/src/EnergyPlus/WaterToAirHeatPumpSimple.cc
Lines 365 to 375 in f1db7f4
simpleWAHP.PLFCurveIndex = Curve::GetCurveIndex(state, AlphArray(9)); // convert curve name to number | |
if (simpleWAHP.PLFCurveIndex == 0) { | |
if (lAlphaBlanks(9)) { | |
ShowSevereError(state, format("{}{}=\"{}\", missing", RoutineName, CurrentModuleObject, simpleWAHP.Name)); | |
ShowContinueError(state, format("...required {} is blank.", cAlphaFields(9))); | |
} else { | |
ShowSevereError(state, format("{}{}=\"{}\", invalid", RoutineName, CurrentModuleObject, simpleWAHP.Name)); | |
ShowContinueError(state, format("...not found {}=\"{}\".", cAlphaFields(9), AlphArray(9))); | |
} | |
ErrorsFound = true; |
A8, \field Part Load Fraction Correlation Curve Name | ||
\note quadratic curve = a + b*PLR + c*PLR**2 | ||
\note cubic curve = a + b*PLR + c*PLR**2 + d*PLR**3 | ||
\note PLR = part load ratio (cooling load/steady state capacity) | ||
\type object-list | ||
\object-list UnivariateFunctions |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
\required-field
missing
EnergyPlus/src/EnergyPlus/WaterToAirHeatPump.cc
Lines 390 to 400 in c854ba6
heatPump.PLFCurveIndex = Curve::GetCurveIndex(state, AlphArray(8)); // convert curve name to number | |
if (heatPump.PLFCurveIndex == 0) { | |
if (lAlphaBlanks(8)) { | |
ShowSevereError(state, format("{}{}=\"{}\", missing", RoutineName, CurrentModuleObject, heatPump.Name)); | |
ShowContinueError(state, format("...required {} is blank.", cAlphaFields(8))); | |
} else { | |
ShowSevereError(state, format("{}{}=\"{}\", invalid", RoutineName, CurrentModuleObject, heatPump.Name)); | |
ShowContinueError(state, format("...not found {}=\"{}\".", cAlphaFields(8), AlphArray(8))); | |
} | |
ErrorsFound = true; |
A8; \field Part Load Fraction Correlation Curve Name | ||
\note quadratic curve = a + b*PLR + c*PLR**2 | ||
\note cubic curve = a + b*PLR + c*PLR**2 + d*PLR**3 | ||
\note PLR = part load ratio (heating load/steady state capacity) | ||
\type object-list | ||
\object-list UnivariateFunctions |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same here, \required-field
EnergyPlus/src/EnergyPlus/WaterToAirHeatPump.cc
Lines 637 to 647 in c854ba6
heatPump.PLFCurveIndex = Curve::GetCurveIndex(state, AlphArray(8)); // convert curve name to number | |
if (heatPump.PLFCurveIndex == 0) { | |
if (lAlphaBlanks(8)) { | |
ShowSevereError(state, format("{}{}=\"{}\", missing", RoutineName, CurrentModuleObject, heatPump.Name)); | |
ShowContinueError(state, format("...required {} is blank.", cAlphaFields(8))); | |
} else { | |
ShowSevereError(state, format("{}{}=\"{}\", invalid", RoutineName, CurrentModuleObject, heatPump.Name)); | |
ShowContinueError(state, format("...not found {}=\"{}\".", cAlphaFields(8), AlphArray(8))); | |
} | |
ErrorsFound = true; |
@@ -58095,6 +57901,7 @@ Coil:Heating:WaterToAirHeatPump:EquationFit, | |||
\memo Direct expansion (DX) heating coil for water-to-air heat pump (includes electric | |||
\memo compressor), single-speed, equation-fit model. Equation-fit model uses normalized | |||
\memo curves to describe the heat pump performance. | |||
\min-fields 12 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
N7 + A8 with last one required => \min-fields 15
Pull request overview
TODO:
Pull Request Author
Add to this list or remove from it as applicable. This is a simple templated set of guidelines.
Reviewer
This will not be exhaustively relevant to every PR.