TulipaEnergy / esdl4tulipa

Apache License 2.0
0 stars 0 forks source link

Mapping ESDL terminology to Tulipa #1

Open suvayu opened 1 month ago

suvayu commented 1 month ago

Using this to track my progress updating the ESDL file:

Tulipa ESDL Comment Added to Norse ESDL
CONSUMERS
active state (ENABLED/DISABLED) X
peak_demand power X
:--------------- :---------- :---------- :------
PRODUCERS
active state X
investable Not in ESDL - add or have separate file?
investment_cost (kEUR/MW/year) asset.CostInformation.investmentCosts (EUR/MWh/yr) the unit doesn't match X
variable_cost asset.CostInformation.variableOperationalAndMaintenanceCosts If there is no data, we put zero for the time being X
lifetime TechnicalLifetime X
investment_limit Potential? Not in ESDL - add or have separate file or try to use Potential property of the area
capacity Not in ESDL - ask to add This is the upgrade increment when invested in
initial_capacity power X
:--------------- :---------- :---------- :------
CONVERSION
active state X
investment_cost (kEUR/MW/year) asset.CostInformation.investmentCosts (EUR/MWh/yr) the unit doesn't match X
variable_cost asset.CostInformation.variableOperationalAndMaintenanceCosts If there is no data, we put zero for the time being X
lifetime TechnicalLifetime X
investment_limit Potential? We need to include it in ESDL or try to use Potential property of the area
capacity Not in ESDL - ask to add This is the upgrade increment when invested in
initial_capacity power X
efficiency efficiency or InputOutputRelation * See below
:--------------- :---------- :---------- :------
STORAGE
active state X
investment_cost asset.CostInformation.investmentCosts the unit doesn't match X
variable_cost asset.CostInformation.variableOperationalAndMaintenanceCosts If there is no data, we put zero for the time being X
lifetime TechnicalLifetime X
investment_limit Potential? We need to include it in ESDL or try to use Potential property of the area
capacity Not in ESDL - ask to add This is the upgrade increment when invested in
capacity (charge/discharge) maxDischargeRate and maxChargeRate Tulipa uses only one value, but might change it to consider both ** X
initial_storage_level fillLevel ESDL uses p.u., Tulipa uses MW X
energy_to_power_ratio ? Include in ESDL? or calculate it from the ratio of capacity (MWh)/maxDischargeRate (MW)
initial_storage_capacity capacity double-check the units ESDL uses J and we use MWh X
:--------------- :---------- :---------- :------
TRANSPORT
from_asset port I assume there is a port in or something
to_asset port I assume there is a port outor something
active state
is_transport assetType
investable Not in ESDL - Maybe in the scenario definition
investment_integer Not in ESDL - Maybe in the scenario definition
variable_cost this value will come from the asset that is connected from_asset
investment_cost (kEUR/MW/year) asset.CostInformation.investmentCosts (EUR/MWh/yr) the unit doesn't match
lifetime TechnicalLifetime X
investment_limit Potential? We need to include it in ESDL or try to use Potential property of the area
capacity capacity
capacity capacity
initial_export_capacity Not in ESDL - we can use capacity for now
initial_import_capacity Not in ESDL - we can use capacity for now
efficiency efficiency

*The efficiency from the asset goes to the outgoing flow. For assets connected to two carriers, then, we need two different efficiencies between the input and outputs; ESDL has electrical efficiency and heat efficiency (but not for all assets; we need to double-check), For heat pumps -> COP to efficiency and other conventions assets -> Efficiency to efficiency ** The charging and discharging efficiencies are defined in the asset but must be mapped to the flow asset data.

We can do multiple efficiencies using this InputOutputRelation feature. It doesn't exist yet in the MapEditor, but it's in ESDL and we can push for it to be added to the MapEditor:

Image

Image

Originally posted by @clizbe in https://github.com/TulipaEnergy/TulipaIO.jl/issues/1#issuecomment-1939125728

clizbe commented 1 month ago

(WIP) ToDos IF we want Tulipa to match ESDL:

Missing from ESDL:

suvayu commented 5 days ago

@datejada the table in the top post documents the mapping from Tulipa terminology to ESDL, but only for assets. Could you compile a similar table for Tulipa flows to ESDL transport assets (what we talked about yesterday, the connections). For now I'll come up with something generic based on my best guess.

suvayu commented 4 days ago

@datejada Nothing useful in the Transport assets :frowning_face:

In [56]: {k: v for k, v in vars(hn).items() if not k.startswith("_") and v}
Out[56]: 
{'name': <pyecore.valuecontainer.EValue at 0x7f99987dd2e0>,
 'id': <pyecore.valuecontainer.EValue at 0x7f99987dec30>,
 'area': <pyecore.valuecontainer.EValue at 0x7f99987de930>,
 'geometry': <pyecore.valuecontainer.EValue at 0x7f99987def90>,
 'port': EOrderedSet([<esdl.esdl.InPort object at 0x7f999875a030>, <esdl.esdl.OutPort object at 0x7f99987593d0>])}

In [57]: {k: v for k, v in vars(gn).items() if not k.startswith("_") and v}
Out[57]: 
{'name': <pyecore.valuecontainer.EValue at 0x7f999875ac60>,
 'id': <pyecore.valuecontainer.EValue at 0x7f999ba51340>,
 'area': <pyecore.valuecontainer.EValue at 0x7f9998758290>,
 'geometry': <pyecore.valuecontainer.EValue at 0x7f99987590d0>,
 'port': EOrderedSet([<esdl.esdl.InPort object at 0x7f9998df24b0>, <esdl.esdl.OutPort object at 0x7f9998cdce00>])}

In [58]: gn
Out[58]: <esdl.esdl.GasNetwork at 0x7f9998759880>

In [59]: hn
Out[59]: <esdl.esdl.HeatNetwork at 0x7f99987f3170>
suvayu commented 4 days ago

Looks like there are useful, attributes, but they are all optional.

In [70]: [a for a in dir(gn) if not a.startswith("_")]
Out[70]: 
['KPIs',
 'aggregated',
 'aggregationCount',
 'area',
 'assetType',
 'behaviour',
 'bufferDistance',
 'capacity',
 'commissioningDate',
 'constraint',
 'containingAsset',
 'containingBuilding',
 'controlStrategy',
 'costInformation',
 'dataSource',
 'decommissioningDate',
 'description',
 'efficiency',
 'fullLoadHours',
 'geometry',
 'id',
 'installationDuration',
 'isOwnedBy',
 'manufacturer',
 'material',
 'name',
 'operationalHours',
 'originalIdInSource',
 'owner',
 'port',
 'pressure',
 'sector',
 'shortName',
 'state',
 'surfaceArea',
 'technicalLifetime']
datejada commented 4 days ago

@suvayu I have updated the table in the first comment of this issue.

My takeaway with the mapping to ESDL is that we will only take the basic information, and there will be a set of default values that TulipaEnergyModel will need to run properly (that a user can edit/change after the ESDL basic information import). It is okay to continue like that since ESDL is meant to describe energy assets data and not to be the interface of an optimization model like Tulipa.