Newer
Older
*** | (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/30_biomass/magpie_4/equations.gms
***---------------------------------------------------------------------------
*** FUEL COSTS FOR BIOENERGY
***---------------------------------------------------------------------------
*' @equations
*'
*' **Total fuel costs for biomass**
*' The first part, summing over *peren2rlf30*, represents costs for biomass with fixed prices.
*' The second part that includes *v30_pebiolc_costs* represents costs for biomass with continous supply curves from MAgPIE.
*' In coupled runs *v30_multcost* is a cost markup factor improving the optimization performance by penalizing
*' (too) large jumps in the demand in between two coupling iterations. It converges to 1 and therefore does not affect the outcome.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
*' The last part, containing *pm_costsTradePeFinancial*, represents additional tradecosts (only for purpose grown lignocellulosic biomass).
q30_costFuBio(ttot,regi)$(ttot.val ge cm_startyear)..
vm_costFuBio(ttot,regi)
=e= sum(peren2rlf30(enty,rlf), p30_datapebio(regi,enty,rlf,"cost",ttot) * vm_fuExtr(ttot,regi,enty,rlf))
+
$if %cm_MAgPIE_coupling% == "on" (v30_pebiolc_costs(ttot,regi) * v30_multcost(ttot,regi))
$if %cm_MAgPIE_coupling% == "off" (v30_pebiolc_costs(ttot,regi))
- p30_pebiolc_costs_emu_preloop(ttot,regi) !! Need to be substracted since they are also inculded in the total agricultural production costs
+
sum(peren2cont30(enty,rlf), vm_fuExtr(ttot,regi,enty,rlf) * pm_costsTradePeFinancial(regi,"use",enty));
*' **Calculate cost markup factor for coupled runs**
*' It penalizes large jumps from the previous coupling iteration and converges to 1, as the difference between *vm_fuExtr* and
*' *p30_pebiolc_demandmag* will vanish.
q30_costAdj(ttot,regi)$(ttot.val ge cm_startyear)..
v30_multcost(ttot,regi)
=e=
power((vm_fuExtr(ttot,regi,"pebiolc","1")-p30_pebiolc_demandmag(ttot,regi))/ (p30_pebiolc_demandmag(ttot,regi) + 0.15),2) * 0.4 + 1
;
***---------------------------------------------------------------------------
*** MAgPIE EMULATOR
***---------------------------------------------------------------------------
*' **Caclulate bioenergy price according to MAgPIE supply curves**
*' The equation is mainly used by shift factor calculation in the preloop. In main solve it is only required for bioenergy tax.
q30_pebiolc_price(ttot,regi)$(ttot.val ge cm_startyear)..
vm_pebiolc_price(ttot,regi)
=e=
(v30_priceshift(ttot,regi)
+ i30_bioen_price_a(ttot,regi)
+ i30_bioen_price_b(ttot,regi) * (vm_fuExtr(ttot,regi,"pebiolc","1") + sm_eps) )
* v30_pricemult(ttot,regi);
*' **Calculate bioenergy price according to shifted MAgPIE supply curves**
*' Required only to calculate the bioenergy tax. For historic reasons there exist both *vm_pebiolc_price_shifted* and
*' *vm_pebiolc_price*. Could be refactored some time.
q30_pebiolc_price_base(ttot,regi)$(ttot.val ge cm_startyear)..
vm_pebiolc_price_shifted(ttot,regi)
=e=
vm_pebiolc_price(ttot,regi)
;
*' **MAgPIE EMULATOR**
*' Calculates bioenergy costs of purpose grown lignocellulosic biomass by integrating the linear price supply curve.
*' It contains optional shift and scaling of supply curves in coupled runs.
*' The equation is used both in preloop and main solve.
q30_pebiolc_costs(ttot,regi)$(ttot.val ge cm_startyear)..
v30_pebiolc_costs(ttot,regi)
=e=
(v30_priceshift(ttot,regi)
+ i30_bioen_price_a(ttot,regi)
+ i30_bioen_price_b(ttot,regi) / 2 * (vm_fuExtr(ttot,regi,"pebiolc","1") + sm_eps) )
* v30_pricemult(ttot,regi)
* vm_fuExtr(ttot,regi,"pebiolc","1")
;
***---------------------------------------------------------------------------
*** SHIFT FACTOR CALCULATOIN
***---------------------------------------------------------------------------
*' **Calculate shift factor for bioenergy costs**
*' The factor is computed by minimizing least squares (*v30_shift_r2*) of cost differences between MAgPIE output and MAgPIE emulator.
*' It is solved in presolve (*s30_switch_shiftcalc* = 1) and deactivated in main solve (*s30_switch_shiftcalc* = 0).
*' *pm_ts* is used as a weight factor.
q30_priceshift$(s30_switch_shiftcalc eq 1)..
v30_shift_r2
=e=
sum(regi,
sum(ttot$(ttot.val ge 2005 AND p30_pebiolc_pricemag(ttot,regi) gt 0), power((p30_pebiolc_pricemag(ttot,regi) - vm_pebiolc_price(ttot,regi))*pm_ts(ttot),2)
)
)
;
***---------------------------------------------------------------------------
*** Definition of resource constraints for biomass
***---------------------------------------------------------------------------
*' **Limit export of biomass**
*' Only purpose grown lignocellulosic biomass may be exported, no residues.
q30_limitXpBio(t,regi)..
vm_Xport(t,regi,"pebiolc")
=l=
vm_fuExtr(t,regi,"pebiolc","1");
*** EOF ./modules/30_biomass/magpie_4/equations.gms