C ********************************************************************** C ************* THE IEA GLOBAL CO(2) ANALYTICAL FRAMEWORK ************** C ********************************************************************** C C C*********************************************************************** C C THE MAIN PROGRAM C REVISED 8 SEPTEMBER 1988 TO CALL CH4 SUBROUTINE C*********************************************************************** C*********************************************************************** C********* START MAIN PROGRAM ********* START MAIN PROGRAM ********** C*********************************************************************** C C MAKE ALL REAL VARIABLES DOUBLE PRECISION C IMPLICIT REAL*8 (A-H,O-Z), INTEGER (I-N) REAL*4 PARMT INTEGER JUNIT,OPTION,CONSOL C C COMMON BLOCKS $INCLUDE:'COMMON.FOR' C IUNIT=5 IOUNIT=0 JUNIT=6 MALL=0 C +-------------------------------------+ C | CALL DATA INPUT SUBROUTINES | C +-------------------------------------+ C C CALL TIT C OPEN(5,FILE='NIEA.DAT') OPEN(6,FILE='lpt1',STATUS='NEW') C MDUMP=1 CALL OREAD CALL IN C CALL TIT C DO 7 II=1,3 DO 8 MMM=1,6 TPIM(II,MMM)=PIM(II,MMM) 8 CONTINUE 7 CONTINUE 3 CONTINUE DO 2 II=1,3 DO 4 MMM=1,6 PIM(II,MMM)=TPIM(II,MMM) 4 CONTINUE 2 CONTINUE C C MXHOLD=MAXAGN C C *********************************** C *** ITERATE OVER NM PERIODS *** C *********************************** DO 30 M=1,NM NUB=0 C C +----------------------------------------+ C | INITIALIZE EXPORT/IMPORT VARIABLES | C +----------------------------------------+ DO 10 L=1,NL DO 5 I=1,NMKT XIL(I,L)=0.D0 5 CONTINUE 10 CONTINUE C NAGN=0 NTIMES=0 100 CONTINUE C +---------------------------------+ C | CALL THE WORLD ENERGY MODEL | C +---------------------------------+ CALL PPPP CALL PSPS CALL SSSS CALL DDDD C +-----------------------------------+ C | IN THE FIRST PERIOD PRINT OUT | C | BASE RUN RESULTS | C +-----------------------------------+ IF(M.EQ.1) GO TO 20 C +--------------------------+ C | TEST FOR CONVERGENCE | C +--------------------------+ CALL XXXX C*********************************************************************** C IF THE SEARCH ROUTINE NEARS ITS ITERATION LIMIT, PRINT THE C INTERMEDIATE OUTPUT C IF(NAGN.LT.MAXAGN) GOTO 15 IF(MDUMP.EQ.2) MDUMP=3 IF(MDUMP.EQ.1) MDUMP=2 IF(MDUMP.EQ.3) MDUMP=1 C NOPT(3)=2 C NOPT(4)=2 C C IF ITERATION LIMIT REACHED, PRINT THE ABANDONMENT MESSAGE C WRITE(JUNIT,1000) MAXAGN 1000 FORMAT(1H0,'NO EQUILIBRIUM AFTER',I4,'TRIES--ABANDONING RUN.') WRITE(JUNIT,1002) 1002 FORMAT(1X,'NO EQUILIBRIUM REACHED, THIS RUN ABANDONED') IF(MDUMP.EQ.2) GOTO 3 C 1003 NOPT(3)=1 NOPT(4)=1 WRITE(JUNIT,9)PARMT 9 FORMAT(' ','PARMT :',5G12.6) IFAAG=1 STOP C*********************************************************************** C 15 CONTINUE C C +----------------------------------------------+ C | IF THE CONVERGENCE PROCESS IS INCOMPLETE | C | RUN THE MODEL AGAIN | C +----------------------------------------------+ IF(NFAIL .EQ. 1) GO TO 100 C 20 CONTINUE C C +-----------------------+ C | SUMMARIZE RESULTS | C +-----------------------+ CALL POST C +---------------------------------------------------------+ C | ENERGY PRODUCTION AND USE REPORT OPTIONS FOR PERIOD M | C +---------------------------------------------------------+ C IF(MALL.EQ.0)THEN C IF ((NOPT(5).EQ.1) .AND. (NOPT(6).EQ.1)) GO TO 21 CALL OUTPUT C +---------------------------------------------+ C | ENERGY PRICE REPORT OPTION FOR PERIOD M | C +---------------------------------------------+ 21 IF (NOPT(7).EQ.1) GO TO 22 CALL PRICES C ENDIF 22 CALL CO2 CALL CH4 30 CONTINUE C +--------------------------------------------------+ C | OUTPUT OPTION CONTROL FOR THE SUMMARY TABLES | C +--------------------------------------------------+ IF(NOPT(9) .EQ. 1) GO TO 35 CALL MTABL 35 CONTINUE CALL TABWRT C CLOSE(1) CLOSE(6,STATUS='DELETE') C STOP END