germanrenewableenergy

Calculates renewable energy power for all German solar panels and wind turbines.

https://github.com/openkfw/germanrenewableenergy

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (5.6%) to scientific vocabulary
Last synced: 11 months ago · JSON representation

Repository

Calculates renewable energy power for all German solar panels and wind turbines.

Basic Info
  • Host: GitHub
  • Owner: openkfw
  • License: agpl-3.0
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 25.5 MB
Statistics
  • Stars: 7
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created almost 2 years ago · Last pushed over 1 year ago
Metadata Files
Readme License

README.md

GermanRenewableEnergy

Model renewable energy power for all german solar panels and wind turbines.

The capacity factor is calcuted for all german solar panels and wind wind turbines for each hour in all set years (2000-2023). The calculation is described in chapter Wind.py and Solar.py.

The Solar panels and wind wind turbines data is downloaded once from MaStr using OpenMaStr. and ERA5-Wheater downloaded once during installation.

:wrench: Installation and setup environment

Follow the steps here to setup the project.

:running: Run the programm

See here how to execute the software with the correct parameters.

Project structure

General structure

Key | link | meaning | |------|------------------| | ...> | information flow | | ---> | data flow | | --- | connected with |

```mermaid flowchart LR subgraph postgresql-db db[(kfw-mastr)] db --- Calculationsolar db --- Calculationwind db --- municipalitiesgeoboundaries db --- resultswindhourly db --- resultssolarhourly db --- resultswindmonthly db --- resultssolarmonthly db --- resultswindyearly db --- resultssolar_yearly

end


subgraph config[configyaml]
conf_line["CALC_SOLAR
SPECIFIC_SOLAR_UNITS
CURTAILMENT_SOLAR

CALC_WIND
SPECIFIC_WIND_UNITS
CURTAILMENT_WIND

...
"]
end


subgraph extweatherdata[Weather data]
ERA5db[(ERA5)]
end

subgraph extdata[External data]
Markstammdatenregister[(Markstammdatenregister)]
muncipalities[(Gemeinde Geodaten)]
end




results ==>  results_wind_hourly
results ==>  results_solar_hourly
results ==>  results_wind_monthly ==>  |"export_and_copy_files()"| output
results ==>  results_solar_monthly ==>  |"export_and_copy_files()"| output
results ==>  results_wind_yearly ==>  |"export_and_copy_files()"| output
results ==>  results_solar_yearly ==>  |"export_and_copy_files()"|output


config -.-> main(((main.py)))
era5py(((era5.py))) -.-> |"download_era5_data()"| extweatherdata ===> hourly
setupdb(((setup_database.py)))-.-> |"main()"|extdata ===> postgresql-db
main -.-> |"calculate_cf_wind()"| calc_wind(((calculate_cf_wind.py))) -.-> |"load_era5_weather_wind()"|wind_w ==> wind_calculations{" "} ==> |"wind.calculate_power()"| results{"results"}
main -.-> |"calculate_cf_solar()"| calc_solar(((calculate_cf_solar.py))) -.-> |"load_era5_weather_solar()"|solar_w ==> solar_calculations{" "}  ==> |"solar_calculations()"| results{"results"}
calc_solar(((calculate_cf_solar.py))) -.-> |"load_calculation_solar_data()"| Calculation_solar ==> solar_calculations
calc_wind(((calculate_cf_wind.py))) -.-> |"load_calculation_wind_data()"| Calculation_wind ==> wind_calculations 


subgraph output
    csv[/CSVs\]
    config_out[/config_SOFTWARE_VERSION_OUTFILE_POSTFIX.yaml\]
    log[/kfw-mastr_SOFTWARE_VERSION_OUTFILE_POSTFIX.log\]

end

subgraph input
    subgraph era5
        subgraph hourly

        solar_w["10m_u_component_of_wind.nc
        10m_v_component_of_wind.nc
        surface_solar_radiation_downwards.nc
        total_sky_direct_solar_radiation_at_surface.nc
        surface_pressure.nc
        2m_temperature.nc
        near_ir_albedo_for_diffuse_radiation.nc"]


        wind_w["100m_u_component_of_wind.nc
        100m_v_component_of_wind.nc
        forecast_surface_roughness.nc
        surface_pressure.nc
        2m_temperature.nc"]

        end
    end

end

click main "https://github.com/chrwm/kfw-mastr/blob/main/main.py" _blank
click conf_line "https://github.com/chrwm/kfw-mastr/blob/main/config.yaml" _blank
click calc_wind "https://github.com/chrwm/kfw-mastr/blob/main/kfw_mastr/calculate_cf_wind.py" _blank
click calc_solar "https://github.com/chrwm/kfw-mastr/blob/main/kfw_mastr/calculate_cf_solar.py" _blank
click setupdb "https://github.com/chrwm/kfw-mastr/blob/main/kfw_mastr/setup_database.py#L867-L931" _blank
click Markstammdatenregister "https://www.marktstammdatenregister.de/MaStR" _blank
click muncipalities "https://daten.gdz.bkg.bund.de/produkte/vg/vg5000_1231/aktuell/" _blank
click era5py "https://github.com/chrwm/kfw-mastr/blob/main/kfw_mastr/utils/era5.py" _blank
click ERA5db "https://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-era5-single-levels" _blank
click solar_calculations "https://github.com/chrwm/kfw-mastr/blob/259e1606cd9ea5b6e278f61ed3bb3414f6ecc74a/kfw_mastr/solar.py#L58-L108" _blank
click wind_calculations "https://github.com/chrwm/kfw-mastr/blob/259e1606cd9ea5b6e278f61ed3bb3414f6ecc74a/kfw_mastr/wind.py#L141-L185" _blank

```

Methodological background

ERA5 weather data

Find information about weather parameters in ERA5 data documentation and information about the grid in ERA5 grid documentation.

| calcType | count | name | units | variable name in CDS | shortName | paramID | |----------|-------|---------------------------------------------|---------|---------------------------------------------|-----------|---------| | wind | 71 | 100 metre U wind component | m s**-1 | 100m_u-component_of_wind | 100u | 228246 | | wind | 72 | 100 metre V wind component | m s**-1 | 100m_v-component_of_wind | 100v | 228247 | | wind | 69 | Forecast surface roughness | m | forecast_surface_roughness | fsr | 244 | | wind | 39 | Surface pressure | Pa | surface_pressure | sp | 134 | | wind | 48 | 2 metre temperature | K | 2m_temperature | 2t | 167 | | solar | 46 | 10 metre U wind component | m s**-1 | 10m_u_component_of_wind | 10u | 165 | | solar | 47 | 10 metre V wind component | m s**-1 | 10m_v_component_of_wind | 10v | 166 | | solar | 6 | Surface solar radiation downwards | J m**-2 | surface_solar_radiation_downwards | ssrd | 169 | | solar | 23 | Total sky direct solar radiation at surface | J m**-2 | total_sky_direct_solar_radiation_at_surface | fdir | 228021 | | solar | 39 | Surface pressure | Pa | surface_pressure | sp | 134 | | solar | 48 | 2 metre temperature | K | 2m_temperature | 2t | 167 | | solar | 4 | Near IR albedo for diffuse radiation | (0 - 1) | near_ir_albedo_for_diffuse_radiation | alnid | 18 |

Download ERA5 weather data via API

Follow this manual to download new weather data.

Wind.py

Formulas implemented in wind.py

wind_method.png

Solar.py

Formulas implemented in solar.py

solar_method.png

License (Code)

This repository is licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later). See LICENSE for rights and obligations. Copyright: © Reiner Lemoine Institut © KfW

Owner

  • Name: KfW Bankengruppe
  • Login: openkfw
  • Kind: organization
  • Location: Frankfurt

This is the repository for KfW open source projects

GitHub Events

Total
  • Watch event: 4
  • Push event: 3
  • Pull request event: 2
  • Create event: 1
Last Year
  • Watch event: 4
  • Push event: 3
  • Pull request event: 2
  • Create event: 1

Committers

Last synced: 12 months ago

All Time
  • Total Commits: 23
  • Total Committers: 4
  • Avg Commits per committer: 5.75
  • Development Distribution Score (DDS): 0.565
Past Year
  • Commits: 23
  • Committers: 4
  • Avg Commits per committer: 5.75
  • Development Distribution Score (DDS): 0.565
Top Committers
Name Email Commits
DanielMuellerKfW 1****W 10
FabianC-BPt 1****t 9
Sven 8****8 3
IngmarM 5****M 1

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 0
  • Total pull requests: 3
  • Average time to close issues: N/A
  • Average time to close pull requests: about 1 hour
  • Total issue authors: 0
  • Total pull request authors: 2
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 3
  • Average time to close issues: N/A
  • Average time to close pull requests: about 1 hour
  • Issue authors: 0
  • Pull request authors: 2
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
  • FabianC-BPt (2)
  • DanielMuellerKfW (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

requirements.txt pypi
environment.yaml conda
  • pip
  • python 3.11.*