diff --git a/README.md b/README.md index 54db8cd5e4d2385fc9b2004c87e9fbbe0cf3f133..87a46ece1de31ecd7899751504852c57321b31cd 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ The model documentation for version 2.1 can be found at XXX. A most recent version of the documentation can also be extracted from the model source code via the R package goxygen (https://github.com/pik-piam/goxygen). To extract the documentation, install the -package and run the main function `(goxygen(unitPattern = c("\\[","\\]"), includeCore=T))` +package and run the main function `(goxygen(unitPattern = c("\\[","\\]"), includeCore=T, use_advanced_interfacePlot_function=T))` in the main folder of the model. The resulting documentation can be found in the folder "doc". diff --git a/config/default.cfg b/config/default.cfg index a579bd5cda0aa9842a1aa7d9fbd17bc0f27ff99f..65c57a9f0cabe997d3b03ca82c1c310ab9a51c19 100755 --- a/config/default.cfg +++ b/config/default.cfg @@ -22,7 +22,7 @@ cfg$title <- "default" cfg$regionmapping <- "config/regionmappingH12.csv" #### Current input data revision (<mainrevision>.<subrevision>) #### -cfg$revision <- 5.938 +cfg$revision <- 5.9385 #### Force the model to download new input data #### cfg$force_download <- FALSE diff --git a/core/sets.gms b/core/sets.gms index 84e1cbcc6e73cdb4ad2a48bd714ead8120f78aab..732842a198b5f84198ab66cec473fff0a53f2887 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -782,6 +782,7 @@ $ENDIF.RegScenCapt ***######################## R SECTION START (MODULES) ############################### *** THIS CODE IS CREATED AUTOMATICALLY, DO NOT MODIFY THESE LINES DIRECTLY *** ANY DIRECT MODIFICATION WILL BE LOST AFTER NEXT MODEL START +*** CHANGES CAN BE DONE USING THE RESPECTIVE LINES IN scripts/start_functions.R sets @@ -822,7 +823,7 @@ sets codePerformance / - module2realisation(modules,*) "mapping of modules and active realisations" / +module2realisation(modules,*) "mapping of modules and active realisations" / macro . %macro% welfare . %welfare% PE_FE_parameters . %PE_FE_parameters% diff --git a/main.gms b/main.gms index fe30cace39e2c03b81c0eefa41bf7d54e9fbe5cd..5f3f6647b0343b43f2e9e3a380637a3c49e3b315 100644 --- a/main.gms +++ b/main.gms @@ -7,64 +7,74 @@ *** SOF ./main.gms *' @title REMIND - REgional Model of INvestments and Development *' -*' @description REMIND is a global multi-regional model incorporating the economy, the climate system and a detailed representation of the energy sector. -*' It solves for an inter-temporal Pareto optimum in economic and energy investments in the model regions, fully accounting for interregional trade in goods, -*' energy carriers and emissions allowances. REMIND allows for the analysis of technology options and policy proposals for climate mitigation. +*' @description REMIND is a global multi-regional model incorporating the economy, the climate system +*' and a detailed representation of the energy sector. It solves for an intertemporal Pareto optimum +*' in economic and energy investments in the model regions, fully accounting for interregional trade in +*' goods, energy carriers and emissions allowances. REMIND enables analyses of technology options and +*' policy proposals for climate change mitigation. *' -*' The macro-economic core of REMIND is a Ramsey-type optimal growth model in which intertemporal global welfare is optimized subject to equilibrium constraints ([02_welfare]). -*' Intertemporal optimization ([80_optimization]) with perfect foresight is subject to market clearing. The model explicitly represents trade in final goods, primary energy carriers, -*' and in the case of climate policy, emissions allowances. Macro-economic production factors are capital, labor, and final energy. -*' The production function with constant elasticity of substitution (nested CES production function) determines the final energy demand ([29_CES_parameters]). -*' REMIND uses economic output for investments in the macro-economic capital stock as well as consumption, trade, and energy system expenditures. +*' The macro-economic core of REMIND is a Ramsey-type optimal growth model in which intertemporal global +*' welfare is optimized subject to equilibrium constraints ([02_welfare]). Intertemporal optimization +*' ([80_optimization]) with perfect foresight is subject to market clearing. The model explicitly represents +*' trade in final goods, primary energy carriers, and when certain climate policies are enabled, emissions +*' allowances ([24_trade]). The macro-economic production factors are capital, labor, and final energy. +*' A nested production function with constant elasticity of substitution determines the final energy demand +*' ([01_macro], [29_CES_parameters]). REMIND uses economic output for investments in the macro-economic +*' capital stock as well as for consumption, trade, and energy system expenditures. *' -*' The macro-economic core and the energy system part are hard-linked via the final energy demand and costs incurred by the energy system. -*' Economic activity results in demand for final energy in different sectors such as transport energy ([35_transport]), electricity ([32_power]), -*' and non-electric energy for stationary end uses ([38_stationary]) splitted into an industy ([37_industry]) and buildings ([36_buildings]) sector. - -*' The primary energy carriers in REMIND include both exhaustible and renewable resources. Exhaustible resources comprise uranium as well as three fossil resources ([31_fossil]), namely coal, oil, and gas. -*' Renewable resources include hydro, wind, solar, geothermal, and biomass ([30_biomass]). -*' More than 50 technologies are available for the conversion of primary energy into secondary energy carriers as well as for the distribution of secondary energy carriers into final energy. +*' The macro-economic core and the energy system part are hard-linked via the final energy demand and the +*' costs incurred by the energy system. Economic activity results in demand for final energy in different +*' sectors (transport ([35_transport]), industry ([37_industry]), buildings ([36_buildings])...) and of +*' different type (electric ([32_power]) and non-electric). The primary energy carriers in REMIND include +*' both exhaustible and renewable resources. Exhaustible resources comprise uranium as well as three fossil +*' resources ([31_fossil]), namely coal, oil, and gas. Renewable resources include hydro, wind, solar, +*' geothermal, and biomass ([30_biomass]). More than 50 technologies are available for the conversion of +*' primary energy into secondary energy carriers as well as for the distribution of secondary energy carriers +*' into final energy. *' -*' The model accounts for the full range of anthropogenic greenhouse gas (GHG) emissions, most of which are represented by source. -*' REMIND simulates emissions from long-lived GHGs (CO2, CH4, N2O), short-lived GHGs (CO, NOx, VOC) and aerosols (SO2, BC, OC). -*' It accounts for these emissions with different levels of detail depending on the types and sources of emissions. -*' It calculates CO2 emissions from fuel combustion, CH4 emissions from fossil fuel extraction and residential energy use and N2O emissions from energy supply based on sources. +*' The model accounts for the full range of anthropogenic greenhouse gas (GHG) emissions, most of which are +*' represented by source. REMIND simulates emissions from long-lived GHGs (CO2, CH4, N2O), short-lived GHGs +*' (CO, NOx, VOC) and aerosols (SO2, BC, OC). It accounts for these emissions with different levels of detail +*' depending on the types and sources of emissions. It calculates CO2 emissions from fuel combustion, CH4 +*' emissions from fossil fuel extraction and residential energy use, and N2O emissions from energy supply +*' based on sources. *' -*' The numerical code is structured in a modular way. The technical structure looky as follows: At the top level you find the folders config, core, modules and scripts. -*' The overall structure is build in the file main.gms. All settings and configuration information is given in the config folder. -*' The core folder contains all files that are part of the core of the REMIND model. For each module there exists a sub-folder in the modules folder. -*' Helpful scripts for e.g. starting a run or analysing results you find in the scripts folder. +*' The code is structured in a modular way, with code belonging either to the model's core, or to one of the +*' modules. The folder structure is as follows: at the top level are the folders config, core, modules and +*' scripts. The config folder contains the REMIND settings and configuration information. The core folder +*' contains all the files that are part of the core. The modules folder holds all the files that belong to +*' the modules, with numbered sub-folders for every module. The scripts folder contains helpful scripts for +*' starting a model run and analysing results. *' -*' In the main.gms the technical structure of REMIND can be found. -*' First, the *.gms files from the core folder are included and afterward the *.gms files from the activated module realization, -*' beginning with the one with the smallest module-number. The technical structure of REMIND looks as follows: +*' REMIND is run by executing the main.gms file, which loads the configuration information and builds the model, +*' by concatenating all necessary files from the core and modules folders into a single file called full.gms. +*' The concatenation process starts with files from the core and continues with files from activated modules, +*' in increasing order of module-number. It observes the following structure: *' *' { width=100% } *' -*' In general, the .gms-files in each module realization can be the same as in the core. -*' For each module it has to be clearly defined what kind of interfaces it has with the core part of the model. *' -*' The REMIND GAMS code folllows a coding etiquette including the following prefixes: +*' The GAMS code follows a naming etiquette based on the following prefixes: *' -*' * q_ eQuations -*' * v_ Variables -*' * s_ Scalars -*' * f_ File parameters - these parameters contain data as it was read from file -*' * o_ Output parameters - only being influenced by optimization but without effect on the optimization -*' * c_ switches from the Config.gms - parameters, that are switches to choose different scenarios +*' * "q_" to designate equations, +*' * "v_" to designate variables, +*' * "s_" to designate scalars, +*' * "f_" to designate file parameters (parameters that contain unaltered data read in from input files), +*' * "o_" to designate output parameters (parameters that do not affect the optimization, but are affected by it), +*' * "c_" to designate switches (parameters that enable different configuration choices), +*' * "s_FIRSTUNIT_2_SECONDUNIT" to designate a scalar used to convert from the FIRSTUNIT to the SECONDUNIT +*' through multiplication, e.g. s_GWh_2_EJ. *' -*' The prefixes are extended in some cases by a second letter: +*' These prefixes are extended in some cases by a second letter: *' -*' * ?m_ module-relevant object - This object is used by at least one module and the core code. Changes related to this object have to be performed carefully. -*' * ?00_ (a 2-digit number) module-only object - This 2-digit number defines the module the object belongs to. The number is used here to make sure that different modules cannot have the same object. +*' * "?m_" to designate objects used in the core and in at least one module. +*' * "?00_" to designate objects used in a single module, exclusively, with the 2-digit number corresponding +*' to the module number. *' -*' Sets are treated slightly different: Instead of adding a prefix sets should get a 2-digit number suffix giving the number of the module in which the set is exclusively used. -*' If the set is used in more than one module no suffix should be given. For specific sets also prefixes exist: -*' -*' * s_FIRSTUNIT_2_SECONDUNIT unit conversion scalar - a scalar that is used to convert from FIRSTUNIT to SECONDUNIT by multiplying - example: s_GWh_2_EJ. -*' * c_@ - configuration switch, must be defined and assigned in the config.gms file. It's practically the former switches we had (emiscen, climscen, etc). +*' Sets are treated differently: instead of a prefix, sets exclusively used within a module get that module's +*' number added as a suffix. If the set is used in more than one module no suffix is given. *' -*' The units (e.g., TWa, EJ, GtC, GtCO2, ...) of varialbles and parameters are documented at the location of the variable and parameter declaration in \[ \]. +*' The units (e.g., TWa, EJ, GtC, GtCO2, ...) of variables and parameters are documented in the declaration files. @@ -72,9 +82,9 @@ * * Regionscode: 690d3718e151be1b450b394c1064b1c5 * -* Input data revision: 5.938 +* Input data revision: 5.9385 * -* Last modification (input data): Fri Feb 14 10:03:25 2020 +* Last modification (input data): Mon Feb 24 15:24:12 2020 * *###################### R SECTION END (VERSION INFO) ########################### diff --git a/modules/24_trade/standard/bounds.gms b/modules/24_trade/standard/bounds.gms index 2f31953cac48ccd2a51712643253d33cd8048fa5..91f04b1313f9da1152e662de3b801282563ecd13 100644 --- a/modules/24_trade/standard/bounds.gms +++ b/modules/24_trade/standard/bounds.gms @@ -92,6 +92,30 @@ vm_Xport.up("2010",regi,"peoil") = 1.05 * pm_IO_trade("2010",regi,"peoil","Xport vm_Xport.lo("2015",regi,"peoil") = 0.95 * pm_IO_trade("2015",regi,"peoil","Xport"); vm_Xport.up("2015",regi,"peoil") = 1.05 * pm_IO_trade("2015",regi,"peoil","Xport"); +*** bounds on gas exports in 2010 and 2015 +vm_Xport.lo("2010",regi,"pegas") = 0.95 * pm_IO_trade("2010",regi,"pegas","Xport"); +vm_Xport.up("2010",regi,"pegas") = 1.05 * pm_IO_trade("2010",regi,"pegas","Xport"); +vm_Xport.lo("2015",regi,"pegas") = 0.95 * pm_IO_trade("2015",regi,"pegas","Xport"); +vm_Xport.up("2015",regi,"pegas") = 1.05 * pm_IO_trade("2015",regi,"pegas","Xport"); + +*** bounds on gas imports in 2010 and 2015 +vm_Mport.lo("2010",regi,"pegas") = 0.95 * pm_IO_trade("2010",regi,"pegas","Mport"); +vm_Mport.up("2010",regi,"pegas") = 1.05 * pm_IO_trade("2010",regi,"pegas","Mport"); +vm_Mport.lo("2015",regi,"pegas") = 0.95 * pm_IO_trade("2015",regi,"pegas","Mport"); +vm_Mport.up("2015",regi,"pegas") = 1.05 * pm_IO_trade("2015",regi,"pegas","Mport"); + +*** bounds on coal exports in 2010 and 2015 +vm_Xport.lo("2010",regi,"pecoal") = 0.95 * pm_IO_trade("2010",regi,"pecoal","Xport"); +vm_Xport.up("2010",regi,"pecoal") = 1.05 * pm_IO_trade("2010",regi,"pecoal","Xport"); +vm_Xport.lo("2015",regi,"pecoal") = 0.95 * pm_IO_trade("2015",regi,"pecoal","Xport"); +vm_Xport.up("2015",regi,"pecoal") = 1.05 * pm_IO_trade("2015",regi,"pecoal","Xport"); + +*** bounds on coal imports in 2010 and 2015 +vm_Mport.lo("2010",regi,"pecoal") = 0.95 * pm_IO_trade("2010",regi,"pecoal","Mport"); +vm_Mport.up("2010",regi,"pecoal") = 1.05 * pm_IO_trade("2010",regi,"pecoal","Mport"); +vm_Mport.lo("2015",regi,"pecoal") = 0.95 * pm_IO_trade("2015",regi,"pecoal","Mport"); +vm_Mport.up("2015",regi,"pecoal") = 1.05 * pm_IO_trade("2015",regi,"pecoal","Mport"); + *** upper bounds ( 1% yearly growth rate) on all big oil exporters (more than 15EJ in 2010) in 2020, 2025 and 2030 loop(regi, if( (pm_IO_trade("2010",regi,"peoil","Xport") ge (15*sm_EJ_2_TWa)), @@ -102,4 +126,4 @@ loop(regi, ); -*** EOF ./modules/24_trade/standard/bounds.gms \ No newline at end of file +*** EOF ./modules/24_trade/standard/bounds.gms diff --git a/modules/45_carbonprice/diffPhaseIn2LinFlex/datainput.gms b/modules/45_carbonprice/diffPhaseIn2LinFlex/datainput.gms deleted file mode 100644 index f5a89931e0007db0ca88091aa9dc19bded6f5af0..0000000000000000000000000000000000000000 --- a/modules/45_carbonprice/diffPhaseIn2LinFlex/datainput.gms +++ /dev/null @@ -1,101 +0,0 @@ -*** | (C) 2006-2019 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | REMIND License Exception, version 1.0 (see LICENSE file). -*** | Contact: remind@pik-potsdam.de -*** SOF ./modules/45_carbonprice/diffPhaseIn2LinFlex/datainput.gms -***------------------------------------------------------------------------------------------------------------------------ -*** *BS* 20190930 linear convergence with starting points differentiated by GDP/capita, global price from 2040 -***----------------------------------------------------------------------------------------------------------------------- - -*** can make this flexible later -s45_stagestart = 2020; - -*** price from stageend onwards (value set here is for first iteration only, will be adjusted afterwards) -s45_constantCO2price = 500 * sm_DptCO2_2_TDpGtC; - -*** convergence to global CO2 price depends on GDP per capita (in 1e3 $ PPP 2005). -p45_gdppcap2015_PPP(regi) = pm_gdp("2015",regi)/pm_shPPPMER(regi) / pm_pop("2015",regi); -display p45_gdppcap2015_PPP; -*** suggestion by Robert: differentiate "zero-crossing" of linear convergence path -*** earlier zero-crossing --> higher starting price during convergence period -*** for now GDP/cap differentiation hardcoded -*** BS: modified limits to have SSA in first category -p45_phasein_zeroyear(regi)$(p45_gdppcap2015_PPP(regi) le 3) = 2024; -p45_phasein_zeroyear(regi)$(p45_gdppcap2015_PPP(regi) gt 3 and p45_gdppcap2015_PPP(regi) le 5) = 2023; -p45_phasein_zeroyear(regi)$(p45_gdppcap2015_PPP(regi) gt 5 and p45_gdppcap2015_PPP(regi) le 8) = 2022; -p45_phasein_zeroyear(regi)$(p45_gdppcap2015_PPP(regi) gt 8 and p45_gdppcap2015_PPP(regi) le 11) = 2021; -p45_phasein_zeroyear(regi)$(p45_gdppcap2015_PPP(regi) gt 11 and p45_gdppcap2015_PPP(regi) le 14) = 2020; -p45_phasein_zeroyear(regi)$(p45_gdppcap2015_PPP(regi) gt 14 and p45_gdppcap2015_PPP(regi) le 19) = 2018; -p45_phasein_zeroyear(regi)$(p45_gdppcap2015_PPP(regi) gt 19 and p45_gdppcap2015_PPP(regi) le 24) = 2016; -p45_phasein_zeroyear(regi)$(p45_gdppcap2015_PPP(regi) gt 24 and p45_gdppcap2015_PPP(regi) le 30) = 2013; -p45_phasein_zeroyear(regi)$(p45_gdppcap2015_PPP(regi) gt 30) = 2010; -display p45_phasein_zeroyear; - -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) le 3) = 0.1; -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 3 and p45_gdppcap2015_PPP(regi) le 5) = 0.2; -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 5 and p45_gdppcap2015_PPP(regi) le 8) = 0.3; -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 8 and p45_gdppcap2015_PPP(regi) le 11) = 0.5; -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 11 and p45_gdppcap2015_PPP(regi) le 14) = 0.65; -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 14 and p45_gdppcap2015_PPP(regi) le 19) = 0.8; -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 19 and p45_gdppcap2015_PPP(regi) le 24) = 0.9; -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 24) = 1; -display p45_phasein_2025ratio; - - - - - -*** get CO2 price before transition stage from reference (NDC) run -***Execute_Loadpoint 'input_ref' p45_tauCO2_ref = pm_taxCO2eq; -***pm_taxCO2eq(ttot,regi)$(ttot.val le s45_stagestart) = p45_tauCO2_ref(ttot,regi); -***display p45_tauCO2_ref; - -*** for the current implementation, use the following trajectory for rich countries: -*** global price is linear from 2010 until the pkBudgYr, then increases with cm_taxCO2inc_after_peakBudgYr -if(cm_co2_tax_2020 lt 0, - abort "please choose a valid cm_co2_tax_2020" -elseif cm_co2_tax_2020 ge 0, -*** convert tax value from $/t CO2eq to T$/GtC - p45_CO2priceTrajDeveloped("2040")= 3 * cm_co2_tax_2020 * sm_DptCO2_2_TDpGtC; !! shifted to 2040 to make sure that even in delay scenarios the fixpoint of the linear price path is inside the "t" range, otherwise the CO2 prices from reference run may be overwritten -*** The factor 3 comes from shifting the 2020 value 20 years into the future at linear increase of 10% of 2020 value per year. -); - - - -p45_CO2priceTrajDeveloped(ttot)$((ttot.val gt 2005) AND (ttot.val ge cm_startyear)) = p45_CO2priceTrajDeveloped("2040")*( 1 + 0.1/3 * (ttot.val-2040)); !! no CO2 price in 2005 and only change CO2 prices after ; -*** annual increase by (10/3)% of the 2040 value is the same as a 10% increase of the 2020 value is the same as a linear increase from 0 in 2010 to the 2020/2040 value - -loop(t2$(t2.val eq cm_peakBudgYr), - p45_CO2priceTrajDeveloped(t)$(t.val gt cm_peakBudgYr) = p45_CO2priceTrajDeveloped(t2) + (t.val - t2.val) * cm_taxCO2inc_after_peakBudgYr * sm_DptCO2_2_TDpGtC; !! increase by cm_taxCO2inc_after_peakBudgYr per year -); - -*** Then create regional phase-in: -*** loop(ttot$((ttot.val ge cm_startyear) AND (ttot.val le cm_CO2priceRegConvEndYr) ), -*** p45_regCO2priceFactor(ttot,regi) = max(0, p45_phasein_2025ratio(regi) + (1-p45_phasein_2025ratio(regi)) * (ttot.val - 2025) / (cm_CO2priceRegConvEndYr - 2025) ); -*** ); -*** p45_regCO2priceFactor(ttot,regi)$(ttot.val ge cm_CO2priceRegConvEndYr) = 1; - -loop(ttot$((ttot.val ge cm_startyear) AND (ttot.val le cm_CO2priceRegConvEndYr) ), - p45_regCO2priceFactor(ttot,regi) = - min(1, - max(0, - p45_phasein_2025ratio(regi) + (1 - p45_phasein_2025ratio(regi)) - * ( ( (ttot.val - 2025) + (cm_CO2priceRegConvEndYr - 2025) * 0.1 ) - / ( (cm_CO2priceRegConvEndYr - 2025) * 1.1 ) - ) ** 2 - ) - ); -); -p45_regCO2priceFactor(ttot,regi)$(ttot.val ge cm_CO2priceRegConvEndYr) = 1; - - -*** linear transition to global price - starting point depends on GDP/cap -pm_taxCO2eq(t,regi) = p45_regCO2priceFactor(t,regi) * p45_CO2priceTrajDeveloped(t); - - - -display p45_regCO2priceFactor, p45_CO2priceTrajDeveloped, pm_taxCO2eq; - -*** EOF ./modules/45_carbonprice/diffPhaseIn2LinFlex/datainput.gms diff --git a/modules/45_carbonprice/diffPhaseIn2LinFlex/declarations.gms b/modules/45_carbonprice/diffPhaseIn2LinFlex/declarations.gms deleted file mode 100644 index d541ed76fd5777ba9f1a31aed8b475effc139d29..0000000000000000000000000000000000000000 --- a/modules/45_carbonprice/diffPhaseIn2LinFlex/declarations.gms +++ /dev/null @@ -1,30 +0,0 @@ -*** | (C) 2006-2019 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | REMIND License Exception, version 1.0 (see LICENSE file). -*** | Contact: remind@pik-potsdam.de -*** SOF ./modules/45_carbonprice/diffPhaseIn2LinFlex/declarations.gms -***------------------------------------------------------------------------------------------------------------------------ -*** *BS* 20190930 linear convergence with starting points differentiated by GDP/capita, global price from 2040 -***----------------------------------------------------------------------------------------------------------------------- - -parameters -p45_tauCO2_ref(ttot, all_regi) "CO2 tax path of reference policy (NDC)" -p45_gdppcap2015_PPP(all_regi) "2015 GDP per capita (k $ PPP 2005)" -p45_phasein_zeroyear(all_regi) "year when CO2 price convergence line crosses zero" -p45_phasein_2025ratio(all_regi) "ratio of CO2 price to that of developed region in 2025" - -p45_regCO2priceFactor(ttot,all_regi) "regional multiplicative factor to the CO2 price of the developed countries" -p45_CO2priceTrajDeveloped(ttot) "CO2 price trajectory for developed/rich countries" -; - -scalars -s45_stagestart "first time-step fixed to ref. / beginning of staged accession period" - -s45_constantCO2price "initial value for constant global CO2 price" -s45_convergenceCO2price "price to which the regional values converge" - - -; -*** EOF ./modules/45_carbonprice/diffPhaseIn2LinFlex/declarations.gms diff --git a/modules/45_carbonprice/diffPhaseIn2LinFlex/not_used.txt b/modules/45_carbonprice/diffPhaseIn2LinFlex/not_used.txt deleted file mode 100644 index c0d73713a745a09828651bf8fb218affd32af91b..0000000000000000000000000000000000000000 --- a/modules/45_carbonprice/diffPhaseIn2LinFlex/not_used.txt +++ /dev/null @@ -1,23 +0,0 @@ -name,type,reason -sm_c_2_co2,input,questionnaire -vm_co2eq,input,questionnaire -vm_emiFgas,input,questionnaire -vm_cesIO,input,questionnaire -vm_prodSe,input,questionnaire -vm_prodFe,input,questionnaire -pm_pvp,input,questionnaire -pm_globalMeanTemperature,input,questionnaire -pm_temperatureImpulseResponseCO2,input,questionnaire -pm_consPC,input,questionnaire -pm_GDPGross,input,questionnaire -pm_ttot_val,input,questionnaire -pm_ts,input,questionnaire -pm_ttot_2_tall,input,questionnaire -pm_prtp,input,questionnaire -cm_emiscen,input,questionnaire -cm_co2_tax_growth,input,questionnaire -cm_iterative_target_adj,input,questionnaire -cm_expoLinear_yearStart,input,questionnaire -cm_carbonprice_temperatureLimit,input,questionnaire -pm_prodCouple,input,questionnaire -pm_bunker_share_in_nonldv_fe,input,questionnaire diff --git a/modules/45_carbonprice/diffPhaseIn2LinFlex/postsolve.gms b/modules/45_carbonprice/diffPhaseIn2LinFlex/postsolve.gms deleted file mode 100644 index c47766461ad7c31146470fecc38cd7a154bf72ab..0000000000000000000000000000000000000000 --- a/modules/45_carbonprice/diffPhaseIn2LinFlex/postsolve.gms +++ /dev/null @@ -1,32 +0,0 @@ -*** | (C) 2006-2019 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | REMIND License Exception, version 1.0 (see LICENSE file). -*** | Contact: remind@pik-potsdam.de -*** SOF ./modules/45_carbonprice/diffPhaseIn2LinFlex/postsolve.gms -***------------------------------------------------------------------------------------------------------------------------ -*** *BS* 20190930 linear convergence with starting points differentiated by GDP/capita, global price from 2040 -***----------------------------------------------------------------------------------------------------------------------- - -*** *** updated constant global price as scalar (regional prices are the same anyway) -*** s45_constantCO2price = sum((ttot,regi)$(ttot.val eq s45_stageend), pm_taxCO2eq(ttot,regi))/card(regi) ; -*** *** entire path has been shifted in update, so have to set these again -*** pm_taxCO2eq(ttot,regi)$(ttot.val le s45_stagestart) = p45_tauCO2_ref(ttot, regi); -*** pm_taxCO2eq(ttot,regi)$(ttot.val gt s45_stagestart and ttot.val lt s45_stageend) -*** = s45_constantCO2price * (ttot.val - p45_phasein_zeroyear(regi))/(s45_stageend - p45_phasein_zeroyear(regi)); -*** *** price trajectory should be constant anyway but let's be explicit here -*** pm_taxCO2eq(ttot,regi)$(ttot.val ge s45_stageend) = s45_constantCO2price; - - -*** re-create the regional differentation, use path from developed countries as the basis. -*** This doesn't need to be a loop, but it will be correct for any cycle of the loop, so also for the last cycle. -loop(regi$(p45_gdppcap2015_PPP(regi) gt 30), - p45_CO2priceTrajDeveloped(t) = pm_taxCO2eq(t,regi); -); - -*** linear transition to global price - starting point depends on GDP/cap -pm_taxCO2eq(t,regi) = p45_regCO2priceFactor(t,regi) * p45_CO2priceTrajDeveloped(t); - -display pm_taxCO2eq; -*** EOF ./modules/45_carbonprice/diffPhaseIn2LinFlex/postsolve.gms diff --git a/modules/45_carbonprice/diffPhaseIn2LinFlex/realization.gms b/modules/45_carbonprice/diffPhaseIn2LinFlex/realization.gms deleted file mode 100644 index 27beb4e0bd5a678e32fcca6b48221ebb40104598..0000000000000000000000000000000000000000 --- a/modules/45_carbonprice/diffPhaseIn2LinFlex/realization.gms +++ /dev/null @@ -1,12 +0,0 @@ -*** | (C) 2006-2019 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | REMIND License Exception, version 1.0 (see LICENSE file). -*** | Contact: remind@pik-potsdam.de - -*####################### R SECTION START (PHASES) ############################## -$Ifi "%phase%" == "declarations" $include "./modules/45_carbonprice/diffPhaseIn2LinFlex/declarations.gms" -$Ifi "%phase%" == "datainput" $include "./modules/45_carbonprice/diffPhaseIn2LinFlex/datainput.gms" -$Ifi "%phase%" == "postsolve" $include "./modules/45_carbonprice/diffPhaseIn2LinFlex/postsolve.gms" -*######################## R SECTION END (PHASES) ############################### diff --git a/modules/45_carbonprice/module.gms b/modules/45_carbonprice/module.gms index 5440ea0b84eb07a30354fa6a67718265a3c0be0c..268947d965c1d5f2725ee1bade6e6bebdec0e459 100644 --- a/modules/45_carbonprice/module.gms +++ b/modules/45_carbonprice/module.gms @@ -23,7 +23,6 @@ $Ifi "%carbonprice%" == "NPi2018" $include "./modules/45_carbonprice/NPi2018/rea $Ifi "%carbonprice%" == "diffCurvPhaseIn2Lin" $include "./modules/45_carbonprice/diffCurvPhaseIn2Lin/realization.gms" $Ifi "%carbonprice%" == "diffPhaseIn2Constant" $include "./modules/45_carbonprice/diffPhaseIn2Constant/realization.gms" $Ifi "%carbonprice%" == "diffPhaseIn2Lin" $include "./modules/45_carbonprice/diffPhaseIn2Lin/realization.gms" -$Ifi "%carbonprice%" == "diffPhaseIn2LinFlex" $include "./modules/45_carbonprice/diffPhaseIn2LinFlex/realization.gms" $Ifi "%carbonprice%" == "diffPhaseInLin2LinFlex" $include "./modules/45_carbonprice/diffPhaseInLin2LinFlex/realization.gms" $Ifi "%carbonprice%" == "diffPriceSameCost" $include "./modules/45_carbonprice/diffPriceSameCost/realization.gms" $Ifi "%carbonprice%" == "exogenous" $include "./modules/45_carbonprice/exogenous/realization.gms"