Building model: Difference between revisions

From Opasnet
Jump to navigation Jump to search
(→‎Calculations: renovate function added within buildings)
Line 106: Line 106:
# cb <- stockBuildings - cb
# cb <- stockBuildings - cb
# cb@output <- orbind(cb, subset(stockBuildings@output, Time = years[1])) # First year
# cb@output <- orbind(cb, subset(stockBuildings@output, Time = years[1])) # First year
######## This function applies renovations to the building stock and then follows it in time.


cb <- stockBuildings * heatingShares * efficiencyShares
renovate <- function(
renoStock, # building stock to be renovated
# Add buildings from stock and buildings from construction data
renovationShares, # shares of different renovations (see Answer)
renovationRate, # renovation rate (see Answer)
obstime # observation times (see Answer)
) {
reno <- renoStock * renovationShares
marginals <- colnames(reno@output)[reno@marginal]
reno@output$Age <- as.numeric(as.character(reno@output$Startyear)) - # Startyear is the time of renovation
as.numeric(as.character(reno@output$Time)) # Time is the time of construction
reno@marginal <- colnames(reno@output) %in% marginals
 
reno <- reno * renovationRate # continuousOps(reno, renovationRate, '*') FIX continuousOps before using
reno <- oapply(reno, cols = c("Age", "Time"), FUN = sum)
 
out <- reno * -1 # Equal amount stops being non-renovated.
out@output$Renovation <- "None"
out <- orbind2(out, reno, use_fillna = TRUE) # Renovated buildings
colnames(renoStock@output)[colnames(renoStock@output) == "Time"] <- "Startyear"
out <- orbind2(
out,
renoStock * Ovariable( # Add non-renovated buildings
output = data.frame(Renovation = "None", Result = 1),
marginal = c(TRUE, FALSE),
use_fillna = TRUE
)
)
######## NA in indices will ruin timepoints. Therefore must do fillna but with warning.
 
b <- character()
for(i in colnames(out@output)[out@marginal]) {if(any(is.na(out@output[[i]]))) b <- c(b, i)}
if(length(b) > 0) {
out@output <- fillna(out@output, b)
warning("Missing values had to be filled for timepoints by function fillna in indices: ", b, "\n")
}


cb <- orbind2(cb, changeBuildings, use_fillna = TRUE)
out <- timepoints(out, obstime) # Accumulate over observation time.


return(out)
########### Renovations of existing buildings. # Combine with (continuous) index Age.
}


reno <- cb * renovationShares
########### Renovations of existing buildings. Heating and efficiency are applied afterwards,
marginals <- colnames(reno@output)[reno@marginal]
# so that they may change in the existing stock.
reno@output$Age <- as.numeric(as.character(reno@output$Startyear)) - # Startyear is the time of renovation
as.numeric(as.character(reno@output$Time)) # Time is the time of construction
reno@marginal <- colnames(reno@output) %in% marginals


reno <- reno * renovationRate # continuousOps(reno, renovationRate, '*') FIX continuousOps before using
stock <- renovate(stockBuildings, renovationShares, renovationRate, obstime)
reno <- oapply(reno, cols = c("Age", "Time"), FUN = sum)


out <- reno * -1 # Equal amount stops being non-renovated.
stock <- stock * heatingShares * efficiencyShares
out@output$Renovation <- "None"
out <- orbind2(out, reno) # Renovated buildings
colnames(cb@output)[colnames(cb@output) == "Time"] <- "Startyear"
out <- orbind2(
out,
cb * Ovariable( # Add non-renovated buildings
output = data.frame(Renovation = "None", Result = 1),
marginal = c(TRUE, FALSE),
use_fillna = TRUE
)
)


######## NA in indices will ruin timepoints. Therefore must do fillna but with warning.
########### Renovations of constructed buildings. These must contain the heating and efficiency
# data, and those cannot be changed afterwards.


b <- character()
change <- renovate(changeBuildings, renovationShares, renovationRate, obstime)
for(i in colnames(out@output)[out@marginal]) {if(any(is.na(out@output[[i]]))) b <- c(b, i)}
if(length(b) > 0) {
# Add buildings from stock and buildings from construction data
out@output <- fillna(out@output, b)
warning("Missing values had to be filled for timepoints by function fillna in indices: ", b, "\n")
}


out <- timepoints(out, obstime) # Accumulate over observation time.
out <- orbind2(
stock,  
change,
use_fillna = TRUE,
warn = "This should NOT happen: stock and change don't match when evaluating buildings"
)


return(out)
return(out)

