Skip to content
Snippets Groups Projects
Commit e517fa63 authored by David Klein's avatar David Klein
Browse files

Reintroduce bound on biomass relative to reference scenario to prevent regions...

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.
parent fee7527b
No related branches found
No related tags found
1 merge request!132Reintroduce biomass bound. Further improvements (not relevant for the model behaviour)
This commit is part of merge request !132. Comments created here will be created in the context of that merge request.
......@@ -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
......@@ -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
......@@ -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
......@@ -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 #########################
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment