From ec30df1a2f22cfc19f9de2b5d2715cb5ab433838 Mon Sep 17 00:00:00 2001 From: Johannes Koch <jokoch@pik-potsdam.de> Date: Wed, 15 Jan 2020 12:08:57 +0100 Subject: [PATCH] Fixup remaining issues The code should now run. Some namechanges had to be corrected/reversed. These module additions do not affect the results. Further improvements will be commited at a later date. --- .gitignore | 2 +- config/default.cfg | 2 +- core/datainput.gms | 24 +++++++++++++++++-- core/declarations.gms | 6 ++--- core/input/files | 3 +++ core/postsolve.gms | 2 +- core/presolve.gms | 12 +++++----- main.gms | 4 ++-- .../02_welfare/utilitarian/declarations.gms | 1 - modules/24_trade/standard/datainput.gms | 23 ------------------ 10 files changed, 39 insertions(+), 40 deletions(-) diff --git a/.gitignore b/.gitignore index 1250cd2..78fa0e0 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ core/input/f_macBaseMagpie.cs4r core/input/f_maxProdGradeRegiHydro.cs3r core/input/f_maxProdGradeRegiWind.cs3r core/input/f_pop.cs3r +core/input/f_IO_trade.cs4r core/input/p_abatparam_CH4.cs4r core/input/p_abatparam_N2O.cs4r core/input/p_abatparam_CO2.cs4r @@ -79,7 +80,6 @@ modules/23_capitalMarket/imperfect/input/pm_ies.cs4r modules/23_capitalMarket/imperfect/input/pm_nfa_start.cs4r modules/23_capitalMarket/imperfect/input/pm_risk_premium.cs4r modules/23_capitalMarket/perfect/input/pm_nfa_start.cs4r -modules/24_trade/standard/input/f24_IO_trade.cs4r modules/24_trade/standard/input/pm_costsPEtradeMp.cs4r modules/24_trade/standard/input/pm_costsTradePeFinancial.cs3r modules/26_agCosts/costs/input/p26_totLUcostLookup.cs4r diff --git a/config/default.cfg b/config/default.cfg index 758a9ea..5c9de30 100755 --- a/config/default.cfg +++ b/config/default.cfg @@ -13,7 +13,7 @@ cfg <- list() #### Main settings #### #short description of the actual run -cfg$title <- "default_mm" +cfg$title <- "default" # path to the submodel to be used relative to main model folder (e.g."standalone/template.gms") #cfg$model <- "main.gms" #def = "main.gms" diff --git a/core/datainput.gms b/core/datainput.gms index 774ab42..22e7f30 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -114,12 +114,12 @@ p_developmentState(tall,all_regi) = f_developmentState(tall,all_regi,"%c_GDPpcSc *** Load information from BAU run $ifthen.cm_compile_main %cm_compile_main% == "TRUE" pm_gdp_gdx(ttot,regi) = 0; -pm_inv_gdx(ttot,regi) = 0; +p_inv_gdx(ttot,regi) = 0; $else.cm_compile_main Execute_Loadpoint 'input' vm_cesIO, vm_invMacro; pm_gdp_gdx(ttot,regi) = vm_cesIO.l(ttot,regi,"inco"); -pm_inv_gdx(ttot,regi) = vm_invMacro.l(ttot,regi,"kap"); +p_inv_gdx(ttot,regi) = vm_invMacro.l(ttot,regi,"kap"); $endif.cm_compile_main *** permit price initilization @@ -327,6 +327,26 @@ loop(emi2te(enty,enty2,te,enty3)$teCCS(te), p_boundtmp(ttot,all_regi,te,rlf)$(ttot.val ge 2005) = 0; p_bound_cap(ttot,all_regi,te,rlf)$(ttot.val ge 2005) = 0; +*NB* include data and parameters for upper bounds on fossil fuel transport +parameter f_IO_trade(tall,all_regi,all_enty,char) "Energy trade bounds based on IEA data" +/ +$ondelim +$include "./core/input/f_IO_trade.cs4r" +$offdelim +/ +; +pm_IO_trade(ttot,regi,enty,char) = f_IO_trade(ttot,regi,enty,char) * sm_EJ_2_TWa; + +*LB* use scaled data for export to guarantee net trade = 0 for each traded good +loop(tradePe, + loop(t, + if(sum(regi2, pm_IO_trade(t,regi2,tradePe,"Xport")) ne 0, + pm_IO_trade(t,regi,tradePe,"Xport") = pm_IO_trade(t,regi,tradePe,"Xport") * sum(regi2, pm_IO_trade(t,regi2,tradePe,"Mport")) / sum(regi2, pm_IO_trade(t,regi2,tradePe,"Xport")); + ); + ); +); +display pm_IO_trade; + ***nicolasb*DOT* FILE produced from D:\projekte\rose\resources\fossilGrades_nico.m; 2011,12,16;12:14:44 ***nicolasb*DOT* original data from literature (Brandt 2009, Charpentier 2009) ***nicolasb*DOT* data files are available at RD3 drive roseBob_finSSP.xls diff --git a/core/declarations.gms b/core/declarations.gms index 319c5ca..e560f50 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -26,7 +26,7 @@ pm_pricePerm(ttot) "permit price in special ca p_share(ttot,all_regi,all_in,all_in) "share of production factors" pm_share_trans(tall,all_regi) "transportation share" pm_gdp_gdx(tall,all_regi) "GDP path from gdx, updated iteratively." -pm_inv_gdx(tall,all_regi) "macro-investments path from gdx, updated iteratively." +p_inv_gdx(tall,all_regi) "macro-investments path from gdx, updated iteratively." pm_taxCO2eq(ttot,all_regi) "CO2 tax path in T$/GtC = $/kgC. To get $/tCO2, multiply with 272 [T$/GtC]" pm_taxCO2eqHist(ttot,all_regi) "Historic CO2 tax path in 2010 and 2015 (also in BAU!) in T$/GtC = $/kgC. To get $/tCO2, multiply with 272 [T$/GtC]" pm_taxCO2eq_iteration(iteration,ttot,all_regi) "save CO2eq tax used in iteration" @@ -267,7 +267,7 @@ vm_damageFactor(ttot,all_regi) "damage factor reducing GDP vm_esCapInv(ttot,all_regi,all_teEs) "investment for energy end-use capital at the energy service level" ***---------------------------------------------------------------------------------------- *-----------------------------------------------ESM module--------------------------------- -vm_costEnergySys(ttot,all_regi) "total energy cost" +vm_costEnergySys(ttot,all_regi) "energy system costs" vm_cap(tall,all_regi,all_te,rlf) "net total capacities" vm_capDistr(tall,all_regi,all_te,rlf) "net capacities, distributed to the different grades for renewables" @@ -318,7 +318,7 @@ q_limitSeel2fehes(ttot,all_regi) "equation to limit the shar q_esCapInv(ttot,all_regi,all_teEs) "investment equation for end-use capital investments (energy service layer)" ***---------------------------------------------------------------------------------------- ***-----------------------------------------------ESM module------------------------------- -q_costEnergySys(ttot,all_regi) "total energy cost" +q_costEnergySys(ttot,all_regi) "energy system costs" q_costFu(ttot,all_regi) "costs of fuels" q_costOM(ttot,all_regi) "costs of o&m" diff --git a/core/input/files b/core/input/files index 2b766a8..510d2f1 100644 --- a/core/input/files +++ b/core/input/files @@ -7,6 +7,7 @@ f_macBaseMagpie.cs4r f_maxProdGradeRegiHydro.cs3r f_maxProdGradeRegiWind.cs3r f_pop.cs3r +f_IO_trade.cs4r p_abatparam_CH4.cs4r p_abatparam_N2O.cs4r p_abatparam_CO2.cs4r @@ -18,6 +19,8 @@ p_earlyRetirementAdjFactor.cs3r p_emiFossilFuelExtr.cs4r p_emineg_econometric.cs3r p_histCap.cs3r +p_histEmiMac.cs4r +p_histEmiSector.cs4r p_PE_histCap.cs3r p_macBase1990.cs4r p_macBase2005.cs4r diff --git a/core/postsolve.gms b/core/postsolve.gms index 030d56c..986af9a 100644 --- a/core/postsolve.gms +++ b/core/postsolve.gms @@ -564,7 +564,7 @@ display p_bioshare; *LB* update parameter that are used for variables during the run pm_gdp_gdx(ttot,regi)$(ttot.val ge 2005) = vm_cesIO.l(ttot,regi,"inco"); -pm_inv_gdx(ttot,regi)$(ttot.val ge 2005) = vm_invMacro.l(ttot,regi,"kap"); +p_inv_gdx(ttot,regi)$(ttot.val ge 2005) = vm_invMacro.l(ttot,regi,"kap"); pm_GDPGross(ttot,regi)$( (pm_SolNonInfes(regi) eq 1) ) = vm_cesIO.l(ttot,regi,"inco"); diff --git a/core/presolve.gms b/core/presolve.gms index 9886986..4629f60 100644 --- a/core/presolve.gms +++ b/core/presolve.gms @@ -26,7 +26,7 @@ p_emineg_econometric(regi,"n2owaste","p2")$(pm_gdp_gdx("2005",regi)/pm_pop("2005 *JeS CO2 emissions from cement production. p_switch_cement 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). p_switch_cement(ttot,regi)$(ttot.val ge 2005) = 1 / ( 1 + exp( - (s_c_so2 / s_tau_cement) - *(1000 * pm_inv_gdx(ttot,regi) / (pm_pop(ttot,regi)*pm_shPPPMER(regi)) - p_emineg_econometric(regi,"co2cement_process","p4")) + *(1000 * p_inv_gdx(ttot,regi) / (pm_pop(ttot,regi)*pm_shPPPMER(regi)) - p_emineg_econometric(regi,"co2cement_process","p4")) ) ); display p_switch_cement; @@ -42,8 +42,8 @@ p_emineg_econometric(regi,"co2cement_process","p1")$( p_switch_cement("2005",reg * ( ( 1000 !! use default per-capita investments if no investment data in gdx !! (due to different region settings) - * ( (pm_inv_gdx("2005",regi) / pm_pop("2005",regi))$( pm_inv_gdx("2005",regi) ) - + 4$( NOT pm_inv_gdx("2005",regi) ) + * ( (p_inv_gdx("2005",regi) / pm_pop("2005",regi))$( p_inv_gdx("2005",regi) ) + + 4$( NOT p_inv_gdx("2005",regi) ) ) / pm_shPPPMER(regi) ) @@ -96,7 +96,7 @@ display p_efFossilFuelExtr; ***-------------------------------------- *JeS CO2 emissions from cement production. p_switch_cement 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). -p_switch_cement(ttot,regi)$(ttot.val ge 1990)=1/(1+exp(-(s_c_so2/s_tau_cement)*(1000*pm_inv_gdx(ttot,regi)/(pm_pop(ttot,regi)*pm_shPPPMER(regi))-p_emineg_econometric(regi,"co2cement_process","p4")))); +p_switch_cement(ttot,regi)$(ttot.val ge 1990)=1/(1+exp(-(s_c_so2/s_tau_cement)*(1000*p_inv_gdx(ttot,regi)/(pm_pop(ttot,regi)*pm_shPPPMER(regi))-p_emineg_econometric(regi,"co2cement_process","p4")))); display p_switch_cement; *** scale CO2 luc baselines from MAgPIE to EDGAR v4.2 2005 data in REMIND standalone runs: linear, phase out within 20 years @@ -155,7 +155,7 @@ vm_macBase.fx(ttot,regi,"co2cement_process")$( ttot.val ge 2005 ) * ( (1 - p_switch_cement(ttot,regi)) * p_emineg_econometric(regi,"co2cement_process","p1") * ( (1000 - * pm_inv_gdx(ttot,regi) + * p_inv_gdx(ttot,regi) / ( pm_pop(ttot,regi) * pm_shPPPMER(regi) ) @@ -165,7 +165,7 @@ vm_macBase.fx(ttot,regi,"co2cement_process")$( ttot.val ge 2005 ) * p_emineg_econometric(regi,"co2cement_process","p3") ) ) - )$(pm_inv_gdx(ttot,regi) ne 0) + )$(p_inv_gdx(ttot,regi) ne 0) ; vm_macBaseInd.fx(ttot,regi,"co2cement_process","cement")$( ttot.val ge 2005 ) diff --git a/main.gms b/main.gms index bc20146..f9c27fe 100644 --- a/main.gms +++ b/main.gms @@ -74,7 +74,7 @@ * * Input data revision: 5.937 * -* Last modification (input data): Wed Jan 15 10:44:14 2020 +* Last modification (input data): Wed Jan 15 14:19:35 2020 * *###################### R SECTION END (VERSION INFO) ########################### @@ -120,7 +120,7 @@ option profile = 0; ***--------------------- Run name ----------------------------------------- -$setGlobal c_expname default_mm +$setGlobal c_expname default ***------------------------------------------------------------------------------ *** MODULES diff --git a/modules/02_welfare/utilitarian/declarations.gms b/modules/02_welfare/utilitarian/declarations.gms index 49d34a3..81d7050 100644 --- a/modules/02_welfare/utilitarian/declarations.gms +++ b/modules/02_welfare/utilitarian/declarations.gms @@ -29,7 +29,6 @@ vm_welfareGlob "Global welfare" $ifthen.inconv %cm_INCONV_PENALTY% == "on" v02_inconvPen(ttot,all_regi) "Inconvenience penalty in the welfare function, e.g. for air pollution. Unit: ?Utils?" v02_inconvPenCoalSolids(ttot,all_regi) "Inconvenience penalty in the welfare function, e.g. for air pollution. Unit: ?Utils?" -v02_inconvPenCoalSolids(ttot,all_regi) "Inconvenience penalty in the welfare function, e.g. for air pollution. Unit: ?Utils?" v02_sesoInconvPenSlack(ttot,all_regi) "Slack to avoid negative inconvenience penalty for Coal Solids" $endif.inconv ; diff --git a/modules/24_trade/standard/datainput.gms b/modules/24_trade/standard/datainput.gms index fb82f4a..ede5a82 100644 --- a/modules/24_trade/standard/datainput.gms +++ b/modules/24_trade/standard/datainput.gms @@ -12,29 +12,6 @@ pm_Xport0("2005",regi,peFos) = 0; *ML* Reintroduction of trade cost for composite good (based on export/import value difference for non-energy goods in GTAP6) pm_tradecostgood(regi) = 0.03; - -*NB* include data and parameters for upper bounds on fossil fuel transport -parameter f24_IO_trade(tall,all_regi,all_enty,char) "Energy trade bounds based on IEA data" -/ -$ondelim -$include "./modules/24_trade/standard/input/f24_IO_trade.cs4r" -$offdelim -/ -; -pm_IO_trade(ttot,regi,enty,char) = f24_IO_trade(ttot,regi,enty,char) * sm_EJ_2_TWa; - -*LB* use scaled data for export to guarantee net trade = 0 for each traded good -loop(tradePe, - loop(t, - if(sum(regi2, pm_IO_trade(t,regi2,tradePe,"Xport")) ne 0, - pm_IO_trade(t,regi,tradePe,"Xport") = pm_IO_trade(t,regi,tradePe,"Xport") * sum(regi2, pm_IO_trade(t,regi2,tradePe,"Mport")) / sum(regi2, pm_IO_trade(t,regi2,tradePe,"Xport")); - ); - ); -); -display pm_IO_trade; - - - *** load data on transportation costs of imports parameter pm_costsPEtradeMp(all_regi,all_enty) "PE tradecosts (energy losses on import)" / -- GitLab