Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ProcessHeat load, separate DHW and SpaceHeating loads #356

Merged
merged 135 commits into from
Apr 30, 2024

Conversation

zolanaj
Copy link
Collaborator

@zolanaj zolanaj commented Mar 5, 2024

Added

  • In src/core/absorption_chiller.jl struct, added field heating_load_input to the AbsorptionChiller struct
  • Added new variables dvHeatToStorage and dvHeatFromStorage which are indexed on p.heating_loads and added reconciliation constraints so that dvProductionToStorage and dvDischargeFromStorage maintain their relationship to state of charge for Hot thermal energy storage.
  • for all heating techs and CHP, added fields can_serve_space_heating, can_serve_dhw, and can_serve_process_heat in core structs and added new results fields thermal_to_dhw_load_series_mmbtu_per_hour, thermal_to_space_heating_load_series_mmbtu_per_hour, and thermal_to_process_heat_load_series_mmbtu_per_hour
  • in src/core/techs.jl, added new sets ghp_techs, cooling_techs, techs_can_serve_space_heating, techs_can_serve_dhw, and techs_can_serve_process_heat
  • in src/core/reopt_inputs.jl, added new fields heating_loads, heating_loads_kw, heating_loads_served_by_tes, and absorption_chillers_using_heating_load to the REoptInputs and BAUInputs structs. in the math, new set p.heating_loads has index q (to represent "qualities" of heat).
  • In src/core/heating_cooling_loads.jl, added new struct ProcessHeatLoad
  • In src/core/scenario.jl, added new field process_heat_load
  • In src/mpc/inputs.jl, added new field heating_loads

Changed

  • refactored dvThermalProduction to be separated in dvCoolingProduction and dvHeatingProduction with dvHeatingProduction now indexed on p.heating_loads
  • refactored heating load balance constraints so that a separate flow balance is reconciled for each heating load in p.heating_loads
  • renamed dvThermalProductionYIntercept to dvHeatingProductionYIntercept
  • divided ThermalStorage into HotThermalStorage and ColdThermalStorage as the former now has attributes related to the compatible heat loads as input or output.
  • changed technologies included dvProductionToWaste to all heating techs. NOTE: this variable is forced to zero to allow steam turbine tests to pass, but I believe that waste heat should be allowed for the turbine. A TODO is in place to review this commit (a406cc5).
  • changed test values and tolerances for CHP Sizing test.

Fixed

  • added a constraint in src/constraints/steam_turbine_constraints.jl that allows for heat loads to reconcile when thermal storage is paired with a SteamTurbine.

@zolanaj
Copy link
Collaborator Author

zolanaj commented Apr 19, 2024

I'm thinking about user-friendliness and consistency with the thermal input versus the fuel input for the other heating loads. I forget if you mentioned the motivation for using thermal for process heat, but can you remind me? Most sites will still just have total gas load, and then they need to parse out the breakdown. It is common to have boiler capacities in terms of thermal output, but other than that it seems a little confusing to have a different way to input process heat.

Following up on our discussion this week, this is changed to fuel loads instead of heat in 14abae0

@zolanaj
Copy link
Collaborator Author

zolanaj commented Apr 22, 2024

@Bill-Becker this should be ready for your review again. For some reason I'm not seeing your original review, but here are the key responses:

  • The boiler retirement commits have been merged and updated to work with the new heating load disaggregation.
  • Heat-specific storage output is now tracked via 679c7b5 and c0890d8
  • ProcessHeatLoad is now given as fuel loads in input
  • A new test suite tests disaggregation of heating loads, boolean logic for Boiler and ExistingBoiler's heating loads served, and the emissions reduction issue you set up (the fix for that is in fe4dd35)
  • GHP's updates are summarized as follows:
    • GHP is now a heating tech and a cooling tech
    • The heating and cooling production for GHP are tracked in aggregate in dvHeatingProduction and dvCoolingProduction
    • Separate constraints reconcile the GHP option(s) selected and their compatible heating loads to calculate dvHeatingProduction and dvCoolingProduction in each time step

I'm running Xpress tests locally now and will update as needed if any tests are still broken after merging develop into this branch. Should I add the Process Heat test suite to the test_with_xpress.jl in parallel?

Copy link
Collaborator

@Bill-Becker Bill-Becker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for clarifying and addressing my requests! I updated passing the user input boiler efficiency into ProcessHeat instead of always EXISTING_BOILER_EFFICIENCY, and I'm bypassing the Ubuntu tests until we can figure out why that one test is taking so long to solve that GitHub cancels the operation.

@zolanaj zolanaj merged commit e0d323f into develop Apr 30, 2024
3 checks passed
@adfarth adfarth mentioned this pull request May 6, 2024
indu-manogaran pushed a commit that referenced this pull request Sep 16, 2024
Add ProcessHeat load, separate DHW and SpaceHeating loads
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants