Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ideas-lab-nus/epwshiftr
Create future EnergyPlus Weather files using CMIP6 data
https://github.com/ideas-lab-nus/epwshiftr
climate-change cmip6 energyplus epw esgf
Last synced: 25 days ago
JSON representation
Create future EnergyPlus Weather files using CMIP6 data
- Host: GitHub
- URL: https://github.com/ideas-lab-nus/epwshiftr
- Owner: ideas-lab-nus
- License: other
- Created: 2019-12-16T05:44:18.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-05-17T06:23:31.000Z (7 months ago)
- Last Synced: 2024-10-29T22:31:10.678Z (about 2 months ago)
- Topics: climate-change, cmip6, energyplus, epw, esgf
- Language: R
- Homepage: https://ideas-lab-nus.github.io/epwshiftr/
- Size: 1.83 MB
- Stars: 30
- Watchers: 4
- Forks: 7
- Open Issues: 11
-
Metadata Files:
- Readme: README.Rmd
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Support: .github/SUPPORT.md
Awesome Lists containing this project
- open-sustainable-technology - epwshiftr - Create future EnergyPlus Weather files using CMIP6 data. (Climate Change / Climate Data Processing and Analysis)
README
---
output: github_document
---```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)library(epwshiftr)
# copy files in advance
f <- c("tas_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20490101-20491231.nc",
"tas_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20500101-20501231.nc",
"tas_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20510101-20511231.nc",
"hurs_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20490101-20491231.nc",
"hurs_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20500101-20501231.nc",
"hurs_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20510101-20511231.nc",
"tas_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20790101-20791231.nc",
"tas_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20800101-20801231.nc",
"tas_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20810101-20811231.nc",
"hurs_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20790101-20791231.nc",
"hurs_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20800101-20801231.nc",
"hurs_day_AWI-CM-1-1-MR_ssp585_r1i1p1f1_gn_20810101-20811231.nc"
)
file.copy(file.path("/mnt/d/ScenarioMIP", f), tempdir())
```# epwshiftr
[![R build status](https://github.com/ideas-lab-nus/epwshiftr/workflows/R-CMD-check/badge.svg)](https://github.com/ideas-lab-nus/epwshiftr/actions)
[![CRAN status](https://www.r-pkg.org/badges/version/epwshiftr)](https://CRAN.R-project.org/package=epwshiftr)
[![Codecov test coverage](https://codecov.io/gh/ideas-lab-nus/epwshiftr/branch/master/graph/badge.svg)](https://app.codecov.io/gh/ideas-lab-nus/epwshiftr?branch=master)
[![CRAN Download Badge](https://cranlogs.r-pkg.org/badges/epwshiftr)](https://cran.r-project.org/package=epwshiftr)> Create future EnergyPlus Weather files using CMIP6 data
## How to cite
To cite epwshiftr in publications use:
Jia, Hongyuan, Chong, Adrian, Ning, Baisong, 2023.
Epwshiftr: incorporating open data of climate change prediction into building performance simulation for future adaptation and mitigation,
in: Proceedings of Building Simulation 2023: 18th Conference of IBPSA, Building Simulation.
Presented at the Building Simulation 2023, IBPSA, Shanghai, China, pp. 3201–3207.
https://doi.org/10.26868/25222708.2023.1612A BibTeX entry for LaTeX users is:
```bibtex
@inproceedings{jia2023epwshiftr,
title = {Epwshiftr: Incorporating Open Data of Climate Change Prediction into Building Performance Simulation for Future Adaptation and Mitigation},
shorttitle = {Epwshiftr},
booktitle = {Proceedings of {{Building Simulation}} 2023: 18th {{Conference}} of {{IBPSA}}},
author = {Jia, Hongyuan and Chong, Adrian and Ning, Baisong},
year = {2023},
series = {Building {{Simulation}}},
volume = {18},
pages = {3201--3207},
publisher = {{IBPSA}},
address = {{Shanghai, China}},
doi = {10.26868/25222708.2023.1612}
}
```* [Installation](#installation)
* [Get started](#get-started)
* [Build CMIP6 output file index](#build-cmip6-output-file-index)
* [Manage CMIP6 output files](#download-cmip6-output-files)
* [Extract CMIP6 output data](#extract-cmip6-output-data)
* [Morphing EPW weather variables](#morphing-epw-weather-variables)
* [Create future EPW files](#create-future-epw-files)
* [Author](#author)
* [License](#license)
* [Contribute](#contribute)## Installation
You can install the latest stable release of epwshiftr from
[CRAN](https://CRAN.R-project.org).```{r cran-install, eval = FALSE}
install.packages("epwshiftr")
```Alternatively, you can install the development version from GitHub.
```{r gh-install, eval = FALSE}
install.packages("epwshiftr",
repos = c(
ideaslab = "https://ideas-lab-nus.r-universe.dev",
cran = "https://cran.r-project.org"
)
)
```## Get started
### Build CMIP6 output file index
* The first step is to build CMIP6 experiment output file index based on queries
using ESGF search RESTful API```{r index}
# set directory to store files
options(epwshiftr.dir = tempdir())
options(epwshiftr.verbose = TRUE)# get CMIP6 data nodes
(nodes <- get_data_node())# create a CMIP6 output file index
idx <- init_cmip6_index(
# only consider ScenarioMIP activity
activity = "ScenarioMIP",# specify dry-bulb temperature and relative humidity
variable = c("tas", "hurs"),# specify report frequent
frequency = "day",# specify experiment name
experiment = c("ssp585"),# specify GCM name
source = "AWI-CM-1-1-MR",# specify variant,
variant = "r1i1p1f1",# specify years of interest
years = c(2050, 2080),# save to data dictionary
save = TRUE
)# the index has been automatically saved into directory specified using
# `epwshiftr.dir` option and can be reloaded
idx <- load_cmip6_index()str(head(idx))
```### Manage CMIP6 output files
* You have to download CMIP6 output file by yourself using your preferable
methods or tools. The download url can be found in the `file_url` column in
the index.* After you have downloaded CMIP6 output files of interest, you can use
`suumary_database()` to get a summary on files downloaded against the CMIP6
output file index.* This step is necessary as it map the loaded files against index so that
epwshiftr knows which case is complete and can be used for the next step.```{r database}
# Summary downloaded file by GCM and variable, use the latest downloaded file if
# multiple matches are detected and save matched information into the index file
sm <- summary_database(tempdir(), by = c("source", "variable"), mult = "latest", update = TRUE)knitr::kable(sm)
```### Extract CMIP6 output data
* With previous step, now we can match coordinates of an EPW in the CMIP6 output
file```{r coord}
epw <- file.path(eplusr::eplus_config(8.8)$dir, "WeatherData/USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw")
# match any coordinates with absolute distance less than 1 degree
coord <- match_coord(epw, threshold = list(lon = 1, lat = 1), max_num = 1)class(coord)
names(coord)
coord$meta
coord$coord[, .(file_path, coord)]
str(coord$coord$coord[[1]])
```* Once we get the matched coordinates, we can extract corresponding data related
to input EPW file using `extract_data()````{r data}
data <- extract_data(coord, years = c(2050, 2080))class(data)
names(data)
knitr::kable(head(data$data))
```### Morphing EPW weather variables
* With all necessary information extracted above, now we can perform morphing on
out EPW```{r morph}
morphed <- morphing_epw(data)class(morphed)
names(morphed)
knitr::kable(head(morphed$tdb))
knitr::kable(head(morphed$rh))
```### Create future EPW files
* Once we get the morphed data using `morphing_epw()`, we can now create future
EPW files using `future_epw()````{r epw}
# create future EPWs grouped by GCM, experiment ID, interval (year)
epws <- future_epw(morphed, by = c("source", "experiment", "interval"),
dir = tempdir(), separate = TRUE, overwrite = TRUE
)epws
sapply(epws, function (epw) epw$path())
```## Author
Hongyuan Jia and Adrian Chong
## License
* **epwshiftr**
epwshiftr is released under the terms of MIT License.
Copyright © 2019-2024 Hongyuan Jia and Adrian Chong
* **CMIP6 data**
> To enable modeling groups and others who support CMIP6 to demonstrate its
> impact (and secure ongoing funding), you are required to cite and
> acknowledge those who have made CMIP6 possible. You also must abide by any
> licensing restrictions, which are recorded in each file as a global
> attribute (named “license”).
>
> Please carefully read and adhere to the [CMIP6 Terms of Use](https://pcmdi.llnl.gov/CMIP6/TermsOfUse/).## Disclaimer
CMIP6 model data is licensed under a [Creative Commons Attribution-ShareAlike
4.0 International License](https://creativecommons.org/licenses/).
Consult [Terms of Use](https://pcmdi.llnl.gov/CMIP6/TermsOfUse/) for terms of use
governing CMIP6 output, including citation requirements and proper
acknowledgment. Further information about each GCM output data, including some
limitations, can be found via the `further_info_url` (recorded as a **global
attribute** in the NetCDF file) and at [EC-Earth](https://ec-earth.org/). The
data producers and data providers make no warranty, either express or implied,
including, but not limited to, warranties of merchantability and fitness for a
particular purpose. All liabilities arising from the supply of the information
(including any liability arising in negligence) are excluded to the fullest
extent permitted by law.## Contribute
If you encounter a clear bug or have questions about the usage, please file an
issue with a minimal reproducible example on
[GitHub](https://github.com/ideas-lab-nus/epwshiftr/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc)
If you have a solution for an existing bug or an implementation for a missing
feature, please send a pull request and let us review.------------------------------------------------------------------------
Please note that the 'epwshiftr' project is released with a
[Contributor Code of Conduct](https://github.com/ideas-lab-nus/epwshiftr/blob/master/.github/CODE_OF_CONDUCT.md).
By contributing to this project, you agree to abide by its terms.