-
Notifications
You must be signed in to change notification settings - Fork 401
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
Improved Support for Multi-speed Fans #9746
Changes from 17 commits
339d44e
5e095fb
ee4cbff
9206678
52a199a
1da6891
09e6b25
c52794b
9ffbd6e
b5424bd
e86f452
029f6ba
95499ca
187ef58
c7599db
ea74729
9fa565c
8bbc5bd
8d0b646
bfdd62a
8466b38
a9ea65b
fde9769
9c31b28
dcc69ed
13eb113
9c8a271
47bc2ce
f44c7fe
538b5a8
b03e970
cfee11b
5fec7ee
36a9e38
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -36447,10 +36447,18 @@ ZoneHVAC:WaterToAirHeatPump, | |
\note Constant results in 100% water flow regardless of compressor PLR | ||
\note Cycling results in water flow that matches compressor PLR | ||
\note ConstantOnDemand results in 100% water flow whenever the coil is on, but is 0% whenever the coil has no load | ||
A20; \field Design Specification ZoneHVAC Sizing Object Name | ||
A20, \field Design Specification ZoneHVAC Sizing Object Name | ||
\note Enter the name of a DesignSpecificationZoneHVACSizing object. | ||
\type object-list | ||
\object-list DesignSpecificationZoneHVACSizingName | ||
A21, \field Design Specification Multispeed Object Type | ||
\type choice | ||
\key UnitarySystemPerformance:Multispeed | ||
\note Enter the type of performance specification object used to describe the multispeed coil or fan. | ||
A22; \field Design Specification Multispeed Object Name | ||
\type object-list | ||
\object-list UnitarySystemPerformaceNames | ||
\note Enter the name of the performance specification object used to describe the multispeed coil or fan. | ||
|
||
ZoneHVAC:Dehumidifier:DX, | ||
\memo This object calculates the performance of zone (room) air dehumidifiers. | ||
|
@@ -42334,14 +42342,21 @@ ZoneHVAC:TerminalUnit:VariableRefrigerantFlow, | |
\default 21.0 | ||
\units C | ||
\note Supplemental heater will not operate when outdoor temperature exceeds this value. | ||
A19; \field Controlling Zone or Thermostat Location | ||
A19, \field Controlling Zone or Thermostat Location | ||
\type object-list | ||
\object-list ZoneNames | ||
\note Used only for AirloopHVAC equipment on a main branch and defines zone name where thermostat is located. | ||
\note Not required for zone equipment. Leave blank if terminal unit is used in AirLoopHVAC:OutdoorAirSystem:EquipmentList. | ||
\note Required when terminal unit is used on main AirloopHVAC branch and coils are not set point controlled. | ||
\note When terminal unit is used in air loop and is load controlled, this zone's thermostat will control operation. | ||
|
||
A20, \field Design Specification Multispeed Object Type | ||
\type choice | ||
\key UnitarySystemPerformance:Multispeed | ||
\note Enter the type of performance specification object used to describe the multispeed coil or fan. | ||
A21; \field Design Specification Multispeed Object Name | ||
\type object-list | ||
\object-list UnitarySystemPerformaceNames | ||
\note Enter the name of the performance specification object used to describe the multispeed coil or fan. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add two new optional fields as proposed There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Two optional fields, no transition 👍 |
||
|
||
\group Zone HVAC Radiative/Convective Units | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1169,6 +1169,16 @@ namespace HVACFan { | |
} | ||
} | ||
|
||
int FanSystem::fanNumOfSpeed() const | ||
{ | ||
return m_numSpeeds; | ||
} | ||
|
||
Real64 FanSystem::AirMassFlowRateAtSpeed(int const SpeedNum) | ||
{ | ||
return m_massFlowAtSpeed[SpeedNum]; | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If m_numSpeeds and m_massFlowAtSpeed were public you wouldn't need these new functions. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't have any problems to make these two members as public. I am going to wait a couple of days. |
||
|
||
// void | ||
// FanSystem::fanIsSecondaryDriver() | ||
//{ | ||
|
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -62,6 +62,7 @@ | |
#include <EnergyPlus/PlantComponent.hh> | ||
#include <EnergyPlus/SingleDuct.hh> | ||
#include <EnergyPlus/StandardRatings.hh> | ||
#include <EnergyPlus/UnitarySystem.hh> | ||
#include <EnergyPlus/UtilityRoutines.hh> | ||
|
||
namespace EnergyPlus { | ||
|
@@ -700,61 +701,75 @@ namespace HVACVariableRefrigerantFlow { | |
bool SuppHeatingCoilPresent = false; // FALSE if coil not present | ||
std::string AvailManagerListName; // Name of an availability manager list object | ||
int AvailStatus = 0; | ||
Real64 TerminalUnitSensibleRate = 0.0; // sensible cooling/heating rate of VRF terminal unit (W) | ||
Real64 TerminalUnitLatentRate = 0.0; // latent dehumidification/humidification rate of VRF terminal unit (W) | ||
Real64 TotalCoolingRate = 0.0; // report variable for total cooling rate (W) | ||
Real64 TotalHeatingRate = 0.0; // report variable for total heating rate (W) | ||
Real64 SensibleCoolingRate = 0.0; // report variable for sensible cooling rate (W) | ||
Real64 SensibleHeatingRate = 0.0; // report variable for sensible heating rate (W) | ||
Real64 LatentCoolingRate = 0.0; // report variable for latent cooling rate (W) | ||
Real64 LatentHeatingRate = 0.0; // report variable for latent heating rate (W) | ||
Real64 TotalCoolingEnergy = 0.0; // report variable for total cooling energy (J) | ||
Real64 TotalHeatingEnergy = 0.0; // report variable for total heating energy (J) | ||
Real64 SensibleCoolingEnergy = 0.0; // report variable for sensible cooling energy (J) | ||
Real64 SensibleHeatingEnergy = 0.0; // report variable for sensible heating energy (J) | ||
Real64 LatentCoolingEnergy = 0.0; // report variable for latent cooling energy (J) | ||
Real64 LatentHeatingEnergy = 0.0; // report variable for latent heating energy (J) | ||
bool EMSOverridePartLoadFrac = false; // User defined EMS function | ||
Real64 EMSValueForPartLoadFrac = 0.0; // user defined value for EMS function | ||
int IterLimitExceeded = 0; // index used for warning messages | ||
int FirstIterfailed = 0; // index used for warning messages | ||
int HVACSizingIndex = 0; // index of a HVACSizing object for a VRF terminal | ||
bool ATMixerExists = false; // True if there is an ATMixer | ||
std::string ATMixerName; // name of air terminal mixer | ||
int ATMixerIndex = 0; // index to the air terminal mixer | ||
int ATMixerType = 0; // 1 = inlet side mixer, 2 = supply side mixer | ||
int ATMixerPriNode = 0; // primary inlet air node number for the air terminal mixer | ||
int ATMixerSecNode = 0; // secondary air inlet node number for the air terminal mixer | ||
int ATMixerOutNode = 0; // outlet air node number for the air terminal mixer | ||
int SuppHeatCoilAirInletNode = 0; // supplemental heating coil air inlet node | ||
int SuppHeatCoilAirOutletNode = 0; // supplemental heating coil air outlet node | ||
int SuppHeatCoilFluidInletNode = 0; // supplemental heating coil fluid inlet node | ||
int SuppHeatCoilFluidOutletNode = 0; // supplemental heating coil fluid outlet node | ||
bool firstPass = true; // used to reset global sizing data | ||
PlantLocation SuppHeatCoilPlantLoc{}; // supplemental heating coil plant component index | ||
Real64 coilInNodeT = 0.0; // coil inlet node temp at full flow (C) | ||
Real64 coilInNodeW = 0.0; // coil inlet node humidity ratio at full flow (kg/kg) | ||
int fanInletNode = 0; // fan inlet node index | ||
int fanOutletNode = 0; // fan outlet node index | ||
bool MySuppCoilPlantScanFlag = true; // flag used to initialize plant comp for water and steam heating coils | ||
int airLoopNum = 0; // index to air loop | ||
bool isInOASys = false; // true if TU is configured in outside air system | ||
bool isInAirLoop = false; // true if TU is configured in an air loop | ||
bool isInZone = false; // true if TU is configured as zone equipment | ||
bool isSetPointControlled = false; // TU is controlled via setpoint instead of the standard load control | ||
bool coolSPActive = false; // set point controlled cooling coil active (needs to operate) | ||
bool heatSPActive = false; // set point controlled heating coil active (needs to operate) | ||
Real64 coolLoadToSP = 0.0; // load to set point in cooling mode | ||
Real64 heatLoadToSP = 0.0; // load to set point in heating mode | ||
Real64 coilTempSetPoint = 0.0; // coil control temperature | ||
Real64 suppTempSetPoint = 0.0; // supplemental heating coil control temperature | ||
Real64 controlZoneMassFlowFrac = 1.0; // ratio of control zone air mass flow rate to total zone air mass flow rate | ||
int zoneSequenceCoolingNum = 0; // zone equipment cooling sequence | ||
int zoneSequenceHeatingNum = 0; // zone equipment heating sequence | ||
int coolCoilAirInNode = 0; // cooling coil air inlet node number | ||
int coolCoilAirOutNode = 0; // cooling coil air outlet node number | ||
int heatCoilAirInNode = 0; // heating coil air inlet node number | ||
int heatCoilAirOutNode = 0; // heating coil air outlet node number | ||
Real64 TerminalUnitSensibleRate = 0.0; // sensible cooling/heating rate of VRF terminal unit (W) | ||
Real64 TerminalUnitLatentRate = 0.0; // latent dehumidification/humidification rate of VRF terminal unit (W) | ||
Real64 TotalCoolingRate = 0.0; // report variable for total cooling rate (W) | ||
Real64 TotalHeatingRate = 0.0; // report variable for total heating rate (W) | ||
Real64 SensibleCoolingRate = 0.0; // report variable for sensible cooling rate (W) | ||
Real64 SensibleHeatingRate = 0.0; // report variable for sensible heating rate (W) | ||
Real64 LatentCoolingRate = 0.0; // report variable for latent cooling rate (W) | ||
Real64 LatentHeatingRate = 0.0; // report variable for latent heating rate (W) | ||
Real64 TotalCoolingEnergy = 0.0; // report variable for total cooling energy (J) | ||
Real64 TotalHeatingEnergy = 0.0; // report variable for total heating energy (J) | ||
Real64 SensibleCoolingEnergy = 0.0; // report variable for sensible cooling energy (J) | ||
Real64 SensibleHeatingEnergy = 0.0; // report variable for sensible heating energy (J) | ||
Real64 LatentCoolingEnergy = 0.0; // report variable for latent cooling energy (J) | ||
Real64 LatentHeatingEnergy = 0.0; // report variable for latent heating energy (J) | ||
bool EMSOverridePartLoadFrac = false; // User defined EMS function | ||
Real64 EMSValueForPartLoadFrac = 0.0; // user defined value for EMS function | ||
int IterLimitExceeded = 0; // index used for warning messages | ||
int FirstIterfailed = 0; // index used for warning messages | ||
int HVACSizingIndex = 0; // index of a HVACSizing object for a VRF terminal | ||
bool ATMixerExists = false; // True if there is an ATMixer | ||
std::string ATMixerName; // name of air terminal mixer | ||
int ATMixerIndex = 0; // index to the air terminal mixer | ||
int ATMixerType = 0; // 1 = inlet side mixer, 2 = supply side mixer | ||
int ATMixerPriNode = 0; // primary inlet air node number for the air terminal mixer | ||
int ATMixerSecNode = 0; // secondary air inlet node number for the air terminal mixer | ||
int ATMixerOutNode = 0; // outlet air node number for the air terminal mixer | ||
int SuppHeatCoilAirInletNode = 0; // supplemental heating coil air inlet node | ||
int SuppHeatCoilAirOutletNode = 0; // supplemental heating coil air outlet node | ||
int SuppHeatCoilFluidInletNode = 0; // supplemental heating coil fluid inlet node | ||
int SuppHeatCoilFluidOutletNode = 0; // supplemental heating coil fluid outlet node | ||
bool firstPass = true; // used to reset global sizing data | ||
PlantLocation SuppHeatCoilPlantLoc{}; // supplemental heating coil plant component index | ||
Real64 coilInNodeT = 0.0; // coil inlet node temp at full flow (C) | ||
Real64 coilInNodeW = 0.0; // coil inlet node humidity ratio at full flow (kg/kg) | ||
int fanInletNode = 0; // fan inlet node index | ||
int fanOutletNode = 0; // fan outlet node index | ||
bool MySuppCoilPlantScanFlag = true; // flag used to initialize plant comp for water and steam heating coils | ||
int airLoopNum = 0; // index to air loop | ||
bool isInOASys = false; // true if TU is configured in outside air system | ||
bool isInAirLoop = false; // true if TU is configured in an air loop | ||
bool isInZone = false; // true if TU is configured as zone equipment | ||
bool isSetPointControlled = false; // TU is controlled via setpoint instead of the standard load control | ||
bool coolSPActive = false; // set point controlled cooling coil active (needs to operate) | ||
bool heatSPActive = false; // set point controlled heating coil active (needs to operate) | ||
Real64 coolLoadToSP = 0.0; // load to set point in cooling mode | ||
Real64 heatLoadToSP = 0.0; // load to set point in heating mode | ||
Real64 coilTempSetPoint = 0.0; // coil control temperature | ||
Real64 suppTempSetPoint = 0.0; // supplemental heating coil control temperature | ||
Real64 controlZoneMassFlowFrac = 1.0; // ratio of control zone air mass flow rate to total zone air mass flow rate | ||
int zoneSequenceCoolingNum = 0; // zone equipment cooling sequence | ||
int zoneSequenceHeatingNum = 0; // zone equipment heating sequence | ||
int coolCoilAirInNode = 0; // cooling coil air inlet node number | ||
int coolCoilAirOutNode = 0; // cooling coil air outlet node number | ||
int heatCoilAirInNode = 0; // heating coil air inlet node number | ||
int heatCoilAirOutNode = 0; // heating coil air outlet node number | ||
std::string DesignSpecMultispeedHPType; // Multiuple performance object type | ||
std::string DesignSpecMultispeedHPName; // Multiuple performance object name | ||
int DesignSpecMSHPIndex = -1; // Multiuple performance index | ||
int NumOfSpeedHeating = 0; // Number of heating speed | ||
int NumOfSpeedCooling = 0; // Number of cooling speed | ||
int HeatSpeedNum = 0; // Heating speed number | ||
int CoolSpeedNum = 0; // Cooling speed number | ||
std::vector<Real64> CoolVolumeFlowRate; | ||
std::vector<Real64> CoolMassFlowRate; | ||
std::vector<Real64> HeatVolumeFlowRate; | ||
std::vector<Real64> HeatMassFlowRate; | ||
int SpeedNum = 0; | ||
Real64 SpeedRatio = 0.0; | ||
Real64 CycRatio = 0.0; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add new variables |
||
|
||
// Methods for New VRF Model: Fluid Temperature Control | ||
//****************************************************************************** | ||
|
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.
Add two new optional fields as proposed
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.
Two optional fields, no transition 👍
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.
The wording here is a little funny, but maybe there's precedent:
The phrase "Enter the name of..." sounds like it's one of the many interactive text-based games I probably don't still play in 2023. If there is any other change to make, I'd prefer to at least take out the word "Enter". @mjwitte any thoughts on this one?
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 Actually, I copy the note from the same field used in UnitarySystem. I am open to any changes.
A27; \field Design Specification Multispeed Object Name
\type object-list
\object-list UnitarySystemPerformaceNames
\note Enter the name of the performance specification object used to describe the multispeed coil.
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.
@lgu1234 If there are other changes to make, then let's change this everywhere to simply say "\note The name of the . . . "
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.
@mjwitte Done everywhere (3 objects)
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.
The note actually still appears to say "Enter the name..." But it's fine, and not worth any other commits.