**RICE model as of 02-08-99 $OFFSYMXREF OFFSYMLIST OPTION NLP=MINOS5; OPTION SOLPRINT=on; OPTION DECIMALS=3; OPTION ITERLIM = 99999; OPTION LIMROW = 0; OPTION LIMCOL = 0; OPTION RESLIM = 99999; SETS T Time periods /1*20/ TFIRST(T) First period TLAST(T) Last period TEARLY(T) First half of period TLATE(T) Second half of period N Regions /JAPAN, USA, EUROPE, OHI, HIO, MI, RUSSIA, LMI, EE, LI, CHINA, INDIA, AFRICA/; ALIAS (T,J); ALIAS (N,M); TFIRST(T) = YES$(ORD(T)=1); TLAST(T) = YES$(ORD(T)=CARD(T)); TEARLY(T) = YES$(ORD(T) LE 15); TLATE(T) = YES$(ORD(T) GE 16); SCALARS DR Decline rate of social time preference per year /.0025719/ DK Depreciation rate on capital per year /.10/ GAMA Capital elasticity in production function /.30/ MAT1990 Concentration in atmosphere 1990 (b.t.c.) /735/ MU1990 Concentration in upper strata 1990 (b.t.c) /781/ ML1990 Concentration in lower strata 1990 (b.t.c) /19230/ b11 Carbon cycle transition matrix /0.66616/ b12 /0.33384/ b21 /0.27607/ b22 /0.60897/ b23 /0.11496/ b32 /0.00422/ b33 /0.99578/ TL0 1990 lower stratum temp change (C) from 1800 /.06/ T0 1990 atmospheric temp change (C) from 1800 /.43/ 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 /.02/ TCATAS Temperature of catastrophic impact /8/ PBACK Price of backstop technology in dollars per ton C /300/ EXPcarb Exponent on carbon supply curve /4/ CARBMAX Measure of coal supplies (BMetTC) /6000/ autil0 Intercept of utility function /175.530/ autil1 Coefficient of utility function /319.77/ phimat Transversality condition on MAT /-2.5/ phite Transversality condition on te /-600/ phimu Transversality condition on MU /-1/ phitl Transversality condition on tl /-300/ ; $include macro1 PARAMETERS L(T,N) Population (prod function units) LNAT(T,N) Population (millions) A(T,N) TFP ALPHA(T,N) Elast of GDP wrt carbon ETREE(T,N) Carbon emissions from land use (b.t.c. per year) dum(t) Dummy equal to 1 in last period ANAT(T,N) Productivity in natural units; dum(t) = 1$(ord(t) eq card(t)); L(T,N)=INI_DATA("L0",N)*EXP( LOG(TREND_DATA("ASYL",N))* (1-EXP(LOG(1-LOG(1+TREND_DATA("GL", N))/LOG(TREND_DATA("ASYL", N)))* (ORD(T)-1)))); L("4", "JAPAN") = (121.60/125.1)*INI_DATA("L0", "JAPAN"); L(T,"JAPAN") = L("4","JAPAN")*EXP( LOG(TREND_DATA("ASYL","JAPAN"))* (1-EXP(LOG(1-LOG(1+TREND_DATA("GL", "JAPAN"))/LOG(TREND_DATA("ASYL", "JAPAN")))* (ORD(T)-4)))); L("1", "JAPAN")= INI_DATA("L0", "JAPAN"); L("2", "JAPAN") = (127.27/125.1)*INI_DATA("L0", "JAPAN"); L("3", "JAPAN")= (125.95/125.1)*INI_DATA("L0", "JAPAN"); L("4", "EUROPE") = (381.10/383.4)*INI_DATA("L0","EUROPE"); L(T,"EUROPE") = L("4","EUROPE")*EXP( LOG(TREND_DATA("ASYL","EUROPE"))* (1-EXP(LOG(1-LOG(1+TREND_DATA("GL", "EUROPE"))/LOG(TREND_DATA("ASYL", "EUROPE")))* (ORD(T)-4)))); L("1", "EUROPE")= INI_DATA("L0","EUROPE"); L("2", "EUROPE") = (388.50/383.4)*INI_DATA("L0","EUROPE"); L("3", "EUROPE")= (386.10/383.4)*INI_DATA("L0","EUROPE"); LNAT(T,N)=INI_DATA("L0NAT",N)*EXP( LOG(TREND_DATA("ASYL",N))* (1-EXP(LOG(1-LOG(1+TREND_DATA("GL", N))/LOG(TREND_DATA("ASYL", N)))* (ORD(T)-1)))); LNAT("4", "JAPAN") = 121.60; LNAT(T,"JAPAN") = LNAT("4","JAPAN")*EXP( LOG(TREND_DATA("ASYL","JAPAN"))* (1-EXP(LOG(1-LOG(1+TREND_DATA("GL", "JAPAN"))/LOG(TREND_DATA("ASYL", "JAPAN")))* (ORD(T)-4)))); LNAT("1", "JAPAN")= INI_DATA("L0NAT", "JAPAN"); LNAT("2", "JAPAN") = 127.27; LNAT("3", "JAPAN")= 125.95; LNAT("4", "EUROPE") = 381.10; LNAT(T,"EUROPE") = LNAT("4","EUROPE")*EXP( LOG(TREND_DATA("ASYL","EUROPE"))* (1-EXP(LOG(1-LOG(1+TREND_DATA("GL", "EUROPE"))/LOG(TREND_DATA("ASYL", "EUROPE")))* (ORD(T)-4)))); LNAT("1", "EUROPE")= INI_DATA("L0NAT","EUROPE"); LNAT("2", "EUROPE") = 388.50; LNAT("3", "EUROPE")= 386.10; A(T,N)=TREND_DATA("A0",N)*EXP( LOG(TREND_DATA("ASYA",N))* (1-EXP(LOG(1-LOG(1+TREND_DATA("GA", N))/LOG(TREND_DATA("ASYA", N)))* (ORD(T)-1)))); ALPHA(T,N)=TREND_DATA("ALPHA0",N)* exp((TREND_DATA("GRalph",N)/TREND_DATA("DELALPH",N))* (1-exp(-TREND_DATA("DELALPH",N)*(ord(t)-1)))); ANAT(T,N)=A(T,N)*(INI_DATA("L0",N)/INI_DATA("L0NAT",N))** (1-GAMA-ALPHA(T,N)); ETREE(T,N)=INI_DATA("E_L0",N)*(0.9**(ORD(T)-1)); PARAMETERS R(T,N) Social rate of time preference RR(T,N) Discount rate FORCOTH(T) Exogenous forcing of other GHG's FFPRICE(T) Starting value for fossil fuel price ($ per ton carbon) YEAR(T) Year of observation WPOP(T) World population; YEAR(T)=1994+10*(ORD(T)-1); FORCOTH(T)=(-0.15-0.02285*(ORD(T)-1)+0.0077*(ORD(T)-1)**2)$ (ORD(T) LT 12) + 0.53$(ORD(T) GE 12); FFPRICE(T)=113+700*((58*(ORD(T)-1)+7.5*(ORD(T)-1)**2)/CARBMAX)**EXPCARB; R(T,N)=0.03*EXP(-DR*10*(ORD(T)-1)); RR("1",N)=1; LOOP(T, RR(T+1,N)=RR(T,N)/((1+R(T,N))**10); ); WPOP(T)=SUM(N, L(T,N)); $INCLUDE STARTVAL.GMS ***RICE RUNS VARIABLES E(T) Global emissions 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.) FORC(T) Radiative forcing TE(T) Atmospheric temperature (deg C from historical) TL(T) Ocean temperature (deg C from historical) CMCARB(T) Cumulative extraction of fossil fuels (b.t.c.) Trans(t) Transversality term UTILITY Objective Function; positive variables e, mat, mu, ml, forc, te, tl, cmcarb, k, c, y, back; EQUATIONS KK0(T,N) Initial capital KK(T,N) Capital accumulation INERT(T,N) Inertial carbon consumption equation BCK(T,N) Constraint on growth of backstop energy use INITBCK(T,N) First-period backstop energy suppy KC(T,N) Terminal condition for K YY1(T,N) GDP with price of carbon determined endogenously YY6(T,N) GDP with damages CMCARBE1(T) Cumulative extraction of fossil fuels CMCARB01(T) Initial value of CMCARB EE(T) Global emissions 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 FORCE(T) Radiative forcing TE0E(T) Initial temperature TEE(T) Temperature equation TL0E(T) Initial lower ocean temperature TLE(T) Lower ocean temperature equation Transewd(t) Transversality equation transend(t) Transversality equation no damages UTIL Objective Function; UTIL.. UTILITY =E= autil0+autil1* SUM((T,N), 10*rr(t,n)*WGHT(N)*LNAT(T,N)* LOG(C(T,N)/LNAT(T,N))) + sum(t,trans(t)*dum(t)); KK0(TFIRST, N).. K(TFIRST, N) =E= INI_DATA("K0", N); KK(T+1, N).. K(T+1, N) =E= ((1-DK)**10)*K(T, N)+ 10*(Y(T,N)-C(T,N)); KC(TLAST, N).. K(TLAST, N) =L= (Y(TLAST, N) -C(TLAST, N))/0.03; INERT(T+1, N).. CARB(T+1, N)=G=0.75*CARB(T, N); INITBCK(TFIRST, N).. BACK(TFIRST, N) =L= 0; BCK(T+1, N).. BACK(T+1, N)=L= .005+ 1.5*BACK(T, N); CMCARB01(TFIRST).. CMCARB(TFIRST)=E=0; CMCARBE1(T+1).. CMCARB(T+1)=E=CMCARB(T)+10*SUM(N, CARB(T,N)); YY1(T,N).. Y(T, N) =E= A(T, N)*(K(T, N)**GAMA)* (L(T, N)**(1-GAMA-ALPHA(T, N)))* ((CARB(T, N) + BACK(T, N))**ALPHA(T, N)) -(113+INI_DATA("MARKUP",N)+ 700*((CMCARB(T)/CARBMAX)**EXPCARB))*CARB(T, N)/1000- ( (PBACK+(ini_data("markup",n))) *BACK(T, N)/1000); YY6(T,N).. Y(T,N) =E= (A(T, N)*(K(T, N)**GAMA)* (L(T, N)**(1-GAMA-ALPHA(T, N)))* ((CARB(T, N) + BACK(T, N))**ALPHA(T, N)) -(113+INI_DATA("MARKUP",N)+ 700*((CMCARB(T)/CARBMAX)**EXPCARB))*CARB(T, N)/1000- ( (PBACK+(ini_data("markup",n))) *BACK(T,N)/1000))/ (1+INI_DATA("DAM1",N)*TE(T)+ INI_DATA("DAM2",N)*TE(T)**2); EE(T).. E(T)=E=SUM(N, CARB(T,N)+ETREE(T,N)); 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+10*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; FORCE(T).. FORC(T) =E= 4.1*LOG(MAT(T)/596.4)/LOG(2)+FORCOTH(T); TE0E(TFIRST).. TE(TFIRST) =E= T0; TL0E(TFIRST).. TL(TFIRST) =E= TL0; TEE(T+1).. TE(T+1) =E= TE(t)+C1*(FORC(t)-LAM*TE(t)-C3*(TE(t)-TL(t))); TLE(T+1).. TL(T+1)=E=TL(T)+C4*(TE(T)-TL(T)); Transewd(tlast).. trans(tlast) =e= rr(tlast,'usa')*(phimat*mat(tlast)+phite*te(tlast) +phitl*tl(tlast)+phimu*mu(tlast)); transend(t).. trans(t) =e= 0; CMCARB.LO(T)=0; CMCARB.L(TFIRST)=0; CMCARB.L(T+1)=CMCARB.L(T)+10*SUM(N, CARB.L(T,N)); EE.L(T)=SUM(N, CARB.L(T,N)+ETREE(T,N)); MAT.L(T)=MAT1990; ML.L(T)=ML1990; MU.L(T)=MU1990; FORC.L(T)=4.1*LOG(MAT.L(T)/596.4)/LOG(2)+FORCOTH(T); TE.L(T)=T0; TL.L(T)=TL0; EE.LO(T)=5; MAT.LO(T)=MAT1990; ML.LO(T)=ML1990; MU.LO(T)=MU1990; FORC.LO(T)=4.1*LOG(MAT.LO(T)/596.4)/LOG(2)+FORCOTH(T); TE.LO(T)=T0; TL.LO(T)=TL0; *** Base case MODEL BASEnd /YY1, KK0, KK, KC, INERT, INITBCK, BCK, transend, CMCARB01, CMCARBE1, EE, MMAT0, MMAT, MMU0, MMU, MML0, MML, FORCE, TE0E, TEE, TL0E, TLE, UTIL/; BASEND.OPTFILE=1; SOLVE BASEND MAXIMIZING UTILITY USING NLP; SOLVE BASEND MAXIMIZING UTILITY USING NLP; SOLVE BASEND MAXIMIZING UTILITY USING NLP; SOLVE BASEND MAXIMIZING UTILITY USING NLP; SOLVE BASEND MAXIMIZING UTILITY USING NLP; *** Optimal run MODEL OPT /YY6, KK0, KK, KC, INERT, INITBCK, BCK, transewd, CMCARB01, CMCARBE1, EE, MMAT0, MMAT, MMU0, MMU, MML0, MML, FORCE, TE0E, TEE, TL0E, TLE, UTIL/; OPT.OPTFILE=1; SOLVE OPT MAXIMIZING UTILITY USING NLP; SOLVE OPT MAXIMIZING UTILITY USING NLP; SOLVE OPT MAXIMIZING UTILITY USING NLP; SOLVE OPT MAXIMIZING UTILITY USING NLP; SOLVE OPT MAXIMIZING UTILITY USING NLP;