test_that("clean_wd()", {
skip_on_cran()
expect_true(file.create(f <- tempfile()))
expect_true({clean_wd(f); file.exists(f)})
unlink(f)
expect_true(file.create(f <- tempfile(fileext = ".idf")))
expect_silent({clean_wd(f); file.exists(f)})
unlink(f)
expect_true(file.create(f <- file.path(tempdir(), "in.idf")))
expect_true({clean_wd(f); file.exists(f)})
expect_true(file.create(fidf <- file.path(tempdir(), "test.idf")))
expect_true(file.create(fcsv <- file.path(tempdir(), "test.csv")))
expect_true({.clean_wd(fidf, "D", basename(fcsv)); file.exists(fcsv)})
unlink(c(fidf, fcsv))
})
test_that("path_eplus()", {
skip_on_cran()
expect_equal(basename(path_eplus(LATEST_EPLUS_VER, "a", "b")), "b")
expect_error(basename(path_eplus(LATEST_EPLUS_VER, "a", "b", strict = TRUE)))
expect_true(is.character(path_eplus_processor(LATEST_EPLUS_VER, "EPMacro", strict = TRUE)))
expect_true(is.character(path_eplus_processor(LATEST_EPLUS_VER, "PreProcess", "GrndTempCalc", "Slab", strict = TRUE)))
expect_true(is.character(path_eplus_example(LATEST_EPLUS_VER, "1ZoneUncontrolled.idf")))
expect_true(is.character(path_eplus_example(LATEST_EPLUS_VER, "BasicFiles/Exercise1A.idf")))
expect_true(is.character(path_eplus_weather(LATEST_EPLUS_VER, "USA_CA_San.Francisco.Intl.AP.724940_TMY3.ddy")))
expect_true(is.character(path_eplus_dataset(LATEST_EPLUS_VER, "Boilers.idf")))
expect_true(is.character(path_eplus_dataset(LATEST_EPLUS_VER, "FMUs/MoistAir.fmu")))
})
test_that("copy_energyplus_idd()", {
skip_on_cran()
expect_silent(res <- copy_energyplus_idd(path_eplus(LATEST_EPLUS_VER, "energyplus"), tempdir()))
expect_true(file.exists(file.path(tempdir(), "Energy+.idd")))
expect_true(attr(res, "copied"))
expect_silent(res <- copy_energyplus_idd(NULL, tempdir(), res))
expect_true(file.exists(file.path(tempdir(), "Energy+.idd")))
expect_false(attr(res, "copied"))
unlink(file.path(tempdir(), "Energy+.idd"))
expect_silent(res <- copy_energyplus_idd(NULL, tempdir(), path_eplus(LATEST_EPLUS_VER, "Energy+.idd")))
expect_true(file.exists(file.path(tempdir(), "Energy+.idd")))
unlink(file.path(tempdir(), "Energy+.idd"))
})
test_that("EPMacro()", {
skip_on_cran()
out_dir <- file.path(tempdir(), "EPMacro")
if (!dir.exists(out_dir)) dir.create(out_dir)
main <- file.path(out_dir, "macro.imf")
part <- file.path(out_dir, "part.idf")
write_lines(sprintf("##include part.idf\nVersion,%s;", LATEST_EPLUS_VER), main)
write_lines("Building,\nBldg;", part)
res <- EPMacro(part, echo = FALSE, eplus = LATEST_EPLUS_VER)
expect_equal(names(res), c("file", "run"))
expect_equal(res$file, NULL)
expect_equal(res$run, NULL)
res <- EPMacro(main, echo = FALSE, eplus = LATEST_EPLUS_VER)
expect_equal(names(res), c("file", "run"))
expect_true(file.exists(res$file$imf))
expect_true(file.exists(res$file$epmidf))
expect_true(file.exists(res$file$epmdet))
expect_equal(names(res$file), c("imf", "epmidf", "epmdet"))
expect_equal(names(res$run), c("process", "exit_status", "stdout",
"stderr", "start_time", "end_time"))
expect_equal(res$run$stdout, NULL)
expect_equal(res$run$stderr, NULL)
unlink(c(res$file$epmidf, res$file$epmdet))
res <- EPMacro(main, tempdir())
expect_equal(dirname(res$file$imf), normalizePath(tempdir(), "/"))
expect_equal(dirname(res$file$epmidf), normalizePath(tempdir(), "/"))
expect_equal(dirname(res$file$epmdet), normalizePath(tempdir(), "/"))
unlink(unlist(res$file))
res <- EPMacro(main, output_prefix = "test")
expect_equal(basename(res$file$epmidf), "test.epmidf")
expect_equal(basename(res$file$epmdet), "test.epmdet")
unlink(c(res$file$epmidf, res$file$epmdet))
res <- EPMacro(main, wait = FALSE, echo = FALSE)
expect_equal(res$file, NULL)
expect_equal(res$run$exit_status, NULL)
expect_equal(res$run$stdout, NULL)
expect_equal(res$run$stderr, NULL)
expect_equal(res$run$end_time, NULL)
while(res$run$process$is_alive()) Sys.sleep(0.1)
post <- res$run$process$get_result()
expect_equal(names(post), c("file", "run"))
res <- modifyList(res, post)
expect_equal(basename(res$file$imf), "macro.imf")
expect_equal(basename(res$file$epmidf), "macro.epmidf")
expect_equal(basename(res$file$epmdet), "macro.epmdet")
expect_null(res$run$stdout)
expect_null(res$run$stderr)
expect_equal(res$run$process$get_exit_status(), 0L)
unlink(unlist(res$file))
unlink(out_dir, recursive = TRUE)
unlink(c(main, part))
})
test_that("ExpandObjects()", {
skip_on_cran()
out_dir <- file.path(tempdir(), "ExpandObjects")
if (!dir.exists(out_dir)) dir.create(out_dir)
path <- file.path(out_dir, "expandobj.idf")
write_lines(sprintf(
"Version, %s;
HVACTemplate:Thermostat,
All Zones,
,
20,
,
26;
", LATEST_EPLUS_VER),
path
)
res <- ExpandObjects(path, echo = FALSE, idd = path_eplus(LATEST_EPLUS_VER, "Energy+.idd"))
expect_equal(names(res), c("file", "run"))
expect_equal(names(res$file), c("idf", "expidf", "basement", "slab", "experr"))
expect_true(file.exists(res$file$idf))
expect_true(file.exists(res$file$expidf))
expect_equal(res$file$basement, NA_character_)
expect_equal(res$file$slab, NA_character_)
expect_equal(res$file$experr, NA_character_)
expect_equal(names(res$run), c("process", "exit_status", "stdout",
"stderr", "start_time", "end_time"))
expect_false(is.null(res$run$stdout))
expect_null(res$run$stderr)
unlink(res$file$expidf)
res <- ExpandObjects(path, tempdir(), echo = FALSE)
expect_equal(dirname(res$file$idf), normalizePath(tempdir(), "/"))
expect_equal(dirname(res$file$expidf), normalizePath(tempdir(), "/"))
expect_equal(res$file$basement, NA_character_)
expect_equal(res$file$slab, NA_character_)
expect_equal(res$file$experr, NA_character_)
unlink(c(res$file$idf, res$file$expidf))
res <- ExpandObjects(path, output_prefix = "test", echo = FALSE)
expect_equal(basename(res$file$expidf), "test.expidf")
expect_equal(res$file$basement, NA_character_)
expect_equal(res$file$slab, NA_character_)
expect_equal(res$file$experr, NA_character_)
unlink(res$file$expidf)
res <- ExpandObjects(path, wait = FALSE, echo = FALSE)
expect_equal(res$file, NULL)
expect_equal(res$run$exit_status, NULL)
expect_equal(res$run$stdout, NULL)
expect_equal(res$run$stderr, NULL)
expect_equal(res$run$end_time, NULL)
while(res$run$process$is_alive()) Sys.sleep(0.1)
post <- res$run$process$get_result()
expect_equal(names(post), c("file", "run"))
res <- modifyList(res, post)
expect_equal(basename(res$file$expidf), "expandobj.expidf")
expect_false(is.null(res$run$stdout))
expect_null(res$run$stderr)
expect_equal(res$file$experr, NA_character_)
expect_equal(res$run$process$get_exit_status(), 0L)
unlink(res$file$expidf)
unlink(out_dir, recursive = TRUE)
unlink(path)
})
test_that("Basement()", {
skip_on_cran()
skip_if(Sys.getenv("_EPLUSR_SKIP_TESTS_BASEMENT_") != "")
out_dir <- file.path(tempdir(), "Basement")
if (!dir.exists(out_dir)) dir.create(out_dir)
path <- file.path(out_dir, "basement.idf")
write_lines(
"SimParameters,
0.1,
1;
MatlProps,
1,
2242.6,
2242.6,
311.66,
1500.0,
2000.0,
448.5,
880.0,
880.0,
1513.0,
840.0,
720.0,
1630.0,
1.402,
1.402,
0.093,
0.5,
1.9,
0.119;
Insulation,
5.0,
TRUE;
SurfaceProps,
0.16,
0.40,
0.94,
0.86,
6.0,
0.25,
TRUE;
BldgData,
0.2,
0.1,
0.3,
0.2,
0.1;
Interior,
TRUE,
0.92,
4.04,
3.08,
6.13,
9.26,
8.29;
ComBldg,
20.,
20.,
20.,
20.,
20.,
20.,
20.,
20.,
20.,
20.,
20.,
20.,
0.0;
EquivSlab,
15.0,
TRUE;
EquivAutoGrid,
1,
0.1,
0.5;
",
path
)
weather <- path_eplus_weather(LATEST_EPLUS_VER, "USA_CO_Golden-NREL.724666_TMY3.epw")
res <- Basement(path, weather, echo = FALSE, eplus = LATEST_EPLUS_VER,
idd = path_eplus(LATEST_EPLUS_VER, "PreProcess", "GrndTempCalc", "BasementGHT.idd")
)
expect_equal(names(res), c("file", "run"))
expect_equal(names(res$file), c("idf", "epw", "bsmt_idf", "bsmt_csv", "bsmt_out", "bsmt_audit"))
expect_true(file.exists(res$file$idf))
expect_true(file.exists(res$file$epw))
expect_equal(basename(res$file$bsmt_idf), "basement_bsmt.idf")
expect_equal(basename(res$file$bsmt_csv), "basement_bsmt.csv")
expect_equal(basename(res$file$bsmt_out), "basement_bsmt.out")
expect_equal(basename(res$file$bsmt_audit), "basement_bsmt.audit")
expect_equal(names(res$run), c("process", "exit_status", "stdout",
"stderr", "start_time", "end_time"))
expect_false(is.null(res$run$stdout))
expect_false(is.null(res$run$stderr))
unlink(unlist(res$file))
unlink(out_dir, recursive = TRUE)
unlink(path)
})
test_that("Slab()", {
skip_on_cran()
skip_if(Sys.getenv("_EPLUSR_SKIP_TESTS_BASEMENT_") != "")
out_dir <- file.path(tempdir(), "Basement")
if (!dir.exists(out_dir)) dir.create(out_dir)
path <- file.path(out_dir, "slab.idf")
write_lines(
"Materials,
1,
0.158,
0.379,
0.9,
0.9,
0.75,
0.03,
6.13,
9.26;
MatlProps,
2300,
1200,
653,
1200,
0.93,
1;
BoundConds,
TRUE,
TRUE,
10,
False,
;
BldgProps,
1,
0,
4,
18,
18,
18,
20,
20,
20,
22,
22,
22,
22,
20,
20,
0,
0.10;
Insulation,
0.,
0.,
2.0,
2.0,
1;
EquivalentSlab,
10,
0.1,
15,
10.;
",
path
)
weather <- path_eplus_weather(LATEST_EPLUS_VER, "USA_CO_Golden-NREL.724666_TMY3.epw")
res <- Slab(path, weather, eplus = LATEST_EPLUS_VER, echo = FALSE,
idd = path_eplus(LATEST_EPLUS_VER, "PreProcess", "GrndTempCalc", "SlabGHT.idd")
)
expect_equal(names(res), c("file", "run"))
expect_equal(names(res$file), c("idf", "epw", "slab_gtp", "slab_out", "slab_ger"))
expect_true(file.exists(res$file$idf))
expect_true(file.exists(res$file$epw))
expect_equal(basename(res$file$slab_gtp), "slab_slab.gtp")
expect_equal(basename(res$file$slab_out), "slab_slab.out")
expect_equal(basename(res$file$slab_ger), "slab_slab.ger")
expect_equal(names(res$run), c("process", "exit_status", "stdout",
"stderr", "start_time", "end_time"))
expect_false(is.null(res$run$stdout))
expect_false(is.null(res$run$stderr))
unlink(unlist(res$file))
unlink(out_dir, recursive = TRUE)
unlink(path)
})
test_that("EnergyPlus()", {
skip_on_cran()
out_dir <- file.path(tempdir(), "Energyplus")
if (!dir.exists(out_dir)) dir.create(out_dir)
path <- copy_eplus_example(LATEST_EPLUS_VER, "1ZoneUncontrolled.idf")
weather <- path_eplus_weather(LATEST_EPLUS_VER, "USA_CO_Golden-NREL.724666_TMY3.epw")
res <- EnergyPlus(path, weather, out_dir, eplus = LATEST_EPLUS_VER, echo = FALSE)
expect_equal(names(res), c("file", "run"))
expect_equal(length(res$file), 51L)
expect_equal(
sort(names(which(vapply(res$file, function(x) !anyNA(x), logical(1))))),
c("audit", "bnd", "dxf", "eio", "end", "epw", "err", "eso", "idf",
# NOTE: From EnergyPlus v22.1.0, Sqlite.err is only generated if there is
# a SQLite output
"mdd", "mtd", "mtr", "rdd", "shd", "table")
)
expect_equal(names(res$run), c("process", "exit_status", "stdout",
"stderr", "start_time", "end_time"))
expect_false(is.null(res$run$stdout))
# can use legacy output name style
res_legacy <- EnergyPlus(path, weather, out_dir, output_suffix = "L", eplus = LATEST_EPLUS_VER, echo = FALSE)
files <- basename(unlist(res_legacy$file, FALSE, FALSE))
files <- files[!is.na(files)]
expect_equal(setdiff(
names(tbl <- table(tools::file_path_sans_ext(files))),
c("1ZoneUncontrolled", "eplusout", "eplustbl", "sqlite",
"USA_CO_Golden-NREL.724666_TMY3")
), character())
# NOTE: From EnergyPlus v22.1.0, Sqlite.err is only generated if there is
# a SQLite output
expect_equal(sort(as.integer(tbl)), c(1L, 1L, 5L, 12L))
# can run annual simulation with custom IDD
expect_silent(
EnergyPlus(path, weather, out_dir, annual = TRUE, eplus = LATEST_EPLUS_VER,
echo = FALSE, idd = path_eplus(LATEST_EPLUS_VER, "Energy+.idd")
)
)
unlink(out_dir, recursive = TRUE)
unlink(path)
})
test_that("convertESOMTR()", {
skip_on_cran()
out_dir <- file.path(tempdir(), "convertESOMTR")
if (!dir.exists(out_dir)) dir.create(out_dir)
path <- copy_eplus_example(LATEST_EPLUS_VER, "1ZoneUncontrolled.idf")
weather <- path_eplus_weather(LATEST_EPLUS_VER, "USA_CO_Golden-NREL.724666_TMY3.epw")
res <- EnergyPlus(path, weather, out_dir, eplus = LATEST_EPLUS_VER, echo = FALSE)
eso <- convertESOMTR(res$file$eso, eplus = LATEST_EPLUS_VER, echo = FALSE,
rules = path_eplus(LATEST_EPLUS_VER, "PostProcess", "convertESOMTRpgm", "convert.txt")
)
expect_equal(names(eso), c("file", "run"))
expect_equal(names(eso$file), c("eso", "mtr", "ipeso", "ipmtr", "iperr"))
expect_true(file.exists(eso$file$eso))
expect_true(file.exists(eso$file$ipeso))
expect_true(is.na(eso$file$mtr))
expect_true(is.na(eso$file$ipmtr))
expect_true(is.na(eso$file$iperr))
expect_equal(names(eso$run), c("process", "exit_status", "stdout",
"stderr", "start_time", "end_time"))
expect_false(is.null(eso$run$stdout))
expect_true(is.null(eso$run$stderr))
unlink(unlist(eso$file))
mtr <- convertESOMTR(res$file$mtr, eplus = LATEST_EPLUS_VER, echo = FALSE)
expect_equal(names(mtr), c("file", "run"))
expect_equal(names(mtr$file), c("eso", "mtr", "ipeso", "ipmtr", "iperr"))
expect_true(file.exists(mtr$file$mtr))
expect_true(file.exists(mtr$file$ipmtr))
expect_true(is.na(mtr$file$eso))
expect_true(is.na(mtr$file$ipeso))
expect_true(is.na(mtr$file$iperr))
expect_equal(names(mtr$run), c("process", "exit_status", "stdout",
"stderr", "start_time", "end_time"))
expect_false(is.null(mtr$run$stdout))
expect_true(is.null(mtr$run$stderr))
unlink(unlist(mtr$file))
unlink(unlist(res$file))
unlink(out_dir, recursive = TRUE)
unlink(path)
})
test_that("ReadVarsESO()", {
skip_on_cran()
out_dir <- file.path(tempdir(), "ReadVarsESO")
if (!dir.exists(out_dir)) dir.create(out_dir)
path <- copy_eplus_example(LATEST_EPLUS_VER, "1ZoneUncontrolled.idf")
weather <- path_eplus_weather(LATEST_EPLUS_VER, "USA_CO_Golden-NREL.724666_TMY3.epw")
res <- EnergyPlus(path, weather, out_dir, eplus = LATEST_EPLUS_VER, echo = FALSE)
eso <- ReadVarsESO(res$file$eso, eplus = LATEST_EPLUS_VER, echo = FALSE)
expect_equal(names(eso), c("file", "run"))
expect_equal(names(eso$file), c("eso", "mtr", "variable", "meter", "rvaudit"))
expect_true(file.exists(eso$file$eso))
expect_true(file.exists(eso$file$variable))
expect_true(file.exists(eso$file$rvaudit))
expect_true(is.na(eso$file$mtr))
expect_true(is.na(eso$file$meter))
expect_equal(names(eso$run), c("process", "exit_status", "stdout",
"stderr", "start_time", "end_time"))
expect_true(!is.na(eso$file$variable))
expect_true(is.na(eso$file$meter))
expect_true(!is.na(eso$file$rvaudit))
unlink(unlist(eso$file))
mtr <- ReadVarsESO(res$file$mtr, eplus = LATEST_EPLUS_VER, echo = FALSE)
expect_equal(names(mtr$file), c("eso", "mtr", "variable", "meter", "rvaudit"))
expect_true(file.exists(mtr$file$mtr))
expect_true(file.exists(mtr$file$meter))
expect_true(file.exists(mtr$file$rvaudit))
expect_true(is.na(mtr$file$eso))
expect_true(is.na(mtr$file$variable))
expect_equal(names(mtr$run), c("process", "exit_status", "stdout",
"stderr", "start_time", "end_time"))
expect_true(is.na(mtr$file$variable))
expect_true(!is.na(mtr$file$meter))
expect_true(!is.na(mtr$file$rvaudit))
unlink(unlist(mtr$file))
unlink(unlist(res$file))
unlink(out_dir, recursive = TRUE)
unlink(path)
})
test_that("HVAC_Diagram()", {
skip_on_cran()
out_dir <- file.path(tempdir(), "HVAC_Diagram")
if (!dir.exists(out_dir)) dir.create(out_dir)
model <- copy_eplus_example(LATEST_EPLUS_VER, "1ZoneUncontrolled.idf")
weather <- path_eplus_weather(LATEST_EPLUS_VER, "USA_CO_Golden-NREL.724666_TMY3.epw")
res <- EnergyPlus(model, weather, out_dir, eplus = LATEST_EPLUS_VER, echo = FALSE)
svg <- HVAC_Diagram(res$file$bnd, echo = FALSE)
expect_equal(names(svg), c("file", "run"))
expect_equal(names(svg$file), c("bnd", "svg"))
expect_true(file.exists(svg$file$bnd))
expect_true(file.exists(svg$file$bnd))
expect_equal(names(svg$run), c("process", "exit_status", "stdout",
"stderr", "start_time", "end_time"))
expect_true(!is.na(svg$file$svg))
unlink(unlist(svg$file))
unlink(unlist(res$file))
unlink(out_dir, recursive = TRUE)
unlink(model)
})
test_that("energyplus()", {
skip_on_cran()
out_dir <- file.path(tempdir(), "run-energyplus")
if (!dir.exists(out_dir)) dir.create(out_dir)
weather <- path_eplus_weather(LATEST_EPLUS_VER, "USA_CO_Golden-NREL.724666_TMY3.epw")
# can run EPMacro
path_imf <- copy_eplus_example(LATEST_EPLUS_VER, "AbsorptionChiller_Macro.imf")
path_resources <- c(
copy_eplus_example(LATEST_EPLUS_VER, "HVAC3ZoneChillerSpec.imf"),
copy_eplus_example(LATEST_EPLUS_VER, "HVAC3ZoneGeometry.imf"),
copy_eplus_example(LATEST_EPLUS_VER, "HVAC3Zone-IntGains-Def.imf"),
copy_eplus_example(LATEST_EPLUS_VER, "HVAC3ZoneMat-Const.imf")
)
res_imf <- energyplus(path_imf, weather, out_dir, echo = FALSE, resources = path_resources)
expect_equal(names(res_imf), c("version", "energyplus", "start_time", "end_time", "exit_status", "output_dir", "file", "run"))
expect_equal(as.character(res_imf$version), LATEST_EPLUS_VER)
expect_equal(res_imf$energyplus, eplus_config(LATEST_EPLUS_VER)$dir)
expect_s3_class(res_imf$start_time, "POSIXct")
expect_s3_class(res_imf$end_time, "POSIXct")
expect_equal(res_imf$output_dir, normalizePath(out_dir))
expect_equal(length(res_imf$file), 57L)
# NOTE: From EnergyPlus v22.1.0, Sqlite.err is only generated if there is
# a SQLite output
expect_equal({files <- unlist(res_imf$file); files <- files[!is.na(files)]; length(files)}, 23L)
expect_equal(sum(!file.exists(file.path(out_dir, files))), 0L)
expect_equal(sort(unname(files[names(files) != "epw"])),
sort(c(list.files(out_dir, "AbsorptionChiller_Macro"), basename(path_resources)))
)
expect_s3_class(res_imf$run, "data.table")
expect_equal(names(res_imf$run),
c("program", "exit_status", "start_time", "end_time", "stdout", "stderr")
)
expect_equal(res_imf$run$program,
c("EPMacro", "ExpandObjects", "Basement", "Slab", "EnergyPlus",
"convertESOMTR", "ReadVarsESO_MTR", "ReadVarsESO_ESO", "HVAC_Diagram")
)
expect_equal(res_imf$run[program == "EPMacro", exit_status], list(0L))
expect_true(file.exists(file.path(out_dir, files["epmidf"])))
expect_true(file.exists(file.path(out_dir, files["epmdet"])))
expect_true(file.exists(file.path(out_dir, files["eso"])))
expect_true(file.exists(file.path(out_dir, files["mtr"])))
expect_true(file.exists(file.path(out_dir, files["bnd"])))
expect_true(file.exists(file.path(out_dir, files["svg"])))
unlink(c(path_imf, path_resources, out_dir), recursive = TRUE)
# can run ExpandObjects
path_exp <- copy_eplus_example(LATEST_EPLUS_VER, "HVACTemplate-5ZoneFanCoil.idf")
res_exp <- energyplus(path_exp, weather, out_dir, echo = FALSE)
expect_equal(length(res_exp$file), 57L)
# NOTE: From EnergyPlus v22.1.0, Sqlite.err is only generated if there is
# a SQLite output
expect_equal({files <- unlist(res_exp$file); files <- files[!is.na(files)]; length(files)}, 22L)
expect_equal(sum(!file.exists(file.path(out_dir, files))), 0L)
expect_equal(sort(unname(files[names(files) != "epw"])), list.files(out_dir, "HVACTemplate-5ZoneFanCoil"))
expect_equal(res_exp$run[program == "ExpandObjects", exit_status], list(0L))
expect_true(file.exists(file.path(out_dir, files["expidf"])))
expect_true(is.na(files["experr"]))
unlink(c(path_exp, out_dir), recursive = TRUE)
if(Sys.getenv("_EPLUSR_SKIP_TESTS_BASEMENT_") == "") {
# NOTE: There is a bug in the basement preprocessor in EnergyPlus from v9.4 to v22.1
# Ref: https://github.com/NREL/EnergyPlus/pull/9356
if (numeric_version(LATEST_EPLUS_VER) > "22.1") {
# can run Basement
path_base <- copy_eplus_example(LATEST_EPLUS_VER, "LgOffVAVusingBasement.idf")
expect_error(energyplus(path_base, NULL, out_dir, echo = FALSE))
# modify the input in order to reduce the simulation time
l <- read_lines(path_base)
l[grepl("IYRS: Maximum number of yearly iterations", string), string := "1;"]
l[grepl("NMAT: Number of materials in this domain", string), string := "1,"]
l[grepl("CLEARANCE: Distance from outside of wall", string), string := "1,"]
l[grepl("BaseDepth: Depth of the basement wall", string), string := "0.5;"]
write_lines(l, path_base)
res_base <- energyplus(path_base, weather, out_dir, design_day = TRUE, echo = FALSE)
expect_equal(length(res_base$file), 57L)
# NOTE: From EnergyPlus v22.1.0, Sqlite.err is only generated if there is
# a SQLite output
expect_equal({files <- unlist(res_base$file); files <- files[!is.na(files)]; length(files)}, 26L)
expect_equal(sum(!file.exists(file.path(out_dir, files))), 0L)
expect_equal(sort(unname(files[names(files) != "epw"])), list.files(out_dir, "LgOffVAVusingBasement"))
expect_equal(res_base$run[program == "Basement", exit_status], list(0L))
expect_true(file.exists(file.path(out_dir, files["expidf"])))
expect_true(file.exists(file.path(out_dir, files["bsmt_idf"])))
expect_true(file.exists(file.path(out_dir, files["bsmt_csv"])))
expect_true(file.exists(file.path(out_dir, files["bsmt_out"])))
expect_true(file.exists(file.path(out_dir, files["bsmt_audit"])))
unlink(c(path_base, out_dir), recursive = TRUE)
}
# can run Slab
path_slab <- copy_eplus_example(LATEST_EPLUS_VER, "5ZoneAirCooledWithSlab.idf")
expect_error(energyplus(path_slab, NULL, out_dir, echo = FALSE))
# modify the input in order to reduce the simulation time
l <- read_lines(path_slab)
l[grepl("IYRS: Number of years to iterate", string), string := "1,"]
l[grepl("ConvTol: Convergence Tolerance", string), string := "1;"]
write_lines(l, path_slab)
res_slab <- energyplus(path_slab, weather, out_dir, echo = FALSE)
expect_equal(length(res_slab$file), 57L)
# NOTE: From EnergyPlus v22.1.0, Sqlite.err is only generated if there is
# a SQLite output
expect_equal({files <- unlist(res_slab$file); files <- files[!is.na(files)]; length(files)}, 25L)
expect_equal(sum(!file.exists(file.path(out_dir, files))), 0L)
expect_equal(sort(unname(files[names(files) != "epw"])), list.files(out_dir, "5ZoneAirCooledWithSlab"))
expect_equal(res_slab$run[program == "Slab", exit_status], list(0L))
expect_true(file.exists(file.path(out_dir, files["slab_ger"])))
expect_true(file.exists(file.path(out_dir, files["slab_gtp"])))
expect_true(file.exists(file.path(out_dir, files["slab_out"])))
unlink(c(path_slab, out_dir), recursive = TRUE)
}
# can convert eso to IP
path_ip <- copy_eplus_example(LATEST_EPLUS_VER, "1ZoneUncontrolled.idf")
res_ip <- energyplus(path_ip, weather, out_dir, eso_to_ip = TRUE, echo = FALSE)
expect_equal(length(res_ip$file), 57L)
# NOTE: From EnergyPlus v22.1.0, Sqlite.err is only generated if there is
# a SQLite output
expect_equal({files <- unlist(res_ip$file); files <- files[!is.na(files)]; length(files)}, 25L)
expect_equal(sum(!file.exists(file.path(out_dir, files))), 0L)
expect_equal(sort(unname(files[names(files) != "epw"])), list.files(out_dir, "1ZoneUncontrolled"))
expect_equal(res_ip$run[program == "convertESOMTR", exit_status], list(0L))
expect_true(file.exists(file.path(out_dir, files["ipeso"])))
expect_true(file.exists(file.path(out_dir, files["ipmtr"])))
expect_true(is.na(files["iperr"]))
unlink(out_dir, recursive = TRUE)
res_ip2 <- energyplus(path_ip, weather, out_dir, eso_to_ip = TRUE, readvars = FALSE, echo = FALSE)
expect_equal(length(res_ip2$file), 57L)
# NOTE: From EnergyPlus v22.1.0, Sqlite.err is only generated if there is
# a SQLite output
expect_equal({files2 <- unlist(res_ip2$file); files2 <- files2[!is.na(files2)]; length(files2)}, 22L)
expect_equal(sum(!file.exists(file.path(out_dir, files2))), 0L)
expect_true(file.exists(file.path(out_dir, files2["ipeso"])))
expect_true(file.exists(file.path(out_dir, files2["ipmtr"])))
expect_true(is.na(files2["iperr"]))
unlink(out_dir, recursive = TRUE)
# can run with EnergyPlus < 8.3
options("eplusr.eplus_legacy" = TRUE)
path_legacy <- copy_eplus_example(LATEST_EPLUS_VER, "1ZoneUncontrolled.idf")
expect_error(energyplus(path_legacy, weather, out_dir, design_day = TRUE, echo = FALSE))
res_legacy <- energyplus(path_legacy, weather, out_dir, echo = FALSE)
expect_equal(length(res_legacy$file), 57L)
# NOTE: From EnergyPlus v22.1.0, Sqlite.err is only generated if there is
# a SQLite output
expect_equal({files <- unlist(res_legacy$file); files <- files[!is.na(files)]; length(files)}, 23L)
expect_equal(sum(!file.exists(file.path(out_dir, files))), 0L)
expect_equal(sort(unname(files[names(files) != "epw"])), list.files(out_dir, "1ZoneUncontrolled"))
unlink(out_dir, recursive = TRUE)
options("eplusr.eplus_legacy" = NULL)
expect_error(energyplus(path_legacy, weather, out_dir, design_day = TRUE, annual = TRUE, echo = FALSE))
res_norm <- energyplus(path_legacy, weather, out_dir, echo = FALSE)
expect_equal(res_legacy$file, res_norm$file)
unlink(out_dir, recursive = TRUE)
})
test_that("run_idf()", {
skip_on_cran()
path_idf <- copy_eplus_example(LATEST_EPLUS_VER, "1ZoneUncontrolled.idf")
path_epw <- path_eplus_weather(LATEST_EPLUS_VER, "USA_CO_Golden-NREL.724666_TMY3.epw")
# can run ddy simulation
expect_type(res <- run_idf(path_idf, NULL, output_dir = tempdir(), echo = FALSE), "list")
# can specify EnergyPlus version
expect_type(res <- run_idf(path_idf, NULL, output_dir = tempdir(), echo = FALSE, LATEST_EPLUS_VER), "list")
expect_null(res$epw)
# can stop if failed to find version
expect_error({
f <- tempfile(fileext = ".idf")
write_lines(read_lines(path_idf)[-91], f)
run_idf(f, NULL, output_dir = tempdir(), echo = FALSE)
}, "Missing version field")
# can use input file directory
expect_type({
f <- tempfile(fileext = ".idf")
file.copy(path_idf, f, overwrite = TRUE)
res <- run_idf(f, NULL, output_dir = NULL, echo = FALSE)
}, "list")
# can run simulation with weather
expect_type(res <- run_idf(path_idf, path_epw, output_dir = tempdir(), echo = FALSE), "list")
expect_equal(res$idf, normalizePath(path_idf))
expect_equal(res$epw, normalizePath(path_epw))
expect_equal(res$version, numeric_version(LATEST_EPLUS_VER))
expect_equal(res$exit_status, 0L)
expect_s3_class(res$start_time, "POSIXct")
expect_s3_class(res$end_time, "POSIXct")
expect_equal(res$output_dir, normalizePath(tempdir(), mustWork = FALSE))
expect_equal(res$energyplus, eplus_exe(LATEST_EPLUS_VER))
expect_type(res$stdout, "character")
expect_true("stderr" %in% names(res))
expect_s3_class(res$process, "process")
expect_true(file.exists(res$idf))
expect_true(file.exists(res$epw))
# can run in the background
expect_s3_class(proc <- run_idf(path_idf, NULL, output_dir = tempdir(), wait = FALSE), "r_process")
expect_type({proc$wait(); res <- proc$get_result()}, "list")
expect_equal(res$idf, normalizePath(path_idf))
expect_null(res$epw)
expect_equal(res$version, numeric_version(LATEST_EPLUS_VER))
expect_equal(res$exit_status, 0L)
expect_s3_class(res$start_time, "POSIXct")
expect_s3_class(res$end_time, "POSIXct")
expect_equal(res$output_dir, normalizePath(tempdir(), mustWork = FALSE))
expect_equal(res$energyplus, eplus_exe(LATEST_EPLUS_VER))
expect_type(res$stdout, "character")
expect_null(res$process)
})
test_that("run_multi()", {
skip_on_cran()
path_idf <- copy_eplus_example(LATEST_EPLUS_VER, c("1ZoneUncontrolled.idf", "5Zone_Transformer.idf"))
path_epw <- path_eplus_weather(LATEST_EPLUS_VER, "USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw")
# can stop if idf and epw does not have the same length
expect_error(run_multi(path_idf, rep(path_epw, 3), NULL), "Must have same length")
# can stop if idf and eplus does not have the same length
expect_error(run_multi(path_idf, NULL, NULL, eplus = rep(LATEST_EPLUS_VER, 3)), "Must have same length")
# can stop if idf and design does not have the same length
expect_error(run_multi(path_idf, NULL, NULL, design_day = rep(FALSE, 3)), "Must have same length")
# can stop if idf and annual does not have the same length
expect_error(run_multi(path_idf, NULL, NULL, annual = rep(FALSE, 3)), "Must have same length")
# can stop if both design and annual is TRUE
expect_error(run_multi(path_idf, NULL, NULL, annual = TRUE, design_day = TRUE), "both design-day-only", class = "eplusr_error_both_ddy_annual")
# can stop if model does not exist
expect_error(run_multi(tempfile(), NULL))
# can stop if model does not contain version
expect_error({
f <- tempfile(fileext = ".idf")
write_lines(read_lines(path_idf[1])[-91], f)
run_multi(f, NULL, output_dir = tempdir())
}, "Failed to determine the version of EnergyPlus", class = "eplusr_error_miss_idf_ver")
# can stop if target EnergyPlus is not found
expect_error(run_multi(path_idf, NULL, NULL, eplus = 8.0), "Cannot locate EnergyPlus", class = "eplusr_error_locate_eplus")
# can stop if input idf contain duplications
expect_error(run_multi(rep(path_idf, 2), NULL, NULL), class = "eplusr_error_duplicated_sim")
# can stop if idf and output directory does not have the same length
expect_error(run_multi(path_idf, NULL, output_dir = tempdir()), "Must have same length")
# can stop if idf and output directory combines same job
expect_error(run_multi(rep(path_idf[1], 2), NULL, rep(tempdir(), 2L)), "Duplication found")
expect_message(
res <- run_multi(path_idf, NULL, file.path(tempdir(), c("a", "b"))),
"FAILED"
)
expect_s3_class(res, "data.table")
expect_equal(names(res), c("index", "status", "idf", "epw", "version",
"exit_status", "start_time", "end_time", "output_dir", "energyplus",
"stdout", "stderr"))
expect_equal(res$index, 1:2)
expect_equal(res$status, rep("failed", 2))
expect_equal(res$idf, normalizePath(path_idf))
expect_equal(res$epw, rep(NA_character_, 2))
expect_equal(res$version, rep(LATEST_EPLUS_VER, 2))
expect_equal(res$exit_status > 0, rep(TRUE, 2))
expect_s3_class(res$start_time, "POSIXct")
expect_s3_class(res$end_time, "POSIXct")
expect_equal(res$energyplus, rep(eplus_exe(LATEST_EPLUS_VER), 2L))
checkmate::expect_list(res$stdout, "character")
expect_silent(res <- run_multi(path_idf, NULL, file.path(tempdir(), c("a", "b")), wait = FALSE))
expect_s3_class(res, "r_process")
expect_equal({res$wait(); res$get_exit_status()}, 0L)
expect_silent(res <- res$get_result())
expect_s3_class(res, "data.table")
expect_equal(names(res), c("index", "status", "idf", "epw", "version",
"exit_status", "start_time", "end_time", "output_dir", "energyplus",
"stdout", "stderr"))
expect_equal(res$index, 1:2)
expect_equal(res$status, rep("failed", 2))
expect_equal(res$idf, normalizePath(path_idf, mustWork = FALSE))
expect_equal(res$epw, rep(NA_character_, 2))
expect_equal(res$version, rep(LATEST_EPLUS_VER, 2))
expect_equal(res$exit_status > 0, rep(TRUE, 2))
expect_s3_class(res$start_time, "POSIXct")
expect_s3_class(res$end_time, "POSIXct")
expect_equal(res$output_dir, normalizePath(file.path(tempdir(), c("a", "b")), mustWork = FALSE))
expect_equal(res$energyplus, rep(eplus_exe(LATEST_EPLUS_VER), 2L))
checkmate::expect_list(res$stdout, "character")
})
# vim: set fdm=marker:
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.