Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reorganizing common costs in design modules #169

Merged
merged 20 commits into from
Aug 1, 2024
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
96c1729
Updated spar design common_cost.
nRiccobo Jul 8, 2024
c83e614
Updated semisub design cost in common cost.
nRiccobo Jul 8, 2024
2657029
Updated monopile design with common cost
nRiccobo Jul 8, 2024
158cf1b
Updated electrical_export and oss_design in common costs.
nRiccobo Jul 9, 2024
a64980f
Fixed typos in electrical_export and updated common_cost.
nRiccobo Jul 9, 2024
6902f39
Updated mooring system and common_cost.
nRiccobo Jul 9, 2024
888982f
formatting common_cost.
nRiccobo Jul 10, 2024
a2c2101
Updated electrical export test.
nRiccobo Jul 10, 2024
2f1932f
Merge remote-tracking branch 'origin' into relocate-get-costs
nRiccobo Jul 10, 2024
d07a3b0
Updated test to fix F811 error.
nRiccobo Jul 10, 2024
d5b7ad5
Added general method to base for getting default cost
nRiccobo Jul 11, 2024
5fe95dc
Moved get_default_cost from base to design phase. Tested with spar_de…
nRiccobo Jul 17, 2024
5d2612d
Updated electrical_export with new get_default_cost method.
nRiccobo Jul 18, 2024
02fdade
Had to add and swap self.num_switchgear with self.num_cables. 0 switc…
nRiccobo Jul 18, 2024
6bddc9e
Updated monopile design with get_default_cost.
nRiccobo Jul 18, 2024
953c8ed
Updating oss, monopile and mooring system with get_default_cost. Star…
nRiccobo Jul 18, 2024
eeeb140
Updated semisub model with get_default_cost. cleaned up other files.
nRiccobo Jul 19, 2024
55e7205
Removed export_system from oss_design config temporarily.
nRiccobo Jul 19, 2024
9e9abb6
Addressed doc string items and duplicate mass calculations.
nRiccobo Jul 31, 2024
b7e513e
Updated changelog with relocate cost updates
nRiccobo Jul 31, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 68 additions & 2 deletions ORBIT/core/defaults/common_costs.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,72 @@
# Material costs
monopile_steel_cost: 3000 # USD/t
tp_steel_cost: 3000 # USD/t
monopile_design:
monopile_steel_cost: 3000 # USD/t
tp_steel_cost: 3000 # USD/t

# Port properties
port_cost_per_month: 2e6 # USD/month

# Export system component cost rates
export_system_design:
cable_crossings:
crossing_unit_cost: 500000

# Spar component cost rates
spar_design:
stiffened_column_CR: 3120 # USD/t
tapered_column_CR: 4220 # USD/t
ballast_material_CR: 100 # USD/t
secondary_steel_CR: 7250 # USD/t

# Offshore substation component cost rates
substation_design:
mpt_cost_rate: 12500 # USD/MW
topside_fab_cost_rate: 14500 # USD/t
topside_design_cost: # USD
#oldHVAC: 4.5e6
HVAC: 107.3e6
HVDC-monopole: 294e6
HVDC-bipole: 476e6
shunt_cost_rate: 35000 # USD/MW
mpt_unit_cost: 2.87e6 # USD/mpt
shunt_unit_cost: 10000 # USD/cable
switchgear_cost: 4e6 # USD/cable
dc_breaker_cost: 10.5e6 # USD/cable
backup_gen_cost: 1e6 # USD
workspace_cost: 2e6 # USD
other_ancillary_cost: 3e6 # USD
topside_assembly_factor: 0.075 # %
converter_cost: # USD
HVAC: 0
HVDC-monopole: 127e6
HVDC-bipole: 296e6
oss_substructure_cost_rate: 3000 # USD/t
oss_pile_cost_rate: 0 # USD/t

# Onshore substation component cost rates
onshore_substation_design:
onshore_converter_cost: # USD
HVAC: 0
HVDC-monopole: 157e6
HVDC-bipole: 350e6
shunt_unit_cost: 13000 # USD/cable
switchgear_cost: 9.33e6 # USD/cable
compensation_rate: # USD/cable
HVAC: 31.3e6
HVDC-monopole: 0
HVDC-bipole: 0
onshore_construction_rate: # USD
HVAC: 5e6
HVDC-monopole: 87.3e6
HVDC-bipole: 100e6

# Semisubmersible component cost rates
semisubmersible_design:
stiffened_column_CR: 3120 # USD/t
truss_CR: 6250 # USD/t
heave_plate_CR: 6250 # USD/t
secondary_steel_CR: 7250 # USD/t

# Mooring system component cost rates
mooring_system_design: # USD/m
mooring_line_cost_rate: [399.0, 721.0, 1088.0]
29 changes: 29 additions & 0 deletions ORBIT/phases/design/design_phase.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from abc import abstractmethod

from ORBIT.phases import BasePhase
from ORBIT.core.defaults import common_costs


class DesignPhase(BasePhase):
Expand All @@ -31,3 +32,31 @@ def design_result(self):
"""

return {}

def get_default_cost(self, design_name, key, subkey=None):
"""Return the cost value for a key in a design
dictionary read from common_cost.yaml.
"""

if (design_dict := common_costs.get(design_name, None)) is None:
raise KeyError(f"No {design_name} in common_cost.yaml.")

if (cost_value := design_dict.get(key, None)) is None:
raise KeyError(f"{key} not found in [{design_name}] common_costs.")

if isinstance(cost_value, dict):
if subkey is None:
raise ValueError(
f"{key} is a dictionary and requires a" " 'subkey' input."
nRiccobo marked this conversation as resolved.
Show resolved Hide resolved
)

if (sub_cost_value := cost_value.get(subkey, None)) is None:
raise KeyError(
f"{subkey} not found in [{design_name}][{cost_value}]"
" common_costs."
)

return sub_cost_value

else:
return cost_value
Loading
Loading