Skip to content

Commit

Permalink
include greenheart init files and additional test input files
Browse files Browse the repository at this point in the history
  • Loading branch information
jaredthomas68 committed Dec 20, 2023
1 parent 3472204 commit bc36371
Show file tree
Hide file tree
Showing 5 changed files with 330 additions and 0 deletions.
Empty file added greenheart/tools/__init__.py
Empty file.
Empty file.
217 changes: 217 additions & 0 deletions tests/greenheart/test_hydrogen/input_files/plant/eco_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,217 @@
site:
mean_windspeed: False
project_parameters:
grid_connection: False # option, can be turned on or off
ppa_price: 0.025 # $/kWh based on 2022 land based wind market report (ERCOT area ppa prices) https://www.energy.gov/sites/default/files/2022-08/land_based_wind_market_report_2202.pdf
atb_year: 2022
finance_parameters:
general_inflation: 0.025 # based on 2022 ATB
discount_rate: 0.10 # nominal return based on 2022 ATB basline workbook
debt_equity_split: 68.5 # 2022 ATB uses 68.5% debt
property_tax: 0.01 # percent of CAPEX # combined with property insurance then between H2A and H2FAST defaults
property_insurance: 0.005 # percent of CAPEX # combined with property tax then between H2A and H2FAST defaults
total_income_tax_rate: 0.257 # 0.257 tax rate in 2022 atb baseline workbook # current federal income tax rate, but proposed 2023 rate is 0.28. No state income tax in Texas
capital_gains_tax_rate: 0.15 # H2FAST default
sales_tax_rate: 0.0 #Verify that a different rate shouldn't be used # minimum total sales tax rate in Corpus Christi https://www.cctexas.com/detail/corpus-christi-type-fund-purpose - does this apply to H2?
debt_interest_rate: 0.06
debt_type: "Revolving debt" # can be "Revolving debt" or "One time loan". Revolving debt is H2FAST default and leads to much lower LCOH
loan_period: 0 # H2FAST default, not used for revolving debt
cash_onhand_months: 1 # H2FAST default
administrative_expense_percent_of_sales: 0.00 #Check this # percent of sales H2FAST default
depreciation_method: "MACRS" # can be "MACRS" or "Straight line" - MACRS may be better and can reduce LCOH by more than $1/kg and is spec'd in the IRS MACRS schedule https://www.irs.gov/publications/p946#en_US_2020_publink1000107507
depreciation_period: 5 # years - as specified by the IRS MACRS schedule https://www.irs.gov/publications/p946#en_US_2020_publink1000107507
depreciation_period_electrolyzer: 7 # based on PEM Electrolysis H2A Production Case Study Documentation estimate of 7 years. also see https://www.irs.gov/publications/p946#en_US_2020_publink1000107507
discount_years:
wind: 2022 # based on turbine capex value provided to ORBIT from 2022 ATB
wind_and_electrical: 2022 # for ORBIT opex
platform: 2022 # TODO ask Nick and Charlie
electrical_export_system: 2022 # also from ORBIT, so match wind assumptions. TODO ask Sophie Bradenkamp
desal: 2013 # from code citation: https://www.nrel.gov/docs/fy16osti/66073.pdf
electrolyzer: 2020 # 2020 for singlitico2021, 2016 # for simple h2 cost model in hopp (see https://www.hydrogen.energy.gov/pdfs/19009_h2_production_cost_pem_electrolysis_2019.pdf) ## 2020 # based on IRENA report https://www.irena.org/-/media/Files/IRENA/Agency/Publication/2020/Dec/IRENA_Green_hydrogen_cost_2020.pdf
h2_transport_compressor: 2016 # listed in code header
h2_storage:
pressure_vessel: 2022 # based on readme for Compressed_gas_function
pipe: 2019 # Papadias 2021
salt_cavern: 2019 # Papadias 2021
turbine: 2003 # assumed based on Kottenstette 2004
none: 2022 # arbitrary
h2_pipe_array: 2018 # ANL costs
h2_transport_pipeline: 2018 # same model for costs as the h2_pipe_array

