Skip to content

Commit cffcca3

Browse files
committed
ASHPVC refinements WIP
1 parent 11f6278 commit cffcca3

File tree

2 files changed

+53
-18
lines changed

2 files changed

+53
-18
lines changed

src/CNLOADS.CPP

Lines changed: 48 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3134,14 +3134,16 @@ float RSYS::rs_PerfASHP( // ASHP performance (simplified call)
31343134
// else model defrost if available
31353135
float tdbOut, // outdoor dry bulb, F
31363136
float& COP, // returned: compressor-only full speed COP at tdbOut
3137-
float fanHAdj) // fan power adjustment, Btuh
3137+
float fanHAdj /*=0.f*/) // fan power adjustment, Btuh
31383138
// removed from capacity and input (before COP calc)
31393139
// returns total heating capacity (compressor + capDefrostHt), Btuh
31403140
{
31413141
float capHt, inpHt, capDfHt, capHtMin, inpHtMin, capDfHtMin;
31423142
float what = rs_PerfASHP2(ashpModel, tdbOut, fanHAdj,
31433143
capHt, inpHt, capDfHt, capHtMin, inpHtMin, capDfHtMin);
31443144

3145+
COP = inpHt > 0.f ? capHt / inpHt : 0.f;
3146+
31453147
return capHt;
31463148

31473149
} // RSYS::rs_PerfASHP
@@ -3347,10 +3349,7 @@ RC RSYS::rs_SetupASHP() // set ASHP defaults and derived parameters
33473349
rs_cap17 = max( rs_Cap17RatioASHP()*rs_cap47, 1.f);
33483350

33493351
if (!IsSet(RSYS_CAP35))
3350-
{ rs_cap35 = rs_cap17 + 0.6f * (rs_cap47 - rs_cap17);
3351-
if (rs_HasDefrost())
3352-
rs_cap35 *= 0.9f; // capacity reduction for defrost
3353-
}
3352+
rs_cap35 = rs_Cap35Default(rs_cap47, rs_cap17);
33543353

33553354
#if ASHP_COPREG == 1
33563355
// "traditional" model
@@ -3418,9 +3417,10 @@ RC RSYS::rs_SetupASHP() // set ASHP defaults and derived parameters
34183417
rs_CalcInputsAndSlopesASHP();
34193418

34203419
#if 1 && defined( _DEBUG)
3420+
// back-calc checks
34213421
float COP;
3422-
float capHt = rs_PerfASHP(0, 47.f, COP, 0.f);
3423-
capHt = rs_PerfASHP(0, 17.f, COP, 0.f);
3422+
float capHt = rs_PerfASHP(0, 47.f, COP);
3423+
capHt = rs_PerfASHP(0, 17.f, COP);
34243424
#endif
34253425

