Structure of the repository

Structure of the repository#

This repository has the following structure:

  • inputs: input data in format .csv, .xlsx or .parquet

  • outputs: technology data saved as costs_{year}.csv format for defined years. In the output costs_{year}.csv are specified

    • technology (e.g. ‘onwind’)

    • parameter (e.g. FOM)

    • value (e.g. 1.18)

    • unit (e.g. %/year)

    • source (e.g. DEA, excel_file_name.xlsx)

    • further description (specific assumptions, sheet name if data from a multi-sheet Excel file)

    • currency_year (year used for adjusting economic values to reflect current purchasing power)

  • outputs/US: US-specific technology data saved as US/costs_{year}.csv format for defined years. In the outputs US/costs_{year}.csv are specified

    • technology (e.g. ‘onwind’)

    • parameter (e.g. FOM)

    • value (e.g. 1.18)

    • unit (e.g. %/year)

    • source (e.g. DEA, excel_file_name.xlsx)

    • further description (specific assumptions, sheet name if data from a multi-sheet Excel file)

    • currency_year (year used for adjusting economic values to reflect current purchasing power)

    • financial_case (financial assumptions for the definition of the cost of capital)

    • scenario (technology innovation scenario)

  • config:

    # considered years for output data
    years: [2020, 2025, 2030, 2035, 2040, 2045, 2050]
    
    nrel_atb:
      nrel_atb_input_years: [2022, 2024]
      nrel_atb_columns_to_keep: ["atb_year", "core_metric_parameter", "core_metric_case", "core_metric_variable", "technology", "technology_alias", "display_name", "scenario", "units", "value"]
      nrel_atb_core_metric_parameter_to_keep: ["CAPEX", "CF", "Fixed O&M", "Variable O&M", "Fuel", "Additional OCC"]
      nrel_atb_technology_to_remove: ["Coal-CCS-95% -> Transformational Tech", "Coal-Max-CCS -> Transformational Tech", "Coal-new -> Transformational Tech", "NG combined cycle 95% CCS (F-frame basis -> Transformational Tech)", "NG combined cycle 95% CCS (H-frame basis -> Transformational Tech)", "NG combined cycle Max CCS (F-frame basis -> Transformational Tech)", "NG combined cycle Max CCS (H-frame basis -> Transformational Tech)", "AEO"]
      nrel_atb_source_link: "NREL/ATB-https://data.openei.org/s3_viewer?bucket=oedi-data-lake&prefix=ATB%2Felectricity%2Fcsv%2F2022%2F"
      nrel_atb_further_description: "Meaning of scenario and financial case: https://atb.nrel.gov/electricity/2024/definitions#scenarios"
    
    expectation: ""  # tech data uncertainty, possible options [None, "optimist", "pessimist"]
    
    #year for EUR outputs
    eur_year: 2025
    
    # add solar from different source
    solar_utility_from_vartiaien: false
    solar_rooftop_from_etip: false
    
    energy_storage_database:
      h2_from_budischak: false    # add fuel cell/electrolysis efficiencies from Budischak (DEA assumptions very conservative)
      ewg_home_battery: true    # add home battery data derived from DEA data and EWG study
      pnnl_energy_storage:
        add_data: true      # add storage data mainly from PNNL
        approx_beyond_2030: ["same_as_2030"]      # ["geometric_series"] or ["same_as_2030"]
    
    # remove grid connection costs from DEA for offwind because they are calculated
    # separately in pypsa-eur
    offwind_no_gridcosts: true
    
    desalination:
      salinity: 35   # in PSU (Practical Salinity Unit) = kg/m^3
    
    ndigits: 4
    

