Building model: Difference between revisions
Jump to navigation
Jump to search
(parts of model moved to Energy use of buildings, Emission factors for burning processes, and Intake fractions of PM) |
(→Calculations: new building model without timepoints. Does not go to negative.) |
||
Line 63: | Line 63: | ||
===Calculations=== | ===Calculations=== | ||
<rcode name=' | <rcode name='buildingstest' label='Initiate buildings (only for developers)' embed=1 store=1> | ||
### This code is Op_en6289/ | ### This code is Op_en6289/buildingstest on page [[Building model]]. | ||
library(OpasnetUtils) | library(OpasnetUtils) | ||
Line 73: | Line 73: | ||
dependencies = data.frame(Name = c( | dependencies = data.frame(Name = c( | ||
"stockBuildings", | "stockBuildings", | ||
"changeBuildings", | "changeBuildings", | ||
"heatingShares", # This can be indexed by building year (Time) or Observation year (Obsyear) | |||
"efficiencyShares", # Same here | |||
"renovationShares", | "renovationShares", | ||
"renovationRate | "renovationRate", # Fraction of buildings renovated between timepoints | ||
"obstime" # In the new version obstime is ovariable with column Obsyear. | |||
" | |||
)), | )), | ||
formula = function(...) { | formula = function(...) { | ||
stock <- stockBuildings * obstime * heatingShares * efficiencyShares | |||
# | stock2 <- changeBuildings * obstime # Must contain data about heatings and efficiencies | ||
# | stock2@output$Time <- as.factor(stock2@output$Time) # Also stock@output$Time is factor | ||
buil <- combine(stock, stock2) # Buildings in the whole timeline | |||
buil <- unkeep(buil, sources = TRUE) | |||
buil@output$Age <- as.numeric(as.character(buil@output$Obsyear)) - as.numeric(as.character(buil@output$Time)) | |||
buil@marginal <- c(buil@marginal, TRUE) | |||
buil@output <- buil@output[buil@output$Age >= 0 , ] | |||
# Note that if stockBuildings and changeBuildings have different marginals (typically policies), | |||
# there will be NA in these indices. This will be corrected below. | |||
for(i in colnames(buil@output)[buil@marginal]) { | |||
if(any(is.na(buil@output[[i]]))) { | |||
buil@output <- fillna(buil@output, i) | |||
print(paste("Column", i, "treated with fillna.")) | |||
} | |||
} | |||
renovate <- (1 - renovationRate) * (1 - renovationShares) # Assumes that data has row for Renovation: None = 0 | |||
renovate@output <- renovate@output[renovate@output$Renovation == "None" , ] | |||
renovate <- combine(renovate, renovationRate * renovationShares) | |||
out <- data.frame() | |||
prevreno <- unkeep(buil * renovate * 0, sources = TRUE) # Previously renovated buildings for the first time point | |||
prevreno@output <- prevreno@output[prevreno@output$Renovation != "None" , ][1,] # Just take one renovated example row | |||
marginals <- colnames(prevreno@output)[prevreno@marginal] | |||
# | for(i in obstime@output$Obsyear) { # Accumulate the building stock | ||
# Take the building stock | |||
temp <- buil | |||
temp@output <- temp@output[temp@output$Obsyear == i , ] # Take buildings of year i | |||
prevreno@output$Obsyear <- i # update the observation year of the previous renovation | |||
# Subtrack from the building stock buildings that are already renovated. | |||
temp <- combine(temp, -1 * oapply(prevreno, cols = "Renovation", FUN = sum)) # Subtract previously renovated | |||
reno <- unkeep(temp * renovate, sources = TRUE) # Renovate the current non-renovated stock | |||
# If renovate does not match with this timepoint, mark all buildings here as unrenovated. | |||
# Is there new renovation in this time point? | |||
if(sum(result(reno)) == 0) { | |||
reno <- temp * Ovariable( | |||
output = data.frame(Renovation = "None", Result = 1), | output = data.frame(Renovation = "None", Result = 1), | ||
marginal = c(TRUE, FALSE) | marginal = c(TRUE, FALSE) | ||
) | ) | ||
} | } | ||
newreno <- combine(prevreno, reno) # Renovated buildings in this time point. | |||
# Take the previous timepoints, and previously renovated and now possibly renovated together. | |||
out <- rbind(newreno@output, out) # Add previously and now renovated together | |||
prevreno <- unkeep(newreno, sources = TRUE) | |||
prevreno@output <- prevreno@output[prevreno@output$Renovation != "None" , ] | |||
} | } | ||
out <- Ovariable(output = out, marginal = colnames(out) %in% marginals) | |||
out <- oapply(unkeep(out, sources = TRUE), cols = c("Age", "Time"), FUN = sum) | |||
colnames(out@output)[colnames(out@output) == "Obsyear"] <- "Time" # From now on, Time means the time of observation | |||
out@output$Time <- as.numeric(as.character(out@output$Time)) | |||
return(out) | return(out) | ||
} | } |
Revision as of 14:59, 14 July 2015
Moderator:Jouni (see all) |
|
Upload data
|
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 examples of model use, see Building stock in Kuopio and Climate change policies and health in Kuopio.
The model uses the following ovariables and their inputs:
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle buildings = (stockBuildings + changeBuildings) * heatingShares * efficiencyShares * renovationShares * renovationRate}
Ovariable | Dependencies | Measure | Indices | Missing data |
---|---|---|---|---|
buildings (from the model) | stockBuildings (case-specific data from the user) e.g. Building stock in Kuopio | Amount of building stock (typically in floor-m2) at given timepoints. | Required indices: Time (time the building was built. If not known, present year can be used for all buildings.) Typical indices: City_area, Building (building type) | You must give either stockBuildings, heatingShares, and efficiencyShares or changeBuildings or both. For missing data, use 0. |
heatingShares (case-specific data from the user) | Fractions of heating types. Should sum up to 1 within each group defined by optional indices. | Required indices: Heating. Typical indices: Time, Building | If no data, use 1 as a placeholder. | |
efficiencyShares (case-specific data from the user) | Fraction of energy efficiency types. Should sum up to 1 for each group defined by other indices. | Required indices: Efficiency. Typical indices: Time, Building. | If no data, use 1 as default. | |
changeBuildings (case-specific data from the user) | Construction or demolition rate as floor-m2 at given timepoints. | Required indices: Time, Efficiency, Heating. If both stockBuildings and changeBuildings are used, changeBuildings should have all indices in stockBuildings, heatingShares, and efficiencyShares. Typical indices: Building, City_area. | If the data is only in stockBuildings, use 0 here. | |
renovationShares (case-specific data from the user) | Fraction of renovation types when renovation is done. Should sum to 1 for each group defined by other indices. | Required indices: Renovation, Startyear. Startyear is the time when the renovation is done, and it must be different than the Time index. Typical indices: | If no data, use 1 as default. | |
renovationRate (case-specific data from user. You can also use fairly generic data from Building stock in Kuopio.) | Rate of renovation (fraction per time unit). | Required indices: Age (the time difference between construction and renovation, i.e. Startyear - Time for each building). | ||
obstime (assessment-specific years of interest) | one-column data.frame about the years to be used in output. The column name must be the same as the index name in RenovationShares (typically Startyear). E.g. Climate change policies and health in Kuopio |
Rationale
Calculations
Dependencies
- Exposure to PM2.5 in Finland
- OpasnetUtils/Drafts
- Energy use of buildings
- Building stock in Kuopio
- Intake fractions of PM
See also
- Building stock in Kuopio
- Building stock in Europe
- Building data availability in Kuopio
- Energy balance
- Greenhouse gas emissions in Kuopio
- heande:File:2013 10 29 - Exposure-Response Functions.xlsx
- heande:Health impact assessment framework
- heande:File:2013 10 29 WP6.2 Agreed ER.doc
- heande:Urgenche: Workpackage Exposure, Health, and Well-being
- heande:File:WP6 Deliverable 6 1.doc
- Land use in Kuopio
- City and energy solutions from Siemens:
References
- Sundell, J., Levin, H., Nazaroff, W. W., Cain, W. S., Fisk, W. J., Grimsrud, D. T., Gyntelberg, F., Li, Y., Persily, A. K., Pickering, A. C., Samet, J. M., Spengler, J. D., Taylor, S. T., Weschler, C. J., Ventilation rates and health: multidisciplinary review of the scientific literature. INDOOR AIR 21 (2011) 3: 191 - 204. doi:10.1111/j.1600-0668.2010.00703.x ISSN 0905-6947
- Brightman, H. S., Milton, D. K., Wypij, D., Burge, H. A., Spengler, J. D. Evaluating building-related symptoms using the US EPA BASE study results. INDOOR AIR 18 (2008) 4: 335-345. doi:10.1111/j.1600-0668.2008.00557.x
- Nishioka, Y, Levy, JI, Norris, GA, Bennett, DH, Spengler, JD. A risk-based approach to health impact assessment for input-output analysis - Part 2: Case study of insulation. INTERNATIONAL JOURNAL OF LIFE CYCLE ASSESSMENT 10 (2005) 4: 255-262. doi:10.1065/lca2004.10.186.2 ISSN 0948-3349
- Samet, JM, Spengler, JD. Indoor environments and health: Moving into the 21st century. AMERICAN JOURNAL OF PUBLIC HEALTH 93 (2003) 9: 1489-1493. 10.2105/AJPH.93.9.1489 doi:DI 10.2105/AJPH.93.9.1489 ISSN 0090-0036
- Nishioka, Y, Levy, JI, Norris, GA, Wilson, A, Hofstetter, P, Spengler, JD. Integrating risk assessment and life cycle assessment: A case study of insulation RISK ANALYSIS 22 (2002) 5: 1003-1017. doi:10.1111/1539-6924.00266 ISSN 0272-4332