Storage technology generates and consumes carrier by itself #524
-
First of all, dear calliope developers, thank you very much for your work! This framework is easy to start with and intuitive, which helps greatly with our project! Model DescriptionI am currently trying to model a ground source heat pump technology, which works with borehole storage. Because boreholes often operates on low temperature (around 15°C), so I defined a special energy carrier called "geothermal storage". code for GSHP and storage # GSHP, consumes electricity and consumes geothermal storage to produce heat,
# or consumes and generate both cooling and geothermal storage
# with a COP of 4.5
GSHP_heat:
essentials:
name: 'GSHP heating'
color: '#ffda10'
carrier_in: electricity
carrier_in_2: geothermal_storage
primary_carrier_in: electricity
parent: conversion_plus
carrier_out: heat
constraints:
energy_eff: 4.5
energy_cap_min: 10 # kW
# energy_cap_max: 100000 # kW
carrier_ratios:
carrier_in.electricity: 1 # electricity
carrier_in_2.geothermal_storage: 3.5 # geothermal storage
lifetime: 30
costs:
monetary:
interest_rate: 0.05
purchase: 29204 # USD per device
energy_cap: 750 # USD per kW
om_annual: 25 # USD per kW, annual maintenance cost based on energy (power) capacity
GSHP_cooling: # to be defined in group constraints to be strictly coupled with GSHP_heat
essentials:
name: 'GSHP cooling'
color: '#F9CF22'
carrier_in: electricity
carrier_out: cooling
carrier_out_2: geothermal_storage
primary_carrier_out: cooling
parent: conversion_plus
constraints:
energy_eff: 1
energy_cap_min: 10 # kW
# energy_cap_max: 100000 # kW
carrier_ratios:
carrier_out.cooling: 4 # cooling
carrier_out_2.geothermal_storage: 5 # geothermal storage
lifetime: 30
costs:
monetary: # to avoid double counting, only the cost of the heating mode is considered
interest_rate: 0.05
purchase: 0 # USD per device
energy_cap: 0 # USD per kW
om_annual: 5 # USD per kW, annual maintenance cost based on energy (power) capacity
# geothermal storage, stores heat, comes with GSHP so no cost
geothermal_boreholes:
essentials:
name: 'Geothermal Boreholes'
color: '#F9CF22'
parent: storage
carrier: geothermal_storage
constraints:
energy_eff: 0.9 # one way efficiency
# force_asynchronous_prod_con: true # charge and discharge are not simultaneous
lifetime: 30
storage_cap_max: 100000 # kWh
energy_cap_max: 100000 # kW
storage_loss: 0.001 # 0.1% loss per hour
storage_initial: 0.9 # initial storage level, building needs some storage to survive the winter
costs:
monetary:
interest_rate: 0.05
om_annual_investment_fraction: 0 # fraction of purchase cost
storage_cap: 0 # already included in the cost of GSHP Issues when optimizingDuring the optimization, I set one building's GSHP purchase and cap cost to be zero, because it already has GSHP installed and doesn't need to buy it again. Basically, I'm trying to promote this building to use GSHP. However, with the presense of a more expensive ASHP (the building needs to buy it), optimizer never chooses GSHP_heat, but chooses GSHP_cooling. Only when I disabled ASHP, optimizer started to choose GSHP_heat. ASHP```yaml # ASHP, consumes electricity to produce heat, with a COP of 2.4 ASHP: essentials: name: 'ASHP SH/SC' color: '#676767' carrier_in: electricity carrier_out: [heat, cooling] primary_carrier_out: heat parent: conversion_plus constraints: energy_eff: 1 energy_cap_min: 1 # kW carrier_ratios: carrier_out: {heat: 2.4, cooling: 3} lifetime: 25 costs: monetary: interest_rate: 0.05 purchase: 19128 # USD per device energy_cap: 167 # USD per kW om_annual: 11 # USD per kW, annual maintenance cost based on energy (power) capacity ```As shown in the graph, the outflow and inflow of geothermal borehles (red and blue curves) are much higher than what was produced by GSHP_cooling (yellow) and GSHP_heat (green), showing that the storage is producing and consuming energy on itself. Also, even though GSHP_heat is used, it doesn't work in the winter. In the winter the heating demand is satisfied by wood boilers. I don't understand where does the extra heat produced by GSHP_heat goes. Possible solutionsA few possible issues and corresponding solutions are yet to try out:
I will post updates if I have new findings. |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
Deleting geothermal storage's loss solves most of the problem in the test buildingI delete the storage_loss constraint, now it looks much better: However, a storage with no loss is not realistic, so some other workaround should be implemented. Storage still have self-generation and consumptionHowever, in the beginning of the year, there's still noises from geothermal storage, and this noise changes when I set different initial storage state. This might be still because of the cyclic_storage constraint. I am wondering if this cyclic_storage can be further relaxed, as mentioned in #523, where I tried to set a relax only on cyclic storage, but couldn't find how to set it. I will continue exploring and share my updates. |
Beta Was this translation helpful? Give feedback.
-
This is an interesting set-up that you have @yiqiaowang-arch. I quite like the approach although, as you've found, it is quite sensitive to how you constrain the model. You're correct that storage loss would lead to the case of the storage device charging and discharging simultaneously. We have made a constraint available to help deal with that, see here. It adds a binary variable to the timeseries dimension, so may make your model too computationally complex. Free technologies also lead to strange results. See our paper that explores this issue a bit more. Even just a very small "dummy" cost for operating your boreholes and cooling component of the GSHP could help things. I would say that the cyclic storage is maybe not worth applying for the borehole. You don't really care that as much heat is injected into the ground as is removed from it. OK, in reality you do care for long-term operation of the GSHP but the model doesn't require it. You may find that it acts weirdly because there just isn't a good balance available between heat demand in winter and cooling demand in summer to make it possible to inject as much heat as is removed. I would look into having the ground as two separate technologies: a supply tech that provides borehole heat to the heating component of the GSHP and an "infinite" demand tech ( |
Beta Was this translation helpful? Give feedback.
This is an interesting set-up that you have @yiqiaowang-arch. I quite like the approach although, as you've found, it is quite sensitive to how you constrain the model.
You're correct that storage loss would lead to the case of the storage device charging and discharging simultaneously. We have made a constraint available to help deal with that, see here. It adds a binary variable to the timeseries dimension, so may make your model too computationally complex.
Free technologies also lead to strange results. See our paper that explores this issue a bit more. Even just a very small "dummy" cost for operating your boreholes and cooling component of the GSHP could help things.
I would say tha…