Reproducible Water Heater Results & Thermal Tech Prioritization Scheme#469
Merged
dpinney-nreca merged 96 commits intonreca-bts:masterfrom Feb 17, 2026
Merged
Reproducible Water Heater Results & Thermal Tech Prioritization Scheme#469dpinney-nreca merged 96 commits intonreca-bts:masterfrom
dpinney-nreca merged 96 commits intonreca-bts:masterfrom
Conversation
Test new workflow. (nreca-bts#412)
…estamps being offset by half a year.
… out the discharging and charging power series.
…at facility demand charge tariff information from the REopt custom tariff JSON response file.
…nput and removed user input start/stop times. Fixed bug in demand $/kW output arrays.
…to ensure 8760 length, and removed demand schedule info from TOD-.json to be consistent with TOD-.csv until this functionality is included in the model code.
… array of monthly demand charges using the corresponding static test files.
…JSON response file for the total demand and energy savings with and without DERs
…removing and saving all input files
…ctor Fval for DER demand savings for a demand rate structure on hourly timescales. Replaced the max peak kW index method in Fval calculation with max ($ amount = peak kW x rate $/kW) to account for variable hourly rates.
… hourly fval-corrected demand savings
…onse file handling function, clarified output variables in need of changing for new Fval implementation
…) to Total Peak Demand (kW) and Total Adjusted Peak Demand (kW), and added the max kW for each period window to the total monthly kW demand.
…the outputs, renamed savings variables for clarity, and fixed fval calculation for total utility savings and individual TESS tech in the CSV input method
…ology demand savings. Fixed bug in individual TESS tech incentives. Added new example Wholesale Rate Structure JSON response file.
…SV method is selected. Added error warnings for CSV input.
… cost savings for JSON and CSV input methods.
…to onload function in HTML.
…ut name, added error message handling for no BESS in REopt and input JSON decode error.
… to both inputs of BESS energy capacity (kWh) and BESS power capacity (kW). Modified BESS SOC plot title.
…nd savings for both CSV and JSON input methods, and disabled GEN by default.
…ss new demand peaks caused by decoupled runs competing for charge.
…TESS are enabled.
…TESS are enabled.
…umbers for determining the water heater water draw rate
…om numbers functionality from the VB solver changes
…hanges in the VB solver
…ess of the WH random numbers input
…d input, and saved the inputs and outputs of each vbatDispatch run in the model directory instead of separate subdirectories.
…nput, and saved the inputs and outputs of each vbatDispatch run in the model directory instead of separate subdirectories. Also stated REopt run without sys image.
…derUtilityCost models
dpinney-nreca
approved these changes
Feb 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Thermal Tech Prioritization
At times where multiple thermal technologies are competing for charge time, the derUtilityCost and derConsumer models will now enact a prioritization scheme (WH > AC > HP) that only allows the highest priority tech to charge and discharge at those times. All other thermal tech, if enabled, are removed from charging/discharging at those times.
Reproducible Water Heater Results
Variability in the water heater results appear to come from random numbers generated in omf.solvers.VB which are used to describe a water draw rate (gallons per minute). If desired, a user can now have the derUtilityCost, derConsumer, and vbatDispatch models reproduce the same water heater results.
Some notable changes include a user-provided input to set the PuLP optimizer random seed for all thermal vbatDispatch technologies, and a new user-provided input
water_heater_random_numbers.csvwhich allows the user to reproduce the water heater results, if desired.Code Changes
VB solver
random_numbersinput to the water heater code that is used to determine the water draw raterandom_numbers=Noneby default, and the solver will generate and return the random numbers usedrandom_numbersis provided, the model will use those provided values instead of generating themvbatDispatch model
Use the user-provided random numbers?input to allow the use of the water heater random numbers CSV filewater_heater_random_numbers.csvfile to the model directoryderUtilityCost and derConsumer models
vbatStacked
wh_random_numbersfrom the changes to the VB solverStatic Test Files
Added
water_heater_random_numbers.csvstatic test file for the derConsumer, derUtilityCost, and vbatDispatch models