Skip to content

Commit c271e36

Browse files
authored
Merge pull request #3578 from AritraDey-Dev/fix/biocro-met-download
fix(biocro): handle met data end time in met2model.BIOCRO to prevent run end date error
2 parents 593fd1b + 70b665a commit c271e36

3 files changed

Lines changed: 13 additions & 9 deletions

File tree

models/biocro/tests/testthat/test.met2model.R

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,6 @@ setup(dir.create(outfolder, showWarnings = FALSE))
55
teardown(unlink(outfolder, recursive = TRUE))
66

77
test_that("Met conversion runs without error", {
8-
skip(paste0(
9-
"BIOCRO met2model is currently broken. ",
10-
"See issue #2274 (https://github.com/PecanProject/pecan/issues/2274)."
11-
))
128
nc_path <- system.file("test-data", "CRUNCEP.2000.nc",
139
package = "PEcAn.utils")
1410
in.path <- dirname(nc_path)

modules/data.atmosphere/R/load.cfmet.R

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,19 @@ load.cfmet <- function(met.nc, lat, lon, start.date, end.date) {
5151

5252
all.dates <- data.frame(index = seq_along(time.idx), date = date)
5353

54-
if (start.date + lubridate::days(1) < min(all.dates$date)) {
55-
PEcAn.logger::logger.severe("run start date", start.date, "before met data starts", min(all.dates$date))
54+
delta <- stats::median(diff(all.dates$date), na.rm = TRUE)
55+
if (is.na(delta)) {
56+
# probably only happens with a one-line met file
57+
# fall back to requiring exact match
58+
delta <- 0
5659
}
57-
if (end.date > max(all.dates$date)) {
58-
PEcAn.logger::logger.severe("run end date", end.date, "after met data ends", max(all.dates$date))
60+
61+
if (start.date < (min(all.dates$date) - delta)) {
62+
PEcAn.logger::logger.severe("run start date", start.date, "before met data starts", min(all.dates$date))
63+
}
64+
65+
if (end.date > (max(all.dates$date) + delta)) {
66+
PEcAn.logger::logger.severe("run end date", end.date, "after met data ends", max(all.dates$date))
5967
}
6068

6169
run.dates <- all.dates %>%

modules/data.atmosphere/tests/testthat/test.load.cfmet.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ test_that("load.cfmet throws error if start/end date out of range",{
4949
start.date = "1950-12-31", end.date = "1951-12-31"),
5050
"run start date .* before met data starts")
5151
expect_error(load.cfmet(met.nc = daily.nc, lat = 39, lon = -88,
52-
start.date = "1951-01-02", end.date = "1952-01-01"),
52+
start.date = "1951-01-02", end.date = "1952-01-15"),
5353
"run end date .* after met data ends")
5454
})
5555

0 commit comments

Comments
 (0)