Skip to content

Commit eff89ef

Browse files
committed
35 deg default improvements; HSPF match fix
1 parent cffcca3 commit eff89ef

File tree

2 files changed

+29
-23
lines changed

2 files changed

+29
-23
lines changed

src/CNLOADS.CPP

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3139,11 +3139,9 @@ float RSYS::rs_PerfASHP( // ASHP performance (simplified call)
31393139
// returns total heating capacity (compressor + capDefrostHt), Btuh
31403140
{
31413141
float capHt, inpHt, capDfHt, capHtMin, inpHtMin, capDfHtMin;
3142-
float what = rs_PerfASHP2(ashpModel, tdbOut, fanHAdj,
3142+
COP = rs_PerfASHP2(ashpModel, tdbOut, fanHAdj,
31433143
capHt, inpHt, capDfHt, capHtMin, inpHtMin, capDfHtMin);
31443144

3145-
COP = inpHt > 0.f ? capHt / inpHt : 0.f;
3146-
31473145
return capHt;
31483146

31493147
} // RSYS::rs_PerfASHP
@@ -3169,7 +3167,7 @@ float RSYS::rs_PerfASHP2( // ASHP performance
31693167

31703168
float COPAdjF /*=1.f*/) // COP adjustment factor
31713169
// multiplies final COP result
3172-
// returns heating capacity (including defrost if any), Btuh
3170+
// returns compressor-only full-speed COP (as adjusted by COPAdjF)
31733171
{
31743172
capDfHt = 0.f;
31753173
BOOL bDoDefrost = (ashpModel & 0x100) == 0
@@ -3386,11 +3384,11 @@ RC RSYS::rs_SetupASHP() // set ASHP defaults and derived parameters
33863384
rs_COP47 = 0.3225f * rs_HSPF + 0.9099f;
33873385
if (!IsSet( RSYS_COP17))
33883386
rs_COP17 = rs_HSPF < 8
3389-
? 0.5183f * rs_HSPF - 1.7244
3387+
? 0.5183f * rs_HSPF - 1.7244f
33903388
: 0.2186f * rs_HSPF + 0.6734f;
33913389
#elif ASHP_COPREG == 6
33923390
if (rs_IsPkgRoom())
3393-
{ rs_COP17 = 0.6870 * rs_COP47;
3391+
{ rs_COP17 = 0.6870f * rs_COP47;
33943392
// rs_cap17 set above
33953393
}
33963394
else if (!rs_IsASHPHydronic())
@@ -3400,13 +3398,19 @@ RC RSYS::rs_SetupASHP() // set ASHP defaults and derived parameters
34003398
rs_COP47 = 0.3225f * rs_HSPF + 0.9099f;
34013399
if (!IsSet( RSYS_COP17))
34023400
{ rs_COP17 = 0.2186f * rs_HSPF + 0.6734f;
3403-
RC rc1 = rs_HSPFMatchASHP(); // adjust COP17 to be
3404-
// consistent with rs_HSPF
3405-
if (rc1 != RCOK // if fail
3406-
|| (!rs_isAuszH && rs_COP17 > rs_COP47)) // or unreasonable
3407-
// (allow during ausz)
3408-
rc = err( "RSYS '%s': No reasonable value found for rsCOP17."
3409-
"\n Check rsHSPF and other heating inputs.", name);
3401+
int iTry;
3402+
RC rc1;
3403+
const int nTry = 40;
3404+
for (iTry=0; iTry<nTry; iTry++)
3405+
{ rc1 = rs_HSPFMatchASHP(); // adjust COP17 to be
3406+
// consistent with rs_HSPF
3407+
if (rc1 || rs_COP17 < rs_COP47 || IsSet( RSYS_COP47))
3408+
break; // accept rs_COP17 if < rs_COP47 or rs_COP47 is fixed
3409+
rs_COP47 += 0.1f; // try again with higher rs_COP47
3410+
}
3411+
if ((rc1 || iTry==nTry) && !rs_isAuszH)
3412+
rc |= err("RSYS '%s': No reasonable value found for rsCOP17 and/or rsCOP47."
3413+
"\n Check rsHSPF and other heating inputs.", name);
34103414
}
34113415
}
34123416

@@ -3472,6 +3476,7 @@ float RSYS::rs_Inp35Default( // default 35 F input power
34723476
return inp35;
34733477
} // RSYS::rs_Inp35Default
34743478
//-----------------------------------------------------------------------------
3479+
#if 0
34753480
float RSYS::rs_RunFAdjustedEffHtASHP()
34763481
{
34773482
float effHt;
@@ -3489,6 +3494,7 @@ float RSYS::rs_RunFAdjustedEffHtASHP()
34893494
}
34903495
return effHt;
34913496
} // RSYS::rs_RunFAdjustedEffHtASHP
3497+
#endif
34923498
//-----------------------------------------------------------------------------
34933499
RC RSYS::rs_CalcInputsAndSlopesASHP()
34943500
// uses: rs_cap/COP 47/17
@@ -3525,19 +3531,18 @@ RC RSYS::rs_CalcInputsAndSlopesASHP()
35253531
rs_COPMin17 = rs_COP17;
35263532

35273533
float inpMin47 = capMin47 / max(rs_COPMin47, .1f);
3528-
3534+
float inpMin17 = capMin17 / max(rs_COPMin17, .1f);
3535+
35293536
float inpMin35;
35303537
if (!IsSet(RSYS_COPMIN35))
3531-
{ inpMin35 = rs_Inp35Default(inp47, inp17);
3538+
{ inpMin35 = rs_Inp35Default(inpMin47, inpMin17);
35323539
rs_COPMin35 = capMin35 / max(inpMin35, .1f);
35333540
}
35343541
else
35353542
inpMin35 = capMin35 / max(rs_COPMin35, .1f);
3536-
float inpMin17 = capMin17 / max(rs_COPMin17, .1f);
35373543

35383544
rs_ASHPInpMinF[0] = (inpMin47 - inpMin17) / (47.f - 17.f);
3539-
rs_ASHPInpMinF[1] = (inpMin35 - inpMin17) / (35.f - 17.f);
3540-
3545+
rs_ASHPInpMinF[1] = (inpMin35 - inpMin17) / (35.f - 17.f);
35413546
}
35423547

35433548
return RCOK;
@@ -3905,7 +3910,7 @@ int RSYS::rs_IsModeAvailable(
39053910
// set mode-specific air flow
39063911
rs_amf = rsMode == rsmHEAT ? rs_amfH
39073912
: rsMode == rsmCOOL ? rs_amfC
3908-
: rsMode == rsmOAV ? rs_amfOAV
3913+
: rsMode == rsmOAV ? rs_amfOAV
39093914
: 0.;
39103915
if (rs_amf < .0001)
39113916
ret = -1; // no air available
@@ -4030,8 +4035,7 @@ int RSYS::rs_SupplyAirState( // current conditioning capabilities
40304035
else if (rs_mode == rsmHEAT)
40314036
{ rs_asOut = rs_asIn; // init to entering state
40324037
if (auszMode == rsmHEAT && Top.tp_pass1A)
4033-
{
4034-
// autosize warmup: assume fixed temp rise
4038+
{ // autosize warmup: assume fixed temp rise
40354039
rs_asOut.as_tdb = rs_asRet.as_tdb + rs_tdDesH;
40364040
rs_effHt = 1.; // need nz value, else ASHP assumes compressor off
40374041
}
@@ -4426,13 +4430,13 @@ RC RSYS::rs_FinalizeSh()
44264430
rs_PLF = 1.f - rs_CdH * (1.f - runFx);
44274431
rs_COPHtAdj = rs_inpHtMin <= 0.f
44284432
? 2.5f // rs_inpHtMin can be 0 during autosize
4429-
: rs_capHtMin * rs_PLF / rs_inpHtMin;
4433+
: rs_FEffH * rs_capHtMin * rs_PLF / rs_inpHtMin;
44304434
rs_inPrimary = rs_capHtMin / rs_COPHtAdj;
44314435
}
44324436
else
44334437
{ // variable capacity: intermediate speed
44344438
float runFx = (rs_runF - rs_runFMin) / (1.f - rs_runFMin);
4435-
rs_inPrimary = rs_inpHt * runFx + rs_inpHtMin * (1.f - runFx);
4439+
rs_inPrimary = (rs_inpHt * runFx + rs_inpHtMin * (1.f - runFx)) / rs_FEffH;
44364440
rs_COPHtAdj = rs_inPrimary <= 0.f
44374441
? 2.5f // rs_inPrimary can be 0 during autosize
44384442
: rs_outSen / rs_inPrimary;

src/CNRECS.DEF

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3307,7 +3307,9 @@ RECORD RSYS "RSYS" *RAT // residential HVAC system
33073307
*s *e FLOAT rs_SHR; // cooling sensible heat ratio (derived using coil model)
33083308

33093309
*f FRAC rs_fChg // refrigerant charge factor (default 1, 0.9 or 0.96 for CA compliance)
3310+
// multiplies cooling capacity (no effect on heating)
33103311
*f FRAC rs_fSize // compressor sizing factor (default 1, 0.95 or 1 for CA compliance)
3312+
// multiples cooling capacity (no effect on heating)
33113313
*f FLOAT rs_fanHRtdC // fan heat included in rated rs_cap95, Btuh
33123314
*f FLOAT rs_capnfX; // constant for rs_capCt calc
33133315
*f FLOAT rs_capAdjF;

0 commit comments

Comments
 (0)