electrolyzer:
rating: 180 # MW # 0.9*Plant rating appears near-optimal for 400 MW wind plant with 3 days of underground pipe storage # MW
electrolyzer_capex: 700 # $/kW conservative 2025 centralized. high 700, low 300 # based on https://www.irena.org/-/media/Files/IRENA/Agency/Publication/2020/Dec/IRENA_Green_hydrogen_cost_2020.pdf
time_between_replacement: 62320 # 62320 based on PEM Electrolysis H2A Production Case Study Documentation estimate of 7 years, 40000 based on current est (see unpublished report), 80000 hours based on OSW atb_year = 2025
replacement_cost_percent: 0.15 # percent of capex - H2A default case
model: "singlitico2021" # "basic" is a basic cost model based on H2a and HFTO program record for PEM electrolysis. "singlitico2021" uses cost estimates from that paper
config:
general:
verbose: False # default
electrolyzer:
dt: 3600 # 1 default
stack:
cell_area: 1000.0
max_current: 2000
temperature: 60
n_cells: 100
stack_rating_kW: 3400.0
control:
n_stacks: 6
system_rating_MW: 20.4
control_type: BaselineDeg
costs:
plant_params:
plant_life: 25 #years (30 from [9])
pem_location: onshore #onshore,offshore,in-turbine
grid_connected: False
feedstock:
water_feedstock_cost: 0.0008 #$/kg-H20 (pg 18 Section 4.3 of [4])
water_per_kgH2: 10 #kgH20/kgH2 placeholder - should be output from model in future
opex:
var_OM: 0.0013 #$/kW [2018$/MWh] (Table S25 on page 10 of [1])
fixed_OM: 12.8 #$/kW-year (Table S25 on page 10 of [1])
stack_replacement:
d_eol: 0.7212 #end of life cell voltage value
stack_replacement_percent: 0.15 #% of CapEx ()
capex:
capex_learning_rate: 0.13 # ([1] Table S19) (Table B.2 [9]) (Exhibit 8 [8])
ref_cost_bop: 747 #$/kW #(Appendix E Table A8 [5]) (Table 3 of [2])
ref_size_bop: 200 #kW
ref_cost_pem: 695 #$/kW (kinda of Figure 5b & Fig 6 of [5]) (Table 6 of [3]) (Slide 12 of [6])
ref_size_pem: 2000 #kW
finances:
discount_rate: 0.05 #(page 3 below Eqn (4) of [7]) (pg 9 near Eqn (23) of [9] has 0.05)
install_factor: 0.33 # [%] Install Factor (Table B.2 of [9]) (Section 2.1 of [5])