34263426
return rc;
@@ -3450,6 +3450,28 @@ x float capRat = 0.6280951f;
34503450
return capRat;
34513451
} // RSYS::rs_Cap17RatioASHP
34523452
//-----------------------------------------------------------------------------
3453+
float RSYS::rs_Cap35Default( // default 35 F heating capacity
3454+
float cap47, // 47 F heating capacity, any power units
3455+
float cap17) const // 17 F heating capacity
3456+
// returns 35 F heating capacity, consistent units
3457+
{
3458+
float cap35 = cap17 + 0.6f * (cap47 - cap17);
3459+
if (rs_HasDefrost())
3460+
cap35 *= 0.9f; // capacity reduction for defrost
3461+
return cap35;
3462+
} // RSYS::rs_Cap35Default
3463+
//-----------------------------------------------------------------------------
3464+
float RSYS::rs_Inp35Default( // default 35 F input power
3465+
float inp47, // 47 F input power, any power units
3466+
float inp17) const // 17 F input power
3467+
// returns 35 F input power, consistent units
3468+
{
3469+
float inp35 = inp17 + 0.6f * (inp47 - inp17);
3470+
if (rs_HasDefrost())
3471+
inp35 *= 0.985f; // defrost power reduction
3472+
return inp35;
3473+
} // RSYS::rs_Inp35Default
3474+
//-----------------------------------------------------------------------------
34533475
float RSYS::rs_RunFAdjustedEffHtASHP()
34543476
{
34553477
float effHt;
@@ -3476,9 +3498,7 @@ RC RSYS::rs_CalcInputsAndSlopesASHP()
34763498
rs_inp17 = rs_cap17 / max( rs_COP17, .1f);
34773499

34783500
if (!IsSet( RSYS_COP35))
3479-
{ rs_inp35 = rs_inp17 + 0.6f * (rs_inp47 - rs_inp17);
3480-
if (rs_HasDefrost())
3481-
rs_inp35 *= 0.985f; // defrost power reduction
3501+
{ rs_inp35 = rs_Inp35Default( rs_inp47, rs_inp17);
34823502
rs_COP35 = rs_cap35 / max( rs_inp35, .1f);
34833503
}
34843504
else
@@ -3492,17 +3512,28 @@ RC RSYS::rs_CalcInputsAndSlopesASHP()
34923512

34933513
// similar setup for variable capacity (ASHPVC)
34943514
// unused if not ASHPVC
3495-
if (rs_runFMin < 1.f)
3496-
{ if (!IsSet(RSYS_COPMIN47))
3515+
if (rs_IsASHPVC())
3516+
{ // min spd capacities
3517+
float capMin47 = rs_CapMin47();
3518+
float capMin17 = rs_CapMin17();
3519+
float capMin35 = rs_Cap35Default(capMin47, capMin17);
3520+
3521+
// min spd COP and input
3522+
if (!IsSet(RSYS_COPMIN47))
34973523
rs_COPMin47 = rs_COP47;
3498-
if (!IsSet(RSYS_COPMIN35))
3499-
rs_COPMin35 = rs_COP35;
35003524
if (!IsSet(RSYS_COPMIN17))
35013525
rs_COPMin17 = rs_COP17;
35023526

3503-
float inpMin47 = rs_cap47 * rs_runFMin / max(rs_COPMin47, .1f);
3504-
float inpMin35 = rs_cap35 * rs_runFMin / max(rs_COPMin35, .1f);
3505-
float inpMin17 = rs_cap17 * rs_runFMin / max(rs_COPMin17, .1f);
3527+
float inpMin47 = capMin47 / max(rs_COPMin47, .1f);
3528+
3529+
float inpMin35;
3530+
if (!IsSet(RSYS_COPMIN35))
3531+
{ inpMin35 = rs_Inp35Default(inp47, inp17);
3532+
rs_COPMin35 = capMin35 / max(inpMin35, .1f);
3533+
}
3534+
else
3535+
inpMin35 = capMin35 / max(rs_COPMin35, .1f);
3536+
float inpMin17 = capMin17 / max(rs_COPMin17, .1f);
35063537

35073538
rs_ASHPInpMinF[0] = (inpMin47 - inpMin17) / (47.f - 17.f);
35083539
rs_ASHPInpMinF[1] = (inpMin35 - inpMin17) / (35.f - 17.f);

src/CNRECS.DEF

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3089,7 +3089,7 @@ RECORD RSYS "RSYS" *RAT // residential HVAC system
30893089
*declare "RC rs_PerfMapAC();"
30903090
*declare "RC rs_PerfDataASHP();"
30913091
*declare "void rs_PerfDataASHP1( FILE* f, float tDbOut);"
3092-
*declare "float rs_PerfASHP( int ashpModel, float tDbOut, float& COP, float fanHAdj);"
3092+
*declare "float rs_PerfASHP( int ashpModel, float tDbOut, float& COP, float fanHAdj=0.f);"
30933093
*declare "float rs_PerfASHP2( int ashpModel, float tDbOut, float fanHAdj, float& capHt, float& inpHt, float& capDfHt, float& capHtMin, float& inpHtMin, float& capDfHtMin, float COPAdjF=1.f);"
30943094
*declare "int rs_IsASHP() const { return rs_type == C_RSYSTYCH_ASHP || rs_type == C_RSYSTYCH_ASHPPKGRM || rs_IsASHPHydronic() || rs_IsASHPVC(); }"
30953095
*declare "int rs_IsASHPHydronic() const { return rs_type == C_RSYSTYCH_ASHPHYD; }"
@@ -3112,6 +3112,8 @@ RECORD RSYS "RSYS" *RAT // residential HVAC system
31123112
*declare "static float rs_DHR( float capHt);"
31133113
*declare "RC rs_SetupASHP();"
31143114
*declare "float rs_Cap17RatioASHP() const;"
3115+
*declare "float rs_Cap35Default( float cap47, float cap17) const;"
3116+
*declare "float rs_Inp35Default( float inp47, float inp17) const;"
31153117
*declare "RC rs_CalcInputsAndSlopesASHP();"
31163118
*declare "void rs_AuszFinalASHP();"
31173119
*declare "float rs_CapEffASHP( float tdbout=-999.f, int ashpModel=0, float fanHRtd=-1.f, float fanHOpr=-1.f, float COPAdjF=-1.f);"
@@ -3216,6 +3218,8 @@ RECORD RSYS "RSYS" *RAT // residential HVAC system
32163218
// re ASHPVC (variable capacity)
32173219
*f *e FRAC_GZ rs_runFMin; // minimum run fraction fraction
32183220
// (cycles below this)
3221+
*declare "float rs_CapMin47() const { return rs_cap47*rs_runFMin; }"
3222+
*declare "float rs_CapMin17() const { return rs_cap17*rs_runFMin; }"
32193223
*f *e FLOAT_GZ rs_COPMin47 // COP at ODB=47 F, min speed
32203224
*f *e FLOAT_GZ rs_COPMin35 // ditto 35 F
32213225
*f *e FLOAT_GZ rs_COPMin17 // ditto 17 F

0 commit comments

Comments
 (0)