Skip to content

Commit

Permalink
Merge pull request #5099 from NREL/v24.1.0-IOFreeze-hx
Browse files Browse the repository at this point in the history
v24.1.0-IOFreeze: HeatExchangerAirToAirSensibleAndLatent
  • Loading branch information
jmarrec committed Mar 7, 2024
2 parents d573444 + 8c9e74e commit ebce271
Show file tree
Hide file tree
Showing 13 changed files with 1,328 additions and 259 deletions.
62 changes: 31 additions & 31 deletions resources/energyplus/ProposedEnergy+.idd
Original file line number Diff line number Diff line change
Expand Up @@ -36941,37 +36941,13 @@ HeatExchanger:AirToAir:SensibleAndLatent,
\minimum 0.0
\maximum 1.0
\default 0.0
N4, \field Sensible Effectiveness at 75% Heating Air Flow
N4, \field Sensible Effectiveness at 100% Cooling Air Flow
\type real
\units dimensionless
\minimum 0.0
\maximum 1.0
\default 0.0
N5, \field Latent Effectiveness at 75% Heating Air Flow
\type real
\units dimensionless
\minimum 0.0
\maximum 1.0
\default 0.0
N6, \field Sensible Effectiveness at 100% Cooling Air Flow
\type real
\units dimensionless
\minimum 0.0
\maximum 1.0
\default 0.0
N7, \field Latent Effectiveness at 100% Cooling Air Flow
\type real
\units dimensionless
\minimum 0.0
\maximum 1.0
\default 0.0
N8, \field Sensible Effectiveness at 75% Cooling Air Flow
\type real
\units dimensionless
\minimum 0.0
\maximum 1.0
\default 0.0
N9, \field Latent Effectiveness at 75% Cooling Air Flow
N5, \field Latent Effectiveness at 100% Cooling Air Flow
\type real
\units dimensionless
\minimum 0.0
Expand All @@ -36989,7 +36965,7 @@ HeatExchanger:AirToAir:SensibleAndLatent,
A6, \field Exhaust Air Outlet Node Name
\required-field
\type node
N10,\field Nominal Electric Power
N6, \field Nominal Electric Power
\type real
\units W
\ip-units W
Expand All @@ -37012,35 +36988,59 @@ HeatExchanger:AirToAir:SensibleAndLatent,
\key ExhaustOnly
\key MinimumExhaustTemperature
\default None
N11,\field Threshold Temperature
N7, \field Threshold Temperature
\type real
\units C
\default 1.7
\note Supply (outdoor) air inlet temp threshold for exhaust air recirculation and
\note exhaust only frost control types. Exhaust air outlet threshold Temperature for
\note minimum exhaust temperature frost control type.
N12,\field Initial Defrost Time Fraction
N8, \field Initial Defrost Time Fraction
\type real
\units dimensionless
\minimum 0.0
\maximum 1.0
\default 0.083
\note Fraction of the time when frost control will be invoked at the threshold temperature.
\note This field only used for exhaust air recirc and exhaust-only frost control types.
N13,\field Rate of Defrost Time Fraction Increase
N9, \field Rate of Defrost Time Fraction Increase
\type real
\units 1/K
\minimum 0.0
\default 0.012
\note Rate of increase in defrost time fraction as actual temp falls below threshold temperature.
\note This field only used for exhaust air recirc and exhaust-only frost control types.
A10;\field Economizer Lockout
A10,\field Economizer Lockout
\type choice
\key Yes
\key No
\default Yes
\note Yes means that the heat exchanger will be locked out (off)
\note when the economizer is operating or high humidity control is active
A11,\field Sensible Effectiveness of Heating Air Flow Curve Name
\note optional
\note if this field has value, then the sensivle effectiveness for heating
\note will be the value in N2 multiplied by this curve value
\type object-list
\object-list UnivariateFunctions
A12,\field Latent Effectiveness of Heating Air Flow Curve Name
\note optional
\note if this field has value, then the latent effectiveness for heating
\note will be the value in N3 multiplied by this curve value
\type object-list
\object-list UnivariateFunctions
A13,\field Sensible Effectiveness of Cooling Air Flow Curve Name
\note optional
\note if this field has value, then the sensivle effectiveness for cooling
\note will be the value in N4 multiplied by this curve value
\type object-list
\object-list UnivariateFunctions
A14;\field Latent Effectiveness of Cooling Air Flow Curve Name
\note optional
\note if this field has value, then the latent effectiveness for cooling
\note will be the value in N5 multiplied by this curve value
\type object-list
\object-list UnivariateFunctions

