Skip to content

Commit

Permalink
Merge pull request #34 from NREL/hydrogen
Browse files Browse the repository at this point in the history
Hydrogen configs
  • Loading branch information
ppinchuk committed Apr 5, 2022
2 parents 364cc1e + cf1c47e commit f03003f
Show file tree
Hide file tree
Showing 14 changed files with 599 additions and 0 deletions.
22 changes: 22 additions & 0 deletions NRWAL/analysis_library/hydrogen/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
*********************************
Hydrogen Cost & Production Models
*********************************

This library includes equations for modeling costs and production of hydrogen using generation profiles as inputs. References used to derive these relationships include:

- Electrolyzer Costs:
Ruth, M.F., Jadun, P., Gilroy, N., Connelly, E., Boardman, R., Simon, A.J., Elgowainy, A. and Zuboy, J., 2020. The Technical and Economic Potential of the H2@ Scale Hydrogen Concept within the United States (No. NREL/TP-6A20-77610). National Renewable Energy Lab.(NREL), Golden, CO (United States).
https://www.nrel.gov/docs/fy21osti/77610.pdf

- Hydrogen Production Efficiency Rate:
Peterson, D., Vickers, J. and DeSantis, D., 2020. Hydrogen production cost from PEM electrolysis—2019. DOE Hydrogen Fuel Cells Program Record, 19009.
https://www.hydrogen.energy.gov/pdfs/19009_h2_production_cost_pem_electrolysis_2019.pdf (table 2)

- Water Costs:
Water and Wastewater Annual Price Escalation Rates for Selected Cities across the United States. 2017. United States Dept. of Energy, Energy Efficiency & Renewable Energy Office. doi:10.2172/1413878.
https://www.energy.gov/sites/default/files/2017/10/f38/water_wastewater_escalation_rate_study.pdf


- Pipeline Costs:
Council, H., 2021. Hydrogen Insights–A perspective on hydrogen investment, market development and cost competitiveness. Hydrogen Council.
https://hydrogencouncil.com/wp-content/uploads/2021/02/Hydrogen-Insights-2021-Report.pdf
15 changes: 15 additions & 0 deletions NRWAL/analysis_library/hydrogen/electrolyzer_costs_eos.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# These costs are based on the following NREL report:
# "Manufacturing Cost Analysis for Proton Exchange Membrane Water Electrolyzers"
# - Mayyas, Ruth, Pivovar, Bender, Wipke
# $550/kw at 10 MW
# $490/kw at 20 MW
# $440/kw at 50 MW
# $390/kw at 100 MW
# $300/kw at 1000 MW

