From e517fa63d98d78029cc26a6495226c7520345c30 Mon Sep 17 00:00:00 2001 From: David Klein <dklein@pik-potsdam.de> Date: Wed, 1 Apr 2020 16:05:55 +0200 Subject: [PATCH] Reintroduce bound on biomass relative to reference scenario to prevent regions with large carbon storage potential from deploying BECCS in tight policy cases only to produce negative emissions rather then generating energy. --- modules/30_biomass/magpie_40/datainput.gms | 36 +++++++++++++++++++ modules/30_biomass/magpie_40/declarations.gms | 7 ++++ modules/30_biomass/magpie_40/equations.gms | 7 ++++ start.R | 2 +- 4 files changed, 51 insertions(+), 1 deletion(-) diff --git a/modules/30_biomass/magpie_40/datainput.gms b/modules/30_biomass/magpie_40/datainput.gms index 3634928..cedf619 100644 --- a/modules/30_biomass/magpie_40/datainput.gms +++ b/modules/30_biomass/magpie_40/datainput.gms @@ -85,4 +85,40 @@ loop(ttot$( (ttot.val = 2005) OR (ttot.val = 2010) ), ); display i30_bioen_price_a, i30_bioen_price_b; +*** ------------------------------------------------------------- +*** Bounds on pedem +*** ------------------------------------------------------------- + +*** To prevent regions with large carbon sequestration potentials +*** from demanding high amounts of biomass with CCS to generate +*** negative emissions rather than requiring it for energy production +*** this general rule for all regions is applied that limits the PE +*** demand of BECCS technologies in policy runs to 30% of the total +*** PE of the baseline scenario (see q30_limitTeBio) + +if(cm_emiscen ne 1, +Execute_Loadpoint 'input_ref' v30_pedem_BAU=vm_demPe; +Execute_Loadpoint 'input_ref' v30_seprod_BAU=vm_prodSe; + +p30_pedem_BAU(ttot,regi) = + sum(pe2se(enty,enty2,te)$(sameas(enty,"peoil") OR sameas(enty,"pecoal") OR sameas(enty,"pegas") OR sameas(enty,"pebiolc") OR sameas(enty,"pebios") OR sameas(enty,"pebioil")), + v30_pedem_BAU.l(ttot,regi,enty,enty2,te) + ) + + sum(entySe, + sum(te, + v30_seprod_BAU.l(ttot,regi,"pegeo",entySe,te) + + v30_seprod_BAU.l(ttot,regi,"pehyd",entySe,te) + + v30_seprod_BAU.l(ttot,regi,"pewin",entySe,te) + + v30_seprod_BAU.l(ttot,regi,"pesol",entySe,te) + + v30_seprod_BAU.l(ttot,regi,"peur",entySe,te) + ) + ) * 100/40 !!! substitution method +; + +p30_pedemBio_BAU(ttot,regi) = + sum(pe2se(enty,enty2,te)$(sameas(enty,"pebiolc") OR sameas(enty,"pebios") OR sameas(enty,"pebioil")), + v30_pedem_BAU.l(ttot,regi,enty,enty2,te) + ); +); + *** EOF ./modules/30_biomass/magpie_40/datainput.gms diff --git a/modules/30_biomass/magpie_40/declarations.gms b/modules/30_biomass/magpie_40/declarations.gms index 0720058..fa4ac10 100644 --- a/modules/30_biomass/magpie_40/declarations.gms +++ b/modules/30_biomass/magpie_40/declarations.gms @@ -20,6 +20,9 @@ p30_max200_path(tall) "Time path of global maximal peb p30_maxprod_residue(ttot,all_regi) "Maximal potential of residues enhanced by demand of biotr [TWa]" p30_pebiolc_pricemag(tall,all_regi) "Prices for lignocellulosic purpose grown bioenergy from MAgPIE [T$US/TWa]" p30_pebiolc_demandmag(tall,all_regi) "Production of lignocellulosic purpose grown bioenergy from MAgPIE [TWa]" +p30_pedem_BAU(ttot,all_regi) "Primary energy demand imported from reference gdx [TWa]" +p30_pedemBio_BAU(ttot,all_regi) "Primary bioenergy demand imported from reference gdx [TWa]" + *** Shift factor calculation p30_pebiolc_costs_emu_preloop(ttot,all_regi) "Bioenergy costs calculated with emulator using MAgPIE demand. For shift factor calculation [T$US]" @@ -49,6 +52,9 @@ Positive variable v30_priceshift(ttot,all_regi) "Regional translation factor that shifts emulator prices to better fit actual MAgPIE prices [-]" v30_pricemult(ttot,all_regi) "Regional multiplication factor that sclaes emulator prices to better fit actual MAgPIE prices [-]" v30_multcost(ttot,all_regi) "Cost markup factor for deviations from demand of last coupling iteration [-]" +v30_pedem_BAU(tall,all_regi,all_enty,all_enty,all_te) "Primary energy demand imported from refernce gdx [TWa]" +v30_seprod_BAU(tall,all_regi,all_enty,all_enty,all_te) "Secondary energy production imported from reference gdx [TWa]" + ; equations @@ -58,5 +64,6 @@ q30_pebiolc_costs(ttot,all_regi) "MAgPIE emulator: calculates the costs of peb q30_priceshift "Calculates shift factor by minimizing least squares of price differences between MAgPIE output and MAgPIE emulator" q30_limitXpBio(ttot,all_regi) "Only purpose grown bioenergy may be exported, no residues" q30_costAdj(ttot,all_regi) "Improve convergence penalizing deviations from last coupling iteration" +q30_limitTeBio(ttot,all_regi) "Limit BECCS in policy runs relative to reference scenario" ; *** EOF ./modules/30_biomass/magpie_4/declarations.gms diff --git a/modules/30_biomass/magpie_40/equations.gms b/modules/30_biomass/magpie_40/equations.gms index 7cb1f7a..a262240 100644 --- a/modules/30_biomass/magpie_40/equations.gms +++ b/modules/30_biomass/magpie_40/equations.gms @@ -108,5 +108,12 @@ q30_limitXpBio(t,regi).. vm_Xport(t,regi,"pebiolc") =l= vm_fuExtr(t,regi,"pebiolc","1"); + +*** Limit BECCS in policy runs to 35% of total PE in BAU or to 130% of bioenergy demand in BAU +q30_limitTeBio(t,regi)$(cm_emiscen ne 1).. + sum(pe2se(enty,enty2,teBio)$(teCCS(teBio)), vm_demPe(t,regi,enty,enty2,teBio)) + =l= + max (0.35 * p30_pedem_BAU(t,regi), 1.30 * p30_pedemBio_BAU(t,regi)); + *** EOF ./modules/30_biomass/magpie_4/equations.gms diff --git a/start.R b/start.R index 9b95ff1..89230c8 100755 --- a/start.R +++ b/start.R @@ -183,7 +183,7 @@ accepted <- c('--restart','--testOneRegi') known <- argv %in% accepted if (!all(known)) { file_exists <- file.exists(argv[!known]) - if (!all(file_exists)) stop("Unknown paramter provided: ",paste(argv[!known][!file_exists]," ")) + if (!all(file_exists)) stop("Unknown argument provided: ",paste(argv[!known][!file_exists]," \nAccepted arguments are '--testOneRegi', '--restart' or a path to an existing scenario_config.csv")) } ###################### Choose submission type ######################### -- GitLab