@@ -1250,23 +1250,23 @@ ReportCoilSelection::setCoilCoolingCapacity(
12501250 // DesOutAirVolFlow
12511251
12521252 // loop over cooled zones attached to this airloop to find average Room condition
1253- // weighted average by zone air volume for all the zones on this coil's air system
1254- Real64 sumT_V ( 0.0 ); // numerator for average zone temperature, zone temperature values times zone air volume
1255- Real64 sumW_V ( 0.0 ); // numerator average zone humidity ratio, zone hum rat value times zone air volume
1253+ // change weighting to use supply air flow rate rather than zone air volume for all the zones on this coil's air system
1254+ Real64 sumT_Vdot ( 0.0 ); // numerator for average zone temperature, zone temperature values times zone supply air volume flow rate
1255+ Real64 sumW_Vdot ( 0.0 ); // numerator average zone humidity ratio, zone hum rat value times zone supply air volume flow rate
12561256 Real64 sumSensLoad ( 0.0 ); // straight total for zone design loads
1257- Real64 sumV ( 0.0 ); // denominator for zone-volume weighted averages
1257+ Real64 sumVdot ( 0.0 ); // denominator for supply air flow rate weighted averages
12581258
12591259 for ( auto & z : c->zoneNum ) {
12601260 Real64 mult = DataHeatBalance::Zone ( z ).Multiplier * DataHeatBalance::Zone ( z ).ListMultiplier ;
1261- sumT_V += DataSizing::FinalZoneSizing ( z ).ZoneTempAtCoolPeak * DataHeatBalance::Zone ( z ).Volume * mult;
1262- sumW_V += DataSizing::FinalZoneSizing ( z ).ZoneHumRatAtCoolPeak * DataHeatBalance::Zone ( z ).Volume * mult;
1261+ sumT_Vdot += DataSizing::FinalZoneSizing ( z ).ZoneTempAtCoolPeak * DataSizing::FinalZoneSizing ( z ).DesCoolVolFlow * mult;
1262+ sumW_Vdot += DataSizing::FinalZoneSizing ( z ).ZoneHumRatAtCoolPeak * DataSizing::FinalZoneSizing ( z ).DesCoolVolFlow * mult;
12631263 sumSensLoad += DataSizing::FinalZoneSizing ( z ).DesCoolLoad * mult;
1264- sumV += DataHeatBalance::Zone ( z ).Volume * mult;
1264+ sumVdot += DataSizing::FinalZoneSizing ( z ).DesCoolVolFlow * mult;
12651265 }
12661266
1267- if ( c->zoneNum .size () > 0 && sumV > 0.0 ) {
1268- c->rmPeakTemp = ( sumT_V / sumV );
1269- c->rmPeakHumRat = ( sumW_V / sumV );
1267+ if ( c->zoneNum .size () > 0 && sumVdot > 0.0 ) {
1268+ c->rmPeakTemp = ( sumT_Vdot / sumVdot );
1269+ c->rmPeakHumRat = ( sumW_Vdot / sumVdot );
12701270 c->rmPeakRelHum = Psychrometrics::PsyRhFnTdbWPb ( c->rmPeakTemp ,c->rmPeakHumRat , DataEnvironment::StdBaroPress ) * 100.0 ; // convert to percentage
12711271 } else {
12721272 c->rmPeakTemp = -999.0 ;
@@ -1282,22 +1282,38 @@ ReportCoilSelection::setCoilCoolingCapacity(
12821282
12831283 // now set Coil Ent And Lvg Conditions
12841284 if ( curOASysNum > 0 ) { // then this system coil is part of OA system
1285- c->coilDesEntTemp = DataSizing::FinalSysSizing ( curSysNum ).OutTempAtCoolPeak ;
1286- c->coilDesEntHumRat = DataSizing::FinalSysSizing ( curSysNum ).OutHumRatAtCoolPeak ;
1285+ if ( c->coilDesEntTemp == -999.0 ) { // don't overwrite if already set directly
1286+ c->coilDesEntTemp = DataSizing::FinalSysSizing ( curSysNum ).OutTempAtCoolPeak ;
1287+ }
1288+ if ( c->coilDesEntHumRat == -999.0 ) { // don't overwrite if already set directly
1289+ c->coilDesEntHumRat = DataSizing::FinalSysSizing ( curSysNum ).OutHumRatAtCoolPeak ;
1290+ }
12871291 c->coilDesEntWetBulb = Psychrometrics::PsyTwbFnTdbWPb ( c->coilDesEntTemp , c->coilDesEntHumRat , DataEnvironment::StdBaroPress, " ReportCoilSelection::setCoilCoolingCapacity" );
12881292 c->coilDesEntEnth = Psychrometrics::PsyHFnTdbW ( c->coilDesEntTemp , c->coilDesEntHumRat );
1289- c->coilDesLvgTemp = DataSizing::FinalSysSizing ( curSysNum ).PrecoolTemp ;
1290- c->coilDesLvgHumRat = DataSizing::FinalSysSizing ( curSysNum ).PrecoolHumRat ;
1293+ if ( c->coilDesLvgTemp == -999.0 ) { // don't overwrite if already set directly
1294+ c->coilDesLvgTemp = DataSizing::FinalSysSizing ( curSysNum ).PrecoolTemp ;
1295+ }
1296+ if ( c->coilDesLvgHumRat == -999.0 ) { // don't overwrite if already set directly
1297+ c->coilDesLvgHumRat = DataSizing::FinalSysSizing ( curSysNum ).PrecoolHumRat ;
1298+ }
12911299 c->coilDesLvgWetBulb = Psychrometrics::PsyTwbFnTdbWPb ( c->coilDesLvgTemp , c->coilDesLvgHumRat , DataEnvironment::StdBaroPress, " ReportCoilSelection::setCoilCoolingCapacity" );
12921300 c->coilDesLvgEnth = Psychrometrics::PsyHFnTdbW ( c->coilDesLvgTemp , c->coilDesLvgHumRat );
12931301
12941302 } else { // part of main air loop
1295- c->coilDesEntTemp = DataSizing::FinalSysSizing ( curSysNum ).MixTempAtCoolPeak ;
1296- c->coilDesEntHumRat = DataSizing::FinalSysSizing ( curSysNum ).MixHumRatAtCoolPeak ;
1303+ if ( c->coilDesEntTemp == -999.0 ) { // don't overwrite if already set directly
1304+ c->coilDesEntTemp = DataSizing::FinalSysSizing ( curSysNum ).MixTempAtCoolPeak ;
1305+ }
1306+ if ( c->coilDesEntHumRat == -999.0 ) { // don't overwrite if already set directly
1307+ c->coilDesEntHumRat = DataSizing::FinalSysSizing ( curSysNum ).MixHumRatAtCoolPeak ;
1308+ }
12971309 c->coilDesEntWetBulb = Psychrometrics::PsyTwbFnTdbWPb ( c->coilDesEntTemp , c->coilDesEntHumRat , DataEnvironment::StdBaroPress, " ReportCoilSelection::setCoilCoolingCapacity" );
12981310 c->coilDesEntEnth = Psychrometrics::PsyHFnTdbW ( c->coilDesEntTemp , c->coilDesEntHumRat );
1299- c->coilDesLvgTemp = DataSizing::FinalSysSizing ( curSysNum ).CoolSupTemp ;
1300- c->coilDesLvgHumRat = DataSizing::FinalSysSizing ( curSysNum ).CoolSupHumRat ;
1311+ if ( c->coilDesLvgTemp == -999.0 ) {
1312+ c->coilDesLvgTemp = DataSizing::FinalSysSizing ( curSysNum ).CoolSupTemp ;
1313+ }
1314+ if ( c->coilDesLvgHumRat == -999.0 ) { // don't overwrite if already set directly
1315+ c->coilDesLvgHumRat = DataSizing::FinalSysSizing ( curSysNum ).CoolSupHumRat ;
1316+ }
13011317 c->coilDesLvgWetBulb = Psychrometrics::PsyTwbFnTdbWPb ( c->coilDesLvgTemp , c->coilDesLvgHumRat , DataEnvironment::StdBaroPress, " ReportCoilSelection::setCoilCoolingCapacity" );
13021318 c->coilDesLvgEnth = Psychrometrics::PsyHFnTdbW ( c->coilDesLvgTemp , c->coilDesLvgHumRat );
13031319 if ( DataAirSystems::PrimaryAirSystem ( curSysNum ).NumOACoolCoils > 0 ) { // there is precooling of the OA stream
@@ -1322,7 +1338,11 @@ ReportCoilSelection::setCoilCoolingCapacity(
13221338
13231339 c->rmSensibleAtPeak = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesCoolLoad ;
13241340
1325- c->oaPeakVolFlow = DataSizing::ZoneEqSizing ( curZoneEqNum ).OAVolFlow ;
1341+ if ( DataSizing::ZoneEqSizing ( curZoneEqNum ).OAVolFlow > 0.0 ) {
1342+ c->oaPeakVolFlow = DataSizing::ZoneEqSizing ( curZoneEqNum ).OAVolFlow ;
1343+ } else {
1344+ c->oaPeakVolFlow = 0.0 ;
1345+ }
13261346 // coil entering conditions depend on the type of zone equipment involved
13271347 // set typeof_Coil integer
13281348 if ( DataSizing::TermUnitIU ) { // an unpowered induction terminal unit
@@ -1339,20 +1359,36 @@ ReportCoilSelection::setCoilCoolingCapacity(
13391359 // c->coilDesEntTemp = c->oaPeakVolFrac * DataSizing::FinalZoneSizing( curZoneEqNum ).OutTempAtCoolPeak + ( 1.0 - c->oaPeakVolFrac ) * DataSizing::FinalZoneSizing( curZoneEqNum ).ZoneTempAtCoolPeak;
13401360 // c->coilDesEntHumRat = c->oaPeakVolFrac * DataSizing::FinalZoneSizing( curZoneEqNum ).OutHumRatAtCoolPeak + ( 1.0 - c->oaPeakVolFrac ) * DataSizing::FinalZoneSizing( curZoneEqNum ).ZoneHumRatAtCoolPeak;
13411361 } else if ( DataSizing::ZoneEqDXCoil ) {
1342- if ( DataSizing::ZoneEqSizing ( curZoneEqNum ).OAVolFlow > 0.0 ) {
1343- c->coilDesEntTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesCoolCoilInTemp ;
1344- c->coilDesEntHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesCoolCoilInHumRat ;
1362+ if ( DataSizing::ZoneEqSizing ( curZoneEqNum ).OAVolFlow > 0.0 ) {
1363+ if ( c->coilDesEntTemp == -999.0 ) { // don't overwrite if already set directly by setCoilEntAirTemp
1364+ c->coilDesEntTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesCoolCoilInTemp ;
1365+ }
1366+ if ( c->coilDesEntHumRat == -999.0 ) { // don't overwrite if already set directly by setCoilEntAirHumRat
1367+ c->coilDesEntHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesCoolCoilInHumRat ;
1368+ }
13451369 } else {
1346- c->coilDesEntTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).ZoneRetTempAtCoolPeak ;
1347- c->coilDesEntHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).ZoneHumRatAtCoolPeak ;
1370+ if ( c->coilDesEntTemp == -999.0 ) { // don't overwrite if already set directly by setCoilEntAirTemp
1371+ c->coilDesEntTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).ZoneRetTempAtCoolPeak ;
1372+ }
1373+ if ( c->coilDesEntHumRat == -999.0 ) { // don't overwrite if already set directly by setCoilEntAirHumRat
1374+ c->coilDesEntHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).ZoneHumRatAtCoolPeak ;
1375+ }
13481376 }
13491377 } else {
1350- c->coilDesEntTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesCoolCoilInTemp ;
1351- c->coilDesEntHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesCoolCoilInHumRat ;
1378+ if ( c->coilDesEntTemp == -999.0 ) { // don't overwrite if already set directly by setCoilEntAirTemp
1379+ c->coilDesEntTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesCoolCoilInTemp ;
1380+ }
1381+ if ( c->coilDesEntHumRat == -999.0 ) { // don't overwrite if already set directly by setCoilEntAirHumRat
1382+ c->coilDesEntHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesCoolCoilInHumRat ;
1383+ }
13521384 }
13531385
1354- c->coilDesLvgTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).CoolDesTemp ;
1355- c->coilDesLvgHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).CoolDesHumRat ;
1386+ if ( c->coilDesLvgTemp == -999.0 ) { // don't overwrite if already set directly by setCoilLvgAirTemp
1387+ c->coilDesLvgTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).CoolDesTemp ;
1388+ }
1389+ if ( c->coilDesLvgHumRat == -999.0 ) { // don't overwrite if already set directly by setCoilLvgAirHumRat
1390+ c->coilDesLvgHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).CoolDesHumRat ;
1391+ }
13561392 c->coilDesLvgWetBulb = Psychrometrics::PsyTwbFnTdbWPb ( c->coilDesLvgTemp , c->coilDesLvgHumRat , DataEnvironment::StdBaroPress, " ReportCoilSelection::setCoilCoolingCapacity" );
13571393 c->coilDesLvgEnth = Psychrometrics::PsyHFnTdbW ( c->coilDesLvgTemp , c->coilDesLvgHumRat );
13581394 } else {
@@ -1409,23 +1445,23 @@ ReportCoilSelection::setCoilHeatingCapacity(
14091445 // DesOutAirVolFlow
14101446
14111447 // loop over heated zones attached to this airloop to find average Room condition, if none heated use cooled zones
1412- // weighted average by zone air volume for all the zones on this coil's air system
1413- Real64 sumT_V ( 0.0 ); // numerator for average zone temperature, zone temperature values times zone air volume
1414- Real64 sumW_V ( 0.0 ); // numerator average zone humidity ratio, zone hum rat value times zone air volume
1448+ // weighted average by zone supply air volume flow rate for all the zones on this coil's air system
1449+ Real64 sumT_Vdot ( 0.0 ); // numerator for average zone temperature, zone temperature values times zone air volume
1450+ Real64 sumW_Vdot ( 0.0 ); // numerator average zone humidity ratio, zone hum rat value times zone air volume
14151451 Real64 sumLoad ( 0.0 ); // straight total for zone design loads
1416- Real64 sumV ( 0.0 ); // denominator for zone-volume weighted averages
1452+ Real64 sumVdot ( 0.0 ); // denominator for zone-volume weighted averages
14171453
14181454 for ( auto & z : c->zoneNum ) {
14191455 Real64 mult = DataHeatBalance::Zone ( z ).Multiplier * DataHeatBalance::Zone ( z ).ListMultiplier ;
1420- sumT_V += DataSizing::FinalZoneSizing ( z ).ZoneTempAtHeatPeak * DataHeatBalance::Zone ( z ).Volume * mult;
1421- sumW_V += DataSizing::FinalZoneSizing ( z ).ZoneHumRatAtHeatPeak * DataHeatBalance::Zone ( z ).Volume * mult;
1456+ sumT_Vdot += DataSizing::FinalZoneSizing ( z ).ZoneTempAtHeatPeak * DataSizing::FinalZoneSizing ( z ).DesHeatVolFlow * mult;
1457+ sumW_Vdot += DataSizing::FinalZoneSizing ( z ).ZoneHumRatAtHeatPeak * DataSizing::FinalZoneSizing ( z ).DesHeatVolFlow * mult;
14221458 sumLoad += DataSizing::FinalZoneSizing ( z ).DesHeatLoad * mult;
1423- sumV += DataHeatBalance::Zone ( z ).Volume * mult;
1459+ sumVdot += DataSizing::FinalZoneSizing ( z ).DesHeatVolFlow * mult;
14241460 }
14251461
1426- if ( c->zoneNum .size () > 0 && sumV > 0.0 ) {
1427- c->rmPeakTemp = ( sumT_V / sumV );
1428- c->rmPeakHumRat = ( sumW_V / sumV );
1462+ if ( c->zoneNum .size () > 0 && sumVdot > 0.0 ) {
1463+ c->rmPeakTemp = ( sumT_Vdot / sumVdot );
1464+ c->rmPeakHumRat = ( sumW_Vdot / sumVdot );
14291465 c->rmPeakRelHum = Psychrometrics::PsyRhFnTdbWPb ( c->rmPeakTemp ,c->rmPeakHumRat , DataEnvironment::StdBaroPress ) * 100.0 ; // convert to percentage
14301466 } else {
14311467 c->rmPeakTemp = -999.0 ;
@@ -1488,7 +1524,11 @@ ReportCoilSelection::setCoilHeatingCapacity(
14881524
14891525 c->rmSensibleAtPeak = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesHeatLoad ;
14901526
1491- c->oaPeakVolFlow = DataSizing::ZoneEqSizing ( curZoneEqNum ).OAVolFlow ;
1527+ if ( DataSizing::ZoneEqSizing ( curZoneEqNum ).OAVolFlow > 0.0 ) {
1528+ c->oaPeakVolFlow = DataSizing::ZoneEqSizing ( curZoneEqNum ).OAVolFlow ;
1529+ } else {
1530+ c->oaPeakVolFlow = 0.0 ;
1531+ }
14921532 // coil entering conditions depend on the type of zone equipment involved
14931533 // set typeof_Coil integer
14941534 if ( DataSizing::TermUnitIU ) { // an unpowered induction terminal unit
@@ -1500,25 +1540,40 @@ ReportCoilSelection::setCoilHeatingCapacity(
15001540 // should be picked up by CoolingWaterDesAirInletHumRatSizing and CoolingWaterDesWaterInletTempSizing
15011541
15021542 } else if ( DataSizing::ZoneEqDXCoil ) {
1503- if ( DataSizing::ZoneEqSizing ( curZoneEqNum ).OAVolFlow > 0.0 ) {
1504- c->coilDesEntTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesHeatCoilInTemp ;
1505- c->coilDesEntHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesHeatCoilInHumRat ;
1543+ if ( DataSizing::ZoneEqSizing ( curZoneEqNum ).OAVolFlow > 0.0 ) {
1544+ if ( c->coilDesEntTemp == -999.0 ) { // don't overwrite if already set directly by setCoilEntAirTemp
1545+ c->coilDesEntTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesHeatCoilInTemp ;
1546+ }
1547+ if ( c->coilDesEntHumRat == -999.0 ) { // don't overwrite if already set directly by setCoilEntAirHumRat
1548+ c->coilDesEntHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesHeatCoilInHumRat ;
1549+ }
15061550 } else {
1507- c->coilDesEntTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).ZoneRetTempAtHeatPeak ;
1508- c->coilDesEntHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).ZoneHumRatAtHeatPeak ;
1551+ if ( c->coilDesEntTemp == -999.0 ) { // don't overwrite if already set directly by setCoilEntAirTemp
1552+ c->coilDesEntTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).ZoneRetTempAtHeatPeak ;
1553+ }
1554+ if ( c->coilDesEntHumRat == -999.0 ) { // don't overwrite if already set directly by setCoilEntAirHumRat
1555+ c->coilDesEntHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).ZoneHumRatAtHeatPeak ;
1556+ }
15091557 }
15101558 } else {
1511- c->coilDesEntTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesHeatCoilInTemp ;
1512- c->coilDesEntHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesHeatCoilInHumRat ;
1559+ if ( c->coilDesEntTemp == -999.0 ) { // don't overwrite if already set directly by setCoilEntAirTemp
1560+ c->coilDesEntTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesHeatCoilInTemp ;
1561+ }
1562+ if ( c->coilDesEntHumRat == -999.0 ) { // don't overwrite if already set directly by setCoilEntAirHumRat
1563+ c->coilDesEntHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).DesHeatCoilInHumRat ;
1564+ }
15131565 }
15141566
15151567
15161568 c->coilDesEntWetBulb = Psychrometrics::PsyTwbFnTdbWPb ( c->coilDesEntTemp , c->coilDesEntHumRat , DataEnvironment::StdBaroPress, " ReportCoilSelection::setCoilCoolingCapacity" );
15171569 c->coilDesEntEnth = Psychrometrics::PsyHFnTdbW ( c->coilDesEntTemp , c->coilDesEntHumRat );
15181570
1519-
1520- c->coilDesLvgTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).HeatDesTemp ;
1521- c->coilDesLvgHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).HeatDesHumRat ;
1571+ if ( c->coilDesLvgTemp == -999.0 ) { // don't overwrite if already set directly by setCoilLvgAirTemp
1572+ c->coilDesLvgTemp = DataSizing::FinalZoneSizing ( curZoneEqNum ).HeatDesTemp ;
1573+ }
1574+ if ( c->coilDesLvgHumRat == -999.0 ) { // don't overwrite if already set directly by setCoilLvgAirHumRat
1575+ c->coilDesLvgHumRat = DataSizing::FinalZoneSizing ( curZoneEqNum ).HeatDesHumRat ;
1576+ }
15221577 c->coilDesLvgWetBulb = Psychrometrics::PsyTwbFnTdbWPb ( c->coilDesLvgTemp , c->coilDesLvgHumRat , DataEnvironment::StdBaroPress, " ReportCoilSelection::setCoilCoolingCapacity" );
15231578 c->coilDesLvgEnth = Psychrometrics::PsyHFnTdbW ( c->coilDesLvgTemp , c->coilDesLvgHumRat );
15241579
0 commit comments