# @file main.r # @author Martin Brien martin.brien@scotchpartners.com> ####################################################################################### # Load functions source("ggplots/GUIDEA_scatter.r") source("ggplots/GUIDEA_map.r") source("ggplots/TM52_C1_scatter.r") source("ggplots/TM52_C1_map.r") #source("ggplots/TM52_C1_tab.r") source("ggplots/TM52_C2_scatter.r") source("ggplots/TM52_C2_map.r") #source("ggplots/TM52_C2_tab.r") source("ggplots/TM52_C3_scatter.r") source("ggplots/TM52_C3_map.r") source("ggplots/") library(ggplot2) library(scales) library(TTR) require(grid) require(gridExtra) ####################################################################################### # epw = "LHR_1989_DSY_Baseline.epw" system(paste("runenergyplus eplusout.idf ",epw)) setwd("/home/martin/post-processing/Output") system("/usr/local/EnergyPlus-8-2-0/PostProcess/ReadVarsESO") EPO = read.csv("eplusout.csv") # import EPlus output setwd("/home/martin/post-processing") colnames(EPO[grep("Zone.Operative.Temperature..C..Hourly",colnames(EPO))]) REF = "Zone.Operative.Temperature..C..Hourly" # var ID VAR = colnames(EPO[grep(c(REF),names(EPO))]) # find zone op temps for (i in VAR) { # loop over zones ####################################################################################### # ZN = sub(' *\\.Z.*$', '', c(i)) EPO$DT = as.POSIXlt(EPO$Date.Time,format="%m/%d %H:%M:%S") # extract Date.Time EPO$OAT = EPO[,2] # outdoor air temp EPO$IOT = EPO[,c(i)] # indoor air temp EPO$HR = as.numeric(format(EPO$DT, "%H")) # add hour column #EPO = subset(EPO,format(DT,'%H') %in% c('01','01','02', # occupied hours # '03','04','05', # '06','07','08', # '09','18','19', # '20','21','22', # '23')) ####################################################################################### # CIBSE Guide A Criterion GA = data.frame( "IndexName"="CIBSE Guide A criterion", "Type"="Percentage", "Author"="CIBSE", "Year"="2006") g01 <- tableGrob(GA[,c("IndexName","Type","Author","Year")]) EPO$GART = ifelse(EPO$IOT > 28, "Discomfort Hour","Comfort Hour") g02 = ggplotGrob(GUIDEA_scatter(EPO, ZN)) g03 = ggplotGrob(GUIDEA_map(EPO, ZN)) ####################################################################################### # EN 15251 Adaptive Model EPO$RMT = EMA(EPO$OAT,n=1,ratio=0.8) # Exp. weighted running mean of OAT EPO$CT = 0.33*EPO$RMT+18.8 # Comfort temperature EPO$OCT = EPO$IOT-EPO$CT # Offset from comfort temperature EPO$ULIM = EPO$CT+3 # Cat. II upper temperature limits EPO$LLIM = EPO$CT-3 # Cat. II upper temperature limits ####################################################################################### # TM52 Criterion 1 C1 = data.frame( "IndexName"="CIBSE Guide A criterion", "Type"="Percentage", "Author"="CIBSE", "Year"="2006") g04 <- tableGrob(C1[,c("IndexName","Type","Author","Year")]) EPO$TM52C1 = ifelse(EPO$IOT > (EPO$ULIM+1), "Discomfort Hour","Comfort Hour") g05 = ggplotGrob(TM52_C1_scatter(EPO, ZN)) g06 = ggplotGrob(TM52_C1_map(EPO, ZN)) ####################################################################################### # TM52 Criterion 2 g07 = ggplotGrob(TM52_C2_scatter(EPO, ZN)) EPO$BINOCT = ifelse(EPO$IOT > (EPO$CT+10), "+10", ifelse(EPO$IOT < (EPO$CT+10) & EPO$IOT > (EPO$CT+8), "+8", ifelse(EPO$IOT < (EPO$CT+8) & EPO$IOT > (EPO$CT+6), "+6", ifelse(EPO$IOT < (EPO$CT+6) & EPO$IOT > (EPO$CT+4), "+4", ifelse(EPO$IOT < (EPO$CT+4) & EPO$IOT > (EPO$CT+2), "+2", ifelse(EPO$IOT < (EPO$CT+2) & EPO$IOT > (EPO$CT-2), "0", ifelse(EPO$IOT < (EPO$CT-2) & EPO$IOT > (EPO$CT-4), "-2", ifelse(EPO$IOT < (EPO$CT-4) & EPO$IOT > (EPO$CT-6), "-4", ifelse(EPO$IOT < (EPO$CT-6) & EPO$IOT > (EPO$CT-8), "-6", ifelse(EPO$IOT < (EPO$CT-8) & EPO$IOT > (EPO$CT-10),"-8", ifelse(EPO$IOT < (EPO$CT-10), "-10", "X"))))))))))) g08 = ggplotGrob(TM52_C2_map(EPO, ZN)) EPO$YR = strftime(EPO$DT, "%Y") EPO$MO = strftime(EPO$DT, "%m") EPO$DAY = strftime(EPO$DT, "%d") WE = aggregate(OCT ~ MO + YR + DAY, EPO, FUN = sum) WE$DATE <- as.POSIXct(paste(WE$YR, WE$MO, WE$DAY , sep = "-")) g09 = ggplotGrob(TM52_C2_bar(WE, ZN)) #g09 = TM52_C2_tab(EPO, ZN) ####################################################################################### # TM52 Criterion 3 C3 = data.frame( "IndexName"="CIBSE Guide A criterion", "Type"="Percentage", "Author"="CIBSE", "Year"="2006") g10 <- tableGrob(C3[,c("IndexName","Type","Author","Year")]) EPO$TM52C3 = ifelse(EPO$IOT > (EPO$ULIM+4), "Discomfort Hour","Comfort Hour") g11 = ggplotGrob(TM52_C3_scatter(EPO, ZN)) g12 = ggplotGrob(TM52_C3_map(EPO, ZN)) ####################################################################################### # NaOR EPO$P = (exp(0.4734*EPO$OCT-2.607))/(1+(exp(0.4734*EPO$OCT-2.607))) g99 = ggplotGrob(NaOR_map(EPO, ZN)) PDF=paste0(ZN,"results.pdf") pdf(file=PDF,width=8.3, height=11.7) pushViewport(viewport(x = unit(105, "mm"),y = unit(250, "mm"),width = unit(10, "mm",),height = unit(10, "mm"))) grid.rect() grid.draw(g01) upViewport() pushViewport(viewport(x = unit(105, "mm"),y = unit(180, "mm"),width = unit(210, "mm",),height = unit(100, "mm"))) grid.rect() grid.draw(g02) upViewport() pushViewport(viewport(x = unit(105, "mm"),y = unit(60, "mm"),width = unit(210, "mm",),height = unit(100, "mm"))) grid.rect() grid.draw(g03) grid.newpage() pushViewport(viewport(x = unit(105, "mm"),y = unit(250, "mm"),width = unit(10, "mm",),height = unit(10, "mm"))) grid.rect() grid.draw(g04) upViewport() pushViewport(viewport(x = unit(105, "mm"),y = unit(180, "mm"),width = unit(210, "mm",),height = unit(100, "mm"))) grid.rect() grid.draw(g05) upViewport() pushViewport(viewport(x = unit(105, "mm"),y = unit(60, "mm"),width = unit(210, "mm",),height = unit(100, "mm"))) grid.rect() grid.draw(g06) grid.newpage() pushViewport(viewport(x = unit(105, "mm"),y = unit(180, "mm"),width = unit(210, "mm",),height = unit(100, "mm"))) grid.rect() grid.draw(g07) upViewport() pushViewport(viewport(x = unit(105, "mm"),y = unit(180, "mm"),width = unit(210, "mm",),height = unit(100, "mm"))) grid.rect() grid.draw(g08) upViewport() pushViewport(viewport(x = unit(105, "mm"),y = unit(90, "mm"),width = unit(210, "mm",),height = unit(100, "mm"))) grid.rect() grid.draw(g09) grid.newpage() pushViewport(viewport(x = unit(105, "mm"),y = unit(250, "mm"),width = unit(10, "mm",),height = unit(10, "mm"))) grid.rect() grid.draw(g10) upViewport() pushViewport(viewport(x = unit(105, "mm"),y = unit(180, "mm"),width = unit(210, "mm",),height = unit(100, "mm"))) grid.rect() grid.draw(g11) upViewport() pushViewport(viewport(x = unit(105, "mm"),y = unit(60, "mm"),width = unit(210, "mm",),height = unit(100, "mm"))) grid.rect() grid.draw(g12) grid.newpage() pushViewport(viewport(x = unit(105, "mm"),y = unit(250, "mm"),width = unit(210, "mm",),height = unit(100, "mm"))) grid.rect() grid.draw(g99) #pushViewport(viewport(x = unit(, "mm"), y = unit(150, "mm"),width = unit(100, "mm",),height = unit(100, "mm"))) #grid.rect() #grid.show.viewport(viewport(x = unit(50, "mm"), y = unit(50, "mm"),width = unit(100, "mm",),height = unit(100, "mm"))) #grid.arrange(g01,g02,g03,ncol=1,widths = unit(1, "npc"), heights=unit(0.5, "npc"),main=paste0(ZN," - CIBSE Guide A critrion")) #grid.arrange(big,g05,g06,ncol=1,as.table=TRUE,widths = unit(1, "npc"), heights=unit(0.5, "npc"),main=paste0(ZN," - CIBSE TM52 critrion 1")) #grid.arrange(g07,g08,ncol=1,widths = unit(1, "npc"), heights=unit(0.5, "npc")) #grid.arrange(g10,g11,g12,ncol=1,widths = unit(1, "npc"), heights=unit(0.5, "npc"),main=paste0(ZN," - CIBSE TM52 critrion 3")) dev.off() print(paste0("Completed: ", ZN)) } #setTxtProgressBar(txtProgressBar(0,max, style=3), i) #}