R1('FORYR',T)$(ORDSCEN(T) EQ %1) = %FORECAST_YEAR%; R1('CPIYR',T)$(ORDSCEN(T) EQ %1) = %CPI_YEAR%; R1('OUT_N',T)$(ORDSCEN(T) EQ %1) = SUM(I,DS.L(I)); R1('OUT_R',T)$(ORDSCEN(T) EQ %1) = SUM(I,DS.L(I)) / SUM(H, CPI.L(H)*HH.L(H)/SUM(H1, HH.L(H1))); R1('GSP',T)$(ORDSCEN(T) EQ %1) = SPI.L + Y.L('FTSOC') - SUM(H,YD2.L(H)) + SUM(Z,Y2.L(Z)) + 4.271565 * SUM(Z, FD.L('CAPIT',Z) ); R1('GSP_R',T)$(ORDSCEN(T) EQ %1) = R1('GSP',T)$(ORDSCEN(T) EQ %1) / SUM(H, CPI.L(H)*HH.L(H)/SUM(H1, HH.L(H1))); R1('SPI',T)$(ORDSCEN(T) EQ %1) = SPI.L; R1('SPI_R',T)$(ORDSCEN(T) EQ %1) = R1('SPI',T)$(ORDSCEN(T) EQ %1) / SUM(H, CPI.L(H)*HH.L(H)/SUM(H1, HH.L(H1))); R1('SPICAP',T)$(ORDSCEN(T) EQ %1) = SPI.L/SUM(H,HH.L(H))/ 37.288*13.9 ; R1('LD',T)$(ORDSCEN(T) EQ %1) = SUM(Z, FD.L('LABOR',Z) ); R1('CRBCP',T)$(ORDSCEN(T) EQ %1) = CARBCAP.L; R1('CRBRT',T)$(ORDSCEN(T) EQ %1) = CARBRATE * 1000; R1('CRBRV',T)$(ORDSCEN(T) EQ %1) = CARBRATE * PCTINST('CAPIT') * CARBCAP.L; R1('CRBTX',T)$(ORDSCEN(T) EQ %1) = SUM(TI, SUM(J,(AD(J,TI) * (REG1(J,TI)*VREG1.L(J,TI)*DS.L(TI) )) * CINTENS(J,TI)) + (M.L(TI)-CX.L(TI)) * PW0(TI) * TCINTENS(TI) * - DS.L(TI) * SUM(K$(SUM(J,REG11(J,TI,K))gt 0),TSE.L(TI,K)*REG19(TI,K)) ) * CARBRATE; R1('IMPRT',T)$(ORDSCEN(T) EQ %1) = SUM(I, M.L(I) ); R1('EXPRT',T)$(ORDSCEN(T) EQ %1) = SUM(I, CX.L(I) ); R1('WRKRS',T)$(ORDSCEN(T) EQ %1) = SUM(H, HW.L(H)) ; R1('GN',T)$(ORDSCEN(T) EQ %1) = SUM(I, N.L(I) ); * * Compare R1('GN',T) with BASE value for BASE and B_A_U. Otherwise, for policy scenarios, compare with B_A_U. PARAMETER R1GN; If { %1 < 2, R1GN = SUM(T,R1('GN',T)$(ORDSCEN(T) EQ 1)); Else R1GN = SUM(T,R1('GN',T)$(ORDSCEN(T) EQ 2)); }; R1('PINV',T)$(ORDSCEN(T) EQ %1) = (R1('GN',T) - R1GN ) * 1000; * R1('POP',T)$(ORDSCEN(T) EQ %1) = SUM(H, HH.L(H) ); R1('W',T)$(ORDSCEN(T) EQ %1) = RA.L('LABOR') / RA0('LABOR') * 100; R1('R',T)$(ORDSCEN(T) EQ %1) = SUM(I, R.L('CAPIT',I) * KS.L(I) ) / SUM(I, R0('CAPIT',I) * KS.L(I) ) * 100; R1('CPI',T)$(ORDSCEN(T) EQ %1) = SUM(H, CPI.L(H)*HH.L(H)/SUM(H1, HH.L(H1)));; R1('KD',T)$(ORDSCEN(T) EQ %1) = SUM(Z, FD.L('CAPIT',Z) ); R1('BAC',T)$(ORDSCEN(T) EQ %1) = Y.L('CTBAC'); R1('PIT',T)$(ORDSCEN(T) EQ %1) = Y.L('CTPIT'); R1('SAU',T)$(ORDSCEN(T) EQ %1) = Y.L('CTSAU'); R1('GFREV',T)$(ORDSCEN(T) EQ %1) = Y.L('CGENF') + SUM(G, IGT.L('CGENF',G) ); R1('SFREV',T)$(ORDSCEN(T) EQ %1) = SUM(GSF, Y.L(GSF) - IGT.L('CGENF',GSF) ); R1('SUBSS',T)$(ORDSCEN(T) EQ %1) = SUM(G,SUM(H,LUMP(H,G))); R1('STATIC',T)$(ORDSCEN(T) EQ %1) = 0; R1('DGF',T)$(ORDSCEN(T) EQ %1) = R1('GFREV',T)$(ORDSCEN(T) EQ %1) - R1('GFREV','B_A_U'); R1('DSF',T)$(ORDSCEN(T) EQ %1) = R1('SFREV',T)$(ORDSCEN(T) EQ %1) - R1('SFREV','B_A_U'); R1('DDRE',T)$(ORDSCEN(T) EQ %1) = R1('DGF',T)$(ORDSCEN(T) EQ %1) + R1('DSF',T)$(ORDSCEN(T) EQ %1) - R1('STATIC',T)$(ORDSCEN(T) EQ %1); R1('PDRE',T)$(ORDSCEN(T) EQ %1 AND R1('STATIC',T)) = R1('DDRE',T)$(ORDSCEN(T) EQ %1) / R1('STATIC',T)$(ORDSCEN(T) EQ %1) * 100; R1('GFSAV',T)$(ORDSCEN(T) EQ %1) = S.L('CGENF'); R1('MIC',T)$(ORDSCEN(T) EQ %1) = SUM(I, ITC.L(I) ); R1('PROP98',T)$(ORDSCEN(T) EQ %1) = IGT.L('LSK14','CGENF'); R3('IGT',G,T)$(ORDSCEN(T) EQ %1) = IGT.L(G,'CGENF'); * R3('GOVS',G,T)$(ORDSCEN(T) EQ %1) = S.L(G); R3('Y',H,T)$(ORDSCEN(T) EQ %1) = (Y.L(H)/ HH.L(H))/CPI.L(H); * R3('Y',G,T)$(ORDSCEN(T) EQ %1) = Y.L(G); * if { %1 = 1, * Make sure that BASE prints out something other than zero, so that all lines show up. R1(R1H,'BASE')$(R1(R1H,'BASE') EQ 0) = -9999; }; * R4('INTERMED',I,T)$(ORDSCEN(T) EQ %1) = SUM(J,REG1(J,I))/CARD(I) - 1; R4('INTRMD1',I,T)$(ORDSCEN(T) EQ %1) = V.L(I) - V0(I); R4('DS',I,T)$(ORDSCEN(T) EQ %1) = DS.L(I)/ SUM(H, CPI.L(H)*HH.L(H)/SUM(H1, HH.L(H1))); R4('FDL',I,T)$(ORDSCEN(T) EQ %1) = FD.L('LABOR',I); R4('P',I,T)$(ORDSCEN(T) EQ %1) = P.L(I); R4('PD',I,T)$(ORDSCEN(T) EQ %1) = PD.L(I); R4('TAX',I,T)$(ORDSCEN(T) EQ %1) = SUM(GS,TAUQ(GS,I)); R4('INDUSTD',I,T)$(ORDSCEN(T) EQ %1) = CN.L(I) + V.L(I); R4('HOUSED',I,T)$(ORDSCEN(T) EQ %1) = CH.L(I); R4('GOVTD',I,T)$(ORDSCEN(T) EQ %1) = SUM(G,CG.L(I,G)); R4('FDK',I,T)$(ORDSCEN(T) EQ %1) = FD.L('CAPIT',I); R4('PVA',I,T)$(ORDSCEN(T) EQ %1) = PVA.L(I); R4('VA',I,T)$(ORDSCEN(T) EQ %1) = PVA.L(I) * DS.L(I); R4('M',I,T)$(ORDSCEN(T) EQ %1) = M.L(I); R4('X',I,T)$(ORDSCEN(T) EQ %1) = CX.L(I); R4('CARBPR',I,T)$(ORDSCEN(T) EQ %1) = CARBON.L(I); R4('CARBIMP',I,T)$(ORDSCEN(T) EQ %1) = (M.L(I)-CX.L(I)) * TCINTENS(I); R4('CO2ELC',I,T)$(ORDSCEN(T) EQ %1) = AD('DISTEL',I) * REG1('DISTEL',I) * VREG1.L('DISTEL',I) * DS.L(I); R4('RRL',I,T)$(ORDSCEN(T) EQ %1) = R.L('LABOR',I) / R0('LABOR',I) * 100; R4('RRK',I,T)$(ORDSCEN(T) EQ %1) = R.L('CAPIT',I) * KS.L(I) / R0('CAPIT',I) * KS.L(I) * 100; R4('FTAXK',I,T)$(ORDSCEN(T) EQ %1) = SUM(GF,TAUFX(GF,'CAPIT',I)); R4('FTAXL',I,T)$(ORDSCEN(T) EQ %1) = SUM(GF,TAUFX(GF,'LABOR',I)); R4('KRETURN',I,T)$(ORDSCEN(T) EQ %1) = R.L('CAPIT',I); R4('LRETURN',I,T)$(ORDSCEN(T) EQ %1) = R.L('LABOR',I); * * SAVE MODEL AND SOLVER STATUS TO CHECK FOR PROBLEMS * If { %1 > 1, If { SCENARIO.MODELSTAT > 2, * abort 'Infeasible' }; }; If { %1 = 1, R2('M-STAT','BASE') = 11; R2('S-STAT','BASE') = 7; Else R2('M-STAT',T)$(ORDSCEN(T) EQ %1) = SCENARIO.MODELSTAT; R2('S-STAT',T)$(ORDSCEN(T) EQ %1) = SCENARIO.SOLVESTAT; }; *