T r T s v,v r X X surf z α δ z = Temperatur reservoir, o F = Temperatur kondensasi uap pada tekanan injeksi di dasar sumur, o F = Koreksi temperatur terhadap arah radial dan vertikal seara berurutan, tak berdimensi = kualitas rata-rata uap pada kondisi lubang sumur selama periode injeksi uap, lb vapor/lb liquid+vapor = Kualitas uap di kepala sumur, lb vapor/lb liquid+vapor = Ketebalan hipotetik, ft = difusivitas panas batuan, sqft/d = Kuantitas, definisi pada pers. 8, tak berdimensi eerf τ τ + 2 τ / π 1, tak berdimensi ξ = s ( ) ( ) ( ρc ) = Kapasitas panas volumetrik dari R+F reservoir termasuk fluida didalamnya,btu/ft 3 - o F ρ o, ρ w = densitas minyak dan air pada kondisi stok tank, seara berurutan, lb/ft 3 τ = ˆ2 = 4 / ( ), dimensionless τ Kt h ρ + h i VIII. DAFTAR PUSTAKA 1. Ashat, Ali dan Nenny Saptadji, Korelasi untuk Penentuan Sifat Termodinamika air murni pada kondisi saturasi, Laboratorium Geothermal, Jurusan Teknik Perminyakan ITB, Bandung, 1998. R F 2. Boberg, Thomas C., Thermal Methods of Oil Reovery, An Exxon Monograph, John Wiley & Sons In., Toronto, Canada, 1988. 3. Boberg, Thomas C. dan Lantz R.B., Calulation of the Prodution Rate of Thermally Stimulated Well, Trans. AIME, 237, I-1613, 1996. 4. Fudiansyah, M., Reporting Pilot Projet Huff & Puff, JOB Pertamina-Bumi Siak Pusako, Siak, Riau, 2006. 5. Hong, K.C, Steamflooding Reservoir Management: Thermal Enhaned Oil Reovery, PennWell Publishing Co., Tulsa, Oklahoma, 1994. 6. Mandala, Wirawan Widya, Prediksi Kinerja Sumur Injeksi Uap Huff & Puff Dengan Metode Analitik dan Simulasi, Program Studi Teknik Perminyakan ITB, Bandung, 2007. 7. Prats, Mihael, Thermal Reovery, 2 nd Printing, Amerian Institute of Mining, Metallurgial, and Petroleum Engineers In., New York, United State of Ameria 1982. 8. Tortike, W.S. and Farouq Ali S.M., Saturated-Steam Property Funtional Correlations for fully Impliit Thermal Reservoir Simulation, SPE Paper 17094, SPE, Houston, Texas, 1989. Djabaruddin, 12203042 Sem1 2007/2008 18
LAMPIRAN A Tabel 3. Data-data Masukan Software Sumur-sumur di lapangan X Input Sumur ADA#22 Input Sumur ADA#32 Input Sumur ADA#35 SPM 1,199,800 SPM 1,160,600 SPM 2,709,350 PIC 0.279 PIC 0.163 PIC 1.108 UOCOLD 25.209 UOCOLD 25.209 UOCOLD 25.209 TI 11 TI 9 TI 26 H 48 H 104 H 92 X 0.8 X 0.8 X 0.8 PINJ 434.69 PINJ 434.69 PINJ 434.69 RHOO 54.004 RHOO 54.004 RHOO 54.004 RHOW 62.4 RHOW 62.4 RHOW 62.4 SGO 0.8654434 SGO 0.8654434 SGO 0.8654434 CPO 0.468 CPO 0.468 CPO 0.468 CPG 0.01 CPG 0.01 CPG 0.01 RHOCR 46.19 RHOCR 46.19 RHOCR 46.19 THCOND 38.4 THCOND 38.4 THCOND 38.4 ALFA 1.097 ALFA 1.097 ALFA 1.097 RW 0.33 RW 0.292 RW 0.292 RE 26.55 RE 24 RE 35.27 PW 210 PW 210 PW 200 PE 260 PE 260 PE 260 GOR 200 GOR 200 GOR 200 WOR 7.9 WOR 9.337 WOR 1.693 TR 120 TR 120 TR 120 DT 1 DT 1 DT 1 TTIME 79 TTIME 49 TTIME 80 NUO 11 NUO 11 NUO 11 115 28.972 115 28.972 115 28.972 120 25.209 120 25.209 120 25.209 130 18.598 130 18.598 130 18.598 150 14.527 150 14.527 150 14.527 200 6.8686 200 6.8686 200 6.8686 250 4.162 250 4.162 250 4.162 300 3.33292 300 3.33292 300 3.33292 350 2.67438 350 2.67438 350 2.67438 400 2.2561 400 2.2561 400 2.2561 450 1.96986 450 1.96986 450 1.96986 500 1.76301 500 1.76301 500 1.76301 Djabaruddin, 12203042 Sem1 2007/2008 19
DATA LAMPIRAN B Tabel 4. Data Sumur & Perhitungan Lapangan "X" Proposed Huff & Puff/ Cyli steam Injetion Lapangan "X" Well ADA-32 ADA-22 ADA-33 Total Initial Water Saturation, % 30% 30% 30% Initial Oil Saturation, % 70% 70% 70% Oil Gravity, API 32 32 32 WHT, F 100 105 105 Reservoir Temp, F 120 120 120 Reservoir Pressure, psi 260 260 260 Oil Prodution, BOPD 2 12 19 33 Water ut, % 98 98 79 Gross Pay Thikness, ft 104 89 113 306 Net Pay Thikness, ft 104 48 92 244 Porosity, % 26% 26% 26% Top Sand Depth, ft 497 480 426 Opened interval 498-518 481-501 483-492 567-570 508-522 497-504 524-532 508-514 538-544 518-522 533-540 550-553 571-575 580-582 586-590 Oil Spesifi Heat, Btu/lb-F 0.469 0.469 0.469 Volumetri Heat Capaity, Btu/Cuft-F 46.19 46.19 46.19 Estimate Radius, ft 24 26.55 35.27 Estimate Temperatur, F 235 235 235 CALCULATION Bulk Volume Gross, Cuft 188,099 196,992 441,386 Bulk Volume Nett, Cuft 188,099 106,243 359,359 Heat Required in Oil Zone, Btu 1,028,288,762 580,803,491 1,964,527,051 Heat Required in Shale Zone, Btu - 482,021,564 435,596,202 Total Heat Required, Bbtu 1 1.1 2.4 4.5 Barrel Cold Water Equivalent, BCWE, bbls 3,316 3,428 7,741 14,485 Injetion Capaity, BCWEPD 690 540 710 Estimated Injetion Days, Days 5 6 11 22 Estimated Fuel Consumtion, bbls (diesel) 288 381 654 1,323 Lt (diesel) 45,851 60,554 104,009 210,414 bbls (rude oil as fuel) 369 487 837 1,693 Djabaruddin, 12203042 Sem1 2007/2008 20
LAMPIRAN C Soure ode Program Metode Modifikasi Boberg-Lantz Program for a Cyle Steam Preditive Model By Boberg-Lantz - Main Soure Boberg, T.C. and Lantz, R.B. "Calulation of the Prodution Rate of a Thermally Stimulated Well", JPT De. 1966, pp. 1613-1623 - An Error Funtion Complimentary Program (Numerial Re.) - Steam and Vapor Correlation from : Tortike and Farouq Ali (Paper SPE#17094) in Metri Units: p in kpa(1./6.894 psi), T in K - Data Test:- paper SPE Comparative No. 4 - their paper (JPT De. 1966) Hf dan Hg menggunakan korelasi W.S Tortike dan SM. Farouq Ali Tutuka Ariadji (12-18-96) Wirawan Widya Mandala (05-31-06) Djabaruddin (10-08-07) COMMON/SINGL1/X,THCOND,TS,TR,TI,NS,TIME,ALFA,RHOCR,RW,RE,H,STM COMMON/SINGL2/SGO,CPO,GOR,CPG,RHOW,WOR,QOHB,DT,PW,PE,PIC,DTIME COMMON/VISCO/NUO,TEMP(11),UO(11),UOCOLD COMMON/PARAM/ESFUNC,RH,HFT,HFS,HFR,HFG C Input Data NS = 16 CALL FILEDATA(STM,PIC,UOCOLD,TI,H,X,PINJ,RHOO,RHOW,SGO,CPO, &CPG,RHOCR,THCOND,ALFA,RW,RE,PW,PE,GOR,WOR,TR,DT,TTIME) P=PINJ*6.894757293/100. A1=99.66703174 A2=27.89734893 A3=2.35059677 A4=0.22273639 A5=0.0243995895 A6=0.000827534137 A7=-0.000160646649 TSC=A1+A2*ALOG(P)+A3*(ALOG(P))**2+A4*(ALOG(P))**3+A5*(ALOG(P))**4 &+A6*(ALOG(P))**5+A7*(ALOG(P))**6 TS=(9./5.)*TSC+32 CALL TIMED(TAU,TI,H,THCOND,RHOCR,NS) ESFUNC=ES(TAU) TIME=0. TOL=0.000001 TAVG=TS NTIME=INT(TTIME/DT) QOHB=0. TIME=TI DO 100 I=1,NTIME TIME=TIME+DT DTIME=I*DT HFT=HW(TAVG) HFS=HW(TS) HFR=HW(TR) HFG=HLATENT(TAVG) CALL HEATRAD(RH,H,STM,X,HFG,HFS,HFR,ESFUNC,THCOND,TS,TR,TI,NS) TEMPAVG=FUNCTEMP(TAVG) TAVG=TEMPAVG CALL VISCRATIO(UOR,UOCOLD,TAVG) CALL CONSTANTS(C1,C2,RH,RE,RW,RC,S) CALL PIRATIO(PIR,UOR,C1,C2) CALL OILRATE(QOH,PE,PW,PIR,PIC,TI,STM,DTIME) QOHB=QOH WRITE(*,*)TIME,QOH WRITE(6,1)TIME,QOH Djabaruddin, 12203042 Sem1 2007/2008 21
100 CONTINUE CLOSE(6) 1 FORMAT(F30.10,F30.10) STOP SUBROUTINE FILEDATA(STM,PIC,UOCOLD,TI,H,X,PINJ,RHOO,RHOW,SGO,CPO, &CPG,RHOCR,THCOND,ALFA,RW,RE,PW,PE,GOR,WOR,TR,DT,TTIME) CHARACTER*10 BUFF CHARACTER*20 FILENAME,OUTNAME REAL VALUE(24) COMMON/VISCO/NUO,TEMP(11),UO(11) WRITE(*,*)'INPUT FILENAME:?' READ(*,1)FILENAME OPEN(UNIT=5,FILE=FILENAME,STATUS='OLD') 1 FORMAT(A12) WRITE(*,*)'OUTPUT FILENAME:?' READ(*,2) OUTNAME OPEN(UNIT=6,FILE=OUTNAME,STATUS='REPLACE') 2 FORMAT(A12) WRITE(*,*)'INPUT FILE NAME:',FILENAME WRITE(*,*)'OUTPUT FILE NAME:',OUTNAME I=0 NDAT=24 DO 30 I=1,NDAT READ(5,15)BUFF,VALUE(I) 30 CONTINUE STM = VALUE(1) PIC = VALUE(2) UOCOLD = VALUE(3) TI = VALUE(4) H = VALUE(5) X = VALUE(6) PINJ = VALUE(7) RHOO = VALUE(8) RHOW = VALUE(9) SGO = VALUE(10) CPO = VALUE(11) CPG = VALUE(12) RHOCR = VALUE(13) THCOND = VALUE(14) ALFA = VALUE(15) RW = VALUE(16) RE = VALUE(17) PW = VALUE(18) PE = VALUE(19) GOR = VALUE(20) WOR = VALUE(21) TR = VALUE(22) DT = VALUE(23) TTIME = VALUE(24) READ(5,16)BUFF,NUO DO 40 I=1,NUO READ(5,*)TEMP(I),UO(I) 40 CONTINUE CLOSE(5) 15 FORMAT(A7,F30.10) 16 FORMAT(A7,I3) SUBROUTINE TIMED(TAU,TI,H,THCOND,RHOCR,NS) TAU=4*THCOND*TI/((H/NS)*(H/NS)*RHOCR) Djabaruddin, 12203042 Sem1 2007/2008 22
FUNCTION ES(TAU).Dimensionless Time for Fig.3 PI=3.141592654 RTTAU=SQRT(TAU) RTPI=SQRT(PI) ES=EXP(TAU)*ERFC(RTTAU)+(2/RTPI)*RTTAU-1. FUNCTION HW(TINPUT) T=TINPUT T=273.15+(T-32.)*5./9. A1=23665.2 A2=-366.232 A3=2.26952 A4=-0.00730365 A5=0.0000130241 A6=-0.0000000122103 A7=0.00000000000470878 HW=A1+A2*T+A3*T**2.+A4*T**3.+A5*T**4.+A6*T**5.+A7*T**6. HW = HW / 2.326 273.15K<=T<=645K FUNCTION HLATENT(TINPUT) T=TINPUT T=273.15+(T-32.)*5./9. A1=7184500. A2=11048.6 A3=-88.4050 A4=0.162561 A5=-0.000121377 HFGT=(A1+A2*T+A3*T**2.+A4*T**3.+A5*T**4.)**0.5 HLATENT=HFGT / 2.326 273.15K<=T<=645K SUBROUTINE HEATRAD(RH,H,STM,X,HFG,HFS,HFR,ESF,THCOND,TS,TR,TI,NS).Radius of region originally heated,ft PI=3.141592654 RH1=(H/NS)*STM*((X*HFG)+HFS-HFR)*ESF RH2=4*THCOND*PI*(TS-TR)*TI*NS RH=(RH1/RH2)**0.5 FUNCTION FUNCTEMP(TAVG) COMMON/SINGL1/X,THCOND,TS,TR,TI,NS,TIME,ALFA,RHOCR,RW,RE,H,STM COMMON/SINGL2/SGO,CPO,GOR,CPG,RHOW,WOR,QOHB,DT,PW,PE,PIC COMMON/PARAM/ESFUNC,RH,HFT,HFS,HFR,HFG & PI=3.141592654 CALL HYPOTHICK(Z,STM,X,HFG,HFS,HFR,PI,RH,RHOCR,TS,TR,NS,H) CALL THETA(THETAR,THETAZ,ALFA,TIME,TI,RH,Z) CALL VRVZMULT(VR,VZ,THETAR,THETAZ) CALL DELTA(TAVG,WOR,CPO,RHOW,SGO,GOR,CPG,TR,HFT,HFR,HFG,QOHB, RHOCR,TS,NS,TI,TIME,DT,PW,Z,RH,DLT,H,DLTA,STM,PIC,PE) FUNCTEMP = TR+(TS-TR)*(VR*VZ*(1.-DLT)-DLT) DLTA=DLT SUBROUTINE HYPOTHICK(Z,STM,X,HFG,HFS,HFR,PI,RH,RHOCR,TS,TR,NS,H) PI=3.141592564 Z=(STM*(X*HFG+HFS-HFR)/(PI*RH*RH*RHOCR*(TS-TR)*NS))-(H/NS) SUBROUTINE THETA(THETAR,THETAZ,ALFA,TIME,TI,RH,Z) Djabaruddin, 12203042 Sem1 2007/2008 23
THETAR=ALFA*(TIME-TI)/(RH*RH) THETAZ=ALFA*(TIME-TI)/(Z*Z) SUBROUTINE VRVZMULT(VR,VZ,THETAR,THETAZ) DIMENSION THETADAT(31),VRDAT(31),VZDAT(31) DATA THETADAT/0.0,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09, &0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.,2.,3.,4.,5.,6.,7.,8.,9., &10.,20.,30./ DATA VRDAT/1.,0.92,0.88,0.835,0.8,0.77,0.74,0.71,0.69,0.66,0.64, &0.51,0.425,0.375,0.31,0.28,0.25,0.22,0.2,0.19,0.09,0.06,0.04, &0.03,0.025,0.02,0.015,0.012,0.01,0.007,0.005/ DATA VZDAT/1.,0.95,0.925,0.9,0.88,0.87,0.86,0.85,0.84,0.83,0.82, &0.75,0.69,0.65,0.61,0.575,0.55,0.525,0.5,0.48,0.355,0.3,0.26, &0.23,0.22,0.2,0.19,0.18,0.17,0.12,0.08/ NDAT = 31 CALL LININT1(NDAT,THETADAT,VRDAT,THETAR,VR) CALL LININT1(NDAT,THETADAT,VZDAT,THETAZ,VZ) WRITE(6,*)vr,vz SUBROUTINE LININT1(NDAT,THETADAT,VDAT,THETA,V) For Asending Order of X-Data DIMENSION THETADAT(500),VDAT(500) DO 50 I=1,NDAT-1 IF((THETADAT(I+1)-THETA).GE.0)THEN V=VDAT(I)+((THETA-THETADAT(I))/(THETADAT(I+1)-THETADAT(I))) & *(VDAT(I+1)-VDAT(I)) GOTO 110 IF 50 CONTINUE 110 CONTINUE SUBROUTINE DELTA(TAVG,WOR,CPO,RHOW,SGO,GOR,CPG,TR,HFT,HFR,HFG,QOHB, & RHOCR,TS,NS,TI,TIME,DT,PW,Z,RH,DLT,H,DLTA,STM,PIC,PE) PI=3.141592564 TIMEO=TI+DT TIMER=TIME A1=-175.776 A2=2.29272 A3=-0.0113953 A4=0.000026278 A5=-2.73726E-08 A6=1.13816E-11 TAVG=((TAVG-32.)*5./9.)+273.15 PSAT=A1+A2*TAVG+A3*TAVG**2.+A4*TAVG**3.+A5*TAVG**4.+A6*TAVG**5. PWV=(PSAT**2.)/6.894757 RWA=WOR RWVS=0.0001356*(PWV/(PW-PWV))*GOR IF (TIMER.EQ.TIMEO)THEN RWV=RWA RWV1=RWVS IF IF (RWVS<RWA.AND.PWV>=PW)THEN RWV=RWA RWV=RWV1 IF HOG=(5.61*CPO*RHOW*SGO+GOR*CPG)*(TAVG-TR) HOW=5.61*RHOW*(WOR*(HFT-HFR)+RWV*HFG) Djabaruddin, 12203042 Sem1 2007/2008 24
HFSTAR=QOHB*(HOG+HOW) DNUMER=2*PI*RH*RH*RHOCR*(TS-TR)*(H+(NS*Z)) DLTE = DT*HFSTAR/DNUMER DLT=DLTA+DLTE SUBROUTINE LININT2(NUO,TEMP,UO,TEMPINP,UOH) DIMENSION TEMP(11),UO(11) DO 50 I=1,NUO IF (TEMPINP.GE.TEMP(I).AND.TEMPINP.LE.TEMP(I+1))THEN UOH=(TEMPINP-TEMP(I))*(UO(I+1)-UO(I))/(TEMP(I+1)-TEMP(I))+UO(I) GOTO 110 IF 50 CONTINUE 110 CONTINUE SUBROUTINE VISCRATIO(UOR,UOCOLD,TAVG) COMMON/VISCO/NUO,TEMP(11),UO(11) CALL LININT2(NUO,TEMP,UO,TAVG,UOH) UOR=UOH/UOCOLD SUBROUTINE CONSTANTS(C1,C2,RH,RE,RW,RC,S).Constants C1 and C2 from Table 1:.for pe deline S=5.1 RWA=RW*EXP(-S) C1=(ALOG(RH/RWA)-RH**2./(2*RE**2.))/(ALOG(RE/RWA)-0.5) C2=(ALOG(RE/RH)-0.5+RH**2./(2*RE**2.))/(ALOG(RE/RWA)-0.5) --for onstant pe C1=(S+ALOG(RH/RWA))/(S+ALOG(RE/RWA)) C2=ALOG(RE/RH)/(S+ALOG(RE/RWA)) SUBROUTINE PIRATIO(PIR,UOR,C1,C2) PIR=1./(UOR*C1+C2) SUBROUTINE OILRATE(QOH,PE,PW,PIR,PIC,TI,STM,DTIME) A= 45.59034*ALOG(1.9246-EXP(-(1533904.9/STM))) B= 69931245.92/STM C= 0.59512*TI TPEAK=93.8013-C-B-A IF (DTIME.LE.TPEAK) THEN QOH=(DTIME/TPEAK)*(PIR*PIC*(PE-PW)) QOH=PIR*PIC*(PE-PW) IF FUNCTION ERF(X) REAL ERF,X USES GAMMP REAL GAMMP IF(X.LT.0.)THEN ERF=-GAMMP(.5,X**2) ERF=GAMMP(.5,X**2) IF Djabaruddin, 12203042 Sem1 2007/2008 25
(C) Copr.1986-92 Numerial Reipes Software i]. FUNCTION ERFC(X) REAL ERFC,X USES GAMMP,GAMMQ REAL GAMMP,GAMMQ IF(X.LT.0.)THEN ERFC=1.+GAMMP(.5,X**2) ERFC=GAMMQ(.5,X**2) IF (C) Copr.1986-92 Numerial Reipes Software i]. FUNCTION GAMMP(A,X) REAL A,GAMMP,X USES GCF,GSER REAL GAMMCF,GAMSER,GLN IF(X.LT.0..OR.A.LE.0.)PAUSE 'Bad argument in GAMMP' IF(X.LT.A+1.)THEN CALL GSER(GAMSER,A,X,GLN) GAMMP=GAMSER CALL GCF(GAMMCF,A,X,GLN) GAMMP=1.-GAMMCF IF (C) Copr.1986-92 Numerial Reipes Software i]. FUNCTION GAMMQ(A,X) REAL A,GAMMQ,X USES GCF,GSER REAL GAMMCF,GAMSER,GLN IF(X.LT.0..OR.A.LE.0.)PAUSE 'Bad argument in GAMMQ' IF(X.LT.A+1.)THEN CALL GSER(GAMSER,A,X,GLN) GAMMQ=1.-GAMSER CALL GCF(GAMMCF,A,X,GLN) GAMMQ=GAMMCF IF (C) Copr.1986-92 Numerial Reipes Software i]. FUNCTION GAMMLN(XX) REAL GAMMLN,XX INTEGER J DOUBLE PRECISION SER,STP,TMP,X,Y,COF(6) SAVE COF,STP DATA COF,STP/76.18009172947146D0,-86.50532032941677D0, & 24.01409824083091D0,-1.231739572450155D0,0.1208650973866179D-2, &-0.5395239384953D-5,2.5066282746310005D0/ X=XX Y=X TMP=X+5.5D0 TMP=(X+0.5D0)*LOG(TMP)-TMP SER=1.000000000190015D0 DO 11 J=1,6 Y=Y+1.D0 SER=SER+COF(J)/Y 11 CONTINUE GAMMLN=TMP+LOG(STP*SER/X) (C) Copr.1986-92 Numerial Reipes Software i]. Djabaruddin, 12203042 Sem1 2007/2008 26
SUBROUTINE GCF(GAMMCF,A,X,GLN) INTEGER ITMAX REAL A,GAMMCF,GLN,X,EPS,FPMIN PARAMETER (ITMAX=100,EPS=3.E-7,FPMIN=1.E-30) USES GAMMLN INTEGER I REAL AN,B,C,D,DEL,H,GAMMLN GLN=GAMMLN(A) B=X+1.-A C=1./FPMIN D=1./B H=D DO 11 I=1,ITMAX AN=-I*(I-A) B=B+2. D=AN*D+B IF(ABS(D).LT.FPMIN)D=FPMIN C=B+AN/C IF(ABS(C).LT.FPMIN)C=FPMIN D=1./D DEL=D*C H=H*DEL IF(ABS(DEL-1.).LT.EPS)GOTO 1 11 CONTINUE PAUSE 'A too large, ITMAX too small in GCF' 1 GAMMCF=EXP(-X+A*LOG(X)-GLN)*H (C) Copr.1986-92 Numerial Reipes Software i]. SUBROUTINE GSER(GAMSER,A,X,GLN) INTEGER ITMAX REAL A,GAMSER,GLN,X,EPS PARAMETER (ITMAX=100,EPS=3.E-7) USES GAMMLN INTEGER N REAL AP,DEL,SUM,GAMMLN GLN=GAMMLN(A) IF(X.LE.0.)THEN IF(X.LT.0.)PAUSE 'X<0 in GSER' GAMSER=0. IF AP=A SUM=1./A DEL=SUM DO 11 N=1,ITMAX AP=AP+1. DEL=DEL*X/AP SUM=SUM+DEL IF(ABS(DEL).LT.ABS(SUM)*EPS)GOTO 1 11 CONTINUE PAUSE 'A too large, ITMAX too small in GSER' 1 GAMSER=SUM*EXP(-X+A*LOG(X)-GLN) (C) Copr.1986-92 Numerial Reipes Software i]. Djabaruddin, 12203042 Sem1 2007/2008 27