REMIND - REgional Model of INvestments and Development

3.7.0

created with goxygen 1.5.0

Biomass (30_biomass)

Description

The biomass module calculates the production costs of all types of primary energy biomass.

Interfaces

Interface plot missing!

Input

module inputs (A: magpie)
  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_cf
(tall, all_regi, all_te)
read-in parameter for capacity factor (fraction of the year that a plant is running) \(share\) x
pm_costsTradePeFinancial
(all_regi, char, all_enty)
PE tradecosts (financial costs on import, export and use) x
pm_dataren
(all_regi, char, rlf, all_te)
regional renewable potential, maxprod [TWa] and capacity factor, nur \(share\) x
pm_eta_conv
(tall, all_regi, all_te)
conversion efficiency of all energy technologies, only applying to technologies that do not have explicit time-dependant conversion efficiencies, still eta converges until 2050 to dataglob_values. \(efficiency (0..1)\) x
pm_omeg
(all_regi, opTimeYr, all_te)
technical depreciation parameter, gives the share of a capacity that is still usable after technical life time. \(none/share, value between 0 and 1\) x
pm_ts
(tall)
(t_n+1 - t_n-1)/2 for a timestep t_n x
pm_tsu2opTimeYr
(ttot, opTimeYr)
auxiliary parameter to map time steps to past time steps: counts the number of model timesteps between years ttot-opTimeYr and ttot, used for q_transPe2se and q_cap equations \(unitless\) x
sm_EJ_2_TWa convert from Exa Joule to Tera Watt annum x
sm_GJ_2_TWa convert from Giga Joule to Tera Watt annum x
sm_eps small number: 1e-9 x
sm_magpieIter Count the number of MAgPIE iterations, starting with zero x
sm_updateMagpieData Boolean defined in core/presolve indicating if MAgPIE is running in the current Nash iteration (1) or not (0) x
vm_Xport
(tall, all_regi, all_enty)
Export of traded commodity. 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_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

Output

module outputs
  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 \(T\$US\)
vm_pebiolc_price
(ttot, all_regi)
bioenergy price based on MAgPIE supply curves \(T\$/TWa\)

Realizations

(A) magpie

The costs for purpose grown ligno-cellulosic biomass are the integral under the supplycurve. The supplycurves have been derived from MAgPIE

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).

\[\begin{multline*} vm\_costFuBio(ttot,regi) = \sum_{peren2rlf30(enty,rlf)}\left( p30\_datapebio(regi,enty,rlf,"cost",ttot) \cdot vm\_fuExtr(ttot,regi,enty,rlf)\right) + \left(v30\_pebiolc\_costs(ttot,regi) \cdot v30\_multcost(ttot,regi)\right)\$\left(sm\_magpieIter gt 0\right) + v30\_pebiolc\_costs(ttot,regi) \$\left(sm\_magpieIter eq 0\right) + \sum_{peren2cont30(enty,rlf)}\left( vm\_fuExtr(ttot,regi,enty,rlf) \cdot pm\_costsTradePeFinancial(regi,"use",enty)\right) \end{multline*}\]

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*}\]

Limitations There are no known limitations.

Definitions

Objects

module-internal objects (A: magpie) (continued below)
  Description Unit
