Add support for the local balance of multiple carriers
Description
Currently, the code only allows a prosumer to have demand for one carrier. We want to allow the possibility for a prosumer to have multiple demand carriers since it might have assets that have different (multiple) out_carriers
, and the energy flow for these carriers needs to be balanced too. That is, if a prosumer has a demand_carrier
which is electric
but has assets electrolyzer
, EAF
, fuel_cell
, and hydrogen_storage
, these assets have the following characteristics:
-
electrolyzer
:e
->h2
-
EAF
:e
->e
-
fuel_cell
:h2
->e
-
hydrogen_storage
:h2
->h2
We see that assets now need to state their in_carrier
and out_carrier
. If the set of all assets of a prosumer has more than one type of out_carrier
, then besides the constraint for local demand carrier balance, an additional local balance constraint is need to enforce the law of conservation of energy for other out_carriers
. For example, for the above example, besides a local electric carrier balance constraint, the prosumer will need the following hydrogen balance constraint:
`electrolyzer_h2_pro` + `hydrogen_storage_dis` - `fuel_cell_h2_con` - `hydrogen_storage_chg` == 0
This will make it possible to model a prosumer that operates for example an electrolyzer
coupled with a fuel_cell
, or a microgrid scale MES operator or even a large commercial building or an energy community.
The following changes will be needed:
-
Update config file to differentiate between prosumer demand_carrier
, assetin_carrier
andout_carrier
-
Update construction of local carrier balance constraint to check if it needs to set another balance constraint other than the demand_carrier
balance -
Update fuel cell documentation to emphasize that it can only consume hydrogen from a hydrogen storage tank, which in turn, can only get its hydrogen from an electrolyzer. Hence, a fuel cell cannot exist without hydrogen storage, and a hydrogen storage cannot operate without an electrolyzer.