#' Read in GDX and calculate capacities, used in convGDX2MIF.R for the reporting
#'
#' Read in capacity information from GDX file, information used in convGDX2MIF.R
#' for the reporting
#'
#'
#' @param gdx a GDX object as created by readGDX, or the path to a gdx
#' @param regionSubsetList a list containing regions to create report variables region
#' aggregations. If NULL (default value) only the global region aggregation "GLO" will
#' be created.
#' @return MAgPIE object - contains the capacity variables
#' @author Lavinia Baumstark, Christoph Bertram
#' @seealso \code{\link{convGDX2MIF}}
#' @examples
#'
#' \dontrun{reportCapacity(gdx)}
#' @importFrom quitte calcCumulatedDiscount
#' @export
#' @importFrom gdx readGDX
#' @importFrom magclass mbind setNames dimSums getSets getSets<- as.magpie
#' @importFrom dplyr %>% filter_ mutate_
reportCapacity <- function(gdx,regionSubsetList=NULL) {
# read sets
teall2rlf <- readGDX(gdx,name=c("te2rlf","teall2rlf"),format="first_found")
possibleRefineries <- c("refped","refdip","refliq")
refineries <- intersect(teall2rlf[,1],possibleRefineries)
ttot <- readGDX(gdx,name="ttot")
# read variables
vm_cap <- readGDX(gdx,name=c("vm_cap"),field="l",format="first_found") * 1000
vm_deltaCap <- readGDX(gdx,name=c("vm_deltaCap"),field="l",format="first_found") * 1000
v_earlyreti <- readGDX(gdx,name=c("vm_capEarlyReti","v_capEarlyReti","v_earlyreti"),field="l",format="first_found")
# data preparation
ttot <- as.numeric(as.vector(ttot))
vm_cap <- vm_cap[teall2rlf]
vm_cap <- vm_cap[,ttot,]
vm_deltaCap <- vm_deltaCap[teall2rlf]
vm_deltaCap <- vm_deltaCap[,ttot,]
v_earlyreti <- v_earlyreti[,ttot,]
t2005 <- ttot[ttot>2004]
# build reporting
tmp1 <- NULL
tmp1 <- mbind(tmp1,setNames(dimSums(vm_cap[,,c("tnrs","fnrs")],dim=3),"Cap|Electricity|Nuclear (GW)"))
tmp1 <- mbind(tmp1,setNames(dimSums(vm_cap[,,c("spv","csp")],dim=3), "Cap|Electricity|Solar (GW)"))
tmp1 <- mbind(tmp1,setNames(dimSums(vm_cap[,,"wind"],dim=3), "Cap|Electricity|Wind (GW)"))
tmp1 <- mbind(tmp1,setNames(dimSums(vm_cap[,,"hydro"],dim=3), "Cap|Electricity|Hydro (GW)"))
tmp1 <- mbind(tmp1,setNames(dimSums(vm_cap[,,"dot"],dim=3), "Cap|Electricity|Oil (GW)"))
tmp1 <- mbind(tmp1,setNames(dimSums(vm_cap[,,c("igcc","pc","coalchp","igccc","pco","pcc")],dim=3),"Cap|Electricity|Coal (GW)"))
tmp1 <- mbind(tmp1,setNames(dimSums(vm_cap[,,c("ngcc","ngt","gaschp","ngccc")],dim=3), "Cap|Electricity|Gas (GW)"))
tmp1 <- mbind(tmp1,setNames(dimSums(vm_cap[,,c("bioigccc","biochp","bioigcc")],dim=3), "Cap|Electricity|Biomass (GW)"))
tmp1 <- mbind(tmp1,setNames(dimSums(vm_cap[,,"geohdr"],dim=3), "Cap|Electricity|Geothermal (GW)"))
if (all(c("h2turbVRE","h2turb") %in% magclass::getNames(vm_cap,dim=1))) {tmp1 <- mbind(tmp1,setNames(dimSums(vm_cap[,,c("h2turb","h2turbVRE")],dim=3), "Cap|Electricity|Hydrogen (GW)")) }
tmp1 <- mbind(tmp1,setNames(dimSums(tmp1,dim=3), "Cap|Electricity (GW)"))
tmp <- NULL
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,"igccc"],dim=3), "Cap|Electricity|Coal|IGCC|w/ CCS (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,"igcc"],dim=3), "Cap|Electricity|Coal|IGCC|w/o CCS (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,c("igccc","pco","pcc")],dim=3),"Cap|Electricity|Coal|w/ CCS (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,"ngccc"],dim=3), "Cap|Electricity|Gas|CC|w/ CCS (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,"ngcc"],dim=3), "Cap|Electricity|Gas|CC|w/o CCS (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,"ngccc"],dim=3), "Cap|Electricity|Gas|w/ CCS (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,c("igcc","pc","coalchp")],dim=3),"Cap|Electricity|Coal|w/o CCS (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,c("ngcc","ngt","gaschp")],dim=3),"Cap|Electricity|Gas|w/o CCS (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,c("bioigccc")],dim=3), "Cap|Electricity|Biomass|w/ CCS (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,c("biochp","bioigcc")],dim=3), "Cap|Electricity|Biomass|w/o CCS (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,"dot"],dim=3), "Cap|Electricity|Oil|w/o CCS (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,"spv"],dim=3), "Cap|Electricity|Solar|PV (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,"csp"],dim=3), "Cap|Electricity|Solar|CSP (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,"wind"],dim=3), "Cap|Electricity|Wind|Onshore (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,"storspv"],dim=3) * 4, "Cap|Electricity|Storage|Battery|For PV (GW)"))
tmp <- mbind(tmp,setNames(dimSums(vm_cap[,,"storwind"],dim=3) * 1.2, "Cap|Electricity|Storage|Battery|For Wind (GW)"))
# Newly built capacities electricity (Should all go into tmp2, so that this can be used for calculating cumulated values in tmp5 below)
tmp2 <- NULL
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("ngcc","ngt","gaschp","ngccc")],dim=3), "New Cap|Electricity|Gas (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("igccc","pco","pcc","igcc","pc","coalchp")],dim=3), "New Cap|Electricity|Coal (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("bioigccc","biochp","bioigcc")],dim=3), "New Cap|Electricity|Biomass (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("geohdr","hydro","spv","csp","wind")],dim=3), "New Cap|Electricity|Non-Biomass Renewables (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("tnrs","fnrs")],dim=3), "New Cap|Electricity|Nuclear (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"dot"],dim=3), "New Cap|Electricity|Oil (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(tmp2,dim=3), "New Cap|Electricity (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"geohdr"],dim=3), "New Cap|Electricity|Geothermal (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"igccc"],dim=3), "New Cap|Electricity|Coal|IGCC|w/ CCS (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"igcc"],dim=3), "New Cap|Electricity|Coal|IGCC|w/o CCS (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"ngccc"],dim=3), "New Cap|Electricity|Gas|CC|w/ CCS (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"ngcc"],dim=3), "New Cap|Electricity|Gas|CC|w/o CCS (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"spv"],dim=3), "New Cap|Electricity|Solar|PV (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"csp"],dim=3), "New Cap|Electricity|Solar|CSP (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"wind"],dim=3), "New Cap|Electricity|Wind (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"hydro"],dim=3), "New Cap|Electricity|Hydro (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"ngccc"],dim=3), "New Cap|Electricity|Gas|w/ CCS (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("ngcc","ngt","gaschp")],dim=3), "New Cap|Electricity|Gas|w/o CCS (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"ngt"],dim=3), "New Cap|Electricity|Gas|CT (GW)"))
if (all(c("h2turbVRE","h2turb") %in% magclass::getNames(vm_cap,dim=1))) {tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("h2turb","h2turbVRE")],dim=3), "New Cap|Electricity|Hydrogen (GW)"))}
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("igccc","pco","pcc")],dim=3), "New Cap|Electricity|Coal|w/ CCS (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("igcc","pc","coalchp")],dim=3), "New Cap|Electricity|Coal|w/o CCS (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"bioigccc"],dim=3), "New Cap|Electricity|Biomass|w/ CCS (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("biochp","bioigcc")],dim=3), "New Cap|Electricity|Biomass|w/o CCS (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("spv","csp")],dim=3), "New Cap|Electricity|Solar (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"wind"],dim=3), "New Cap|Electricity|Wind|Onshore (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"storspv"],dim=3) * 4, "New Cap|Electricity|Storage|Battery|For PV (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"storwind"],dim=3) * 1.2, "New Cap|Electricity|Storage|Battery|For Wind (GW)"))
# Newly built capacities hydrogen
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("bioh2c","bioh2")],dim=3), "New Cap|Hydrogen|Biomass (GW)"))
if (all(c("elh2VRE","elh2") %in% magclass::getNames(vm_cap,dim=1))) {tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("elh2","elh2VRE")],dim=3), "New Cap|Hydrogen|Electricity (GW)"))}
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("gash2c","coalh2c","gash2","coalh2")],dim=3), "New Cap|Hydrogen|Fossil (GW)"))
if (all(c("elh2VRE","elh2") %in% magclass::getNames(vm_cap,dim=1))) {tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("bioh2c","bioh2","elh2","elh2VRE","gash2c","coalh2c","gash2","coalh2")],dim=3),"New Cap|Hydrogen (GW)"))}
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"bioh2c"],dim=3), "New Cap|Hydrogen|Biomass|w/ CCS (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,"bioh2"],dim=3), "New Cap|Hydrogen|Biomass|w/o CCS (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("gash2c","coalh2c")],dim=3), "New Cap|Hydrogen|Fossil|w/ CCS (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("gash2","coalh2")],dim=3), "New Cap|Hydrogen|Fossil|w/o CCS (GW)"))
# Newly built capacities liquids
if ("MeOH" %in% getNames(vm_deltaCap, dim=1)) {
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c(refineries,"coalftrec","coalftcrec","bioftrec","bioftcrec","biodiesel","bioeths","bioethl","MeOH")],dim=3),
"New Cap|Liquids (GW)"))
tmp2 <- mbind(tmp2, setNames(dimSums(vm_deltaCap[,,c(refineries,"coalftrec","coalftcrec")],dim=3),
"New Cap|Liquids|Fossil (GW)"))
tmp2 <- mbind(tmp2, setNames(dimSums(vm_deltaCap[,,c("bioftrec","bioftcrec","biodiesel","bioeths","bioethl")],dim=3),
"New Cap|Liquids|Biomass (GW)"))
tmp2 <- mbind(tmp2, setNames(dimSums(vm_deltaCap[,,c("MeOH")],dim=3),
"New Cap|Liquids|Hydrogen (GW)"))
} else {
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c(refineries,"coalftrec","coalftcrec","bioftrec","bioftcrec","biodiesel","bioeths","bioethl")],dim=3),
"New Cap|Liquids (GW)"))
}
# Newly built capacities gases
if ("h22ch4" %in% getNames(vm_deltaCap, dim=1)) {
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("gastr","coalgas","biogas","h22ch4")],dim=3),
"New Cap|Gases (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("gastr","coalgas")],dim=3),
"New Cap|Gases|Fossil (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("biogas")],dim=3),
"New Cap|Gases|Biomass (GW)"))
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("h22ch4")],dim=3),
"New Cap|Gases|Hydrogen (GW)"))
} else {
tmp2 <- mbind(tmp2,setNames(dimSums(vm_deltaCap[,,c("gastr","coalgas","biogas")],dim=3),
"New Cap|Gases (GW)"))
}
# add terms calculated from previously calculated capacity values
tmp_aux <- NULL
tmp_aux <- mbind(tmp_aux,setNames(dimSums(tmp[,,c("Cap|Electricity|Storage|Battery|For PV (GW)","Cap|Electricity|Storage|Battery|For Wind (GW)")],dim=3), "Cap|Electricity|Storage|Battery (GW)"))
tmp <- mbind(tmp,tmp_aux)
tmp_aux <- NULL
names_capacities = c("Cap|Electricity|Gas (GW)",
"Cap|Electricity|Nuclear (GW)",
"Cap|Electricity|Coal (GW)",
"Cap|Electricity|Biomass (GW)",
"Cap|Electricity|Hydrogen (GW)",
"Cap|Electricity|Geothermal (GW)",
"Cap|Electricity|Oil (GW)")
names_capacities = intersect(names_capacities,getNames(tmp1))
tmp_aux <- mbind(tmp_aux,setNames(dimSums(tmp1[,,names_capacities],dim=3) + 0.6 * tmp1[,,"Cap|Electricity|Hydro (GW)"] + tmp[,,"Cap|Electricity|Storage|Battery (GW)"],
"Cap|Electricity|Estimated firm capacity counting hydro at 0p6 (GW)"))
tmp1 <- mbind(tmp1,tmp_aux)
tmp_aux <- NULL
tmp_aux <- mbind(tmp_aux,setNames(dimSums(tmp2[,,c("New Cap|Electricity|Storage|Battery|For PV (GW)","New Cap|Electricity|Storage|Battery|For Wind (GW)")],dim=3), "New Cap|Electricity|Storage|Battery (GW)"))
tmp2 <- mbind(tmp2,tmp_aux)
# Idle capacities and Total (sum of operating and idle)
tmp4 <- NULL
tmp4 <- mbind(tmp4,setNames(dimSums(vm_cap[,,"igcc"],dim=3)*v_earlyreti[,,"igcc"]/(1-v_earlyreti[,,"igcc"])+
dimSums(vm_cap[,,"coalchp"],dim=3)*v_earlyreti[,,"coalchp"]/(1-v_earlyreti[,,"coalchp"])+
dimSums(vm_cap[,,"pc"],dim=3)*v_earlyreti[,,"pc"]/(1-v_earlyreti[,,"pc"]),
"Idle Cap|Electricity|Coal|w/o CCS (GW)"))
tmp4 <- mbind(tmp4,setNames(dimSums(vm_cap[,,"ngcc"],dim=3)*v_earlyreti[,,"ngcc"]/(1-v_earlyreti[,,"ngcc"])+
dimSums(vm_cap[,,"gaschp"],dim=3)*v_earlyreti[,,"gaschp"]/(1-v_earlyreti[,,"gaschp"])+
dimSums(vm_cap[,,"ngt"],dim=3)*v_earlyreti[,,"ngt"]/(1-v_earlyreti[,,"ngt"]),
"Idle Cap|Electricity|Gas|w/o CCS (GW)"))
tmp4 <- mbind(tmp4,setNames(dimSums(vm_cap[,,"dot"],dim=3)*v_earlyreti[,,"dot"]/(1-v_earlyreti[,,"dot"]),
"Idle Cap|Electricity|Oil|w/o CCS (GW)"))
tmp4 <- mbind(tmp4,setNames(tmp4[,,"Idle Cap|Electricity|Coal|w/o CCS (GW)"]+tmp[,,"Cap|Electricity|Coal|w/o CCS (GW)"],
"Total Cap|Electricity|Coal|w/o CCS (GW)"))
tmp4 <- mbind(tmp4,setNames(tmp4[,,"Idle Cap|Electricity|Gas|w/o CCS (GW)"]+tmp[,,"Cap|Electricity|Gas|w/o CCS (GW)"],
"Total Cap|Electricity|Gas|w/o CCS (GW)"))
#Cumulate things on extensive time set
tmp <- mbind(tmp,tmp1,tmp2,tmp4)
# Cumulative capacities = cumulating new capacities, starting with 0 in 2005
tmp6 <- tmp2[,t2005,]
getSets(tmp6)[3] <- "variable"
tmp6 <- quitte::as.quitte(tmp6)
mylist <- lapply(levels(tmp6$variable), function(x) {
calcCumulatedDiscount(data = tmp6 %>%
filter_(~variable == x) ,
nameVar = x,
discount = 0.0) %>%
mutate_(variable = ~gsub("New",replacement="Cumulative",x))
})
tmp6 <- do.call('rbind', mylist)
tmp6 <- as.magpie(quitte::as.quitte(tmp6))
magclass::getNames(tmp6) <- paste0(magclass::getNames(tmp6)," (GW)")
tmp <- mbind(tmp[,t2005,],tmp6)
# add global values
tmp <- mbind(tmp,dimSums(tmp,dim=1))
# add other region aggregations
if (!is.null(regionSubsetList))
tmp <- mbind(tmp, calc_regionSubset_sums(tmp, regionSubsetList))
return(tmp)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.