Calculate Offshore Turbine CAPEX¶
- Get location specific parameters such as water depth and distance to coast
- Calculate location specific CAPEX for the offshore turbine
In [1]:
Copied!
import reskit as rk
from reskit.util.local_values import waterDepthFromLocation
from reskit.wind.economic.offshore_cost_model import calculateSpecificOffshoreCapex
from reskit.util.local_values import distanceToCoastline
import geokit as gk
import reskit as rk
from reskit.util.local_values import waterDepthFromLocation
from reskit.wind.economic.offshore_cost_model import calculateSpecificOffshoreCapex
from reskit.util.local_values import distanceToCoastline
import geokit as gk
Get water depth and distance to coast
In [2]:
Copied!
# get path for water depth and distance to coast raster files
waterDepthFilePath = gk.raster.rasterInfo(rk.TEST_DATA["water_depth_northsea.tif"]).source
coastDistanceFilePath = gk.raster.rasterInfo(rk.TEST_DATA["coast_distance_northsea.tif"]).source
# define two locations in the North Sea for which we want to extract the water depth
lon_loc1 = 6.9
lat_loc1 = 54.4
lon_loc2 = 6.85
lat_loc2 = 54.45
# get the water depth for both locations
depth_loc_1 = abs(
waterDepthFromLocation(
latitude=lat_loc1,
longitude=lon_loc1,
waterDepthFilePath=waterDepthFilePath,
)
)
depth_loc_2 = abs(
waterDepthFromLocation(
latitude=lat_loc2,
longitude=lon_loc2,
waterDepthFilePath=waterDepthFilePath,
)
)
depth = (depth_loc_1, depth_loc_2)
print(f"Water depth: {depth} m")
# get the distance to coastline for both locations
distance_loc1 = distanceToCoastline(
latitude=lat_loc1,
longitude=lon_loc1,
distancetoCoastFilePath=coastDistanceFilePath,
)
distance_loc2 = distanceToCoastline(
latitude=lat_loc2,
longitude=lon_loc2,
distancetoCoastFilePath=coastDistanceFilePath,
)
distance = (distance_loc1, distance_loc2)
print(f"Distance {distance} m")
# get path for water depth and distance to coast raster files
waterDepthFilePath = gk.raster.rasterInfo(rk.TEST_DATA["water_depth_northsea.tif"]).source
coastDistanceFilePath = gk.raster.rasterInfo(rk.TEST_DATA["coast_distance_northsea.tif"]).source
# define two locations in the North Sea for which we want to extract the water depth
lon_loc1 = 6.9
lat_loc1 = 54.4
lon_loc2 = 6.85
lat_loc2 = 54.45
# get the water depth for both locations
depth_loc_1 = abs(
waterDepthFromLocation(
latitude=lat_loc1,
longitude=lon_loc1,
waterDepthFilePath=waterDepthFilePath,
)
)
depth_loc_2 = abs(
waterDepthFromLocation(
latitude=lat_loc2,
longitude=lon_loc2,
waterDepthFilePath=waterDepthFilePath,
)
)
depth = (depth_loc_1, depth_loc_2)
print(f"Water depth: {depth} m")
# get the distance to coastline for both locations
distance_loc1 = distanceToCoastline(
latitude=lat_loc1,
longitude=lon_loc1,
distancetoCoastFilePath=coastDistanceFilePath,
)
distance_loc2 = distanceToCoastline(
latitude=lat_loc2,
longitude=lon_loc2,
distancetoCoastFilePath=coastDistanceFilePath,
)
distance = (distance_loc1, distance_loc2)
print(f"Distance {distance} m")
Water depth: (37.0, 36.0) m Distance (67, 73) m
Calculate the specific investments for two offshore locations
In [3]:
Copied!
speccapex = calculateSpecificOffshoreCapex(
baseSpecCapex=[1500, 1501.5],
capacity=[10000, 12000.5],
rotorDiam=[250, 260.5],
hubHeight=[150, 180.7],
waterDepth=depth,
coastDistance=distance,
portDistance=distance,
maxMonopileDepth=25,
maxJacketDepth=55,
baseDepth=17,
baseDistCoast=27,
baseWFSize=106858,
baseCap=None,
baseHubHeight=None,
baseRotorDiam=None,
defaultOffshoreParamsFp=None,
techYear=2050,
)
print(f"Specific Capex: {speccapex} €/kW")
speccapex = calculateSpecificOffshoreCapex(
baseSpecCapex=[1500, 1501.5],
capacity=[10000, 12000.5],
rotorDiam=[250, 260.5],
hubHeight=[150, 180.7],
waterDepth=depth,
coastDistance=distance,
portDistance=distance,
maxMonopileDepth=25,
maxJacketDepth=55,
baseDepth=17,
baseDistCoast=27,
baseWFSize=106858,
baseCap=None,
baseHubHeight=None,
baseRotorDiam=None,
defaultOffshoreParamsFp=None,
techYear=2050,
)
print(f"Specific Capex: {speccapex} €/kW")
Baseline plant parameters have been loaded from: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/core/data/baseline_turbine_offshore_CaglayanEtAl2019.csv
baseCap is taken from overall techno-economic file baseHubHeight is taken from overall techno-economic file baseRotorDiam is taken from overall techno-economic file total Cost Substation: [300485.], specific Cost Substation: [23.11423077], voltageType: ['ac'] totalSpecCost Converter Station: [23.11423077], specECPS: [23.11423077], specECPF: [0.], voltageType: ['ac'] total Cost Substation: [300485.], specific Cost Substation: [23.11423077], voltageType: ['ac'] [1024.32432432] totalSpecCost Platfom Substation: [31.54481847], specECPF: [25.85412778], specICPF: [5.69069069], voltageType: ['ac'], foundationType: ['jacket'] totalSpecCost Converter Station: [54.65904924], specECPS: [23.11423077], specECPF: [31.54481847], voltageType: ['ac'] totalSpecCableCost: [228.42], voltageType: ['ac'], total Cost Substation: [1345150.], specific Cost Substation: [103.47307692], voltageType: ['dc'] totalSpecCost Converter Station: [103.47307692], specECPS: [103.47307692], specECPF: [0.], voltageType: ['dc'] total Cost Substation: [1345150.], specific Cost Substation: [103.47307692], voltageType: ['dc'] [1024.32432432] totalSpecCost Platfom Substation: [57.02531847], specECPF: [51.33462778], specICPF: [5.69069069], voltageType: ['dc'], foundationType: ['jacket'] totalSpecCost Converter Station: [160.49839539], specECPS: [103.47307692], specECPF: [57.02531847], voltageType: ['dc'] totalSpecCableCost: [65.61], voltageType: ['dc'],
DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:301 blades argument has been deprecated and replaced by optional blades_number key in kwargs, 'blades' arg will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:301 gdp_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:301 blade_material_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:176 blades argument has been deprecated and replaced by optional blades_number key in kwargs, 'blades' arg will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:176 gdp_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:176 blade_material_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:217 blades argument has been deprecated and replaced by optional blades_number key in kwargs, 'blades' arg will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:217 gdp_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:217 blade_material_escalator has been deprecated and will be removed soon.
total Cost Substation: [231875. 277626.435], specific Cost Substation: [23.1875 23.13457231], voltageType: ['ac' 'ac'] totalSpecCost Converter Station: [23.1875 23.13457231], specECPS: [23.1875 23.13457231], specECPF: [0. 0.], voltageType: ['ac' 'ac'] total Cost Substation: [231875. 277626.435], specific Cost Substation: [23.1875 23.13457231], voltageType: ['ac' 'ac'] [1060.36036036 1065.76576577] totalSpecCost Platfom Substation: [34.109352 34.02116537], specECPF: [28.21846111 28.10024444], specICPF: [5.89089089 5.92092092], voltageType: ['ac' 'ac'], foundationType: ['jacket' 'jacket'] totalSpecCost Converter Station: [57.296852 57.15573767], specECPS: [23.1875 23.13457231], specECPF: [34.109352 34.02116537], voltageType: ['ac' 'ac'] totalSpecCableCost: [566.82 617.58], voltageType: ['ac' 'ac'], total Cost Substation: [1036360. 1242271.465], specific Cost Substation: [103.636 103.51830882], voltageType: ['dc' 'dc'] totalSpecCost Converter Station: [103.636 103.51830882], specECPS: [103.636 103.51830882], specECPF: [0. 0.], voltageType: ['dc' 'dc'] total Cost Substation: [1036360. 1242271.465], specific Cost Substation: [103.636 103.51830882], voltageType: ['dc' 'dc'] [1060.36036036 1065.76576577] totalSpecCost Platfom Substation: [61.919852 61.71516537], specECPF: [56.02896111 55.79424444], specICPF: [5.89089089 5.92092092], voltageType: ['dc' 'dc'], foundationType: ['jacket' 'jacket'] totalSpecCost Converter Station: [165.555852 165.23347419], specECPS: [103.636 103.51830882], specECPF: [61.919852 61.71516537], voltageType: ['dc' 'dc'] totalSpecCableCost: [162.81 177.39], voltageType: ['dc' 'dc'], Specific Capex: [2270.23079456 2267.29364937] €/kW
Compare specific costs for AC and DC connection
In [4]:
Copied!
# AC connection
speccapex_AC = calculateSpecificOffshoreCapex(
baseSpecCapex=[1500, 1501.5],
capacity=[10000, 12000.5],
rotorDiam=[250, 260.5],
hubHeight=[150, 180.7],
waterDepth=depth,
coastDistance=distance,
portDistance=distance,
maxMonopileDepth=25,
maxJacketDepth=55,
baseDepth=17,
baseDistCoast=27,
baseWFSize=106858,
baseCap=None,
baseHubHeight=None,
baseRotorDiam=None,
defaultOffshoreParamsFp=None,
techYear=2050,
voltageType="ac",
)
# DC connection
speccapex_DC = calculateSpecificOffshoreCapex(
baseSpecCapex=[1500, 1501.5],
capacity=[10000, 12000.5],
rotorDiam=[250, 260.5],
hubHeight=[150, 180.7],
waterDepth=depth,
coastDistance=distance,
portDistance=distance,
maxMonopileDepth=25,
maxJacketDepth=55,
baseDepth=17,
baseDistCoast=27,
baseWFSize=106858,
baseCap=None,
baseHubHeight=None,
baseRotorDiam=None,
defaultOffshoreParamsFp=None,
techYear=2050,
voltageType="dc",
)
print("--------------------------------------------------------")
print("Specific Capex with AC connection:", speccapex_AC, "€/kW")
print("Specific Capex with DC connection:", speccapex_DC, "€/kW")
# AC connection
speccapex_AC = calculateSpecificOffshoreCapex(
baseSpecCapex=[1500, 1501.5],
capacity=[10000, 12000.5],
rotorDiam=[250, 260.5],
hubHeight=[150, 180.7],
waterDepth=depth,
coastDistance=distance,
portDistance=distance,
maxMonopileDepth=25,
maxJacketDepth=55,
baseDepth=17,
baseDistCoast=27,
baseWFSize=106858,
baseCap=None,
baseHubHeight=None,
baseRotorDiam=None,
defaultOffshoreParamsFp=None,
techYear=2050,
voltageType="ac",
)
# DC connection
speccapex_DC = calculateSpecificOffshoreCapex(
baseSpecCapex=[1500, 1501.5],
capacity=[10000, 12000.5],
rotorDiam=[250, 260.5],
hubHeight=[150, 180.7],
waterDepth=depth,
coastDistance=distance,
portDistance=distance,
maxMonopileDepth=25,
maxJacketDepth=55,
baseDepth=17,
baseDistCoast=27,
baseWFSize=106858,
baseCap=None,
baseHubHeight=None,
baseRotorDiam=None,
defaultOffshoreParamsFp=None,
techYear=2050,
voltageType="dc",
)
print("--------------------------------------------------------")
print("Specific Capex with AC connection:", speccapex_AC, "€/kW")
print("Specific Capex with DC connection:", speccapex_DC, "€/kW")
Baseline plant parameters have been loaded from: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/core/data/baseline_turbine_offshore_CaglayanEtAl2019.csv
baseCap is taken from overall techno-economic file baseHubHeight is taken from overall techno-economic file baseRotorDiam is taken from overall techno-economic file total Cost Substation: [300485.], specific Cost Substation: [23.11423077], voltageType: ['ac'] totalSpecCost Converter Station: [23.11423077], specECPS: [23.11423077], specECPF: [0.], voltageType: ['ac'] total Cost Substation: [300485.], specific Cost Substation: [23.11423077], voltageType: ['ac'] [1024.32432432] totalSpecCost Platfom Substation: [31.54481847], specECPF: [25.85412778], specICPF: [5.69069069], voltageType: ['ac'], foundationType: ['jacket'] totalSpecCost Converter Station: [54.65904924], specECPS: [23.11423077], specECPF: [31.54481847], voltageType: ['ac'] totalSpecCableCost: [228.42], voltageType: ['ac'], total Cost Substation: [231875. 277626.435], specific Cost Substation: [23.1875 23.13457231], voltageType: ['ac' 'ac'] totalSpecCost Converter Station: [23.1875 23.13457231], specECPS: [23.1875 23.13457231], specECPF: [0. 0.], voltageType: ['ac' 'ac'] total Cost Substation: [231875. 277626.435], specific Cost Substation: [23.1875 23.13457231], voltageType: ['ac' 'ac'] [1060.36036036 1065.76576577] totalSpecCost Platfom Substation: [34.109352 34.02116537], specECPF: [28.21846111 28.10024444], specICPF: [5.89089089 5.92092092], voltageType: ['ac' 'ac'], foundationType: ['jacket' 'jacket'] totalSpecCost Converter Station: [57.296852 57.15573767], specECPS: [23.1875 23.13457231], specECPF: [34.109352 34.02116537], voltageType: ['ac' 'ac'] totalSpecCableCost: [566.82 617.58], voltageType: ['ac' 'ac'], Baseline plant parameters have been loaded from: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/core/data/baseline_turbine_offshore_CaglayanEtAl2019.csv
baseCap is taken from overall techno-economic file baseHubHeight is taken from overall techno-economic file baseRotorDiam is taken from overall techno-economic file
DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:301 blades argument has been deprecated and replaced by optional blades_number key in kwargs, 'blades' arg will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:301 gdp_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:301 blade_material_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:176 blades argument has been deprecated and replaced by optional blades_number key in kwargs, 'blades' arg will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:176 gdp_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:176 blade_material_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:217 blades argument has been deprecated and replaced by optional blades_number key in kwargs, 'blades' arg will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:217 gdp_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:217 blade_material_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:301 blades argument has been deprecated and replaced by optional blades_number key in kwargs, 'blades' arg will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:301 gdp_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:301 blade_material_escalator has been deprecated and will be removed soon.
total Cost Substation: [1345150.], specific Cost Substation: [103.47307692], voltageType: ['dc'] totalSpecCost Converter Station: [103.47307692], specECPS: [103.47307692], specECPF: [0.], voltageType: ['dc'] total Cost Substation: [1345150.], specific Cost Substation: [103.47307692], voltageType: ['dc'] [1024.32432432] totalSpecCost Platfom Substation: [57.02531847], specECPF: [51.33462778], specICPF: [5.69069069], voltageType: ['dc'], foundationType: ['jacket'] totalSpecCost Converter Station: [160.49839539], specECPS: [103.47307692], specECPF: [57.02531847], voltageType: ['dc'] totalSpecCableCost: [65.61], voltageType: ['dc'], total Cost Substation: [1036360. 1242271.465], specific Cost Substation: [103.636 103.51830882], voltageType: ['dc' 'dc'] totalSpecCost Converter Station: [103.636 103.51830882], specECPS: [103.636 103.51830882], specECPF: [0. 0.], voltageType: ['dc' 'dc'] total Cost Substation: [1036360. 1242271.465], specific Cost Substation: [103.636 103.51830882], voltageType: ['dc' 'dc'] [1060.36036036 1065.76576577] totalSpecCost Platfom Substation: [61.919852 61.71516537], specECPF: [56.02896111 55.79424444], specICPF: [5.89089089 5.92092092], voltageType: ['dc' 'dc'], foundationType: ['jacket' 'jacket'] totalSpecCost Converter Station: [165.555852 165.23347419], specECPS: [103.636 103.51830882], specECPF: [61.919852 61.71516537], voltageType: ['dc' 'dc'] totalSpecCableCost: [162.81 177.39], voltageType: ['dc' 'dc'], -------------------------------------------------------- Specific Capex with AC connection: [2482.83790906 2519.41717265] €/kW Specific Capex with DC connection: [2235.80624373 2232.46497803] €/kW
DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:176 blades argument has been deprecated and replaced by optional blades_number key in kwargs, 'blades' arg will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:176 gdp_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:176 blade_material_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:217 blades argument has been deprecated and replaced by optional blades_number key in kwargs, 'blades' arg will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:217 gdp_escalator has been deprecated and will be removed soon.DeprecationWarning: /home/docs/checkouts/readthedocs.org/user_builds/ethos-reskit/checkouts/latest/reskit/wind/economic/offshore_cost_model.py:217 blade_material_escalator has been deprecated and will be removed soon.