@@ -2661,17 +2661,25 @@ RC HPWHLINK::hw_InitGeneric( // init HPWH as generic ASHP
26612661} // HPWHLINK::hw_InitGeneric
26622662// -----------------------------------------------------------------------------
26632663RC HPWHLINK::hw_InitResistance ( // set up HPWH has EF-rated resistance heater
2664- float vol, // tank volume, gal
2665- float EF, // rated EF
2666- float resHtPwr, // upper resistance heat element power, W
2667- float resHtPwr2)// lower resistance heat element power, W
2664+ WHRESTYCH resTy, // resistance heater type
2665+ float vol, // tank volume, gal
2666+ float EF, // rated EF
2667+ float resHtPwr, // upper resistance heat element power, W
2668+ float resHtPwr2, // lower resistance heat element power, W
2669+ float tUse) // use temp, F
26682670// returns RCOK iff success
26692671{
26702672 RC rc = RCOK;
26712673
2672- if (hw_pHPWH->HPWHinit_resTank (GAL_TO_L (max (vol, 1 .f )), EF,
2673- resHtPwr, resHtPwr2) != 0 )
2674+ int ret = resTy == C_WHRESTYCH_SWINGTANK
2675+ ? hw_pHPWH->HPWHinit_resSwingTank (GAL_TO_L (max (vol, 1 .f )), EF,
2676+ resHtPwr, resHtPwr2, F_TO_C ( tUse))
2677+ : hw_pHPWH->HPWHinit_resTank (GAL_TO_L (max (vol, 1 .f )), EF,
2678+ resHtPwr, resHtPwr2);
2679+
2680+ if (ret)
26742681 rc |= RCBAD;
2682+
26752683 return rc;
26762684} // HPWHLINK::hw_InitResistance
26772685// -----------------------------------------------------------------------------
@@ -3614,7 +3622,7 @@ RC DHWHEATER::wh_CkF() // water heater input check / default
36143622 else if (wh_heatSrc == C_WHHEATSRCCH_ASHPX)
36153623 { // STRGSML or BUILTUP HPWH model
36163624 // TODO: more specific checking for ASHPX
3617- ignoreN ( whenHs, DHWHEATER_LDEF, DHWHEATER_RESHTPWR, DHWHEATER_RESHTPWR2, 0 );
3625+ ignoreN ( whenHs, DHWHEATER_LDEF, DHWHEATER_RESHTPWR, DHWHEATER_RESHTPWR2, DHWHEATER_RESTY, 0 );
36183626 RC rc1 = requireN ( whenHs, DHWHEATER_ASHPTY, 0 );
36193627 rc |= rc1;
36203628 if (!rc1)
@@ -3703,7 +3711,7 @@ RC DHWHEATER::wh_CkF() // water heater input check / default
37033711
37043712 if (IsSet (DHWHEATER_VOLRUNNING))
37053713 { if (!wh_CanSetVolFromVolRunning ())
3706- rc |= disallow (DHWHEATER_VOLRUNNING, whenTy );
3714+ rc |= disallow (DHWHEATER_VOLRUNNING, whenHs );
37073715 else if (IsSet (DHWHEATER_VOL))
37083716 rc |= oer (" whVol and whVolRunning cannot both be specified" );
37093717 }
@@ -3753,13 +3761,14 @@ int DHWHEATER::wh_CanSetVolFromVolRunning() const // can volume be derived from
37533761// -1: maybe (re HPWH pending HPWHLINK setup)
37543762{
37553763 int ret = 0 ;
3756- if (wh_IsHPWHModel () )
3764+ if (wh_heatSrc == C_WHHEATSRCCH_ASHPX )
37573765 { ret = -1 ;
3758- if (wh_HPWH.hw_HasCompressor ()
3766+ if (wh_HPWH.hw_HasCompressor () // redundant *but* false if !hw_pHPWH
37593767 && !wh_HPWH.hw_pHPWH ->isTankSizeFixed ())
37603768 ret = 1 ;
37613769 }
37623770 // else
3771+ // Other type (including C_WHHEATSRCCH_ELRESX): volRunning not supported
37633772 // ret = 0;
37643773
37653774 return ret;
@@ -4105,7 +4114,8 @@ RC DHWHEATER::wh_HPWHInit() // initialize HPWH model
41054114 if (wh_heatSrc == C_WHHEATSRCCH_ELRESX)
41064115 { // resistance tank (no preset)
41074116 rc |= wh_HPWH.hw_InitResistance (
4108- wh_vol, wh_EF, wh_resHtPwr, wh_resHtPwr2);
4117+ wh_resTy, wh_vol, wh_EF, wh_resHtPwr, wh_resHtPwr2, pWS->ws_tUse );
4118+ // bVolMaybeModifiable = true;
41094119 }
41104120 else if (wh_ashpTy == C_WHASHPTYCH_GENERIC)
41114121 { // generic HPWH (no preset)
@@ -4160,17 +4170,16 @@ RC DHWHEATER::wh_HPWHInit() // initialize HPWH model
41604170 else if (IsSet (DHWHEATER_VOLRUNNING))
41614171 { // semi-redundant check
41624172 if (!wh_CanSetVolFromVolRunning ())
4163- rc |= ooer (DHWHEATER_VOLRUNNING, " no can do" );
4173+ oInfo (" %s is ignored (tank volume is fixed at %0.0f gal)" ,
4174+ what, wh_HPWH.hw_pHPWH ->getTankSize (HPWH::UNITS_GAL));
41644175 else
4165- {
4166- RC rc2 = wh_HPWH.hw_DeriveVolFromVolRunning (
4176+ { RC rc2 = wh_HPWH.hw_DeriveVolFromVolRunning (
41674177 wh_volRunning,
41684178 wh_heatingCap,
41694179 pWS->ws_tSetpointDes - pWS->ws_tInletDes ,
41704180 vol);
41714181 if (rc2)
41724182 rc |= err (PERR, " DHWHEATER::wh_HPWHInit: hw_CanSetVolFromVolRunning() inconsistency." );
4173- // else wh_vol already known
41744183 }
41754184 }
41764185 else // IsSet( DHWHEATER_VOL)
0 commit comments