# h2_transport_compressor:
# output_pressure: 100 # bar (1 bar = 100 kPa)
# flow_rate: 89 # kg/hr
# energy_rating: 802 # kWe (aka 1 kWh)
# mean_days_between_failures: 200 # days
# useful_life: 15 # was default in compressor script
# # annual_h2_throughput: 18750 # [kg/yr] -> kg of H2 per year
h2_transport_compressor:
outlet_pressure: 68 # bar based on HDSAM
h2_storage_compressor:
output_pressure: 100 # bar (1 bar = 100 kPa)
flow_rate: 89 # kg/hr
energy_rating: 802 # kWe (aka 1 kWh)
mean_days_between_failures: 200 # days
# annual_h2_throughput: 18750 # [kg/yr] -> kg of H2 per year
h2_transport_pipe:
outlet_pressure: 10 # bar - from example in code from Jamie #TODO check this value
h2_storage:
# capacity_kg: 18750 # kg
capacity_from_max_on_turbine_storage: True # if True, then days of storage is ignored and storage capacity is based on how much h2 storage fits on the turbines in the plant using Kottenstete 2003.
type: "none" # can be one of ["none", "pipe", "turbine", "pressure_vessel", "salt_cavern"] ### not yet implemented: ["line_rock_cavern"] #TODO fix salt cavern, just a number right now
days: 3 # [days] how many days worth of production we should be able to store (this is ignored if `capacity_from_max_on_turbine_storage` is set to True)
# platform:
# opex_rate: 0.0111 # % of capex to determine opex (see table 5 in https://www.acm.nl/sites/default/files/documents/study-on-estimation-method-for-additional-efficient-offshore-grid-opex.pdf)
# installation_days: 14 # days
# site:
# depth: -1
# distance: -1
# equipment:
# tech_combined_mass: -1
# tech_required_area: -1
platform:
opex_rate: 0.0111 # % of capex to determine opex (see table 5 in https://www.acm.nl/sites/default/files/documents/study-on-estimation-method-for-additional-efficient-offshore-grid-opex.pdf)
# Modified orbit configuration file for a single platform to carry "X technology"
design_phases:
- FixedPlatformDesign # Register Design Phase
install_phases:
FixedPlatformInstallation: 0 # Register Install Phase
oss_install_vessel: example_heavy_lift_vessel
site:
depth: -1 # site depth [m] (if -1, then will use the full plant depth)
distance: -1 # distance to port [km] (if -1, then will use the full plant distance)
equipment:
tech_required_area: -1. # equipment area [m**2] (-1 will require the input during run)
tech_combined_mass: -1 # equipment mass [t] (-1 will require the input during run)
topside_design_cost: 4500000 # topside design cost [USD]
installation_duration: 14 # time at sea [days]

policy_parameters: # these should be adjusted for inflation prior to application - order of operations: rate in 1992 $,
#then prevailing wage multiplier if applicable, then inflation
option1: # base # no policy included ---> see files/task1/regulation and policy revue/ page 4 of 13 middle - read this
# and look at assumptions
wind_itc: 0
wind_ptc: 0
h2_ptc: 0
option2: # base credit levels with H2
wind_itc: 0
wind_ptc: 0.003 # $0.003/kW (this is base, see inflation adjustment in option 3)
h2_ptc: 0.6 # $0.60/kg h2 produced - assumes net zero but not meeting prevailing wage requirements - does this need to be
# adjusted for inflation from 2022 dollars to claim date, probably constant after claim date?
option3: # same as option 5, but assuming prevailing wages are met --> 5x multiplier on both PTCs
wind_itc: 0
wind_ptc: 0.015 # $/kWh 1992 dollars
h2_ptc: 3.00 # $/kg 2022 dollars - do not adjust for inflation
# bonus options, option 5 and 6 but ITC equivalents
option4: # prevailing wages not met
wind_itc: 0.06 # %/100 capex
wind_ptc: 0.00 # $/kW 1992 dollars
h2_ptc: 0.6 # $0.60/kg produced 2022 dollars - assumes net zero but not meeting prevailing wage requirements - does this need to be
# do not adjust for inflation, probably constant after claim date?
option5: # prevailing wages met
wind_itc: 0.30 # %/100 capex
wind_ptc: 0.0 # $/kWh 1992 dollars
h2_ptc: 3.00 # $/kg of h2 produced 2022 dollars - do adjust for inflation every year applied and until application year
option6: # assumes prevailing wages are met, and includes 10% bonus credit of domestic content (100% of steel and iron
# and mfg. components from the US)
wind_itc: 0.40 # %/100 capex
wind_ptc: 0.0 # $/kWh 1992 dollars
h2_ptc: 3.00 # $/kg of h2 produced 2022 dollars - do adjust for inflation every year applied and until application year
option7: # assumes prevailing wages are met, and includes 10% bonus credit of domestic content (100% of steel and iron
# and mfg. components from the US)
wind_itc: 0.0 # %/100 capex
wind_ptc: 0.0165 # $/kWh 1992 dollars (0.015*1.1)
h2_ptc: 3.00 # $/kg of h2 produced 2022 dollars - do adjust for inflation every year applied and until application year
# you can elect itc_for_h2 in leu of the h2_ptc - this choice is independent of the other tech credit selections
# 6% or %50 for itc_for_h2

