Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
5ef3968
changed C to degC in wind resource baseclass
elenya-grant Nov 4, 2025
d5f47a2
added openmeteo wind model and draft tests
elenya-grant Nov 4, 2025
9ce55f5
finished tests for openmeteo
elenya-grant Nov 4, 2025
bdb140f
minor bugfixes to openmeteo wind
elenya-grant Nov 4, 2025
a894856
added open meteo resource files
elenya-grant Nov 4, 2025
40d792c
added docs and to supported models
elenya-grant Nov 4, 2025
0611b78
minor update to doc page
elenya-grant Nov 4, 2025
f65a21a
added dependency
elenya-grant Nov 4, 2025
69602b4
minor updates and added subtests
elenya-grant Nov 4, 2025
ec0883f
added inline comments
elenya-grant Nov 4, 2025
e03dc7e
merged in develop
elenya-grant Nov 4, 2025
d777a56
updated changelog
elenya-grant Nov 4, 2025
189a314
added requests-cache dependency
elenya-grant Nov 4, 2025
59c0bb9
added retry-requests dependency
elenya-grant Nov 4, 2025
c16aeb0
updated temperature bug in wtk resource call
elenya-grant Nov 4, 2025
fd2774f
Merge branch 'develop' into openmeteo_wind
kbrunik Nov 5, 2025
f0ecda6
fix merge conflict
kbrunik Nov 5, 2025
05acdb9
Merge branch 'develop' into openmeteo_wind
johnjasa Nov 6, 2025
425c458
Merge branch 'develop' into openmeteo_wind
johnjasa Nov 6, 2025
534fe4c
minor updates from reviewer feedback
elenya-grant Nov 6, 2025
47ea619
Merge branch 'openmeteo_wind' of github.com:elenya-grant/GreenHEART i…
elenya-grant Nov 6, 2025
2e42693
Merge branch 'develop' into openmeteo_wind
jaredthomas68 Nov 10, 2025
d8a4316
minor dosctring updates
elenya-grant Nov 10, 2025
6f575ac
Merge branch 'openmeteo_wind' of github.com:elenya-grant/GreenHEART i…
elenya-grant Nov 10, 2025
62ead1c
updated pytest skiptest decorator for mcm package
elenya-grant Nov 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
- Added `ProFastNPV`, a finance model using ProFAST to calculate NPV of the commodity
- Moved `compute()` from `ProFastBase` to `ProFastLCO`.
- Added `NumpyFinancialNPV`, a finance model that uses NumPy Financial npv to calculate the npv from the cash flows
- Added wind resource model for API calls to Open-Meteo archive
- Added `load_yaml()` function and flexibility to input a config dictionary to H2IntegrateModel rather than a filepath

## 0.4.0 [October 1, 2025]
Expand Down
1 change: 1 addition & 0 deletions docs/_toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ parts:
sections:
- file: resource/wind_index
- file: resource/wind_toolkit_v2_api
- file: resource/openmeteo_wind_archive
- file: resource/solar_index
- file: resource/goes_solar_v4_api

Expand Down
40 changes: 40 additions & 0 deletions docs/resource/openmeteo_wind_archive.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
(wind_resource:openmeteo_archive)=
# Open-Meteo Wind

This resource class downloads wind resource data from the [OpenMeteo Archive API](https://open-meteo.com/en/docs/historical-weather-api)

This dataset allows for resource data to be downloaded for:
- **resource years** from 1940 to year before the current calendar year.
- **locations** across the globe.
- **resource heights** from 10 and 100 meters.
- **time intervals** of 60 minutes.

## Available Data

| Resource Data | Resource Heights (m) |
| :---------------- | :---------------: |
| `wind_speed` | 10, 100 |
| `wind_direction` | 10, 100 |
| `temperature` | 2 |
| `pressure` | 0 |
| `relative_humidity` | 2 |
| `precipitation_rate` | 0 |

| Additional Data | Included |
| :---------------- | :---------------: |
| `site_id` | X |
| `site_lat` | X |
| `site_lon` | X |
| `elevation` | -- |
| `site_tz` | *see note |
| `data_tz` | X |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this mean that the data is in UTC?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes - I added a note in this doc page to explain.

| `filepath` | X |
| `year` | X |
| `month` | X |
| `day` | X |
| `hour` | X |
| `minute` | X |

```{note}
`site_tz` (the site timezone) is not output explicitly from this model, but `data_tz` would equal the site timezone (specified in plant_config["plant"]["simulation"]["timezone"]) is set as a non-zero value. Otherwise, the resource data is pulled with timestamps given in UTC (this is the default behavior)
```
1 change: 1 addition & 0 deletions docs/resource/wind_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# Wind Resource: Model Overview

- [**"wind_toolkit_v2_api"**](wind_resource:wtk_v2_api): this requires an API key for the NREL developer network
- [**"openmeteo_wind_api"**](wind_resource:openmeteo_archive)


```{note}
Expand Down
3 changes: 3 additions & 0 deletions h2integrate/core/supported_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from h2integrate.converters.iron.iron_wrapper import IronComponent
from h2integrate.converters.solar.solar_pysam import PYSAMSolarPlantPerformanceModel
from h2integrate.finances.numpy_financial_npv import NumpyFinancialNPV
from h2integrate.resource.wind.openmeteo_wind import OpenMeteoHistoricalWindResource
from h2integrate.storage.generic_storage_cost import GenericStorageCostModel
from h2integrate.storage.hydrogen.eco_storage import H2Storage
from h2integrate.converters.wind.atb_wind_cost import ATBWindPlantCostModel
Expand Down Expand Up @@ -123,6 +124,7 @@
# Resources
"river_resource": RiverResource,
"wind_toolkit_v2_api": WTKNRELDeveloperAPIWindResource,
"openmeteo_wind_api": OpenMeteoHistoricalWindResource,
"goes_aggregated_solar_v4_api": GOESAggregatedSolarAPI,
"goes_conus_solar_v4_api": GOESConusSolarAPI,
"goes_fulldisc_solar_v4_api": GOESFullDiscSolarAPI,
Expand Down Expand Up @@ -210,4 +212,5 @@
"NumpyFinancialNPV": NumpyFinancialNPV,
}


electricity_producing_techs = ["wind", "solar", "pv", "river", "hopp", "natural_gas_plant"]
2 changes: 2 additions & 0 deletions h2integrate/resource/wind/nrel_developer_wtk_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,8 @@ def load_data(self, fpath):
k: v.replace("%", "percent").replace("degrees", "deg").replace("hour", "h")
for k, v in data_units.items()
}
data_units_temp = {k: "degC" for k, v in data_units.items() if v == "C"}
data_units.update(data_units_temp)
# convert data to standardized units
data, data_units = self.compare_units_and_correct(data, data_units)

Expand Down
Loading