Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions doc/src/records/dhwheater-doc.md
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,18 @@ Number of storage tanks per DHWHEATER, re built-up whType=Builtup, does *not* re
required: "No",
variability: "constant") %>

**whfEff=*float***

Water heating efficiency modifier. Applied to calculated primary heating effiency when electricity and fuel use results are finalized. WhfEff greater than 1 result in decreased reported fuel or electricity use and whFEff less than 1 result in increased reported fuel or electricity use. Parasitic, standby usage, and backup energy usages are not adjusted. For types using the detailed HPWH model, the adjustment is (slightly) approximate because it is applied to the results returned from the detailed model rather than actually altering the efficiency used within the calculation.

<%= member_table(
units: "",
legal_range: "$>$ 0",
default: "1",
required: "No",
variability: "subhourly")
%>

**whEff=*float***

Water heating efficiency, used in modeling whType=LARGESTORAGE and whType=LARGEINSTANTANEOUS.
Expand Down
7 changes: 6 additions & 1 deletion src/CNRECS.DEF
Original file line number Diff line number Diff line change
Expand Up @@ -4537,7 +4537,7 @@ RECORD DHWHEATER "DHWHeater" *RAT // input / runtime DHW heater
*s *e FLOAT wh_nTickFullLoad; // INSTUEF: current subhour equiv full load ticks (fractional)
*s DBL wh_nColdStarts; // INSTUEF: current subhour # of cold startups

*s *e FLOAT wh_effSh; // current subhour efficiency, used to support former hourly
*s *e FLOAT_GZ wh_effSh; // current subhour efficiency, used to support former hourly
// models within tick calcs
// unset (= 0) for full tick models (HPWH and INSTUEF)

Expand Down Expand Up @@ -4580,6 +4580,11 @@ RECORD DHWHEATER "DHWHeater" *RAT // input / runtime DHW heater
*h *e DBL wh_totOut; // cumulative (year to date) total heat delivered to hot water, Btu
// includes wh_qXBU

*s FLOAT_GEZ wh_fEff; // primary efficiency adjustment factor
// modifies efficiency in wh_inElecSh / wh_inFuelSh calc
// for HPWH, applied after-the-fact to calc'd electricity
// use (does not modify efficiency within HPWH model).
// default = 1

// energy inputs for current subhour, Btu
// subhour results accumulated here
Expand Down
1 change: 1 addition & 0 deletions src/cncult.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1836,6 +1836,7 @@ CULT( "whResHtPwr", DAT, DHWHEATER_RESHTPWR,0, 0, VEOI, TYFL, 0, 4
CULT( "whResHtPwr2", DAT, DHWHEATER_RESHTPWR2,0, 0, VEOI, TYFL, 0, 0.f, N, N),
CULT( "whLDEF", DAT, DHWHEATER_LDEF, 0, 0, VEOI, TYFL, 0, 1.0f, N, N),
CULT( "whEff", DAT, DHWHEATER_EFF, 0, 0, VEOI, TYFL, 0, 1.0f, N, N),
CULT( "whFEff", DAT, DHWHEATER_FEFF, 0, 0, VSUBHRLY,TYFL, 0, 1.0f, N, N),
CULT( "whSBL", DAT, DHWHEATER_SBL, 0, 0, VEOI, TYFL, 0, 0.f, N, N),
CULT( "whPilotPwr", DAT, DHWHEATER_PILOTPWR,0, 0, VHRLY, TYFL, 0, 0.f, N, N),
CULT( "whParElec", DAT, DHWHEATER_PARELEC, 0, 0, VHRLY, TYFL, 0, 0.f, N, N),
Expand Down
11 changes: 8 additions & 3 deletions src/dhwcalc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4359,6 +4359,9 @@ RC DHWHEATER::wh_DoSubhrStart()
: wh_type == C_WHTYPECH_STRGLRG ? wh_eff
: -1.f;

wh_effSh *= wh_fEff; // adjust efficiency per user input
// default 1

if (wh_effSh <= 0.f)
rc |= err("%s, %s: Invalid water heater efficiency %0.3f",
objIdTx(), Top.When(C_IVLCH_S), wh_effSh);
Expand Down Expand Up @@ -4448,6 +4451,7 @@ RC DHWHEATER::wh_DoSubhrTick( // DHWHEATER energy use for 1 tick

wh_qHW += HARL; // output = load

// note: wh_fEff applied elsewhere
float WHEU = HARL / wh_effSh + wh_SBL * Top.tp_tickDurHr; // current tick energy use, Btu

// electricity / fuel consumption for this DHWHEATER (no multipliers)
Expand Down Expand Up @@ -4523,7 +4527,8 @@ RC DHWHEATER::wh_DoSubhrEnd( // end-of-subhour
wh_qHW = KWH_TO_BTU(wh_HPWH.hw_qHW); // hot water heating, Btu
wh_inElecXBUSh = wh_qXBU; // add'l backup heating, Btu

wh_inElecSh = wh_HPWH.hw_inElec[1] * BtuperkWh + wh_parElec * BtuperWh*Top.tp_subhrDur;
// electricity use (apply wh_fEff efficiency adjustment to primary only)
wh_inElecSh = (wh_HPWH.hw_inElec[1] / wh_fEff) * BtuperkWh + wh_parElec * BtuperWh*Top.tp_subhrDur;
wh_inElecBUSh = wh_HPWH.hw_inElec[0] * BtuperkWh;
}
else if (wh_IsInstUEFModel())
Expand All @@ -4537,8 +4542,8 @@ RC DHWHEATER::wh_DoSubhrEnd( // end-of-subhour
// wh_qHW and wh_qXBU accum'd in wh_InstUEFDoSubhrTick()

// energy use accounting, Btu
wh_inElecSh += rcovElec /*+ startElec*/ + (stbyElec + wh_parElec * Top.tp_tickDurHr) * BtuperWh;
wh_inFuelSh += rcovFuel + startFuel;
wh_inElecSh += (rcovElec/wh_fEff) /*+ startElec*/ + (stbyElec + wh_parElec * Top.tp_tickDurHr) * BtuperWh;
wh_inFuelSh += (rcovFuel + startFuel) / wh_fEff;
}
// else
// { efficiency model (nothing add'l required)
Expand Down
1 change: 1 addition & 0 deletions test/DHWDU.cse
Original file line number Diff line number Diff line change
Expand Up @@ -2206,6 +2206,7 @@ DHWHEATER "dhwhtr1-HPWH"
ALTER DHWSYS "dhwsys-DHW"
ALTER DHWHEATER "dhwhtr1-HPWH"
whZone = "Garage-grg"
whfEff = choose1( $month, .9, .95, 1., 1.02, 1.04, 1.06, 1.08, 1.05, 1.03, 1., .95, .91)

IZXFER "Ceiling (below attic) 1-BypassxA"
izNVType = "NONE"
Expand Down
1 change: 1 addition & 0 deletions test/DHW_C.cse
Original file line number Diff line number Diff line change
Expand Up @@ -1208,6 +1208,7 @@ DHWHEATER "WH1"
whASHPType = GE2014
whASHPSrcT = $TDbO
whParElec = $month
whfEff = choose1( $month, .9, .95, 1., 1.02, 1.04, 1.06, 1.08, 1.05, 1.03, 1., .95, .91)

endDHWSYS

Expand Down
Loading