The following parameters can be set in the config.yaml

  • years : numpy array of all the years of which an output costs csv should be created

  • nrel_atb_input_years : list of years that define the source files

  • nrel_atb_columns_to_keep : list of columns to use from the NREL/ATB source files

  • nrel_atb_core_metric_parameter_to_keep : list of parameters to use from the NREL/ATB source files

  • nrel_atb_technology_to_remove : list of technologies that should be excluded from NREL/ATB

  • nrel_atb_source_link : source url for the NREL/ATB data used

  • nrel_atb_further_description : Meaning of “scenario” and “financial case”

  • expectation : tech data uncertainty, possible options [None, “optimist”, “pessimist”]

  • eur_year : year for EUR outputs

  • solar_utility_from_vartiaien : Bool (True/False) if solar utility data is taken from DEA or Vartiaien

  • solar_rooftop_from_etip : Bool (True/False) if solar rooftop data is taken from DEA or ETIP

  • h2_from_budischak : Bool (True/False) add fuel cell/electrolysis efficiencies from Budischak

  • ewg_home_battery: Bool (True/False) add home battery data derived from DEA data and EWG study

  • add_data: Bool (True/False) add storage data mainly from PNNL

  • approx_beyond_2030: [“geometric_series”] or [“same_as_2030”]

  • offwind_no_gridcosts : Bool (True/False) if offshore wind grid connection costs should be removed (they are calculated seperately in PyPSA-Eur)

  • salinity : estimated in PSU (Practical Salinity Unit) = kg/m^3

  • ndigits : number of significant digits

  • scripts :
    • compile_cost_assumptions.py converts input data from multiple sources to cost_{year}.csv for chosen year. Interpolates data for missing years or calculates the costs at a certain year based on the inflation rate. Technology data from the Danish Energy Agency are preferred. If data are missing from all sources, these are taken from the old PyPSA cost assumptions (with a printed warning).

    • compile_cost_assumptions_usa.py converts input data from NREL/ATB to US/cost_{year}.csv for chosen year. It starts from the cost assumptions files produced by compile_cost_assumptions.py. All technology-parameter pairs present in the NREL/ATB input data are updated. Those not present in NREL/ATB are left untouched.

    • convert_pdf_fraunhofer_to_dataframe.py converts table from Fraunhofer ISE report in pdf to csv format for input data. Script can be modified to convert other .pdf sources to .csv format

    • retrieve_data_from_dea.py downloads up-to-date technology data from DEA website and saves it in the input folder. Optional, also retrieves the documentation of the data into the folder docu

  • docu: reports, paper, additional information about the input data, format .pdf

  • latex_tables: .tex files with tables of the cost.csv and two python scripts

    • tables_in_latex.py to create .tex files with nice names

    • tables_in_csv.py to create csv files with nice name (which can be used in latex with csv autotabular)

The data licences and sources are given in the following table.

description

file/folder/function in script

licence

source

Danish Energy Agency Technology Database, most technologies

technology_data*.xlsx, energy_transport_data_sheet_dec_2017.xlsx

https://ens.dk/en/our-services/projections-and-models/technology-data

Vartiaien et. al., utility-scale solar PV

function in script

https://onlinelibrary.wiley.com/doi/full/10.1002/pip.3189

Fraunhofer ISE Studie, gas pipeline costs

Fraunhofer_ISE_*.csv

https://www.ise.fraunhofer.de/de/veroeffentlichungen/studien/wege-zu-einem-klimaneutralen-energiesystem.html

Older data collected by the PyPSA team from a variety of sources

costs_PyPSA.csv

The European Technology and Innovation Platform for Photovoltaics, solar rooftop

function in script

https://etip-pv.eu/

Lazard, conventional carriers

function in script

https://www.lazard.com/media/451086/lazards-levelized-cost-of-energy-version-130-vf.pdf

Zappe et. al., fuel cost

function in script

https://doi.org/10.1016/j.apenergy.2018.08.109

Umweltbundesamt – Entwicklung Kohlendioxid, fuel cost

function in script

https://www.umweltbundesamt.de/publikationen/entwicklung-der-spezifischen-kohlendioxid-5