Skip to content

Commit

Permalink
Updated wisdem api to match new project params and rename outdated in…
Browse files Browse the repository at this point in the history
…puts. Also updated examples that had outdated inputs.
  • Loading branch information
nRiccobo committed Nov 12, 2024
1 parent e2ba194 commit 35cae60
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 36 deletions.
116 changes: 83 additions & 33 deletions ORBIT/api/wisdem.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,28 @@ def setup(self):
self.set_input_defaults("num_assembly_lines", 1)
self.set_input_defaults("takt_time", 170.0, units="h")
self.set_input_defaults("port_cost_per_month", 2e6, units="USD/mo")
self.set_input_defaults("construction_insurance", 44.0, units="USD/kW")
self.set_input_defaults("construction_financing", 183.0, units="USD/kW")
self.set_input_defaults("contingency", 316.0, units="USD/kW")
self.set_input_defaults("commissioning_cost_kW", 44.0, units="USD/kW")
self.set_input_defaults("decommissioning_cost_kW", 58.0, units="USD/kW")
self.set_input_defaults(
"construction_insurance_per_kW",
34.6,
units="USD/kW"
)
self.set_input_defaults(
"construction_financing_per_kW",
218.8,
units="USD/kW"
)
self.set_input_defaults(
"procurement_contingency_per_kW",
154.5,
units="USD/kW"
)
self.set_input_defaults(
"installation_contingency_per_kW",
111.8,
units="USD/kW"
)
self.set_input_defaults("commissioning_per_kW", 34.6, units="USD/kW")
self.set_input_defaults("decommissioning_per_kW", 56.7, units="USD/kW")
self.set_input_defaults("site_auction_price", 100e6, units="USD")
self.set_input_defaults("site_assessment_cost", 50e6, units="USD")
self.set_input_defaults("construction_plan_cost", 1e6, units="USD")
Expand Down Expand Up @@ -116,14 +133,15 @@ def setup(self):
"num_station_keeping",
3,
desc=(
"Number of station keeping or AHTS vessels that attach to floating"
" platforms under tow-out."
"Number of station keeping or AHTS vessels that attach to"
" floating platforms under tow-out."
),
)
self.add_discrete_input(
"oss_install_vessel",
"example_heavy_lift_vessel",
desc="Vessel configuration to use for installation of offshore substations.", # noqa: E501
desc="Vessel configuration to use for installation"
" of offshore substations.",
)

# Site
Expand Down Expand Up @@ -305,12 +323,14 @@ def setup(self):
"takt_time",
170.0,
units="h",
desc="Substructure assembly cycle time when doing assembly at the port.", # noqa: E501
desc="Substructure assembly cycle time when doing assembly at the"
" port.",
)
self.add_discrete_input(
"num_assembly_lines",
1,
desc="Number of assembly lines used when assembly occurs at the port.", # noqa: E501
desc="Number of assembly lines used when assembly occurs at the"
" port.",
)
self.add_discrete_input(
"num_port_cranes",
Expand Down Expand Up @@ -397,24 +417,41 @@ def setup(self):
desc="Transition piece unit cost.",
)

# Project
# Project (based on 600GW fixed bottom farm)
self.add_input(
"construction_insurance",
44.0,
"construction_insurance_per_kW",
34.6,
units="USD/kW",
desc="Cost for construction insurance",
)
self.add_input(
"construction_financing",
183.0,
"construction_financing_per_kW",
218.9,
units="USD/kW",
desc="Cost for construction financing",
)
self.add_input(
"contingency",
316.0,
"procurement_contingency_per_kW",
154.5,
units="USD/kW",
desc="Cost in case of contingency",
desc="Cost of procurement contingency",
)
self.add_input(
"installation_contingency_per_kW",
111.8,
units="USD/kW",
desc="Cost of installation contingency",
)
self.add_input(
"commissioning_per_kW",
34.6,
units="USD/kW",
desc="Commissioning cost."
)
self.add_input(
"decommissioning_per_kW",
56.7, units="USD/kW",
desc="Decommissioning cost."
)
self.add_input(
"site_auction_price",
Expand Down Expand Up @@ -449,28 +486,29 @@ def setup(self):
" of Ocean Energy Management (BOEM)"
),
)
self.add_input("commissioning_cost_kW", 44.0, units="USD/kW", desc="Commissioning cost.")
self.add_input("decommissioning_cost_kW", 58.0, units="USD/kW", desc="Decommissioning cost.")