HeatExchanger:Desiccant:BalancedFlow,
\memo This object models a balanced desiccant heat exchanger.
Expand Down
62 changes: 31 additions & 31 deletions resources/model/OpenStudio.idd
Original file line number Diff line number Diff line change
Expand Up @@ -24742,37 +24742,13 @@ OS:HeatExchanger:AirToAir:SensibleAndLatent,
\units dimensionless
\minimum 0.0
\maximum 1.0
N4, \field Sensible Effectiveness at 75% Heating Air Flow
N4, \field Sensible Effectiveness at 100% Cooling Air Flow
\type real
\required-field
\units dimensionless
\minimum 0.0
\maximum 1.0
N5, \field Latent Effectiveness at 75% Heating Air Flow
\type real
\required-field
\units dimensionless
\minimum 0.0
\maximum 1.0
N6, \field Sensible Effectiveness at 100% Cooling Air Flow
\type real
\required-field
\units dimensionless
\minimum 0.0
\maximum 1.0
N7, \field Latent Effectiveness at 100% Cooling Air Flow
\type real
\required-field
\units dimensionless
\minimum 0.0
\maximum 1.0
N8, \field Sensible Effectiveness at 75% Cooling Air Flow
\type real
\required-field
\units dimensionless
\minimum 0.0
\maximum 1.0
N9, \field Latent Effectiveness at 75% Cooling Air Flow
N5, \field Latent Effectiveness at 100% Cooling Air Flow
\type real
\required-field
\units dimensionless
Expand All @@ -24790,7 +24766,7 @@ OS:HeatExchanger:AirToAir:SensibleAndLatent,
A7, \field Exhaust Air Outlet Node
\type object-list
\object-list ConnectionNames
N10,\field Nominal Electric Power
N6, \field Nominal Electric Power
\type real
\required-field
\units W
Expand All @@ -24813,33 +24789,57 @@ OS:HeatExchanger:AirToAir:SensibleAndLatent,
\key ExhaustAirRecirculation
\key ExhaustOnly
\key MinimumExhaustTemperature
N11,\field Threshold Temperature
N7, \field Threshold Temperature
\type real
\units C
\default 1.7
\note Supply (outdoor) air inlet temp threshold for exhaust air recirculation and
\note exhaust only frost control types. Exhaust air outlet threshold Temperature for
\note minimum exhaust temperature frost control type.
N12,\field Initial Defrost Time Fraction
N8, \field Initial Defrost Time Fraction
\type real
\units dimensionless
\minimum 0.0
\maximum 1.0
\note Fraction of the time when frost control will be invoked at the threshold temperature.
\note This field only used for exhaust air recirc and exhaust-only frost control types.
N13,\field Rate of Defrost Time Fraction Increase
N9, \field Rate of Defrost Time Fraction Increase
\type real
\units 1/K
\minimum 0.0
\note Rate of increase in defrost time fraction as actual temp falls below threshold temperature.
\note This field only used for exhaust air recirc and exhaust-only frost control types.
A11;\field Economizer Lockout
A11,\field Economizer Lockout
\type choice
\required-field
\key Yes
\key No
\note Yes means that the heat exchanger will be locked out (off)
\note when the economizer is operating or high humidity control is active
A12,\field Sensible Effectiveness of Heating Air Flow Curve Name
\note optional
\note if this field has value, then the sensivle effectiveness for heating
\note will be the value in N2 multiplied by this curve value
\type object-list
\object-list UnivariateFunctions
A13,\field Latent Effectiveness of Heating Air Flow Curve Name
\note optional
\note if this field has value, then the latent effectiveness for heating
\note will be the value in N3 multiplied by this curve value
\type object-list
\object-list UnivariateFunctions
A14,\field Sensible Effectiveness of Cooling Air Flow Curve Name
\note optional
\note if this field has value, then the sensivle effectiveness for cooling
\note will be the value in N4 multiplied by this curve value
\type object-list
\object-list UnivariateFunctions
A15;\field Latent Effectiveness of Cooling Air Flow Curve Name
\note optional
\note if this field has value, then the latent effectiveness for cooling
\note will be the value in N5 multiplied by this curve value
\type object-list
\object-list UnivariateFunctions

OS:HeatExchanger:Desiccant:BalancedFlow,
\memo This object models a balanced desiccant heat exchanger.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "../../model/Node.hpp"
#include "../../model/Node_Impl.hpp"
#include "../../model/Schedule.hpp"
#include "../../model/Curve.hpp"
#include "../../utilities/idf/Workspace.hpp"
#include "../../utilities/core/Logger.hpp"
#include <utilities/idd/HeatExchanger_AirToAir_SensibleAndLatent_FieldEnums.hxx>
Expand Down Expand Up @@ -63,18 +64,6 @@ namespace energyplus {
idfObject.setDouble(HeatExchanger_AirToAir_SensibleAndLatentFields::LatentEffectivenessat100_HeatingAirFlow, d.get());
}

