Skip to content

Commit 71e0242

Browse files
authored
Add parameters for dc-opf feature (#1179)
* Add power system base * Add reactance * Add dc-opf method * Add to EU case * Move dc_opf to flow-milestone * Test model parameters
1 parent 9ef34c6 commit 71e0242

File tree

11 files changed

+603
-584
lines changed

11 files changed

+603
-584
lines changed

benchmark/EU/flow-milestone.csv

Lines changed: 502 additions & 502 deletions
Large diffs are not rendered by default.

src/input-schemas.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -598,6 +598,11 @@
598598
}
599599
},
600600
"flow_milestone": {
601+
"dc_opf": {
602+
"default": false,
603+
"description": "Whether a flow uses direct current optimal power flow (dc-opf) constraints or not. This method only applies to transport flows.",
604+
"type": "BOOLEAN"
605+
},
601606
"from_asset": {
602607
"description": "Name of the asset. Same as the one in the `asset` table.",
603608
"type": "VARCHAR"
@@ -611,6 +616,12 @@
611616
"description": "Year of investment and operation decisions in the optimization.",
612617
"type": "INTEGER"
613618
},
619+
"reactance": {
620+
"default": 0.3,
621+
"description": "Reactance for the transport flow.",
622+
"type": "DOUBLE",
623+
"unit_of_measure": "p.u."
624+
},
614625
"to_asset": {
615626
"description": "Name of the asset. Same as the one in the `asset` table.",
616627
"type": "VARCHAR"

src/model-parameters.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@ If both are passed, then `path` has preference. Explicit keyword arguments take
2323
2424
- `discount_rate::Float64 = 0.0`: The model discount rate.
2525
- `discount_year::Int`: The model discount year.
26+
- `power_system_base::Float64 = 100.0`: The power system base in MVA.
2627
"""
2728
Base.@kwdef mutable struct ModelParameters
2829
discount_rate::Float64 = 0.0
2930
discount_year::Int # Explicit definition expected
31+
power_system_base::Float64 = 100.0
3032
end
3133

3234
# Using `@kwdef` defines a default constructor based on keywords
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
from_asset,to_asset,milestone_year,investable,variable_cost
2-
battery,demand,2030,false,0.0
3-
wind,demand,2030,false,0.001
4-
ens,demand,2050,false,0.18
5-
ccgt,demand,2030,true,0.05
6-
ocgt,demand,2030,false,0.07
7-
solar,demand,2050,false,0.0
8-
demand,battery,2050,false,0.0
9-
demand,battery,2030,false,0.0
10-
solar,demand,2030,false,0.0
11-
ocgt,demand,2050,false,0.07
12-
ccgt,demand,2050,true,0.05
13-
ens,demand,2030,false,0.18
14-
battery,demand,2050,false,0.0
15-
wind,demand,2050,false,0.001
1+
from_asset,to_asset,milestone_year,investable,variable_cost,reactance,dc_opf
2+
battery,demand,2030,false,0.0,0.3,false
3+
wind,demand,2030,false,0.001,0.3,false
4+
ens,demand,2050,false,0.18,0.3,false
5+
ccgt,demand,2030,true,0.05,0.3,false
6+
ocgt,demand,2030,false,0.07,0.3,false
7+
solar,demand,2050,false,0.0,0.3,false
8+
demand,battery,2050,false,0.0,0.3,false
9+
demand,battery,2030,false,0.0,0.3,false
10+
solar,demand,2030,false,0.0,0.3,false
11+
ocgt,demand,2050,false,0.07,0.3,false
12+
ccgt,demand,2050,true,0.05,0.3,false
13+
ens,demand,2030,false,0.18,0.3,false
14+
battery,demand,2050,false,0.0,0.3,false
15+
wind,demand,2050,false,0.001,0.3,false

test/inputs/Norse/flow-milestone.csv

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
1-
from_asset,to_asset,milestone_year,investable,variable_cost
2-
G_imports,Midgard_CCGT,2030,false,0.0015
3-
Midgard_E_demand,Midgard_Hydro,2030,false,0.0
4-
Midgard_PHS,Midgard_E_demand,2030,false,0.004
5-
Valhalla_GT,Valhalla_E_balance,2030,false,0.0
6-
Valhalla_Heat_pump,Valhalla_Heat_demand,2030,false,0.0
7-
Asgard_Battery,Asgard_E_demand,2030,false,0.003
8-
Asgard_Solar,Asgard_Battery,2030,false,0.001
9-
Midgard_E_demand,Valhalla_E_balance,2030,true,0.0
10-
Midgard_CCGT,Midgard_E_demand,2030,false,0.0
11-
Valhalla_Fuel_cell,Valhalla_E_balance,2030,false,0.0
12-
Valhalla_H2_demand,Valhalla_Fuel_cell,2030,false,0.0
13-
Asgard_Solar,Asgard_E_demand,2030,false,0.001
14-
G_imports,Valhalla_GT,2030,false,0.0015
15-
Midgard_Wind,Midgard_E_demand,2030,false,0.002
16-
Midgard_Hydro,Midgard_E_demand,2030,false,0.0
17-
Valhalla_E_balance,Valhalla_Electrolyser,2030,false,0.0
18-
Asgard_E_demand,Midgard_E_demand,2030,true,0.0
19-
Asgard_E_demand,Valhalla_E_balance,2030,true,0.0
20-
Midgard_Nuclear_SMR,Midgard_E_demand,2030,false,0.015
21-
Midgard_E_demand,Midgard_PHS,2030,false,0.002
22-
Valhalla_E_balance,Valhalla_E_exports,2030,false,0.0
23-
Valhalla_E_balance,Valhalla_Heat_pump,2030,false,0.0
24-
Valhalla_Electrolyser,Valhalla_H2_demand,2030,false,0.0
25-
G_imports,Valhalla_H2_generator,2030,false,0.0015
26-
Valhalla_Fuel_cell,Valhalla_Heat_demand,2030,false,0.0
27-
Asgard_CCGT,Asgard_E_demand,2030,false,0.0
28-
Valhalla_H2_demand,Valhalla_H2_storage,2030,false,0.0
29-
Valhalla_H2_generator,Valhalla_H2_demand,2030,false,0.0
30-
G_imports,Asgard_CCGT,2030,false,0.0015
31-
Midgard_E_imports,Midgard_E_demand,2030,false,0.02
32-
Valhalla_Waste_heat,Valhalla_Heat_pump,2030,false,0.0025
33-
Valhalla_H2_storage,Valhalla_H2_demand,2030,false,0.0
34-
Midgard_Hydro,W_Spillage,2030,false,0.05
1+
from_asset,to_asset,milestone_year,investable,variable_cost,reactance,dc_opf
2+
G_imports,Midgard_CCGT,2030,false,0.0015,0.3,false
3+
Midgard_E_demand,Midgard_Hydro,2030,false,0.0,0.3,false
4+
Midgard_PHS,Midgard_E_demand,2030,false,0.004,0.3,false
5+
Valhalla_GT,Valhalla_E_balance,2030,false,0.0,0.3,false
6+
Valhalla_Heat_pump,Valhalla_Heat_demand,2030,false,0.0,0.3,false
7+
Asgard_Battery,Asgard_E_demand,2030,false,0.003,0.3,false
8+
Asgard_Solar,Asgard_Battery,2030,false,0.001,0.3,false
9+
Midgard_E_demand,Valhalla_E_balance,2030,true,0.0,0.3,false
10+
Midgard_CCGT,Midgard_E_demand,2030,false,0.0,0.3,false
11+
Valhalla_Fuel_cell,Valhalla_E_balance,2030,false,0.0,0.3,false
12+
Valhalla_H2_demand,Valhalla_Fuel_cell,2030,false,0.0,0.3,false
13+
Asgard_Solar,Asgard_E_demand,2030,false,0.001,0.3,false
14+
G_imports,Valhalla_GT,2030,false,0.0015,0.3,false
15+
Midgard_Wind,Midgard_E_demand,2030,false,0.002,0.3,false
16+
Midgard_Hydro,Midgard_E_demand,2030,false,0.0,0.3,false
17+
Valhalla_E_balance,Valhalla_Electrolyser,2030,false,0.0,0.3,false
18+
Asgard_E_demand,Midgard_E_demand,2030,true,0.0,0.3,false
19+
Asgard_E_demand,Valhalla_E_balance,2030,true,0.0,0.3,false
20+
Midgard_Nuclear_SMR,Midgard_E_demand,2030,false,0.015,0.3,false
21+
Midgard_E_demand,Midgard_PHS,2030,false,0.002,0.3,false
22+
Valhalla_E_balance,Valhalla_E_exports,2030,false,0.0,0.3,false
23+
Valhalla_E_balance,Valhalla_Heat_pump,2030,false,0.0,0.3,false
24+
Valhalla_Electrolyser,Valhalla_H2_demand,2030,false,0.0,0.3,false
25+
G_imports,Valhalla_H2_generator,2030,false,0.0015,0.3,false
26+
Valhalla_Fuel_cell,Valhalla_Heat_demand,2030,false,0.0,0.3,false
27+
Asgard_CCGT,Asgard_E_demand,2030,false,0.0,0.3,false
28+
Valhalla_H2_demand,Valhalla_H2_storage,2030,false,0.0,0.3,false
29+
Valhalla_H2_generator,Valhalla_H2_demand,2030,false,0.0,0.3,false
30+
G_imports,Asgard_CCGT,2030,false,0.0015,0.3,false
31+
Midgard_E_imports,Midgard_E_demand,2030,false,0.02,0.3,false
32+
Valhalla_Waste_heat,Valhalla_Heat_pump,2030,false,0.0025,0.3,false
33+
Valhalla_H2_storage,Valhalla_H2_demand,2030,false,0.0,0.3,false
34+
Midgard_Hydro,W_Spillage,2030,false,0.05,0.3,false
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
from_asset,to_asset,milestone_year,investable,variable_cost
2-
wind,demand,2030,false,0.001
3-
battery,demand,2030,false,0.0
4-
phs,demand,2030,false,0.0
5-
ccgt,demand,2030,false,0.05
6-
ocgt,demand,2030,false,0.07
7-
demand,phs,2030,false,0.0
8-
demand,battery,2030,false,0.0
9-
solar,demand,2030,false,0.0
10-
ens,demand,2030,false,0.18
1+
from_asset,to_asset,milestone_year,investable,variable_cost,reactance,dc_opf
2+
wind,demand,2030,false,0.001,0.3,false
3+
battery,demand,2030,false,0.0,0.3,false
4+
phs,demand,2030,false,0.0,0.3,false
5+
ccgt,demand,2030,false,0.05,0.3,false
6+
ocgt,demand,2030,false,0.07,0.3,false
7+
demand,phs,2030,false,0.0,0.3,false
8+
demand,battery,2030,false,0.0,0.3,false
9+
solar,demand,2030,false,0.0,0.3,false
10+
ens,demand,2030,false,0.18,0.3,false

test/inputs/Tiny/flow-milestone.csv

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from_asset,to_asset,milestone_year,investable,variable_cost
2-
wind,demand,2030,false,0.001
3-
ccgt,demand,2030,false,0.05
4-
ocgt,demand,2030,false,0.07
5-
solar,demand,2030,false,0.0
6-
ens,demand,2030,false,0.18
1+
from_asset,to_asset,milestone_year,investable,variable_cost,reactance,dc_opf
2+
wind,demand,2030,false,0.001,0.3,false
3+
ccgt,demand,2030,false,0.05,0.3,false
4+
ocgt,demand,2030,false,0.07,0.3,false
5+
solar,demand,2030,false,0.0,0.3,false
6+
ens,demand,2030,false,0.18,0.3,false
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from_asset,to_asset,milestone_year,investable,variable_cost
2-
wind,demand,2030,false,0.001
3-
ccgt,demand,2030,false,0.05
4-
gas,ocgt,2030,false,0.0
5-
ocgt,demand,2030,false,0.07
6-
smr,demand,2030,false,0.01
7-
gas,ccgt,2030,false,0.0
8-
solar,demand,2030,false,0.0
9-
ens,demand,2030,false,0.5
1+
from_asset,to_asset,milestone_year,investable,variable_cost,reactance,dc_opf
2+
wind,demand,2030,false,0.001,0.3,false
3+
ccgt,demand,2030,false,0.05,0.3,false
4+
gas,ocgt,2030,false,0.0,0.3,false
5+
ocgt,demand,2030,false,0.07,0.3,false
6+
smr,demand,2030,false,0.01,0.3,false
7+
gas,ccgt,2030,false,0.0,0.3,false
8+
solar,demand,2030,false,0.0,0.3,false
9+
ens,demand,2030,false,0.5,0.3,false
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from_asset,to_asset,milestone_year,investable,variable_cost
2-
H2,ccgt,2030,false,0.01
3-
wind,phs,2030,false,0.002
4-
ccgt,balance,2030,false,0.05
5-
balance,demand,2030,false,0.0001
6-
wind,balance,2030,false,0.005
7-
phs,balance,2030,false,0.001
1+
from_asset,to_asset,milestone_year,investable,variable_cost,reactance,dc_opf
2+
H2,ccgt,2030,false,0.01,0.3,false
3+
wind,phs,2030,false,0.002,0.3,false
4+
ccgt,balance,2030,false,0.05,0.3,false
5+
balance,demand,2030,false,0.0001,0.3,false
6+
wind,balance,2030,false,0.005,0.3,false
7+
phs,balance,2030,false,0.001,0.3,false
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
discount_rate = 0.03
22
discount_year = 2020
3+
power_system_base = 100

test/test-model-parameters.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,14 @@
22
path = joinpath(@__DIR__, "inputs", "model-parameters-example.toml")
33

44
@testset "Basic usage" begin
5-
mp = TulipaEnergyModel.ModelParameters(; discount_rate = 0.1, discount_year = 2018)
5+
mp = TulipaEnergyModel.ModelParameters(;
6+
discount_rate = 0.1,
7+
discount_year = 2018,
8+
power_system_base = 50,
9+
)
610
@test mp.discount_rate == 0.1
711
@test mp.discount_year == 2018
12+
@test mp.power_system_base == 50
813
end
914

1015
@testset "Errors when missing required parameters" begin

0 commit comments

Comments
 (0)