***** Comments for users of this version of the DICE model: ** D_111606_alt_base.gms ** New base DICE-2006 as of November 16, 2006 ***** This is the DICE model recalibrated to data for November 2006. ** This is the run for the optimal case with baseline discounting. ** To obtain the Stern runs, the social rate of time preference must be changed to .001 ** To obtain a baseline, the MIU.fx must be set to .01 by removing the * from the ** front of the statement (about two-thirds of the way down the program). ***** Major changes include: ** 1. Respecifying the utility function as constant elasticity ** 2. Resetting the initial condisions for output, capital, population ** 3. Setting the initial conditions for the carbon cycle and temperatures ** 4. The source of the economic and emissions data are generally Corderi ** 5. Recalibrated from DICE-98 as of November 24, 1998 ***** The program SETS T Time periods /1*100/ TFIRST(T) First period TLAST(T) Last period tearly(T) First 20 periods TLATE(T) Second 20 periods; SCALARS ELASMU Elasticity of marginal utility of consumption /1.00001 / SRTP Initial rate of social time preference per year /.03 / DR Decline rate of social time preference per year /.0025719/ GL0 Growth rate of population per decade /.080 / DLAB Decline rate of pop growth per decade /.300 / A0 Initial level of total factor productivity /.0276 / GA0 Initial growth rate for technology per decade /.150 / DELA Decline rate of technol. change per decade /.005 / SIG0 CO2-equivalent emissions-GNP ratio /.1416 / GSIGMA Growth of sigma per decade /-.150 / desig Decline rate of decarbonization /.0065 / desig2 Quadratic term in decarbonization /-.00035 / DK Depreciation rate on capital per year /.100 / GAMA Capital elasticity in production function /.300 / MAT1990 Concentration in atmosphere 2000 (GtC) /787 / MU1990 Concentration in upper strata 2000 (GtC) /900 / ML1990 Concentration in lower strata 2000 (GtC) /19230 / b11 Carbon cycle transition matrix /0.66616 / b12 Carbon cycle transition matrix /0.33384 / b21 Carbon cycle transition matrix /0.27607 / b22 Carbon cycle transition matrix /0.60897 / b23 Carbon cycle transition matrix /0.11496 / b32 Carbon cycle transition matrix /0.00422 / b33 Carbon cycle transition matrix /0.99578 / TL0 2000 lower strat. temp change (C) from 1900 /.300 / T0 2000 atmospheric temp change (C)from 1900 /.710 / Q0 2005 world gross output trill 2006 US dollars /47.1 / LL0 2005 world population millions /6409 / K0 2005 value capital trill 2006 US dollars /120 / C1 Climate-equation coefficient for upper level /.226 / LAM Climate feedback factor /1.41 / C3 Transfer coeffic. upper to lower stratum /.440 / C4 Transfer coeffic for lower level /.020 / A1 Damage coeff linear term /-.0045 / A2 Damage coeff quadratic term /.0035 / COST10 Intercept control cost function /.030 / COST2 Exponent of control cost function /2.15 / ET0 C Emiss from land (GtC per decade) /0.00 / Dmiufunc Decline in abatement-cost function (per decade) /-.08 / Decmiu Change in decline of cost function /.500 / Coefopt1 Scaling coefficient in the objective function /81.1 / Coefopt2 Scaling coefficient in the objective function /23292 / Tlimit Limit on temperature increase /10 / ; PARAMETERS L(T) Level of population and labor AL(T) Level of total factor productivity SIGMA(T) CO2-equivalent-emissions output ratio R(T) Instantaeous rate of social time preference RR(T) Average utility social discount rate GA(T) Growth rate of productivity from 0 to T FORCOTH(T) Exogenous forcing for other greenhouse gases GL(T) Growth rate of labor 0 to T gcost1 Growth of cost factor GSIG(T) Cumulative improvement of energy efficiency ETREE(T) Emissions from deforestation cost1(t) Cost function for abatement ; TFIRST(T) = YES$(ORD(T) EQ 1); TLAST(T) = YES$(ORD(T) EQ CARD(T)); TEARLY(T) = YES$(ORD(T) LE 20); TLATE(T) = YES$(ORD(T) GE 21); DISPLAY TFIRST, TLAST; GL(T) = (GL0/DLAB)*(1-exp(-DLAB*(ord(t)-1))); L(T)=LL0*exp(GL(t)); ga(T)=ga0*EXP(-dela*10*(ORD(T)-1)); al("1") = a0; LOOP(T, al(T+1)=al(T)/((1-ga(T))); ); gsig(T)=gsigma*EXP ( -desig*10*(ORD(T)-1) - desig2*10* ((ord(t)-1)**2) ) ; sigma("1")=sig0; LOOP(T, sigma(T+1)=(sigma(T)/((1-gsig(T+1)))); ); gcost1(T)=dmiufunc*EXP(-decmiu*10*(ORD(T)-1)); cost1("1")=cost10; LOOP(T, cost1(T+1)=cost1(T)/((1+gcost1(T+1))); ); ETREE(T) = ET0*(1-0.1)**(ord(T)-1); R(T)=srtp*EXP(-DR*10*(ORD(T)-1)); RR("1")=1; LOOP(T, RR(T+1)=RR(T)/((1+R(T))**10); ); FORCOTH(T)=(-0.1965+.149*(ORD(T)-1)-.0019*(ORD(T)-1)**2)$ (ORD(T) LT 12) + 1.15$(ORD(T) GE 12); VARIABLES MIU(T) Emission control rate GHGs FORC(T) Radiative forcing in watts per m2 TE(T) Temperature of atmosphere in C TL(T) Temperatureof lower oceans degrees C MAT(T) Carbon concentration in atmosphere (b.t.c.) MU(T) Carbon concentration in shallow oceans (b.t.c.) ML(T) Carbon concentration in lower oceans (b.t.c.) E(T) CO2-equivalent emissions billions t C(T) Consumption trillions US dollars K(T) Capital stock trillions US dollars CPC(T) Per capita consumption thousands US dol PCY(t) Per capita income thousands US dol I(T) Investment trillions US dollars S(T) Savings rate as fraction of gross world product RI(T) Real interest rate per annum Y(T) Output or gross world product CCA(T) Cumulative industrial carbon emissions (GTC) FEL(t) Instantaneous utility function UTILITY; POSITIVE VARIABLES MIU, TE, E, Mat, mu, ml, Y, C, K, I, CCA ; EQUATIONS *new CCTFIRST(T) First period cumulative carbon CCACCA(T) Cumulative carbon emissions UTIL Objective function YY(T) Output equation CC(T) Consumption equation KK(T) Capital balance equation KK0(T) Initial condition for capital KC(T) Terminal condition for capital CPCE(t) Per capita consumption definition PCYE(T) Per capita income definition EE(T) Emissions process SEQ(T) Savings rate equation RIEQ(T) Interest rate equation FORCE(T) Radiative forcing equation MMAT0(T) Starting atmospheric concentration MMAT(T) Atmospheric concentration equation MMU0(T) Initial shallow ocean concentration MMU(T) Shallow ocean concentration MML0(T) Initial lower ocean concentration MML(T) Lower ocean concentration TTE(T) Temperature-climate equation for atmosphere TTE0(T) Initial condition for atmospheric temperature TLE(T) Temperature-climate equation for lower oceans TLE0(T) Initial condition for lower ocean tlim(t) Limit temperature FELEQ(t) Instantaneous utility function equation ; ** Equations of the model *new CCTFIRST(TFIRST).. CCA(TFIRST)=E=0; CCACCA(T+1).. CCA(T+1)=E=CCA(T)+ E(T); tlim(t).. te(t) =l= Tlimit; KK(T).. K(T+1) =L= (1-DK)**10 *K(T)+10*I(T); KK0(TFIRST).. K(TFIRST) =E= K0; KC(TLAST).. .02*K(TLAST) =L= I(TLAST); EE(T).. E(T)=G=10*SIGMA(T)*(1-MIU(T))*AL(T)*L(T)**(1-GAMA)*K(T)**GAMA + ETREE(T); FORCE(T).. FORC(T) =E= 4.1*((log(Mat(T)/596.4)/log(2)))+FORCOTH(T); MMAT0(TFIRST).. MAT(TFIRST) =E= MAT1990; MMU0(TFIRST).. MU(TFIRST) =E= MU1990; MML0(TFIRST).. ML(TFIRST) =E= ML1990; MMAT(T+1).. MAT(T+1) =E= MAT(T)*b11+E(T)+MU(T)*b21; MML(T+1).. ML(T+1) =E= ML(T)*b33+b23*MU(T); MMU(T+1).. MU(T+1) =E= MAT(T)*b12+MU(T)*b22+ML(T)*b32; TTE0(TFIRST).. TE(TFIRST) =E= T0; TTE(T+1).. TE(T+1) =E= TE(t)+C1*(FORC(t)-LAM*TE(t)-C3*(TE(t)-TL(t))); TLE0(TFIRST).. TL(TFIRST) =E= TL0; TLE(T+1).. TL(T+1) =E= TL(T)+C4*(TE(T)-TL(T)); YY(T).. Y(T) =E= AL(T)*L(T)**(1-GAMA)*K(T)**GAMA*(1-cost1(t)*(MIU(T)**cost2)) /(1+a1*TE(T)+ a2*TE(T)**2); SEQ(T).. S(T) =e= I(T)/(.001+Y(T)); RIEQ(T).. RI(T) =E= GAMA*Y(T)/K(T)- (1-(1-DK)**10)/10 ; CC(T).. C(T) =E= Y(T)-I(T); CPCE(T).. CPC(T) =e= C(T)*1000/L(T); PCYE(T).. PCY(T) =e= Y(T)*1000/L(T); *FELEQ(T).. FEL(T) =e= LOG(C(T)/L(T)); FELEQ(T).. FEL(T) =e= ((C(T)/L(T))**(1-ELASMU)-1)/(1-ELASMU); UTIL.. UTILITY =E= SUM(T, 10 *RR(T)*L(T)*(FEL(T))/coefopt1)+ coefopt2 ; ** Upper and Lower Bounds: General conditions imposed for stability MIU.up(T) = 1.0; MIU.lo(T) = 0.000001; K.lo(T) = 1; MAT.lo(T) = 10; MU.lo(t) = 100; ML.lo(t) = 1000; C.lo(T) = 2; ** Fix savings assumption if operational *s.fx(t)=.22; ** Emissions control policy. Current setting is for optimal policy. ** Reinstate equation "Miu.fx(t) = .0" for no-control run. ** Constraint for emissions; = .01 for base; removed for optimal MIU.fx(T)=.01; ** Upper limit global mean temperature. Set at 12 for convergence except in limit cases TE.up(t) = 12; ** Solution options option iterlim = 99900; option reslim = 99999; option solprint = on; option limrow = 0; option limcol = 0; model CO2 /all/; solve CO2 maximizing UTILITY using nlp ; solve CO2 maximizing UTILITY using nlp ; solve CO2 maximizing UTILITY using nlp ; ** Display of results display y.l, c.l, s.l, k.l, miu.l, e.l, te.l, forc.l, ri.l; display cc.m, ee.m, kk.m, tte.m, cpc.l, tl.l, pcy.l, i.l; display sigma, rr, l, al, forcoth, etree; display mat.l,mu.l,ml.l; ** Note to users ** From here on, these are outputs to get the results. Parameters Year(t) Date Indem(t) Industrial emissions (b.t.c. per year) Wem(t) Total emissions (b.t.c. per year); Year(t) = 2005 +10*(ord(t)-1); Indem(t) = e.l(t)-etree(t); Wem(t) = e.l(t); Parameters Tax(t) Carbon tax ($ per ton) damtax(t) Concentration tax ($ per ton) dam(t) Damages cost(t) Abatement costs; tax(t) = -1*ee.m(t)*1000/(kk.m(t)); damtax(t) = -1*mmat.m(t)*1000/kk.m(t); dam(t) = y.l(t)*(1-1/(1+a1*te.l(t)+ a2*te.l(t)**2)); cost(t) = y.l(t)*(cost1(t)*(miu.l(t)**cost2)); ** Note to USERS. These statements must be modified for your local machine. ** Please see the GAMS manual for instructions on modification. File d98oute; D98oute.pc=5; D98oute.pw=250; Put d98oute; Put / "base (no control) run"; Put / "year"; Loop (tearly, put year(tearly)::0); Put / "output"; Loop (tearly, put y.l(tearly)::3); Put / "pccon"; Loop (tearly, put cpc.l(tearly)::3); Put / "savrate"; Loop (tearly, put s.l(tearly)::4); Put / "indem"; Loop (tearly, put indem(tearly)::4); Put / "sigma"; Loop (tearly, put sigma(tearly)::4); Put / "temp"; Loop (tearly, put te.l(tearly)::3); Put / "conc"; Loop (tearly, put mat.l(tearly)::3); Put / "ctax"; Loop (tearly, put tax(tearly)::2); Put / "intrate"; Loop (tearly, put ri.l(tearly)::3); Put / "discrate"; Loop (tearly, put rr(tearly)::5); Put / "prod"; Loop (tearly, put al(tearly)::5); Put / "exogforc"; Loop (tearly, put forcoth(tearly)::3); Put / "pop"; Loop (tearly, put l(tearly)::3); Put / "etree"; Loop (tearly, put etree(tearly)::4); Put / "margy"; Loop (tearly, put yy.m(tearly)::3); Put / "margc"; Loop (tearly, put cc.m(tearly)::3); Put / "miu"; Loop (tearly, put miu.l(tearly)::3); Put / "total emissions"; Loop (tearly, put wem(tearly)::3); Put / "interest rate"; Loop (tearly, put ri.l(tearly)::4); Put / "damages"; Loop (tearly, put dam(tearly)::5); Put / "abatement cost"; Loop (tearly, put cost(tearly)::5); Put /"objective function"; Put utility.l::3; File d98outL; D98outL.pc=5; D98outL.pw=250; Put d98outL; Put / "base (no control) run"; Put / "year"; Loop (tlate, put year(tlate)::0); Put / "output"; Loop (tlate, put y.l(tlate)::3); Put / "pccon"; Loop (tlate, put cpc.l(tlate)::3); Put / "savrate"; Loop (tlate, put s.l(tlate)::4); Put / "indem"; Loop (tlate, put indem(tlate)::6); Put / "sigma"; Loop (tlate, put sigma(tlate)::6); Put / "temp"; Loop (tlate, put te.l(tlate)::3); Put / "conc"; Loop (tlate, put mat.l(tlate)::6); Put / "ctax"; Loop (tlate, put tax(tlate)::6); Put / "intrate"; Loop (tlate, put ri.l(tlate)::3); Put / "discrate"; Loop (tlate, put rr(tlate)::5); Put / "prod"; Loop (tlate, put al(tlate)::6); Put / "exogforc"; Loop (tlate, put forcoth(tlate)::3); Put / "pop"; Loop (tlate, put l(tlate)::3); Put / "etree"; Loop (tlate, put etree(tlate)::4); Put / "margy"; Loop (tlate, put yy.m(tlate)::3); Put / "margc"; Loop (tlate, put cc.m(tlate)::3); Put / "miu"; Loop (tlate, put miu.l(tlate)::3); Put / "total emissions"; Loop (tlate, put wem(tlate)::3); Put / "interest rate"; Loop (tlate, put ri.l(tlate)::4); Put / "damages"; Loop (tlate, put dam(tlate)::5); Put / "abatement cost"; Loop (tlate, put cost(tlate)::5); display gsig, sigma; display ga, al, cost1, gcost1, tax;