C Economic Analysis C By F.D. Drake C**** VERSION:10/28/88 ! This component has been assigned Type Number 202. If that number conflicts with ! another user Type number, you will need to change it and recompile the appropriate ! dll. SUBROUTINE TYPE202 (TIME,XIN,OUT,T,DTDT,PAR,INFO,ICNTRL,*) !DEC$ATTRIBUTES DLLEXPORT:: TYPE202 C********************************************************************* C**** C**** THIS ROUTINE COMPARES THE ECONOMIC ATTRACTIVENESS OF TWO C**** DIFFERENT PLANTS (BASE CASE:B VERSUS A:ALTERNATIVE) BY C**** PERFORMING THE VARIOUS ECONOMIC ANALYSIS TECHNIQUES (SEE MODES) C**** C**** SAMPLE INPUT AND OUTPUT VALUES FOLLOW THE NOMENCLATURE C**** C********************************************************************* C********************************************************************* C NOMENCLATURE: (IN ALPHABETICAL ORDER) C C A.. : OF ALTERNATIVE (REPLACE '.' BY A OR B IN ALL FOLLOWING C B.. : OF BASE CASE VARIABLES AND PARAMETERS) C C .CAPEX : CAPITAL EXPENDITURE AT BEGINNING OF FIRST PERIOD C C .ELG : ELECTRICITY GENERATION IN FIRST PERIOD IN KWH C .ELGP : INCREASE IN ELECTR. GENERATION PER PERIOD IN % C .ELG$ : PRICE OF GENERATED ELECTRICITY IN $/KWH C .ELG$P : INCREASE OF PRICE FOR GEN. ELEC. IN % (EXCL. INFLATION) C C .ELC : ELECTRICITY CONSUMPTION IN FIRST PERIOD IN KWH C .ELCP : INCREASE IN ELECTR. CONSUMPTION PER PERIOD IN % C .ELC$ : PRICE OF CONSUMED ELECTRICITY IN $/KWH C .ELC$P : INCREASE OF PRICE FOR CONS. ELEC. IN % (EXCL. INFLATION) C C .ELCOST: PRESENT WORTH OF ELECTRICITY COST C C .EUAC : EQUIVALENT UNIFORM ANNUAL COSTS C C .F(I) : UNITS OF FUEL CONSUMPTION OF FUEL I IN FIRST PERIOD C .FP(I) : INCREASE IN CONSUMPTION PER PERIOD IN % C .F$(I) : PRICE OF FUEL IN $/UNIT C .F$P(I): INCREASE OF PRICE FOR FUEL IN % (EXCL. INFLATION) C C .FCOST : PRESENT WORTH OF FUEL COSTS C C .MS$(I): MISCELLANEOUS COSTS IN FIRST PERIOD IN $ C .MS$P : INCREASE IN MISC. COSTS IN % PER PERIOD (EXCL. INFLATION) C C .MSCOST: PRESENT WORTH OF MISC. COSTS C C .OM$ : LABOR AND MAINTENANCE COST IN FIRST PERIOD IN $ C .OM$P : INCREASE OF AOM$ PER PERIOD IN % C C .OMCOST: PRESENT WORTH OF LABOR AND MAINTENANCE COSTS C C .OPCOST: PRESENT WORTH OF OPERATIONAL COSTS IN $ C .DCOST : DERIVATIVE OF .OPCOST WITH RESPECT TO ROR C C C DCOST : (BOPCOST+BCAPEX) - (AOPCOST+ACAPEX) C DDCOST : DERIVATIVE OF DCOST WITH RESPECT TO ROR C C MODE : 1: LIFE CYCLE COST ANALYSIS, CALCULATING THE PRESENT C WORTH OF ALL COSTS FOR THE TWO OPTIONS AND THE C EQUIVALENT ANNUAL CASH FLOW C 2: INCREMENTAL RATE OF RETURN CALCULATION C C N : ANALYSIS PERIOD IN YEARS C NFA : NUMBER OF FUELS IN USE FOR ALTERNATIVE C NFB : NUMBER OF FUELS IN USE FOR BASE CASE C NMSA : NUMBER OF MISC. COST ITEMS FOR ALTERNATIVE C NMSB : NUMBER OF MISC. COST ITEMS FOR BASE CASE C RINF : RATE OF INFLATION C ROR : INCREMENTAL RATE OF RETURN C********************************************************************* C C SAMPLE INPUT AND OUTPUT VALUES C C INPUT SAMPLE VALUES C XIN(1) BCAPEX 150000.0 C XIN(2) ACAPEX 200000.0 C XIN(3) BELG 3500.0 C XIN(4) BELC 2700.0 C XIN(5) AELG 3460.0 C XIN(6) AELC 3000.0 C XIN(7) BF(1) 220.0 C XIN(8) BF(2) 300.0 C XIN(9) AF(1) 250.0 C XIN(10) AF(2) 255.0 C XIN(11) BOM$ 6000.0 C XIN(12) AOM$ 7000.0 C XIN(13) BMS$(1) 300.0 C XIN(14) BMS$(2) 400.0 C XIN(15) BMS$(3) 500.0 C XIN(16) AMS$(1) 350.0 C XIN(17) AMS$(2) 450.0 C XIN(18) AMS$(3) 550.0 C C PARAMETERS C PAR(1) MODE 1.0 C PAR(2) N 24.0 C PAR(3) RINF .4 C PAR(4) NFB 2.0 C PAR(5) NFA 2.0 C PAR(6) NMSB 3.0 C PAR(7) NMSA 3.0 C PAR(8) BELGP 2.6 C PAR(9) BELG$ .0004 C PAR(10) BELG$P 3.5 C PAR(11) AELGP 3.1 C PAR(12) AELG$ .0006 C PAR(13) AELG$P 2.0 C PAR(14) BELCP 2.0 C PAR(15) BELC$ .001 C PAR(16) BELC$P 1.2 C PAR(17) AELCP 2.4 C PAR(18) AELC$ .0011 C PAR(19) AELC$P 1.75 C PAR(20) BOM$P 4.0 C PAR(21) AOM$P 4.0 C PAR(22) BFP(1) 5.0 C PAR(23) BFP(2) 6.0 C PAR(24) BF$(1) .45 C PAR(25) BF$(2) .65 C PAR(26) BF$P(1) .0 C PAR(27) BF$P(2) .3 C PAR(28) AFP(1) 4.5 C PAR(29) AFP(2) 5.0 C PAR(30) AF$(1) .5 C PAR(31) AF$(2) .5 C PAR(32) AF$P(1) .25 C PAR(33) AF$P(2) 1.5 C PAR(34) BMS$P(1) 4.0 C PAR(35) BMS$P(2) 4.2 C PAR(36) BMS$P(3) 3.2 C PAR(37) AMS$P(1) 1.0 C PAR(38) AMS$P(2) 2.0 C PAR(39) AMS$P(3) .5 C PAR(40) ROR .25 C C OUTPUTS C OUT(1) ROR*100 .25 C OUT(2) N 24.0 C OUT(3) BOPCOST 447100.0 C OUT(4) AOPCOST 524900.0 C OUT(5) BEAUC 19210.0 C OUT(6) AEUAC 22560.0 C C********************************************************************* DIMENSION XIN(24),PAR(50),OUT(6),INFO(15) DIMENSION AMS$(5),AMS$P(5),AF(3),AFP(3),AF$(3),AF$P(3) DIMENSION BMS$(5),BMS$P(5),BF(3),BFP(3),BF$(3),BF$P(3) COMMON /LUNITS/LUR,LUW,IFORM,LUK ! Set the version information for TRNSYS IF (INFO(7).EQ.-2) THEN INFO(12) = 15 RETURN 1 ENDIF C********************************************************************* C**** SET PARAMETERS C********************************************************************* MODE = PAR(1) N = PAR(2) RINF = PAR(3)/100. NFB = PAR(4) NFA = PAR(5) NMSB = PAR(6) NMSA = PAR(7) BELGP = PAR(8)/100 BELG$ = PAR(9) BELG$P= PAR(10)/100 AELGP = PAR(11)/100 AELG$ = PAR(12) AELG$P= PAR(13)/100 BELCP = PAR(14)/100 BELC$ = PAR(15) BELC$P= PAR(16)/100 AELCP = PAR(17)/100 AELC$ = PAR(18) AELC$P= PAR(19)/100 BOM$P = PAR(20)/100 AOM$P = PAR(21)/100 DO 5 I=1,NFB BFP(I) = PAR(21+I)/100 BF$(I) = PAR(21+NFB+I) BF$P(I)= PAR(21+2*NFB+I)/100 5 CONTINUE DO 10 I=1,NFA AFP(I) = PAR(21+3*NFB+I)/100 AF$(I) = PAR(21+4*NFB+I) AF$P(I)= PAR(21+5*NFB+I)/100 10 CONTINUE DO 15 I=1,NMSB BMS$P(I)= PAR(21+3*NFB+3*NFA+I)/100 15 CONTINUE DO 20 I=1,NMSA AMS$P(I)= PAR(21+3*NFB+3*NFA+NMSB+I)/100 20 CONTINUE ROR=PAR(21+3*NFB+3*NFA+NMSB+NMSA+1)/100 C********************************************************************* C**** SET INPUTS C********************************************************************* BCAPEX = XIN(1) ACAPEX = XIN(2) BELG = XIN(3) BELC = XIN(4) AELG = XIN(5) AELC = XIN(6) DO 25 I=1,NFB BF(I) = XIN(6+I) 25 CONTINUE DO 30 I=1,NFA AF(I) = XIN(6+NFB+I) 30 CONTINUE BOM$ = XIN(6+NFB+NFA+1) AOM$ = XIN(6+NFB+NFA+2) DO 35 I=1,NMSB BMS$(I) = XIN(6+NFB+NFA+2+I) 35 CONTINUE DO 40 I=1,NMSA AMS$(I) = XIN(6+NFB+NFA+2+NMSB+I) 40 CONTINUE C********************************************************************* C**** FOR MODE=2: BEGIN OF ITERATION FOR RATE OF RETURN C********************************************************************* IF(MODE.EQ.2) THEN ROR=ROR K =0. END IF C********************************************************************* C**** START OF CALCULATIONS C********************************************************************* 11 BOPCOST=0. BELCOST=0. BFCOST =0. BOMCOST=0. BMSCOST=0. AOPCOST=0. AELCOST=0. AFCOST =0. AOMCOST=0. AMSCOST=0. C********************************************************************* C**** FOR MODE 2 C********************************************************************* IF(MODE.EQ.2) THEN BDOPCOST=0. BDELCOST=0. BDFCOST =0. BDOMCOST=0. BDMSCOST=0. ADOPCOST=0. ADELCOST=0. ADFCOST =0. ADOMCOST=0. ADMSCOST=0. END IF DO 100 I=1,N C************************************************************** C**** CALCULATION OF INDIVIDUAL OPERATIONAL COSTS FOR BASE CASE C*************************************************************** C**** CALCULATION OF ELECTRICITY COSTS BELCOST = BELCOST + + (BELC * (1+BELCP)**I * BELC$ * (1+BELC$P)**I / (1+ROR)**I - - BELG * (1+BELGP)**I * BELG$ * (1+BELG$P)**I / (1+ROR)**I) * * (1+RINF)**I C**** CALCULATION OF FUEL COSTS DO 55 J=1,NFB BFCOST= BFCOST + + BF(J) * (1+BFP(J))**I * BF$(J)*(1+BF$P(J))**I / (1+ROR)**I * * (1+RINF) 55 CONTINUE C**** CALCULATION OF LABOR AND MAINTENANCE COSTS BOMCOST= BOMCOST + BOM$ * (1+BOM$P)**I / (1+ROR)**I * (1+RINF) C**** CALCULATION OF MISC. COSTS DO 60 J=1,NMSB BMSCOST= BMSCOST + + BMS$(J) * (1+BMS$P(J))**I / (1 + ROR)**I * (1+RINF) 60 CONTINUE C***************************************************************** C**** CALCULATION OF INDIVIDUAL OPERATIONAL COSTS FOR ALTERNATIVE C***************************************************************** C**** CALCULATION OF ELECTRICITY COSTS AELCOST = AELCOST + +(AELC * (1+AELCP)**I * AELC$ * (1+AELC$P)**I / (1+ROR)**I - - AELG * (1+AELGP)**I * AELG$ * (1+AELG$P)**I / (1+ROR)**I) * * (1+RINF) C**** CALCULATION OF FUEL COSTS DO 65 J=1,NFA AFCOST= AFCOST + + AF(J) * (1+AFP(J))**I * AF$(J)*(1+AF$P(J))**I / (1+ROR)**I * * (1+RINF) 65 CONTINUE C**** CALCULATION OF LABOR AND MAINTENANCE COSTS AOMCOST= AOMCOST + AOM$ * (1+AOM$P)**I / (1+ROR)**I * * (1+RINF) C**** CALCULATION OF MISC. COSTS DO 70 J=1,NMSA AMSCOST= AMSCOST + + AMS$(J) * (1+AMS$P(J))**I / (1 + ROR)**I * (1+RINF) 70 CONTINUE C****************************************************************** C**** CALCULATION OF DERIVATIVE OF OPERATIONAL COSTS FOR BASE CASE C WITH RESPECT TO ROR : ONLY IF MODE = 2. C****************************************************************** IF(MODE.EQ.2) THEN C**** ELECTRICITY COSTS BDELCOST = BDELCOST + + (BELC * (1+BELCP)**I * BELC$ * (1+BELC$P)**I - - BELG * (1+BELGP)**I * BELG$ * (1+BELG$P)**I) * (1+RINF) * * (-1) * I *(1+ROR)**(I-1) / (1+ROR)**(2*I) C**** FUEL COSTS DO 75 J=1,NFB BDFCOST= BDFCOST + + ( BF(J) * (1+BFP(J))**I * BF$(J)*(1+BF$P(J))**I) * (1+RINF) * + (-1) * I *(1+ROR)**(I-1) / (1+ROR)**(2*I) 75 CONTINUE C**** LABOR AND MAINTENANCE COSTS BDOMCOST= BDOMCOST + + (BOM$ * (1+BOM$P)**I) * (1+RINF) * * (-1) * I *(1+ROR)**(I-1) / (1+ROR)**(2*I) C**** MISC. COSTS DO 80 J=1,NMSB BDMSCOST= BDMSCOST + + (BMS$(J) * (1+BMS$P(J))**I) * (1+RINF) * * (-1) * I *(1+ROR)**(I-1) / (1+ROR)**(2*I) 80 CONTINUE C******************************************************************* C CALCULATION OF DERIVATIVE OF OPERATIONAL COSTS FOR ALTERNATIVE C WITH RESPECT TO ROR : ONLY IF MODE = 2. C******************************************************************* C**** ELECTRICITY COSTS ADELCOST = ADELCOST + + (AELC * (1+AELCP)**I * AELC$ * (1+AELC$P)**I - - AELG * (1+AELGP)**I * AELG$ * (1+AELG$P)**I) * (1+RINF) * * (-1) * I *(1+ROR)**(I-1) / (1+ROR)**(2*I) C**** FUEL COSTS DO 85 J=1,NFA ADFCOST= ADFCOST + + ( AF(J) * (1+AFP(J))**I * AF$(J)*(1+AF$P(J))**I) * (1+RINF) * + (-1) * I *(1+ROR)**(I-1) / (1+ROR)**(2*I) 85 CONTINUE C**** LABOR AND MAINTENANCE COSTS ADOMCOST= ADOMCOST + + (AOM$ * (1+AOM$P)**I) * (1+RINF) * * (-1) * I *(1+ROR)**(I-1) / (1+ROR)**(2*I) C**** MISC. COSTS DO 90 J=1,NMSA ADMSCOST= ADMSCOST + + (AMS$(J) * (1+AMS$P(J))**I) * (1+RINF) * * (-1) * I *(1+ROR)**(I-1) / (1+ROR)**(2*I) 90 CONTINUE END IF 100 CONTINUE C********************************************************************* C**** ADDITION OF INDIVIDUAL COSTS C********************************************************************* C**** ADDITION OF INDIVIDUAL COSTS FOR BASE CASE (PRESENT WORTH!) BOPCOST = BELCOST + BFCOST + BOMCOST + BMSCOST + BCAPEX C**** ADDITION OF INDIVIDUAL COSTS FOR ALTERNATIVE (PRESENT WORTH!) AOPCOST = AELCOST + AFCOST + AOMCOST + AMSCOST + ACAPEX C**** EQUIVALENT ANNUAL COST CALCULATION FOR BASE CASE IF(ROR.NE.0) THEN BEUAC = BOPCOST * ROR*(1+ROR)**N / ((1+ROR)**N - 1) C**** EQUIVALENT ANNUAL COST CALCULATION FOR ALTERNATIVE AEUAC = AOPCOST * ROR*(1+ROR)**N / ((1+ROR)**N - 1) END IF ******************************************************************** C**** FOR MODE=2: ITERATION TO FIND ROR WITH NEWTON-RAPHSON ******************************************************************** IF(MODE.EQ.2) THEN C**** DERIVATIVE OF OPER. COST OF BASE CASE WITH RESPECT TO ROR BDCOST = BDELCOST + BDFCOST + BDOMCOST + BDMSCOST C**** DERIVATIVE OF OPER. COST OF ALTERNATIVE WITH RESPECT TO ROR ADCOST = ADELCOST + ADFCOST + ADOMCOST + ADMSCOST C**** NEWTON RAPHSON: DCOST=BOPCOST - AOPCOST DDCOST= BDCOST - ADCOST WRITE(LUW,*)'ROR=',ROR ROROLD = ROR C**** WARNING IN CASE OF ZERO SLOPE IF(DDCOST.EQ.0) THEN WRITE(LUW,98) TIME, INFO(1), INFO(2) 98 FORMAT(T2,'********** WARNING *********',/, +T2,' TIME : ',E12.5,' UNIT : ',I3,' TYPE : ',I3,/, + 'PLEASE CHOSE DIFFERENT FIRST GUESS FOR RATE OF RETURN !',/) CALL MYSTOP(1001) RETURN 1 END IF ROR = ROR - DCOST/DDCOST IF(ABS(ROR-ROROLD).LE.0.0001) GOTO 200 K=K+1 IF(K.GT.10000) THEN WRITE(LUW,99) TIME, INFO(1), INFO(2) 99 FORMAT(T2,'********** WARNING *********',/, +T2,' TIME : ',E12.5,' UNIT : ',I3,' TYPE : ',I3,/, + ' NO CONVERGENCE FOR RATE-OF-RETURN CALCULATION !',/) CALL MYSTOP(1001) RETURN 1 END IF GOTO 11 END IF C********************************************************************* C**** SET OUTPUTS C********************************************************************* 200 OUT(1) = ROR*100. OUT(2) = N OUT(3) = BOPCOST OUT(4) = AOPCOST OUT(5) = BEUAC OUT(6) = AEUAC RETURN 1 END