The biomass module calculates the production costs of all types of primary energy biomass.
Interface plot missing!
| Description | Unit | A | |
|---|---|---|---|
| cm_1stgen_phaseout | scenario setting for phase-out of 1st generation biofuels | x | |
| cm_BioSupply_Adjust_EU | factor for scaling sub-EU bioenergy supply curves | x | |
| cm_phaseoutBiolc | Switch that allows for a full phaseout of all bioenergy technologies globally | x | |
| cm_startyear | first optimized modelling time step | \(year\) | x |
| pm_cesdata (tall, all_regi, all_in, cesParameter) |
parameters of the CES function: efficiency parameters (xi, eff, effgr) [unitless], target quantities of CES calibration (quantity) [unit of CES node, see set all_in], CES prices resulting from calibration (price) | \(T\$/unit of CES node\) | x |
| pm_costsTradePeFinancial (all_regi, char, all_enty) |
PE tradecosts (financial costs on import, export and use) | x | |
| pm_ts (tall) |
(t_n+1 - t_n-1)/2 for a timestep t_n | x | |
| pm_ttot_val (ttot) |
value of ttot set element | x | |
| sm_EJ_2_TWa | multiplicative factor to convert from EJ to TWa | x | |
| sm_eps | small number: 1e-9 | x | |
| sm_GJ_2_TWa | multiplicative factor to convert from GJ to TWa | x | |
| vm_cesIO (tall, all_regi, all_in) |
Production factor | x | |
| vm_deltaCap (tall, all_regi, all_te, rlf) |
capacity additions [TW/yr] for energy conversion technologies, [GtC/yr^2] for CCS chain in ccs2te (pipelines/injection) | x | |
| vm_demFeForEs (ttot, all_regi, all_enty, all_esty, all_teEs) |
Final energy which will be used in the energy service layer | \(TWa\) | x |
| vm_demPe (tall, all_regi, all_enty, all_enty, all_te) |
primary energy demand | \(TWa, Uranium: Mt Ur\) | x |
| vm_fuExtr (ttot, all_regi, all_enty, rlf) |
production (extraction) of primary energy fossil fuels, biomass and uranium (before trade) | \(TWa, Uranium: Mt Ur\) | x |
| vm_prodSe (tall, all_regi, all_enty, all_enty, all_te) |
secondary energy production (including only production as first product, not production as second (coupled) product) | \(TWa\) | x |
| vm_Xport (tall, all_regi, all_enty) |
Export of traded commodity. | x |
| Description | Unit | |
|---|---|---|
| pm_pebiolc_costs_emu_preloop (ttot, all_regi) |
Bioenergy costs calculated with emulator using MAgPIE demand. For shift factor calculation | \(T\$US\) |
| pm_pebiolc_demandmag (tall, all_regi) |
Production of lignocellulosic purpose grown bioenergy from MAgPIE | \(TWa\) |
| pm_pedem_res (ttot, all_regi, all_te) |
Demand for pebiolc residues, needed for enhancement of residue potential | \(TWa\) |
| pm_secBioShare (ttot, all_regi, all_enty, emi_sectors) |
Share of biomass per carrier for each sector | \(share\) |
| vm_costFuBio (ttot, all_regi) |
fuel costs from bioenergy production (can be negative depending on total agricultural cost) | \(T\$\) |
| vm_pebiolc_price (ttot, all_regi) |
bioenergy price based on MAgPIE supply curves | \(T\$/TWa\) |
The costs for purpose grown ligno-cellulosic biomass are the integral under the supplycurve. The supplycurves have been derived from MAgPIE 4.1
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 convergence by penalizing large jumps
in the demand between two coupling iterations. It converges to 1 and
therefore does not affect the outcome. 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))
+
sum(peren2cont30(enty,rlf), vm_fuExtr(ttot,regi,enty,rlf) * pm_costsTradePeFinancial(regi,"use",enty));
MAgPIE EMULATOR: PRICE
This equation calculates the price for purpose grown lignocellulosic
biomass as a (linear) function of demand according to the supplycurve as
it was derived from MAgPIE. The equation is used by the shift factor
calculation in the preloop stage. In the main solve stage the price is
only used to apply the bioenergy tax. It contains optional shift and
scaling of supply curves in coupled runs.
\[\begin{multline*} vm\_pebiolc\_price(ttot,regi) = \left(v30\_priceshift(ttot,regi) + i30\_bioen\_price\_a(ttot,regi) + i30\_bioen\_price\_b(ttot,regi) \cdot \left(vm\_fuExtr(ttot,regi,"pebiolc","1") + sm\_eps\right) \right) \cdot v30\_pricemult(ttot,regi) \end{multline*}\]
MAgPIE EMULATOR: COST
Calculates bioenergy costs of purpose grown lignocellulosic biomass by
integrating the linear price supply curve (see above). It contains
optional shift and scaling of supply curves in coupled runs. The
equation is used both in preloop and main solve.
\[\begin{multline*} v30\_pebiolc\_costs(ttot,regi) = \left(v30\_priceshift(ttot,regi) + i30\_bioen\_price\_a(ttot,regi) +\frac{ i30\_bioen\_price\_b(ttot,regi) }{ 2 } \cdot \left(vm\_fuExtr(ttot,regi,"pebiolc","1") + sm\_eps\right) \right) \cdot v30\_pricemult(ttot,regi) \cdot vm\_fuExtr(ttot,regi,"pebiolc","1") \end{multline*}\]
Calculate shift factor for bioenergy costs
This applies in coupled runs only to shift the supplycurve according to
the price response of MAgPIE. The factor is computed by minimizing least
squares (v30_shift_r2) of price differences between actual
MAgPIE output (from coupled runs) and the supply curve (aka 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, representing the time step
length.
\[\begin{multline*} v30\_shift\_r2 = \sum_{regi}\left( \sum_{ttot\$\left(ttot.val ge 2005 \& p30\_pebiolc\_pricemag(ttot,regi) gt 0\right)}\left( \left(\left(p30\_pebiolc\_pricemag(ttot,regi) - vm\_pebiolc\_price(ttot,regi)\right) \cdot pm\_ts(ttot)\right)^{2}\right)\right) \end{multline*}\]
Calculate cost markup factor for coupled runs
Improve convergence of the REMIND-MAgPIE coupling by penalizing
deviations from last coupling iteration. This applies in coupled runs
only to prevent large jumps in bioenergy demand between coupling
iterations. It penalizes deviations in the demand for purpose grown
bioenergy from the previous coupling iteration by increasing the costs
proportional to the deviation. The factor converges to 1, as the
difference between vm_fuExtr and pm_pebiolc_demandmag
vanishes when the coupling converges over iterations.
\[\begin{multline*} v30\_multcost(ttot,regi) = \left(\frac{\left(vm\_fuExtr(ttot,regi,"pebiolc","1")-pm\_pebiolc\_demandmag(ttot,regi)\right)}{ \left(pm\_pebiolc\_demandmag(ttot,regi) + 0.15\right)}\right)^{2} \cdot 0.4 + 1 \end{multline*}\]
Limit export of biomass
Only purpose grown lignocellulosic biomass may be exported, no
residues.
\[\begin{multline*} vm\_Xport(t,regi,"pebiolc") \leq vm\_fuExtr(t,regi,"pebiolc","1") \end{multline*}\]
** Limit BECCS ** To prevent regions with large carbon storage potential from demanding high amounts of biomass just because of their capacity to store negative emissions a general rule for all regions is applied that limits the PE demand of BECCS technologies to 50% of the total PE (see q30_limitTeBio)
\[\begin{multline*} \sum_{pe2se(enty,enty2,teBio)\$teCCS(teBio)} vm\_demPe(t,regi,enty,enty2,teBio) \leq 0.5 \cdot p30\_demPe(t,regi) \end{multline*}\]
\[\begin{multline*} v30\_BioPEProdTotal(t,regi) = \sum_{peren2rlf30(enty,rlf)}\left( vm\_fuExtr(t,regi,enty,rlf)\right) + \sum_{peren2cont30(enty,rlf)}\left( vm\_fuExtr(t,regi,enty,rlf)\right) \end{multline*}\]
EMF27 limits on fluctuating renewables, only turned on for special EMF27 and AWP 2 scenarios, not for SSP
\[\begin{multline*} vm\_prodSe(t,regi,"pebiolc","sesobio","biotrmod") - \sum \left(in\$sameAs("fesob",in), vm\_cesIO(t,regi,in) + pm\_cesdata(t,regi,in,"offset\_quantity")\right) - \sum \left(fe2es(entyFe,esty,teEs)\$buildMoBio(esty), vm\_demFeForEs(t,regi,entyFe,esty,teEs) \right) \leq \left(2 + max\left(0,min\left(\frac{1,\left( 2100 - pm\_ttot\_val(t)\right) }{ \left( 2100 - 2020 \right)}\right)\right) \cdot 3\right) \cdot vm\_prodSe(t,regi,"pecoal","sesofos","coaltr") \end{multline*}\]
Limitations There are no known limitations.
| Description | Unit | A | |
|---|---|---|---|
| f30_bioen_price (tall, all_regi, all_LU_emi_scen, all_rcp_scen, all_charScen) |
time dependent fit coefficients for bioenergy price formula | x | |
| i30_bioen_price_a (ttot, all_regi) |
Time dependent intercept in bioenergy price formula | \(T\$US/TWa\) | x |
| i30_bioen_price_b (ttot, all_regi) |
Time dependent slope in bioenergy price formula | \(T\$US/TWa/TWa\) | x |
| p30_bio1stgen (tall, all_regi, all_enty) |
regional maximal production potential for 1st generation crops only (pebioil, pebios) | x | |
| p30_biolcProductionLookup (tall, all_regi, all_LU_emi_scen, all_rcp_scen) |
regional production of pebiolc purpose grown | x | |
| p30_biolcResidues (tall, all_regi, all_LU_emi_scen) |
regional potential for pebiolc residues | x | |
| p30_bioprod_regi_lim (ext_regi) |
limit of total biomass production per region or region group | \(EJ/yr\) | x |
| p30_datapebio (all_regi, all_enty, rlf, charPeRe, ttot) |
Global bioenergy potential for lignocellulosic residues and 1st generation crops | \(TWa\) | x |
| p30_demPe (ttot, all_regi) |
Primary energy demand imported from gdx or previous iteration | \(TWa\) | x |
| p30_fuelex_dummy (all_regi) |
Dummy for bio-energy supply per region | x | |
| p30_max_pebiolc_dummy | Dummy for bio energy supply at p30_pebiolc_price_dummy | x | |
| p30_max_pebiolc_path (all_regi, tall) |
Time path of regional maximal pebiolc production | \(TWa\) | x |
| p30_max_pebiolc_path_glob (tall) |
Time path of global maximal pebiolc production | \(TWa\) | x |
| p30_maxprod_residue (ttot, all_regi) |
Maximal potential of residues enhanced by demand of biotr | \(TWa\) | x |
| p30_pebiolc_price_dummy | Dummy for the bio-energy price to match the bioenergy bound cm_maxProdBiolc | x | |
| p30_pebiolc_price_emu_preloop (ttot, all_regi) |
Bioenergy price calculated with emulator using MAgPIE demand. For shift factor calculation | \(T\$US/TWa\) | x |
| p30_pebiolc_price_emu_preloop_shifted (ttot, all_regi) |
Bioenergy price calculated with emulator using MAgPIE demand after shift factor calculation | \(T\$US/TWa\) | x |
| p30_pebiolc_pricemag (tall, all_regi) |
Prices for lignocellulosic purpose grown bioenergy from MAgPIE | \(T\$US/TWa\) | x |
| p30_pebiolc_pricmult (ttot, all_regi) |
Regional multiplication factor that scales emulator prices to better fit actual MAgPIE prices | \(-\) | x |
| p30_pebiolc_pricshift (ttot, all_regi) |
Regional translation factor that shifts emulator prices to better fit actual MAgPIE prices | \(-\) | x |
| q30_BioPEProdTotal (ttot, all_regi) |
Calculate total domestic PE biomass production | x | |
| q30_costAdj (ttot, all_regi) |
Improve convergence penalizing deviations from last coupling iteration | x | |
| q30_costFuBio (ttot, all_regi) |
Total costs of bioenergy production | x | |
| q30_limitBiotrmod (ttot, all_regi) |
limit the total amount of modern biomass use for solids to the amount of coal use for solids | x | |
| q30_limitTeBio (ttot, all_regi) |
Limit BECCS in policy runs relative to reference scenario | x | |
| q30_limitXpBio (ttot, all_regi) |
Only purpose grown bioenergy may be exported, no residues | x | |
| q30_pebiolc_costs (ttot, all_regi) |
MAgPIE emulator: calculates the costs of pebiolc according to MAgPIE supply curves | x | |
| q30_pebiolc_price (ttot, all_regi) |
MAgPIE emulator: calculates the price of pebiolc according to MAgPIE supply curves | x | |
| q30_priceshift | Calculates shift factor by minimizing least squares of price differences between MAgPIE output and MAgPIE emulator | x | |
| s30_D2TD | Multiplicative factor to convert from Dollar to TeraDollar | x | |
| s30_switch_shiftcalc | Switch to activate equation for shift calculation before main solve and to deactivate it during main solve | x | |
| v30_BioPEProdTotal (ttot, all_regi) |
total domestic PE biomass production | \(TWyr\) | x |
| v30_multcost (ttot, all_regi) |
Cost markup factor for deviations from demand of last coupling iteration | \(-\) | x |
| v30_pebiolc_costs (ttot, all_regi) |
Bioenergy costs according to MAgPIE supply curves | \(T\$US\) | x |
| v30_pricemult (ttot, all_regi) |
Regional multiplication factor that scales emulator prices to better fit actual MAgPIE prices | \(-\) | x |
| v30_priceshift (ttot, all_regi) |
Regional translation factor that shifts emulator prices to better fit actual MAgPIE prices | \(-\) | x |
| v30_shift_r2 | Least square to minimize during shift calculation | x |
| description | |
|---|---|
| all_charScen | coefficients of the emulator formulas |
| all_enty | all types of quantities |
| all_esty | energy services |
| all_in | all inputs and outputs of the CES function |
| all_LU_emi_scen | all emission baselines for CH4 and N2O land use emissions from MAgPIE |
| all_rcp_scen | all possible RCP scenarios |
| all_regi | all regions |
| all_te | all energy technologies, including from modules |
| all_teEs | energy service technologies |
| buildMoBio(all_esty) | modern biomass in buildings |
| cesParameter | parameters of the CES functions and for calibration |
| char | characteristics of technologies |
| charPeRe(char) | characteristics of renewables |
| emi_sectors | comprehensive sector set used for more detailed emissions accounting (REMIND-EU) and for CH4 tier 1 scaling - potentially to be integrated with similar set all_exogEmi |
| enty(all_enty) | all types of quantities |
| entyFe(all_enty) | final energy types. |
| entySe(all_enty) | secondary energy types |
| esty(all_esty) | energy service types. Have to be added by modules. |
| ext_regi | extended regions list (includes subsets of H12 regions) |
| fe2es(all_enty, all_esty, all_teEs) | map FE carriers to ES via ES technologies |
| in(all_in) | All inputs and outputs of the CES function |
| iteration | iterator for main (Negishi/Nash) iterations |
| modules | all the available modules |
| pe2se(all_enty, all_enty, all_te) | map primary energy carriers to secondary |
| peBio(all_enty) | biomass primary energy types |
| peren2cont30(all_enty, rlf) | map biomass energy to grades with continous supplycurve |
| peren2rlf30(all_enty, rlf) | map biomass energy to grades |
| regi_group(ext_regi, all_regi) | region groups (regions that together corresponds to a H12 region) |
| regi_groupExt(ext_regi, all_regi) | extended region group mapping. Mapping model regions that belong to region group, including one to one region mapping |
| regi(all_regi) | all regions used in the solution process |
| rlf | cost levels of fossil fuels |
| t(ttot) | optimisation time, years between cm_startyear and 2150 with 5 to 20 years time steps |
| tall | time index, each year from 1900 to 3000 |
| te(all_te) | energy technologies |
| teBio(all_te) | biomass energy systems technologies |
| teBioPebiolc(all_te) | biomass technologies using pebiolc |
| teCCS(all_te) | Technologies with carbon capture |
| teEs(all_teEs) | ES technologies which are actually used (to be filled by module realizations). |
| ttot(tall) | time index with spin-up, years between 1900 and 2150 with 5 to 20 years time steps |
David Klein
01_macro, 04_PE_FE_parameters, 05_initialCap, 21_tax, 24_trade, 26_agCosts, 37_industry, core