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

Addition of Standard Effective Temperature (SET) as an Output Variable #7431

Merged
merged 12 commits into from
Aug 31, 2019

Conversation

RKStrand
Copy link
Contributor

@RKStrand RKStrand commented Jul 30, 2019

Pull request overview

Based on discussion on unmethours.com, there was a request to add Standard Effective Temperature (SET) as an output variable. This is calculated as part of the Pierce two-node thermal comfort model. This work fulfills this request and it is now possible to select SET as an output variable in EnergyPlus. This includes code changes, a unit test, documentation updates, and a modified test suite input file to show the use of this new output variable.

Work Checklist

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

Review Checklist

This will not be exhaustively relevant to every PR.

  • Functional code review (it has to work!)
  • If defect, results of running current develop vs this branch should exhibit the fix
  • CI status: all green or justified
  • Performance: CI Linux results include performance check
  • Unit Test(s)
  • C++ checks:
    • Argument types
    • If any virtual classes, ensure virtual destructor included, other things
  • IDD changes n/a
  • Required documentation updates?

RKStrand added 4 commits July 29, 2019 14:01
This commit contains the code necessary to produce the SET variable for
the Pierce Two-Node Thermal Comfort model.  If uses wish to have SET
for their run, they simply need to select Pierce as an option in the
People statement and then add syntax to produce the Zone Thermal
Comfort Pierce Model Standard Effective Temperature output variable.
This commit includes a new unit test for this work, documentation
changes (I/O Ref) to describe the new output variable, and some other
minor code cleanups.
Addition of syntax to an input file to show the new output variable.
@RKStrand RKStrand requested a review from Nigusse July 30, 2019 13:44
@RKStrand RKStrand self-assigned this Jul 30, 2019
@RKStrand RKStrand added Defect Includes code to repair a defect in EnergyPlus EnergyPlus labels Jul 30, 2019
@mjwitte mjwitte added this to the EnergyPlus 9.2.0 milestone Aug 5, 2019
OutputProcessor::TimeValue.allocate(2);
DataGlobals::DDOnlySimulation = true;

ManageSimulation();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would prefer a much more lightweight unit test. Seems you could just have zone, people, and schedules in the idf snippet and then just call the functions to process zone and people data and then CalcThermalComfortPierce.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moderately important. This should get your schedule in place, if done before processing the people:

    ScheduleManager::ProcessScheduleInput();
    ScheduleManager::ScheduleInputProcessed = true;

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mjwitte Ok, it's now much more lightweight. Doesn't call anything except the Pierce subroutine. Sets every manually in the unit test now. This should be up in GitHub as of now.

@@ -467,6 +467,12 @@ namespace ThermalComfort {
"Zone",
"State",
People(Loop).Name);
SetupOutputVariable("Zone Thermal Comfort Pierce Model Standard Effective Temperature",
OutputProcessor::Unit::None,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OutputProcessor::Unit::C ??


ASSERT_TRUE(process_idf(idf_objects));

OutputProcessor::TimeValue.allocate(2);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And when you merge in develop, this line will fail. Simply delete it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will delete it.

Two modifications were requested during the review process.  One was a
simple correction of the units for this new variable.  The other was a
revision (rewriting) of the unit test to make it more efficient.
For some reason, this did not commit properly the first time?
@rraustad rraustad added the OutputChange Code changes output in such a way that it cannot be merged after IO freeze label Aug 28, 2019
@rraustad
Copy link
Contributor

rraustad commented Aug 28, 2019

New report variable added but no changes to table reports.

@mjwitte mjwitte added NewFeature Includes code to add a new feature to EnergyPlus and removed Defect Includes code to repair a defect in EnergyPlus EnergyPlus OutputChange Code changes output in such a way that it cannot be merged after IO freeze labels Aug 28, 2019
@rraustad
Copy link
Contributor

  • Final code and unit test review, removed clear_state access from unit test
  • Compiled and reviewed IO Ref., small edits, no new figures to add to CMake.
  • Ran sequential unit tests in release mode without failure
  • Ran example file, no warnings in err file. Same for annual run.
  • Verified new report variable added to existing example file (TermReheatSurfTC.idf)
  • Pulled develop and uploaded final changes
  • Plotted new report variable for design days

image

Copy link
Contributor

@rraustad rraustad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor editorial mods to IO Ref, correct unit test, uploaded changes.

@rraustad
Copy link
Contributor

This is ready to merge once CI has a chance to process changes.

@rraustad
Copy link
Contributor

rraustad commented Aug 28, 2019

@RKStrand can you comment on the SET being that much above the summer design day zone temp in the figure above (e.g., occupants have on too many clothes, etc.)? The summer zone humidity ratio is actually lower than winter and zone temp is not that much different. No other code changes will be requested, just wondering if this is working as expected (i.e., if new issue should be opened).

@RKStrand
Copy link
Contributor Author

@rraustad I see what you are saying in the results, but I think this is actually what one would expect. SET includes both radiative and convective aspects as well as a bunch of other things. I would expect that SET would exhibit somewhat similar behavior to MAT but the surface temperatures in the space will dampen the response and make SET more closely related to outside air temperature (since that will in turn affect inside surface temperatures). So, I think that what you are seeing is actually correct--SET is lower than MAT for the most part for winter (because MRT is lower as a result of the cold exterior conditions) and SET is generally higher than MAT for summer. The "heavy" surfaces are damping the response of SET so when MAT changes rapidly like it does at the end of the work day in the summer data MAT can flip so that it is higher than SET because MAT in that situation is actually higher temporarily for that time. Basically, if one were to graph MAT, MRT, and SET, I would guess that in general SET should track between these two for the most part. Hopefully that makes sense, but if it doesn't, please let me know. Overall, I think what you are seeing is the right trend and I don't think there is a problem here that needs to be logged as a defect. Thanks for asking and for diligently checking results to see if there are additional problems!

@rraustad
Copy link
Contributor

Followup graph based on results discussion.

image

@rraustad
Copy link
Contributor

I can't think of a reason why this should not merge except for a complete CI assessment...

@RKStrand
Copy link
Contributor Author

@Myoldmopar This has met with approval from @rraustad but it sounds like there wasn't a complete CI result? Does it need to be relaunched or something?

@Myoldmopar
Copy link
Member

The CI machine itself needed to be relaunched. And it has been done. CI results should be coming in soon.

@rraustad
Copy link
Contributor

Diff's from Coil Sizing report fixes #7435 are creeping in here. Merged that one into develop 17 hrs ago.

@rraustad
Copy link
Contributor

Well, I was just going to merge this anyway since I understood the diff's. But it can't hurt to have a fresh clean CI result.

@RKStrand
Copy link
Contributor Author

@rraustad Oops--sorry to get in the way. Should have left it alone. But as you pointed out, a fresh CI can't (shouldn't) hurt.

@Myoldmopar
Copy link
Member

We've had an issue with the CI box and had to take it down. I'm working to get some extra support stood back up but this is likely to need to wait until after the weekend.

@rraustad
Copy link
Contributor

CI machines now match with expected results.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
NewFeature Includes code to add a new feature to EnergyPlus
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants