FORTRAN77 Code - Thermal-Hydraulics of Single Phase Flow in a Heated Channel

7
E:\MAIN.F Wednesday, January 05, 2011 2:26 PM C This code solves a single phase, single heated channel problem C Complete explanation and source code are available on http://wp.me/p61TQ-w8 C Last modified: August 2010 PROGRAM MAIN IMPLICIT REAL*8 (A-H,O-Z) PARAMETER(LMAXX=1000) DIMENSION T(LMAXX),P(LMAXX),QLIN(LMAXX),Z(LMAXX),XMU(LMAXX) & ,RE(LMAXX),FRICF(LMAXX),ITERT(LMAXX),ITERP(LMAXX) PHI = 3.14159265D0 ITERMAX=20 IRED=11 IPRN=12 C INPUT ************************************************************ C ZPIPE=1.0D0 !PIPE LENGTH [M] C DH=0.05D0 !PIPE DIAM [M] C XMFLUX=100.0D0 !MASS FLUX [KG/M2.S] C T(1)=628.0D0 !INLET TEMPEARTURE [K] C P(1)=1.0D+5 !INLET PRESSURE [P] C LMAX=100 C QLINAV=2.5D+5 ! AVERAGE LINEAR HEAT RATE [W/M] C IQSHAPE=2 !POWER PROFILE, 1=LINEAR, 2=COSINE READ(IRED,*) ZPIPE READ(IRED,*) DH READ(IRED,*) XMFLUX READ(IRED,*) T(1) READ(IRED,*) P(1) READ(IRED,*) LMAX READ(IRED,*) QLINAV READ(IRED,*) IQSHAPE AFLOW=0.25D0*PHI*DH*DH !FLOW AREA [M2] XMU(1)=VISCOS(T(1)) RE(1)=XMFLUX*DH/XMU(1) XMDOT=XMFLUX*AFLOW IF (RE(1)<2100.0D0) THEN FRICF(1)=64.0D0/RE(1) ELSE FRICF(1)=0.316D0*RE(1)**(-0.25D0) END IF DZ=ZPIPE/LMAX !MESH SIZE Z(1)=DZ/2.0D0 DO J=2,LMAX Z(J)=Z(J-1)+DZ END DO IF (IQSHAPE.EQ.1) THEN C LINEAR POWER PROFILE DO J=1,LMAX QLIN(J)=QLINAV END DO -1-

Transcript of FORTRAN77 Code - Thermal-Hydraulics of Single Phase Flow in a Heated Channel

Page 1: FORTRAN77 Code - Thermal-Hydraulics of Single Phase Flow in a Heated Channel

E:\MAIN.F Wednesday, January 05, 2011 2:26 PM

C This code solves a single phase, single heated channel problemC Complete explanation and source code are available on http://wp.me/p61TQ-w8C Last modified: August 2010

PROGRAM MAINIMPLICIT REAL*8 (A-H,O-Z)

PARAMETER(LMAXX=1000)DIMENSION T(LMAXX),P(LMAXX),QLIN(LMAXX),Z(LMAXX),XMU(LMAXX)& ,RE(LMAXX),FRICF(LMAXX),ITERT(LMAXX),ITERP(LMAXX)

PHI = 3.14159265D0ITERMAX=20IRED=11IPRN=12

C INPUT ************************************************************C ZPIPE=1.0D0 !PIPE LENGTH [M]C DH=0.05D0 !PIPE DIAM [M]C XMFLUX=100.0D0 !MASS FLUX [KG/M2.S]C T(1)=628.0D0 !INLET TEMPEARTURE [K]C P(1)=1.0D+5 !INLET PRESSURE [P]C LMAX=100C QLINAV=2.5D+5 ! AVERAGE LINEAR HEAT RATE [W/M]C IQSHAPE=2 !POWER PROFILE, 1=LINEAR, 2=COSINE

READ(IRED,*) ZPIPEREAD(IRED,*) DHREAD(IRED,*) XMFLUXREAD(IRED,*) T(1)READ(IRED,*) P(1)READ(IRED,*) LMAXREAD(IRED,*) QLINAVREAD(IRED,*) IQSHAPE

AFLOW=0.25D0*PHI*DH*DH !FLOW AREA [M2]XMU(1)=VISCOS(T(1))RE(1)=XMFLUX*DH/XMU(1)XMDOT=XMFLUX*AFLOW

IF (RE(1)<2100.0D0) THENFRICF(1)=64.0D0/RE(1)ELSEFRICF(1)=0.316D0*RE(1)**(-0.25D0)END IF

DZ=ZPIPE/LMAX !MESH SIZEZ(1)=DZ/2.0D0DO J=2,LMAXZ(J)=Z(J-1)+DZEND DO

IF (IQSHAPE.EQ.1) THENC LINEAR POWER PROFILE

DO J=1,LMAXQLIN(J)=QLINAVEND DO

-1-

Page 2: FORTRAN77 Code - Thermal-Hydraulics of Single Phase Flow in a Heated Channel

E:\MAIN.F Wednesday, January 05, 2011 2:26 PM

ELSEC COSINE POWER PROFILE

DO J=1,LMAXQLIN(J)=0.5D0*PHI*QLINAV*DSIN(Z(J)*PHI/ZPIPE)END DOEND IF

C CALCULATE TOTAL POWERQTOT=0.0D0DO J=1,LMAXQTOT=QTOT+QLIN(J)*DZEND DO

EPS1=1.0D-5 !CONVERGENCE CRITERION FOR ENERGYEPS2=1.0D-5 !CONVERGENCE CRITERION FOR MOMENTUM

BOILS=0JBOIL=LMAXITERT(1)=0ITERP(1)=0

C MARCHING FROM BOTTOM TO TOPDO J=1,LMAX-1

C NEWTON-RAPHSON ITERATION FOR TEMPERATURETOLD=T(J)TNEW=TOLDEPS=1.0D0ITER=0

DO WHILE ((EPS.GT.EPS1).AND.(ITER.LE.ITERMAX))TNEW=TOLD-FE(T(J),T(J+1),QLIN(J),QLIN(J+1),Z(J),Z(J+1),XMDOT)

& /DFEDT(T(J),T(J+1),QLIN(J),QLIN(J+1),Z(J),Z(J+1),XMDOT)EPS=DABS((TNEW-TOLD)/TNEW)TOLD=TNEW !UPDATET(J+1)=TNEWITER=ITER+1END DO

T(J+1)=TNEWITERT(J+1)=ITER

C WRITE(*,*) 'ENERGY :',ITER

C VISCOSITYXMU(J+1)=VISCOS(T(J+1))

C REYNOLDS NUMBERRE(J+1)=XMFLUX*DH/XMU(J+1)

C FRICTION FACTORIF (RE(J+1)<2100.0D0) THENFRICF(J+1)=64.0D0/RE(J+1)ELSEFRICF(J+1)=0.316D0*RE(J+1)**(-0.25D0)END IF

C NEWTON-RAPHSON ITERATION FOR PRESSUREPOLD=P(J)PNEW=POLDEPS=1.0D0ITER=0

DO WHILE ((EPS.GT.EPS2).AND.(ITER.LE.ITERMAX))

-2-

Page 3: FORTRAN77 Code - Thermal-Hydraulics of Single Phase Flow in a Heated Channel

E:\MAIN.F Wednesday, January 05, 2011 2:26 PM

PNEW=POLD-FK(T(J),T(J+1),P(J),P(J+1),FRICF(J),FRICF(J+1),Z(J)& ,Z(J+1),XMFLUX,DH)/DFKDP(T(J),T(J+1),P(J),P(J+1),FRICF(J)& ,FRICF(J+1),Z(J),Z(J+1),XMFLUX,DH)

EPS=DABS((PNEW-POLD)/PNEW)POLD=PNEW !UPDATEP(J+1)=PNEWITER=ITER+1END DO

P(J+1)=PNEWITERP(J+1)=ITER

C WRITE(*,*) 'MOMENTUM :',ITER

C CHECK FOR BOILINGIF (T(J+1).GE.TSAT(P(J+1))) THENBOILS=1JBOIL=JGOTO 50END IF

END DO !MARCHING UPWARD

50 CONTINUE

C AVERAGE NUMBER OF ITERATIONXITERT=0.0D0XITERP=0.0D0DO J=2,JBOILXITERT=XITERT+ITERT(J)XITERP=XITERP+ITERP(J)END DOXITERT=XITERT/(JBOIL-1)XITERP=XITERP/(JBOIL-1)

WRITE(IPRN,100)WRITE(IPRN,200) T(1)WRITE(IPRN,300) P(1)WRITE(IPRN,400) XMFLUXWRITE(IPRN,500) DHWRITE(IPRN,600) ZPIPEWRITE(IPRN,700) LMAXWRITE(IPRN,800) QLINAVIF (IQSHAPE.EQ.1) THENWRITE(IPRN,900)ELSEWRITE(IPRN,1000)END IFWRITE(IPRN,1100) AFLOWWRITE(IPRN,1200) QTOTWRITE(IPRN,1300) XMDOTWRITE(IPRN,1400)WRITE(IPRN,1410) (T(JBOIL)-T(1))WRITE(IPRN,1420) (P(JBOIL)-P(1))WRITE(IPRN,1430) 100.0D0*(RHO(T(JBOIL),P(JBOIL))-RHO(T(1),P(1)))& /RHO(T(1),P(1))

IF (BOILS.EQ.0) THENWRITE(IPRN,1440)ELSE

-3-

Page 4: FORTRAN77 Code - Thermal-Hydraulics of Single Phase Flow in a Heated Channel

E:\MAIN.F Wednesday, January 05, 2011 2:26 PM

WRITE(IPRN,1450) Z(JBOIL+1)END IFWRITE(IPRN,1460) XITERTWRITE(IPRN,1470) XITERPWRITE(IPRN,1475)WRITE(IPRN,1500)DO J=1,JBOILWRITE(IPRN,1600) J,Z(J),QLIN(J),P(J),T(J),TSAT(P(J)),RE(J),XMU(J)& ,HEATCAP(T(J)),FRICF(J),ITERT(J),ITERP(J)

END DOWRITE(IPRN,1550)IF (BOILS.EQ.1) WRITE(IPRN,1700)WRITE(IPRN,2000)

100 FORMAT('0',10X,'INPUT DATA')200 FORMAT(/'Inlet temperature [K] = ',F12.3)300 FORMAT( 'Inlet pressure [Pa] = ',F12.3)400 FORMAT( 'Mass flux [kg/m2.s] = ',F12.3)500 FORMAT( 'Pipe diameter [m] = ',F12.3)600 FORMAT( 'Pipe length [m] = ',F12.3)700 FORMAT( 'Axial mesh = ',I12)800 FORMAT( 'Average linear heat rate [W/m] = ',E12.4)900 FORMAT( 'Power profile = LINEAR')

