my names Mark, I am new here. Currently, I am about to finalize my research proposal for my PhD, for which I will at some point create an energy system model. Which is why I stumbled upon calliope.
So far I still did not understand what calliope is really doing. I get that I can build my model (regions, demands for power / electricity, supply / energy production and transmission lines). But what is the part of the solver? What does it solve?
Hi everyone, I'm trying to update my old models to the latest functionality and I'm a little confused over how 'export' now works. Let's say I have some excess free power available in a model (e.g. some wind power that is beyond what is required to meet the demand in the model), and I want to be able to convert this spare energy into another carrier which has an external value. For the sake of an example, we have a machine which converts power into magic beans which are worth $1000/kWh of beans. I could state this as follows:
magic_bean_maker: essentials: name: 'Magic bean maker' color: '#3B61E3' parent: conversion carrier_in: power carrier_out: magic_beans export_carrier: magic_beans constraints: energy_eff: 1.0 lifetime: 25 costs: monetary: interest_rate: 0.10 energy_cap: 0 # USD per kW om_con: 0 export: -1000
However, when I put this into a model with
energy_cap_equals: 1000 at a location with free power, despite there being no cost to producing beans and a clear negative cost to exporting them, no beans are produced. Is this because there is no demand for beans defined anywhere in the model, and the framework can only optimise for carriers with a demand?
I am hoping to model electric vehicles (EV) as storage . I was trying to do so by using a storage technology with storage_cap_max being input as a time-series representing whether the electric parking spot is occupied or not:
battery: essentials: name: 'Battery storage' color: '#3B61E3' parent: storage carrier: electricity constraints: energy_cap_max: 22 # kW storage_cap_max: df=EV_max_charge:EV_0
However, it does not seem to work, ignoring the max capacity.
In other words, is it possible to input storage_cap_max as a time-series?
Or is there a better way to do this?
when I do it, the model crashes sending this message
Malformed term in expression
[2021-03-10 11:52:18] DEBUG Neighboring tokens: " inf x1224 +1 x835 <= 0 c_u_x3558_: "
[2021-03-10 11:52:18] DEBUG
[2021-03-10 11:52:18] DEBUG Unable to read file
Thank you for your in-depth replies. Thanks to them as well as previous conversations above I have managed to solve the problem.
In case anyone is interested, here is a quick explanation:
To model these time dependant batteries, I used unique energy carriers with their respective conversion, supply and demand technologies for each electric vehicle parking spot (time-dependant battery).
The time series could be linked to the supply and demand to represent a car arriving and leaving, and the parking occupancy schedules could be used to deactivate the batteries when no car is present.
The ev charging capacity is 'offloaded' to the conversion techs so that the battery can be instantly charged or discharged when a car arrives or leaves.
There is a scrappy example in this thread.
I have a problem with my model that I can not get fixed even after extensive troubleshooting. I do not even know how this can happen. In my model, electricity is generated in the transmission lines. It drives me crazy. My model is a relatively complex model with many regions, carriers and techniques and running in plan mode. But for debugging, I lowered the complexibilty and even then the problem occurs.
My links.yaml file looks something like this:
links: ... AMPR4,AMPR5: techs: Interconnector: constraints: energy_cap_equals: 6500000.0
In my techs.yaml the interconnectors are defined like this
techs: ... Interconnector: constraints: energy_cap_max: inf energy_eff: 1.0 costs: monetary: om_prod: 0.0 essentials: carrier: ELC color: '#190707' name: 'Interconnectors' parent: transmission
I don't see any difference here from the model in the tutorial. However, I get a solution that is calculated quickly but is unfortunately wrong.
When I look at carrier_prod and carrier_con for the interconnectors, I see the following.
AMPR4::Interconnector:AMPR5::ELC AMPR5::Interconnector:AMPR4::ELC timesteps 2050-01-01 00:00:00 -6.500000e+06 0.0 2050-01-01 01:00:00 -4.191075e+06 0.0 2050-01-01 02:00:00 -4.315738e+06 0.0 2050-01-01 03:00:00 0.000000e+00 0.0 2050-01-01 04:00:00 0.000000e+00 0.0
AMPR4::Interconnector:AMPR5::ELC AMPR5::Interconnector:AMPR4::ELC timesteps 2050-01-01 00:00:00 6500000.0 6500000.0 2050-01-01 01:00:00 0.0 6500000.0 2050-01-01 02:00:00 0.0 6500000.0 2050-01-01 03:00:00 0.0 6500000.0 2050-01-01 04:00:00 6500000.0 6500000.0
According to this, I see two problems. On the one hand the line is used in both directions at the same time and on the other hand the use of the line generates electricity.
AMPR4::Interconnector:AMPR5::ELC -2.217436e+10 AMPR5::Interconnector:AMPR4::ELC -6.269706e+08
AMPR4::Interconnector:AMPR5::ELC 3.499195e+10 AMPR5::Interconnector:AMPR4::ELC 5.625508e+10
Does anyone have any idea what this could be? Thanks for your feedback