Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/3606_ChillerNodeRefactor' into d…
Browse files Browse the repository at this point in the history
…evelop
  • Loading branch information
kbenne committed Mar 3, 2020
2 parents 299fb2d + f1f3b40 commit 644272d
Show file tree
Hide file tree
Showing 20 changed files with 1,295 additions and 541 deletions.
121 changes: 66 additions & 55 deletions resources/model/OpenStudio.idd
Original file line number Diff line number Diff line change
Expand Up @@ -12692,90 +12692,90 @@ OS:Chiller:Electric:EIR,
\reference ConnectionObject
N1, \field Reference Capacity
\type real
\units W
\required-field
\minimum> 0.0
\autosizable
\units W
\minimum> 0
N2, \field Reference COP
\note Efficiency of the chiller compressor (cooling output/compressor energy input).
\note Condenser fan power should not be included here.
\type real
\required-field
\units W/W
\minimum> 0
\required-field
\minimum> 0.0
N3, \field Reference Leaving Chilled Water Temperature
\type real
\units C
\default 6.67
\units C
N4, \field Reference Entering Condenser Fluid Temperature
\type real
\units C
\default 29.4
\units C
N5, \field Reference Chilled Water Flow Rate
\type real
\autosizable
\units m3/s
\ip-units gal/min
\minimum> 0
\default autosize
\autosizable
\ip-units gal/min
\required-field
N6, \field Reference Condenser Fluid Flow Rate
\note This field is only used for Condenser Type = AirCooled or EvaporativelyCooled
\note when Heat Recovery is specified
\type real
\autosizable
\units m3/s
\autosizable
\minimum 0.0
\ip-units gal/min
\minimum 0
\default autosize
\note This field is only used for Condenser Type = AirCooled or EvaporativelyCooled
\note when Heat Recovery is specified
A3, \field Cooling Capacity Function of Temperature Curve Name
\note Cooling capacity as a function of CW supply temp and entering condenser temp
\note curve = a + b*CWS + c*CWS**2 + d*ECT + e*ECT**2 + f*CWS*ECT
\note CWS = supply (leaving) chilled water temperature(C)
\note ECT = entering condenser fluid temperature(C)
\type object-list
\required-field
\object-list BiquadraticCurves
A4, \field Electric Input to Cooling Output Ratio Function of Temperature Curve Name
\note Electric Input Ratio (EIR) as a function of temperature
\note EIR = 1/COP
\note curve = a + b*CWS + c*CWS**2 + d*ECT + e*ECT**2 + f*CWS*ECT
\note CWS = supply (leaving) chilled water temperature(C)
\note ECT = entering condenser fluid temperature(C)
A4, \field Electric Input to Cooling Output Ratio Function of Temperature Curve Name
\note Electric Input Ratio (EIR) as a function of temperature
\note EIR = 1/COP
\type object-list
\required-field
\object-list BiquadraticCurves
\note curve = a + b*CWS + c*CWS**2 + d*ECT + e*ECT**2 + f*CWS*ECT
\note CWS = supply (leaving) chilled water temperature(C)
\note ECT = entering condenser fluid temperature(C)
A5, \field Electric Input to Cooling Output Ratio Function of Part Load Ratio Curve Name
\note Electric Input Ratio (EIR) as a function of Part Load Ratio (PLR)
\note EIR = 1/COP
\note quadratic curve = a + b*PLR + c*PLR**2
\note PLR = part load ratio (cooling load/steady state capacity)
\type object-list
\required-field
\object-list QuadraticCurves
\note quadratic curve = a + b*PLR + c*PLR**2 is typical, other univariate curves may be used
\note PLR = part load ratio (cooling load/steady state capacity)
N7, \field Minimum Part Load Ratio
\type real
\note Part load ratio below which the chiller starts cycling on/off to meet the load.
\note Must be less than or equal to Maximum Part Load Ratio.
\type real
\minimum 0
\minimum 0.0
\default 0.1
N8, \field Maximum Part Load Ratio
\note Maximum allowable part load ratio. Must be greater than or equal to Minimum Part Load Ratio.
\type real
\minimum> 0
\note Maximum allowable part load ratio. Must be greater than or equal to Minimum Part Load Ratio.
\minimum> 0.0
\default 1.0
N9, \field Optimum Part Load Ratio
\type real
\note Optimum part load ratio where the chiller is most efficient.
\note Must be greater than or equal to the Minimum Part Load Ratio
\note and less than or equal to the Maximum Part Load Ratio.
\type real
\minimum> 0
\minimum> 0.0
\default 1.0
N10, \field Minimum Unloading Ratio
\type real
\note Part load ratio where the chiller can no longer unload and false loading begins.
\note Minimum unloading ratio must be greater than or equal to the Minimum Part Load Ratio
\note and less than or equal to the Maximum Part Load Ratio.
\type real
\minimum 0
\minimum 0.0
\default 0.2
A6, \field Chilled Water Inlet Node Name
\type object-list
Expand All @@ -12786,51 +12786,59 @@ OS:Chiller:Electric:EIR,
\required-field
\object-list ConnectionNames
A8, \field Condenser Inlet Node Name
\note Not required if air-cooled or evaporativly-cooled
\type object-list
\object-list ConnectionNames
\note Not required if air-cooled or evaporativly-cooled
A9, \field Condenser Outlet Node Name
\note Not required if air-cooled or evaporatively-cooled
\type object-list
\object-list ConnectionNames
\note Not required if air-cooled or evaporatively-cooled
A10, \field Condenser Type
\type choice
\default AirCooled
\key AirCooled
\key WaterCooled
\key EvaporativelyCooled
\default AirCooled
N11, \field Condenser Fan Power Ratio
\note Use for air-cooled or evaporatively-cooled condensers.
\note Ratio of condenser fan power to reference chiller capacity
\type real
\units W/W
\minimum 0
\minimum 0.0
\default 0.0
N12, \field Compressor Motor Efficiency
\note Fraction of compressor electrical energy that must be rejected by the condenser.
\note Enter 1.0 or leave this field blank for a hermetic compressor.
\note Use for air-cooled or evaporatively-cooled condensers.
\note Ratio of condenser fan power to reference chiller capacity
N12, \field Fraction of Compressor Electric Consumption Rejected by Condenser
\type real
\minimum 0
\maximum 1
\note Fraction of compressor electrical energy that must be rejected by the condenser.
\note Enter a value of 1.0 when modeling hermetic chillers.
\note For open chillers, enter the compressor motor efficiency.
\note This value should be greater than 0.6 for practical applications.
\minimum> 0.0
\maximum 1.0
\default 1.0
N13, \field Leaving Chilled Water Lower Temperature Limit
\type real
\units C
\default 2.0
\units C
A11, \field Chiller Flow Mode
\note Sets chilled water flow rate to either constant or variable.
\note Select operating mode for fluid flow through the chiller. "NotModulated" is for
\note either variable or constant pumping with flow controlled by the external plant system.
\note "ConstantFlow" is for constant pumping with flow controlled by chiller to operate at
\note full design flow rate. "LeavingSetpointModulated" is for variable pumping with flow
\note controlled by chiller to vary flow to target a leaving temperature setpoint.
\type choice
\key ConstantFlow
\key LeavingSetpointModulated
\key NotModulated
\default NotModulated
N14, \field Design Heat Recovery Water Flow Rate
\note If non-zero, then the heat recovery inlet and outlet node names must be entered.
\type real
\note If non-zero, then the heat recovery inlet and outlet node names must be entered.
\note Heat recovery is only available with Condenser Type = WaterCooled.
\units m3/s
\minimum 0.0
\autosizable
\ip-units gal/min
\minimum 0
\default 0.0
\required-field
A12, \field Heat Recovery Inlet Node Name
\type object-list
\object-list ConnectionNames
Expand All @@ -12840,38 +12848,39 @@ OS:Chiller:Electric:EIR,
N15, \field Sizing Factor
\note Multiplies the autosized capacity and flow rates
\type real
\minimum> 0
\minimum> 0.0
\default 1.0
N16, \field Basin Heater Capacity
\type real
\units W/K
\minimum 0.0
\default 0.0
\note This field is only used for Condenser Type = EvaporativelyCooled and for periods
\note when the basin heater is available (field Basin Heater Operating Schedule Name).
\note For this situation, the heater maintains the basin water temperature at the basin heater
\note setpoint temperature when the outdoor air temperature falls below the setpoint temperature.
\note The basin heater only operates when the chiller is not operating.
\type real
\units W/K
\minimum 0
\default 0.0
N17, \field Basin Heater Setpoint Temperature
\note This field is only used for Condenser Type = EvaporativelyCooled.
\note Enter the outdoor dry-bulb temperature when the basin heater turns on.
\type real
\units C
\minimum 2
\minimum 2.0
\default 2.0
\note This field is only used for Condenser Type = EvaporativelyCooled.
\note Enter the outdoor dry-bulb temperature when the basin heater turns on.
A14, \field Basin Heater Operating Schedule Name
\type object-list
\object-list ScheduleNames
\note This field is only used for Condenser Type = EvaporativelyCooled.
\note Schedule values greater than 0 allow the basin heater to operate whenever the outdoor
\note air dry-bulb temperature is below the basin heater setpoint temperature.
\note If a schedule name is not entered, the basin heater is allowed to operate
\note throughout the entire simulation.
\type object-list
\object-list ScheduleNames
N18, \field Condenser Heat Recovery Relative Capacity Fraction
\note This optional field is the fraction of total rejected heat that can be recovered at full load
\type real
\minimum 0.0
\maximum 1.0
\required-field
A15, \field Heat Recovery Inlet High Temperature Limit Schedule Name
\note This optional schedule of temperatures will turn off heat recovery if inlet exceeds the value
\type object-list
Expand Down Expand Up @@ -13272,6 +13281,7 @@ OS:Chiller:Absorption:Indirect,
N11, \field Design Generator Fluid Flow Rate
\type real
\units m3/s
\ip-units gal/min
\autosizable
\required-field
\note For variable flow this is the max flow and for constant flow this is the flow.
Expand Down Expand Up @@ -13417,6 +13427,7 @@ OS:Chiller:Absorption,
\type real
\autosizable
\units m3/s
\ip-units gal/min
\minimum> 0.0
\required-field
N17, \field Degree of Subcooling in Steam Generator
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,14 @@ boost::optional<IdfObject> ForwardTranslator::translateChillerAbsorption( Chille
}
}

