R/reportCrossVariables.R

Defines functions reportCrossVariables

Documented in reportCrossVariables

#' Read in GDX and calculate variables that need variables produced by other report*.R functions, used in convGDX2MIF.R for the
#' reporting
#' 
#' Read in GDX and calculate variables that need variables produced by other report*.R functions
#' 
#' 
#' @param gdx a GDX as created by readGDX, or the file name of a gdx
#' @param output a magpie object containing all needed variables generated by other report*.R functions
#' @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.
#' @author Lavinia Baumstark
#' @examples
#' 
#' \dontrun{reportCrossVariables(gdx)}
#' 
#' @export
#' @importFrom gdx readGDX
#' @importFrom magclass getYears getRegions mbind setNames dimSums mselect new.magpie setYears
reportCrossVariables <- function(gdx,output=NULL,regionSubsetList=NULL){
  if(is.null(output)){
    stop("please provide a file containing all needed information")
  }

  module2realisation <- readGDX(gdx, "module2realisation", react = "silent")
  tran_mod = module2realisation[module2realisation$modules == "transport", 2]
  
  ####### conversion factors ##########
  TWa_2_EJ     <- 31.536
  tdptwyr2dpgj <- 31.71   #TerraDollar per TWyear to Dollar per GJ
  ####### read in needed data #########
  ## sets
  pe2se    <- readGDX(gdx,"pe2se")
  ppfen_stat   <- readGDX(gdx,c("ppfen_stationary_dyn38","ppfen_stationary_dyn28","ppfen_stationary"),format="first_found", react = "silent")
  sety           <- readGDX(gdx,c("entySe","sety"),types="sets",format="first_found", react = "silent")
  if (length(ppfen_stat) == 0) ppfen_stat = NULL
  ## parameter
  pm_ts          <- readGDX(gdx,name='pm_ts',format="first_found",restore_zeros=FALSE)
  pm_ttot_val    <- readGDX(gdx,name='pm_ttot_val',format="first_found",restore_zeros=FALSE)
  p_ef_dem       <- readGDX(gdx, "p_ef_dem")
  ## equations
  sebal.m        <- readGDX(gdx,name=c("q_balSe","q_sebal"),types="equations",field="m",format="first_found")
  budget.m       <- readGDX(gdx,name='qm_budget',types = "equations",field = "m",format = "first_found") # Alternative: calcPrice
  demPE  <- readGDX(gdx,name=c("vm_demPe","v_pedem"),field="l",restore_zeros=FALSE,format="first_found") * TWa_2_EJ
  demPE  <- demPE[pe2se]
  ####### calculate minimal temporal and regional resolution #####
  y <- Reduce(intersect,list(getYears(output),getYears(sebal.m)))
  r <- Reduce(intersect,list(getRegions(output),getRegions(sebal.m)))
  output   <- output[,y,]
  budget.m <- budget.m[,y,]
  sebal.m  <- sebal.m[,y,]
  pm_ts    <- pm_ts[,y,]
  ####### internal function for cumulated values ############
  cumulatedValue <- function(var,i_pm_ts=pm_ts){
    ts <- i_pm_ts[,getYears(var),]
    tmp <- new.magpie(getRegions(var),getYears(var),magclass::getNames(var),fill=0)
    for( t in 2:length(getYears(var))){
      tmp[,t,] <-  setYears(
        dimSums(var[,which(getYears(var) < getYears(var)[t]),] * ts[,which(getYears(var) < getYears(var)[t]),],dim=2)
        - setYears(var[,2005,] * ts[,2005,], NULL) / 2   # half of 2005 time step
        + setYears(var[,t   ,] * ts[,t   ,], NULL) / 2   # half of last time step
        , NULL)
    }
    return(tmp)
  }
  ####### calculate reporting parameters ############
  tmp <- NULL 
  #"light fuel oil" is output of refineries, thus the price should include refinery costs => use sebal, not pebal, use average of sepet and sedie price.
  if ("seliq" %in% pe2se$all_enty1) {
    tmp <- mbind(tmp,setNames(sebal.m[,,"seliq"]/(budget.m+1e-10) * tdptwyr2dpgj,  "Price|Light Fuel Oil|Secondary Level (US$2005/GJ)" ))    
  } else if ("sepet" %in% sety) {
    tmp <- mbind(tmp,setNames(
      ( sebal.m[,,"sepet"] * output[r,,"SE|Liquids|sepet (EJ/yr)"]  + sebal.m[,,"sedie"] * output[r,,"SE|Liquids|sedie (EJ/yr)"])
      / ( output[r,,"SE|Liquids|sepet (EJ/yr)"] + output[r,,"SE|Liquids|sedie (EJ/yr)"])
      / (budget.m / pm_ts + 1e-10) * tdptwyr2dpgj,           "Price|Light Fuel Oil|Secondary Level (US$2005/GJ)" ))
  } else {
    tmp <- mbind(tmp,setNames(
      dimSums( sebal.m[,,"seliqbio"] * output[r,,"SE|Liquids|Biomass (EJ/yr)"]  + sebal.m[,,"seliqfos"] * output[r,,"SE|Liquids|Fossil (EJ/yr)"])
      / dimSums( output[r,,"SE|Liquids|Biomass (EJ/yr)"] + output[r,,"SE|Liquids|Fossil (EJ/yr)"])
      / (budget.m / pm_ts + 1e-10) * tdptwyr2dpgj,           "Price|Light Fuel Oil|Secondary Level (US$2005/GJ)" ))
  }

  tmp <- mbind(tmp,setNames(
                   output[r,,"SE|Electricity|Biomass (EJ/yr)"]
                 * output[r,,"PE|Biomass|Energy Crops (EJ/yr)"]
                 / dimSums(mselect(demPE,all_enty="pebiolc"),dim=3),   "SE|Electricity|Biomass|Energy Crops (EJ/yr)"))
  tmp <- mbind(tmp,setNames(
                   output[r,,"SE|Electricity|Biomass (EJ/yr)"] 
                 * output[r,,"PE|Biomass|Residues (EJ/yr)"]
                 / dimSums(mselect(demPE,all_enty="pebiolc"),dim=3),   "SE|Electricity|Biomass|Residues (EJ/yr)"))
  tmp <- mbind(tmp,setNames(
                   output[r,,"SE|Liquids|Biomass (EJ/yr)"] 
                 * output[r,,"PE|Biomass|1st Generation (EJ/yr)"]
                 / output[r,,"PE|+|Biomass (EJ/yr)"],                     "SE|Liquids|Biomass|1st Generation (EJ/yr)"))
  tmp <- mbind(tmp,setNames(
                   output[r,,"SE|Liquids|Biomass (EJ/yr)"] 
                 * output[r,,"PE|Biomass|Residues (EJ/yr)"]
                 / output[r,,"PE|+|Biomass (EJ/yr)"],                     "SE|Liquids|Biomass|Residues (EJ/yr)"))
  tmp <- mbind(tmp,setNames(
                   output[r,,"SE|Liquids|Biomass (EJ/yr)"] 
                 * output[r,,"PE|Biomass|Energy Crops (EJ/yr)"]
                 / output[r,,"PE|+|Biomass (EJ/yr)"],                     "SE|Liquids|Biomass|Energy Crops (EJ/yr)"))



  if(tran_mod == "complex"){
    if ("seliq" %in% pe2se$all_enty1) {
        ## before the split to seliqfos/seliqbio, SE level shares can be used to determine
        ## the bioliquid shares on all levels
        tmp <- mbind(tmp,
                    setNames(
                      output[r,,"FE|Transport|Pass|Liquids (EJ/yr)"]
                      * output[r,,"SE|Liquids|Biomass (EJ/yr)"]
                      / output[r,,"SE|Liquids (EJ/yr)"],
                      "FE|Transport|Pass|Liquids|Biomass (EJ/yr)"),
                    setNames(
                      output[r,,"FE|Transport|Freight|Liquids (EJ/yr)"]
                      * output[r,,"SE|Liquids|Biomass (EJ/yr)"]
                      / output[r,,"SE|Liquids (EJ/yr)"],
                      "FE|Transport|Freight|Liquids|Biomass (EJ/yr)"),
                    setNames(
                      output[r,,"FE|Transport|Liquids (EJ/yr)"]
                      * output[r,,"SE|Liquids|Biomass (EJ/yr)"]
                      / output[r,,"SE|Liquids (EJ/yr)"],
                      "FE|Transport|Liquids|Biomass (EJ/yr)"),
                    setNames(
                      output[r,,"FE|Transport|Pass|Road|LDV|Liquids (EJ/yr)"]
                      * output[r,,"SE|Liquids|Biomass (EJ/yr)"]
                      / output[r,,"SE|Liquids (EJ/yr)"],
                      "FE|Transport|Pass|Road|LDV|Liquids|Biomass (EJ/yr)"))
      }else{
        tmp <- mbind(tmp,setNames(
                           output[r,,"FE|Transport|Pass|Road|LDV|Liquids (EJ/yr)"] 
                           * output[r,,"FE|Transport|Pass|Liquids|Biomass (EJ/yr)"]
                           / output[r,,"FE|Transport|Pass|Liquids (EJ/yr)"],                     "FE|Transport|Pass|Road|LDV|Liquids|Biomass (EJ/yr)"))
      }
      tmp <- mbind(tmp,setNames(
                           output[r,,"FE|Transport|Pass|Road|LDV|Liquids (EJ/yr)"] 
                           * output[r,,"SE|Liquids|Coal (EJ/yr)"]
                           / output[r,,"SE|Liquids (EJ/yr)"],                     "FE|Transport|Pass|Road|LDV|Liquids|Coal (EJ/yr)"))
      tmp <- mbind(tmp,setNames(
                           output[r,,"FE|Transport|Pass|Road|LDV|Liquids (EJ/yr)"] 
                           * output[r,,"SE|Liquids|Oil (EJ/yr)"]
                           / output[r,,"SE|Liquids (EJ/yr)"],                     "FE|Transport|Pass|Road|LDV|Liquids|Oil (EJ/yr)"))
  }
  tmp <- mbind(tmp,setNames(
                   output[r,,"Energy Investments (billion US$2005/yr)"]
                  -output[r,,"Energy Investments|Electricity (billion US$2005/yr)"],"Energy Investments|Non-Elec (billion US$2005/yr)"))
  tmp <- mbind(tmp,setNames(
                   output[r,,"SE|Electricity|Gas (EJ/yr)"] / output[r,,"Cap|Electricity|Gas (GW)"] / TWa_2_EJ * 1000,
                   "Capacity Factor|Electricity|Gas (GW)"))
  
    # 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))
  
  # correct global values for intensive variables (prices, LCOES, Capacity factors) 
  map <- data.frame(region=getRegions(tmp["GLO",,,invert=TRUE]),world="GLO",stringsAsFactors=FALSE)
  tmp["GLO",,"Price|Light Fuel Oil|Secondary Level (US$2005/GJ)"] <- 
            speed_aggregate(tmp[map$region,,"Price|Light Fuel Oil|Secondary Level (US$2005/GJ)"],map,weight=output[map$region,,"SE|Liquids|Oil (EJ/yr)"])
  tmp["GLO",,"Capacity Factor|Electricity|Gas (GW)"] <- 
    speed_aggregate(tmp[map$region,,"Capacity Factor|Electricity|Gas (GW)"],map,weight=output[map$region,,"Cap|Electricity|Gas (GW)"])
  
  # correct region aggregated values for intensive variables (prices, LCOES, Capacity factors) 
  if (!is.null(regionSubsetList)){
    for (region in names(regionSubsetList)){
      map <- data.frame(region=regionSubsetList[[region]],parentRegion=region,stringsAsFactors=FALSE)
      tmp[region,,"Price|Light Fuel Oil|Secondary Level (US$2005/GJ)"] <- speed_aggregate(tmp[regionSubsetList[[region]],,"Price|Light Fuel Oil|Secondary Level (US$2005/GJ)"],map,weight=output[regionSubsetList[[region]],,"SE|Liquids|Oil (EJ/yr)"])
      tmp[region,,"Capacity Factor|Electricity|Gas (GW)"] <- speed_aggregate(tmp[regionSubsetList[[region]],,"Capacity Factor|Electricity|Gas (GW)"],map,weight=output[regionSubsetList[[region]],,"Cap|Electricity|Gas (GW)"])
    }
  }
  
  # variables that are calculated for all regions including GLO in the same way
  tmp <- mbind(
    tmp,
    
    setNames(
        output[,,"FE (EJ/yr)"] * 1000
      / output[,,"GDP|MER (billion US$2005/yr)"],
      "Intensity|GDP|Final Energy (MJ/US$2005)"),
    
    setNames(
        output[,,"GDP|MER (billion US$2005/yr)"] 
      / output[,,"FE (EJ/yr)"],
      "Productivity|GDP|MER|Final Energy (US$2005/GJ)"),
    
    setNames(
        output[,,"GDP|PPP (billion US$2005/yr)"] 
      / output[,,"FE (EJ/yr)"],
      "Productivity|GDP|PPP|Final Energy (US$2005/GJ)"),
    
    setNames(
        ( output[,,"Emi|CO2|Fossil Fuels and Industry (Mt CO2/yr)"] 
        - output[,,"Emi|CO2|Fossil Fuels and Industry|Cement process (Mt CO2/yr)"]
        )
      / output[,,"FE (EJ/yr)"],
      "Intensity|Final Energy|CO2 (Mt CO2/EJ)"),
    
    setNames(
        output[,,"Emi|GHGtot (Mt CO2-equiv/yr)"]
      / output[,,"FE (EJ/yr)"],
      "Intensity|Final Energy|GHG (Mt CO2-equiv/EJ)"),
    
    setNames(
        output[,,"Emi|GHGtot (Mt CO2-equiv/yr)"]
      / output[,,"GDP|MER (billion US$2005/yr)"],
      "Intensity|GDP|GHG (Mt CO2-equiv/US$2005)"),
    
    setNames(
        output[,,"GDP|MER (billion US$2005/yr)"]
      / output[,,"Population (million)"],
      "GDP|per capita|MER (kUS$2005/per capita)"),
    
    setNames(
        output[,,"GDP|PPP (billion US$2005/yr)"]
      / output[,,"Population (million)"],
      "GDP|per capita|PPP (kUS$2005/per capita)"),
    
    setNames(
        output[,,"Welfare|Real and undiscounted|Yearly (arbitrary unit/yr)"]
      / output[,,"Population (million)"],
      "Welfare|per capita|Real and undiscounted|Yearly (arbitrary unit/yr)"))
  
  # Energy shares
  tmp <- mbind(tmp,setNames(       # assume 8% for transmission losses and autoconsumption of power plants
    100 * (output[,,"SE|Electricity|Non-Biomass Renewables (EJ/yr)"] + output[,,"SE|Electricity|Biomass (EJ/yr)"])
    / 1.08 / output[,,"FE|+|Electricity (EJ/yr)"],    "Secondary Energy|Electricity|Share of renewables in gross demand|Estimation (Percent)"))   
  tmp <- mbind(tmp,setNames(       # divide biomass by 2 to roughly account for conversion losses 
    100 * (output[,,"PE|Non-Biomass Renewables (EJ/yr)"] + output[,,"PE|+|Biomass (EJ/yr)"]/2)
    / output[,,"FE (EJ/yr)"],    "Final Energy|Share of renewables in gross demand|Rough estimation (Percent)"))   
  
  # Energy expenditures
  tmp <- mbind(tmp,setNames(
    output[,,"FE|Transport|Liquids (EJ/yr)"] * output[,,"Price|Final Energy|Liquids|Transport (US$2005/GJ)"] +
    output[,,"FE|Transport|Hydrogen (EJ/yr)"] * output[,,"Price|Final Energy|Hydrogen|Transport (US$2005/GJ)"] +
    output[,,"FE|Transport|Electricity (EJ/yr)"] * output[,,"Price|Final Energy|Electricity|Transport (US$2005/GJ)"], 
                       "Expenditure|Transport|Fuel (billion $US/yr)"))
  
  # calculate intensities growth
  int_gr <- new.magpie(getRegions(tmp),getYears(tmp),c("Intensity Growth|GDP|Final Energy (% pa)","Intensity Growth|GDP|Final Energy to 2005 (% pa)",
                                                       "Intensity Growth|GDP|CO2-equiv (% pa)","Intensity Growth|GDP|CO2-equiv to 2005 (% pa)",
                                                       "Intensity Growth|Final Energy|CO2-equiv (% pa)","Intensity Growth|Final Energy|CO2-equiv to 2005 (% pa)",
                                                       "Intensity Growth|Final Energy|CO2 (% pa)","Intensity Growth|Final Energy|CO2 to 2005 (% pa)"),fill=0)
  for (t in getYears(tmp[,which(getYears(tmp,as.integer=TRUE)>2005),])){
    int_gr[,t,"Intensity Growth|GDP|Final Energy (% pa)"] <- 
        ( 
          ( 
              (tmp[,t,"Intensity|GDP|Final Energy (MJ/US$2005)"] / setYears(tmp[,(which(getYears(tmp)==t)-1),"Intensity|GDP|Final Energy (MJ/US$2005)"],t))
           ^ (1 / ( getYears(tmp[,t,],as.integer=TRUE) - getYears(tmp[,(which(getYears(tmp)==t)-1),],as.integer=TRUE) ) )
          ) - 1
        ) * 100
    int_gr[,t,"Intensity Growth|GDP|Final Energy to 2005 (% pa)"] <- 
      ( 
        ( 
          (tmp[,t,"Intensity|GDP|Final Energy (MJ/US$2005)"] / setYears(tmp[,2005,"Intensity|GDP|Final Energy (MJ/US$2005)"],t))
          ^ (1 / ( getYears(tmp[,t,],as.integer=TRUE) - 2005 ) )
        ) - 1
      ) * 100
    int_gr[,t,"Intensity Growth|Final Energy|CO2 (% pa)"] <- 
      ( 
        ( 
          (tmp[,t,"Intensity|Final Energy|CO2 (Mt CO2/EJ)"] / setYears(tmp[,(which(getYears(tmp)==t)-1),"Intensity|Final Energy|CO2 (Mt CO2/EJ)"],t))
          ^ (1 / ( getYears(tmp[,t,],as.integer=TRUE) - getYears(tmp[,(which(getYears(tmp)==t)-1),],as.integer=TRUE) ) )
        ) - 1
      ) * 100
    int_gr[,t,"Intensity Growth|Final Energy|CO2 to 2005 (% pa)"] <- 
      ( 
        ( 
          (tmp[,t,"Intensity|Final Energy|CO2 (Mt CO2/EJ)"] / setYears(tmp[,2005,"Intensity|Final Energy|CO2 (Mt CO2/EJ)"],t))
          ^ (1 / ( getYears(tmp[,t,],as.integer=TRUE) - 2005 ) )
        ) - 1
      ) * 100
    int_gr[,t,"Intensity Growth|GDP|CO2-equiv (% pa)"] <- 
      ( 
        ( 
          (tmp[,t,"Intensity|GDP|GHG (Mt CO2-equiv/US$2005)"] / setYears(tmp[,(which(getYears(tmp)==t)-1),"Intensity|GDP|GHG (Mt CO2-equiv/US$2005)"],t))
          ^ (1 / ( getYears(tmp[,t,],as.integer=TRUE) - getYears(tmp[,(which(getYears(tmp)==t)-1),],as.integer=TRUE) ) )
        ) - 1
      ) * 100
    int_gr[,t,"Intensity Growth|GDP|CO2-equiv to 2005 (% pa)"] <- 
      ( 
        ( 
          (tmp[,t,"Intensity|GDP|GHG (Mt CO2-equiv/US$2005)"] / setYears(tmp[,2005,"Intensity|GDP|GHG (Mt CO2-equiv/US$2005)"],t))
          ^ (1 / ( getYears(tmp[,t,],as.integer=TRUE) - 2005 ) )
        ) - 1
      ) * 100
    int_gr[,t,"Intensity Growth|Final Energy|CO2-equiv (% pa)"] <- 
      ( 
        ( 
          (tmp[,t,"Intensity|Final Energy|GHG (Mt CO2-equiv/EJ)"] / setYears(tmp[,(which(getYears(tmp)==t)-1),"Intensity|Final Energy|GHG (Mt CO2-equiv/EJ)"],t))
          ^ (1 / ( getYears(tmp[,t,],as.integer=TRUE) - getYears(tmp[,(which(getYears(tmp)==t)-1),],as.integer=TRUE) ) )
        ) - 1
      ) * 100
    int_gr[,t,"Intensity Growth|Final Energy|CO2-equiv to 2005 (% pa)"] <- 
      ( 
        ( 
          (tmp[,t,"Intensity|Final Energy|GHG (Mt CO2-equiv/EJ)"] / setYears(tmp[,2005,"Intensity|Final Energy|GHG (Mt CO2-equiv/EJ)"],t))
          ^ (1 / ( getYears(tmp[,t,],as.integer=TRUE) - 2005 ) )
        ) - 1
      ) * 100
  }

  if (!is.null(ppfen_stat)){
    tmp <- mbind(tmp,setNames(
      output[,,"FE|Other Sector|Gases (EJ/yr)"] 
      * output[,,"SE|Gases|Biomass (EJ/yr)"]
      / output[,,"SE|Gases (EJ/yr)"],"FE|Other Sector|Gases|Biomass (EJ/yr)"))
    
    tmp <- mbind(tmp,setNames(
      output[,,"FE|Other Sector|Gases (EJ/yr)"] 
      * output[,,"SE|Gases|Natural Gas (EJ/yr)"]
      / output[,,"SE|Gases (EJ/yr)"],"FE|Other Sector|Gases|Natural Gas (EJ/yr)"))
    
    tmp <- mbind(tmp,setNames(
      output[,,"FE|Other Sector|Gases (EJ/yr)"] 
      * output[,,"SE|Gases|Coal (EJ/yr)"]
      / output[,,"SE|Gases (EJ/yr)"],"FE|Other Sector|Gases|Coal (EJ/yr)"))
    
  }else{
    
    tmp <- mbind(tmp,setNames(
      output[,,"FE|Buildings|Gases (EJ/yr)"] 
      * output[,,"SE|Gases|Biomass (EJ/yr)"]
      / output[,,"SE|Gases (EJ/yr)"],"FE|Buildings|Gases|Biomass (EJ/yr)"))
    
    tmp <- mbind(tmp,setNames(
      output[,,"FE|Buildings|Gases (EJ/yr)"] 
      * output[,,"SE|Gases|Natural Gas (EJ/yr)"]
      / output[,,"SE|Gases (EJ/yr)"],"FE|Buildings|Gases|Natural Gas (EJ/yr)"))
    
    tmp <- mbind(tmp,setNames(
      output[,,"FE|Buildings|Gases (EJ/yr)"] 
      * output[,,"SE|Gases|Coal (EJ/yr)"]
      / output[,,"SE|Gases (EJ/yr)"],"FE|Buildings|Gases|Coal (EJ/yr)"))
    
    tmp <- mbind(tmp,setNames(
      output[,,"FE|Industry|Gases (EJ/yr)"] 
      * output[,,"SE|Gases|Biomass (EJ/yr)"]
      / output[,,"SE|Gases (EJ/yr)"],"FE|Industry|Gases|Biomass (EJ/yr)"))
    
    tmp <- mbind(tmp,setNames(
      output[,,"FE|Industry|Gases (EJ/yr)"] 
      * output[,,"SE|Gases|Natural Gas (EJ/yr)"]
      / output[,,"SE|Gases (EJ/yr)"],"FE|Industry|Gases|Natural Gas (EJ/yr)"))
    
    tmp <- mbind(tmp,setNames(
      output[,,"FE|Industry|Gases (EJ/yr)"] 
      * output[,,"SE|Gases|Coal (EJ/yr)"]
      / output[,,"SE|Gases (EJ/yr)"],"FE|Industry|Gases|Coal (EJ/yr)"))
    
    
    #Correction of CO2 emissions for uneven shares of biomass in industry and buildings (not distinguished in REMIND)
    #Biomass Direct emissions are considered to be 0. The Solids stationary emissions therefore represent the emissions
    # from the combustion of coal only
    # In reportEmi however, emissions in Industry and Buildings were computed assuming they both had the same share
    # of coal and biomass.
    # Below, we correct emissions according to the repartition between coal and biomass assumed in reportFE
    #(if Industry and Buildings have the same repartition between coal and biomass, delta_Solids_emissions would be 0)
    
    delta_Solids_emissions = setNames(output[,,"Emi|CO2|Energy|SupplyandDemand|Solids|w/ couple prod|Before IndustryCCS (Mt CO2/yr)"]
                                      * (
                                        (output[,,"FE|Buildings|Solids (EJ/yr)"]
                                         /output[,,"FE|Buildings and Industry|Solids (EJ/yr)"]
                                        )
                                        - (output[,,"FE|Buildings|Solids|Coal (EJ/yr)"]
                                           /output[,,"FE|Buildings and Industry|Solids|Coal (EJ/yr)"]
                                        )
                                        
                                      ),
                                      "Emi|CO2|Buildings|Direct|BiomassCorrection  (Mt CO2/yr)")
    
    #Due to the use of shares, the global results are incorrect
    delta_Solids_emissions["GLO",,] = 0
    delta_Solids_emissions["GLO",,] = dimSums(delta_Solids_emissions, dim = 1)
    tmp <- mbind(tmp,
                 setNames(output[,,"Emi|CO2|Industry|Direct and Indirect|BeforeTradBiomassCorr (Mt CO2/yr)"]
                          + delta_Solids_emissions[,,"Emi|CO2|Buildings|Direct|BiomassCorrection  (Mt CO2/yr)"],
                          "Emi|CO2|Industry|Direct and Indirect (Mt CO2/yr)"),
                 setNames(output[,,"Emi|CO2|Buildings|Direct and Indirect|BeforeTradBiomassCorr (Mt CO2/yr)"]
                          - delta_Solids_emissions[,,"Emi|CO2|Buildings|Direct|BiomassCorrection  (Mt CO2/yr)"],
                          "Emi|CO2|Buildings|Direct and Indirect (Mt CO2/yr)"),
                 setNames(output[,,"Emi|CO2|Industry|Direct|BeforeTradBiomassCorr (Mt CO2/yr)"]
                          + delta_Solids_emissions[,,"Emi|CO2|Buildings|Direct|BiomassCorrection  (Mt CO2/yr)"],
                          "Emi|CO2|Industry|Direct (Mt CO2/yr)"),
                 setNames(output[,,"Emi|CO2|Buildings|Direct|BeforeTradBiomassCorr (Mt CO2/yr)"]
                          - delta_Solids_emissions[,,"Emi|CO2|Buildings|Direct|BiomassCorrection  (Mt CO2/yr)"],
                          "Emi|CO2|Buildings|Direct (Mt CO2/yr)"),
                 setNames(output[,,"Emi|CO2|Buildings|Solids|BeforeTradBiomassCorr (Mt CO2/yr)"]
                          - delta_Solids_emissions[,,"Emi|CO2|Buildings|Direct|BiomassCorrection  (Mt CO2/yr)"],
                          "Emi|CO2|Buildings|Solids (Mt CO2/yr)"),
                 
                 
                 
                 setNames(output[,,"Emi|CO2|Industry|Direct and Indirect|Gross|BeforeTradBiomassCorr (Mt CO2/yr)"]
                          + delta_Solids_emissions[,,"Emi|CO2|Buildings|Direct|BiomassCorrection  (Mt CO2/yr)"],
                          "Emi|CO2|Industry|Direct and Indirect|Gross (Mt CO2/yr)"),
                 setNames(output[,,"Emi|CO2|Buildings|Direct and Indirect|Gross|BeforeTradBiomassCorr (Mt CO2/yr)"]
                          - delta_Solids_emissions[,,"Emi|CO2|Buildings|Direct|BiomassCorrection  (Mt CO2/yr)"],
                          "Emi|CO2|Buildings|Direct and Indirect|Gross (Mt CO2/yr)"),
                 setNames(output[,,"Emi|CO2|Buildings|Solids|Gross|BeforeTradBiomassCorr (Mt CO2/yr)"]
                          - delta_Solids_emissions[,,"Emi|CO2|Buildings|Direct|BiomassCorrection  (Mt CO2/yr)"],
                          "Emi|CO2|Buildings|Solids|Gross (Mt CO2/yr)")
                 
                 
    )
    
  }

  
   
  # calculate additional gross emissions variables
  
 
  
  tmp1 <- setNames(tmp[,,"Emi|CO2|Industry|Direct (Mt CO2/yr)"] + 
                     output[,,"Emi|CO2|Carbon Capture and Storage|Biomass|Energy|Demand|Industry (Mt CO2/yr)"],
                   "Emi|CO2|Energy|Demand|Industry|Gross (Mt CO2/yr)") 
  
 # calculate cumulative values
  tmp <- mbind(tmp,
               setNames(cumulatedValue(tmp1[,,"Emi|CO2|Energy|Demand|Industry|Gross (Mt CO2/yr)"]), "Emi|CO2|Energy|Demand|Industry|Gross|Cumulated (Mt CO2/yr)"),
               setNames(cumulatedValue(tmp[,,"Emi|CO2|Buildings|Direct (Mt CO2/yr)"]), "Emi|CO2|Buildings|Direct|Cumulated (Mt CO2/yr)")
  )


  tmp <- mbind(tmp, tmp1)
  
  tmp6 <- mbind(tmp,
                setNames(output[,,"Emi|CO2|Transport|Demand (Mt CO2/yr)"] / output[,,"FE|Transport|Fuels (EJ/yr)"], "FE|Transport|Fossil Carbon Intensity of fuels (kg CO2/GJ)"),
                setNames(tmp[,,"Emi|CO2|Buildings|Direct and Indirect (Mt CO2/yr)"] / output[,,"FE|Buildings|Fuels (EJ/yr)"], "FE|Buildings|Fossil Carbon Intensity of fuels (kg CO2/GJ)"),
                setNames(tmp[,,"Emi|CO2|Energy|Demand|Industry|Gross (Mt CO2/yr)"] / output[,,"FE|Industry|Fuels (EJ/yr)"], "FE|Industry|Fossil Carbon Intensity of fuels (kg CO2/GJ)"),
                setNames(output[,,"Emi|CO2|Fossil Fuels and Industry|Demand (Mt CO2/yr)"] / output[,,"FE|Fuels (EJ/yr)"], "FE|Fossil Carbon Intensity of fuels (kg CO2/GJ)") 
  )
  
  out <- mbind(tmp6, int_gr)
  return(out)
}
pik-piam/remind documentation built on Sept. 9, 2021, 1:09 p.m.