Skip to content

Fix VRF Thermostat Control Type Issues#11611

Open
mitchute wants to merge 3 commits into
developfrom
fix-vrf-thermostat-ctrl-type-issues
Open

Fix VRF Thermostat Control Type Issues#11611
mitchute wants to merge 3 commits into
developfrom
fix-vrf-thermostat-ctrl-type-issues

Conversation

@mitchute
Copy link
Copy Markdown
Collaborator

Pull request overview

Description of the purpose of this PR

Pull Request Author

  • Title of PR should be user-synopsis style (clearly understandable in a standalone changelog context)
  • Label the PR with at least one of: Defect, Refactoring, NewFeature, Performance, and/or DoNoPublish
  • Pull requests that impact EnergyPlus code must also include unit tests to cover enhancement or defect repair
  • Author should provide a "walkthrough" of relevant code changes using a GitHub code review comment process
  • If any diffs are expected, author must demonstrate they are justified using plots and descriptions
  • If changes fix a defect, the fix should be demonstrated in plots and descriptions
  • If any defect files are updated to a more recent version, upload new versions here or on DevSupport
  • If IDD requires transition, transition source, rules, ExpandObjects, and IDFs must be updated, and add IDDChange label
  • If structural output changes, add to output rules file and add OutputChange label
  • If adding/removing any LaTeX docs or figures, update that document's CMakeLists file dependencies
  • If adding/removing any output files (e.g., eplustbl.*)
    • Update ..\scripts\Epl-run.bat
    • Update ..\scripts\RunEPlus.bat
    • Update ..\src\EPLaunch\ MainModule.bas, epl-ui.frm, and epl.vbp (VersionComments)
    • Update ...github\workflows\energyplus.py

Reviewer

  • Perform a Code Review on GitHub
  • If branch is behind develop, merge develop and build locally to check for side effects of the merge
  • If defect, verify by running develop branch and reproducing defect, then running PR and reproducing fix
  • If feature, test running new feature, try creative ways to break it
  • CI status: all green or justified
  • Check that performance is not impacted (CI Linux results include performance check)
  • Run Unit Test(s) locally
  • Check any new function arguments for performance impacts
  • Verify IDF naming conventions and styles, memos and notes and defaults
  • If new idf included, locally check the err file and other outputs

state.dataHVACVarRefFlow->CoolingLoad(VRFCond) = true;
} else if (state.dataHVACVarRefFlow->VRF(VRFCond).prioritySched->getCurrentVal() == 1) {
state.dataHVACVarRefFlow->HeatingLoad(VRFCond) = true;
state.dataHVACVarRefFlow->CoolingLoad(VRFCond) = false;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

just wondering why? If scheduled didn't work before then it doesn't matter but why bother changing this?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

This is to align the behavior with the IDD.

  A26, \field Thermostat Priority Schedule Name
       \type object-list
       \object-list ScheduleNames
       \note this field is required if Master Thermostat Priority Control Type is Scheduled.
       \note Schedule values of 0 denote cooling, 1 for heating, and all other values disable the system.

@mitchute mitchute added the Defect Includes code to repair a defect in EnergyPlus label Jun 1, 2026
Copy link
Copy Markdown
Collaborator Author

@mitchute mitchute left a comment

Choose a reason for hiding this comment

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

Walk through

state.dataHVACVarRefFlow->CoolingLoad(VRFCond) = true;
} else if (state.dataHVACVarRefFlow->VRF(VRFCond).prioritySched->getCurrentVal() == 1) {
state.dataHVACVarRefFlow->HeatingLoad(VRFCond) = true;
state.dataHVACVarRefFlow->CoolingLoad(VRFCond) = false;
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

This is to align the behavior with the IDD.

  A26, \field Thermostat Priority Schedule Name
       \type object-list
       \object-list ScheduleNames
       \note this field is required if Master Thermostat Priority Control Type is Scheduled.
       \note Schedule values of 0 denote cooling, 1 for heating, and all other values disable the system.

\paragraph{Field: Thermostat Priority Schedule Name}\label{field-thermostat-priority-schedule-name-000}

This alpha field identifies the schedule used when the previous field is set to Scheduled. Schedule values of 0 denote heating mode while values of 1 denote cooling mode. Any other values will force the system off.
This alpha field identifies the schedule used when the previous field is set to Scheduled. Schedule values of 0 denote cooling mode while values of 1 denote heating mode. Any other values will force the system off.
Copy link
Copy Markdown
Collaborator Author

@mitchute mitchute Jun 1, 2026

Choose a reason for hiding this comment

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

IDD vs. the code & docs had these reversed. I deferred to the IDD, but we can change that if the reverse would be better.

}

if (thisVrfSys.ThermostatPriority == ThermostatCtrlType::ScheduledPriority) {
if (thisVrfSys.ThermostatPriority == ThermostatCtrlType::Scheduled) {
Copy link
Copy Markdown
Collaborator Author

@mitchute mitchute Jun 1, 2026

Choose a reason for hiding this comment

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

Renamed to be consistent with the IDD key choice.

Comment on lines -10284 to -10286
case ThermostatCtrlType::FirstOnPriority: {
// na
} break;
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Unused, so I got rid of it.

Comment on lines +95 to +99
"LOADPRIORITY",
"MASTERTHERMOSTATPRIORITY",
"SCHEDULED",
"THERMOSTATOFFSETPRIORITY",
"ZONEPRIORITY",
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Removed the unused place holder, and sorted the list.

};

static constexpr std::array<std::string_view, static_cast<int>(ThermostatCtrlType::Num)> ThermostatCtrlTypeUC = {
"LOADPRIORITY", "ZONEPRIORITY", "THERMOSTATOFFSETPRIORITY", "SCHEDULEDPRIORITY", "MASTERTHERMOSTATPRIORITY",
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

This is the real fix - changing SCHEDULEDPRIORITY to SCHEDULED since that is the key in the IDD that this is looking for.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AirConditioner:VariableRefrigerantFlow not working with Scheduled master thermostat

3 participants