-
Notifications
You must be signed in to change notification settings - Fork 396
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
Convective Baseboard Crashing in Sizing Routine When Autosizing is Not Requested #10721
Conversation
This fix avoids the hard crash that is taking place in the defect IDF by not doing sizing when sizing is not required for the convective water baseboard unit.
Added a unit test to exercise the new subroutine that was added to fix the defect issue. Candidate PR commit.
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.
@RKStrand This fixes the defect file, but it still doesn't protect against trying to size without sizing active.
e.g. Take the user file and change the heating capacity to "autosize" - vector crash.
Take the user file and leave the baseboard hardsized, but change the fan to autosize:
** Severe ** For autosizing of Fan:SystemModel UNIT1_ROOM_AC_SUPPLY_FAN, a system sizing run must be done.
** ~~~ ** The "SimulationControl" object did not have the field "Do System Sizing Calculation" set to Yes.
** Fatal ** Program terminates due to previously shown condition(s).
So something is still missing in the baseboard sizing to check if sizing is active. @rraustad probably knows this by heart.
From the defect description, the FinalZoneSizing array won't exist if there is no sizing run:
because those arrays are allocated in this call:
That line should be moved down to after this check, for the places it's needed, and this check should be in all the correct places because it may be that only 1 input is autosized. If the flag this->MySizeFlag does actually work correctly then this check could be the first thing that happens (because you know that this zone equipment needs to be autosized) and only have to do it once, but that's risky if that flag is not set correctly.
|
OK, so this still needs some work, I'm going to just move on from this for now. |
I believe that the flag will now be set correctly based on the user input for this object. However, as @mjwitte pointed out, the file will crash in its current form if you set any of the three key input parameters to autosize. The file (I think this is a contradiction when you set one of those inputs to autosize without doing other things) says "NO" to zone sizing. If you want a piece of zone equipment sized, shouldn't you have to actually tell E+ that you are sizing it? I think that is what @rraustad is pointing out. The question now is what to do about it. Here is what I propose: in the new subroutine which checks for the presence of things that are autosized, also check to see if the user has requested zone sizing (state.dataGlobal->DoZoneSizing = true), then everything should be fine and other existing checks will weed out any other problems. However, if DoZoneSizing is false but one of the baseboard parameters is autosize, send a severe/fatal stating that in order to autosize a baseboard unit that flag in the SimulationControl input must be set to "Yes" and other inputs need to be set properly. Would this address the concern here, assuming that the correct checks are being made (I think they are) for autosizing baseboard inputs? |
@RKStrand CheckZoneSizing is the call that does the check you suggest and SizeBaseboard is already set up to do that. It's just that the FinalZoneSizing shortcut is set before that check. I guess it makes no difference if CheckZoneSizing is called from GetBaseboardInput or SizeBaseboard (like all other models in E+). Your choices are to move the shortcut for FinalZoneSizing below the call to CheckZoneSizing, or call CheckZoneSizing from the new function in GetBaseboardInput and delete all the calls to CheckZoneSizing in SizeBaseboard. |
I have just made a commit that should fix the issue that @mjwitte noted using one of the methods that @rraustad recommended. Hopefully, this addresses the concerns and still comes back green. I went with doing the CheckZoneSizing from the new subroutine and getting rid of all of the other calls. That seemed to me to be more "efficient" and clearer though different from some other models. |
@RKStrand I'm not sure if you saw or not, but this has got 3 failing unit tests that would need to be addressed:
|
@Myoldmopar Yes, I did see that. I will try to address that either today or tomorrow. I know why they are failing and should be able to edit those files so that they don't crash. In my opinion, they should not have worked previously because they autosize without actually requesting an autosizing run. |
Fixed three input files that crashed because of the new requirement that zone sizing must be done in order to do autosizing of convective baseboard units. Expect differences in results from develop but these should now run.
|
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 is all good now. Thanks @RKStrand
Merge-queued.
Pull request overview
NOTE: ENHANCEMENTS MUST FOLLOW A SUBMISSION PROCESS INCLUDING A FEATURE PROPOSAL AND DESIGN DOCUMENT PRIOR TO SUBMITTING CODE
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.