diff --git a/docs/source/_static/networks/ReEDS_Topology.png b/docs/source/_static/networks/ReEDS_Topology.png new file mode 100644 index 00000000..d83ce583 Binary files /dev/null and b/docs/source/_static/networks/ReEDS_Topology.png differ diff --git a/docs/source/_static/networks/TAMU_Clustered_500.png b/docs/source/_static/networks/TAMU_Clustered_500.png new file mode 100644 index 00000000..cb09f64b Binary files /dev/null and b/docs/source/_static/networks/TAMU_Clustered_500.png differ diff --git a/docs/source/_static/plots/capacity-bar.png b/docs/source/_static/plots/capacity-bar.png deleted file mode 100644 index e212bdcc..00000000 Binary files a/docs/source/_static/plots/capacity-bar.png and /dev/null differ diff --git a/docs/source/_static/plots/capacity-map.png b/docs/source/_static/plots/capacity-map.png deleted file mode 100644 index 1d0ef510..00000000 Binary files a/docs/source/_static/plots/capacity-map.png and /dev/null differ diff --git a/docs/source/_static/plots/costs-bar.png b/docs/source/_static/plots/costs-bar.png deleted file mode 100644 index 4a9c69fe..00000000 Binary files a/docs/source/_static/plots/costs-bar.png and /dev/null differ diff --git a/docs/source/_static/plots/emissions-area.png b/docs/source/_static/plots/emissions-area.png deleted file mode 100644 index cb3f16cd..00000000 Binary files a/docs/source/_static/plots/emissions-area.png and /dev/null differ diff --git a/docs/source/_static/plots/emissions-map.png b/docs/source/_static/plots/emissions-map.png deleted file mode 100644 index 30f4ecbb..00000000 Binary files a/docs/source/_static/plots/emissions-map.png and /dev/null differ diff --git a/docs/source/_static/plots/production-area.png b/docs/source/_static/plots/production-area.png deleted file mode 100644 index a25861a3..00000000 Binary files a/docs/source/_static/plots/production-area.png and /dev/null differ diff --git a/docs/source/_static/sectors/service-demand.png b/docs/source/_static/sectors/service-demand.png new file mode 100644 index 00000000..dfb524b9 Binary files /dev/null and b/docs/source/_static/sectors/service-demand.png differ diff --git a/docs/source/about-introduction.md b/docs/source/about-introduction.md index 44d2709f..897b7496 100644 --- a/docs/source/about-introduction.md +++ b/docs/source/about-introduction.md @@ -1,31 +1,34 @@ (introduction)= # Introduction -```{warning} -**This model is under active development. If you would like to chat about using the model please don't hesitate to reach out to ktehranchi@stanford.edu and trevor_barnes@sfu.ca for support** -``` +PyPSA-USA is an open-source tool that enables you to model and simulate the United States energy system with flexibility. -PyPSA-USA is an open-source energy system dataset of the United States energy system with continental US coverage. +PyPSA-USA offers a versatile toolkit that allows you to customize the **data** for your energy system model with ease. Through a simple configuration file, you can control the spatial, temporal, and operational resolution of your model. Access a range of cleaned and prepared historical and forecasted data to build a model tailored to your needs. -PyPSA-USA provides you with a toolkit to customize the **data** of energy system model with ease. Through configuration file you can control the spatial, temporal, and operational resolution of your energy system model with access to cleaned and prepared historical and forecasted data. This means, you can build a model of **ERCOT, WECC, or the Eastern interconnection**, where the transmission network is clustered to **N# of user defined nodes**, which can respect the boundaries of **balancing areas, states, or REeDs GIS Shapes**, using **historical EIA-930 demand data years 2018-2023** OR **NREL EFS forcasted demand [2030, 2040, 2050]**, with **historical daily/monthly fuel prices from ISOs/EIA [choice of year]**, AND imported capital cost projections from the **NREL Annual Technology Baseline**. +Whether you’re focusing on **ERCOT, WECC, or the Eastern Interconnection**, PyPSA-USA gives you the flexibility to: +- Choose between multiple transmission networks. +- Cluster the nodal network a user-defined number of nodes, respecting county lines, balancing areas, states, NERC region boundaries. +- Utilize **historical EIA-930 demand data** (2018-2023) or **NREL EFS forecasted demand** (2030, 2040, 2050). +- Incorporate **historical daily/monthly fuel prices** from ISOs/EIA for your chosen year. +- Import cost projections from the **NREL Annual Technology Baseline** and **Annual Energy Outlook**. -You can create data model- and export to use in your own homebrewed optimization model via csv tables, or xarray netCDF model. +You can create and export data models for use in your own optimization models via CSV tables or xarray netCDF formats. -Beyond creating a data model, PyPSA-USA also provides an interface for running capacity expansion planning and operational simulation models with DC power flow with the Python for Power System Analysis package. You can run expansion planning exercises which integrate regional and national policy constraints like RPS standards, emissions standards, PRMs, and more. +PyPSA-USA also provides an interface for running capacity expansion planning and operational simulation models with the Python for Power System Analysis (pypsa) package. You can run expansion planning exercises which integrate regional and national policy constraints like RPS standards, emissions standards, PRMs, and more. -PyPSA-USA builds on and leverages the work of [PyPSA-EUR](https://pypsa-eur.readthedocs.io/en/latest/index.html) developed by TU Berlin. PyPSA-USA is actively developed by the [INES Research Group](https://ines.stanford.edu) at Stanford University and the [ΔE+ Research Group](https://www.sfu.ca/see/research/delta-e.html) at Simon Fraser University. +PyPSA-USA builds on and leverages the work of [PyPSA-EUR](https://pypsa-eur.readthedocs.io/en/latest/index.html) developed by TU Berlin. It is actively developed by the [INES Research Group](https://ines.stanford.edu) at Stanford University and the [ΔE+ Research Group](https://www.sfu.ca/see/research/delta-e.html) at Simon Fraser University. We welcome contributions and collaborations from the community- please don't hesitate to reach out! (workflow)= ## Workflow +The diagram below illustrates the workflow of PyPSA-USA, highlighting how the data flows through the model scripts. + ![pypsa-usa workflow](https://github.com/PyPSA/pypsa-usa/blob/master/workflow/repo_data/dag.jpg?raw=true) (folder-structure)= ## Folder Structure -The project is organized based on the folder structure below. The workflow folder contains all data and scripts neccesary to run the pypsa-usa model. After the first time you run the snakemake file, your directory will be built and populated with the associated data. Because most of the files are too large to store on github, we pull data from various sources into the `data` folder. The `repo_data` folder contains smaller files suitable for github. The resources folder contains intermediate files built by snakemake rules through the workflow. You'll see sub-folders created for each interconnection you run the model with. - -The envs folder contains the conda env yaml files neccesary to build your mamba/conda environment. The scripts folder contains the individual python scripts that are referenced in the Snakefile rules. +PyPSA-USA is organized to facilitate easy navigation and efficient execution. Below is the folder structure of the project. Each folder serves a specific purpose, from environment setup to data processing and storage. After running the Snakemake file for the first time, your directory will be built and populated with the necessary data files. ```bash ├── .gitignore @@ -59,3 +62,8 @@ The envs folder contains the conda env yaml files neccesary to build your mamba/ | │ └── example_data.csv | └── Snakefile ``` + + +```{warning} +**This model is under active development. If you need assistance or would like to discuss using the model, please reach out to ktehranchi@stanford.edu and trevor_barnes@sfu.ca.** +``` diff --git a/docs/source/conf.py b/docs/source/conf.py index eabdff81..6ffd174e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -7,7 +7,7 @@ project = "pypsa-usa" -copyright = "2023, Kamran Tehranchi, Trevor Barnes" +copyright = "2024, Kamran Tehranchi, Trevor Barnes" author = "Kamran Tehranchi, Trevor Barnes" # -- General configuration --------------------------------------------------- @@ -37,6 +37,7 @@ #'rinoh.frontend.sphinx', "sphinx.ext.imgconverter", # for SVG conversion ] +myst_heading_anchors = 3 templates_path = ["_templates"] exclude_patterns = [] diff --git a/docs/source/config-configuration.md b/docs/source/config-configuration.md index 44d3f34c..85ba91d9 100644 --- a/docs/source/config-configuration.md +++ b/docs/source/config-configuration.md @@ -208,42 +208,7 @@ See [here](./config-co2-base.md) for information on interconnect level base emis ``` --> ```{warning} -Sector coupling studies are all under active development -``` - -```yaml -sector: - co2_sequestration_potential: 0 - natural_gas: - allow_imports_exports: true # false to be implemented - cyclic_storage: false - heating: - heat_pump_sink_T: 55. - demand: - profile: - residential: eulp # efs, eulp - commercial: eulp # efs, eulp - transport: efs # efs - industry: efs # efs - scale: - residential: aeo # efs, aeo - commercial: aeo # efs, aeo - transport: aeo # efs, aeo - industry: aeo # efs, aeo - disaggregation: - residential: pop # pop - commercial: pop # pop - transport: pop # pop - industry: pop # pop - scenarios: - aeo: reference -``` - -```{eval-rst} -.. csv-table:: - :header-rows: 1 - :widths: 22,7,22,33 - :file: configtables/sector.csv +Sector coupling studies are all under active development. More info to come! ``` diff --git a/docs/source/config-sectors.md b/docs/source/config-sectors.md index 1d30169c..4de5b7c9 100644 --- a/docs/source/config-sectors.md +++ b/docs/source/config-sectors.md @@ -1,16 +1,6 @@ (sectors)= # Sectors -```{note} -More information to come! -``` - -(natural-gas-sector)= -## Natural Gas - -Below is a schematic showing the representation of the natural gas network. - -```{eval-rst} -.. image:: _static/sectors/natural-gas.png - :scale: 20 % +```{warning} +Sector coupling studies are all under active development. More info to come! ``` diff --git a/docs/source/config-wildcards.md b/docs/source/config-wildcards.md index dd220139..b6936f25 100644 --- a/docs/source/config-wildcards.md +++ b/docs/source/config-wildcards.md @@ -26,12 +26,12 @@ A visual representation of each `{interconnect}` is shown below: :scale: 100 % ``` - +(simpl)= +## The ``{simpl}`` wildcard - +:mod:`simplify_network` (before :mod:`cluster_network`). (clusters)= ## The `{clusters}` wildcard @@ -105,11 +105,7 @@ is provided, an electrical only study is completed. | Sector | Code | Description | Status | |-------------|------|------------------------------------------------|-------------| | Electricity | E | Electrical sector. Will always be run. | Runs | -| Natural Gas | G | Natural gas sector | Development | -| Heating | H | Heating and Cooling | Development | -| Industry | I | Industrial Processes | Development | -| Transport | T | Transportation sector | Development | -| Methane | M | Methane tracking. Requires natural gas sector. | Future | +| Natural Gas | G | All sectors added | Development | (scope)= ## The `{scope}` wildcard @@ -121,7 +117,6 @@ Sector coupling studies are all under active development Takes values `residential`, `urban`, `total`. Used in sector coupling studies to define population breakdown. - (cutout_wc)= ## The `{cutout}` wildcard diff --git a/docs/source/configtables/electricity.csv b/docs/source/configtables/electricity.csv index 31dbf022..a2dc9ad8 100644 --- a/docs/source/configtables/electricity.csv +++ b/docs/source/configtables/electricity.csv @@ -7,7 +7,7 @@ co2limit,:math:`t_{CO_2-eq}/a`,float,Cap on total annual system carbon dioxide e co2base,:math:`t_{CO_2-eq}/a`,float,Reference value of total annual system carbon dioxide emissions if relative emission reduction target is specified in ``{opts}`` wildcard. retirement, --,One of ``economic`` or ``technical``,"Sets the retirement method for converntional generators. If ``technical`` all generators ``p_nom_min`` are set to ``p_nom`` to prevent selling off of the asset. Retirements are then tracked in post-proccessing. If ``economic`` existing plants have their ``p_nom_min`` set as ``0``, ``p_nom_max`` set to ``p_nom``, and capital costs set to fixed costs. Generators with ``p_nom`` are then added to handle capacity expansion.""" ,,, -operational_reserve:,,,Settings for reserve requirements following `GenX `_ +operational_reserve:,,,Settings for reserve requirements following `GenX `_ --activate,bool,true or false,Whether to take operational reserve requirements into account during optimisation --epsilon_load,--,float,share of total load --epsilon_vres,--,float,share of total renewable supply diff --git a/docs/source/configtables/onwind.csv b/docs/source/configtables/onwind.csv index ffbb8b70..8cadfcdd 100644 --- a/docs/source/configtables/onwind.csv +++ b/docs/source/configtables/onwind.csv @@ -9,6 +9,6 @@ grid codes,--,Any subset of the Copornicus Land Cover code list (see assumptions distance,m,float,Distance to keep from areas specified in ``distance_grid_codes`` distance_grid_codes,--,Any subset of the Copornicus Land Cover code list (see assumptions).,Specifies areas according to Land Cover codes which are generally eligible for wind turbine placement. natura,bool,"{true, false}",Switch to exclude Protected Planet natural protection areas. Area is excluded if ``true``. -potential,--,"One of {'simple', 'conservative'}",Method to compute the maximal installable potential for a node; confer :ref:`renewableprofiles` +potential,--,"One of {'simple', 'conservative'}",Method to compute the maximal installable potential for a node clip_p_max_pu,p.u.,float,To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero. correction_factor,--,float,Correction factor for capacity factor time series. diff --git a/docs/source/configtables/scenario.csv b/docs/source/configtables/scenario.csv index 4e32a9eb..80933a9f 100644 --- a/docs/source/configtables/scenario.csv +++ b/docs/source/configtables/scenario.csv @@ -1,3 +1,3 @@ ,Unit,Values,Description planning_horizons,int,"(2018-2023, 2030, 2040, 2050)","Specifies the year of demand data to use. Historical values will use EIA930 data, Future years will use NREL EFS data. Specify multiple planning horizons to build a multi-horizon model." -foresight,str,"perfect", "Specifies foresight option for multi-horizon optimization. Currently only "perfect" foresight is supported. Myopic foresight will be added in the future." +foresight,str,perfect,Specifies foresight option for multi-horizon optimization. Currently only perfect foresight is supported. Myopic foresight will be added in the future. diff --git a/docs/source/configtables/solar.csv b/docs/source/configtables/solar.csv index a2cc80de..a4db7be0 100644 --- a/docs/source/configtables/solar.csv +++ b/docs/source/configtables/solar.csv @@ -12,6 +12,6 @@ capacity_per_sqkm,:math:`MW/km^2`,float,Allowable density of solar panel placeme correction_factor,--,float,A correction factor for the capacity factor (availability) time series. corine,--,Any subset of the Copornicus Land Cover code list (see assumptions).,Specifies areas according to Land Cover codes which are generally eligible for wind turbine placement. natura,bool,"{true, false}",Switch to exclude Protected Planet natural protection areas. Area is excluded if ``true``. -potential,--,"One of {'simple', 'conservative'}",Method to compute the maximal installable potential for a node; confer :ref:`renewableprofiles` +potential,--,"One of {'simple', 'conservative'}",Method to compute the maximal installable potential for a node clip_p_max_pu,p.u.,float,To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero. excluder_resolution,m,float,Resolution on which to perform geographical elibility analysis. diff --git a/docs/source/data-costs.md b/docs/source/data-costs.md new file mode 100644 index 00000000..a4037bf8 --- /dev/null +++ b/docs/source/data-costs.md @@ -0,0 +1,36 @@ +(data-costs)= +# Costs +## Costs and Candidate Resources + + In PyPSA-USA, candidate resource forecasted capital and operating costs are defined by the NREL Annual Technology Baseline (ATB) accessed through the PUDL project. + +### Implemented Candidate Resources + +PyPSA-USA includes a variety of candidate resources, each with specific parameters: + +- **Coal Plants**: With and without Carbon Capture Storage (CCS) at 95% and 99% capture rates. +- **Natural Gas**: Combustion Turbines and Combined Cycle plants, with and without 95% CCS. +- **Nuclear Reactors**: Small and Large Nuclear Reactors +- **Renewable Energy**: Utility-scale onshore wind, fixed-bottom and floating offshore wind, utility-scale solar. +- **Energy Storage**: 2-10 hour Battery Energy Storage Systems (BESS). +- **Pumped Hydro Storage (PHS)**: A method of storing energy by moving water between reservoirs at different elevations. + +### Cost Parameters + +The model uses forecasted data from the NREL ATB for: + +- **Capital Expenditure (CapEx)** +- **Operations and Maintenance (O&M) Costs** +- **Capital Recovery Periods** +- **Fuel Efficiencies** +- **Weighted Average Cost of Capital (WACC)** + +To reflect regional differences, capital costs are adjusted using [EIA state-level CapEx multipliers](https://www.eia.gov/analysis/studies/powerplants/capitalcost/pdf/capital_cost_AEO2020.pdf). + +## Fuel Costs + +PyPSA-USA integrates fuel costs that varry across spatial scopes and temporal scales. For more information, see [here](./data-generators.md#fuel-costs) + +## Sector Costs + +Running sector studies will use the same power system costs as electrical only studies. Costs specific to each sector can be found in the [service sector](./data-services.md), [transportation sector](./data-transportation.md), and [industrial sector](./data-industrial.md) pages accordingly. diff --git a/docs/source/data-demand.md b/docs/source/data-demand.md new file mode 100644 index 00000000..4b7e9222 --- /dev/null +++ b/docs/source/data-demand.md @@ -0,0 +1,47 @@ +(data-demand)= +# Electricity Demand + +PyPSA-USA offers access to both exogenously defined historical and future forecasted electrical demand data. + +## Historical Demand + +Historical demand data is imported from the EIA930 via the [GridEmissions](https://github.com/jdechalendar/gridemissions) tool, covering the years 2018-2023. This data is defined at the balancing area region level. + +## Forecasted Demand + +Forecasted demand is sourced from the NREL Electrification Futures Study (EFS), providing hourly demand forecasts for the years 2030, 2040, and 2050. The EFS data includes forecasts for varying levels and speeds of electrification across sectorally specified residential, commercial, and industrial end-uses. The non-sector coupled setting in pypsa-usa aggregates these demands to one load per node. + +The EFS also provides electrification cases, with reference, medium, and high electrification cases, with slow, moderate, and rapid speeds. These scenarios can be controlled via the configuration `demand: scenario: efs_case: / efs_speed:`. + +## Demand Disaggregation + +Electrical load is disaggregated based on population, folling the implementation in the nodal network dataset. See the paper on the [nodal network](./data-transmission.md#tamu-synthetic-nodal-network) for more information on specifics of load disaggregation. + +## Usage + +The user determines weather to use historical demand years via a combination of the planning horizons setting, and the electricity demand setting. If conducting historical simulations, the user must select a planning horizon in the past (2018-2023), and set `profile: eia`. + +If conducting forward-looking planning cases the user must set future planning_horizon year (2025- 2050) and set `profile: efs`. + +For the years between 2030, 2040, and 2050, PyPSA-USA implements a scaling factor that interpolates between future years or scales historical demand using forecasts from the Annual Energy Outlook (AEO). + +``` +scenario: + planning_horizons: [] # Historical or Future Year(s) + +electricity: + demand: + profile: efs # efs, eia + scenario: + efs_case: reference # reference, medium, high + efs_speed: moderate # slow, moderate, rapid + aeo: reference +``` + +### Data +```{eval-rst} +.. csv-table:: + :header-rows: 1 + :widths: 22,22,22,22 + :file: datatables/demand.csv +``` diff --git a/docs/source/data-generators.md b/docs/source/data-generators.md new file mode 100644 index 00000000..d8e3e64a --- /dev/null +++ b/docs/source/data-generators.md @@ -0,0 +1,59 @@ +(data-generators)= +# Generators + +PyPSA-USA utilizes the [Public Utility Data Liberation (PUDL)](https://catalystcoop-pudl.readthedocs.io/en/latest/index.html) project database as the core source for generator and storage device data. The PUDL database aggregates and cleans data from various agencies, including the Energy Information Agency (EIA), Federal Energy Regulatory Commission (FERC), and the National Renewable Energy Laboratory (NREL). This integration supports reproducibility and ensures continuity as new reports are released. + +## Generator Data Integration + +PyPSA-USA integrates unit-level generator data from PUDL, which includes: + +- **Heat Rates** +- **Plant Fuel Costs** +- **Seasonal Derating** +- **Power and Energy Capacities** +- **Fuel type and historical Costs** + +## Thermal Unit Commitment and Ramping Constraints + +To model thermal unit commitment and ramping constraints, data from the WECC Anchor Data Set (ADS) is incorporated. This dataset is used by transmission and system planners across the WECC region and includes: + +- **Start-up and Shut-down Costs** +- **Minimum Up and Down Time** +- **Ramping Limits** + +For plants outside the WECC, and for internal plants missing data, PyPSA-USA imputes values using capacity-weighted averages by technology type. + +## Renewable Resource Constraints + +Renewable resources like solar and wind are constrained by technical capacity limits based on land-use and resource characteristics. These limits are calculated using various land-use layers that progressively reduce the land available for resource development. + +- **Solar and Wind Capacity Limits**: Determined by multiple land-use layers. +- **Geothermal and Pumped Hydro Storage (PHS)**: These resources require more complex modeling due to subsurface and surface characteristics. Regional supply curves for these resources, including capital costs and technical capacity, are incorporated from specialized datasets. + - **PHS**: Uses data from the NREL Closed-Loop PHS dataset. + - **Geothermal Resources**: Availability data is sourced from FGEM, with further details to be provided in a forthcoming paper. + +## Fuel Costs + +In production cost-minimizing optimization models, a generator’s marginal cost to produce electricity is a primary driver of dispatch decisions and electricity prices. However, generator fuel prices and efficiencies are not uniformly available across the United States, and generators often enter into bilateral contracts that are not directly correlated with wholesale fuel prices. To address these challenges, PyPSA-USA integrates fuel prices and unit-level fuel costs across varying spatial scopes and temporal scales. + +- **Fuel Price Integration**: + - Fuel prices are collected and overlaid to select the highest resolution available, defaulting to coarser data if necessary. + - Single-point unit-level generator fuel efficiencies are sourced from a CEMS-based dataset (D. Suri et. al.) (citation inbound). + - Monthly unit-level fuel prices and additional plant efficiencies are collected via PUDL EIA-923. + +- **Data Imputation**: + - Missing data is imputed using capacity-weighted averages calculated by NERC region and unit technology type. + - Wholesale daily natural gas prices for fuel regions across the WECC are imputed using CAISO OASIS data. + - Monthly fuel prices for coal and natural gas, spatially resolved by state, are supplemented by data from the EIA. + - For technologies like biomass and nuclear, where fuel prices are not available from other sources, projected fuel costs from the NREL ATB are used. + +- **Future Fuel Costs**: + - Forecasted annual fuel prices are imported from the EIA's Annual Energy Outlook (AEO). + +# Data +```{eval-rst} +.. csv-table:: + :header-rows: 1 + :widths: 22,22,22,22 + :file: datatables/generators.csv +``` diff --git a/docs/source/data-industrial.md b/docs/source/data-industrial.md new file mode 100644 index 00000000..145b4b55 --- /dev/null +++ b/docs/source/data-industrial.md @@ -0,0 +1,6 @@ +(data-industrial)= +# Industrial Sector + +```{warning} +Sector coupling studies are all under active development. More info to come! +``` diff --git a/docs/source/data-naturalgas.md b/docs/source/data-naturalgas.md new file mode 100644 index 00000000..e723594d --- /dev/null +++ b/docs/source/data-naturalgas.md @@ -0,0 +1,6 @@ +(data-naturalgas)= +# Natural Gas Sector + +```{warning} +Sector coupling studies are all under active development. More info to come! +``` diff --git a/docs/source/data-policies.md b/docs/source/data-policies.md new file mode 100644 index 00000000..39fc7e28 --- /dev/null +++ b/docs/source/data-policies.md @@ -0,0 +1,38 @@ +(data-policies)= +# State and Federal Policy + +## Policy Constraints + +### Integration with ReEDS + +PyPSA-USA integrates with the ReEDS capacity expansion model developed by NREL to incorporate data on regional and federal policies. This integration allows for the modeling of various policy-driven constraints that guide the decarbonization process. + +### Implemented Policy Constraints + +PyPSA-USA currently supports several key policy constraints, including: + +- **Planning Reserve Margins**: Constrains capacity to meet a reserve margin above peak demand. +- **Clean Energy Standards (CES)**: Mandates the proportion of electricity generation that must come from clean energy sources. +- **Renewable Portfolio Standards (RPS)**: Requires a specific percentage of electricity generation to come from renewable sources. +- **Technology Capacity Targets**: Sets specific capacity expansion or retirement goals for certain technologies, such as wind, solar, or nuclear. +- **Emissions Constraints**: Limits the total emissions allowed within a region, with options to penalize imports by user-defined emissions factors. + +### Flexible Policy Horizons and Geographic Scope Enforcements + +Each of these constraints can be defined for different investment horizons (e.g., 2030, 2040, 2050) and applied uniquely across various geographical levels: + +- **State-Level** +- **Balancing Areas (BAs)** +- **Interconnects** +- **National Level** + +Users have the flexibility to apply the policy constraints defined by ReEDS or to implement custom policy constraints, allowing for the exploration of new policy pathways and scenarios. + + +### Data +```{eval-rst} +.. csv-table:: + :header-rows: 1 + :widths: 22,22,22,22 + :file: datatables/policies.csv +``` diff --git a/docs/source/data-renewables.md b/docs/source/data-renewables.md new file mode 100644 index 00000000..f2415ef1 --- /dev/null +++ b/docs/source/data-renewables.md @@ -0,0 +1,41 @@ +(data-renewables)= +# Renewables + +## Weather Data and Renewable Resource Availability + +### Integration with Atlite + +PyPSA-USA leverages the Atlite tool to provide access to decades of weather data with varying spatial resolutions. Atlite is used to estimate hourly renewable resource availability across the United States, typically at a spatial resolution of 30 km² cells. Within PyPSA-USA, users can configure: + +- **Weather Year** +- **Turbine Type** +- **Solar Array Type** +- **Land-Use Parameters** +- **Simulation Parameters** + +The hourly renewable capacity factors calculated by Atlite are weighted based on land-use availability factors. This ensures that areas unsuitable for specific technology types do not disproportionately affect the renewable resource capacity assigned to each node. These weighted capacity factors are aggregated into 41,564 distinct zones across the United States. These zones are then clustered using one of the clustering algorithms developed for PyPSA-Eur. + +### Land-Use Data and Renewable Integration + +Land-use data is a critical factor in determining the technical potential for renewable energy integration. PyPSA-USA provides users with data on renewable resource availability, which is informed by layers of flexibly assigned land-use classifications, including: + +- **Urban Areas** +- **Forested Regions** +- **Scrub-Land** +- **Satellite Imagery** +- **Federally Protected Lands** +- **Bathymetry** +- **State-Level Land Exclusions** + +These land exclusion layers are combined to create estimates of land available for renewable energy development, which can be customized for different technologies. This approach allows users to accurately assess the technical potential for renewable integration based on realistic land-use constraints. + +Additional details on the configurations available in the Atlite weather-energy simulation tool can be found in the configurations section. + + +### Data +```{eval-rst} +.. csv-table:: + :header-rows: 1 + :widths: 22,22,22,22 + :file: datatables/renewables.csv +``` diff --git a/docs/source/data-services.md b/docs/source/data-services.md new file mode 100644 index 00000000..c0f807ed --- /dev/null +++ b/docs/source/data-services.md @@ -0,0 +1,38 @@ +(data-services)= +# Service Sector + +The service sector represents both the residential and commercial sectors. Each of these sectors are represented in the same way, but have different load shapes, profiles, and technology charasteristics. + +## Demand + +The service sector represents demand for electricity, cooling, space heating, and water heating. These loads are pulled at a state level from the [NREL End Use Load Profile](https://www.nrel.gov/buildings/end-use-load-profiles.html) (EULP) dataset. Loads are grouped based on end-use fuel aggregated to hourly values. Dissagregation follows same population based dissagregation method from the electrical network. + +An example of the loads for a multi-family home in California (resampled to daily values) is given below. + +![alt text](./_static/sectors/service-demand.png) + +The EULP dataset gives loads at a state level. The load is dissagregated following [population breakdowns](./data-demand.md#demand-disaggregation) described in the electrical network. Furthermore, if splitting urban and rural areas, load is split according to [Census metrics](https://www.census.gov/geographies/mapping-files/time-series/geo/cartographic-boundary.2020.html#list-tab-1883739534) on proportions living in urban/rural areas within each clustered region. + +## Technologies + +The following technologies are available to be modelled within the service sector + +```{eval-rst} +.. csv-table:: + :header-rows: 1 + :widths: 22,22,30 + :file: datatables/sector_service_techs.csv +``` + +## Performance Characteristics + +The following table gives an overview of the sources used to define the performance charactersitics of technologies in the service sector. + +```{eval-rst} +.. csv-table:: + :header-rows: 1 + :widths: 22,22,22,22 + :file: datatables/sector_service_chars.csv +``` + +## Usage diff --git a/docs/source/data-transmission.md b/docs/source/data-transmission.md new file mode 100644 index 00000000..d3972c83 --- /dev/null +++ b/docs/source/data-transmission.md @@ -0,0 +1,52 @@ +(data-transmission)= +# Transmission + +## Transmission Networks + +PyPSA-USA offers a unique capability by integrating two options of transmission networks: the ReEDS NARIS-derived zonal network and the Breakthrough Energy - Texas A&M University (TAMU) synthetic nodal network. + +### TAMU Synthetic Nodal Network + +The **TAMU synthetic nodal network** offers a high-resolution representation of the US power system, specifically designed for operational simulations. See the [Xu. et al.](https://arxiv.org/abs/2002.06155) paper for a detailed description of the network. This network includes: + +- **High Spatial Resolution**: Comprising 82,549 buses, 41,561 substations, 83,497 AC lines, and 17 HVDC lines, it provides a detailed view of the transmission grid. +- **DC Power Flow**: Provides data for DC-power flow approximation. +- **Clustering**: Due to its high resolution, the TAMU network is not suitable for capacity expansion planning without clustering. As part of the PyPSA-USA workflow we implement the clustering algorithms developed by [M. Frysztracki et. al.](https://energyinformatics.springeropen.com/articles/10.1186/s42162-022-00187-7) and integrated into the PyPSA package. + +While representative of the US electricity system, the TAMU network is synthetic and not precisely aligned with the actual US transmission network. As such we integrated the ReEDS NARIS dataset for planning applications where more precise inter-regional transfer capacity ratings are neccesary. + +![TAMU_clustered](./_static/networks/TAMU_Clustered_500.png) + +### ReEDS NARIS Zonal Network + +The **ReEDS zonal network** is a Balancing Authority resolution transmission network derived from the North American Renewable Integration Study ([NARIS](https://www.nrel.gov/analysis/naris.html)) network. The network which divides the continental US into 137 zones. This network is designed to respect state boundaries and can be mapped to balancing authorities, NERC regions, and RTOs/ISOs. Key features of this network include: + +- **Zonal Representation**: The network topology is designed for transport model type transmission representations, akin to modeling area interchanges as controllable DC-links. +- **N-1 Interface Limits**: The interface transmission limits are calculated using the method developed by [Brown et. al.](https://arxiv.org/abs/2308.03612). The ReEDS network uses the CEII protected NARIS dataset as the base nodal network from which the ITLS are calculated. +- **Suitable for Capacity Expansion**: The zonal network's lower spatial resolution is well-suited for capacity expansion planning, as it simplifies computational requirements. + + +![ReEDS_topology](./_static/networks/ReEDS_Topology.png) + + +### Usage + +The TAMU network is the default transmission network in PyPSA-USA, you can modify it's resolution though the `simpl` and `clusters` wildcards in the configuration files. + +To use the ReEDS network in PyPSA-USA, you must enable the `links: transport_model` setting, and set the proper number of `cluster` nodes for your modeled interconnection. You can find the details on number of nodes in each zone in the table below. + +```{eval-rst} +.. csv-table:: + :header-rows: 1 + :widths: 22,22,33 + :file: datatables/transmission_nodes.csv +``` + +(transmission-data)= +### Data +```{eval-rst} +.. csv-table:: + :header-rows: 1 + :widths: 22,22,33 + :file: datatables/transmission.csv +``` diff --git a/docs/source/data-transportation.md b/docs/source/data-transportation.md new file mode 100644 index 00000000..d3fcb30d --- /dev/null +++ b/docs/source/data-transportation.md @@ -0,0 +1,6 @@ +(data-transportation)= +# Transportation Sector + +```{warning} +Sector coupling studies are all under active development. More info to come! +``` diff --git a/docs/source/datatables/demand.csv b/docs/source/datatables/demand.csv new file mode 100644 index 00000000..18b33f81 --- /dev/null +++ b/docs/source/datatables/demand.csv @@ -0,0 +1,3 @@ +Characteristic,Data Source,Spatial Scale,Temporal Scale +Historical Demand,GridEmissions (EIA930),Balancing Area,Hourly (2018- 2023) +Future Demand,NREL Electrification Futures Study (EFS),States,"Hourly (2030, 2040, 2050)" diff --git a/docs/source/datatables/generators.csv b/docs/source/datatables/generators.csv new file mode 100644 index 00000000..cc1e78cc --- /dev/null +++ b/docs/source/datatables/generators.csv @@ -0,0 +1,16 @@ +Characteristic,Data Source,Spatial Scale,Temporal Scale +Nameplate Capacity,EIA860 (PUDL),Unit Level,- +Storage Energy Capacity,EIA860 (PUDL),Unit Level,- +Seasonal Derating,EIA860 (PUDL),Unit Level,Summer / Winter +Minimum Capacity,EIA860 (PUDL),Unit Level,- +Heat Rate,"EIA-923 (PUDL), CEMS ",Unit / Plant Levels,- +Operation & Maint. Costs,WECC ADS + NREL ATB (PUDL),Unit / Plant Levels,- +Historical Fuel Costs,PUDL ,, +Fuel Costs (Natural Gas),CAISO OASIS,WECC Fuel Region (~BA),Daily +Fuel Costs (Natural Gas),EIA API,State Level,Monthly +Fuel Costs (Coal),EIA API ,State Level,Quarterly +Fuel Costs (Nuclear & Biomass),NREL ATB (PUDL),National,Annual +Unit Commitment Costs,WECC ADS,WECC Unit-level,- +Future Fuel Costs,EIA AEO (PUDL),9 CONUS Regions,Annual +Fuel Emissions Rates,NREL ATB (PUDL),National,- +Capital Costs,NREL ATB (PUDL),EIA State Multipliers,2022-2050 diff --git a/docs/source/datatables/policies.csv b/docs/source/datatables/policies.csv new file mode 100644 index 00000000..207ddd6d --- /dev/null +++ b/docs/source/datatables/policies.csv @@ -0,0 +1,5 @@ +Policy Constraint,Data Source,Spatial Resolution,Temporal Scope +Renewable Portfolio Standards,NREL ReEDS,States,Annual (present - 2050) +Planning Reserve Margins,NREL ReEDS,NERC Regions,- +Technology Capacity Constraints,-,-,- +Emissions Constraints,NREL ReEDS,States,Annual (present - 2050) diff --git a/docs/source/datatables/renewables.csv b/docs/source/datatables/renewables.csv new file mode 100644 index 00000000..c3e5e907 --- /dev/null +++ b/docs/source/datatables/renewables.csv @@ -0,0 +1,9 @@ +Characteristic,Data Source,Spatial Scale,Temporal Scale +Nameplate Capacity,EIA860,Unit Level,- +Capacity Factor Profiles,Atlite (ERA5),30 km,Hourly (1940 - present) +Hydro Profiles,BE/TAMU,Unit Level,Hourly (2019) +Technical Potential,CEC Wind and Solar Screens,Variable (< 30 km),- +,Copernicus Land-Sat,,- +,GEBCO Bathymetry,,- +,BOEM Planning Areas,,- +Operation & Maint. Costs,WECC ADS + NREL ATB,Unit / Plant Levels,- diff --git a/docs/source/datatables/sector_service_chars.csv b/docs/source/datatables/sector_service_chars.csv new file mode 100644 index 00000000..40f039a2 --- /dev/null +++ b/docs/source/datatables/sector_service_chars.csv @@ -0,0 +1,21 @@ +Sector,Technology,Metric,Source +Residential,Furnaces,Costs,EIA Buildings Sector Appliance and Equipment Costs and Efficiencies +,Water Heaters,Costs,EIA Buildings Sector Appliance and Equipment Costs and Efficiencies +,Air Conditioners,Costs,EIA Buildings Sector Appliance and Equipment Costs and Efficiencies +,Air Source Heat Pump,Costs,EIA Buildings Sector Appliance and Equipment Costs and Efficiencies +Commercial,Furnaces,Costs,EIA Buildings Sector Appliance and Equipment Costs and Efficiencies +,Water Heaters,Costs,EIA Buildings Sector Appliance and Equipment Costs and Efficiencies +,Air Conditioners,Costs,EIA Buildings Sector Appliance and Equipment Costs and Efficiencies +,Ground Source Heat Pump,Costs,EIA Buildings Sector Appliance and Equipment Costs and Efficiencies +Residential,Air Source Heat Pump,Efficiency,Time dependent COP calculated +,Ground Source Heat Pump,Efficiency,Time dependent COP calculated +Commercial,Air Source Heat Pump,Efficiency,Time dependent COP calculated +,Ground Source Heat Pump,Efficiency,Time dependent COP calculated +Residential,Furnaces,Existing Stock,EIA Residential Energy Consumption Survey +,Water Heaters,Existing Stock,EIA Residential Energy Consumption Survey +,Air Conditioners,Existing Stock,EIA Residential Energy Consumption Survey +,Heat Pumps,Existing Stock,EIA Residential Energy Consumption Survey +Commercial,Furnaces,Existing Stock,EIA Commercial Energy Consumption Survey +,Water Heaters,Existing Stock,EIA Commercial Energy Consumption Survey +,Air Conditioners,Existing Stock,EIA Commercial Energy Consumption Survey +,Heat Pumps,Existing Stock,EIA Commercial Energy Consumption Survey diff --git a/docs/source/datatables/sector_service_techs.csv b/docs/source/datatables/sector_service_techs.csv new file mode 100644 index 00000000..7916d6cd --- /dev/null +++ b/docs/source/datatables/sector_service_techs.csv @@ -0,0 +1,13 @@ +Technology,Abbreviation,Required Configuration +Electrical Distribution,elec-dist,Always on +Air Conditioner,air-con,Heat Load +Oil Furnace,lpg-furnace,Heat Load +Gas Furnace,gas-furnace,Heat Load +Electric Furnace,elec-furnace,Heat Load +Heat Store,heat-store,Heat Load +Air Conditioner,air-con,Cooling Load +Air Source Heat Pump,ashp,Heat Load +Ground Source Heat Pump,gshp,Heat Load +Oil Water Heater,lpg-heater,Heat Load +Gas Water Heater,gas-heater,Heat Load +Electric Water Heater,elec-heater,Heat Load diff --git a/docs/source/datatables/transmission.csv b/docs/source/datatables/transmission.csv new file mode 100644 index 00000000..1120bf64 --- /dev/null +++ b/docs/source/datatables/transmission.csv @@ -0,0 +1,7 @@ +Characteristic,Data Source,Spatial Scale +Transmission Topology,Breakthrough Energy / TAMU,CONUS / Interconnections +Transmission Topology,ReEDS (NARIS),CONUS +Clustering Shapes,ReEDS,CONUS +,Balancing Areas (Mixed), +,States, +Transmission Expansion Costs,NREL ReEDS,CONUS diff --git a/docs/source/datatables/transmission_nodes.csv b/docs/source/datatables/transmission_nodes.csv new file mode 100644 index 00000000..5fb4206e --- /dev/null +++ b/docs/source/datatables/transmission_nodes.csv @@ -0,0 +1,6 @@ +Spatial Scope,Reeds Zones,TAMU +,(Min Clusters),(Max Clusters) +Western,34,"4,919" +Texas,7,"1,338" +Eastern,98,"35,304" +USA,132,"41,561" diff --git a/docs/source/index.md b/docs/source/index.md index ba32c09e..bdc8e47f 100644 --- a/docs/source/index.md +++ b/docs/source/index.md @@ -5,22 +5,20 @@ # PyPSA-USA -```{warning} -**This model is under active development. If you would like to chat about using the model please don't hesitate to reach out to ktehranchi@stanford.edu and trevor_barnes@sfu.ca for support** -``` - -PyPSA-USA is an open-source energy system dataset of the United States energy system designed for expansion planning and operational simulations. +PyPSA-USA is an open-source energy system dataset and modeling tool designed for expansion planning and operational simulations across the United States. % update to be a url ![PyPSA-USA_Network](_static/PyPSA-USA_network.png) -PyPSA-USA provides you with a toolkit to customize the **data** and **policy constraints** of energy system planning model with ease. Through configuration file you can control the spatial, temporal, and operational resolution of your energy system model with access to cleaned and prepared historical and forecasted data. This means, you can build a model of **ERCOT, WECC, or the Eastern interconnection**, where the transmission network is clustered to **N nodes**, respecting the boundaries of **balancing areas, states, or REeDs shape boundaries**, using **historical EIA-930 demand data years 2018-2023** or **NREL EFS forcasted demand**, with **historical fuel prices from ISOs/EIA**, and capital cost projections from the **NREL Annual Technology Baseline**. +PyPSA-USA provides a versatile toolkit that allows you to customize both the **data** and **policy constraints** of your energy system planning model with ease. Through a straightforward configuration file, you can control the spatial, temporal, and operational resolution of your model, using access to cleaned and prepared historical and forecasted data. You can create and export the power system data model to use in your own homebrewed optimization model OR use the built-in PyPSA-USA optimization features to layer on additional policy and operational constraints. For planning studies, we've integrated data on regional Renewable Portfolio Standards (RPS), emissions constraints, and other state-level policy constraints. We're actively building this model so more features are on the way! PyPSA-USA builds on and leverages the work of [PyPSA-EUR](https://pypsa-eur.readthedocs.io/en/latest/index.html) developed by TU Berlin. PyPSA-USA is actively developed by the [INES Research Group](https://ines.stanford.edu) at Stanford University and the [ΔE+ Research Group](https://www.sfu.ca/see/research/delta-e.html) at Simon Fraser University. - +```{warning} +**This model is under active development. If you would like to chat about using the model please don't hesitate to reach out to ktehranchi@stanford.edu and trevor_barnes@sfu.ca for support** +```