# Outputs
# Totals
self.add_output(
"bos_capex",
0.0,
units="USD",
desc="Total BOS CAPEX not including commissioning or decommissioning.", # noqa: E501
desc="Total BOS CAPEX not including commissioning or"
" decommissioning.",
)
self.add_output(
"total_capex",
0.0,
units="USD",
desc="Total BOS CAPEX including commissioning and decommissioning.", # noqa: E501
desc="Total BOS CAPEX including commissioning and"
" decommissioning.",
)
self.add_output(
"total_capex_kW",
0.0,
units="USD/kW",
desc="Total BOS CAPEX including commissioning and decommissioning.", # noqa: E501
desc="Total BOS CAPEX including commissioning and"
" decommissioning.",
)
self.add_output(
"installation_time",
Expand Down Expand Up @@ -580,16 +618,24 @@ def compile_orbit_config_file(
},
# Project development costs
"project_parameters": {
"construction_insurance": float(inputs["construction_insurance"][0]),
"construction_financing": float(inputs["construction_financing"][0]),
"contingency": float(inputs["contingency"][0]),
"construction_insurance":
float(inputs["construction_insurance_per_kW"][0]),
"construction_financing":
float(inputs["construction_financing_per_kW"][0]),
"procurement_contigency":
float(inputs["procurement_contingency_per_kW"][0]),
"installation_contigency":
float(inputs["installation_contingency_per_kW"][0]),
"commissioning": float(inputs["commissioning_per_kW"][0]),
"decommissioning": float(inputs["decommissioning_per_kW"][0]),
"site_auction_price": float(inputs["site_auction_price"][0]),
"site_assessment_cost": float(inputs["site_assessment_cost"][0]),
"construction_plan_cost": float(inputs["construction_plan_cost"][0]),
"installation_plan_cost": float(inputs["installation_plan_cost"][0]),
"site_assessment_cost":
float(inputs["site_assessment_cost"][0]),
"construction_plan_cost":
float(inputs["construction_plan_cost"][0]),
"installation_plan_cost":
float(inputs["installation_plan_cost"][0]),
"boem_review_cost": float(inputs["boem_review_cost"][0]),
"commissioning": float(inputs["commissioning_cost_kW"][0]),
"decommissioning": float(inputs["decommissioning_cost_kW"][0]),
"turbine_capex": float(inputs["turbine_capex"][0]),
},
# Phases
Expand All @@ -606,15 +652,19 @@ def compile_orbit_config_file(
],
}

if "landfall" in config and "interconnection_distance" in config["landfall"]:
if "landfall" in config and ("interconnection_distance"
in config["landfall"]
):
warn(
"landfall dictionary will be deprecated and moved"
" into [export_system_design][landfall].",
DeprecationWarning,
stacklevel=2,
)

if "export_system_design" in config and "interconnection_distance" in config["export_system_design"]:
if "export_system_design" in config and ("interconnection_distance"
in config["export_system_design"]
):
warn(
"[export_system][interconnection_distance] will be deprecated"
" and moved to"
Expand Down
4 changes: 1 addition & 3 deletions examples/configs/example_fixed_project.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ plant:
landfall:
interconnection_distance: 3
trench_length: 2
turbine: SWT_6MW_154m_110m
turbine: 12MW_generic
# Vessels
array_cable_install_vessel: example_cable_lay_vessel
export_cable_install_vessel: example_cable_lay_vessel
Expand Down Expand Up @@ -52,5 +52,3 @@ install_phases:
# Project Inputs
project_parameters:
turbine_capex: 1500
commissioning: 0.01
decommissioning: 0.15
2 changes: 2 additions & 0 deletions examples/configs/example_floating_project.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,5 @@ install_phases:
TurbineInstallation: 0
# Project Inputs
turbine: 12MW_generic
project_parameters:
turbine_capex: 1500

0 comments on commit 35cae60

Please sign in to comment.