Building model: Difference between revisions
Jump to navigation
Jump to search
m (→Calculations) |
(→Calculations: improved code) |
||
Line 31: | Line 31: | ||
"renovationShares", # Fraction of renovation type when renovation is done. | "renovationShares", # Fraction of renovation type when renovation is done. | ||
"renovation", # Percentage of renovations per year | "renovation", # Percentage of renovations per year | ||
"eventyear" # A dummy variable to combine time periods to numerical time axis. | "eventyear", # A dummy variable to combine time periods to numerical time axis. | ||
"obsyear" # Years for which observations are calculated. This requires timepoints function. | |||
)), | )), | ||
formula = function(...) { | formula = function(...) { | ||
Line 40: | Line 41: | ||
New <- construction * 10 * efficienciesNew * buildingTypes * heatingSharesNew * eventyear | New <- construction * 10 * efficienciesNew * buildingTypes * heatingSharesNew * eventyear | ||
temp1 <- EvalOutput(Ovariable("temp1", data = orbind(Now, New))) # All construction | |||
temp1 <- unkeep(temp1, cols = "Building2", sources = TRUE, prevresults = TRUE) | |||
# All source indices can be unkept, because each has only one location. | # All source indices can be unkept, because each has only one location. | ||
Line 49: | Line 50: | ||
Result = 1 | Result = 1 | ||
)) | )) | ||
reno <- temp1 * renovationyear # reno is the building stock repeated for every potential renovation decade. | |||
reno@output$Age <- reno@output$Renovationyear - reno@output$Eventyear | |||
# Floor area of renovations in ten years. Combine with continuous index Age. | # Floor area of renovations in ten years. Combine with continuous index Age. | ||
reno <- continuousOps(reno, renovation, '*') * renovationShares * 10 | |||
temp2 <- orbind(temp1 * 1, reno * -1) # Equal amount stops being non-renovated. | |||
temp2$Renovation <- "None" | |||
temp2 <- orbind(temp2, reno) # Temp2: Construction + renovation in data.frame | |||
temp2$Renovation <- as.factor(temp2$Renovation) | |||
temp3 <- EvalOutput(Ovariable("buildings", data = temp2)) # Temp3: Like Temp2 but ovariable | |||
temp3 <- unkeep(temp3, sources = TRUE, prevresults = TRUE) | |||
temp3@output <- fillna(temp3@output, marginals = colnames(temp3@output)[temp3@marginal]) | |||
# temp4: Drop redundant time indices | |||
temp4 <- CollapseMarginal(temp3, cols = c("Constructed", "Renovationyear", "Age"), FUN = "sum") | |||
temp4@output$Eventyear <- as.numeric(levels(temp4@output$Eventyear)[temp4@output$Eventyear]) | |||
# tapply (and therefore oapply) changes continuous indices to factors! Must change back by hand. | # tapply (and therefore oapply) changes continuous indices to factors! Must change back by hand. | ||
colnames( | colnames(temp4@output)[colnames(temp4@output) == "City area"] <- "City.area" | ||
temp4@output <- temp4@output[!is.na(result(temp4)) , ] | |||
# Calculate cumulative events at timepoints defined by obsyear. | |||
out <- timepoints(temp4, obsyear = obsyear) | |||
return(out) | return(out) | ||
} | } | ||
Line 99: | Line 98: | ||
# X must be an ovariable with index Eventyear. | # X must be an ovariable with index Eventyear. | ||
# obsyear must be a vector of years. | # obsyear must be a vector of years. | ||
out <- data.frame() | out <- data.frame() | ||
Line 109: | Line 109: | ||
X@output <- out | X@output <- out | ||
X@marginal <- c(TRUE, X@marginal) # Add Year to marginal | X@marginal <- c(TRUE, X@marginal) # Add Year to marginal | ||
X <- CollapseMarginal(X, cols = "Eventyear", FUN = "sum") | |||
X@output <- X@output[!is.na(result(X)) , ] | |||
return(X) | return(X) | ||
} | } |
Revision as of 11:31, 12 February 2014
[show] |
---|
Question
How to estimate the size of the building stock of a city, including heating properties, renovations etc? The situation is followed over time, and different policies can be implemented.
Answer
For an example, see Baseline building stock.
Rationale
Calculations
See also