You are on page 1of 10

PROGRAM PROG72

! Calculo de flash en equilibrio


!

DIMENSION C(15),V(15),X1(15),Y1(15)
REAL K(15),L1,L(15),M(15),N(15)

COMMON/DATA1/NUM,T,P,M,K
COMMON/DATA2/ADD1,ADD2,ADD3

OPEN (UNIT=3, FILE="DATA72.DAT", STATUS="OLD",ERR=18)


OPEN (UNIT=1, FILE="PRN")

C READ FLASH TEMPERATURA, oF =T


C READ FLASH PRESION, psia =P
C READ NUMERO DE COMPONENTES =NUM
C READ ENTRADA Y CONSTANTES DE EQUILIBRIO DE LOS COMPONENTES
=M,K

READ (3,*,ERR=19)T
READ (3,*,ERR=19)P
READ (3,*,ERR=19)NUM

DO I=1,NUM
READ (3,*,ERR=19)M(I),K(I)
END DO

GO TO 10

18 WRITE (*,100)
100 FORMAT (5X,"DATA FILE DOES NO EXIST")

GO TO 999

19 WRITE (*,110)
110 FORMAT (5X,"ERROR MESSAGE IN THE DATA VALUE")

GO TO 999

10 WRITE (1,120)
120 FORMAT(//,20X,"MULTICOMPONENT EQUILIBRIUM FLASH
CALCULATIONS")

SUM=0.0

DO I=1,NUM
SUM=SUM+M(I)

END DO

C CALCULO DE LAS FRACCIONES DE LOS COMPONENTES EN LA LINEA DE


ENTRADA

DO I=1,NUM
N(I)=M(I)/SUM
END DO

TOTAL=0.0

DO I=1,NUM
TOTAL=TOTAL+N(I)
END DO

C CHECK WEATHER THE FEED IS ALL LIQUID OR VAPOR

SUM1=0.0

DO I1=1,NUM
SUM1=SUM1+N(I1)*K(I1)
END DO

IF(SUM1.GT.1.0) THEN
GO TO 60

ELSE
GO TO 1000
ENDIF

C GUESS R=L/V

60 R=1.0
65 SUM3=0.0

DO I3=1,NUM
C(I3)=(M(I3)*(K(I3)-1.0)*(R+1.0))/(K(I3)+R)
END DO

C CALCULO DE LAS CONSTATES E Y E USADO POR XOSTECKE

E=0.0
F=0.0

DO I4=1,NUM

E=E+C(I4)
F=F+(C(I4)**2/M(I4))
END DO

C CALCULO DE R1, EL R/L NUEVO RATIO

R1=ABS((F*R-E*(R+1.0))/(F+E*(R+1.0)))
IF ( ABS(E).LT.0.001) THEN
GO TO 90
ELSE
R=R1
GO TO 65
ENDIF

90 L1=0.0
V1=0.0

DO I5=1,NUM
L(I5)=(M(I5)*R1)/(K(I5)+R1)
V(I5)=M(I5)-L(I5)
L1=L1+L(I5)
V1=V1+V(I5)
END DO

C CALCULO DE LA FRACCION X EN LA FAE LIQUIDA Y LA FRACCION Y DE


VAPOR

VAL1=0.0
VAL2=0.0
VAL3=0.0

DO I6=1,NUM
VAL1=VAL1+L(I6)
VAL2=VAL2+M(I6)
VAL3=VAL3+V(I6)
END DO

C CALCULO DE LA FRACCION MOL EN LA FASE LIQUIDO Y VAPOR


C
DO I=1,NUM
X1(I)=L(I)/VAL1
Y1(I)=V(I)/VAL3
END DO

C CALCULO DE LA FRACCION MOL TOTAL EN LA FASE LIQUIDA Y VAPOR


C
ADD1=0.0
ADD2=0.0
ADD3=0.0

DO I=1,NUM
ADD1=ADD1+X1(I)
ADD2=ADD2+N(I)
ADD3=ADD3+Y1(I)
END DO

C
C PRINT THE RESULTS ON THE SCREEN
C
CALL OUTPUT(N,L,X1,V,Y1,VAL1,VAL2,VAL3)

C PRINT THE RESULTS ONTO THE PRINTER

CALL PAPER (N,L,X1,V,Y1,VAL1,VAL2,VAL3)

GO TO 999

900 WRITE (*,300)


300 FORMAT (3X,"TE FEED COMPOSITION IS ALL LIQUID")

GO TO 999

1000 WRITE (*,400)


400 FORMAT(3X,"THE FEED COMPOSITION IS ALL VAPOR")

CLOSE (UNIT=3, STATUS="KEEP")


CLOSE (UNIT=1)

999 STOP
END

C
C**************************************************
C THIS THE PROGAM OUTPUTS THE RESULTS ON THE SCREEN
C**************************************************
C
C

SUBROUTINE OUTPUT (N,L,X1,V,Y1,VAL1,VAL2,VAL3)


DIMENSION X1(15),Y1(15),V(15)
REAL K(15),M(15),N(15),L(15)

COMMON/DATA1/NUM,T,P,M,K

COMMON/DATA2/ADD1,ADD2,ADD3

WRITE(*,130)
130 FORMAT(2X,"CALCULO FLASH EN EQUILIBRIO MULTICOMPONENTES")

WRITE(*,140)T,P
140 FORMAT(F6.1,1X,"DEG.F",1X,"AND",1X,F6.1,1X,"PSIA")

WRITE(*,150)
150 FORMAT(79(1H*))

WRITE(*,160)
160 FORMAT(/,1X,"COMPONENTE",1X,"VALOR DE
K",6X,"FEED",16X,"LIQUIDO",LINEA)

WRITE(*,170)
170 FORMAT(15X,"VAPOR")

WRITE(*,180)
180 FORMAT(/,1X,"NUMERO",12X,"MOL/h",2X,"FRACCION
MOL",2X,"MOL/h",LINEA)

WRITE(*,190)
190 FORMAT(2X,"FRACCION MOL",2X,"MOL/h",2X,"FRACCION MOL")

WRITE(*,200)
200 FORMAT(78,(1H-))

DO I=1,NUM
WRITE (*,210) I,K(I),M(I),N(I),L(I),X1(I),V(I)
210 FORMAT (1X,I2,5X,F5.3,2X,F9.3,2X,F8.3,3X,F9.3,2X,F8.3,2X,F9.3LINEA)

WRITE(*,220)Y1(I)
220 FORMAT(2X,F8.3)
END DO

WRITE(*,230)
230 FORMAT(78,(1H-))

WRITE(*,240)VAL2,ADD2,VAL1,ADD1
240 FORMAT(2X,"TOTALES",7X,F9.3,5X,F5.3,3X,F9.3,5X,F5.3,LINEA)

WRITE(*,250)VAL3,ADD3
250 FORMAT(2X,F9.3,5X,F5.3)

WRITE(*,260)
260 FORMAT(78,(1H-))

RETURN
END

C
C**************************************************
C THIS PROGRAMS PRINTS THE RESULTS ONTO THE PRINTER
C**************************************************
C
C

SUBROUTINE PAPER(N,L,X1,V,Y1,VAL1,VAL2,VAL3)

DIMENSION V(15),X(15),Y1(15)
REAL K(15),L(15),M(15),N(15)

COMMON/DATA1/NUM,T,P,M,K
COMMON/DATA2/ADD1,ADD2,ADD3

WRITE(1,270)
270 FORMAT(/,"CALCULO FLASH PARA MULTICOMPONENTES EN
EQUILIBRO",LINEA)

WRITE(1,280)T,P
280 FORMAT(F6.1,1X,"DEG.F",1X,"AND",1X,F6.1,1X,"PSIA")

WRITE(1,290)
290 FORMAT(80(1H*))

WRITE(1,300)
300 FORMAT(/,1X,"COMPONENTE",1X,"VALOR DE
K",6X,"FEED",16X,"LIQUIDO",LINEA)

WRITE(1,310)
310 FORMAT(15X,"VAPOR")

WRITE(1,320)
320 FORMAT(1X,"NUMERO",12X,"MOL/h",2X,"FRACCION
MOL",2X,"MOL/h",LINEA)

WRITE(1,330)
330 FORMAT(2X,"FRACCION MOL",2X,"MOL/h",2X,"FRACCION MOL")

WRITE(1,340)
340 FORMAT(80(1H-))

DO I=1,NUM
WRITE(1,350)I,K(I),M(I),N(I),L(I),X1(I),V(I)
350 FORMAT(1X,I2,5X,F5.3,2X,F9.3,2X,F8.3,3X,F9.3,2X,F8.3,2X,F9.3,LINEA)

WRITE(1,360)Y1(I)
360 FORMAT(2X,F8.3)
END DO

WRITE(1,370)
370 FORMAT(80(1H-))

WRITE(1,380)VAL2,ADD2,VAL1,ADD1
380 FORMAT(2X,"TOTALES",7X,F9.3,5X,F5.3,3X,F9.3,5X,F5.3,LINEA)

WRITE(1,390)VAL3,ADD3
390 FORMAT(2X,F9.3,5X,F5.3)

WRITE(1,400)
400 FORMAT(80(1H-))

C FORM FEED THE PRITING PAPER ON TOP OF THE NEXT PAGE.

WRITE(1,*) CHAR(12)

RETURN

END

You might also like