1000 FORMAT( 'Power profile = COSINE')1100 FORMAT(/'Flow area [m2] = ',E12.4)1200 FORMAT( 'Total power [W] = ',E12.4)1300 FORMAT( 'Mass flow rate [kg/s] = ',F12.3)1400 FORMAT(//'0',10X,'RESULTS')1410 FORMAT(/'TEMPERATURE CHANGE [K] = ',F12.3)1420 FORMAT( 'PRESSURE CHANGE [Pa] = ',F12.3)1430 FORMAT( 'DENSITY CHANGE [%] = ',F12.3)1440 FORMAT(/'SATURATED : NO')1450 FORMAT(/'SATURATED : YES, STARTS FROM Z[m] = ',F12.3)1460 FORMAT( 'AVERAGE ITERATION FOR ENERGY EQ. = ',F12.3)1470 FORMAT( 'AVERAGE ITERATION FOR MOMENTUM EQ. = ',F12.3)1475 FORMAT(//'0',10X,'OUTPUT DATA')1500 FORMAT(/' J Z[m] QLIN[W/m] P[Pa] T[K] & TSAT[K] RE MU[kg/m.s] CP[J/kg.K] FRICF ITER_T&ITER_P')

1550 FORMAT( ' J Z[m] QLIN[W/m] P[Pa] T[K] & TSAT[K] RE MU[kg/m.s] CP[J/kg.K] FRICF ITER_T&ITER_P')

1600 FORMAT(I5,9E12.4,2I8)1700 FORMAT(/'0',10X,'*** SATURATION TEMPERATURE IS REACHED ***')2000 FORMAT(/'0',10X,'*** END ***')

STOPEND

C ******************************************************************REAL*8 FUNCTION FE(TI,TIP1,QI,QIP1,ZI,ZIP1,XMDOT)

C THE ENERGY FUNCTIONC ******************************************************************

IMPLICIT REAL*8 (A-H,O-Z)

DATA A0, A1, A2/ 1630.22D0,-0.83354D0,4.62838D-04/

-4-

Page 5: FORTRAN77 Code - Thermal-Hydraulics of Single Phase Flow in a Heated Channel

E:\MAIN.F Wednesday, January 05, 2011 2:26 PM

B0=-2.0D0*A0*TI-A1*TI*TI-A2*TI*TI*TI-(QI+QIP1)*(ZIP1-ZI)/XMDOTB1=2.0D0*A0+A2*TI*TIB2=A1-A2*TIB3=A2

FE=B0+B1*TIP1+B2*TIP1*TIP1+B3*TIP1*TIP1*TIP1

RETURNEND

C ******************************************************************REAL*8 FUNCTION DFEDT(TI,TIP1,QI,QIP1,ZI,ZIP1,XMDOT)

C DERIVATIVE OF THE ENERGY FUNCTIONC ******************************************************************

IMPLICIT REAL*8 (A-H,O-Z)

DATA A0, A1, A2/ 1630.22D0,-0.83354D0,4.62838D-04/

B0=-2.0D0*A0*TI-A1*TI*TI-A2*TI*TI*TI-(QI+QIP1)*(ZIP1-ZI)/XMDOTB1=2.0D0*A0+A2*TI*TIB2=A1-A2*TIB3=A2

DFEDT=B1+2.0D0*B2*TIP1+3.0D0*B3*TIP1*TIP1

RETURNEND

C ******************************************************************REAL*8 FUNCTION FK(TI,TIP1,PI,PIP1,FRICI,FRICIP1,ZI,ZIP1,XMFLUX& ,DH)

C THE MOMENTUM FUNCTIONC ******************************************************************

IMPLICIT REAL*8 (A-H,O-Z)DATA A0,A1,A2,A3,A4/ 1011.597D0,-0.22051D0,-1.92243D-5,5.63769D-9,& 2.26D-7/GRAV=9.8D0 !GRAVITATIONAL ACCELERATIONDZ=ZIP1-ZI

ALPHA1=A0+A1*TIP1+A2*TIP1*TIP1+A3*TIP1*TIP1*TIP1ALPHA2=A4

B0=XMFLUX*DABS(XMFLUX)*DZ*FRICI/(4.0D0*DH*RHO(TI,PI))+0.5D0*GRAV& *DZ*(RHO(TI,PI)+ALPHA1)-XMFLUX*XMFLUX/RHO(TI,PI)-PIB1=0.5D0*GRAV*DZ*ALPHA2+1.0D0B2=0.25D0*XMFLUX*DABS(XMFLUX)*DZ*FRICIP1/DH+XMFLUX*XMFLUX

FK=B0+B1*PIP1+B2*(ALPHA1+ALPHA2*PIP1)**(-1.0D0)

RETURNEND

C ******************************************************************REAL*8 FUNCTION DFKDP(TI,TIP1,PI,PIP1,FRICI,FRICIP1,ZI,ZIP1,XMFLUX& ,DH)

C DERIVATIVE OF THE MOMENTUM FUNCTIONC ******************************************************************

-5-

Page 6: FORTRAN77 Code - Thermal-Hydraulics of Single Phase Flow in a Heated Channel

E:\MAIN.F Wednesday, January 05, 2011 2:26 PM

IMPLICIT REAL*8 (A-H,O-Z)DATA A0,A1,A2,A3,A4/ 1011.597D0,-0.22051D0,-1.92243D-5,5.63769D-9,& 2.26D-7/GRAV=9.8D0 !GRAVITATIONAL ACCELERATIONDZ=ZIP1-ZI

ALPHA1=A0+A1*TIP1+A2*TIP1*TIP1+A3*TIP1*TIP1*TIP1ALPHA2=A4

B0=XMFLUX*DABS(XMFLUX)*DZ*FRICI/(4.0D0*DH*RHO(TI,PI))+0.5D0*GRAV& *DZ*(RHO(TI,PI)+ALPHA1)-XMFLUX*XMFLUX/RHO(TI,PI)-PIB1=0.5D0*GRAV*DZ*ALPHA2+1.0D0B2=0.25D0*XMFLUX*DABS(XMFLUX)*DZ*FRICIP1/DH+XMFLUX*XMFLUX

DFKDP=B1+B2*ALPHA2*(ALPHA1+ALPHA2*PIP1)**(-2.0D0)

RETURNEND

C ******************************************************************REAL*8 FUNCTION RHO(T,P)

C EQ OF STATE: DENSITYC ******************************************************************

IMPLICIT REAL*8 (A-H,O-Z)DATA A0,A1,A2,A3,A4/ 1011.597D0,-0.22051D0,-1.92243D-5,5.63769D-9,& 2.26D-7/RHO=A0+A1*T+A2*T*T+A3*T*T*T+A4*PRETURNEND

C ******************************************************************REAL*8 FUNCTION HEATCAP(T)

C EQ OF STATE: SPECIFIC HEAT CAPACITYC ******************************************************************

IMPLICIT REAL*8 (A-H,O-Z)DATA A0,A1,A2/ 1630.22D0,-0.83354D0,4.62838D-4/HEATCAP=A0+A1*T+A2*T*TRETURNEND

C ******************************************************************REAL*8 FUNCTION VISCOS(T)

C EQ OF STATE: DYNAMIC VISCOSITYC ******************************************************************

IMPLICIT REAL*8 (A-H,O-Z)ALPHA=-2.4892D0+220.65D0/T-0.4925D0*DLOG10(T)VISCOS=10.0D0**ALPHARETURNEND

C ******************************************************************REAL*8 FUNCTION TSAT(P)

C EQ OF STATE: SATURATION TEMPERATUREC ******************************************************************

IMPLICIT REAL*8 (A-H,O-Z)ALPHA=DLOG(P*9.869D-6)-10.51D0

-6-

Page 7: FORTRAN77 Code - Thermal-Hydraulics of Single Phase Flow in a Heated Channel

E:\MAIN.F Wednesday, January 05, 2011 2:26 PM

TSAT=-12130.0D0/ALPHARETURNEND

-7-