-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #34 from NREL/hydrogen
Hydrogen configs
- Loading branch information
Showing
14 changed files
with
599 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
15
NRWAL/analysis_library/hydrogen/electrolyzer_costs_eos.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
electrolyzer_capex_per_mw: | ||
461000 | ||
electrolyzer_opex_per_mw: | ||
37000 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
95
NRWAL/default_configs/hydrogen/hybrid_lcoh_using_curve.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
93
NRWAL/default_configs/hydrogen/hybrid_lcoh_using_rate.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
83
NRWAL/default_configs/hydrogen/solar_lcoh_using_curve.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Oops, something went wrong.