// SensibleEffectivenessat75_HeatingAirFlow
d = modelObject.sensibleEffectivenessat75HeatingAirFlow();
if (d) {
idfObject.setDouble(HeatExchanger_AirToAir_SensibleAndLatentFields::SensibleEffectivenessat75_HeatingAirFlow, d.get());
}

// LatentEffectivenessat75_HeatingAirFlow
d = modelObject.latentEffectivenessat75HeatingAirFlow();
if (d) {
idfObject.setDouble(HeatExchanger_AirToAir_SensibleAndLatentFields::LatentEffectivenessat75_HeatingAirFlow, d.get());
}

// SensibleEffectivenessat100_CoolingAirFlow
d = modelObject.sensibleEffectivenessat100CoolingAirFlow();
if (d) {
Expand All @@ -87,18 +76,6 @@ namespace energyplus {
idfObject.setDouble(HeatExchanger_AirToAir_SensibleAndLatentFields::LatentEffectivenessat100_CoolingAirFlow, d.get());
}

// SensibleEffectivenessat75_CoolingAirFlow
d = modelObject.sensibleEffectivenessat75CoolingAirFlow();
if (d) {
idfObject.setDouble(HeatExchanger_AirToAir_SensibleAndLatentFields::SensibleEffectivenessat75_CoolingAirFlow, d.get());
}

// LatentEffectivenessat75_CoolingAirFlow
d = modelObject.latentEffectivenessat75CoolingAirFlow();
if (d) {
idfObject.setDouble(HeatExchanger_AirToAir_SensibleAndLatentFields::LatentEffectivenessat75_CoolingAirFlow, d.get());
}

// SupplyAirInletNodeName
temp = modelObject.primaryAirInletModelObject();
if (temp) {
Expand Down Expand Up @@ -185,6 +162,34 @@ namespace energyplus {
idfObject.setString(HeatExchanger_AirToAir_SensibleAndLatentFields::EconomizerLockout, "No");
}

// SensibleEffectivenessofHeatingAirFlowCurveName
if (boost::optional<Curve> sensibleEffectivenessofHeatingAirFlowCurve_ = modelObject.sensibleEffectivenessofHeatingAirFlowCurve()) {
if (boost::optional<IdfObject> wo_ = translateAndMapModelObject(sensibleEffectivenessofHeatingAirFlowCurve_.get())) {
idfObject.setString(HeatExchanger_AirToAir_SensibleAndLatentFields::SensibleEffectivenessofHeatingAirFlowCurveName, wo_->nameString());
}
}

// LatentEffectivenessofHeatingAirFlowCurveName
if (boost::optional<Curve> latentEffectivenessofHeatingAirFlowCurve_ = modelObject.latentEffectivenessofHeatingAirFlowCurve()) {
if (boost::optional<IdfObject> wo_ = translateAndMapModelObject(latentEffectivenessofHeatingAirFlowCurve_.get())) {
idfObject.setString(HeatExchanger_AirToAir_SensibleAndLatentFields::LatentEffectivenessofHeatingAirFlowCurveName, wo_->nameString());
}
}

// SensibleEffectivenessofCoolingAirFlowCurveName
if (boost::optional<Curve> sensibleEffectivenessofCoolingAirFlowCurve_ = modelObject.sensibleEffectivenessofCoolingAirFlowCurve()) {
if (boost::optional<IdfObject> wo_ = translateAndMapModelObject(sensibleEffectivenessofCoolingAirFlowCurve_.get())) {
idfObject.setString(HeatExchanger_AirToAir_SensibleAndLatentFields::SensibleEffectivenessofCoolingAirFlowCurveName, wo_->nameString());
}
}

// LatentEffectivenessofCoolingAirFlowCurveName
if (boost::optional<Curve> latentEffectivenessofCoolingAirFlowCurve_ = modelObject.latentEffectivenessofCoolingAirFlowCurve()) {
if (boost::optional<IdfObject> wo_ = translateAndMapModelObject(latentEffectivenessofCoolingAirFlowCurve_.get())) {
idfObject.setString(HeatExchanger_AirToAir_SensibleAndLatentFields::LatentEffectivenessofCoolingAirFlowCurveName, wo_->nameString());
}
}

return idfObject;
}

Expand Down
Loading

0 comments on commit ebce271

Please sign in to comment.