capacity_curve_mw:
np.array([0, 10, 20, 50, 100, 1000])
cost_curve_dollars_per_mw:
np.array([550, 550, 490, 440, 390, 300]) * 1000
electrolyzer_capex_per_mw:
np.interp(electrolyzer_size_mw, capacity_curve_mw, cost_curve_dollars_per_mw)
4 changes: 4 additions & 0 deletions NRWAL/analysis_library/hydrogen/electrolyzer_costs_flat.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
electrolyzer_capex_per_mw:
461000
electrolyzer_opex_per_mw:
37000
8 changes: 8 additions & 0 deletions NRWAL/analysis_library/hydrogen/pipeline.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
dist_to_h2_load_miles:
dist_to_h2_load_km * 0.621371
opex_pipeline:
6 * dist_to_h2_load_miles
capex_pipeline_linear:
(6.2385 * h2_flow_kg_h + 339713) * dist_to_h2_load_km
capex_pipeline_EOS_nonlinear:
(-0.020744 * (h2_flow_kg_h**2) + 710.144314 * h2_flow_kg_h + 212320.312500) * dist_to_h2_load_km
4 changes: 4 additions & 0 deletions NRWAL/analysis_library/hydrogen/production_costs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
capex_h2:
electrolyzer_capex_per_mw * electrolyzer_size_mw
opex_h2:
electrolyzer_opex_per_mw * electrolyzer_size_mw
14 changes: 14 additions & 0 deletions NRWAL/analysis_library/hydrogen/production_curve.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
normal_capacity:
np.array([0.00, 0.03, 0.05, 0.10, 0.15, 0.20, 0.25, 1.00])
hydrogen_curve_kg_per_mwh:
np.array([0, 0, 12.12121212, 20.28397566, 20.92050209, 20.92050209, 20.28397566, 17.27115717])
hydrogen_production_kg_per_mwh:
np.interp(resource_capacity_factor_profile, normal_capacity, hydrogen_curve_kg_per_mwh)
hourly_hydrogen_kg:
hydrogen_production_kg_per_mwh * resource_capacity_profile_mw
hourly_hydrogen_max_kg:
np.max(hydrogen_curve_kg_per_mwh) * electrolyzer_size_mw
hydrogen_kg:
np.where(hourly_hydrogen_kg < hourly_hydrogen_max_kg, hourly_hydrogen_kg, hourly_hydrogen_max_kg)
hydrogen_annual_kg:
np.nansum(hydrogen_kg, axis=0)
10 changes: 10 additions & 0 deletions NRWAL/analysis_library/hydrogen/production_rate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
hydrogen_production_kg_per_mwh:
18.02
hourly_hydrogen_kg:
hydrogen_production_kg_per_mwh * resource_capacity_profile_mw
hourly_hydrogen_max_kg:
hydrogen_production_kg_per_mwh * electrolyzer_size_mw
hydrogen_kg:
np.where(hourly_hydrogen_kg < hourly_hydrogen_max_kg, hourly_hydrogen_kg, hourly_hydrogen_max_kg)
hydrogen_annual_kg:
np.nansum(hydrogen_kg, axis=0)
10 changes: 10 additions & 0 deletions NRWAL/analysis_library/hydrogen/water.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
water_usage_gal_per_kg:
3.78
water_cost_per_gallon_H2A:
0.002375
water_cost_per_gallon_energy_gov:
0.00338
annual_water_usage_gal:
hydrogen_annual_kg * water_usage_gal_per_kg
annual_water_cost:
annual_water_usage_gal * water_cost_per_gallon_energy_gov
95 changes: 95 additions & 0 deletions NRWAL/default_configs/hydrogen/hybrid_lcoh_using_curve.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Generation capacity factor variable
plant_capacity_mw:
hybrid_capacity
resource_capacity_factor_profile:
hybrid_profile / hybrid_capacity
resource_capacity_profile_mw:
hybrid_profile


# Electrolyzer config
electrolyzer_size_ratio:
0.9
electrolyzer_size_mw:
electrolyzer_size_ratio * plant_capacity_mw


# Hydrogen production
hydrogen_kg: hydrogen::production_curve::hydrogen_kg
hydrogen_annual_kg: hydrogen::production_curve::hydrogen_annual_kg
h2_flow_kg_h: hydrogen::production_curve::hourly_hydrogen_max_kg


# Electrolyzer costs
electrolyzer_capex_per_mw: hydrogen::electrolyzer_costs_flat::electrolyzer_capex_per_mw
electrolyzer_opex_per_mw: hydrogen::electrolyzer_costs_flat::electrolyzer_opex_per_mw
capex_h2: hydrogen::production_costs::capex_h2
opex_h2: hydrogen::production_costs::opex_h2


# Wind costs
wind_cost_multiplier:
1
wind_capex_per_mw:
(wind_mean_capital_cost / wind_mean_system_capacity) * 1000
wind_opex_per_mw:
(wind_mean_fixed_operating_cost / wind_mean_system_capacity) * 1000
capex_wind:
wind_capex_per_mw * hybrid_wind_capacity * wind_cost_multiplier
opex_wind:
wind_opex_per_mw * hybrid_wind_capacity * wind_cost_multiplier


# Solar costs
solar_cost_multiplier:
1
solar_capex_per_mw:
(solar_mean_capital_cost / solar_mean_system_capacity) * 1000
solar_opex_per_mw:
(solar_mean_fixed_operating_cost / solar_mean_system_capacity) * 1000
capex_solar:
solar_capex_per_mw * hybrid_solar_capacity * solar_cost_multiplier
opex_solar:
solar_opex_per_mw * hybrid_solar_capacity * solar_cost_multiplier


