diff --git a/core/datainput.gms b/core/datainput.gms old mode 100644 new mode 100755 index 02c9227e2..9e3d6f4af --- a/core/datainput.gms +++ b/core/datainput.gms @@ -8,7 +8,7 @@ *AJS* technical. initialize parameters so that they are read from gdx vm_co2eq.l(ttot,regi) = 0; -vm_emiAll.l(ttot,regi,enty) = 0; +vm_emiAll.l(ttot,regi,emiTe) = 0; *AJS* initialize parameter (avoid compilation errors) * do this at the start of datainput to prevent accidental overwriting @@ -346,7 +346,7 @@ $offdelim / ; * Read in historical emissions per sector to calibrate MAC reference emissions -parameter p_histEmiSector(tall,all_regi,all_enty,emi_sectors,sector_types) "historical emissions per sector" +parameter p_histEmiSector(tall,all_regi,emiTe,emi_sectors,sector_types) "historical emissions per sector" / $ondelim $include "./core/input/p_histEmiSector.cs4r" @@ -362,7 +362,7 @@ $offdelim *RP* 2012-07-24: CO2-technologies don't have own emissions, but the pipeline leakage rate (s_co2pipe_leakage) is multiplied on the individual pe2se s_co2pipe_leakage = 0.01; -loop(emi2te(enty,enty2,te,enty3)$teCCS(te), +loop(emi2te(enty,enty2,te,emiAll)$teCCS(te), fm_dataemiglob(enty,enty2,te,"co2") = fm_dataemiglob(enty,enty2,te,"co2") + fm_dataemiglob(enty,enty2,te,"cco2") * s_co2pipe_leakage ; fm_dataemiglob(enty,enty2,te,"cco2") = fm_dataemiglob(enty,enty2,te,"cco2") * (1 - s_co2pipe_leakage ); ); @@ -1527,6 +1527,4 @@ $ifthen.subsectors "%industry%" == "subsectors" !! industry s_histBioShareTolerance = 0.3; $endif.subsectors - - *** EOF ./core/datainput.gms diff --git a/core/declarations.gms b/core/declarations.gms old mode 100644 new mode 100755 index 2e0991a55..20ce7caa7 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -35,7 +35,7 @@ pm_taxCO2eq_iterationdiff_tmp(ttot,all_regi) "help parameter for iterat o_taxCO2eq_iterDiff_Itr(iteration,all_regi) "track p_taxCO2eq_iterationdiff over iterations" pm_taxemiMkt(ttot,all_regi,all_emiMkt) "CO2 or CO2eq region and emission market specific emission tax" pm_taxemiMkt_iteration(iteration,ttot,all_regi,all_emiMkt) "CO2 or CO2eq region and emission market specific emission tax per iteration" -pm_emissionsForeign(tall,all_regi,all_enty) "total emissions of other regions (nash relevant)" +pm_emissionsForeign(tall,all_regi,emiTe) "total emissions of other regions (nash relevant)" pm_co2eqForeign(tall,all_regi) "emissions, which are part of the climate policy, of other regions (nash relevant)" pm_cesdata(tall,all_regi,all_in,cesParameter) "parameters of the CES function" pm_cesdata_putty(tall,all_regi,all_in,cesParameter) "quantities for the putty clay factors" @@ -66,7 +66,7 @@ o_taxCO2eq_afterPeakShiftLoop_Itr_1regi(ttot, iteration) "CO2 taxed in the last ***---------------------------------------------------------------------------------------- ***-----------------------------------------------ESM module------------------------------- -pm_emiExog(tall,all_regi,all_enty) "exogenous emissions" +pm_emiExog(tall,all_regi,emiTe) "exogenous emissions" p_macBaseMagpie(tall,all_regi,all_enty) "baseline emissions from MAgPIE (type emiMacMagpie)" p_macBaseMagpieNegCo2(tall,all_regi) "net negative emissions from co2luc" p_agriEmiPhaseOut(tall) "phase in parameter for baseline agricultural process ch4 and no2 reduction" @@ -76,7 +76,7 @@ pm_macAbatLev(tall,all_regi,all_enty) "actual level of abatement p_macAbat_lim(tall,all_regi,all_enty) "limit of abatement level based on limit of yearly change [fraction]" p_macUse2005(all_regi,all_enty) "usage of MACs in 2005 [fraction]" p_histEmiMac(tall,all_regi,all_enty) "historical emissions per MAC; from Eurostat and CEDS, to correct CH4 and N2O reporting" -p_histEmiSector(tall,all_regi,all_enty,emi_sectors,sector_types) "historical emissions per sector; from Eurostat and CEDS, to correct CH4 and N2O reporting" +p_histEmiSector(tall,all_regi,emiTe,emi_sectors,sector_types) "historical emissions per sector; from Eurostat and CEDS, to correct CH4 and N2O reporting" p_macLevFree(tall,all_regi,all_enty) "Phase in of zero-cost MAC options [fraction]" pm_macCost(tall,all_regi,all_enty) "abatement costs for all emissions subject to MACCs (type emiMacSector) []" pm_macStep(tall,all_regi,all_enty) "step number of abatement level [integer]" @@ -94,7 +94,7 @@ pm_emicapglob(tall) "global emission cap" p_adj_coeff(ttot,all_regi,all_te) "coefficient for adjustment costs" p_adj_coeff_glob(all_te) "coefficient for adjustment costs - global scale" p_switch_cement(ttot,all_regi) "describes an s-curve to provide a smooth switching from the short-term behavior (depending on per capita capital investments) to the long-term behavior (constant per capita emissions) of CO2 emissions from cement production" -p_cint(all_regi,all_enty,all_enty,rlf) "additional emissions of GHG from mining, on top of emissions from combustion" +p_cint(all_regi,emiTe,all_enty,rlf) "additional emissions of GHG from mining, on top of emissions from combustion" pm_eta_conv(tall,all_regi,all_te) "Time-dependent eta for technologies that do not have explicit time-dependant etas, still eta converges until 2050 to dataglob_values. [efficiency (0..1)]" @@ -105,7 +105,7 @@ p_actualbudgetco2(tall) "actual level of cumulated pm_dataccs(all_regi,char,rlf) "maximum CO2 storage capacity using CCS technology. [GtC]" pm_dataeta(tall,all_regi,all_te) "regional eta data" p_emi_quan_conv_ar4(all_enty) "conversion factor for various gases to GtCeq" -pm_emifac(tall,all_regi,all_enty,all_enty,all_te,all_enty) "emission factor by technology for all types of emissions in emiTe" +pm_emifac(tall,all_regi,all_enty,all_enty,all_te,emiAll) "emission factor by technology for all types of emissions in emiTe" pm_omeg (all_regi,opTimeYr,all_te) "technical depreciation parameter, gives the share of a capacity that is still usable after tlt. [none/share, value between 0 and 1]" p_aux_lifetime(all_regi,all_te) "auxiliary parameter for calculating life times, calculated externally in excel sheet" pm_pedem_res(ttot,all_regi,all_te) "Demand for pebiolc residues, needed for enhancement of residue potential [TWa]" @@ -177,7 +177,7 @@ pm_inco0_t(ttot,all_regi,all_te) "New inco0 that is time-dep ***this parameter counts backwards from time ttot - only the existing time steps p_tsu2opTimeYr_h(ttot,opTimeYr) "parameter to generate pm_tsu2opTimeYr", pm_tsu2opTimeYr(ttot,opTimeYr) "parameter that counts opTimeYr regarding tsu2opTimeYr apping" -pm_emissions0(tall,all_regi,all_enty) "Emissions in last iteration" +pm_emissions0(tall,all_regi,emiTe) "Emissions in last iteration" pm_co2eq0(tall,all_regi) "vm_co2eq from last iteration" pm_capCum0(tall,all_regi,all_te) "vm_capCum from last iteration" p_capCum(tall, all_regi,all_te) "vm_capCum from input.gdx for recalibration of learning investment costs" @@ -275,13 +275,13 @@ vm_dummyBudget(ttot,all_regi) "auxiliary variable that he ***---------------------------------------------------------------------------------------- ***-------------------------------------------------ESM module----------------------------- vm_macBase(ttot,all_regi,all_enty) "baseline emissions for all emissions subject to MACCs (type emismac)" -vm_emiTeDetail(ttot,all_regi,all_enty,all_enty,all_te,all_enty) "energy-related emissions per region and technology" -vm_emiTe(ttot,all_regi,all_enty) "total energy-related emissions of each region. [GtC, Mt CH4, Mt N]" +vm_emiTeDetail(ttot,all_regi,all_enty,all_enty,all_te,emiAll) "energy-related emissions per region and technology" +vm_emiTe(ttot,all_regi,emiAll) "total energy-related emissions of each region. [GtC, Mt CH4, Mt N]" vm_emiMacSector(ttot,all_regi,all_enty) "total non-energy-related emission of each region. [GtC, Mt CH4, Mt N]" vm_emiCdr(ttot,all_regi,all_enty) "total (negative) emissions due to CDR technologies of each region. [GtC]" -vm_emiMac(ttot,all_regi,all_enty) "total non-energy-related emission of each region. [GtC, Mt CH4, Mt N]" -vm_emiAll(ttot,all_regi,all_enty) "total regional emissions. [GtC, Mt CH4, Mt N]" -vm_emiAllGlob(ttot,all_enty) "total global emissions - link to the climate module. [GtC, Mt CH4, Mt N]" +vm_emiMac(ttot,all_regi,emiTe) "total non-energy-related emission of each region. [GtC, Mt CH4, Mt N]" +vm_emiAll(ttot,all_regi,emiTe) "total regional emissions. [GtC, Mt CH4, Mt N]" +vm_emiAllGlob(ttot,emiTe) "total global emissions - link to the climate module. [GtC, Mt CH4, Mt N]" vm_perm(ttot,all_regi) "emission allowances" vm_co2eqGlob(ttot) "global emissions to be balanced by allowances. [GtCeq]" vm_co2eq(ttot,all_regi) "total emissions measured in co2 equivalents ATTENTION: content depends on multigasscen. [GtCeq]" @@ -298,10 +298,10 @@ vm_costFuBio(ttot,all_regi) "fuel costs from bio energy vm_omcosts_cdr(tall,all_regi) "O&M costs for spreading grinded rocks on fields" vm_costpollution(tall,all_regi) "costs for air pollution policies" vm_emiFgas(ttot,all_regi,all_enty) "F-gas emissions by single gases from IMAGE" -v_emiTeDetailMkt(tall,all_regi,all_enty,all_enty,all_te,all_enty,all_emiMkt) "emissions from fuel combustion per region, technology and emission market. [GtC, Mt CH4, Mt N]" -vm_emiTeMkt(tall,all_regi,all_enty,all_emiMkt) "total energy-emissions of each region and emission market. [GtC, Mt CH4, Mt N]" -v_emiEnFuelEx(ttot,all_regi,all_enty) "energy emissions from fuel extraction [GtC, Mt CH4, Mt N]" -vm_emiAllMkt(tall,all_regi,all_enty,all_emiMkt) "total regional emissions for each emission market. [GtC, Mt CH4, Mt N]" +v_emiTeDetailMkt(tall,all_regi,all_enty,all_enty,all_te,emiAll,all_emiMkt) "emissions from fuel combustion per region, technology and emission market. [GtC, Mt CH4, Mt N]" +vm_emiTeMkt(tall,all_regi,emiTe,all_emiMkt) "total energy-emissions of each region and emission market. [GtC, Mt CH4, Mt N]" +v_emiEnFuelEx(ttot,all_regi,emiTe) "energy emissions from fuel extraction [GtC, Mt CH4, Mt N]" +vm_emiAllMkt(tall,all_regi,emiTe,all_emiMkt) "total regional emissions for each emission market. [GtC, Mt CH4, Mt N]" vm_flexAdj(tall,all_regi,all_te) "flexibility adjustment used for flexibility subsidy (tax) to emulate price changes of technologies which see lower-than-average (higher-than-average) elec. prices [trUSD/TWa]" vm_taxrevimplFETax(ttot,all_regi) "implicit efficiency directive target tax" ; @@ -340,9 +340,9 @@ v_costInv(ttot,all_regi) "investment costs" vm_costTeCapital(ttot,all_regi,all_te) "investment costs" vm_costAddTeInv(tall,all_regi,all_te,emi_sectors) "additional sector-specific investment cost of demand-side transformation" -vm_co2CCS(ttot,all_regi,all_enty,all_enty,all_te,rlf) "all differenct ccs. [GtC/a]" +vm_co2CCS(ttot,all_regi,emiAll,all_enty,all_te,rlf) "all differenct ccs. [GtC/a]" -vm_co2capture(ttot,all_regi,all_enty,all_enty,all_te,rlf) "all captured CO2. [GtC/a]" +vm_co2capture(ttot,all_regi,emiAll,all_enty,all_te,rlf) "all captured CO2. [GtC/a]" v_co2capturevalve(ttot,all_regi) "CO2 emitted right after capture [GtC/a] (in q_balCCUvsCCS to account for different lifetimes of capture and CCU/CCS te and capacities)" vm_prodUe(ttot,all_regi,all_enty,all_enty,all_te) "Useful energy production [TWa]" @@ -414,33 +414,33 @@ qm_fuel2pe(ttot,all_regi,all_enty) "constraint on cumulative f q_limitProd(ttot,all_regi,all_te,rlf) "constraint on annual production" -q_emiTeDetail(ttot,all_regi,all_enty,all_enty,all_te,all_enty) "determination of emissions" +q_emiTeDetail(ttot,all_regi,all_enty,all_enty,all_te,emiAll) "determination of emissions" q_macBase(tall,all_regi,all_enty) "baseline emissions for all emissions subject to MACCs (type emiMacSector)" q_emiMacSector(ttot,all_regi,all_enty) "total non-energy-related emission of each region" -q_emiTe(ttot,all_regi,all_enty) "total energy-emissions per region" -q_emiAll(ttot,all_regi,all_enty) "calculates all regional emissions as sum over energy and non-energy relates emissions" -q_emiAllGlob(ttot,all_enty) "calculates all global emissions as sum over regions" +q_emiTe(ttot,all_regi,emiTe) "total energy-emissions per region" +q_emiAll(ttot,all_regi,emiTe) "calculates all regional emissions as sum over energy and non-energy relates emissions" +q_emiAllGlob(ttot,emiTe) "calculates all global emissions as sum over regions" q_emiCap(ttot,all_regi) "emission cap" -q_emiMac(ttot,all_regi,all_enty) "summing up all non-energy emissions" +q_emiMac(ttot,all_regi,emiMac) "summing up all non-energy emissions" q_co2eq(ttot,all_regi) "regional emissions in co2 equivalents" q_co2eqMkt(ttot,all_regi,all_emiMkt) "regional emissions per market in co2 equivalents" q_co2eqGlob(ttot) "global emissions in co2 equivalents" qm_co2eqCum(all_regi) "cumulate regional emissions over time" q_budgetCO2eqGlob "global emission budget balance" -q_emiTeDetailMkt(ttot,all_regi,all_enty,all_enty,all_te,all_enty,all_emiMkt) "detailed energy specific emissions per region and market" -q_emiTeMkt(ttot,all_regi,all_enty,all_emiMkt) "total energy-emissions per region and market" -q_emiEnFuelEx(ttot,all_regi,all_enty) "energy emissions from fuel extraction" -q_emiAllMkt(ttot,all_regi,all_enty,all_emiMkt) "total regional emissions for each emission market" +q_emiTeDetailMkt(ttot,all_regi,all_enty,all_enty,all_te,emiAll,all_emiMkt) "detailed energy specific emissions per region and market" +q_emiTeMkt(ttot,all_regi,emiTe,all_emiMkt) "total energy-emissions per region and market" +q_emiEnFuelEx(ttot,all_regi,emiTe) "energy emissions from fuel extraction" +q_emiAllMkt(ttot,all_regi,emiTe,all_emiMkt) "total regional emissions for each emission market" q_transCCS(ttot,all_regi,all_enty,all_enty,all_te,all_enty,all_enty,all_te,rlf) "transformation equation for ccs" -q_limitCapCCS(ttot,all_regi,all_enty,all_enty,all_te,rlf) "capacity constraint for ccs" -q_limitCCS(all_regi,all_enty,all_enty,all_te,rlf) "ccs constraint for sequestration alternatives" +q_limitCapCCS(ttot,all_regi,emiAll,all_enty,all_te,rlf) "capacity constraint for ccs" +q_limitCCS(all_regi,emiAll,all_enty,all_te,rlf) "ccs constraint for sequestration alternatives" q_emiCdrAll(ttot,all_regi) "summing over all CDR emissions" -q_balcapture(ttot,all_regi,all_enty,all_enty,all_te) "balance equation for carbon capture" +q_balcapture(ttot,all_regi,emiAll,all_enty,all_te) "balance equation for carbon capture" q_balCCUvsCCS(ttot,all_regi) "balance equation for captured carbon to CCU or CCS or valve" q_limitSo2(ttot,all_regi) "prevent SO2 from rising again after 2050" @@ -583,34 +583,34 @@ magicc_sed_script.ap = 0; *** INNOPATHS emissions reporting Parameter -o_emissions(ttot,all_regi,all_enty) "output parameter" -o_emissions_bunkers(ttot,all_regi,all_enty) "output parameter" -o_emissions_energy(ttot,all_regi,all_enty) "output parameter" -o_emissions_energy_demand(ttot,all_regi,all_enty) "output parameter" -o_emissions_energy_demand_sector(ttot,all_regi,all_enty,emi_sectors) "output parameter" -o_emissions_energy_supply_gross(ttot,all_regi,all_enty) "output parameter" -o_emissions_energy_supply_gross_carrier(ttot,all_regi,all_enty,all_enty) "output parameter" -o_emissions_energy_extraction(ttot,all_regi,all_enty,all_enty) "output parameter" -o_emissions_energy_negative(ttot,all_regi,all_enty) "output parameter" -o_emissions_industrial_processes(ttot,all_regi,all_enty) "output parameter" -o_emissions_AFOLU(ttot,all_regi,all_enty) "output parameter" -o_emissions_DACCS(ttot,all_regi,all_enty) "output parameter" -o_emissions_other(ttot,all_regi,all_enty) "output parameter" - -o_capture(ttot,all_regi,all_enty) "output parameter" -o_capture_energy(ttot,all_regi,all_enty) "output parameter" -o_capture_energy_elec(ttot,all_regi,all_enty) "output parameter" -o_capture_energy_other(ttot,all_regi,all_enty) "output parameter" -o_capture_cdr(ttot,all_regi,all_enty) "output parameter" -o_capture_industry(ttot,all_regi,all_enty) "output parameter" -o_capture_energy_bio(ttot,all_regi,all_enty) "output parameter" -o_capture_energy_fos(ttot,all_regi,all_enty) "output parameter" -o_carbon_CCU(ttot,all_regi,all_enty) "output parameter" -o_carbon_LandUse(ttot,all_regi,all_enty) "output parameter" -o_carbon_underground(ttot,all_regi,all_enty) "output parameter" -o_carbon_reemitted(ttot,all_regi,all_enty) "output parameter" - -o_emi_conv(all_enty) "output parameter" / co2 3666.6666666666666666666666666667, ch4 28, n2o 416.4286, so2 1, bc 1, oc 1 / +o_emissions(ttot,all_regi,emiTe) "output parameter" +o_emissions_bunkers(ttot,all_regi,emiTe) "output parameter" +o_emissions_energy(ttot,all_regi,emiTe) "output parameter" +o_emissions_energy_demand(ttot,all_regi,emiTe) "output parameter" +o_emissions_energy_demand_sector(ttot,all_regi,emiTe,emi_sectors) "output parameter" +o_emissions_energy_supply_gross(ttot,all_regi,emiTe) "output parameter" +o_emissions_energy_supply_gross_carrier(ttot,all_regi,emiTe,all_enty) "output parameter" +o_emissions_energy_extraction(ttot,all_regi,emiTe,all_enty) "output parameter" +o_emissions_energy_negative(ttot,all_regi,emiTe) "output parameter" +o_emissions_industrial_processes(ttot,all_regi,emiTe) "output parameter" +o_emissions_AFOLU(ttot,all_regi,emiTe) "output parameter" +o_emissions_DACCS(ttot,all_regi,emiTe) "output parameter" +o_emissions_other(ttot,all_regi,emiTe) "output parameter" + +o_capture(ttot,all_regi,emiTe) "output parameter" +o_capture_energy(ttot,all_regi,emiTe) "output parameter" +o_capture_energy_elec(ttot,all_regi,emiTe) "output parameter" +o_capture_energy_other(ttot,all_regi,emiTe) "output parameter" +o_capture_cdr(ttot,all_regi,emiTe) "output parameter" +o_capture_industry(ttot,all_regi,emiTe) "output parameter" +o_capture_energy_bio(ttot,all_regi,emiTe) "output parameter" +o_capture_energy_fos(ttot,all_regi,emiTe) "output parameter" +o_carbon_CCU(ttot,all_regi,emiTe) "output parameter" +o_carbon_LandUse(ttot,all_regi,emiTe) "output parameter" +o_carbon_underground(ttot,all_regi,emiTe) "output parameter" +o_carbon_reemitted(ttot,all_regi,emiTe) "output parameter" + +o_emi_conv(emiTe) "output parameter" / co2 3666.6666666666666666666666666667, ch4 28, n2o 416.4286, so2 1, bc 1, oc 1 / ; *** EOF ./core/declarations.gms diff --git a/core/equations.gms b/core/equations.gms old mode 100644 new mode 100755 index 5eed4d00d..9cf408949 --- a/core/equations.gms +++ b/core/equations.gms @@ -29,15 +29,10 @@ q_costFu(t,regi).. q_costInv(t,regi).. v_costInv(t,regi) =e= -*** investment cost of conversion technologies - sum(en2en(enty,enty2,te), +*** investment cost for technologies + sum(te$(not(sameas(te,"h2curt") or sameas(te,"tdh2b") or sameas(te,"tdh2i"))), v_costInvTeDir(t,regi,te) + v_costInvTeAdj(t,regi,te)$teAdj(te) ) - + -*** investment cost of non-conversion technologies (storage, grid etc.) - sum(teNoTransform, - v_costInvTeDir(t,regi,teNoTransform) + v_costInvTeAdj(t,regi,teNoTransform)$teAdj(teNoTransform) - ) *** additional transmission and distribution cost (increases hydrogen cost at low hydrogen penetration levels when hydrogen infrastructure is not yet developed) + sum(sector2te_addTDCost(sector,te), @@ -128,10 +123,10 @@ q_balSe(t,regi,enty2)$( entySE(enty2) AND (NOT (sameas(enty2,"seel"))) ).. pm_prodCouple(regi,enty4,enty5,te,enty2) * vm_prodFe(t,regi,enty4,enty5,te) ) - + sum(pc2te(enty,enty3,te,enty2), + + sum(pc2emi(emiAll,enty3,te,enty2), sum(teCCS2rlf(te,rlf), - pm_prodCouple(regi,enty,enty3,te,enty2) - * vm_co2CCS(t,regi,enty,enty3,te,rlf) + pm_prodCoupleEmi(regi,emiAll,enty3,te,enty2) + * vm_co2CCS(t,regi,emiAll,enty3,te,rlf) ) ) *** add (reused gas from waste landfills) to segas to not account for CO2 @@ -279,8 +274,8 @@ q_limitCapFe(t,regi,te).. ***--------------------------------------------------------------------------- *' Definition of capacity constraints for CCS technologies: ***--------------------------------------------------------------------------- -q_limitCapCCS(t,regi,ccs2te(enty,enty2,te),rlf)$teCCS2rlf(te,rlf).. - vm_co2CCS(t,regi,enty,enty2,te,rlf) +q_limitCapCCS(t,regi,ccs2te(emiAll,enty2,te),rlf)$teCCS2rlf(te,rlf).. + vm_co2CCS(t,regi,emiAll,enty2,te,rlf) =e= sum(teCCS2rlf(te,rlf), vm_capFac(t,regi,te) * vm_cap(t,regi,te,rlf)); @@ -474,20 +469,20 @@ q_limitBiotrmod(t,regi)$(t.val > 2020).. *' from secondary to final energy transformation (some air pollutants), or *' transformations within the chain of CCS steps (Leakage). ***----------------------------------------------------------------------------- -q_emiTeDetail(t,regi,enty,enty2,te,enty3)$(emi2te(enty,enty2,te,enty3) OR (pe2se(enty,enty2,te) AND sameas(enty3,"cco2")) ) .. - vm_emiTeDetail(t,regi,enty,enty2,te,enty3) +q_emiTeDetail(t,regi,enty,enty2,te,emiAll)$(emi2te(enty,enty2,te,emiAll) OR (pe2se(enty,enty2,te) AND sameas(emiAll,"cco2")) ) .. + vm_emiTeDetail(t,regi,enty,enty2,te,emiAll) =e= - sum(emiMkt, v_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)) + sum(emiMkt, v_emiTeDetailMkt(t,regi,enty,enty2,te,emiAll,emiMkt)) ; ***-------------------------------------------------- *' Total energy-emissions: ***-------------------------------------------------- *** calculate total energy system emissions for each region and timestep: -q_emiTe(t,regi,emiTe(enty)).. - vm_emiTe(t,regi,enty) +q_emiTe(t,regi,emiTe).. + vm_emiTe(t,regi,emiTe) =e= - sum(emiMkt, vm_emiTeMkt(t,regi,enty,emiMkt)) + sum(emiMkt, vm_emiTeMkt(t,regi,emiTe,emiMkt)) ; ***----------------------------------------------------------------------------- @@ -497,22 +492,22 @@ q_emiTe(t,regi,emiTe(enty)).. *' transformations within the chain of CCS steps (Leakage). ***----------------------------------------------------------------------------- -q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$(emi2te(enty,enty2,te,enty3) OR (pe2se(enty,enty2,te) AND sameas(enty3,"cco2")) ) .. - v_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt) +q_emiTeDetailMkt(t,regi,enty,enty2,te,emiAll,emiMkt)$(emi2te(enty,enty2,te,emiAll) OR (pe2se(enty,enty2,te) AND sameas(emiAll,"cco2")) ) .. + v_emiTeDetailMkt(t,regi,enty,enty2,te,emiAll,emiMkt) =e= - sum(emi2te(enty,enty2,te,enty3), + sum(emi2te(enty,enty2,te,emiAll), ( sum(pe2se(enty,enty2,te), - pm_emifac(t,regi,enty,enty2,te,enty3) + pm_emifac(t,regi,enty,enty2,te,emiAll) * vm_demPE(t,regi,enty,enty2,te) ) - + sum((ccs2Leak(enty,enty2,te,enty3),teCCS2rlf(te,rlf)), - pm_emifac(t,regi,enty,enty2,te,enty3) - * vm_co2CCS(t,regi,enty,enty2,te,rlf) + + sum((ccs2Leak(emiAll,enty2,te,emiAll),teCCS2rlf(te,rlf)), + pm_emifac(t,regi,enty,enty2,te,emiAll) + * vm_co2CCS(t,regi,emiAll,enty2,te,rlf) ) )$(sameas(emiMkt,"ETS")) + sum(se2fe(enty,enty2,te), - pm_emifac(t,regi,enty,enty2,te,enty3) + pm_emifac(t,regi,enty,enty2,te,emiAll) * sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector(t,regi,enty,enty2,sector,emiMkt)) ) ) @@ -522,20 +517,20 @@ q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$(emi2te(enty,enty2,te,enty3) *' energy emissions from fuel extraction ***-------------------------------------------------- -q_emiEnFuelEx(t,regi,emiTe(enty)).. - v_emiEnFuelEx(t,regi,enty) +q_emiEnFuelEx(t,regi,emiTe).. + v_emiEnFuelEx(t,regi,emiTe) =e= *** emissions from non-conventional fuel extraction - sum(emi2fuelMine(enty,enty2,rlf), - p_cint(regi,enty,enty2,rlf) - * vm_fuExtr(t,regi,enty2,rlf) + sum(emi2fuelMine(emiTe,enty,rlf), + p_cint(regi,emiTe,enty,rlf) + * vm_fuExtr(t,regi,enty,rlf) )$( c_cint_scen eq 1 ) *** emissions from conventional fuel extraction - + (sum(pe2rlf(enty3,rlf2), - sum(enty2$(peFos(enty2)), - (p_cintraw(enty2) - * pm_fuExtrOwnCons(regi, enty2, enty3) - * vm_fuExtr(t,regi,enty3,rlf2))$(pm_fuExtrOwnCons(regi, enty2, enty3) gt 0))))$(sameas("co2",enty)) + + (sum(pe2rlf(enty2,rlf2), + sum(enty$(peFos(enty)), + (p_cintraw(enty) + * pm_fuExtrOwnCons(regi, enty, enty2) + * vm_fuExtr(t,regi,enty2,rlf2))$(pm_fuExtrOwnCons(regi, enty, enty2) gt 0))))$(sameas("co2",emiTe)) ; @@ -543,44 +538,44 @@ q_emiEnFuelEx(t,regi,emiTe(enty)).. ***-------------------------------------------------- *' Total energy-emissions per emission market, region and timestep ***-------------------------------------------------- -q_emiTeMkt(t,regi,emiTe(enty),emiMkt).. - vm_emiTeMkt(t,regi,enty,emiMkt) +q_emiTeMkt(t,regi,emiTe,emiMkt).. + vm_emiTeMkt(t,regi,emiTe,emiMkt) =e= *** emissions from fuel combustion - sum(emi2te(enty2,enty3,te,enty), - v_emiTeDetailMkt(t,regi,enty2,enty3,te,enty,emiMkt) + sum(emi2te(enty,enty2,te,emiTe), + v_emiTeDetailMkt(t,regi,enty,enty2,te,emiTe,emiMkt) ) *** energy emissions fuel extraction - + v_emiEnFuelEx(t,regi,enty)$(sameas(emiMkt,"ETS")) + + v_emiEnFuelEx(t,regi,emiTe)$(sameas(emiMkt,"ETS")) *** Industry CCS emissions - - ( sum(emiMac2mac(emiInd37_fuel,enty2), + - ( sum(emiMac2mac(emiInd37_fuel,enty), vm_emiIndCCS(t,regi,emiInd37_fuel) - )$( sameas(enty,"co2") ) + )$( sameas(emiTe,"co2") ) )$(sameas(emiMkt,"ETS")) *** LP, Valve from cco2 capture step, to mangage if capture capacity and CCU/CCS capacity don't have the same lifetime - + ( v_co2capturevalve(t,regi)$( sameas(enty,"co2") ) )$(sameas(emiMkt,"ETS")) + + ( v_co2capturevalve(t,regi)$( sameas(emiTe,"co2") ) )$(sameas(emiMkt,"ETS")) *** JS CO2 from short-term CCU (short term CCU co2 is emitted again in a time period shorter than 5 years) + sum(teCCU2rlf(te2,rlf), - vm_co2CCUshort(t,regi,"cco2","ccuco2short",te2,rlf)$( sameas(enty,"co2") ) + vm_co2CCUshort(t,regi,"cco2","ccuco2short",te2,rlf)$( sameas(emiTe,"co2") ) )$(sameas(emiMkt,"ETS")) ; ***-------------------------------------------------- *' Total emissions ***-------------------------------------------------- -q_emiAllMkt(t,regi,emi,emiMkt).. - vm_emiAllMkt(t,regi,emi,emiMkt) +q_emiAllMkt(t,regi,emiTe,emiMkt).. + vm_emiAllMkt(t,regi,emiTe,emiMkt) =e= - vm_emiTeMkt(t,regi,emi,emiMkt) + vm_emiTeMkt(t,regi,emiTe,emiMkt) *** Non-energy sector emissions. Note: These are emissions from all MAC curves. *** So, this includes fugitive emissions, which are sometimes also subsumed under the term energy emissions. - + sum(emiMacSector2emiMac(emiMacSector,emiMac(emi))$macSector2emiMkt(emiMacSector,emiMkt), + + sum(emiMacSector2emiMac(emiMacSector,emiMac(emiTe))$macSector2emiMkt(emiMacSector,emiMkt), vm_emiMacSector(t,regi,emiMacSector) ) *** CDR from CDR module - + vm_emiCdr(t,regi,emi)$(sameas(emi,"co2") AND sameas(emiMkt,"ETS")) + + vm_emiCdr(t,regi,emiTe)$(sameas(emiTe,"co2") AND sameas(emiMkt,"ETS")) *** Exogenous emissions - + pm_emiExog(t,regi,emi)$(sameas(emiMkt,"other")) + + pm_emiExog(t,regi,emiTe)$(sameas(emiMkt,"other")) ; @@ -643,7 +638,7 @@ q_emiMac(t,regi,emiMac) .. q_emiCdrAll(t,regi).. vm_emiCdrAll(t,regi) =e= !! BECC + DACC - (sum(emiBECCS2te(enty,enty2,te,enty3),vm_emiTeDetail(t,regi,enty,enty2,te,enty3)) + (sum(emiBECCS2te(enty,enty2,te,emiAll),vm_emiTeDetail(t,regi,enty,enty2,te,emiAll)) + sum(teCCS2rlf(te,rlf), vm_ccs_cdr(t,regi,"cco2","ico2","ccsinje",rlf))) !! scaled by the fraction that gets stored geologically * (sum(teCCS2rlf(te,rlf), @@ -661,25 +656,25 @@ q_emiCdrAll(t,regi).. *' Total regional emissions are the sum of emissions from technologies, MAC-curves, CDR-technologies and emissions that are exogenously given for REMIND. ***------------------------------------------------------ *LB* calculate total emissions for each region at each time step -q_emiAll(t,regi,emi(enty)).. - vm_emiAll(t,regi,enty) +q_emiAll(t,regi,emiTe).. + vm_emiAll(t,regi,emiTe) =e= - vm_emiTe(t,regi,enty) - + vm_emiMac(t,regi,enty) - + vm_emiCdr(t,regi,enty) - + pm_emiExog(t,regi,enty) + vm_emiTe(t,regi,emiTe) + + vm_emiMac(t,regi,emiTe) + + vm_emiCdr(t,regi,emiTe) + + pm_emiExog(t,regi,emiTe) ; ***------------------------------------------------------ *' Total global emissions are calculated for each GHG emission type and links the energy system to the climate module. ***------------------------------------------------------ *LB* calculate total global emissions for each timestep - link to the climate module -q_emiAllGlob(t,emi(enty)).. - vm_emiAllGlob(t,enty) +q_emiAllGlob(t,emiTe).. + vm_emiAllGlob(t,emiTe) =e= sum(regi, - vm_emiAll(t,regi,enty) - + pm_emissionsForeign(t,regi,enty) + vm_emiAll(t,regi,emiTe) + + pm_emissionsForeign(t,regi,emiTe) ) ; @@ -745,14 +740,14 @@ q_budgetCO2eqGlob$(cm_emiscen=6).. ***--------------------------------------------------------------------------- *' Definition of carbon capture : ***--------------------------------------------------------------------------- -q_balcapture(t,regi,ccs2te(ccsCO2(enty),enty2,te)) .. - sum(teCCS2rlf(te,rlf),vm_co2capture(t,regi,enty,enty2,te,rlf)) +q_balcapture(t,regi,ccs2te(ccsCO2(emiAll),enty2,te)) .. + sum(teCCS2rlf(te,rlf),vm_co2capture(t,regi,emiAll,enty2,te,rlf)) =e= - sum(emi2te(enty3,enty4,te2,enty), - vm_emiTeDetail(t,regi,enty3,enty4,te2,enty) + sum(emi2te(enty3,enty4,te2,emiAll), + vm_emiTeDetail(t,regi,enty3,enty4,te2,emiAll) ) + sum(teCCS2rlf(te,rlf), - vm_ccs_cdr(t,regi,enty,enty2,te,rlf) + vm_ccs_cdr(t,regi,emiAll,enty2,te,rlf) ) *** CCS from industry + sum(emiInd37, @@ -777,13 +772,13 @@ q_balCCUvsCCS(t,regi) .. *' Definition of the CCS transformation chain: ***--------------------------------------------------------------------------- *** no effect while CCS chain is limited to just one step (ccsinje) -q_transCCS(t,regi,ccs2te(enty,enty2,te),ccs2te2(enty2,enty3,te2),rlf)$teCCS2rlf(te2,rlf).. - (1-pm_emifac(t,regi,enty,enty2,te,"co2")) * vm_co2CCS(t,regi,enty,enty2,te,rlf) +q_transCCS(t,regi,ccs2te(emiAll,enty2,te),ccs2te2(emiAll,enty3,te2),rlf)$teCCS2rlf(te2,rlf).. + (1-pm_emifac(t,regi,emiAll,enty2,te,"co2")) * vm_co2CCS(t,regi,emiAll,enty2,te,rlf) =e= - vm_co2CCS(t,regi,enty2,enty3,te2,rlf); + vm_co2CCS(t,regi,emiAll,enty3,te2,rlf); -q_limitCCS(regi,ccs2te2(enty,"ico2",te),rlf)$teCCS2rlf(te,rlf).. - sum(ttot $(ttot.val ge 2005), pm_ts(ttot) * vm_co2CCS(ttot,regi,enty,"ico2",te,rlf)) +q_limitCCS(regi,ccs2te2(emiAll,"ico2",te),rlf)$teCCS2rlf(te,rlf).. + sum(ttot $(ttot.val ge 2005), pm_ts(ttot) * vm_co2CCS(ttot,regi,emiAll,"ico2",te,rlf)) =l= pm_dataccs(regi,"quan",rlf); diff --git a/core/postsolve.gms b/core/postsolve.gms old mode 100644 new mode 100755 index da71da9ee..49372c946 --- a/core/postsolve.gms +++ b/core/postsolve.gms @@ -656,57 +656,57 @@ p_PEPrice(t,regi,entyPe)$(abs (qm_budget.m(t,regi)) gt sm_eps) = pm_share_CCS_CCO2(t,regi) = sum(teCCS2rlf(te,rlf), vm_co2CCS.l(t,regi,"cco2","ico2",te,rlf)) / (sum(teCCS2rlf(te,rlf), vm_co2capture.l(t,regi,"cco2","ico2",te,rlf))+sm_eps); *** INNOPATHS emissions reporting -o_emissions_bunkers(ttot,regi,emi)$(ttot.val ge 2005) = +o_emissions_bunkers(ttot,regi,emiTe)$(ttot.val ge 2005) = sum(se2fe(enty,enty2,te), - pm_emifac(ttot,regi,enty,enty2,te,emi) + pm_emifac(ttot,regi,enty,enty2,te,emiTe) * vm_demFeSector.l(ttot,regi,enty,enty2,"trans","other") - )*o_emi_conv(emi); + )*o_emi_conv(emiTe); -o_emissions(ttot,regi,emi)$(ttot.val ge 2005) = - sum(emiMkt, vm_emiAllMkt.l(ttot,regi,emi,emiMkt))*o_emi_conv(emi) - - o_emissions_bunkers(ttot,regi,emi); +o_emissions(ttot,regi,emiTe)$(ttot.val ge 2005) = + sum(emiMkt, vm_emiAllMkt.l(ttot,regi,emiTe,emiMkt))*o_emi_conv(emiTe) + - o_emissions_bunkers(ttot,regi,emiTe); *** note! this still excludes industry CCS and CCU. To fix. -o_emissions_energy(ttot,regi,emi)$(ttot.val ge 2005) = - sum(emiMkt, vm_emiTeMkt.l(ttot,regi,emi,emiMkt))*o_emi_conv(emi) - - o_emissions_bunkers(ttot,regi,emi); +o_emissions_energy(ttot,regi,emiTe)$(ttot.val ge 2005) = + sum(emiMkt, vm_emiTeMkt.l(ttot,regi,emiTe,emiMkt))*o_emi_conv(emiTe) + - o_emissions_bunkers(ttot,regi,emiTe); *** note! this still excludes industry CCS. To fix. -o_emissions_energy_demand(ttot,regi,emi)$(ttot.val ge 2005) = +o_emissions_energy_demand(ttot,regi,emiTe)$(ttot.val ge 2005) = sum(sector2emiMkt(sector,emiMkt), sum(se2fe(enty,enty2,te), - pm_emifac(ttot,regi,enty,enty2,te,emi) + pm_emifac(ttot,regi,enty,enty2,te,emiTe) * vm_demFeSector.l(ttot,regi,enty,enty2,sector,emiMkt) ) - )*o_emi_conv(emi) - - o_emissions_bunkers(ttot,regi,emi) + )*o_emi_conv(emiTe) + - o_emissions_bunkers(ttot,regi,emiTe) ; *** note! this still excludes industry CCS. To fix. -o_emissions_energy_demand_sector(ttot,regi,emi,sector)$(ttot.val ge 2005) = +o_emissions_energy_demand_sector(ttot,regi,emiTe,sector)$(ttot.val ge 2005) = sum(emiMkt$sector2emiMkt(sector,emiMkt), sum(se2fe(enty,enty2,te), - pm_emifac(ttot,regi,enty,enty2,te,emi) * vm_demFeSector.l(ttot,regi,enty,enty2,sector,emiMkt) + pm_emifac(ttot,regi,enty,enty2,te,emiTe) * vm_demFeSector.l(ttot,regi,enty,enty2,sector,emiMkt) ) - )*o_emi_conv(emi) + )*o_emi_conv(emiTe) + - (sum(emiMacSector$(emiMac2sector(emiMacSector,"trans","process",emi)), + (sum(emiMacSector$(emiMac2sector(emiMacSector,"trans","process",emiTe)), vm_emiMacSector.l(ttot,regi,emiMacSector) - )*o_emi_conv(emi) - - o_emissions_bunkers(ttot,regi,emi) + )*o_emi_conv(emiTe) + - o_emissions_bunkers(ttot,regi,emiTe) )$(sameas(sector,"trans")) + - (sum(emiMacSector$(emiMac2sector(emiMacSector,"waste","process",emi)), + (sum(emiMacSector$(emiMac2sector(emiMacSector,"waste","process",emiTe)), vm_emiMacSector.l(ttot,regi,emiMacSector) - )*o_emi_conv(emi) + )*o_emi_conv(emiTe) )$(sameas(sector,"waste")) ; -o_emissions_energy_extraction(ttot,regi,emi,entyPe)$(ttot.val ge 2005) = +o_emissions_energy_extraction(ttot,regi,emiTe,entyPe)$(ttot.val ge 2005) = *** emissions from non-conventional fuel extraction ( - ( sum(emi2fuelMine(emi,entyPe,rlf), - p_cint(regi,emi,entyPe,rlf) + ( sum(emi2fuelMine(emiTe,entyPe,rlf), + p_cint(regi,emiTe,entyPe,rlf) * vm_fuExtr.l(ttot,regi,entyPe,rlf) )$( c_cint_scen eq 1 ) ) @@ -718,88 +718,88 @@ o_emissions_energy_extraction(ttot,regi,emi,entyPe)$(ttot.val ge 2005) = )$(pm_fuExtrOwnCons(regi, entyPe, enty2) gt 0) )) ) - )*o_emi_conv(emi) + )*o_emi_conv(emiTe) + - (sum(emiMacSector$(emiMac2sector("ch4coal","extraction","process",emi)), + (sum(emiMacSector$(emiMac2sector("ch4coal","extraction","process",emiTe)), vm_emiMacSector.l(ttot,regi,emiMacSector) - )*o_emi_conv(emi) + )*o_emi_conv(emiTe) )$(sameas(entyPe,"pecoal")) + - (sum(emiMacSector$(emiMac2sector("ch4gas","extraction","process",emi)), + (sum(emiMacSector$(emiMac2sector("ch4gas","extraction","process",emiTe)), vm_emiMacSector.l(ttot,regi,emiMacSector) - )*o_emi_conv(emi) + )*o_emi_conv(emiTe) )$(sameas(entyPe,"pegas")) + - (sum(emiMacSector$(emiMac2sector("ch4oil","extraction","process",emi)), + (sum(emiMacSector$(emiMac2sector("ch4oil","extraction","process",emiTe)), vm_emiMacSector.l(ttot,regi,emiMacSector) - )*o_emi_conv(emi) + )*o_emi_conv(emiTe) )$(sameas(entyPe,"peoil")) ; -o_emissions_energy_supply_gross(ttot,regi,emi)$(ttot.val ge 2005) = - sum(pe2se(entyPe,entySe,te)$(pm_emifac(ttot,regi,entyPe,entySe,te,emi)>0), - pm_emifac(ttot,regi,entyPe,entySe,te,emi) +o_emissions_energy_supply_gross(ttot,regi,emiTe)$(ttot.val ge 2005) = + sum(pe2se(entyPe,entySe,te)$(pm_emifac(ttot,regi,entyPe,entySe,te,emiTe)>0), + pm_emifac(ttot,regi,entyPe,entySe,te,emiTe) * vm_demPE.l(ttot,regi,entyPe,entySe,te) - )*o_emi_conv(emi) + )*o_emi_conv(emiTe) + - sum(entyPe, o_emissions_energy_extraction(ttot,regi,emi,entyPe)) + sum(entyPe, o_emissions_energy_extraction(ttot,regi,emiTe,entyPe)) ; -o_emissions_energy_supply_gross_carrier(ttot,regi,emi,entySe)$(ttot.val ge 2005) = - sum((entyPe,te)$(pe2se(entyPe,entySe,te) AND (pm_emifac(ttot,regi,entyPe,entySe,te,emi)>0)), - pm_emifac(ttot,regi,entyPe,entySe,te,emi) +o_emissions_energy_supply_gross_carrier(ttot,regi,emiTe,entySe)$(ttot.val ge 2005) = + sum((entyPe,te)$(pe2se(entyPe,entySe,te) AND (pm_emifac(ttot,regi,entyPe,entySe,te,emiTe)>0)), + pm_emifac(ttot,regi,entyPe,entySe,te,emiTe) * vm_demPE.l(ttot,regi,entyPe,entySe,te) - )*o_emi_conv(emi) + )*o_emi_conv(emiTe) + ( - o_emissions_energy_extraction(ttot,regi,emi,"pecoal") + o_emissions_energy_extraction(ttot,regi,emiTe,"pecoal") )$(sameas(entySe,"sesofos")) + ( - o_emissions_energy_extraction(ttot,regi,emi,"pegas") + o_emissions_energy_extraction(ttot,regi,emiTe,"pegas") )$(sameas(entySe,"segafos")) + ( - o_emissions_energy_extraction(ttot,regi,emi,"peoil") + o_emissions_energy_extraction(ttot,regi,emiTe,"peoil") )$(sameas(entySe,"seliqfos")) ; -o_emissions_energy_negative(ttot,regi,emi)$(ttot.val ge 2005) = +o_emissions_energy_negative(ttot,regi,emiTe)$(ttot.val ge 2005) = ( - sum(pe2se(entyPe,entySe,te)$(pm_emifac(ttot,regi,entyPe,entySe,te,emi)<0), - pm_emifac(ttot,regi,entyPe,entySe,te,emi) + sum(pe2se(entyPe,entySe,te)$(pm_emifac(ttot,regi,entyPe,entySe,te,emiTe)<0), + pm_emifac(ttot,regi,entyPe,entySe,te,emiTe) * vm_demPE.l(ttot,regi,entyPe,entySe,te) ) + - sum((ccs2Leak(enty,enty2,te,emi),teCCS2rlf(te,rlf)), - pm_emifac(ttot,regi,enty,enty2,te,emi) - * vm_co2CCS.l(ttot,regi,enty,enty2,te,rlf) + sum((ccs2Leak(emiAll,enty2,te,emiTe),teCCS2rlf(te,rlf)), + pm_emifac(ttot,regi,emiAll,enty2,te,emiTe) + * vm_co2CCS.l(ttot,regi,emiAll,enty2,te,rlf) ) *** Industry CCS emissions - ( sum(emiMac2mac(emiInd37_fuel,enty2), vm_emiIndCCS.l(ttot,regi,emiInd37_fuel) - )$( sameas(emi,"co2") ) + )$( sameas(emiTe,"co2") ) ) - )*o_emi_conv(emi) + )*o_emi_conv(emiTe) ; -o_emissions_industrial_processes(ttot,regi,emi)$(ttot.val ge 2005) = - sum(emiMacSector$(emiMac2sector(emiMacSector,"indst","process",emi)), +o_emissions_industrial_processes(ttot,regi,emiTe)$(ttot.val ge 2005) = + sum(emiMacSector$(emiMac2sector(emiMacSector,"indst","process",emiTe)), vm_emiMacSector.l(ttot,regi,emiMacSector) - )*o_emi_conv(emi); + )*o_emi_conv(emiTe); -o_emissions_AFOLU(ttot,regi,emi)$(ttot.val ge 2005) = - sum(emiMacSector$(emiMac2sector(emiMacSector,"agriculture","process",emi) OR emiMac2sector(emiMacSector,"lulucf","process",emi)), +o_emissions_AFOLU(ttot,regi,emiTe)$(ttot.val ge 2005) = + sum(emiMacSector$(emiMac2sector(emiMacSector,"agriculture","process",emiTe) OR emiMac2sector(emiMacSector,"lulucf","process",emiTe)), vm_emiMacSector.l(ttot,regi,emiMacSector) - )*o_emi_conv(emi); + )*o_emi_conv(emiTe); -o_emissions_DACCS(ttot,regi,emi)$(ttot.val ge 2005) = - vm_emiCdr.l(ttot,regi,emi)*o_emi_conv(emi) +o_emissions_DACCS(ttot,regi,emiTe)$(ttot.val ge 2005) = + vm_emiCdr.l(ttot,regi,emiTe)*o_emi_conv(emiTe) ; -o_emissions_other(ttot,regi,emi)$(ttot.val ge 2005) = - pm_emiExog(ttot,regi,emi)*o_emi_conv(emi) +o_emissions_other(ttot,regi,emiTe)$(ttot.val ge 2005) = + pm_emiExog(ttot,regi,emiTe)*o_emi_conv(emiTe) ; ***Carbon Management|Carbon Capture (Mt CO2/yr) diff --git a/core/preloop.gms b/core/preloop.gms old mode 100644 new mode 100755 index 72fc13839..cfd04c06b --- a/core/preloop.gms +++ b/core/preloop.gms @@ -22,7 +22,7 @@ model hybrid /all/; *** Set level values, so that reference value is available even if gdx has no level value to overwrite. Gams complains if .l was never initialized. vm_emiMacSector.l(ttot,regi,enty) = 0; -vm_emiTe.l(ttot,regi,enty) = 0; +vm_emiTe.l(ttot,regi,emiAll) = 0; vm_emiCdr.l(ttot,regi,enty) = 0; vm_prodFe.l(ttot,regi,entyFe2,entyFe2,te) = 0; vm_prodSe.l(ttot,regi,enty,enty2,te) = 0; @@ -32,7 +32,7 @@ vm_capDistr.l(t,regi,te,rlf) = 0; vm_cap.l(t,regi,te,rlf) = 0; vm_fuExtr.l(ttot,regi,"pebiolc","1")$(ttot.val ge 2005) = 0; vm_pebiolc_price.l(ttot,regi)$(ttot.val ge 2005) = 0; -vm_emiAllMkt.l(t,regi,enty,emiMkt) = 0; +vm_emiAllMkt.l(t,regi,emiTe,emiMkt) = 0; vm_co2eqMkt.l(ttot,regi,emiMkt) = 0; v_shfe.l(t,regi,enty,sector) = 0; diff --git a/core/presolve.gms b/core/presolve.gms old mode 100644 new mode 100755 index e278f1c8b..88b1ff561 --- a/core/presolve.gms +++ b/core/presolve.gms @@ -11,7 +11,7 @@ pm_share_trans(ttot,regi)$(ttot.val ge 2005) = sum(se2fe(entySe,entyFe,te)$(seAg *AJS* we need those in nash pm_capCum0(ttot,regi,teLearn)$( (ttot.val ge 2005) and (pm_SolNonInfes(regi) eq 1)) = vm_capCum.l(ttot,regi,teLearn); pm_co2eq0(ttot,regi)$( (ttot.val ge 2005) and (pm_SolNonInfes(regi) eq 1)) = vm_co2eq.l(ttot,regi); -pm_emissions0(ttot,regi,enty)$( (ttot.val ge 2005) and (pm_SolNonInfes(regi) eq 1)) = vm_emiAll.l(ttot,regi,enty); +pm_emissions0(ttot,regi,emiTe)$( (ttot.val ge 2005) and (pm_SolNonInfes(regi) eq 1)) = vm_emiAll.l(ttot,regi,emiTe); *LB* moved here from datainput to be updated based on the gdp-path *** calculate econometric emission data: p2 diff --git a/core/sets.gms b/core/sets.gms index 2d1500032..2d319bcbf 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -1766,9 +1766,19 @@ entyFeTrans(all_enty) "final energy types from transport sector" feForCes(all_enty) "limit q_balFeForCes to entyFe in fe2ppfEn" -emi(all_enty) "types of emissions, these emissions are given to the climate module" +emiAll(all_enty) "all types of climate-relevant energy emissions" +/ + co2 "energy system co2" + so2 "energy system so2" + bc "black carbon from fossil fuel combustion" + oc "organic carbon from fossil fuel combustion" + ch4 "energy system ch4" + n2o "energy system n2o" + cco2 "captured CO2" + n2obio "N2O emissions from pebiolc " +/ -emiTe(all_enty) "types of climate-relevant energy emissions for climate coupling and reporting" +emiTe(emiAll) "types of climate-relevant energy emissions for climate coupling and reporting" / co2 "energy system co2" so2 "energy system so2" @@ -1777,19 +1787,19 @@ emiTe(all_enty) "types of climate-relevant energy emissions for climate coupli ch4 "energy system ch4" n2o "energy system n2o" / -emiExog(all_enty) "exogenous emissions" +emiExog(emiTe) "exogenous emissions" / so2 bc oc / -emiAP(all_enty) "Used for allocation of emission factors" +emiAP(emiTe) "Used for allocation of emission factors" / bc oc / -emiMac(all_enty) "sum over sub-emissions from emiMacSector" +emiMac(emiTe) "sum over sub-emissions from emiMacSector" / co2 n2o @@ -2049,7 +2059,7 @@ macSector2emiMkt(all_enty,all_emiMkt) "mapping mac sectors to emission markets" co2luc.other co2cement_process.ETS / -ccsCo2(all_enty) "only cco2 (???)" +ccsCo2(emiAll) "only cco2 (???)" / cco2 / @@ -2448,13 +2458,16 @@ pc2te(all_enty,all_enty,all_te,all_enty) "mapping for own consumption of tech segabio.fegas.tdbiogas.seel segafos.fegas.tdfosgas.seel pegeo.sehe.geohe.seel - cco2.ico2.ccsinje.seel fedie.uedit.apCarDiEffT.feelt fedie.uedit.apCarDiEffH2T.feelt fedie.uedit.apCarDiEffH2T.feh2t / +pc2emi(emiAll,all_enty,all_te,all_enty) "mapping for own emission consumption of technologies" +/ + cco2.ico2.ccsinje.seel +/ *NB* mappings for emissions, capture and leakage -emi2te(all_enty,all_enty,all_te,all_enty) " map emissions to technologies" +emi2te(all_enty,all_enty,all_te,emiAll) " map emissions to technologies" / pegas.seel.ngcc.co2 pegas.seel.ngt.co2 @@ -2591,7 +2604,7 @@ emi2fuel(all_enty,all_enty) "map emissions to fuel extraction" pegas.ch4gas peoil.ch4oil / -emiMacSector2emiMac(all_enty,all_enty) "mapping of sub-emissions to their sum" +emiMacSector2emiMac(all_enty,emiAll) "mapping of sub-emissions to their sum" / (co2luc,co2cement_process) .co2 (n2otrans,n2oadac,n2onitac,n2ofertin,n2ofertcr, n2ofertsom, n2oanwstc,n2oanwstm, n2oanwstp,n2oagwaste,n2oforest,n2osavan,n2owaste).n2o @@ -2626,7 +2639,7 @@ emiMac2mac(all_enty,all_enty) "mapping of emission sources to MACs - co2steel . co2steel / -emiMac2sector(all_enty,emi_sectors,sector_types,all_enty) "mapping of emission sources from MACs to sectors (and emissions)" +emiMac2sector(all_enty,emi_sectors,sector_types,emiAll) "mapping of emission sources from MACs to sectors (and emissions)" / (ch4coal, ch4gas, ch4oil).extraction.process.ch4 (ch4wstl, ch4wsts).waste.process.ch4 @@ -2643,7 +2656,7 @@ emiMac2sector(all_enty,emi_sectors,sector_types,all_enty) "mapping of (co2luc).lulucf.process.co2 / -emiBECCS2te(all_enty,all_enty,all_te,all_enty) "mapping of BECCS PE,SE,technology and captured emissions" +emiBECCS2te(all_enty,all_enty,all_te,emiAll) "mapping of BECCS PE,SE,technology and captured emissions" / pebiolc.seliqbio.bioftcrec.cco2 pebiolc. seel.bioigccc.cco2 @@ -2651,11 +2664,11 @@ emiBECCS2te(all_enty,all_enty,all_te,all_enty) "mapping of BECCS PE,SE,technolog / *NB*111125 emissions from fossil fuel extraction by grade that is on top of combustion -emi2fuelMine(all_enty,all_enty,rlf) "missions from fossil fuel extraction" +emi2fuelMine(emiAll,all_enty,rlf) "missions from fossil fuel extraction" / co2.peoil.(4*8) / -ccs2te(all_enty,all_enty,all_te) "chain for ccs" +ccs2te(emiAll,all_enty,all_te) "chain for ccs" / * cco2.pco2.ccscomp * pco2.tco2.ccspipe @@ -2663,7 +2676,7 @@ ccs2te(all_enty,all_enty,all_te) "chain for ccs" * ico2.sco2.ccsmoni / -ccs2Leak(all_enty,all_enty,all_te,all_enty) "leakage along ccs chain" +ccs2Leak(emiAll,all_enty,all_te,emiAll) "leakage along ccs chain" / * cco2.pco2.ccscomp.co2 * pco2.tco2.ccspipe.co2 diff --git a/core/sets_calculations.gms b/core/sets_calculations.gms old mode 100644 new mode 100755 index af1df8752..32a368af7 --- a/core/sets_calculations.gms +++ b/core/sets_calculations.gms @@ -29,14 +29,13 @@ teEtaConst(te) = not teEtaIncr(te); teNoCCS(te) = not teCCS(te); trade(enty) = tradePe(enty) + tradeSe(enty) + tradeMacro(enty); -emi(enty) = emiTe(enty) + emiMac(enty) + emiExog(enty); emiMacMagpie(enty) = emiMacMagpieCH4(enty) + emiMacMagpieN2O(enty) + emiMacMagpieCO2(enty); emiMacExo(enty) = emiMacExoCH4(enty) + emiMacExoN2O(enty); peExGrade(enty) = peEx(enty) - peExPol(enty); peRicardian(enty) = peBio(enty) + peEx(enty); en2se(enty,enty2,te) = pe2se(enty,enty2,te) + se2se(enty,enty2,te); -en2en(enty,enty2,te) = pe2se(enty,enty2,te) + se2se(enty,enty2,te) + se2fe(enty,enty2,te) + fe2ue(enty,enty2,te) + ccs2te(enty,enty2,te); +en2en(enty,enty2,te) = pe2se(enty,enty2,te) + se2se(enty,enty2,te) + se2fe(enty,enty2,te) + fe2ue(enty,enty2,te); te2rlf(te,rlf) = teFe2rlf(te,rlf) + teSe2rlf(te,rlf) + teue2rlf(te,rlf) + teCCS2rlf(te,rlf) + teCCU2rlf2(te,rlf) +teNoTransform2rlf(te,rlf) + teFe2rlfH2BI(te,rlf); ***---------------------------------------------------------------------------- *** Fill sets that were created empty and should be filled from the mappings above diff --git a/modules/04_PE_FE_parameters/iea2014/datainput.gms b/modules/04_PE_FE_parameters/iea2014/datainput.gms old mode 100644 new mode 100755 index 87a26e27a..94e8ef975 --- a/modules/04_PE_FE_parameters/iea2014/datainput.gms +++ b/modules/04_PE_FE_parameters/iea2014/datainput.gms @@ -147,7 +147,7 @@ p04_prodCoupleGlob("pebiolc","seliqbio","bioethl","seel") = 0.153; p04_prodCoupleGlob("segabio","fegas","tdbiogas","seel") = -0.05; p04_prodCoupleGlob("segafos","fegas","tdfosgas","seel") = -0.05; p04_prodCoupleGlob("pegeo","sehe","geohe","seel") = -0.3; -p04_prodCoupleGlob("cco2","ico2","ccsinje","seel") = -0.005; +***p04_prodCoupleGlob("cco2","ico2","ccsinje","seel") = -0.005; p04_prodCoupleGlob("fedie","uedit","apcardiEffT","feelt") = -0.1; p04_prodCoupleGlob("fedie","uedit","apcardiEffH2T","feelt") = -0.2; p04_prodCoupleGlob("fedie","uedit","apcardiEffH2T","feh2t") = -0.1; @@ -160,6 +160,18 @@ loop(pc2te(enty,enty2,te,enty3), ); ); display pm_prodCouple; + +*** define global values for couple production that can be used if the regional IEA data are 0 +p04_prodCoupleGlobEmi("cco2","ico2","ccsinje","seel") = -0.005; +loop(pc2emi(emiAll,enty,te,enty2), + loop(regi, + pm_prodCoupleEmi(regi,emiAll,enty,te,enty2) = p04_prodCoupleGlobEmi(emiAll,enty,te,enty2); + ); +); +display pm_prodCoupleEmi; + + + *** ---------------------------------------------------------------------------------------------------------- ***--------------------------------------- calculate eta and mix0 -------------------------------------------- *** ---------------------------------------------------------------------------------------------------------- diff --git a/modules/04_PE_FE_parameters/iea2014/declarations.gms b/modules/04_PE_FE_parameters/iea2014/declarations.gms old mode 100644 new mode 100755 index 43ba1afee..3f74a4f88 --- a/modules/04_PE_FE_parameters/iea2014/declarations.gms +++ b/modules/04_PE_FE_parameters/iea2014/declarations.gms @@ -10,6 +10,7 @@ pm_IO_input(all_regi,all_enty,all_enty,all_te) "Energy input bas p04_IO_output(all_regi,all_enty,all_enty,all_te) "Energy output based on IEA data" p04_x_enty2te_dyn04(all_regi,all_enty,all_enty,all_te,all_te) "parameter for the allocation of energy flow to technologies" pm_prodCouple(all_regi,all_enty,all_enty,all_te,all_enty) "own consumption" +pm_prodCoupleEmi(all_regi,emiAll,all_enty,all_te,all_enty) "own emission consumption" p04_aux_data(all_regi,char, all_te) "auxiliary parameter to store the initial mix0 and eta values for gas electricity before splitting it to ngcc and ngt (needed as long as calibration routine sets ngt to 0)" p04_shareNGTinGas(all_regi) "Share of ngt in electricity produced from gas" pm_fuExtrOwnCons(all_regi, all_enty, all_enty) "energy own consumption in the extraction sector with first enty being the output produced and the second enty being the input required" @@ -17,4 +18,5 @@ p04_shOilGasEx(all_regi, all_enty) "share of oil an p04_fuExtr(all_regi, all_enty) "regional fuel extraction for the base year calibration" pm_histfegrowth(all_regi,all_enty) "average growth rate of fe use from 1995 to 2005" p04_prodCoupleGlob(all_enty,all_enty,all_te,all_enty) "global couple products" +p04_prodCoupleGlobEmi(emiAll,all_enty,all_te,all_enty) "global emissions couple products" ; diff --git a/modules/05_initialCap/on/preloop.gms b/modules/05_initialCap/on/preloop.gms old mode 100644 new mode 100755 index 7e818737d..4ff679f0b --- a/modules/05_initialCap/on/preloop.gms +++ b/modules/05_initialCap/on/preloop.gms @@ -69,14 +69,26 @@ q05_eedemini(regi,enty).. / pm_data(regi,"eta",te) * v05_INIcap0(regi,te) ) + + sum(ccs2te(emiAll,enty2,te), + pm_cf("2005",regi,te) + / pm_data(regi,"eta",te) + * v05_INIcap0(regi,te) + ) !! subtract couple production pathways that produce this enty (= add couple production pathways that consume this enty): - sum(pc2te(enty3,enty4,te2,enty), pm_prodCouple(regi,enty3,enty4,te2,enty) * pm_cf("2005",regi,te2) * v05_INIcap0(regi,te2) ) + - sum(pc2emi(emiAll,enty4,te2,enty), + pm_prodCoupleEmi(regi,emiAll,enty4,te2,enty) + * pm_cf("2005",regi,te2) + * v05_INIcap0(regi,te2) + ) ; +v05_INIcap0.fx(regi, "ccsinje") = 0; + *** capacity meets demand of the produced energy: q05_ccapini(regi,en2en(enty,enty2,te)) .. pm_cf("2005",regi,te) diff --git a/modules/11_aerosols/exoGAINS/datainput.gms b/modules/11_aerosols/exoGAINS/datainput.gms old mode 100644 new mode 100755 index c3c4c3448..914f5f026 --- a/modules/11_aerosols/exoGAINS/datainput.gms +++ b/modules/11_aerosols/exoGAINS/datainput.gms @@ -249,7 +249,7 @@ loop(emiAP, display pm_emifac; *** calculation of air pollution costs -p11_EF_mean(enty,enty2,te,enty3)$emi2te(enty,enty2,te,enty3) = sum(regi,pm_emifac("2005",regi,enty,enty2,te,enty3))/11; +p11_EF_mean(enty,enty2,te,emiAll)$emi2te(enty,enty2,te,emiAll) = sum(regi,pm_emifac("2005",regi,enty,enty2,te,emiAll))/11; *JeS data is taken from US EPA http://www.epa.gov/ttnecas1/models/DOCumentationReport.pdf#page=1469 p11_costpollution("pc", "SO2","power") = 768; diff --git a/modules/11_aerosols/exoGAINS/declarations.gms b/modules/11_aerosols/exoGAINS/declarations.gms old mode 100644 new mode 100755 index 3a1210a94..26e116185 --- a/modules/11_aerosols/exoGAINS/declarations.gms +++ b/modules/11_aerosols/exoGAINS/declarations.gms @@ -8,10 +8,10 @@ parameter p11_emiFacAP(tall,all_regi,all_enty,all_enty,all_te,sectorEndoEmi,all_enty) "air pollutant emission factors [Gt(species)/TWa]" p11_share_sector(tall,all_enty,all_enty,all_te,sectorEndoEmi,all_regi) "share of technology that goes into industry, residential, and transport sectorEndoEmi [1]" -p11_costpollution(all_te,all_enty,sectorEndoEmi) "pollutant abatement costs in [$/t]" +p11_costpollution(all_te,emiAll,sectorEndoEmi) "pollutant abatement costs in [$/t]" -p11_EF_uncontr(all_enty,all_enty,all_te,all_regi,all_enty,sectorEndoEmi) "regional uncontrolled pollutant emission factor" -p11_EF_mean(all_enty,all_enty,all_te,all_enty) "global mean pollutant emission factor in 2005" +p11_EF_uncontr(all_enty,all_enty,all_te,all_regi,emiAll,sectorEndoEmi) "regional uncontrolled pollutant emission factor" +p11_EF_mean(all_enty,all_enty,all_te,emiAll) "global mean pollutant emission factor in 2005" p11_cesIO(tall,all_regi,all_in) "cesIO parameter specific for the module" p11_emiAPexsolveGDX(tall,all_regi,all_sectorEmi,emiRCP) " parameter p11_emiAPexsolve loaded from the gdx" diff --git a/modules/11_aerosols/exoGAINS/equations.gms b/modules/11_aerosols/exoGAINS/equations.gms old mode 100644 new mode 100755 index 17383ff0a..2dca6d830 --- a/modules/11_aerosols/exoGAINS/equations.gms +++ b/modules/11_aerosols/exoGAINS/equations.gms @@ -9,37 +9,37 @@ *** JeS: factor 0.000001 converts units from M$ to T$: e.g. for sulfur units are [TgS/TWa]*[TWa]*[$/pm_ts] q11_costpollution(t,regi).. -vm_costpollution(t,regi)=e=sum(emi2te(enty,enty2,te,enty3), +vm_costpollution(t,regi)=e=sum(emi2te(enty,enty2,te,emiAll), 0.000001*pm_ts(t) * ( - ( (p11_EF_uncontr(enty,enty2,te,regi,enty3,"indst")-pm_emifac(t,regi,enty,enty2,te,enty3)) + ( (p11_EF_uncontr(enty,enty2,te,regi,emiAll,"indst")-pm_emifac(t,regi,enty,enty2,te,emiAll)) * vm_demPe(t,regi,enty,enty2,te) * p11_share_sector(t,enty,enty2,te,"indst",regi) - * p11_costpollution(te,enty3,"indst") + * p11_costpollution(te,emiAll,"indst") )$( sectorEndoEmi2te(enty,enty2,te,"indst") AND pe2se(enty,enty2,te) ) - + ( (p11_EF_uncontr(enty,enty2,te,regi,enty3,"res")-pm_emifac(t,regi,enty,enty2,te,enty3)) + + ( (p11_EF_uncontr(enty,enty2,te,regi,emiAll,"res")-pm_emifac(t,regi,enty,enty2,te,emiAll)) * vm_demPe(t,regi,enty,enty2,te) * p11_share_sector(t,enty,enty2,te,"res",regi) - * p11_costpollution(te,enty3,"res") + * p11_costpollution(te,emiAll,"res") )$(sectorEndoEmi2te(enty,enty2,te,"res") AND pe2se(enty,enty2,te) ) - + ( (p11_EF_uncontr(enty,enty2,te,regi,enty3,"trans")-pm_emifac(t,regi,enty,enty2,te,enty3)) + + ( (p11_EF_uncontr(enty,enty2,te,regi,emiAll,"trans")-pm_emifac(t,regi,enty,enty2,te,emiAll)) * vm_prodFe(t,regi,enty,enty2,te) * p11_share_sector(t,enty,enty2,te,"trans",regi) - * p11_costpollution(te,enty3,"trans") + * p11_costpollution(te,emiAll,"trans") )$(sectorEndoEmi2te(enty,enty2,te,"trans") AND se2fe(enty,enty2,te) ) - + ( (p11_EF_mean(enty,enty2,te,enty3)-pm_emifac(t,regi,enty,enty2,te,enty3) ) + + ( (p11_EF_mean(enty,enty2,te,emiAll)-pm_emifac(t,regi,enty,enty2,te,emiAll) ) * vm_demPe(t,regi,enty,enty2,te) * p11_share_sector(t,enty,enty2,te,"power",regi) - * p11_costpollution(te,enty3,"power") + * p11_costpollution(te,emiAll,"power") )$(sectorEndoEmi2te(enty,enty2,te,"power") AND pe2se(enty,enty2,te) ) - + ( (p11_EF_uncontr("peoil","seel","dot",regi,enty3,"power")-p11_EF_mean("peoil","seel","dot",enty3)) + + ( (p11_EF_uncontr("peoil","seel","dot",regi,emiAll,"power")-p11_EF_mean("peoil","seel","dot",emiAll)) * vm_demPe(t,regi,"peoil","seel","dot") - * p11_costpollution("dot",enty3,"power") + * p11_costpollution("dot",emiAll,"power") )$( sameas(enty,"peoil") AND sameas(enty2,"seel") AND sameas(te,"dot") ) - + ( (p11_EF_mean(enty,enty2,te,enty3)-pm_emifac(t,regi,enty,enty2,te,enty3)) + + ( (p11_EF_mean(enty,enty2,te,emiAll)-pm_emifac(t,regi,enty,enty2,te,emiAll)) * vm_demPe(t,regi,enty,enty2,te) * p11_share_sector(t,enty,enty2,te,"trans",regi) - * p11_costpollution(te,enty3,"trans") + * p11_costpollution(te,emiAll,"trans") )$(sectorEndoEmi2te(enty,enty2,te,"trans") AND pe2se(enty,enty2,te) ) ) ); diff --git a/modules/15_climate/box/equations.gms b/modules/15_climate/box/equations.gms old mode 100644 new mode 100755 index 05bbe046b..3328b62d8 --- a/modules/15_climate/box/equations.gms +++ b/modules/15_climate/box/equations.gms @@ -183,7 +183,7 @@ q15_forc_os(t).. *' link to core ***----------------------------------------------------------------------------------------- q15_linkEMI(ttot2ta10(ttot, ta10),emis2climate10(enty,FOB10)).. - vm_emiAllGlob(ttot,enty) + vm_emiAllGlob(ttot,emiTe) =e= v15_emi(ta10,FOB10); $IF %cm_so2_out_of_opt% == "on" q15_linkEMI_aer(ttot2ta10(ttot, ta10),emiaer2climate10(emiaer,FOB10)).. p15_so2emi(ttot,emiaer) =e= v15_emi(ta10,FOB10); diff --git a/modules/21_tax/on/equations.gms b/modules/21_tax/on/equations.gms old mode 100644 new mode 100755 index 285ac19f0..75f9b9c58 --- a/modules/21_tax/on/equations.gms +++ b/modules/21_tax/on/equations.gms @@ -73,8 +73,8 @@ v21_taxrevCO2luc(t,regi) =e= ( pm_taxCO2eq(t,regi) + pm_taxCO2eqSCC(t,regi) + p q21_taxrevCCS(t,regi)$(t.val ge max(2010,cm_startyear)).. v21_taxrevCCS(t,regi) =e= cm_frac_CCS * pm_data(regi,"omf","ccsinje") * pm_inco0_t(t,regi,"ccsinje") - * ( sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCO2(enty),enty2,te), vm_co2CCS(t,regi,enty,enty2,te,rlf) ) ) ) - * (1/sm_ccsinjecrate) * sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCO2(enty),enty2,te), vm_co2CCS(t,regi,enty,enty2,te,rlf) ) ) / pm_dataccs(regi,"quan","1") !! fraction of injection constraint per year + * ( sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCO2(emiAll),enty2,te), vm_co2CCS(t,regi,emiAll,enty2,te,rlf) ) ) ) + * (1/sm_ccsinjecrate) * sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCO2(emiAll),enty2,te), vm_co2CCS(t,regi,emiAll,enty2,te,rlf) ) ) / pm_dataccs(regi,"quan","1") !! fraction of injection constraint per year - p21_taxrevCCS0(t,regi); ***--------------------------------------------------------------------------- diff --git a/modules/21_tax/on/postsolve.gms b/modules/21_tax/on/postsolve.gms old mode 100644 new mode 100755 index eeb2e94dd..2a1d1b104 --- a/modules/21_tax/on/postsolve.gms +++ b/modules/21_tax/on/postsolve.gms @@ -21,8 +21,8 @@ OPTION decimals =3; p21_taxrevGHG0(ttot,regi) = ( pm_taxCO2eq(ttot,regi) + pm_taxCO2eqSCC(ttot,regi) + pm_taxCO2eqHist(ttot,regi)) * (vm_co2eq.l(ttot,regi) - vm_emiMacSector.l(ttot,regi,"co2luc")$(cm_multigasscen ne 3)); p21_taxrevCO2luc0(ttot,regi) = ( pm_taxCO2eq(ttot,regi) + pm_taxCO2eqSCC(ttot,regi) + pm_taxCO2eqHist(ttot,regi)) * cm_cprice_red_factor * vm_emiMacSector.l(ttot,regi,"co2luc")$(cm_multigasscen ne 3); p21_taxrevCCS0(ttot,regi) = cm_frac_CCS * pm_data(regi,"omf","ccsinje") * pm_inco0_t(ttot,regi,"ccsinje") - * ( sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCO2(enty),enty2,te), vm_co2CCS.l(ttot,regi,enty,enty2,te,rlf) ) ) ) - * (1/sm_ccsinjecrate) * sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCO2(enty),enty2,te), vm_co2CCS.l(ttot,regi,enty,enty2,te,rlf) ) ) / pm_dataccs(regi,"quan","1"); + * ( sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCO2(emiAll),enty2,te), vm_co2CCS.l(ttot,regi,emiAll,enty2,te,rlf) ) ) ) + * (1/sm_ccsinjecrate) * sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCO2(emiAll),enty2,te), vm_co2CCS.l(ttot,regi,emiAll,enty2,te,rlf) ) ) / pm_dataccs(regi,"quan","1"); p21_taxrevNetNegEmi0(ttot,regi) = cm_frac_NetNegEmi * pm_taxCO2eq(ttot,regi) * v21_emiALLco2neg.l(ttot,regi); p21_taxrevFE0(ttot,regi) = sum((entyFe,sector)$entyFe2Sector(entyFe,sector), ( pm_tau_fe_tax(ttot,regi,sector,entyFe) + pm_tau_fe_sub(ttot,regi,sector,entyFe) ) diff --git a/modules/21_tax/on/preloop.gms b/modules/21_tax/on/preloop.gms old mode 100644 new mode 100755 index 0a2d2d852..72ebd9305 --- a/modules/21_tax/on/preloop.gms +++ b/modules/21_tax/on/preloop.gms @@ -139,7 +139,7 @@ display pm_tau_fe_tax; display p21_tau_pe2se_sub, p21_tau_fuEx_sub; *LB* initialization of vm_emiMac -vm_emiMac.l(ttot,regi,enty) = 0; +vm_emiMac.l(ttot,regi,emiTe) = 0; *LB* initialization of v21_emiALLco2neg v21_emiALLco2neg.l(ttot,regi) =0; diff --git a/modules/21_tax/on/presolve.gms b/modules/21_tax/on/presolve.gms old mode 100644 new mode 100755 index 605067d72..7ea553949 --- a/modules/21_tax/on/presolve.gms +++ b/modules/21_tax/on/presolve.gms @@ -19,8 +19,8 @@ p21_tau_so2_tax(ttot,regi)$(ttot.val>2100)=p21_tau_so2_tax("2100",regi); p21_taxrevGHG0(ttot,regi) = ( pm_taxCO2eq(ttot,regi) + pm_taxCO2eqSCC(ttot,regi) + pm_taxCO2eqHist(ttot,regi)) * (vm_co2eq.l(ttot,regi) - vm_emiMacSector.l(ttot,regi,"co2luc")$(cm_multigasscen ne 3)); p21_taxrevCO2luc0(ttot,regi) = ( pm_taxCO2eq(ttot,regi) + pm_taxCO2eqSCC(ttot,regi) + pm_taxCO2eqHist(ttot,regi)) * cm_cprice_red_factor * vm_emiMacSector.l(ttot,regi,"co2luc")$(cm_multigasscen ne 3); p21_taxrevCCS0(ttot,regi) = cm_frac_CCS * pm_data(regi,"omf","ccsinje") * pm_inco0_t(ttot,regi,"ccsinje") - * ( sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCO2(enty),enty2,te), vm_co2CCS.l(ttot,regi,enty,enty2,te,rlf) ) ) ) - * (1/sm_ccsinjecrate) * sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCO2(enty),enty2,te), vm_co2CCS.l(ttot,regi,enty,enty2,te,rlf) ) ) / pm_dataccs(regi,"quan","1"); + * ( sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCO2(emiAll),enty2,te), vm_co2CCS.l(ttot,regi,emiAll,enty2,te,rlf) ) ) ) + * (1/sm_ccsinjecrate) * sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCO2(emiAll),enty2,te), vm_co2CCS.l(ttot,regi,emiAll,enty2,te,rlf) ) ) / pm_dataccs(regi,"quan","1"); p21_taxrevNetNegEmi0(ttot,regi) = cm_frac_NetNegEmi * pm_taxCO2eq(ttot,regi) * v21_emiALLco2neg.l(ttot,regi); p21_emiALLco2neg0(ttot,regi) = v21_emiALLco2neg.l(ttot,regi); p21_taxrevFE0(ttot,regi) = sum((entyFe,sector)$entyFe2Sector(entyFe,sector), diff --git a/modules/32_power/IntC/equations.gms b/modules/32_power/IntC/equations.gms old mode 100644 new mode 100755 index 202724a60..73e738040 --- a/modules/32_power/IntC/equations.gms +++ b/modules/32_power/IntC/equations.gms @@ -14,9 +14,9 @@ q32_balSe(t,regi,enty2)$(sameas(enty2,"seel")).. pm_prodCouple(regi,enty,enty3,te,enty2) * vm_prodSe(t,regi,enty,enty3,te) ) + sum(pc2te(enty4,entyFE(enty5),te,enty2), pm_prodCouple(regi,enty4,enty5,te,enty2) * vm_prodFe(t,regi,enty4,enty5,te) ) - + sum(pc2te(enty,enty3,te,enty2), + + sum(pc2emi(emiAll,enty3,te,enty2), sum(teCCS2rlf(te,rlf), - pm_prodCouple(regi,enty,enty3,te,enty2) * vm_co2CCS(t,regi,enty,enty3,te,rlf) ) ) + pm_prodCoupleEmi(regi,emiAll,enty3,te,enty2) * vm_co2CCS(t,regi,emiAll,enty3,te,rlf) ) ) + vm_Mport(t,regi,enty2) =e= sum(se2fe(enty2,enty3,te), vm_demSe(t,regi,enty2,enty3,te) ) diff --git a/modules/32_power/RLDC/equations.gms b/modules/32_power/RLDC/equations.gms old mode 100644 new mode 100755 index c98532505..fcff3b3a6 --- a/modules/32_power/RLDC/equations.gms +++ b/modules/32_power/RLDC/equations.gms @@ -13,9 +13,9 @@ q32_balSe(t,regi,enty2)$(sameas(enty2,"seel")).. pm_prodCouple(regi,enty,enty3,te,enty2) * vm_prodSe(t,regi,enty,enty3,te) ) + sum(pc2te(enty4,entyFE(enty5),te,enty2), pm_prodCouple(regi,enty4,enty5,te,enty2) * vm_prodFe(t,regi,enty4,enty5,te) ) - + sum(pc2te(enty,enty3,te,enty2), + + sum(pc2emi(emiAll,enty3,te,enty2), sum(teCCS2rlf(te,rlf), - pm_prodCouple(regi,enty,enty3,te,enty2) * vm_co2CCS(t,regi,enty,enty3,te,rlf) ) ) + pm_prodCoupleEmi(regi,emiAll,enty3,te,enty2) * vm_co2CCS(t,regi,emiAll,enty3,te,rlf) ) ) + vm_Mport(t,regi,enty2) =e= sum(se2fe(enty2,enty3,te), vm_demSe(t,regi,enty2,enty3,te) ) @@ -57,9 +57,9 @@ q32_shTheo(t,regi,teVRE).. pm_prodCouple(regi,enty,enty3,te,enty2) * vm_prodSe(t,regi,enty,enty3,te) ) + sum(pc2te(enty4,entyFE(enty5),te,enty2), pm_prodCouple(regi,enty4,enty5,te,enty2) * vm_prodFe(t,regi,enty4,enty5,te) ) - + sum(pc2te(enty,enty3,te,enty2), + + sum(pc2emi(emiAll,enty3,te,enty2), sum(teCCS2rlf(te,rlf), - pm_prodCouple(regi,enty,enty3,te,enty2) * vm_co2CCS(t,regi,enty,enty3,te,rlf) ) ) + pm_prodCoupleEmi(regi,emiAll,enty3,te,enty2) * vm_co2CCS(t,regi,emiAll,enty3,te,rlf) ) ) ) ; diff --git a/modules/33_CDR/DAC/bounds.gms b/modules/33_CDR/DAC/bounds.gms old mode 100644 new mode 100755 index 446723bf1..e1d6af860 --- a/modules/33_CDR/DAC/bounds.gms +++ b/modules/33_CDR/DAC/bounds.gms @@ -5,7 +5,7 @@ *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de *** SOF ./modules/33_CDR/DAC/bounds.gms -vm_emiCdr.fx(t,regi,emi)$(not sameas(emi,"co2")) = 0.0; +vm_emiCdr.fx(t,regi,emiAll)$(not sameas(emiAll,"co2")) = 0.0; vm_emiCdr.l(t,regi,"co2")$(t.val gt 2020 AND cm_ccapturescen ne 2) = -sm_eps; vm_omcosts_cdr.fx(t,regi) = 0.0; v33_emiEW.fx(t,regi) = 0.0; diff --git a/modules/33_CDR/DAC/declarations.gms b/modules/33_CDR/DAC/declarations.gms old mode 100644 new mode 100755 index 02a0b3b27..a2cd65c58 --- a/modules/33_CDR/DAC/declarations.gms +++ b/modules/33_CDR/DAC/declarations.gms @@ -12,7 +12,7 @@ p33_dac_fedem_heat(all_enty) "specific heat demand for direct air captur ; variables -vm_ccs_cdr(ttot,all_regi,all_enty,all_enty,all_te,rlf) "CCS emissions from CDR [GtC / a]" +vm_ccs_cdr(ttot,all_regi,emiAll,all_enty,all_te,rlf) "CCS emissions from CDR [GtC / a]" v33_emiDAC(ttot,all_regi) "negative CO2 emission from DAC [GtC / a]" v33_emiEW(ttot,all_regi) "negative CO2 emission from EW [GtC / a] - fixed to 0, only defined for reporting reasons" ; @@ -29,7 +29,7 @@ q33_DacFEdemand_heat(ttot,all_regi,all_enty) "calculates DAC FE demand fo q33_DacFEdemand_el(ttot,all_regi,all_enty) "calculates DAC FE demand for electricity" q33_otherFEdemand(ttot,all_regi,all_enty) "calculates final energy demand from no transformation technologies (e.g. enhanced weathering)" q33_capconst_dac(ttot,all_regi) "calculates amount of carbon captured" -q33_ccsbal(ttot,all_regi,all_enty,all_enty,all_te) "calculates CCS emissions from CDR technologies" +q33_ccsbal(ttot,all_regi,emiAll,all_enty,all_te) "calculates CCS emissions from CDR technologies" q33_H2bio_lim(ttot,all_regi,all_te) "limits H2 from bioenergy to FE - otherFEdemand, i.e. no H2 from bioenergy for DAC" q33_emicdrregi(ttot,all_regi) "calculates the (negative) emissions due to CDR technologies" q33_demFeCDR(ttot,all_regi,all_enty) "CDR demand balance for final energy" diff --git a/modules/33_CDR/DAC/equations.gms b/modules/33_CDR/DAC/equations.gms old mode 100644 new mode 100755 index e3bb9acc3..daeed5b6d --- a/modules/33_CDR/DAC/equations.gms +++ b/modules/33_CDR/DAC/equations.gms @@ -70,8 +70,8 @@ q33_otherFEdemand(t,regi,entyFe).. ***--------------------------------------------------------------------------- *' Preparation of captured emissions to enter the CCS chain. ***--------------------------------------------------------------------------- -q33_ccsbal(t,regi,ccs2te(ccsCo2(enty),enty2,te)).. - sum(teCCS2rlf(te,rlf), vm_ccs_cdr(t,regi,enty,enty2,te,rlf)) +q33_ccsbal(t,regi,ccs2te(ccsCo2(emiAll),enty2,te)).. + sum(teCCS2rlf(te,rlf), vm_ccs_cdr(t,regi,emiAll,enty2,te,rlf)) =e= -vm_emiCdr(t,regi,"co2") ; diff --git a/modules/33_CDR/all/declarations.gms b/modules/33_CDR/all/declarations.gms old mode 100644 new mode 100755 index e37940da7..533ef70bb --- a/modules/33_CDR/all/declarations.gms +++ b/modules/33_CDR/all/declarations.gms @@ -31,7 +31,7 @@ v33_DacFEdemand_heat(ttot,all_regi,all_enty) "DAC FE heat demand [TWa]" ; variables -vm_ccs_cdr(ttot,all_regi,all_enty,all_enty,all_te,rlf) "CCS emissions from CDR [GtC / a]" +vm_ccs_cdr(ttot,all_regi,emiAll,all_enty,all_te,rlf) "CCS emissions from CDR [GtC / a]" v33_emiDAC(ttot,all_regi) "carbon captured from DAC [GtC / a]" v33_emiEW(ttot,all_regi) "negative CO2 emission from EW [GtC / a]" ; @@ -49,7 +49,7 @@ q33_emiEW(ttot,all_regi) "calculates amount of carbon q33_LimEmiEW(ttot,all_regi) "limits EW to a maximal annual amount of ground rock of cm_LimRock" q33_capconst_dac(ttot,all_regi) "calculates amount of carbon captured by DAC" q33_emicdrregi(ttot,all_regi) "calculates the (negative) emissions due to CDR technologies" -q33_ccsbal(ttot,all_regi,all_enty,all_enty,all_te) "calculates CCS emissions from CDR technologies" +q33_ccsbal(ttot,all_regi,emiAll,all_enty,all_te) "calculates CCS emissions from CDR technologies" q33_H2bio_lim(ttot,all_regi,all_te) "limits H2 from bioenergy to FE - otherFEdemand, i.e. no H2 from bioenergy for DAC" ; diff --git a/modules/33_CDR/all/equations.gms b/modules/33_CDR/all/equations.gms old mode 100644 new mode 100755 index baa5f0e2d..d8560e56d --- a/modules/33_CDR/all/equations.gms +++ b/modules/33_CDR/all/equations.gms @@ -131,8 +131,8 @@ q33_potential(t,regi,rlf).. ***--------------------------------------------------------------------------- *' Preparation of captured emissions to enter the CCS chain. ***--------------------------------------------------------------------------- -q33_ccsbal(t,regi,ccs2te(ccsCo2(enty),enty2,te)).. - sum(teCCS2rlf(te,rlf), vm_ccs_cdr(t,regi,enty,enty2,te,rlf)) +q33_ccsbal(t,regi,ccs2te(ccsCo2(emiAll),enty2,te)).. + sum(teCCS2rlf(te,rlf), vm_ccs_cdr(t,regi,emiAll,enty2,te,rlf)) =e= -v33_emiDAC(t,regi) ; diff --git a/modules/33_CDR/off/bounds.gms b/modules/33_CDR/off/bounds.gms old mode 100644 new mode 100755 index fab544d61..d4352ed84 --- a/modules/33_CDR/off/bounds.gms +++ b/modules/33_CDR/off/bounds.gms @@ -9,7 +9,7 @@ vm_otherFEdemand.fx(t,regi,entyFe) = 0; vm_cap.fx(t,regi,"rockgrind",rlf) = 0; vm_emiCdr.fx(t,regi,enty) = 0; vm_omcosts_cdr.fx(t,regi) = 0; -vm_ccs_cdr.fx(t,regi,enty,enty2,te,rlf)$ccs2te(enty,enty2,te) = 0; +vm_ccs_cdr.fx(t,regi,emiAll,enty2,te,rlf)$ccs2te(emiAll,enty2,te) = 0; v33_grindrock_onfield.fx(t,regi,rlf,rlf2) = 0; v33_grindrock_onfield_tot.fx(t,regi,rlf,rlf2) = 0; diff --git a/modules/33_CDR/off/declarations.gms b/modules/33_CDR/off/declarations.gms old mode 100644 new mode 100755 index f0211497c..bd351ad58 --- a/modules/33_CDR/off/declarations.gms +++ b/modules/33_CDR/off/declarations.gms @@ -6,7 +6,7 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/33_CDR/off/declarations.gms variables -vm_ccs_cdr(ttot,all_regi,all_enty,all_enty,all_te,rlf) "CCS emissions from CDR [GtC / a]" +vm_ccs_cdr(ttot,all_regi,emiAll,all_enty,all_te,rlf) "CCS emissions from CDR [GtC / a]" ; positive variables diff --git a/modules/33_CDR/weathering/bounds.gms b/modules/33_CDR/weathering/bounds.gms old mode 100644 new mode 100755 index 85138564f..def3b0f1b --- a/modules/33_CDR/weathering/bounds.gms +++ b/modules/33_CDR/weathering/bounds.gms @@ -10,6 +10,6 @@ v33_grindrock_onfield_tot.up(t,regi,rlf,rlf2) = s33_step; v33_grindrock_onfield_tot.fx("2005",regi,rlf,rlf2) = 0.0; v33_grindrock_onfield.fx(t,regi,rlf,rlf2)$(rlf2.val gt 10) = 0; v33_grindrock_onfield_tot.fx(t,regi,rlf,rlf2)$(rlf2.val gt 10) = 0; -vm_ccs_cdr.fx(t,regi,enty,enty2,te,rlf)$ccs2te(enty,enty2,te) = 0; +vm_ccs_cdr.fx(t,regi,emiAll,enty2,te,rlf)$ccs2te(emiAll,enty2,te) = 0; v33_emiDAC.fx(t,regi) = 0.0; *** EOF ./modules/33_CDR/weathering/bounds.gms diff --git a/modules/33_CDR/weathering/declarations.gms b/modules/33_CDR/weathering/declarations.gms old mode 100644 new mode 100755 index 9ffe3f690..c9aa82f1a --- a/modules/33_CDR/weathering/declarations.gms +++ b/modules/33_CDR/weathering/declarations.gms @@ -26,7 +26,7 @@ v33_grindrock_onfield_tot(ttot,all_regi,rlf,rlf) "total amount of ground roc ; variables -vm_ccs_cdr(ttot,all_regi,all_enty,all_enty,all_te,rlf) "CCS emissions from CDR [GtC / a]" +vm_ccs_cdr(ttot,all_regi,emiAll,all_enty,all_te,rlf) "CCS emissions from CDR [GtC / a]" v33_emiEW(ttot,all_regi) "negative CO2 emission from EW [GtC / a]" v33_emiDAC(ttot,all_regi) "negative CO2 emission from DAC [GtC / a] - fixed to 0, only defined for reporting reasons" ; diff --git a/modules/37_industry/fixed_shares/declarations.gms b/modules/37_industry/fixed_shares/declarations.gms old mode 100644 new mode 100755 index 9da7ff4cd..62516d2a1 --- a/modules/37_industry/fixed_shares/declarations.gms +++ b/modules/37_industry/fixed_shares/declarations.gms @@ -27,8 +27,8 @@ Parameters pm_IndstCO2Captured(ttot,all_regi,all_enty,all_enty,secInd37,all_emiMkt) "Captured CO2 in industry by energy carrier, subsector and emissions market" *** output parameters only for reporting - o37_emiInd(ttot,all_regi,all_enty,secInd37,all_enty) "industry CCS emissions [GtC/a]" - o37_cementProcessEmissions(ttot,all_regi,all_enty) "cement process emissions [GtC/a]" + o37_emiInd(ttot,all_regi,all_enty,secInd37,emiAll) "industry CCS emissions [GtC/a]" + o37_cementProcessEmissions(ttot,all_regi,emiAll) "cement process emissions [GtC/a]" o37_CESderivatives(ttot,all_regi,all_in,all_in) "derivatives of production CES function" o37_demFeIndSub(ttot,all_regi,all_enty,all_enty,secInd37,all_emiMkt) "FE demand per industry subsector, FE carrier, SE carrier, emissions market" o37_demFeIndSub_SecCC(ttot,all_regi,secInd37) "FE per subsector whose emissions can be captured, helper parameter for calculation of industry captured CO2" diff --git a/modules/37_industry/fixed_shares/postsolve.gms b/modules/37_industry/fixed_shares/postsolve.gms old mode 100644 new mode 100755 index 8c28952ae..7ce1af3e1 --- a/modules/37_industry/fixed_shares/postsolve.gms +++ b/modules/37_industry/fixed_shares/postsolve.gms @@ -6,9 +6,9 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/37_industry/fixed_shares/postsolve.gms -loop (enty$( sameas(enty,"co2") OR sameas(enty,"cco2") ), +loop (emiAll$( sameas(emiAll,"co2") OR sameas(emiAll,"cco2") ), !! prepare industry CCS emissions for post-processing - o37_emiInd(ttot,regi,entyPe,secInd37,enty)$( ttot.val ge 2005 ) + o37_emiInd(ttot,regi,entyPe,secInd37,emiAll)$( ttot.val ge 2005 ) = sum(secInd37_2_emiInd37(secInd37,emiInd37(emiInd37_fuel)), sum(pe2se(entyPE,entySE,te), sum(se2fe(entySE,entyFE,te2), @@ -39,10 +39,10 @@ loop (enty$( sameas(enty,"co2") OR sameas(enty,"cco2") ), ) ) ) - * ( 1$( sameas(enty,"co2") ) !! 1 for co2, 0 for cco2 + * ( 1$( sameas(emiAll,"co2") ) !! 1 for co2, 0 for cco2 + ( pm_macSwitch(emiInd37) * pm_macAbatLev(ttot,regi,emiInd37) - * ((0.5 - 1$( sameas(enty,"co2") )) * 2) !! -1 for co2, 1 for cco2 + * ((0.5 - 1$( sameas(emiAll,"co2") )) * 2) !! -1 for co2, 1 for cco2 ) ) !! residual emissions for co2, abated emissions for cco2 ); @@ -52,12 +52,12 @@ loop (enty$( sameas(enty,"co2") OR sameas(enty,"cco2") ), o37_emiInd(ttot,regi,peRe,secInd37,"co2") = 0; !! prepare cement process emissions for post-processing - o37_cementProcessEmissions(ttot,regi,enty)$( ttot.val ge 2005 ) + o37_cementProcessEmissions(ttot,regi,emiAll)$( ttot.val ge 2005 ) = vm_macBaseInd.l(ttot,regi,"co2cement_process","cement") - * ( 1$( sameas(enty,"co2") ) !! 1 for co2, 0 for cco2 + * ( 1$( sameas(emiAll,"co2") ) !! 1 for co2, 0 for cco2 + ( pm_macSwitch("co2cement") * pm_macAbatLev(ttot,regi,"co2cement") - * ((0.5 - 1$( sameas(enty,"co2") )) * 2) !! -1 for co2, 1 for cco2 + * ((0.5 - 1$( sameas(emiAll,"co2") )) * 2) !! -1 for co2, 1 for cco2 ) ); !! residual emissions for co2, abated emissions for cco2 diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms old mode 100644 new mode 100755 index 32af13964..01043d953 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -24,8 +24,8 @@ Parameters p37_CESMkup(ttot,all_regi,all_in) "CES markup cost parameter [trUSD/CES input]" *** output parameters only for reporting - o37_emiInd(ttot,all_regi,all_enty,secInd37,all_enty) "industry CCS emissions [GtC/a]" - o37_cementProcessEmissions(ttot,all_regi,all_enty) "cement process emissions [GtC/a]" + o37_emiInd(ttot,all_regi,all_enty,secInd37,emiAll) "industry CCS emissions [GtC/a]" + o37_cementProcessEmissions(ttot,all_regi,emiAll) "cement process emissions [GtC/a]" o37_demFeIndTotEn(ttot,all_regi,all_enty,all_emiMkt) "total FE per energy carrier and emissions market in industry (sum over subsectors)" o37_shIndFE(ttot,all_regi,all_enty,secInd37,all_emiMkt) "share of subsector in FE industry energy carriers and emissions markets" o37_demFeIndSub(ttot,all_regi,all_enty,all_enty,secInd37,all_emiMkt) "FE demand per industry subsector" diff --git a/modules/37_industry/subsectors/postsolve.gms b/modules/37_industry/subsectors/postsolve.gms old mode 100644 new mode 100755 index 4e4cd01f8..270fea2a2 --- a/modules/37_industry/subsectors/postsolve.gms +++ b/modules/37_industry/subsectors/postsolve.gms @@ -7,9 +7,9 @@ *** SOF ./modules/37_industry/subsectors/postsolve.gms *' Prepare industry emissions for post-processing -loop (enty$( sameas(enty,"co2") OR sameas(enty,"cco2") ), +loop (emiAll$( sameas(emiAll,"co2") OR sameas(emiAll,"cco2") ), !! emissions from fuel burning - o37_emiInd(ttot,regi,entyPE,secInd37,enty)$( ttot.val ge 2005 ) + o37_emiInd(ttot,regi,entyPE,secInd37,emiAll)$( ttot.val ge 2005 ) !! link sector to emissions (sector-specifc MAC) = sum(secInd37_2_emiInd37(secInd37,emiInd37(emiInd37_fuel)), !! link sector energy use to FE/SE/PE production @@ -39,22 +39,22 @@ loop (enty$( sameas(enty,"co2") OR sameas(enty,"cco2") ), ) ) !! residual emissions for co2, abated emissions for cco2 - * ( 1$( sameas(enty,"co2") ) !! 1 for co2, 0 for cco2 + * ( 1$( sameas(emiAll,"co2") ) !! 1 for co2, 0 for cco2 + ( pm_macSwitch(emiInd37) * pm_macAbatlev(ttot,regi,emiInd37) - * ((0.5 - 1$( sameas(enty,"co2") )) * 2) !! -1 for co2, 1 for cco2 + * ((0.5 - 1$( sameas(emiAll,"co2") )) * 2) !! -1 for co2, 1 for cco2 ) ) ); !! cement process emissions - o37_cementProcessEmissions(ttot,regi,enty)$( ttot.val ge 2005 ) + o37_cementProcessEmissions(ttot,regi,emiAll)$( ttot.val ge 2005 ) = vm_macBaseInd.l(ttot,regi,"co2cement_process","cement") !! residual emissions for co2, abated emissions for cco2 - * ( 1$( sameas(enty,"co2") ) !! 1 for co2, 0 for cco2 + * ( 1$( sameas(emiAll,"co2") ) !! 1 for co2, 0 for cco2 + ( pm_macSwitch("co2cement") * pm_macAbatLev(ttot,regi,"co2cement") - * ((0.5 - 1$( sameas(enty,"co2") )) * 2) !! -1 for co2, 1 for cco2 + * ((0.5 - 1$( sameas(emiAll,"co2") )) * 2) !! -1 for co2, 1 for cco2 ) ); ); diff --git a/modules/39_CCU/off/declarations.gms b/modules/39_CCU/off/declarations.gms old mode 100644 new mode 100755 index f0068161c..9971a9367 --- a/modules/39_CCU/off/declarations.gms +++ b/modules/39_CCU/off/declarations.gms @@ -13,7 +13,7 @@ *-----------------------------------------------ESM module------------------------ positive variables -vm_co2CCUshort(ttot,all_regi,all_enty,all_enty,all_te,rlf) "CO2 captured in CCU te that have a persistence for co2 storage shorter than 5 years. Unit GtC/a" +vm_co2CCUshort(ttot,all_regi,emiAll,all_enty,all_te,rlf) "CO2 captured in CCU te that have a persistence for co2 storage shorter than 5 years. Unit GtC/a" ; *** EOF ./modules/39_CCU/off/declarations.gms diff --git a/modules/39_CCU/on/declarations.gms b/modules/39_CCU/on/declarations.gms old mode 100644 new mode 100755 index ba675ea56..8dabb4ee0 --- a/modules/39_CCU/on/declarations.gms +++ b/modules/39_CCU/on/declarations.gms @@ -11,7 +11,7 @@ p39_co2_dem(ttot,all_regi,all_enty,all_enty,all_te) "CO2 demand of CCU techn ; positive variables -vm_co2CCUshort(ttot,all_regi,all_enty,all_enty,all_te,rlf) "CO2 captured in CCU te that have a persistence for co2 storage shorter than 5 years. Unit GtC/a" +vm_co2CCUshort(ttot,all_regi,emiAll,all_enty,all_te,rlf) "CO2 captured in CCU te that have a persistence for co2 storage shorter than 5 years. Unit GtC/a" v39_shSynTrans(ttot,all_regi) "Share of synthetic liquids in all SE liquids. Value between 0 and 1." v39_shSynGas(ttot,all_regi) "Share of synthetic gas in all SE gases. Value between 0 and 1." ; diff --git a/modules/47_regipol/regiCarbonPrice/equations.gms b/modules/47_regipol/regiCarbonPrice/equations.gms old mode 100644 new mode 100755 index bc087d8a2..d86b104f0 --- a/modules/47_regipol/regiCarbonPrice/equations.gms +++ b/modules/47_regipol/regiCarbonPrice/equations.gms @@ -44,7 +44,7 @@ q47_emiTarget_grossEnCO2(t,regi).. *** DAC accounting of synfuels: remove CO2 of vm_emiCDR (which is negative) from vm_emiTe which is not stored in vm_co2CCS + vm_emiCdr(t,regi,"co2") * (1-pm_share_CCS_CCO2(t,regi)) *** add pe2se BECCS - + sum(emi2te(enty,enty2,te,enty3)$(teBio(te) AND teCCS(te) AND sameAs(enty3,"cco2")), vm_emiTeDetail(t,regi,enty,enty2,te,enty3)) * pm_share_CCS_CCO2(t,regi) + + sum(emi2te(enty,enty2,te,emiAll)$(teBio(te) AND teCCS(te) AND sameAs(emiAll,"cco2")), vm_emiTeDetail(t,regi,enty,enty2,te,emiAll)) * pm_share_CCS_CCO2(t,regi) *** add industry CCS with hydrocarbon fuels from biomass (industry BECCS) or synthetic origin + sum( (entySe,entyFe,secInd37,emiMkt)$(NOT (entySeFos(entySe))), pm_IndstCO2Captured(t,regi,entySe,entyFe,secInd37,emiMkt)) * pm_share_CCS_CCO2(t,regi) diff --git a/modules/80_optimization/nash/datainput.gms b/modules/80_optimization/nash/datainput.gms old mode 100644 new mode 100755 index ce2b35e46..7f7535dac --- a/modules/80_optimization/nash/datainput.gms +++ b/modules/80_optimization/nash/datainput.gms @@ -81,7 +81,7 @@ vm_fuExtr.l(ttot,regi,tradePe,rlf)$(ttot.val ge 2005) = 0; vm_prodPe.l(ttot,regi,tradePe)$(ttot.val ge 2005) = 0; vm_taxrev.l(ttot,regi)$(ttot.val gt 2005) = 0; vm_co2eq.l(ttot,regi) = 0; -vm_emiAll.l(ttot,regi,enty) = 0; +vm_emiAll.l(ttot,regi,emiTe) = 0; p80_repy(all_regi,solveinfo80) = 0; pm_capCumForeign(ttot,regi,teLearn)$(ttot.val ge 2005)=0; qm_co2eqCum.m(regi) = 0; diff --git a/modules/80_optimization/nash/presolve.gms b/modules/80_optimization/nash/presolve.gms old mode 100644 new mode 100755 index c438d401b..8dd30924e --- a/modules/80_optimization/nash/presolve.gms +++ b/modules/80_optimization/nash/presolve.gms @@ -16,7 +16,7 @@ pm_cumEff(ttot,regi, in)$(ttot.val ge 2005 and pm_SolNonInfes(regi) eq 1) = sum( pm_co2eqForeign(ttot,regi)$((ttot.val ge 2005) and (pm_SolNonInfes(regi) eq 1)) = sum(regi2$((NOT sameas(regi,regi2))), pm_co2eq0(ttot,regi2)); !! does this interfere with the initialization in datainput? -pm_emissionsForeign(ttot,regi,enty)$((ttot.val ge 2005) and (pm_SolNonInfes(regi) eq 1)) = sum(regi2$((NOT sameas(regi,regi2))), pm_emissions0(ttot,regi2,enty)); +pm_emissionsForeign(ttot,regi,emiTe)$((ttot.val ge 2005) and (pm_SolNonInfes(regi) eq 1)) = sum(regi2$((NOT sameas(regi,regi2))), pm_emissions0(ttot,regi2,emiTe)); pm_fuExtrForeign(ttot,regi,enty,rlf)$((ttot.val ge 2005) and (pm_SolNonInfes(regi) eq 1)) = sum(regi2$((NOT sameas(regi,regi2))), vm_fuExtr.l(ttot,regi2,enty,rlf)); diff --git a/modules/80_optimization/negishi/datainput.gms b/modules/80_optimization/negishi/datainput.gms old mode 100644 new mode 100755 index 18a3284c9..3c7ddf2b7 --- a/modules/80_optimization/negishi/datainput.gms +++ b/modules/80_optimization/negishi/datainput.gms @@ -22,7 +22,7 @@ p80_defic_sum("1") = 1; pm_capCumForeign(t,regi,teLearn) = 0; pm_cumEff(t,regi,in) = 0; pm_co2eqForeign(t,regi) = 0; -pm_emissionsForeign(t,regi,enty) = 0; +pm_emissionsForeign(t,regi,emiTe) = 0; pm_fuExtrForeign(t,regi,enty,rlf) = 0; pm_SolNonInfes(regi) = 1; !! assume the starting point came from a feasible solution diff --git a/modules/80_optimization/testOneRegi/datainput.gms b/modules/80_optimization/testOneRegi/datainput.gms old mode 100644 new mode 100755 index b3ac48815..36a5ad2dc --- a/modules/80_optimization/testOneRegi/datainput.gms +++ b/modules/80_optimization/testOneRegi/datainput.gms @@ -23,7 +23,7 @@ $include "./modules/80_optimization/testOneRegi/input/prices_NASH.inc"; pm_capCumForeign(ttot,regi,teLearn)$(ttot.val ge 2005) = 0; pm_cumEff(t,regi,in) = 0; pm_co2eqForeign(t,regi) = 0; -pm_emissionsForeign(t,regi,enty) = 0; +pm_emissionsForeign(t,regi,emiTe) = 0; pm_SolNonInfes(regi) = 1; !! assume the starting point came from a feasible solution pm_fuExtrForeign(t,regi,enty,rlf) = 0;