Skip to content

Commit

Permalink
Merge pull request #4691 from NREL/4690_hotfix
Browse files Browse the repository at this point in the history
Followup to #4575
  • Loading branch information
jmarrec committed Sep 21, 2022
2 parents 866817c + 0d8dda1 commit 3fda532
Show file tree
Hide file tree
Showing 7 changed files with 316 additions and 21 deletions.
18 changes: 6 additions & 12 deletions src/model/CoilCoolingDXSingleSpeed.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -922,11 +922,8 @@ namespace model {
setEnergyInputRatioFunctionOfTemperatureCurve(energyInputRatioFofTemp);
setEnergyInputRatioFunctionOfFlowFractionCurve(energyInputRatioFofFlow);
setPartLoadFractionCorrelationCurve(partLoadFraction);
setEvaporativeCondenserEffectiveness(0.0);
autosizeEvaporativeCondenserAirFlowRate(); //autosize
autosizeEvaporativeCondenserPumpRatedPowerConsumption(); //autosize
setCrankcaseHeaterCapacity(0.0);
setMaximumOutdoorDryBulbTemperatureForCrankcaseHeaterOperation(0.0);
autosizeEvaporativeCondenserAirFlowRate(); //autosize
autosizeEvaporativeCondenserPumpRatedPowerConsumption(); //autosize
setMinimumOutdoorDryBulbTemperatureforCompressorOperation(-25.0); // Per E+ IDD default
setNominalTimeForCondensateRemovalToBegin(0.0);
setRatioOfInitialMoistureEvaporationRateAndSteadyStateLatentCapacity(0.0);
Expand All @@ -937,7 +934,7 @@ namespace model {
setCrankcaseHeaterCapacity(0.0);
setMaximumOutdoorDryBulbTemperatureForCrankcaseHeaterOperation(10.0);
setBasinHeaterCapacity(0.0);
setBasinHeaterSetpointTemperature(10.0);
setBasinHeaterSetpointTemperature(2.0);

auto schedule = model.alwaysOnDiscreteSchedule();
setAvailabilitySchedule(schedule);
Expand All @@ -964,11 +961,8 @@ namespace model {
setEnergyInputRatioFunctionOfTemperatureCurve(energyInputRatioFofTemp);
setEnergyInputRatioFunctionOfFlowFractionCurve(energyInputRatioFofFlow);
setPartLoadFractionCorrelationCurve(partLoadFraction);
setEvaporativeCondenserEffectiveness(0.0);
autosizeEvaporativeCondenserAirFlowRate(); //autosize
autosizeEvaporativeCondenserPumpRatedPowerConsumption(); //autosize
setCrankcaseHeaterCapacity(0.0);
setMaximumOutdoorDryBulbTemperatureForCrankcaseHeaterOperation(0.0);
autosizeEvaporativeCondenserAirFlowRate(); //autosize
autosizeEvaporativeCondenserPumpRatedPowerConsumption(); //autosize
setMinimumOutdoorDryBulbTemperatureforCompressorOperation(-25.0); // Per E+ IDD default
setNominalTimeForCondensateRemovalToBegin(0.0);
setRatioOfInitialMoistureEvaporationRateAndSteadyStateLatentCapacity(0.0);
Expand All @@ -979,7 +973,7 @@ namespace model {
setCrankcaseHeaterCapacity(0.0);
setMaximumOutdoorDryBulbTemperatureForCrankcaseHeaterOperation(10.0);
setBasinHeaterCapacity(0.0);
setBasinHeaterSetpointTemperature(10.0);
setBasinHeaterSetpointTemperature(2.0);
}

CoilCoolingDXSingleSpeed::CoilCoolingDXSingleSpeed(std::shared_ptr<detail::CoilCoolingDXSingleSpeed_Impl> p) : StraightComponent(std::move(p)) {}
Expand Down
12 changes: 6 additions & 6 deletions src/model/CoilCoolingDXTwoSpeed.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -863,13 +863,13 @@ namespace model {
// A13, \field Condenser Type
setCondenserType("AirCooled");
// N9, \field High Speed Evaporative Condenser Effectiveness
setHighSpeedEvaporativeCondenserEffectiveness(0.0);
setHighSpeedEvaporativeCondenserEffectiveness(0.9);
// N10, \field High Speed Evaporative Condenser Air Flow Rate
setHighSpeedEvaporativeCondenserAirFlowRate(boost::none); //autosize
// N11, \field High Speed Evaporative Condenser Pump Rated Power Consumption
setHighSpeedEvaporativeCondenserPumpRatedPowerConsumption(boost::none); //autosize
// N12, \field Low Speed Evaporative Condenser Effectiveness
setLowSpeedEvaporativeCondenserEffectiveness(0.0);
setLowSpeedEvaporativeCondenserEffectiveness(0.9);
// N13, \field Low Speed Evaporative Condenser Air Flow Rate
setLowSpeedEvaporativeCondenserAirFlowRate(boost::none); //autosize
// N14, \field Low Speed Evaporative Condenser Pump Rated Power Consumption
Expand All @@ -881,7 +881,7 @@ namespace model {
// N15, \field Basin Heater Capacity
setBasinHeaterCapacity(0.0);
// N16, \field Basin Heater Setpoint Temperature
setBasinHeaterSetpointTemperature(10.0);
setBasinHeaterSetpointTemperature(2.0);
// A16; \field Basin Heater Operating Schedule Name
setString(OS_Coil_Cooling_DX_TwoSpeedFields::BasinHeaterOperatingScheduleName, "");
setMinimumOutdoorDryBulbTemperatureforCompressorOperation(-25.0); // Per E+ IDD default
Expand Down Expand Up @@ -979,13 +979,13 @@ namespace model {
setLowSpeedTotalCoolingCapacityFunctionOfTemperatureCurve(coolingLowSpdCurveFofTemp);
setLowSpeedEnergyInputRatioFunctionOfTemperatureCurve(energyLowSpdInputRatioFofTemp);
setCondenserType("AirCooled");
setHighSpeedEvaporativeCondenserEffectiveness(0.0);
setHighSpeedEvaporativeCondenserEffectiveness(0.9);
setHighSpeedEvaporativeCondenserAirFlowRate(boost::none); //autosize
setHighSpeedEvaporativeCondenserPumpRatedPowerConsumption(boost::none); //autosize
setLowSpeedEvaporativeCondenserEffectiveness(0.0);
setLowSpeedEvaporativeCondenserEffectiveness(0.9);
setLowSpeedEvaporativeCondenserAirFlowRate(boost::none); //autosize
setLowSpeedEvaporativeCondenserPumpRatedPowerConsumption(boost::none); //autosize
setBasinHeaterCapacity(10.0);
setBasinHeaterCapacity(0.0);
setBasinHeaterSetpointTemperature(2.0);
setString(OS_Coil_Cooling_DX_TwoSpeedFields::BasinHeaterOperatingScheduleName, "");
setMinimumOutdoorDryBulbTemperatureforCompressorOperation(-25.0); // Per E+ IDD default
Expand Down
6 changes: 3 additions & 3 deletions src/model/test/CoilCoolingDXTwoSpeed_GTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,10 @@ TEST_F(ModelFixture, CoilCoolingDXTwoSpeed_CoilCoolingDXTwoSpeed) {
//ASSERT_EQ("Autosize",coil.getRatedHighSpeedTotalCoolingCapacity().get());
ASSERT_EQ(3, coil.ratedHighSpeedCOP());
ASSERT_EQ(3, coil.ratedLowSpeedCOP());
ASSERT_EQ(0, coil.highSpeedEvaporativeCondenserEffectiveness());
ASSERT_EQ(0, coil.lowSpeedEvaporativeCondenserEffectiveness());
ASSERT_EQ(0.9, coil.highSpeedEvaporativeCondenserEffectiveness());
ASSERT_EQ(0.9, coil.lowSpeedEvaporativeCondenserEffectiveness());
ASSERT_EQ(0, coil.basinHeaterCapacity());
ASSERT_EQ(10, coil.basinHeaterSetpointTemperature());
ASSERT_EQ(2, coil.basinHeaterSetpointTemperature());
ASSERT_EQ("AirCooled", coil.condenserType());
}

Expand Down
32 changes: 32 additions & 0 deletions src/osversion/VersionTranslator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7083,6 +7083,38 @@ namespace osversion {
m_new.emplace_back(std::move(varAdded));
}

} else if (iddname == "OS:Coil:Cooling:DX:SingleSpeed") {

// Remove Construction with Material:AirWall layer
// Replace with Construction:AirBoundary

auto iddObject = idd_3_4_1.getObject(iddname);
IdfObject newObject(iddObject.get());

// new defaults
// From blank to zero
// "Nominal Time for Condensate Removal to Begin"=>16 (blank => 0),
// "Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity"=>17,
// "Maximum Cycling Rate"=>18,
// "Latent Capacity Time Constant"=>19,
for (size_t i = 16; i <= 19; ++i) {
newObject.setDouble(i, 0.0);
}

// "Evaporative Condenser Effectiveness"=>22 (from 0.0 to 0.9),
// "Maximum Outdoor Dry-Bulb Temperature for Crankcase Heater Operation"=>26 (from 0.0 to 10.0)
newObject.setDouble(22, 0.9);
newObject.setDouble(26, 10.0);

for (size_t i = 0; i < object.numFields(); ++i) {
if ((value = object.getString(i, false, true))) {
newObject.setString(i, value.get());
}
}

m_refactored.push_back(RefactoredObjectData(object, newObject));
ss << newObject;

// No-op
} else {
ss << object;
Expand Down
197 changes: 197 additions & 0 deletions src/osversion/test/3_4_1/test_vt_CoilCoolingDXSingleSpeed.osm
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@

OS:Version,
{d0cf8c93-672f-4b73-97d8-df5593a8dc15}, !- Handle
3.4.0; !- Version Identifier

OS:Coil:Cooling:DX:SingleSpeed,
{0deb5c73-7be0-4772-9bd4-9e7d72c25f48}, !- Handle
CC with blanks, !- Name
{071de9ca-eee2-4bcf-b184-25b4bdad21b2}, !- Availability Schedule Name
autosize, !- Rated Total Cooling Capacity {W}
autosize, !- Rated Sensible Heat Ratio
3, !- Rated COP {W/W}
autosize, !- Rated Air Flow Rate {m3/s}
773.3, !- Rated Evaporator Fan Power Per Volume Flow Rate {W/(m3/s)}
, !- Air Inlet Node Name
, !- Air Outlet Node Name
{4916e517-feb6-4d34-9f11-e73eedab994f}, !- Total Cooling Capacity Function of Temperature Curve Name
{0bc3d776-bc05-4b32-828d-e078ad0942ed}, !- Total Cooling Capacity Function of Flow Fraction Curve Name
{d7a809cd-f065-4581-a6a3-f02612ece149}, !- Energy Input Ratio Function of Temperature Curve Name
{ecdc39de-57b5-4b70-b927-73c516ea11f4}, !- Energy Input Ratio Function of Flow Fraction Curve Name
{f4cd41f0-8626-4826-a0e7-01bb9fe78f77}, !- Part Load Fraction Correlation Curve Name
-25, !- Minimum Outdoor Dry-Bulb Temperature for Compressor Operation {C}
, !- Nominal Time for Condensate Removal to Begin {s}
, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
, !- Maximum Cycling Rate {cycles/hr}
, !- Latent Capacity Time Constant {s}
, !- Condenser Air Inlet Node Name
AirCooled, !- Condenser Type
0, !- Evaporative Condenser Effectiveness {dimensionless}
Autosize, !- Evaporative Condenser Air Flow Rate {m3/s}
Autosize, !- Evaporative Condenser Pump Rated Power Consumption {W}
0, !- Crankcase Heater Capacity {W}
0, !- Maximum Outdoor Dry-Bulb Temperature for Crankcase Heater Operation {C}
, !- Supply Water Storage Tank Name
, !- Condensate Collection Water Storage Tank Name
0, !- Basin Heater Capacity {W/K}
10, !- Basin Heater Setpoint Temperature {C}
; !- Basin Heater Operating Schedule Name

OS:Curve:Biquadratic,
{4916e517-feb6-4d34-9f11-e73eedab994f}, !- Handle
Curve Biquadratic 1, !- Name
0.942587793, !- Coefficient1 Constant
0.009543347, !- Coefficient2 x
0.00068377, !- Coefficient3 x**2
-0.011042676, !- Coefficient4 y
5.249e-06, !- Coefficient5 y**2
-9.72e-06, !- Coefficient6 x*y
17, !- Minimum Value of x
22, !- Maximum Value of x
13, !- Minimum Value of y
46; !- Maximum Value of y

OS:Curve:Quadratic,
{0bc3d776-bc05-4b32-828d-e078ad0942ed}, !- Handle
Curve Quadratic 1, !- Name
0.8, !- Coefficient1 Constant
0.2, !- Coefficient2 x
0, !- Coefficient3 x**2
0.5, !- Minimum Value of x
1.5; !- Maximum Value of x

OS:Curve:Biquadratic,
{d7a809cd-f065-4581-a6a3-f02612ece149}, !- Handle
Curve Biquadratic 2, !- Name
0.342414409, !- Coefficient1 Constant
0.034885008, !- Coefficient2 x
-0.0006237, !- Coefficient3 x**2
0.004977216, !- Coefficient4 y
0.000437951, !- Coefficient5 y**2
-0.000728028, !- Coefficient6 x*y
17, !- Minimum Value of x
22, !- Maximum Value of x
13, !- Minimum Value of y
46; !- Maximum Value of y

OS:Curve:Quadratic,
{ecdc39de-57b5-4b70-b927-73c516ea11f4}, !- Handle
Curve Quadratic 2, !- Name
1.1552, !- Coefficient1 Constant
-0.1808, !- Coefficient2 x
0.0256, !- Coefficient3 x**2
0.5, !- Minimum Value of x
1.5; !- Maximum Value of x

OS:Curve:Quadratic,
{f4cd41f0-8626-4826-a0e7-01bb9fe78f77}, !- Handle
Curve Quadratic 3, !- Name
0.85, !- Coefficient1 Constant
0.15, !- Coefficient2 x
0, !- Coefficient3 x**2
0, !- Minimum Value of x
1; !- Maximum Value of x

OS:Schedule:Constant,
{071de9ca-eee2-4bcf-b184-25b4bdad21b2}, !- Handle
Always On Discrete, !- Name
{e1321e24-1577-4379-ab41-733f485024fb}, !- Schedule Type Limits Name
1; !- Value

OS:ScheduleTypeLimits,
{e1321e24-1577-4379-ab41-733f485024fb}, !- Handle
OnOff, !- Name
0, !- Lower Limit Value
1, !- Upper Limit Value
Discrete, !- Numeric Type
Availability; !- Unit Type

OS:Coil:Cooling:DX:SingleSpeed,
{4a9fb6f7-417f-42bd-a889-f4a1e2b79e3f}, !- Handle
CC with numbers, !- Name
{071de9ca-eee2-4bcf-b184-25b4bdad21b2}, !- Availability Schedule Name
autosize, !- Rated Total Cooling Capacity {W}
autosize, !- Rated Sensible Heat Ratio
3, !- Rated COP {W/W}
autosize, !- Rated Air Flow Rate {m3/s}
773.3, !- Rated Evaporator Fan Power Per Volume Flow Rate {W/(m3/s)}
, !- Air Inlet Node Name
, !- Air Outlet Node Name
{9cddf1c2-a0a1-4c70-ae30-b5c1a1f8ec2a}, !- Total Cooling Capacity Function of Temperature Curve Name
{013dac57-dd3d-4930-a024-dbfbe717ca15}, !- Total Cooling Capacity Function of Flow Fraction Curve Name
{fe2115d6-be6a-4268-a5e3-ebeb08dd486f}, !- Energy Input Ratio Function of Temperature Curve Name
{c30d952b-7b3e-4969-90d6-e77f0440cfa8}, !- Energy Input Ratio Function of Flow Fraction Curve Name
{392e6e64-135e-4d83-a568-06dcc877c795}, !- Part Load Fraction Correlation Curve Name
15, !- Minimum Outdoor Dry-Bulb Temperature for Compressor Operation {C}
16, !- Nominal Time for Condensate Removal to Begin {s}
0.17, !- Ratio of Initial Moisture Evaporation Rate and Steady State Latent Capacity {dimensionless}
0.18, !- Maximum Cycling Rate {cycles/hr}
19, !- Latent Capacity Time Constant {s}
, !- Condenser Air Inlet Node Name
EvaporativelyCooled, !- Condenser Type
0.22, !- Evaporative Condenser Effectiveness {dimensionless}
Autosize, !- Evaporative Condenser Air Flow Rate {m3/s}
Autosize, !- Evaporative Condenser Pump Rated Power Consumption {W}
25, !- Crankcase Heater Capacity {W}
26, !- Maximum Outdoor Dry-Bulb Temperature for Crankcase Heater Operation {C}
, !- Supply Water Storage Tank Name
, !- Condensate Collection Water Storage Tank Name
0, !- Basin Heater Capacity {W/K}
10, !- Basin Heater Setpoint Temperature {C}
; !- Basin Heater Operating Schedule Name

OS:Curve:Biquadratic,
{9cddf1c2-a0a1-4c70-ae30-b5c1a1f8ec2a}, !- Handle
Curve Biquadratic 3, !- Name
0.942587793, !- Coefficient1 Constant
0.009543347, !- Coefficient2 x
0.00068377, !- Coefficient3 x**2
-0.011042676, !- Coefficient4 y
5.249e-06, !- Coefficient5 y**2
-9.72e-06, !- Coefficient6 x*y
17, !- Minimum Value of x
22, !- Maximum Value of x
13, !- Minimum Value of y
46; !- Maximum Value of y

OS:Curve:Quadratic,
{013dac57-dd3d-4930-a024-dbfbe717ca15}, !- Handle
Curve Quadratic 4, !- Name
0.8, !- Coefficient1 Constant
0.2, !- Coefficient2 x
0, !- Coefficient3 x**2
0.5, !- Minimum Value of x
1.5; !- Maximum Value of x

OS:Curve:Biquadratic,
{fe2115d6-be6a-4268-a5e3-ebeb08dd486f}, !- Handle
Curve Biquadratic 4, !- Name
0.342414409, !- Coefficient1 Constant
0.034885008, !- Coefficient2 x
-0.0006237, !- Coefficient3 x**2
0.004977216, !- Coefficient4 y
0.000437951, !- Coefficient5 y**2
-0.000728028, !- Coefficient6 x*y
17, !- Minimum Value of x
22, !- Maximum Value of x
13, !- Minimum Value of y
46; !- Maximum Value of y

OS:Curve:Quadratic,
{c30d952b-7b3e-4969-90d6-e77f0440cfa8}, !- Handle
Curve Quadratic 5, !- Name
1.1552, !- Coefficient1 Constant
-0.1808, !- Coefficient2 x
0.0256, !- Coefficient3 x**2
0.5, !- Minimum Value of x
1.5; !- Maximum Value of x

OS:Curve:Quadratic,
{392e6e64-135e-4d83-a568-06dcc877c795}, !- Handle
Curve Quadratic 6, !- Name
0.85, !- Coefficient1 Constant
0.15, !- Coefficient2 x
0, !- Coefficient3 x**2
0, !- Minimum Value of x
1; !- Maximum Value of x

27 changes: 27 additions & 0 deletions src/osversion/test/3_4_1/test_vt_CoilCoolingDXSingleSpeed.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#require '/usr/local/openstudio-3.4.0/Ruby/openstudio'

include OpenStudio::Model

m = Model.new

cc1 = CoilCoolingDXSingleSpeed.new(m)
cc1.setName("CC with blanks")
[16, 17, 18, 19].each { |i|
raise if !cc1.isEmpty(i)
}

cc = CoilCoolingDXSingleSpeed.new(m)
cc.setName("CC with numbers")
cc.setMinimumOutdoorDryBulbTemperatureforCompressorOperation(15)
cc.setNominalTimeForCondensateRemovalToBegin(16)
cc.setRatioOfInitialMoistureEvaporationRateAndSteadyStateLatentCapacity(0.17)
cc.setMaximumCyclingRate(0.18)
cc.setLatentCapacityTimeConstant(19)

cc.setCondenserType("EvaporativelyCooled")
cc.setEvaporativeCondenserEffectiveness(0.22)

cc.setCrankcaseHeaterCapacity(25)
cc.setMaximumOutdoorDryBulbTemperatureForCrankcaseHeaterOperation(26)

m.save('test_vt_CoilCoolingDXSingleSpeed.osm', true)

0 comments on commit 3fda532

Please sign in to comment.