The Fossil Module calculates the costs of a specific amount of fossil resource extraction.
Description | Unit | A | B | C | D | |
---|---|---|---|---|---|---|
cm_earlyreti_rate | maximum portion of capital stock that can be retired in one year | x | x | |||
cm_limit_peur_scen | limit total uranium production | x | x | |||
cm_nucscen | nuclear option choice | x | x | |||
cm_rentconvcoal | [grades2poly] number of years required to converge to the 2100 coal rent | x | ||||
cm_rentconvgas | [grades2poly] number of years required to converge to the 2100 gas rent | x | ||||
cm_rentconvoil | [grades2poly] number of years required to converge to the 2100 oil rent | x | ||||
cm_rentdisccoal | [grades2poly] discount factor for the coal rent | x | ||||
cm_rentdisccoal2 | [grades2poly] discount factor for the coal rent achieved in 2100 | x | ||||
cm_rentdiscgas | [grades2poly] discount factor for the gas rent | x | ||||
cm_rentdiscgas2 | [grades2poly] discount factor for the gas rent achieved in 2100 | x | ||||
cm_rentdiscoil | [grades2poly] discount factor for the oil rent | x | ||||
cm_rentdiscoil2 | [grades2poly] discount factor for the oil rent achieved in 2100 | x | ||||
cm_startyear | first optimized modelling time step | \(year\) | x | x | x | |
cm_trdadj | parameter scale the adjustment cost parameter for increasing gas trade export | x | x | |||
pm_costsTradePeFinancial (all_regi, char, all_enty) |
PE tradecosts (financial costs on import, export and use) | x | x | |||
pm_EN_demand_from_initialcap2 (all_regi, all_enty) |
PE demand resulting from the initialcap routine. | \(EJ, Uranium: MT U3O8\) | x | |||
pm_IO_trade (tall, all_regi, all_enty, char) |
Energy trade bounds based on IEA data. | x | ||||
pm_prtp (all_regi) |
Pure rate of time preference | x | x | |||
pm_ts (tall) |
(t_n+1 - t_n-1)/2 for a timestep t_n | x | x | x | ||
pm_ttot_val (ttot) |
value of ttot set element | x | x | x | ||
qm_fuel2pe (ttot, all_regi, all_enty) |
constraint on cumulative fuel use | x | x | |||
sm_EJ_2_TWa | multiplicative factor to convert from EJ to TWa | x | x | |||
vm_costFuEx (ttot, all_regi, all_enty) |
fuel costs from exhaustible energy | \(tril\$US\) | x | x | x | x |
vm_fuExtr (ttot, all_regi, all_enty, rlf) |
fuel use | \(TWa\) | x | x | x | x |
vm_Mport (tall, all_regi, all_enty) |
Import of traded commodity. | x | x | |||
vm_prodPe (ttot, all_regi, all_enty) |
pe production. | \(TWa, Uranium: Mt Ur\) | x | x | ||
vm_Xport (tall, all_regi, all_enty) |
Export of traded commodity. | x | x |
Description | Unit | |
---|---|---|
pm_ffPolyCumEx (all_regi, all_enty, char) |
Minimum / maximum cumulative extraction (condition to activate rent / upper bound on v31_fuExtrCum for Oil, Gas and Coal) | |
pm_fuelex_cum (tall, all_regi, all_enty, rlf) |
(Output) cumulated extraction. Unit: | |
pm_prodIni (all_regi, all_enty) |
(Preloop) regional amount of primary energy that has to be produced according to 1.1*initial demand. Unit: |
For this realization exogenous fossil extraction and costs are used. The data are from a baseline run.
Limitations Fossil fuel extraction and costs are fixed to exogenous values.
This realization parametrizes fossil extraction cost curves into 3rd-order polynomials for each fuel (oil, gas and coal) in each region. Input data are taken from REMIND runs with the timeDepGrades fossil realization under various fossil fuel availability assumptions. This approximation of the original cost-grade-based extraction algorithm greatly reduces model runtime.
Uranium extraction costs parameterized as 3rd order polynomial with short-term calibrated adjustment costs which capture inertias, e.g. from infrastructure
\[\begin{multline*} vm\_costFuEx(ttot,regi,enty) = \left( p31\_costExPoly(regi,"xi1",enty) + p31\_costExPoly(regi,"xi2",enty) \cdot v31\_fuExtrCum(ttot,regi,enty,"1") + p31\_costExPoly(regi,"xi3",enty) \cdot v31\_fuExtrCum(ttot,regi,enty,"1")^{2 }+ p31\_costExPoly(regi,"xi4",enty) \cdot v31\_fuExtrCum(ttot,regi,enty,"1")^{3 }\right) \cdot \left(1\$\left(ttot.val eq 2005\right) + \left(\left(1-p31\_fosadjco\_xi5xi6(regi,"xi5",enty)\right) + p31\_fosadjco\_xi5xi6(regi,"xi5",enty) \cdot \left(\frac{\left(vm\_fuExtr(ttot,regi,enty,"1")+1.e-5\right)}{\left(vm\_fuExtr(ttot-1,regi,enty,"1")\$\left(ttot.val gt 2005\right)+1.e-5\right)}\right)^{p31\_fosadjco\_xi5xi6(regi,"xi6",enty) }\right)\$\left(ttot.val gt 2005\right) \right) \cdot vm\_fuExtr(ttot,regi,enty,"1") \end{multline*}\]
Oil, gas and coal extraction costs fitted to existing REMIND output as a 3rd-order polynomial with short-term calibrated adjustment costs which capture inertias, e.g. from infrastructure
\[\begin{multline*} vm\_costFuEx(ttot,regi,enty) = \left( \left( p31\_ffPolyCoeffs(regi,enty,"0") + p31\_ffPolyCoeffs(regi,enty,"1") \cdot v31\_fuExtrCum(ttot,regi,enty,"1") + p31\_ffPolyCoeffs(regi,enty,"2") \cdot v31\_fuExtrCum(ttot,regi,enty,"1")^{2 }+ p31\_ffPolyCoeffs(regi,enty,"3") \cdot v31\_fuExtrCum(ttot,regi,enty,"1")^{3 }\right) \cdot \left(1\$\left(ttot.val eq 2005\right) +\left(\left(\left(1-p31\_fosadjco\_xi5xi6(regi,"xi5",enty)\right) + p31\_fosadjco\_xi5xi6(regi,"xi5",enty) \cdot \left(\frac{\left(vm\_fuExtr(ttot,regi,enty,"1")+1.e-5\right)}{\left(vm\_fuExtr(ttot-1,regi,enty,"1")\$\left(ttot.val gt 2005\right)+1.e-5\right)}\right)^{p31\_fosadjco\_xi5xi6(regi,"xi6",enty) }\right)\$\left(ttot.val gt 2005\right)\right) \right) + \left( p31\_rentdisctot(ttot,enty) \cdot \left( p31\_ffPolyRent(regi,enty,"0") + p31\_ffPolyRent(regi,enty,"1") \cdot v31\_fuExtrCum(ttot,regi,enty,"1") \right)\$\left(v31\_fuExtrCum.l(ttot,regi,enty,"1")\$\left(ttot.val ge 2010 and ttot.val le 2150\right) gt pm\_ffPolyCumEx(regi,enty,"min")\right) \right) \right) \cdot vm\_fuExtr(ttot,regi,enty,"1") \end{multline*}\]
Cumulated fuel extraction (oil, gas and coal) is the sum of extraction in each time step multiplied by the time step length.
\[\begin{multline*} v31\_fuExtrCum(ttot,regi,enty,"1") = v31\_fuExtrCum(ttot-1,regi,enty,"1")\$\left(ttot.val gt 2005\right) + pm\_ts(ttot) \cdot \left(vm\_fuExtr(ttot,regi,enty,"1") \right) \end{multline*}\]
\[\begin{multline*} v31\_fuExtrMC(enty,"1") = p31\_costExPoly(regi,"xi1",enty) + p31\_costExPoly(regi,"xi2",enty) \cdot v31\_fuExtrCumMax\left(regi,enty, "1"\right) + p31\_costExPoly(regi,"xi3",enty) \cdot v31\_fuExtrCumMax\left(regi,enty, "1"\right)^{2 }+ p31\_costExPoly(regi,"xi4",enty) \cdot v31\_fuExtrCumMax\left(regi,enty, "1"\right)^{3 } \end{multline*}\]
\[\begin{multline*} v31\_squaredDiff = \left(s31\_max\_disp\_peur - \sum_{regi}\left( v31\_fuExtrCumMax\left(regi, "peur", "1"\right)\right)\right) \cdot \left(s31\_max\_disp\_peur - \sum_{regi}\left( v31\_fuExtrCumMax\left(regi, "peur", "1"\right)\right)\right) \end{multline*}\]
Limitations There are no known limitations.
This realization is dedicated to the running the standalone version of MOFEX (Model Of Fossil EXtraction), which minimizes the discounted extraction and trade costs of fossils while balancing trade for each time step. This is not to be run within a REMIND run but instead through the standalone architecture or in a soft-linked iteration with REMIND (not yet implemented)
MOFEX (Model of Fossil Extraction) takes fossil demand, imports and exports from a prior REMIND run as inputs, and it calculates fossil extraction and trade as outputs.
\[\begin{multline*} \sum_{regi}\left( vm\_Xport(t,regi,trade) - vm\_Mport(t,regi,trade)\right) = 0 \end{multline*}\]
\[\begin{multline*} v31\_MOFEX\_costMinFuelEx = \sum_{ttot\$\left(ttot.val ge cm\_startyear\right)}\left( \sum_{regi}\left(\frac{ pm\_ts(ttot) }{ \left(\left(1 + pm\_prtp(regi)\right)^{\left(pm\_ttot\_val(ttot)-cm\_startyear\right)}\right) } \cdot \left(\sum_{peFos(enty)} vm\_costFuEx(ttot,regi,enty) + \sum_{peFos(enty)}\left( pm\_costsTradePeFinancial(regi,"Mport",enty) \cdot vm\_Mport(ttot,regi,enty)\right) + \sum_{peFos(enty)}\left( \left(pm\_costsTradePeFinancial(regi,"Xport",enty) \cdot vm\_Xport(ttot,regi,enty)\right) \cdot \left(1 +\frac{ pm\_costsTradePeFinancial(regi,"XportElasticity",enty) }{ sqr\left(pm\_ttot\_val(ttot)-pm\_ttot\_val(ttot-1)\right) } \cdot \left(\frac{ vm\_Xport(ttot,regi,enty) }{ \left(vm\_Xport(ttot-1,regi,enty) + pm\_costsTradePeFinancial\left(regi, "tradeFloor",enty\right)\right) }- 1\right) \right) \right) \right) \right) \right) \end{multline*}\]
Fossil fuels are represented by discrete grades based on ranges of marginal extraction costs. The total extraction cost for each time step is calculated based on long-term marginal extraction costs and short-term calibrated adjustment costs which capture inertias, e.g. from infrastructure
\[\begin{multline*} vm\_costFuEx(ttot,regi,enty) = \sum_{pe2rlf(enty,rlf)}\left( \left(\left(p31\_grades\left(ttot,regi,"xi1",enty, rlf\right) + pm\_costsTradePeFinancial(regi,"use",enty) + \left(p31\_grades(ttot,regi,"xi2",enty,rlf)-p31\_grades\left(ttot,regi,"xi1",enty, rlf\right)\right) \cdot \frac{ v31\_fuExtrCum\left(ttot-1,regi,enty, rlf\right)\$\left(ttot.val gt 2005\right) }{ p31\_grades\left(ttot,regi,"xi3",enty, rlf\right) }+ \left(p31\_grades(ttot,regi,"xi2",enty,rlf)-p31\_grades\left(ttot,regi,"xi1",enty, rlf\right)\right) \cdot \frac{ \left(v31\_fuExtrCum(ttot,regi,enty,rlf)-v31\_fuExtrCum(ttot-1,regi,enty,rlf)\$\left(ttot.val gt 2005\right)\right) }{ \left(2 \cdot p31\_grades\left(ttot,regi,"xi3",enty, rlf\right)\right) }\right) \cdot \left( \left(1 + \left(p31\_datafosdyn(regi,enty,rlf,"alph") \cdot \frac{ 1}{\left(sqr\left(pm\_ttot\_val(ttot)-pm\_ttot\_val(ttot-1)\right)\right) } \cdot sqr\left(\frac{\left(vm\_fuExtr(ttot,regi,enty,rlf)-vm\_fuExtr(ttot-1,regi,enty,rlf)\right)}{\left(vm\_fuExtr(ttot-1,regi,enty,rlf)+ 0.001 \cdot p31\_grades(ttot,regi,"xi3",enty,rlf) + p31\_extraseed(ttot,regi,enty,rlf) + 1.e-9\right)}\right) \right)\$\left(ttot.val gt 2005\right) \right) \right) \cdot vm\_fuExtr(ttot,regi,enty,rlf) \right)\$\left(p31\_grades(ttot,regi,"xi3",enty,rlf) gt 0\right) \right) \end{multline*}\]
Cumulated fuel extraction (oil, gas and coal) is the sum of extraction in each time step multiplied by the time step length. If early retirement of oil wells is switched on, any slack capacity from those fields is also added.
q31_fuExtrCum(ttot,regi,pe2rlf(peEx(enty),rlf))$(ttot.val ge cm_startyear)..
v31_fuExtrCum(ttot,regi,enty,rlf)
=e=
v31_fuExtrCum(ttot-1,regi,enty,rlf)$(ttot.val gt 2005) + pm_ts(ttot)*(vm_fuExtr(ttot,regi,enty,rlf)
$if %cm_OILRETIRE% == "on" + v31_fuSlack(ttot,regi,enty,rlf)
);
These dynamic constraints on the decline and increase rates of production reflect physical and technical inertias of oil, gas and coal Dynamic constraint on decline rate
q31_fuExtrDec(ttot+1,regi,enty2rlf_dec(enty,rlf))$(pm_ttot_val(ttot+1) ge max(2010,cm_startyear))..
vm_fuExtr(ttot+1,regi,enty,rlf)
$if %cm_OILRETIRE% == "on" + v31_fuSlack(ttot+1,regi,enty,rlf)
=g=
p31_datafosdyn(regi,enty,rlf,"decoffset") * p31_grades(ttot,regi,"xi3",enty,rlf) * 0.5 * ( pm_ts(ttot+1) + pm_ts(ttot) )
$if not setglobal test_TS + (1-p31_datafosdyn(regi,enty,rlf,"dec"))**(pm_ttot_val(ttot+1)-pm_ttot_val(ttot)) * vm_fuExtr(ttot,regi,enty,rlf);
\[\begin{multline*} v31\_fuSlack(ttot+1,regi,enty,rlf) \leq v31\_fuSlack(ttot,regi,enty,rlf) + \left(pm\_ttot\_val(ttot+1)-pm\_ttot\_val(ttot)\right) \cdot cm\_earlyreti\_rate \cdot 0.3 \cdot p31\_max\_oil\_extraction(regi,enty,rlf) \end{multline*}\]
Dynamic constraint on increase rate
q31_fuExtrInc(ttot+1,regi,enty2rlf_inc(enty,rlf))$((p31_grades(ttot,regi,"xi3",enty,rlf) gt 0) AND (pm_ttot_val(ttot+1) ge max(2010,cm_startyear)))..
vm_fuExtr(ttot+1,regi,enty,rlf)
=l=
(1 + p31_datafosdyn(regi,enty,rlf,"inc"))**(pm_ttot_val(ttot+1)-pm_ttot_val(ttot)) * (vm_fuExtr(ttot,regi,enty,rlf) + p31_datafosdyn(regi,enty,rlf,"incoffset"))
$ifthen.cm_oil_scen %cm_oil_scen% == "highOil" +(10)$(cm_startyear eq 2015 AND pm_ttot_val(ttot+1) eq 2015 AND ((sameas(enty,"peoil") AND sameas(rlf,"7")) OR (sameas(enty,"pegas") AND sameas(rlf,"6"))))
$elseif.cm_oil_scen %cm_oil_scen% == "6" +(10)$(cm_startyear eq 2015 AND pm_ttot_val(ttot+1) eq 2015 AND (sameas(enty,"peoil") AND sameas(rlf,"1") AND sameas(regi,"REF")));
option nlp = conopt4; !! Greatly speed up convergence process (x3~x4)
Lower bounds on fossil fuel extraction for all time steps To make the model “see” all grades
loop(regi,
loop(peFos(enty),
loop(rlf,
loop(t,
if (p31_grades(t,regi,"xi3",enty,rlf) gt 0,
vm_fuExtr.lo(t,regi,pe2rlf(enty,rlf)) = 1e-9;
);
);
);
);
);
Special case for grades declining to a zero value Set lower and upper bounds to 0.0 to make the model converge. p31_grades declines linearly whereas vm_fuExtr declines exponentially This particular situation prevent the model from finding a solution [TODO] In the future a small amount should be added to p31_grades to allow for extraction from these grades
loop(regi,
loop(peFos(enty),
loop(rlf,
if (p31_grades("2005",regi,"xi3",enty,rlf) gt 0.0 and p31_grades("2035",regi,"xi3",enty,rlf) eq 0.0,
vm_fuExtr.up(t,regi,pe2rlf(enty,rlf))$(rlf.val ge 6) = 0.0;
vm_fuExtr.lo(t,regi,pe2rlf(enty,rlf))$(rlf.val ge 6) = 0.0;
vm_fuExtr.up(t,regi,pe2rlf(enty,rlf))$(rlf.val lt 6) = 0.0;
vm_fuExtr.lo(t,regi,pe2rlf(enty,rlf))$(rlf.val lt 6) = 0.0;
);
);
);
);
if (s31_debug eq 1,
display vm_fuExtr.lo, vm_fuExtr.up;
);
v31_fuExtrCum.up(t,regi,peExGrade(enty),rlf) = p31_grades(t,regi,"xi3",enty,rlf);
Upper bound on fossil fuel costs
vm_costFuEx.up(t,regi,peExGrade(enty)) = 10.0;
option nlp = conopt4; !! Greatly speed up convergence process (x3~x4)
o_modelstat = 100;
option solprint=on
if(o_modelstat ne 2,
solve m31_MOFEX using nlp minimizing v31_MOFEX_costMinFuelEx;
o_modelstat = m31_MOFEX.modelstat;
);
p31_MOFEX_fuelex_costMin(ttot,regi,enty,rlf) = vm_fuExtr.l(ttot,regi,enty,rlf);
p31_MOFEX_cumfex_costMin(ttot,regi,enty,rlf) = v31_fuExtrCum.l(ttot,regi,enty,rlf);
p31_MOFEX_Mport_costMin(ttot,regi,trade) = vm_Mport.l(ttot,regi,trade);
p31_MOFEX_Xport_costMin(ttot,regi,trade) = vm_Xport.l(ttot,regi,trade);
if(m31_MOFEX.modelstat ne 2,
Execute_Unload 'mofex';
abort "MOFEX did not find an optimal solution. Stopping job...";
);
vm_prodPe.lo(ttot,regi,peExGrade(enty)) = 1.e-9;
vm_prodPe.up(ttot,regi,peExGrade(enty)) = 1.e+2;
display p31_MOFEX_fuelex_costMin;
option nlp = %cm_conoptv%;
Limitations There are no known limitations.
This realization represents fossil fuel resources as a time-dependent cost grade structure. The grades are each defined
by a minimum and a maximum price, and these cost brackets change over time based on the rate of technological change as prescribed exogenously by the socioeconomic scenario. Each model region contains different volumes of each cost grade of each fuel (oil, gas and coal) based on data compiled from IIASA’s 2012 Global Energy Assessment and the German Federal Institute for Geosciences and
Natural Resources (BGR) The model extracts resources in a Hotelling fashion, such that lower cost grades are depleted in each region
before shifting production to higher-cost grades.
Uranium extraction is represented as a 3rd order polynomial parametrized by long-term marginal extraction costs.
\[\begin{multline*} vm\_costFuEx(ttot,regi,enty) = \left( p31\_costExPoly(regi,"xi1",enty) + p31\_costExPoly(regi,"xi2",enty) \cdot v31\_fuExtrCum\left(ttot,regi,enty, "1"\right) + p31\_costExPoly(regi,"xi3",enty) \cdot v31\_fuExtrCum\left(ttot,regi,enty, "1"\right)^{2 }+ p31\_costExPoly(regi,"xi4",enty) \cdot v31\_fuExtrCum\left(ttot,regi,enty, "1"\right)^{3 }\right) \cdot \cdot ' Short term decline and increase rates are determined by adjustment costs. \left(1\$\left(ttot.val eq 2005\right) +\left( \left(1-p31\_fosadjco\_xi5xi6(regi,"xi5",enty)\right) + p31\_fosadjco\_xi5xi6(regi,"xi5",enty) \cdot \left(\frac{\left(vm\_fuExtr(ttot,regi,enty,"1")+1.e-5\right)}{\left(vm\_fuExtr(ttot-1,regi,enty,"1")\$\left(ttot.val gt 2005\right)+1.e-5\right)}\right)^{p31\_fosadjco\_xi5xi6(regi,"xi6",enty) }\right)\$\left(ttot.val gt 2005\right) \right) \cdot vm\_fuExtr(ttot,regi,enty,"1") \end{multline*}\]
Two dummy equations further determine regional uranium extraction bounds.
\[\begin{multline*} v31\_fuExtrMC(enty,"1") = p31\_costExPoly(regi,"xi1",enty) + p31\_costExPoly(regi,"xi2",enty) \cdot v31\_fuExtrCumMax\left(regi,enty, "1"\right) + p31\_costExPoly(regi,"xi3",enty) \cdot v31\_fuExtrCumMax\left(regi,enty, "1"\right)^{2 }+ p31\_costExPoly(regi,"xi4",enty) \cdot v31\_fuExtrCumMax\left(regi,enty, "1"\right)^{3 } \end{multline*}\]
\[\begin{multline*} s31\_max\_disp\_peur = \sum_{regi}\left( v31\_fuExtrCumMax\left(regi,enty, "1"\right)\right) \end{multline*}\]
MOFEX (Model of Fossil Extraction) minimizes the discounted extraction and trade costs of fossils while balancing trade for each time step. The model takes fossil demand, imports and exports from a prior REMIND run as inputs, and it calculates fossil extraction and trade as outputs. In this realization, the output variables are returned to the current REMIND run as starting points for the hybrid optimization.
\[\begin{multline*} \sum_{regi}\left( vm\_Xport(t,regi,trade) - vm\_Mport(t,regi,trade)\right) = 0 \end{multline*}\]
\[\begin{multline*} v31\_MOFEX\_costMinFuelEx = \sum_{ttot\$\left(ttot.val ge cm\_startyear\right)}\left( \sum_{regi}\left(\frac{ pm\_ts(ttot) }{ \left(\left(1 + pm\_prtp(regi)\right)^{\left(pm\_ttot\_val(ttot)-cm\_startyear\right)}\right) } \cdot \left(\sum_{peFos(enty)} vm\_costFuEx(ttot,regi,enty) + \sum_{peFos(enty)}\left( pm\_costsTradePeFinancial(regi,"Mport",enty) \cdot vm\_Mport(ttot,regi,enty)\right) + \sum_{peFos(enty)}\left( \left(pm\_costsTradePeFinancial(regi,"Xport",enty) \cdot vm\_Xport(ttot,regi,enty)\right) \cdot \left(1 +\frac{ pm\_costsTradePeFinancial(regi,"XportElasticity",enty) }{ sqr\left(pm\_ttot\_val(ttot)-pm\_ttot\_val(ttot-1)\right) } \cdot \left(\frac{ vm\_Xport(ttot,regi,enty) }{ \left(vm\_Xport(ttot-1,regi,enty) + pm\_costsTradePeFinancial\left(regi, "tradeFloor",enty\right)\right) }- 1\right) \right) \right) \right) \right) \right) \end{multline*}\]
Fossil fuels are represented by discrete grades based on ranges of marginal extraction costs. The total extraction cost for each time step is calculated based on long-term marginal extraction costs and short-term calibrated adjustment costs which capture inertias, e.g. from infrastructure
\[\begin{multline*} vm\_costFuEx(ttot,regi,enty) = \sum_{pe2rlf(enty,rlf)}\left( \left(\left(p31\_grades\left(ttot,regi,"xi1",enty, rlf\right) + pm\_costsTradePeFinancial(regi,"use",enty) + \left(p31\_grades(ttot,regi,"xi2",enty,rlf)-p31\_grades\left(ttot,regi,"xi1",enty, rlf\right)\right) \cdot \frac{ v31\_fuExtrCum\left(ttot-1,regi,enty, rlf\right)\$\left(ttot.val gt 2005\right) }{ p31\_grades\left(ttot,regi,"xi3",enty, rlf\right) }+ \left(p31\_grades(ttot,regi,"xi2",enty,rlf)-p31\_grades\left(ttot,regi,"xi1",enty, rlf\right)\right) \cdot \frac{ \left(v31\_fuExtrCum(ttot,regi,enty,rlf)-v31\_fuExtrCum(ttot-1,regi,enty,rlf)\$\left(ttot.val gt 2005\right)\right) }{ \left(2 \cdot p31\_grades\left(ttot,regi,"xi3",enty, rlf\right)\right) }\right) \cdot \left( \left(1 + \left(p31\_datafosdyn(regi,enty,rlf,"alph") \cdot \frac{ 1}{\left(sqr\left(pm\_ttot\_val(ttot)-pm\_ttot\_val(ttot-1)\right)\right) } \cdot sqr\left(\frac{\left(vm\_fuExtr(ttot,regi,enty,rlf)-vm\_fuExtr(ttot-1,regi,enty,rlf)\right)}{\left(vm\_fuExtr(ttot-1,regi,enty,rlf)+ 0.001 \cdot p31\_grades(ttot,regi,"xi3",enty,rlf) + p31\_extraseed(ttot,regi,enty,rlf) + 1.e-9\right)}\right) \right)\$\left(ttot.val gt 2005\right) \right) \right) \cdot vm\_fuExtr(ttot,regi,enty,rlf) \right)\$\left(p31\_grades(ttot,regi,"xi3",enty,rlf) gt 0\right) \right) \end{multline*}\]
Cumulated fuel extraction (oil, gas and coal) is the sum of extraction in each time step multiplied by the time step length. If early retirement of oil wells is switched on, any slack capacity from those fields is also added.
q31_fuExtrCum(ttot,regi,pe2rlf(peEx(enty),rlf))$(ttot.val ge cm_startyear)..
v31_fuExtrCum(ttot,regi,enty,rlf)
=e=
v31_fuExtrCum(ttot-1,regi,enty,rlf)$(ttot.val gt 2005) + pm_ts(ttot)*(vm_fuExtr(ttot,regi,enty,rlf)
$if %cm_OILRETIRE% == "on" + v31_fuSlack(ttot,regi,enty,rlf)
);
These dynamic constraints on the decline and increase rates of production reflect physical and technical inertias of oil, gas and coal Dynamic constraint on decline rate
q31_fuExtrDec(ttot+1,regi,enty2rlf_dec(enty,rlf))$(pm_ttot_val(ttot+1) ge max(2010,cm_startyear))..
vm_fuExtr(ttot+1,regi,enty,rlf)
$if %cm_OILRETIRE% == "on" + v31_fuSlack(ttot+1,regi,enty,rlf)
=g=
p31_datafosdyn(regi,enty,rlf,"decoffset") * p31_grades(ttot,regi,"xi3",enty,rlf) * 0.5 * ( pm_ts(ttot+1) + pm_ts(ttot) )
$if not setglobal test_TS + (1-p31_datafosdyn(regi,enty,rlf,"dec"))**(pm_ttot_val(ttot+1)-pm_ttot_val(ttot)) * vm_fuExtr(ttot,regi,enty,rlf);
\[\begin{multline*} v31\_fuSlack(ttot+1,regi,enty,rlf) \leq v31\_fuSlack(ttot,regi,enty,rlf) + \left(pm\_ttot\_val(ttot+1)-pm\_ttot\_val(ttot)\right) \cdot cm\_earlyreti\_rate \cdot 0.3 \cdot p31\_max\_oil\_extraction(regi,enty,rlf) \end{multline*}\]
Dynamic constraint on increase rate
q31_fuExtrInc(ttot+1,regi,enty2rlf_inc(enty,rlf))$((p31_grades(ttot,regi,"xi3",enty,rlf) gt 0) AND (pm_ttot_val(ttot+1) ge max(2010,cm_startyear)))..
vm_fuExtr(ttot+1,regi,enty,rlf)
=l=
(1 + p31_datafosdyn(regi,enty,rlf,"inc"))**(pm_ttot_val(ttot+1)-pm_ttot_val(ttot)) * (vm_fuExtr(ttot,regi,enty,rlf) + p31_datafosdyn(regi,enty,rlf,"incoffset"))
$ifthen.cm_oil_scen %cm_oil_scen% == "highOil" +(10)$(cm_startyear eq 2015 AND pm_ttot_val(ttot+1) eq 2015 AND ((sameas(enty,"peoil") AND sameas(rlf,"7")) OR (sameas(enty,"pegas") AND sameas(rlf,"6"))))
+(10)$(cm_startyear eq 2015 AND cm_oil_scen eq 6 AND pm_ttot_val(ttot+1) eq 2015 AND (sameas(enty,"peoil") AND sameas(rlf,"1") AND sameas(regi,"REF")));
abort "MOFEX did not find an optimal solution. Stopping job...";
Uranium extraction is represented as a 3rd order polynomial parametrized by long-term marginal extraction costs.
\[\begin{multline*} vm\_costFuEx(ttot,regi,enty) = \left( p31\_costExPoly(regi,"xi1",enty) + p31\_costExPoly(regi,"xi2",enty) \cdot v31\_fuExtrCum\left(ttot,regi,enty, "1"\right) + p31\_costExPoly(regi,"xi3",enty) \cdot v31\_fuExtrCum\left(ttot,regi,enty, "1"\right)^{2 }+ p31\_costExPoly(regi,"xi4",enty) \cdot v31\_fuExtrCum\left(ttot,regi,enty, "1"\right)^{3 }\right) \cdot \cdot ' Short term decline and increase rates are determined by adjustment costs. \left(1\$\left(ttot.val eq 2005\right) +\left( \left(1-p31\_fosadjco\_xi5xi6(regi,"xi5",enty)\right) + p31\_fosadjco\_xi5xi6(regi,"xi5",enty) \cdot \left(\frac{\left(vm\_fuExtr(ttot,regi,enty,"1")+1.e-5\right)}{\left(vm\_fuExtr(ttot-1,regi,enty,"1")\$\left(ttot.val gt 2005\right)+1.e-5\right)}\right)^{p31\_fosadjco\_xi5xi6(regi,"xi6",enty) }\right)\$\left(ttot.val gt 2005\right) \right) \cdot vm\_fuExtr(ttot,regi,enty,"1") \end{multline*}\]
Two dummy equations further determine regional uranium extraction bounds.
\[\begin{multline*} v31\_fuExtrMC(enty,"1") = p31\_costExPoly(regi,"xi1",enty) + p31\_costExPoly(regi,"xi2",enty) \cdot v31\_fuExtrCumMax\left(regi,enty, "1"\right) + p31\_costExPoly(regi,"xi3",enty) \cdot v31\_fuExtrCumMax\left(regi,enty, "1"\right)^{2 }+ p31\_costExPoly(regi,"xi4",enty) \cdot v31\_fuExtrCumMax\left(regi,enty, "1"\right)^{3 } \end{multline*}\]
\[\begin{multline*} s31\_max\_disp\_peur = \sum_{regi}\left( v31\_fuExtrCumMax\left(regi,enty, "1"\right)\right) \end{multline*}\]
MOFEX (Model of Fossil Extraction) minimizes the discounted extraction and trade costs of fossils while balancing trade for each time step. The model takes fossil demand, imports and exports from a prior REMIND run as inputs, and it calculates fossil extraction and trade as outputs. In this realization, the output variables are returned to the current REMIND run as starting points for the hybrid optimization.
\[\begin{multline*} \sum_{regi}\left( vm\_Xport(t,regi,trade) - vm\_Mport(t,regi,trade)\right) = 0 \end{multline*}\]
\[\begin{multline*} v31\_MOFEX\_costMinFuelEx = \sum_{ttot\$\left(ttot.val ge cm\_startyear\right)}\left( \sum_{regi}\left(\frac{ pm\_ts(ttot) }{ \left(\left(1 + pm\_prtp(regi)\right)^{\left(pm\_ttot\_val(ttot)-cm\_startyear\right)}\right) } \cdot \left(\sum_{peFos(enty)} vm\_costFuEx(ttot,regi,enty) + \sum_{peFos(enty)}\left( pm\_costsTradePeFinancial(regi,"Mport",enty) \cdot vm\_Mport(ttot,regi,enty)\right) + \sum_{peFos(enty)}\left( \left(pm\_costsTradePeFinancial(regi,"Xport",enty) \cdot vm\_Xport(ttot,regi,enty)\right) \cdot \left(1 +\frac{ pm\_costsTradePeFinancial(regi,"XportElasticity",enty) }{ sqr\left(pm\_ttot\_val(ttot)-pm\_ttot\_val(ttot-1)\right) } \cdot \left(\frac{ vm\_Xport(ttot,regi,enty) }{ \left(vm\_Xport(ttot-1,regi,enty) + pm\_costsTradePeFinancial\left(regi, "tradeFloor",enty\right)\right) }- 1\right) \right) \right) \right) \right) \right) \end{multline*}\]
Fossil fuels are represented by discrete grades based on ranges of marginal extraction costs. The total extraction cost for each time step is calculated based on long-term marginal extraction costs and short-term calibrated adjustment costs which capture inertias, e.g. from infrastructure
\[\begin{multline*} vm\_costFuEx(ttot,regi,enty) = \sum_{pe2rlf(enty,rlf)}\left( \left(\left(p31\_grades\left(ttot,regi,"xi1",enty, rlf\right) + pm\_costsTradePeFinancial(regi,"use",enty) + \left(p31\_grades(ttot,regi,"xi2",enty,rlf)-p31\_grades\left(ttot,regi,"xi1",enty, rlf\right)\right) \cdot \frac{ v31\_fuExtrCum\left(ttot-1,regi,enty, rlf\right)\$\left(ttot.val gt 2005\right) }{ p31\_grades\left(ttot,regi,"xi3",enty, rlf\right) }+ \left(p31\_grades(ttot,regi,"xi2",enty,rlf)-p31\_grades\left(ttot,regi,"xi1",enty, rlf\right)\right) \cdot \frac{ \left(v31\_fuExtrCum(ttot,regi,enty,rlf)-v31\_fuExtrCum(ttot-1,regi,enty,rlf)\$\left(ttot.val gt 2005\right)\right) }{ \left(2 \cdot p31\_grades\left(ttot,regi,"xi3",enty, rlf\right)\right) }\right) \cdot \left( \left(1 + \left(p31\_datafosdyn(regi,enty,rlf,"alph") \cdot \frac{ 1}{\left(sqr\left(pm\_ttot\_val(ttot)-pm\_ttot\_val(ttot-1)\right)\right) } \cdot sqr\left(\frac{\left(vm\_fuExtr(ttot,regi,enty,rlf)-vm\_fuExtr(ttot-1,regi,enty,rlf)\right)}{\left(vm\_fuExtr(ttot-1,regi,enty,rlf)+ 0.001 \cdot p31\_grades(ttot,regi,"xi3",enty,rlf) + p31\_extraseed(ttot,regi,enty,rlf) + 1.e-9\right)}\right) \right)\$\left(ttot.val gt 2005\right) \right) \right) \cdot vm\_fuExtr(ttot,regi,enty,rlf) \right)\$\left(p31\_grades(ttot,regi,"xi3",enty,rlf) gt 0\right) \right) \end{multline*}\]
Cumulated fuel extraction (oil, gas and coal) is the sum of extraction in each time step multiplied by the time step length. If early retirement of oil wells is switched on, any slack capacity from those fields is also added.
q31_fuExtrCum(ttot,regi,pe2rlf(peEx(enty),rlf))$(ttot.val ge cm_startyear)..
v31_fuExtrCum(ttot,regi,enty,rlf)
=e=
v31_fuExtrCum(ttot-1,regi,enty,rlf)$(ttot.val gt 2005) + pm_ts(ttot)*(vm_fuExtr(ttot,regi,enty,rlf)
$if %cm_OILRETIRE% == "on" + v31_fuSlack(ttot,regi,enty,rlf)
);
These dynamic constraints on the decline and increase rates of production reflect physical and technical inertias of oil, gas and coal Dynamic constraint on decline rate
q31_fuExtrDec(ttot+1,regi,enty2rlf_dec(enty,rlf))$(pm_ttot_val(ttot+1) ge max(2010,cm_startyear))..
vm_fuExtr(ttot+1,regi,enty,rlf)
$if %cm_OILRETIRE% == "on" + v31_fuSlack(ttot+1,regi,enty,rlf)
=g=
p31_datafosdyn(regi,enty,rlf,"decoffset") * p31_grades(ttot,regi,"xi3",enty,rlf) * 0.5 * ( pm_ts(ttot+1) + pm_ts(ttot) )
$if not setglobal test_TS + (1-p31_datafosdyn(regi,enty,rlf,"dec"))**(pm_ttot_val(ttot+1)-pm_ttot_val(ttot)) * vm_fuExtr(ttot,regi,enty,rlf);
\[\begin{multline*} v31\_fuSlack(ttot+1,regi,enty,rlf) \leq v31\_fuSlack(ttot,regi,enty,rlf) + \left(pm\_ttot\_val(ttot+1)-pm\_ttot\_val(ttot)\right) \cdot cm\_earlyreti\_rate \cdot 0.3 \cdot p31\_max\_oil\_extraction(regi,enty,rlf) \end{multline*}\]
Dynamic constraint on increase rate
q31_fuExtrInc(ttot+1,regi,enty2rlf_inc(enty,rlf))$((p31_grades(ttot,regi,"xi3",enty,rlf) gt 0) AND (pm_ttot_val(ttot+1) ge max(2010,cm_startyear)))..
vm_fuExtr(ttot+1,regi,enty,rlf)
=l=
(1 + p31_datafosdyn(regi,enty,rlf,"inc"))**(pm_ttot_val(ttot+1)-pm_ttot_val(ttot)) * (vm_fuExtr(ttot,regi,enty,rlf) + p31_datafosdyn(regi,enty,rlf,"incoffset"))
$ifthen.cm_oil_scen %cm_oil_scen% == "highOil" +(10)$(cm_startyear eq 2015 AND pm_ttot_val(ttot+1) eq 2015 AND ((sameas(enty,"peoil") AND sameas(rlf,"7")) OR (sameas(enty,"pegas") AND sameas(rlf,"6"))))
+(10)$(cm_startyear eq 2015 AND cm_oil_scen eq 6 AND pm_ttot_val(ttot+1) eq 2015 AND (sameas(enty,"peoil") AND sameas(rlf,"1") AND sameas(regi,"REF")));
abort "MOFEX did not find an optimal solution. Stopping job...";
Lower bounds on fossil fuel extraction for all time steps To make the model “see” all grades
if(ord(iteration) eq 1,
loop(regi,
loop(peFos(enty),
loop(rlf,
loop(t,
if (p31_grades(t,regi,"xi3",enty,rlf) gt 0,
vm_fuExtr.lo(t,regi,pe2rlf(enty,rlf)) = 1e-9;
);
);
);
);
);
);
Special case for grades declining to a zero value Set lower and upper bounds to 0.0 to make the model converge. p31_grades declines linearly whereas vm_fuExtr declines exponentially This particular situation prevent the model from finding a solution [TODO] In the future a small amount should be added to p31_grades to allow for extraction from these grades
if(ord(iteration) eq 1,
loop(regi,
loop(peFos(enty),
loop(rlf,
if (p31_grades("2005",regi,"xi3",enty,rlf) gt 0.0 and p31_grades("2035",regi,"xi3",enty,rlf) eq 0.0,
vm_fuExtr.up(t,regi,pe2rlf(enty,rlf))$(rlf.val ge 6) = 0.0;
vm_fuExtr.lo(t,regi,pe2rlf(enty,rlf))$(rlf.val ge 6) = 0.0;
vm_fuExtr.up(t,regi,pe2rlf(enty,rlf))$(rlf.val lt 6) = 0.0;
vm_fuExtr.lo(t,regi,pe2rlf(enty,rlf))$(rlf.val lt 6) = 0.0;
);
);
);
);
);
if (s31_debug eq 1,
display vm_fuExtr.lo, vm_fuExtr.up;
);
v31_fuExtrCum.up(t,regi,peExGrade(enty),rlf) = p31_grades(t,regi,"xi3",enty,rlf);
Upper bound on fossil fuel costs
vm_costFuEx.up(t,regi,peExGrade(enty)) = 10.0;
Limitations p31_grades used in equation emissengregi in core/equations.gms, calculation of p31_prod_ini, p31_prod_share in grades/preloop.gms uses additional interfaces (pm_fosadjco_xi7xi8 and vm_edemini) not used
Description | Unit | A | B | C | D | |
---|---|---|---|---|---|---|
f31_costExPoly (all_regi, all_enty, xirog) |
3rd-order polynomial coefficients (Uranium) | x | x | |||
f31_ffPolyCoeffs (all_regi, all_fossilScen, polyCoeffCost) |
3rd-order polynomial coefficients (oil|gas|coal) | x | ||||
f31_ffPolyCumEx (all_regi, all_enty, char, all_fossilScen) |
Linear rent approx (e.g. Price - average extraction cost) (Oil, Gas and Coal) | x | ||||
f31_ffPolyRent (all_regi, all_enty, polyCoeffRent, all_fossilScen) |
Linear rent approx (e.g. Price - average extraction cost) (Oil, Gas and Coal) | x | ||||
p31_costExPoly (all_regi, xirog, all_enty) |
3rd-order polynomial coefficients (Uranium) | x | x | |||
p31_costfu_detail (tall, all_regi, all_enty) |
(Output) absolute fuel costs for each element of peExPol. Unit: | x | x | |||
p31_datafosdyn (all_regi, all_enty, rlf, gradePar31) |
(Input) information about exhaustibles according to the grade structure concept. Unit: | x | x | |||
p31_extraseed (tall, all_regi, all_enty, rlf) |
extra seed value that scales up the ramp-up potential | x | x | |||
p31_ffPolyCoeffs (all_regi, all_enty, polyCoeffCost) |
3rd-order polynomial coefficents (Oil, Gas and Coal) | x | ||||
p31_ffPolyRent (all_regi, all_enty, polyCoeffRent) |
Linear rent approx (e.g. Price - average extraction cost) (Oil, Gas and Coal) | x | ||||
p31_fix_costfu_ex (tall, all_regi, all_enty) |
exogenous data for vm_costFuEx | x | x | |||
p31_fix_fuelex (tall, all_regi, all_enty, rlf) |
exogenous data for vm_fuExtr | x | x | |||
p31_fosadjco_xi5xi6 (all_regi, xirog, all_enty) |
data and parameters that describe the adjustment cost function of the fossil fuel extraction | x | x | x | ||
p31_fuel_cost (tall, all_regi, all_enty) |
Pure extraction costs | x | x | |||
p31_fuel_cost_marg (tall, all_regi, all_enty) |
(Output) marginal pure extraction costs, calculated by hand from Nico’s elasticity equation. Unit: | x | x | |||
p31_fuel_cost_noadj (tall, all_regi, all_enty) |
(Output) fuel cost without adjustment costs. Unit: | x | x | |||
p31_fuelexIni (all_regi, all_enty, rlf) |
(Bounds) user-defined fossil fuel extraction values in 2005. Unit: TWa | x | ||||
p31_fuExtrCumMaxBound (all_regi, all_enty, rlf) |
value of regional uranium extraction bound | x | x | |||
p31_grades (all_regi, xirog, all_enty, rlf) |
dummy | x | x | x | ||
p31_max_oil_extraction (all_regi, all_enty, rlf) |
maximum oil extraction, calculated from the total grade size and the decline constraint. Unit: TWyr | x | x | |||
p31_MOFEX_cumfex_costMin (tall, all_regi, all_enty, rlf) |
Result of MOFEX calculation: cumulative fuelex | x | x | |||
p31_MOFEX_fuelex_costMin (tall, all_regi, all_enty, rlf) |
Result of MOFEX calculation: fuelex | x | x | |||
p31_MOFEX_Mport_costMin (tall, all_regi, all_enty) |
Result of MOFEX calculation: imports | x | x | |||
p31_MOFEX_Mport_ref (tall, all_regi, all_enty) |
Load imports values from reference GDX | x | x | |||
p31_MOFEX_peprod_ref (tall, all_regi, all_enty) |
Load PE production level values from reference GDX | x | x | |||
p31_MOFEX_Xport_costMin (tall, all_regi, all_enty) |
Result of MOFEX calculation: exports | x | x | |||
p31_MOFEX_Xport_ref (tall, all_regi, all_enty) |
Load exports values from reference GDX | x | x | |||
p31_prodShare (all_regi, all_enty, rlf) |
(Preloop) minimum amount of primary energy that can be produced given the decline rate. Unit: | x | x | |||
p31_rentconv (all_enty) |
number of year that the convergence to rentdisc2 takes | x | ||||
p31_rentdisc (all_enty) |
discount factor for the rent, used for the sensitivity analysis | x | ||||
p31_rentdisc2 (all_enty) |
discount factor for the rent achieved in 2100, used for the sensitivity analysis | x | ||||
p31_rentdisctot (ttot, all_enty) |
rent discount factor applied to the model | x | ||||
p31_sol_itr_max | parameter for maximum solves for MOFEX | x | x | |||
q31_costfu_ex2 (ttot, all_regi, all_enty) |
costs of fuels estimated by 3rd-order polynomial; Oil, Gas and Coal | x | ||||
q31_costFuExGrade (ttot, all_regi, all_enty) |
costs of fuels estimated step-wise by grades; exchaustible fuels (oil, gas and coal) | x | x | |||
q31_costFuExPol (ttot, all_regi, all_enty) |
costs of fuels estimated by 3rd-order polynomial; Uranium only | x | x | |||
q31_fuExtrCum (ttot, all_regi, all_enty) |
cumulated extraction of exhaustible resources | x | x | x | ||
q31_fuExtrDec (ttot, all_regi, all_enty, rlf) |
lower bound on decline rate of fuel extraction (vm_fuExtr) | x | x | |||
q31_fuExtrInc (ttot, all_regi, all_enty, rlf) |
upper bound on growth rate of fuel extraction (vm_fuExtr) | x | x | |||
q31_mc_dummy (all_regi, all_enty) |
marginal costs of fuels estimated by polynomial; exhaustible fuels (uranium) | x | x | |||
q31_MOFEX_costMinFuelEx | Minimization of discounted fossil fuel extraction and trade costs | x | x | |||
q31_MOFEX_tradebal (ttot, all_enty) |
New trade equation for MOFEX purposes | x | x | |||
q31_smoothoilphaseout (ttot, all_regi, all_enty, rlf) |
limits the increase of v_fuelslack, leading to a smoother phase-out of oil | x | x | |||
q31_totfuex_dummy | dummy for total global extraction; exhaustible fuels (uranium) | x | x | |||
s31_debug | debugging option to display more output | x | x | x | ||
s31_max_disp_peur | maximum amount of cumulative uranium production in Megatonnes of metal uranium ( U3O8, the stuff that is traded at 40-60US$/lb). | x | x | |||
v31_fuExtrCum (ttot, all_regi, all_enty, rlf) |
cumulated extraction of exhaustible resources | x | x | x | ||
v31_fuExtrCumMax (all_regi, all_enty, rlf) |
maximum of cumulated extraction of exhaustible resources | x | x | |||
v31_fuExtrMC (all_enty, rlf) |
MC exhaustible resources | x | x | |||
v31_fuSlack (ttot, all_regi, all_enty, rlf) |
Amount of oil that is not extracted but put aside never to be used again. Unit: TWa/a | x | x | |||
v31_MOFEX_costMinFuelEx | Minimization of discounted fossil fuel extraction and trade costs | x | x | |||
v31_squaredDiff | objective for dummy model to determine uranium bound | x |
description | |
---|---|
all_enty | all types of quantities |
all_fossilScen | all possible scenarios for fossils |
all_regi | all regions |
char | characteristics of technologies |
enty(all_enty) | all types of quantities |
enty2rlf_dec(all_enty, rlf) | mapping for applying constraint on decline rate of vm_fuExtr |
enty2rlf_inc(all_enty, rlf) | mapping for applying constraint on growth rate of vm_fuExtr (see module 31_fossil) |
gradePar31 | parameters of the equations for fossil grades |
in(all_in) | All inputs and outputs of the CES function |
iteration | iterator for main (Negishi/Nash) iterations |
modules | all the available modules |
pe2rlf(all_enty, rlf) | map exhaustible energy to grades for qm_fuel2pe |
peEx(all_enty) | exhaustible primary energy carriers |
peExGrade(all_enty) | exhaustible pe with step as entyPe ex-peExPol - s.b. |
peExPol(all_enty) | primary energy fuels with polynomial |
peFos(all_enty) | primary energy fossil fuels |
polyCoeffCost | Coefficients of 3rd-order polynomial used to represent extraction cost functions (Oil, Gas and Coal) |
polyCoeffRent | Coefficients of 1st-order polynomial used to represent extraction cost functions (Oil, Gas and Coal) |
regi(all_regi) | all regions used in the solution process |
rlf | cost levels of fossil fuels |
sol_itr | iterator for inner solution process within one Negishi iteration |
t(ttot) | modeling time, usually starting in 2005, but later for fixed delay runs |
t0(tall) | start of modelling time, not optimization |
tall | time index |
trade(all_enty) | All traded commodities |
ttot(tall) | time index with spin up |
xirog | parameters decribing exhaustible extraction coss including long-run marginal costs and short term adjustment costs |
Nico Bauer, Jerome Hilaire, Robert Pietzcker, Lavinia Baumstark