plant_design:
scenario0:
electrolyzer_location: "platform" # can be one of ["onshore", "turbine", "platform"]
transportation: "pipeline" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
h2_storage_location: "platform" # can be one of ["onshore", "turbine", "platform"]
scenario1:
electrolyzer_location: "onshore" # can be one of ["onshore", "turbine", "platform"]
transportation: "hvdc" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
h2_storage_location: "onshore" # can be one of ["onshore", "turbine", "platform"]
scenario2:
electrolyzer_location: "onshore" # can be one of ["onshore", "turbine", "platform"]
transportation: "hvdc" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
h2_storage_location: "platform" # can be one of ["onshore", "turbine", "platform"]
scenario3:
electrolyzer_location: "turbine" # can be one of ["onshore", "turbine", "platform"]
transportation: "none" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
h2_storage_location: "turbine" # can be one of ["onshore", "turbine", "platform"]
scenario4:
electrolyzer_location: "turbine" # can be one of ["onshore", "turbine", "platform"]
transportation: "none" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
h2_storage_location: "platform" # can be one of ["onshore", "turbine", "platform"]
scenario5:
electrolyzer_location: "turbine" # can be one of ["onshore", "turbine", "platform"]
transportation: "pipeline" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
h2_storage_location: "onshore" # can be one of ["onshore", "turbine", "platform"]
scenario6:
electrolyzer_location: "platform" # can be one of ["onshore", "turbine", "platform"]
transportation: "none" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
h2_storage_location: "platform" # can be one of ["onshore", "turbine", "platform"]
scenario7:
electrolyzer_location: "platform" # can be one of ["onshore", "turbine", "platform"]
transportation: "pipeline" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
h2_storage_location: "onshore" # can be one of ["onshore", "turbine", "platform"]
scenario8:
electrolyzer_location: "platform" # can be one of ["onshore", "turbine", "platform"]
transportation: "hvdc+pipeline" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
h2_storage_location: "onshore" # can be one of ["onshore", "turbine", "platform"]
# design A -> scenario 1
# onshore electrolysis
# HVDC transport, HVDC_2000mm_320kV
# no storage
# design B -> scenario 7
# electrolysis on platform
# pipe transport to shore
# no storage
45 changes: 45 additions & 0 deletions tests/greenheart/test_hydrogen/input_files/plant/hopp_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
site: #!include flatirons_site.yaml
data:
lat: 27.18624
lon: -96.9516
elev: 0
year: 2013
site_boundaries:
verts:
- [0.0, 0.0]
- [0.0, 2000.0]
- [2000.0, 2000.0]
- [2000.0, 0.0]
verts_simple:
- [0.0, 0.0]
- [0.0, 2000.0]
- [2000.0, 2000.0]
- [2000.0, 0.0]
solar_resource_file: ""
wind_resource_file: ""
wave_resource_file: ""
grid_resource_file: ""
hub_height: 161.0
capacity_hours: []
desired_schedule: []
follow_desired_schedule: ""
solar: false
wind: true
wave: false
wind_resource_origin: "WTK"


technologies:
wind:
num_turbines: 10
turbine_rating_kw: 18000.0
model_name: floris
timestep: [0, 8760]
floris_config: input_files/floris/floris_input_osw_18MW.yaml
grid:
interconnect_kw: 180000