# Pipeline costs
pipeline_cost_multiplier:
1
opex_pipeline:
hydrogen::pipeline::opex_pipeline * pipeline_cost_multiplier
capex_pipeline:
hydrogen::pipeline::capex_pipeline_EOS_nonlinear * pipeline_cost_multiplier
pipe_capex_per_km:
capex_pipeline / dist_to_h2_load_km
pipe_opex_per_km:
opex_pipeline / dist_to_h2_load_km


# Water costs
water_cost_multiplier:
1
annual_water_usage_gal: hydrogen::water::annual_water_usage_gal
annual_water_cost:
hydrogen::water::annual_water_cost * water_cost_multiplier


# Total and levelized costs
total_capex:
capex_wind + capex_solar + capex_h2 + capex_pipeline
fcr:
0.049
wind_lcoh_component:
(capex_wind * fcr + opex_wind) / hydrogen_annual_kg
solar_lcoh_component:
(capex_solar * fcr + opex_solar) / hydrogen_annual_kg
h2_lcoh_component:
(capex_h2 * fcr + opex_h2) / hydrogen_annual_kg
pipe_lcoh_component:
(capex_pipeline * fcr + opex_pipeline) / hydrogen_annual_kg
water_lcoh_component:
annual_water_cost / hydrogen_annual_kg
no_pipe_lcoh_fcr:
wind_lcoh_component + solar_lcoh_component + h2_lcoh_component + water_lcoh_component
total_lcoh_fcr:
wind_lcoh_component + solar_lcoh_component + h2_lcoh_component + pipe_lcoh_component + water_lcoh_component
93 changes: 93 additions & 0 deletions NRWAL/default_configs/hydrogen/hybrid_lcoh_using_rate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# Generation capacity factor variable
plant_capacity_mw:
hybrid_capacity
resource_capacity_profile_mw:
hybrid_profile


# Electrolyzer config
electrolyzer_size_ratio:
0.9
electrolyzer_size_mw:
electrolyzer_size_ratio * plant_capacity_mw


# Hydrogen production
hydrogen_kg: hydrogen::production_rate::hydrogen_kg
hydrogen_annual_kg: hydrogen::production_rate::hydrogen_annual_kg
h2_flow_kg_h: hydrogen::production_rate::hourly_hydrogen_max_kg


# Electrolyzer costs
electrolyzer_capex_per_mw: hydrogen::electrolyzer_costs_flat::electrolyzer_capex_per_mw
electrolyzer_opex_per_mw: hydrogen::electrolyzer_costs_flat::electrolyzer_opex_per_mw
capex_h2: hydrogen::production_costs::capex_h2
opex_h2: hydrogen::production_costs::opex_h2


# Wind costs
wind_cost_multiplier:
1
wind_capex_per_mw:
(wind_mean_capital_cost / wind_mean_system_capacity) * 1000
wind_opex_per_mw:
(wind_mean_fixed_operating_cost / wind_mean_system_capacity) * 1000
capex_wind:
wind_capex_per_mw * hybrid_wind_capacity * wind_cost_multiplier
opex_wind:
wind_opex_per_mw * hybrid_wind_capacity * wind_cost_multiplier


# Solar costs
solar_cost_multiplier:
1
solar_capex_per_mw:
(solar_mean_capital_cost / solar_mean_system_capacity) * 1000
solar_opex_per_mw:
(solar_mean_fixed_operating_cost / solar_mean_system_capacity) * 1000
capex_solar:
solar_capex_per_mw * hybrid_solar_capacity * solar_cost_multiplier
opex_solar:
solar_opex_per_mw * hybrid_solar_capacity * solar_cost_multiplier


# Pipeline costs
pipeline_cost_multiplier:
1
opex_pipeline:
hydrogen::pipeline::opex_pipeline * pipeline_cost_multiplier
capex_pipeline:
hydrogen::pipeline::capex_pipeline_EOS_nonlinear * pipeline_cost_multiplier
pipe_capex_per_km:
capex_pipeline / dist_to_h2_load_km
pipe_opex_per_km:
opex_pipeline / dist_to_h2_load_km


# Water costs
water_cost_multiplier:
1
annual_water_usage_gal: hydrogen::water::annual_water_usage_gal
annual_water_cost:
hydrogen::water::annual_water_cost * water_cost_multiplier


