$NOFLOATCALLS C********************************************************************** C SUBROUTINE PSPS C C********************************************************************** C C -- THE SECONDARY ENERGY PRICE PREPROCESSOR -- C C THIS SUBROUTINE TAKES THE PRICES FOR PRIMARY ENERGY BY REGION AND C FUEL TYPE AND CONVERTS THEM INTO THE PRICES OF SECONDARY FUELS, C ELECTRICITY, AND ENERGY SERVICES. IT COMPUTES BASE GNP FROM DEMO- C GRAPHIC AND LABOR PRODUCTIVITY DATA AND THEN ADJUSTS FINAL GNP C FOR ENERGY PRICE EFFECTS. C C MODEL VERSION: A.31.07.84 C C INTEGER INPUTS: NF,NI,NJ,NKL,NKMAX,NM,NU C REAL INPUTS: BSUILM,GIJ,GJ,GJK,GNP,GUI,HIJ,HJ,NK,HUIL,HYDRO, C PILM,RUI,RY,SJKLP,TXJKLM C C REAL OUTPUTS: PJKLM,PJLM,PKLM,PUILM,SUIL,YLM C C LOCAL VARIABLES:PS,T,SUM C LOCAL INTEGERS: NK,NNF C C SUBROUTINES CALLED: NONE C C WRITTEN BY: C JAE EDMONDS LATEST REVISION: C 31 JULY 1984 1 SEPT 88 TO INCLUDE COMMON C 14 AUGUST 89 TO CORRECT PS/BPSL C 21 AUGUST 89 TO CHANGE TXJKLM TO C TXJKLM C*********************************************************************** C C C MAKE ALL REAL VARIABLES DOUBLE PRECISION C IMPLICIT REAL*8 (A-H,O-Z), INTEGER (I-N) C C COMMON BLOCKS $INCLUDE:'COMMON.FOR' C REAL*8 PS C C C -- BEGIN REGIONAL DO LOOP C MM1=M-1 MM2=M-2 DO 130 L=1,NL NK=NKL(L) SUIL(NI,L)=HYDRO(5,L) C C COMPUTE THE PRICES OF SECONDARY FOSSIL FUELS C DO 50 J=1, NF I=J PJLM(J,L,M)=PILM(I,L,M)*GIJ(I)+HIJ(I) 50 CONTINUE C C C COMPUTE THE PRICE OF ELECTRICITY C C -- COMPUTE ELECTRICITY GENERATION PRICES FOR ALL COMPETING FUELS C DO 60 J=1,NF PUILM(J,L,M)=PJLM(J,L,M)*PAUIL(J,L)*GUI(J)+HUIL(J,L) 60 CONTINUE C NNF=NF+1 DO 70 I=NNF,NI PUILM(I,L,M)=PILM(I,L,M)*GUI(I)+HUIL(I,L) 70 CONTINUE C C C C -- COMPUTE THE ELECTRICITY FUEL SHARES AND PRICE C SUM=0.D0 DO 80 I=1,NU SUIL(I,L)=BSUILM(I,L,M)*PUILM(I,L,M)**RUI(I) SUM =SUM + SUIL(I,L) 80 CONTINUE C C PJLM(NJ,L,M)=SUIL(NI,L)*PUILM(NI,L,M) DO 90 I=1,NU SUIL(I,L)=(1.D0-SUIL(NI,L))*SUIL(I,L)/SUM PJLM(NJ,L,M)=PJLM(NJ,L,M)+SUIL(I,L)*PUILM(I,L,M) 90 CONTINUE PJLM(NJ,L,M)=PJLM(NJ,L,M) C C C COMPUTE THE ENERGY SERVICE PRICES C PS=0.D0 DO 110 K=1,NK PKLM(K,L,M)=0.D0 RPKL(K,L)=0.D0 DO 100 J=1,NJ IF (NK .EQ. 1) PP=PJLM(J,L,M)*GJ(J)*TXJKLM(J,K,L,M)+HJ(J) IF (NK .NE. 1) PP=PJLM(J,L,M)*GJK(J,K)*TXJKLM(J,K,L,M) & +HJK(J,K) PJKLM(J,K,L,M)=PP PKLM(K,L,M)=PKLM(K,L,M)+SJKLP(J,K,L)*PJKLM(J,K,L,M) IF(NK.EQ.1) PP=PP-HJ(J) IF(NK.NE.1) PP=PP-HJK(J,K) RPKL(K,L)=RPKL(K,L)+PP*SJKLP(J,K,L) 100 CONTINUE PS=PS+BSKL(K,L)*PKLM(K,L,M) IF(NK.EQ.1) RPKL(K,L)=RPK*PKLM(K,L,M)/RPKL(K,L) IF(NK.NE.1) RPKL(K,L)=RPKK(K)*PKLM(K,L,M)/RPKL(K,L) 110 CONTINUE IF (M .EQ.1) THEN BPSLM(L,M)=PS PS=1.D0 ELSE BPSLM(L,M)=PS PS=PS/BPSLM(L,MM1) ENDIF C DO 115 K=1,NK IF (M .EQ. 1) BPKL(K,L)=PKLM(K,L,M) PKLM(K,L,M)=PKLM(K,L,M)/BPKL(K,L) 115 CONTINUE C C ---------------------------------------- C -- COMPUTE BASE GNP FOR ALL REGIONS -- C ---------------------------------------- C ------------------------------------ C -- INITIALIZE BASE GNP TO 1 FOR -- C -- THE BASE PERIOD -- C ------------------------------------ IF (M .EQ. 1) YLM(L,M)=1.D0 IF (M .EQ. 1) GNP(L,M)=1.D0 IF (M .EQ. 1) GO TO 130 C ------------------------------------ C -- FOR NON-BASE YEARS -- C -- 1) COMPUTE ACTUAL LABOR PRO- -- C -- DUCTIVITY FOR PREVIOUS -- C -- PERIOD -- C -- 2) COMPUTE BASE LABOR PRO- -- C -- DUCTIVITY FOR PREVIOUS -- C -- PERIOD -- C -- 3) COMPUTE BASE GNP FOR CUR- -- C -- ENT PERIOD -- C ------------------------------------ IF (M .EQ. 2) GNP(L,M)=YLM(L,MM1)*(1.D0+PROL(L))**NJUMP* & (ZLM(L,MM1)/ZL(L)) IF (M .EQ. 2) GO TO 120 GNP(L,M)=(ZLM(L,MM1)/ZLM(L,MM2))*(1.D0+PROL(L))**NJUMP* & YLM(L,MM1) 120 CONTINUE C C ADJUST GNP FOR ENERGY PRICE C YLM(L,M)=GNP(L,M)*PS**RYL(L) C 130 CONTINUE RETURN END