Repository navigation
Model storage water heaters as a heater charging a fixed-size tank - #867
Merged
Merged
Conversation
The EIA 2023 equipment cost report is in 2022 dollars. Scale its investment costs by CPI-U 2023/2022 (1.0413) to the model's 2023 dollars. Closes PyPSA#866. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Remove `water_heating: simple_storage` and `n_hours`, which gave every water heater a free, unlimited tank. - The charger is the heater: efficiency, CO2, and the unit cost per MW of input. The store is the hot water. The discharger draws from it. - `add_water_heater_tank_constraints` sets each new tank to the energy to power ratio of the unit times the heater capacity. - Existing water heaters charge their own tanks of the same ratio. - The six storage water heaters are priced per unit, with the tank volume and input capacity of the typical EIA/DOE unit. Closes PyPSA#865. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
service_sector had both split_space_water_heating (read by build_electricity.smk to pick demand files) and water_heating.split_space_water (read by build_heat.py and add_sectors.py to build technologies). Keep only split_space_water_heating and document it. Closes PyPSA#696. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
I added a third commit that also closes #696. service_sector had two keys for the same switch. I kept only |
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.
Closes #865, closes #866, closes #696.
Changes proposed in this Pull Request
The first commit converts the EIA building equipment costs from 2022$ to 2023$ (CPI-U, ×1.0413) (#866).
The second commit replaces
simple_storage(#865), following the discussion in #846:simple_storage,n_hours, thefalsebranch andadd_water_heater_constraintsare removed.add_water_heater_tank_constraintssets each new tank to the unit's energy to power ratio times the heater capacity.eia_tech_costs.csv: the six storage water heaters are priced per unit (costs unchanged), with tank volume and input capacity. Commercial units and residential tank volumes are from the EIA report. Residential input capacities and the 50 gal electric tank are from the DOE 2024 consumer water heater TSD (Tables 7.3.2, 7.3.8). The ratios are 0.17–1.86 h.marginal_oilinstead ofmarginal_gas(both 0 today).The third commit merges
water_heating: split_space_waterintosplit_space_water_heating(#696). The old key picked the technologies inbuild_heat.pyandadd_sectors.py, whilesplit_space_water_heatingpicked the demand files inbuild_electricity.smk. Both aretrueinconfig.sector.yamland no other config sets them, so results do not change. The config table now refers only tosplit_space_water_heating.Testing
test_water_heaters.py(4 tests), including a solve in which each tank is tied to its heater. It fails without the constraint.simpl: 10,clusters: 2,E-G, January 2018): tanks match their heaters and dischargers settle at their peak draw. Residential electric water heating builds 25 MW of heaters with a 47 MWh tank, instead of a 2,504 MW charger and a 12,187 MWh tank withsimple_storage.pytest -m fast: 995 passed, 11 skipped, 4 failed. The 4 failures also fail on develop: the three GoDEEEP CF registry tests andtest_dag_dryrun.py::test_interface_limits_input_follows_config_key.Checklist
pre-commitandpytest -m fastpass locally.workflow/envs/environment.yaml.workflow/repo_data/config/config.default.yaml.docs/source/configtables/*.csv.simple_storage,n_hoursandwater_heating: split_space_waterare removed fromconfig.sector.yaml; they were not in the config tables.🤖 Generated with Claude Code