f30_bioen_price
(tall, all_regi, all_LU_emi_scen, all_rcp_scen, all_charScen)
time dependent fit coefficients for bioenergy price formula
i30_bioen_price_a
(ttot, all_regi)
Time dependent intercept in bioenergy price formula \(T\$US/TWa\)
i30_bioen_price_b
(ttot, all_regi)
Time dependent slope in bioenergy price formula \(T\$US/TWa/TWa\)
o_p30_pebiolc_price_emu_preloop
(iteration, ttot, all_regi)
track p30_pebiolc_price_emu_preloop across Nash iterations
o_p30_pebiolc_price_emu_preloop_shifted
(iteration, ttot, all_regi)
track p30_pebiolc_price_emu_preloop_shifted across Nash iterations
o_p30_pebiolc_pricemag
(iteration, ttot, all_regi)
track o_p30_pebiolc_pricemag across Nash iterations
o_p30_pebiolc_pricmult
(iteration, ttot, all_regi)
track p30_pebiolc_pricmult across Nash iterations
o_pm_pebiolc_costs_emu_preloop
(iteration, ttot, all_regi)
track p30_pebiolc_costs_emu_preloop across Nash iterations
o_v30_pebiolc_costs
(iteration, ttot, all_regi)
track v30_pebiolc_costs across Nash iterations
p30_bio1stgen
(tall, all_regi, all_enty)
regional maximal production potential for 1st generation crops only (pebioil, pebios)
p30_biolcProductionLookup
(tall, all_regi, all_LU_emi_scen, all_rcp_scen)
regional production of pebiolc purpose grown
p30_biolcResidues
(tall, all_regi, all_LU_emi_scen)
regional potential for pebiolc residues
p30_bioprod_regi_lim
(ext_regi)
limit of total biomass production per region or region group \(EJ/yr\)
p30_datapebio
(all_regi, all_enty, rlf, charPeRe, ttot)
Global bioenergy potential for lignocellulosic residues and 1st generation crops \(TWa\)
p30_demPe
(ttot, all_regi)
Primary energy demand imported from gdx or previous iteration \(TWa\)
p30_fuelex_dummy
(all_regi)
Dummy for bio-energy supply per region
p30_max_pebiolc_dist_by_prod
(all_regi)
Unscaled biomass allocation distributed to model regions (H12 groups split to EU21 sub-regions by 2020 MAgPIE production) \(TWa\)
p30_max_pebiolc_dist_by_prod_grp
(ext_regi)
Hardcoded biomass allocation per H12 region group, based on ~2020 total agricultural crop production \(EJ/yr\)
p30_max_pebiolc_dist_by_prod_scaled
(tall, all_regi)
Per-year regional biomass allocation, down-scaled to the available budget while preserving regional shares \(TWa\)
p30_max_pebiolc_dist_by_prod_tot
(tall)
Total biomass distributed via crop-production shares per year, capped by availability \(TWa\)
p30_max_pebiolc_dummy Dummy for bio energy supply at p30_pebiolc_price_dummy
p30_max_pebiolc_path
(all_regi, tall)
Time path of regional maximal pebiolc production \(TWa\)
p30_max_pebiolc_path_glob
(tall)
Time path of global maximal pebiolc production \(TWa\)
p30_maxprod_residue
(ttot, all_regi)
Maximal potential of residues enhanced by demand of biotr \(TWa\)
p30_pebiolc_demand_helper_level
(tall, all_regi)
Save level of vm_fuelex for a better starting point since it is overwritten between nash iterations
p30_pebiolc_demand_helper_upper
(tall, all_regi)
Save upper bound on vm_fuelex to preserve it across Nash iterations since it is overwritten between nash iterations
p30_pebiolc_price_dummy Dummy for the bio-energy price to match the bioenergy bound cm_maxProdBiolc
p30_pebiolc_price_emu_preloop
(ttot, all_regi)
Bioenergy price calculated with emulator using MAgPIE demand. For shift factor calculation \(T\$US/TWa\)
p30_pebiolc_price_emu_preloop_shifted
(ttot, all_regi)
Bioenergy price calculated with emulator using MAgPIE demand after shift factor calculation \(T\$US/TWa\)
p30_pebiolc_pricemag
(tall, all_regi)
Prices for lignocellulosic purpose grown bioenergy from MAgPIE \(T\$US/TWa\)
p30_pebiolc_pricmult
(ttot, all_regi)
Regional multiplication factor that scales emulator prices to better fit actual MAgPIE prices \(-\)
p30_pebiolc_pricshift
(ttot, all_regi)
Regional translation factor that shifts emulator prices to better fit actual MAgPIE prices \(-\)
q30_BioPEProdTotal
(ttot, all_regi)
Calculate total domestic PE biomass production
q30_costAdj
(ttot, all_regi)
Improve convergence penalizing deviations from last coupling iteration
q30_costFuBio
(ttot, all_regi)
Total costs of bioenergy production
q30_limitTeBio
(ttot, all_regi)
Limit BECCS in policy runs relative to reference scenario
q30_limitXpBio
(ttot, all_regi)
Only purpose grown bioenergy may be exported, no residues
q30_pebiolc_costs
(ttot, all_regi)
MAgPIE emulator: calculates the costs of pebiolc according to MAgPIE supply curves
q30_pebiolc_price
(ttot, all_regi)
MAgPIE emulator: calculates the price of pebiolc according to MAgPIE supply curves
q30_priceshift Calculates shift factor by minimizing least squares of price differences between MAgPIE output and MAgPIE emulator
s30_D2TD Multiplicative factor to convert from Dollar to TeraDollar
s30_max_pebiolc_dist_by_prod Total biomass distributed by crop production, derived from the hardcoded regional values \(EJ/yr\)
s30_switch_shiftcalc Switch to activate equation for shift calculation before main solve and to deactivate it during main solve
v30_BioPEProdTotal
(ttot, all_regi)
total domestic PE biomass production \(TWyr\)
v30_multcost
(ttot, all_regi)
Cost markup factor for deviations from demand of last coupling iteration \(-\)
v30_pebiolc_costs
(ttot, all_regi)
Bioenergy costs according to MAgPIE supply curves \(T\$US\)
v30_pricemult
(ttot, all_regi)
Regional multiplication factor that scales emulator prices to better fit actual MAgPIE prices \(-\)
v30_priceshift
(ttot, all_regi)
Regional translation factor that shifts emulator prices to better fit actual MAgPIE prices \(-\)
v30_shift_r2 Least square to minimize during shift calculation
  A