Revision as of 05:04, 19 February 2015



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:

  • buildings (from the model):
    • stockBuildings (case-specific data from the user) e.g. Building stock in Kuopio
      • Measure: Amount of building stock (typically in floor-m2) at given timepoints.
      • Indices: 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)
      • Missing: You must give either stockBuildings, heatingShares, and efficiencyShares or changeBuildings or both. For missing data, use 0.
    • heatingShares (case-specific data from the user)
      • Measures: Fractions of heating types. Should sum up to 1 within each group defined by optional indices.
      • Indices: Required indices: Heating. Typical indices: Time, Building
      • Missing: If no data, use 1 as a placeholder.
    • efficiencyShares (case-specific data from the user)
      • Measure: Fraction of energy efficiency types. Should sum up to 1 for each group defined by other indices.
      • Indices: Required indices: Efficiency. Typical indices: Time, Building.
      • Missing: If no data, use 1 as default.
    • changeBuildings (case-specific data from the user)
      • Measure: Construction or demolition rate as floor-m2 at given timepoints.
      • Indices: 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.
      • Missing: If the data is only in stockBuildings, use 0 here.
    • renovationShares (case-specific data from the user)
      • Measure: Fraction of renovation types when renovation is done. Should sum to 1 for each group defined by other indices.
      • 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 Buildging stock in Kuopio.)
      • Measure: Rate of renovation (fraction per time unit).
      • Indices: Required indices: Age (the time difference between construction and renovation, i.e. Startyear - Time for each building). Typical indices:
    • obstime (assessment-specific years of interest)
  • heatingEnergy (from the model):
    • buildings (from the model; see above).
    • energyUse (fairly generic data for a cultural and climatic area, e.g. from Energy use of buildings)
      • Measure: Energy consumption per floor area (kWh / m2 /a)
      • Indices: Required indices: - . Typical indices: Building, Heating.
      • Missing: if this data is missing, you can only calculate building stock but nothing further.
    • efficiencyRatio (fairly generic data for a cultural and climatic area, e.g. from Energy use of buildings)
      • Measure: Relative energy consumption compared with the efficiency group Old.
      • Indices: Required indices: Efficiency. Typical indices: Time, Building.
      • Missing: If no data, use 1 as default.
    • renovationRatio (fairly generic data for a cultural and climatic area, e.g. from Energy use of buildings)
      • Measure: Relative energy consumption compared with the Renovation location None.
      • Indices: Required indices: Renovation. Typical indices: Building.
      • Missing: If no data, use 1 as default.
  • emissions (from the model) (emissions in mass per time):
    • heatingEnergy (from the model; see above)
    • fuelTypes SHOULD BE fuelShares? (fairly generic knowledge from e.g. Energy production in Kuopio####
      • Measure: Tells how much of fuel is used for a certain neating energy need.
      • Indices: Required indices: Fuel_type. Typical indices:
    • emissionFactors (generic information, but may be cultural differences. E.g. Emission factors for burning processes ##
      • Measure: emissions per unit of energy produced (g / J or similar unit)
      • Indices: Required indices: Exposure_agent. Typical indices: Emission_height.
  • exposure (from the model) is in ug/m3 in ambient air average concentration:
    • emissions (from the model; see above) is in ton /a
      • Indices: Required indices: - . Typical indices: Time, City_area, Exposure_agent, Emission_height.
    • iF (generic data but depends on population density, emission height etc)
      • Measure: conc (g /m3) * pop (#) * BR (m3 /s) / emis (g /s) <=> conc = emis * iF / BR / pop # conc is the exposure
      • Indices: Required indices: Typical indices:
    • pop
      • Measure: Amount of population exposed.
      • Indices: Required indices: - . Typical indices: Time, Area

Rationale

Causal diagram of the building model.

Calculations

+ Show code

Dependencies

See also

Urgenche research project 2011 - 2014: city-level climate change mitigation
Urgenche pages

Urgenche main page · Category:Urgenche · Urgenche project page (password-protected)

Relevant data
Building stock data in Urgenche‎ · Building regulations in Finland · Concentration-response to PM2.5 · Emission factors for burning processes · ERF of indoor dampness on respiratory health effects · ERF of several environmental pollutions · General criteria for land use · Indoor environment quality (IEQ) factors · Intake fractions of PM · Land use in Urgenche · Land use and boundary in Urgenche · Energy use of buildings

Relevant methods
Building model · Energy balance · Health impact assessment · Opasnet map · Help:Drawing graphs · OpasnetUtils‎ · Recommended R functions‎ · Using summary tables‎

City Kuopio
Climate change policies and health in Kuopio (assessment) · Climate change policies in Kuopio (plausible city-level climate policies) · Health impacts of energy consumption in Kuopio · Building stock in Kuopio · Cost curves for energy (prioritization of options) · Energy balance in Kuopio (energy data) · Energy consumption and GHG emissions in Kuopio by sector · Energy consumption classes (categorisation) · Energy consumption of heating of buildings in Kuopio · Energy transformations (energy production and use processes) · Fuels used by Haapaniemi energy plant · Greenhouse gas emissions in Kuopio · Haapaniemi energy plant in Kuopio · Land use in Kuopio · Building data availability in Kuopio · Password-protected pages: File:Heat use in Kuopio.csv · Kuopio housing

City Basel
Buildings in Basel (password-protected)

Energy balances
Energy balance in Basel · Energy balance in Kuopio · Energy balance in Stuttgart · Energy balance in Suzhou


References