# Total and levelized costs
total_capex:
capex_wind + capex_solar + capex_h2 + capex_pipeline
fcr:
0.049
wind_lcoh_component:
(capex_wind * fcr + opex_wind) / hydrogen_annual_kg
solar_lcoh_component:
(capex_solar * fcr + opex_solar) / hydrogen_annual_kg
h2_lcoh_component:
(capex_h2 * fcr + opex_h2) / hydrogen_annual_kg
pipe_lcoh_component:
(capex_pipeline * fcr + opex_pipeline) / hydrogen_annual_kg
water_lcoh_component:
annual_water_cost / hydrogen_annual_kg
no_pipe_lcoh_fcr:
wind_lcoh_component + solar_lcoh_component + h2_lcoh_component + water_lcoh_component
total_lcoh_fcr:
wind_lcoh_component + solar_lcoh_component + h2_lcoh_component + pipe_lcoh_component + water_lcoh_component
83 changes: 83 additions & 0 deletions NRWAL/default_configs/hydrogen/solar_lcoh_using_curve.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Generation capacity factor variable
# plant_capacity_mw calculated by taking (area * power_density), where power_density = 36 MW/km2
max_solar_cap_mw:
400
plant_capacity_mw:
np.where(capacity < max_solar_cap_mw, capacity, max_solar_cap_mw)
resource_capacity_factor_profile:
rep_profiles_0
resource_capacity_profile_mw:
resource_capacity_factor_profile * plant_capacity_mw


# Electrolyzer config
electrolyzer_size_ratio:
0.9
electrolyzer_size_mw:
electrolyzer_size_ratio * plant_capacity_mw


# Hydrogen production
hydrogen_kg: hydrogen::production_curve::hydrogen_kg
hydrogen_annual_kg: hydrogen::production_curve::hydrogen_annual_kg
h2_flow_kg_h: hydrogen::production_curve::hourly_hydrogen_max_kg


# Electrolyzer costs
electrolyzer_capex_per_mw: hydrogen::electrolyzer_costs_flat::electrolyzer_capex_per_mw
electrolyzer_opex_per_mw: hydrogen::electrolyzer_costs_flat::electrolyzer_opex_per_mw
capex_h2: hydrogen::production_costs::capex_h2
opex_h2: hydrogen::production_costs::opex_h2


# Solar costs
solar_cost_multiplier:
1
solar_capex_per_mw:
(mean_capital_cost / mean_system_capacity) * 1000
solar_opex_per_mw:
(mean_fixed_operating_cost / mean_system_capacity) * 1000
capex_solar:
solar_capex_per_mw * plant_capacity_mw * solar_cost_multiplier
opex_solar:
solar_opex_per_mw * plant_capacity_mw * solar_cost_multiplier


# Pipeline costs
pipeline_cost_multiplier:
1
opex_pipeline:
hydrogen::pipeline::opex_pipeline * pipeline_cost_multiplier
capex_pipeline:
hydrogen::pipeline::capex_pipeline_EOS_nonlinear * pipeline_cost_multiplier
pipe_capex_per_km:
capex_pipeline / dist_to_h2_load_km
pipe_opex_per_km:
opex_pipeline / dist_to_h2_load_km


# Water costs
water_cost_multiplier:
1
annual_water_usage_gal: hydrogen::water::annual_water_usage_gal
annual_water_cost:
hydrogen::water::annual_water_cost * water_cost_multiplier


# Total and levelized costs
total_capex:
capex_solar + capex_h2 + capex_pipeline
fcr:
0.049
solar_lcoh_component:
(capex_solar * fcr + opex_solar) / hydrogen_annual_kg
h2_lcoh_component:
(capex_h2 * fcr + opex_h2) / hydrogen_annual_kg
pipe_lcoh_component:
(capex_pipeline * fcr + opex_pipeline) / hydrogen_annual_kg
water_lcoh_component:
annual_water_cost / hydrogen_annual_kg
no_pipe_lcoh_fcr:
solar_lcoh_component + h2_lcoh_component + water_lcoh_component
total_lcoh_fcr:
solar_lcoh_component + h2_lcoh_component + pipe_lcoh_component + water_lcoh_component

0 comments on commit f03003f

Please sign in to comment.