config:
simulation_options:
wind:
skip_financial: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
turbine: "osw_18MW"
atb_year: 2025 # as per discussions of operational by 2027. This also makes the estimates a little more conservative
cost_year: 2022 # to match ATB
installation_availability: 0.7 # 30% downtime during installation to match ORCA
site:
area: 142 # km^2
depth: 45 # m
distance: 80 # km
distance_to_landfall: 85 # km
mean_windspeed: False #8.45863584474886 # required input for ORBIT, provide desired mean wind speed or set to False to give ORBIT the mean wind speed from the lat/lon selection
plant:
capacity: 180 # MW
layout: grid
num_turbines: 10 # needs to be changed based on turbine model
row_spacing: 7 # rotor diameters # based on rule of thumb of 7D
substation_distance: 1 # from ORBIT/examples/configs/example_fixed_project.yaml
turbine_spacing: 7 # rotor diameters # original 10
landfall:
interconnection_distance: 5 # km
trench_length: 4 # km
port:
monthly_rate: 2000000.0 # USD
sub_assembly_lines: 1
turbine_assembly_cranes: 1
# Vessels
array_cable_install_vessel: example_cable_lay_vessel # from ORBIT/examples/configs/example_fixed_project.yaml
export_cable_install_vessel: example_cable_lay_vessel # from ORBIT/examples/configs/example_fixed_project.yaml
export_cable_bury_vessel: example_cable_lay_vessel # from ORBIT/examples/configs/example_fixed_project.yaml
oss_install_vessel: example_heavy_lift_vessel # from ORBIT/examples/configs/example_fixed_project.yaml
spi_vessel: example_scour_protection_vessel # from ORBIT/examples/configs/example_fixed_project.yaml
wtiv: example_wtiv # from ORBIT/examples/configs/example_fixed_project.yaml
# Module Specific
OffshoreSubstationInstallation:
feeder: example_heavy_feeder # from ORBIT/examples/configs/example_fixed_project.yaml
num_feeders: 1 # from ORBIT/examples/configs/example_fixed_project.yaml
array_system_design:
cables:
- XLPE_630mm_66kV
export_system_design:
cables: HVDC_2000mm_320kV
percent_added_length: 0.0
scour_protection_design:
cost_per_tonne: 40
scour_protection_depth: 1 # ORBIT default
MonopileDesign:
monopile_steel_cost: 2250 #OSW
tp_steel_cost: 3230 #OSW
# Configured Phases
design_phases:
- ArraySystemDesign # from ORBIT/examples/configs/example_fixed_project.yaml
- MonopileDesign # from ORBIT/examples/configs/example_fixed_project.yaml
- ScourProtectionDesign # from ORBIT/examples/configs/example_fixed_project.yaml
- ElectricalDesign # new addition from Sophie Bradenkamp combined ExportSystemDesign and OffshoreSubstationDesign phases
install_phases: # these are hours into installation
ArrayCableInstallation: 0 # from ORBIT/examples/configs/example_fixed_project.yaml
ExportCableInstallation: 2000 # from ORBIT/examples/configs/example_fixed_project.yaml
MonopileInstallation: 0 # from ORBIT/examples/configs/example_fixed_project.yaml
# JacketInstallation: 0 # Jacket not ready yet in ORBIT
OffshoreSubstationInstallation: 0 # from ORBIT/examples/configs/example_fixed_project.yaml
ScourProtectionInstallation: 0 # from ORBIT/examples/configs/example_fixed_project.yaml
TurbineInstallation: 0 # from ORBIT/examples/configs/example_fixed_project.yaml
# Wind Project Inputs
project_parameters:
turbine_capex: 1300 # $USD turbine CAPEX only as per 2022 ATB https://atb.nrel.gov/electricity/2022/offshore_wind
opex_rate: 97 # $USD/kW/yr ATB 2022, OpEx based on R&D assumptions with a base year of 2022.
commissioning: 0.01 # ORBIT default
decommissioning: 0.15 # ORBIT default
project_lifetime: 30 # 2022 ATB capital recovery period for offshore wind

0 comments on commit bc36371

Please sign in to comment.