if( auto mo = modelObject.tertiaryInletModelObject() ) {
idfObject.setString(Chiller_AbsorptionFields::GeneratorInletNodeName,mo->name().get());
}

if( auto mo = modelObject.tertiaryOutletModelObject() ) {
idfObject.setString(Chiller_AbsorptionFields::GeneratorOutletNodeName,mo->name().get());
}

if( modelObject.isNominalCapacityAutosized() ) {
idfObject.setString(Chiller_AbsorptionFields::NominalCapacity,"Autosize");
} else if( auto value = modelObject.nominalCapacity() ) {
Expand Down Expand Up @@ -180,13 +188,15 @@ boost::optional<IdfObject> ForwardTranslator::translateChillerAbsorption( Chille
idfObject.setString(Chiller_AbsorptionFields::GeneratorHeatSourceType,value);
}

// For now generator loops are not supported so this field needs to be blank
//if( modelObject.isDesignGeneratorFluidFlowRateAutosized() ) {
// idfObject.setString(Chiller_AbsorptionFields::DesignGeneratorFluidFlowRate,"Autosize");
//} else if( auto value = modelObject.designGeneratorFluidFlowRate() ) {
// idfObject.setDouble(Chiller_AbsorptionFields::DesignGeneratorFluidFlowRate,value.get());
//}
idfObject.setString(Chiller_AbsorptionFields::DesignGeneratorFluidFlowRate,"");
if( modelObject.generatorLoop() ) {
if( modelObject.isDesignGeneratorFluidFlowRateAutosized() ) {
idfObject.setString(Chiller_AbsorptionFields::DesignGeneratorFluidFlowRate,"Autosize");
} else if( auto value = modelObject.designGeneratorFluidFlowRate() ) {
idfObject.setDouble(Chiller_AbsorptionFields::DesignGeneratorFluidFlowRate,value.get());
}
} else {
idfObject.setString(Chiller_AbsorptionFields::DesignGeneratorFluidFlowRate,"");
}

{
auto value = modelObject.degreeofSubcoolinginSteamGenerator();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ boost::optional<IdfObject> ForwardTranslator::translateChillerAbsorptionIndirect
idfObject.setString(Chiller_Absorption_IndirectFields::GeneratorHeatSourceType,value);
}

if( modelObject.tertiaryPlantLoop() ) {
if( modelObject.generatorLoop() ) {
if( modelObject.isDesignGeneratorFluidFlowRateAutosized() ) {
idfObject.setString(Chiller_Absorption_IndirectFields::DesignGeneratorFluidFlowRate,"Autosize");
} else if( auto value = modelObject.designGeneratorFluidFlowRate() ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ boost::optional<IdfObject> ForwardTranslator::translateChillerElectricEIR( Chill
// CompressorMotorEfficiency
// Changed to Fraction of Compressor Electric Consumption Rejected by Condenser in E+ version 8.0

if( (value = modelObject.compressorMotorEfficiency()) )
if( (value = modelObject.fractionofCompressorElectricConsumptionRejectedbyCondenser()) )
{
idfObject.setDouble(Chiller_Electric_EIRFields::FractionofCompressorElectricConsumptionRejectedbyCondenser,value.get());
}
Expand Down Expand Up @@ -278,8 +278,15 @@ boost::optional<IdfObject> ForwardTranslator::translateChillerElectricEIR( Chill
idfObject.setString(Chiller_Electric_EIRFields::ElectricInputtoCoolingOutputRatioFunctionofPartLoadRatioCurveName,_curve->name().get());
}

if( (value = modelObject.sizingFactor()) ) {
idfObject.setDouble(Chiller_Electric_EIRFields::SizingFactor,value.get());

// DesignHeatRecoveryWaterFlowRate
if( modelObject.isDesignHeatRecoveryWaterFlowRateAutosized() )
{
idfObject.setString(Chiller_Electric_EIRFields::DesignHeatRecoveryWaterFlowRate,"Autosize");
}
else if( (value = modelObject.designHeatRecoveryWaterFlowRate()) )
{
idfObject.setDouble(Chiller_Electric_EIRFields::DesignHeatRecoveryWaterFlowRate,value.get());
}

// HeatRecoveryInletNodeName
Expand All @@ -300,6 +307,35 @@ boost::optional<IdfObject> ForwardTranslator::translateChillerElectricEIR( Chill
}
}

// Sizing Factor
if( (value = modelObject.sizingFactor()) ) {
idfObject.setDouble(Chiller_Electric_EIRFields::SizingFactor,value.get());
}

// Basin Heater Capacity
idfObject.setDouble(Chiller_Electric_EIRFields::BasinHeaterCapacity, modelObject.basinHeaterCapacity());

// Basin Heater Setpoint Temperature
idfObject.setDouble(Chiller_Electric_EIRFields::BasinHeaterSetpointTemperature, modelObject.basinHeaterSetpointTemperature());

// Basin Heater Operating Schedule Name
if (auto _schedule = modelObject.basinHeaterSchedule()) {
idfObject.setString(Chiller_Electric_EIRFields::BasinHeaterOperatingScheduleName, _schedule->name().get());
}

// Condenser Heat Recovery Relative Capacity Fraction
idfObject.setDouble(Chiller_Electric_EIRFields::CondenserHeatRecoveryRelativeCapacityFraction, modelObject.condenserHeatRecoveryRelativeCapacityFraction());

// Heat Recovery Inlet High Temperature Limit Schedule Name
if (auto _schedule = modelObject.heatRecoveryInletHighTemperatureLimitSchedule()) {
idfObject.setString(Chiller_Electric_EIRFields::HeatRecoveryInletHighTemperatureLimitScheduleName, _schedule->name().get());
}

// Heat Recovery Leaving Temperature Setpoint Node Name
if (auto _node = modelObject.heatRecoveryLeavingTemperatureSetpointNode()) {
idfObject.setString(Chiller_Electric_EIRFields::HeatRecoveryLeavingTemperatureSetpointNodeName, _node->name().get());
}

// End Use Subcategory
if( (s = modelObject.endUseSubcategory()) ) {
idfObject.setString(Chiller_Electric_EIRFields::EndUseSubcategory,s.get());
Expand All @@ -308,22 +344,6 @@ boost::optional<IdfObject> ForwardTranslator::translateChillerElectricEIR( Chill
return boost::optional<IdfObject>(idfObject);
}

//OPENSTUDIO_ENUM( Chiller_Electric_EIRFields,
// ((Name)(Name))
// ((CoolingCapacityFunctionofTemperatureCurveName)(Cooling Capacity Function of Temperature Curve Name))
// ((ElectricInputtoCoolingOutputRatioFunctionofTemperatureCurveName)(Electric Input to Cooling Output Ratio Function of Temperature Curve Name))
// ((ElectricInputtoCoolingOutputRatioFunctionofPartLoadRatioCurveName)(Electric Input to Cooling Output Ratio Function of Fan Coil Part Load Ratio Curve Name))
// ((CondenserInletNodeName)(Condenser Inlet Node Name))
// ((CondenserOutletNodeName)(Condenser Outlet Node Name))
// ((DesignHeatRecoveryWaterFlowRate)(Design Heat Recovery Water Flow Rate))
// ((HeatRecoveryInletNodeName)(Heat Recovery Inlet Node Name))
// ((HeatRecoveryOutletNodeName)(Heat Recovery Outlet Node Name))
// ((SizingFactor)(Sizing Factor))
// ((BasinHeaterCapacity)(Basin Heater Capacity))
// ((BasinHeaterSetpointTemperature)(Basin Heater Setpoint Temperature))
// ((BasinHeaterOperatingScheduleName)(Basin Heater Operating Schedule Name))
//);

} // energyplus

} // openstudio
Expand Down
Loading

0 comments on commit 644272d

Please sign in to comment.