f30_bioen_price
(tall, all_regi, all_LU_emi_scen, all_rcp_scen, all_charScen)
x
i30_bioen_price_a
(ttot, all_regi)
x
i30_bioen_price_b
(ttot, all_regi)
x
o_p30_pebiolc_price_emu_preloop
(iteration, ttot, all_regi)
x
o_p30_pebiolc_price_emu_preloop_shifted
(iteration, ttot, all_regi)
x
o_p30_pebiolc_pricemag
(iteration, ttot, all_regi)
x
o_p30_pebiolc_pricmult
(iteration, ttot, all_regi)
x
o_pm_pebiolc_costs_emu_preloop
(iteration, ttot, all_regi)
x
o_v30_pebiolc_costs
(iteration, ttot, all_regi)
x
p30_bio1stgen
(tall, all_regi, all_enty)
x
p30_biolcProductionLookup
(tall, all_regi, all_LU_emi_scen, all_rcp_scen)
x
p30_biolcResidues
(tall, all_regi, all_LU_emi_scen)
x
p30_bioprod_regi_lim
(ext_regi)
x
p30_datapebio
(all_regi, all_enty, rlf, charPeRe, ttot)
x
p30_demPe
(ttot, all_regi)
x
p30_fuelex_dummy
(all_regi)
x
p30_max_pebiolc_dist_by_prod
(all_regi)
x
p30_max_pebiolc_dist_by_prod_grp
(ext_regi)
x
p30_max_pebiolc_dist_by_prod_scaled
(tall, all_regi)
x
p30_max_pebiolc_dist_by_prod_tot
(tall)
x
p30_max_pebiolc_dummy x
p30_max_pebiolc_path
(all_regi, tall)
x
p30_max_pebiolc_path_glob
(tall)
x
p30_maxprod_residue
(ttot, all_regi)
x
p30_pebiolc_demand_helper_level
(tall, all_regi)
x
p30_pebiolc_demand_helper_upper
(tall, all_regi)
x
p30_pebiolc_price_dummy x
p30_pebiolc_price_emu_preloop
(ttot, all_regi)
x
p30_pebiolc_price_emu_preloop_shifted
(ttot, all_regi)
x
p30_pebiolc_pricemag
(tall, all_regi)
x
p30_pebiolc_pricmult
(ttot, all_regi)
x
p30_pebiolc_pricshift
(ttot, all_regi)
x
q30_BioPEProdTotal
(ttot, all_regi)
x
q30_costAdj
(ttot, all_regi)
x
q30_costFuBio
(ttot, all_regi)
x
q30_limitTeBio
(ttot, all_regi)
x
q30_limitXpBio
(ttot, all_regi)
x
q30_pebiolc_costs
(ttot, all_regi)
x
q30_pebiolc_price
(ttot, all_regi)
x
q30_priceshift x
s30_D2TD x
s30_max_pebiolc_dist_by_prod x
s30_switch_shiftcalc x
v30_BioPEProdTotal
(ttot, all_regi)
x
v30_multcost
(ttot, all_regi)
x
v30_pebiolc_costs
(ttot, all_regi)
x
v30_pricemult
(ttot, all_regi)
x
v30_priceshift
(ttot, all_regi)
x
v30_shift_r2 x

Sets

sets in use
  description
all_LU_emi_scen all emission baselines for CH4 and N2O land use emissions from MAgPIE
all_charScen coefficients of the emulator formulas
all_enty all types of quantities
all_rcp_scen all possible RCP scenarios
all_regi all regions
all_te all energy technologies, including from modules
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
entySe(all_enty) secondary energy types
ext_regi extended regions list (includes subsets of H12 regions)
iteration iterator for main (Negishi/Nash) iterations
opTimeYr actual lifetime of a built technology in years
opTimeYr2te(all_te, opTimeYr) map each technology with its possible age
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(all_regi) all regions used in the solution process
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
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
tsu2opTimeYr(ttot, opTimeYr) map each model timestep with the possible age of technologies
ttot(tall) time index with spin-up, years between 1900 and 2150 with 5 to 20 years time steps

Authors

David Klein

See Also

04_PE_FE_parameters, 05_initialCap, 21_tax, 24_trade, 26_agCosts, core

References