Sei sulla pagina 1di 4

Coluna de destilao

Algortimo sem perturbao

Program colunadestil
Implicit real*8 (a-h,m-z)
dimension T(20), X(20), XM(20), XL(20), XMo(20), Y(20) , Dm(20), dx(20)
open(unit=5,file='dadosdest',status = 'unknown')
!Condies Iniciais
XM(1)=10
XM(8)=15
R=50
v=100
f=100
D=50
B=F-D
Delta = 0.01
time=0
do i=2,7
XMo(i)=5
enddo
do i=2,4
XM(i)=10
enddo
do i=5,7
XM(i)=20
enddo
xf=0.5
do i=2,4
XL(i)=50
enddo
do i=5,7
XL(i)=150
enddo
do i=2,8
T(i)=300
enddo
x(1)=0.98
x(2)=0.96
x(3)=0.88
x(4)=0.74
x(5)=0.66
x(6)=0.45

x(7)=0.22
x(8)=0.12
do j = 1,2800
!Calculo do ponto de bolha
do i=2,7
XL(i)= (XM(i)-XMo(i))/0.1
write (*,*) XL(i), 'XL(i)'
enddo
!Calculo do ponto de bolha
do i=2,8
call pbolha (x(i),T(i),y(i))
enddo
!Avalaiao das derivadas (Retido molar, composio)
Dm(1) = v-d-r ! Dm= retido
Dm(2) = r-xl(2) !Bandeja do topo
do i = 3,4
Dm(i) = xl(i-1)-xl(i) !Bandeja n
enddo
!Prato de alimentao
Dm(5) = f+xl(4)-xl(5)
do i = 6,7
Dm(i) = xl(i-1)-xl(i)
enddo
!Retido na base da coluna
Dm(8) = xl(7)-b-v
!Equacoes para os componentes
!Para o componente no tambor de refluxo
dx(1) = (v*y(1)-r*x(1)-d*x(1))/XM(1)
dx(2) = (r*x(1)+v*y(3)-v*y(2)-xl(2)*x(2))/XM(2) !Bandeja do topo
do i = 3,4
dx(i) = (x(i-1)*xl(i-1)-x(i)*xl(i)+v*y(i+1)-v*y(i))/XM(i)

enddo
!Prato de alimentao
dx(5) = (f*xf+xl(4)*x(4)-xl(5)*x(5)-v*y(5)+v*y(6))/XM(5)
do i = 6,7
dx(i) = (x(i-1)*xl(i-1)-x(i)*xl(i)+v*y(i+1)-v*y(i))/XM(i)
enddo
!Retido na base da coluna
dx(8) = (xl(7)*x(7)-b*x(8)-v*y(8))/xm(8)
!Avaliao das integrais
do i = 1,8
x(i) = x(i) + dx(i)*Delta
XM(i)= XM(i) + Delta*Dm(i)
enddo
write(5,30)time,x(2),t(2)
30 format(2x,f8.3,2x,f9.5,2x,f8.3)

time=time+delta
enddo
stop
end

subroutine pbolha(x,T,y)
Implicit real*8 (a-h,m-z)
a1=8
b1=300
a2=7.0
b2=300
P=800
e=0.001
!write(*,*) x,t
do i=1,50

P1sat=exp((a1-(b1/t)))
P2sat=exp((a2-(b2/t)))
Pcalc=P1sat*x+P2sat*(1-x)
ft=Pcalc-P
dt=x*P1sat*b1/(T**2)+(1-x)*P2sat*b2/(T**2)
if(abs(P-Pcalc).le.e) then
y=x*P1sat/pcalc
write(*,*) T,i,y
return
else
T=T-ft/dt
endif
enddo
stop
end

Potrebbero piacerti anche