From a425629b0ae62f460caf28339cf0c2aadafab1fc Mon Sep 17 00:00:00 2001 From: ppinchuk Date: Thu, 4 Dec 2025 15:19:19 -0700 Subject: [PATCH 1/3] Update --- .github/ISSUE_TEMPLATE/bug_report.yaml | 2 +- .github/ISSUE_TEMPLATE/feature_request.yaml | 2 +- CITATION.cff | 29 ++++++++++----------- README.rst | 9 +++---- conda.recipe/meta.yaml | 2 +- docs/source/conf.py | 2 +- examples/aws_pcluster/README.rst | 6 ++--- examples/marine_energy/README.rst | 4 +-- examples/running_locally/README.rst | 2 +- examples/running_with_hsds/README.rst | 6 ++--- pyproject.toml | 4 +-- reV/SAM/SAM.py | 2 +- reV/SAM/econ.py | 2 +- reV/SAM/generation.py | 2 +- reV/bespoke/bespoke.py | 4 +-- reV/supply_curve/sc_aggregation.py | 2 +- 16 files changed, 39 insertions(+), 41 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 7bd6ac65b..4e10fc4e6 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -72,4 +72,4 @@ body: attributes: label: Charge code placeholder: > - If you are at NREL and fixing this bug is urgent, please provide a charge code + If you are at NLR and fixing this bug is urgent, please provide a charge code diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 2def07916..981675c83 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -59,4 +59,4 @@ body: attributes: label: Charge code placeholder: > - If you are at NREL and implementing this feature is urgent, please provide a charge code + If you are at NLR and implementing this feature is urgent, please provide a charge code diff --git a/CITATION.cff b/CITATION.cff index a5cc3d64d..d1d1aa788 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -7,49 +7,48 @@ type: software authors: - family-names: Buster given-names: Grant - affiliation: National Renewable Energy Laboratory + affiliation: National Laboratory of the Rockies orcid: 'https://orcid.org/0000-0001-8616-8100' - family-names: Pinchuk given-names: Pavlo - affiliation: National Renewable Energy Laboratory + affiliation: National Laboratory of the Rockies orcid: 'https://orcid.org/0000-0003-4736-4728' - family-names: Rossol given-names: Michael - affiliation: National Renewable Energy Laboratory + affiliation: National Laboratory of the Rockies orcid: 'https://orcid.org/0000-0001-9351-8404' - family-names: Benton given-names: Brandon - affiliation: National Renewable Energy Laboratory + affiliation: National Laboratory of the Rockies orcid: "https://orcid.org/0009-0008-9931-2050" - family-names: Gleason given-names: Michael - affiliation: National Renewable Energy Laboratory + affiliation: National Laboratory of the Rockies orcid: "https://orcid.org/0009-0003-5916-6726" - family-names: Stanley given-names: Andrew P.J. - affiliation: National Renewable Energy Laboratory + affiliation: National Laboratory of the Rockies orcid: "https://orcid.org/0000-0002-0677-3413" - family-names: Spencer given-names: Robert - affiliation: National Renewable Energy Laboratory + affiliation: National Laboratory of the Rockies - family-names: Bannister given-names: Michael - affiliation: National Renewable Energy Laboratory + affiliation: National Laboratory of the Rockies - family-names: Williams given-names: Travis - affiliation: National Renewable Energy Laboratory + affiliation: National Laboratory of the Rockies orcid: 'https://orcid.org/0000-0003-0973-1865' identifiers: - type: doi value: 10.5281/zenodo.4501716 repository-code: 'https://github.com/NREL/reV' abstract: >- - reV (the Renewable Energy Potential model) is an open-source - geospatial techno-economic tool that estimates renewable energy - technical potential (capacity and generation), system cost, and - supply curves for a variety of technologies, including but not - limited to, geothermal (GT), pumped storage hydropower (PSH), - solar photovoltaics (PV), concentrating solar power (CSP), + reV is an open-source geospatial techno-economic tool that + estimates energy technical potential (capacity and generation), + system cost, and supply curves for a variety of technologies, + including but not limited to, geothermal (GT), pumped storage + hydropower (PSH), solar photovoltaics (PV), concentrating solar power (CSP), wind energy, etc. reV allows researchers to include exhaustive spatial representation of the built and natural environment into the generation and cost estimates that it computes. reV is highly diff --git a/README.rst b/README.rst index 0df15b63b..4bdec6090 100644 --- a/README.rst +++ b/README.rst @@ -38,9 +38,8 @@ .. inclusion-intro -**reV** (the Renewable Energy Potential model) -is an open-source geospatial techno-economic tool that -estimates renewable energy technical potential (capacity and generation), +**reV** is an open-source geospatial techno-economic tool that +estimates energy technical potential (capacity and generation), system cost, and supply curves for a variety of technologies, including but not limited to, geothermal (GT), pumped storage hydropower (PSH), solar photovoltaics (PV), concentrating solar power (CSP), wind energy, etc. @@ -58,7 +57,7 @@ equally well-suited for regional infrastructure and deployment planning and anal For a detailed description of reV capabilities and functionality, see the -`NREL reV technical report `_. +`NLR reV technical report `_. How does reV work? ================== @@ -69,7 +68,7 @@ A full reV execution consists of one or more compute modules strung together using a `pipeline framework `_, or configured using `batch `_. -A typical reV workflow begins with input wind/solar/geothermal resource data +A typical reV workflow begins with input resource data (following the `rex data format `_) that is passed through the generation module. This output is then collected across space and time (if executed on the HPC), before being sent off to be aggregated under user-specified land exclusion scenarios. diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml index d11aa1042..043a80118 100644 --- a/conda.recipe/meta.yaml +++ b/conda.recipe/meta.yaml @@ -36,6 +36,6 @@ requirements: about: home: "https://github.com/NREL/reV" license: BSD 3-Clause - summary: "The Renewable Energy Potential (reV) Model" + summary: "The reV Model" doc_url: "https://nrel.github.io/reV" dev_url: "https://github.com/NREL/reV" diff --git a/docs/source/conf.py b/docs/source/conf.py index f0fd51012..77825de80 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -24,7 +24,7 @@ project = 'reV' copyright = '2018, Alliance for Sustainable Energy, LLC' -author = 'NREL: Galen MacLaurin, Michael Rossol, Grant Buster' +author = 'NLR: Galen MacLaurin, Michael Rossol, Grant Buster' pkg = os.path.dirname(os.path.abspath(os.path.dirname(__file__))) pkg = os.path.dirname(pkg) diff --git a/examples/aws_pcluster/README.rst b/examples/aws_pcluster/README.rst index 8177db01a..794e1fbc3 100644 --- a/examples/aws_pcluster/README.rst +++ b/examples/aws_pcluster/README.rst @@ -1,9 +1,9 @@ Running reV on AWS Parallel Cluster HPC Infrastructure ====================================================== -reV was originally designed to run on the NREL high performance computer (HPC), but you can now run reV on AWS using the NREL renewable energy resource data (the NSRDB and WTK) that lives on S3. This example will guide you through how to set up reV on an AWS HPC environment with dynamically scaled EC2 compute resources and input resource data sourced from S3 (optionally via HSDS). +reV was originally designed to run on the NLR high performance computer (HPC), but you can now run reV on AWS using the NLR resource data (the NSRDB and WTK) that lives on S3. This example will guide you through how to set up reV on an AWS HPC environment with dynamically scaled EC2 compute resources and input resource data sourced from S3 (optionally via HSDS). -If you plan on only running reV for a handful of sites (less than 100), first check out our `running reV locally example `_ or `running with HSDS example `_, which will be a lot easier to get started with. Larger reV jobs require you stand up your own AWS parallel cluster and HSDS server. Very small jobs can be run locally using the NREL HSDS developer API. +If you plan on only running reV for a handful of sites (less than 100), first check out our `running reV locally example `_ or `running with HSDS example `_, which will be a lot easier to get started with. Larger reV jobs require you stand up your own AWS parallel cluster and HSDS server. Very small jobs can be run locally using the NLR HSDS developer API. Note that everything should be done in AWS region us-west-2 (Oregon) since this is where the NSRDB and WTK data live on S3. @@ -50,7 +50,7 @@ Setting up an AWS Parallel Cluster Notes on Running reV in the AWS Parallel Cluster ------------------------------------------------ -#. If you use the NREL developer API key for HSDS and don't configure a custom HSDS Service you will almost certainly see 503 errors from too many requests being processed. See the instructions below to configure an HSDS Service. +#. If you use the NLR developer API key for HSDS and don't configure a custom HSDS Service you will almost certainly see 503 errors from too many requests being processed. See the instructions below to configure an HSDS Service. #. AWS EC2 instances usually have twice as many vCPUs as physical CPUs due to a default of two threads per physical CPU (at least for the c5 instances) (see ``disable_hyperthreading = false``). The pcluster framework treats each thread as a "node" that can accept one reV job. For this reason, it is recommended that you scale the ``"nodes"`` entry in the reV generation config file but keep ``"max_workers": 1``. For example, if you use two ``c5.2xlarge`` instances in your compute fleet, this is a total of 16 vCPUs, each of which can be thought of as a HPC "node" that can run one process at a time. #. If you setup an HSDS local server but the parallel cluster ends up sending too many requests (some nodes but not all will see 503 errors), you can try upping the ``max_task_count`` in the ``~/hsds/admin/config/override.yml`` file. #. If your HSDS local server nodes run out of memory (monitor with ``docker stats``), you can try upping the ``dn_ram`` or ``sn_ram`` options in the ``~/hsds/admin/config/override.yml`` file. diff --git a/examples/marine_energy/README.rst b/examples/marine_energy/README.rst index 7fc8b2888..45add0e12 100644 --- a/examples/marine_energy/README.rst +++ b/examples/marine_energy/README.rst @@ -2,13 +2,13 @@ reV Marine Energy Example ========================= This example leverages the new SAM marine hydrokinetic (MHK) energy models, the -NREL hindcast wave data, the MHK cost models in NRWAL, and the integration of +NLR hindcast wave data, the MHK cost models in NRWAL, and the integration of everything in to reV for large scale spatiotemporal analysis. The configs in this example run a batched project that estimates the spatiotemporal capacity factors and costs associated with three common wave energy reference models in the Atlantic and Pacific Oceans. -National Renewable Energy Laboratory. (2020). High Resolution Ocean Surface +National Laboratory of the Rockies. (2020). High Resolution Ocean Surface Wave Hindcast (US Wave) Data [data set]. Retrieved from https://dx.doi.org/10.15473/1647329. diff --git a/examples/running_locally/README.rst b/examples/running_locally/README.rst index 4688cbe56..4f59de95e 100644 --- a/examples/running_locally/README.rst +++ b/examples/running_locally/README.rst @@ -5,7 +5,7 @@ Run reV locally and `reV Econ `_ can be run locally using resource .h5 files stored locally. -For users outside of NREL: you can now point reV directly to filepaths on S3! This will stream small amounts of data from S3 directly +For users outside of NLR: you can now point reV directly to filepaths on S3! This will stream small amounts of data from S3 directly to your computer without having to setup an IO server like HSDS. See the example for reading data directly from S3 `here `_ and try the example below with resource file paths from S3. diff --git a/examples/running_with_hsds/README.rst b/examples/running_with_hsds/README.rst index 57cd93a8e..7cae5ea4c 100644 --- a/examples/running_with_hsds/README.rst +++ b/examples/running_with_hsds/README.rst @@ -7,11 +7,11 @@ the `HDF Group `_ and is hosted on Amazon Web Services (AWS) using a combination of EC2 (Elastic Compute) and S3 (Scalable Storage Service). You can read more about the HSDS service `in this slide deck `_. -You can use the NREL developer API as the HSDS endpoint for small workloads +You can use the NLR developer API as the HSDS endpoint for small workloads or stand up your own HSDS local server (instructions further below) for an enhanced parallelized data experience. -For general information on where to get started accessing NREL data from outside of NREL, see the `rex docs `_. +For general information on where to get started accessing NLR data from outside of NLR, see the `rex docs `_. You might also be interested in these examples of how to set up your own `local HSDS server `_ and how to run reV on an `AWS parallel cluster `_. @@ -39,7 +39,7 @@ creating a configuration file at ``~/.hscfg``: To get your own API key, visit https://developer.nrel.gov/signup/ -Please note that our HSDS service is for demonstration purposes only. The API in the example above is hosted on an NREL server and will have limits on the amount of data you can access via HSDS. It is common to get an error: ``OSError: Error retrieving data: None errors`` if you attempt to access too much data or if the server is busy. Here are two references for scaling reV using HSDS and AWS: +Please note that our HSDS service is for demonstration purposes only. The API in the example above is hosted on an NLR server and will have limits on the amount of data you can access via HSDS. It is common to get an error: ``OSError: Error retrieving data: None errors`` if you attempt to access too much data or if the server is busy. Here are two references for scaling reV using HSDS and AWS: #. `Setup your own HSDS server on your personal computer `_ #. `Run reV on the AWS Parallel Cluster Infrastructure `_ diff --git a/pyproject.toml b/pyproject.toml index 1499dfe41..530dee07d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ build-backend = 'setuptools.build_meta' [project] name="NREL-reV" dynamic = ["version"] -description = "National Renewable Energy Laboratory's (NREL's) Renewable Energy Potential(V) Model: reV" +description = "National Laboratory of the Rockies' (NLR's) reV model" readme = {file = "README.rst", content-type = "text/x-rst"} authors = [ {name = "Galen Maclaurin", email = "galen.maclaurin@nrel.gov"}, @@ -18,7 +18,7 @@ maintainers = [ {name = "Paul Pinchuk", email = "ppinchuk@nrel.gov"}, ] license = "BSD-3-Clause" -keywords = ["reV", "NREL"] +keywords = ["reV", "NLR"] requires-python = ">= 3.9" classifiers=[ "Development Status :: 4 - Beta", diff --git a/reV/SAM/SAM.py b/reV/SAM/SAM.py index 0d0e285ea..93fbb574b 100644 --- a/reV/SAM/SAM.py +++ b/reV/SAM/SAM.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- """reV-to-SAM interface module. -Wraps the NREL-PySAM library with additional reV features. +Wraps the NLR-PySAM library with additional reV features. """ import copy diff --git a/reV/SAM/econ.py b/reV/SAM/econ.py index cd834689a..3619afea3 100644 --- a/reV/SAM/econ.py +++ b/reV/SAM/econ.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- """reV-to-SAM econ interface module. -Wraps the NREL-PySAM lcoefcr and singleowner modules with +Wraps the NLR-PySAM lcoefcr and singleowner modules with additional reV features. """ import logging diff --git a/reV/SAM/generation.py b/reV/SAM/generation.py index cec1712ed..e5b9e245e 100644 --- a/reV/SAM/generation.py +++ b/reV/SAM/generation.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- """reV-to-SAM generation interface module. -Wraps the NREL-PySAM pvwattsv5, windpower, and tcsmolensalt modules with +Wraps the NLR-PySAM pvwattsv5, windpower, and tcsmolensalt modules with additional reV features. """ diff --git a/reV/bespoke/bespoke.py b/reV/bespoke/bespoke.py index ecaec209a..450da7649 100644 --- a/reV/bespoke/bespoke.py +++ b/reV/bespoke/bespoke.py @@ -1562,7 +1562,7 @@ def __init__(self, excl_fpath, res_fpath, tm_dset, objective_function, However, unlike ``reV`` generation, bespoke analysis is performed on the supply-curve grid resolution, and the plant layout is optimized for every supply-curve point based on an - optimization objective specified by the user. See the NREL + optimization objective specified by the user. See the NLR publication on the bespoke methodology for more information. See the documentation for the ``reV`` SAM class (e.g. @@ -1583,7 +1583,7 @@ def __init__(self, excl_fpath, res_fpath, tm_dset, objective_function, uniquely defined (i.e.only appear once and in a single input file). res_fpath : str - Unix shell style path to wind resource HDF5 file in NREL WTK + Unix shell style path to wind resource HDF5 file in NLR WTK format. Can also be a path including a wildcard input like ``/h5_dir/prefix*suffix`` to run bespoke on multiple years of resource data. Can also be an explicit list of resource diff --git a/reV/supply_curve/sc_aggregation.py b/reV/supply_curve/sc_aggregation.py index b3c096fb9..00fcf34ff 100644 --- a/reV/supply_curve/sc_aggregation.py +++ b/reV/supply_curve/sc_aggregation.py @@ -684,7 +684,7 @@ def __init__(self, excl_fpath, tm_dset, econ_fpath=None, Total included area for each supply curve point in km2. This is based on the nominal area of each exclusion pixel which by default is calculated from the exclusion profile - attributes. The NREL reV default is 0.0081 km2 pixels + attributes. The NLR reV default is 0.0081 km2 pixels (90m x 90m). The area sum considers partial inclusions. latitude : float Supply curve point centroid latitude coordinate, in degrees From 228aff393d843e4377ee4c5f46ba7dd17fda1d52 Mon Sep 17 00:00:00 2001 From: ppinchuk Date: Thu, 4 Dec 2025 15:22:32 -0700 Subject: [PATCH 2/3] Linter --- reV/SAM/SAM.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reV/SAM/SAM.py b/reV/SAM/SAM.py index 93fbb574b..b0705766f 100644 --- a/reV/SAM/SAM.py +++ b/reV/SAM/SAM.py @@ -406,7 +406,7 @@ def __setitem__(self, key, value): raise SAMInputError(msg) if (key == "total_installed_cost" and isinstance(value, str) - and value.casefold() == "windbos"): + and value.casefold() == "windbos"): # "windbos" is a special reV key to tell reV to compute # total installed costs using WindBOS module. If detected, # don't try to set it as a PySAM attribute From 085119e604eb1700618236687de74c7f9237fce5 Mon Sep 17 00:00:00 2001 From: ppinchuk Date: Fri, 5 Dec 2025 11:42:56 -0700 Subject: [PATCH 3/3] Linter fix --- reV/SAM/SAM.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/reV/SAM/SAM.py b/reV/SAM/SAM.py index b0705766f..a24091826 100644 --- a/reV/SAM/SAM.py +++ b/reV/SAM/SAM.py @@ -405,8 +405,9 @@ def __setitem__(self, key, value): logger.exception(msg) raise SAMInputError(msg) - if (key == "total_installed_cost" and isinstance(value, str) - and value.casefold() == "windbos"): + value_is_windbos = (isinstance(value, str) + and value.casefold() == "windbos") + if (key == "total_installed_cost" and value_is_windbos): # "windbos" is a special reV key to tell reV to compute # total installed costs using WindBOS module. If detected, # don't try to set it as a PySAM attribute