27.07.2013 Views

Design og modellering af metanolanlæg til VEnzin-visionen Bilag

Design og modellering af metanolanlæg til VEnzin-visionen Bilag

Design og modellering af metanolanlæg til VEnzin-visionen Bilag

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

methanol.for<br />

d:/DTU/Eksamensprojekt/bilag/<br />

elseif(abs(domega).gt.abs(omega_old*.0025)) then<br />

if(abs(dtau).gt.abs(tau_old*.0025)) tau_new=tau_old<br />

$ +dtau/abs(dtau)*tau_old*.0025*abs(1.d0<br />

$ −tau_new/tau_old)/abs(1.d0−tau_new/tau_old)<br />

$ /factor<br />

omega_new=omega_old+domega/abs(domega)*omega_old<br />

$ *.0025/factor<br />

endif<br />

else<br />

if ((abs(dtau)).gt.(abs(tau_old*.05))) tau_new<br />

$ =tau_old+dtau/abs(dtau)*tau_old*.05<br />

if ((abs(domega)).gt.(abs(omega_old*.05)))<br />

$ omega_new=omega_old+domega/abs(domega)*omega_old*.05<br />

endif<br />

else<br />

if ((abs(dtau)).gt.(abs(tau_old*.2/factor))) tau_new<br />

$ =tau_old+dtau/abs(dtau)*tau_old*.2/factor<br />

if (domega.lt.(−(omega_old*.9/factor))) then<br />

omega_new=omega_old−omega_old*.9/factor<br />

elseif (domega.gt.(omega_old*9/factor)) then<br />

omega_new=omega_old+omega_old*9/factor<br />

else<br />

omega_new=omega_old+domega<br />

endif<br />

endif<br />

call calculate(f1_new_omega,tau_old,omega_new,in1)<br />

call calculate(f1_new_tau,tau_new,omega_old,in1)<br />

call calculate(f2_new_omega,tau_old,omega_new,in2)<br />

call calculate(f2_new_tau,tau_new,omega_old,in2)<br />

f1_old=f1_new<br />

f2_old=f2_new<br />

i=i+1<br />

goto 5<br />

else<br />

goto 10<br />

endif<br />

10 if (.not.found) then<br />

error=5<br />

c if (fiters) print*<br />

c $ ,’Warning: No convergence in iterer_omega_tau’,in1,f1<br />

c $ ,f1_new,abs(df1/f1),in2,f2,f2_new,abs(df2/f2),1/(omega_old<br />

c $ *rho_ref*M)*1.d−6,1/(omega_new*rho_ref*M)*1.d−6,T_ref<br />

c $ /tau_old−T_0C,T_ref/tau_new−T_0C,factor,i<br />

if ((abs(df1/f1).gt.0.01).or.(abs(df2/f2).gt.0.01)) print*<br />

$ ,’Warning: No convergence in iterer_omega_tau’,abs(df1/f1)<br />

$ ,abs(df2/f2)<br />

endif<br />

tau=tau_new<br />

omega=omega_new<br />

c if (fiters) print*,’iterer_omega_tau. Antal iterationer=’,i<br />

return<br />

end<br />

subroutine iterer_omega(f,tau,omega,in,error)<br />

integer in,i,error,IMAX<br />

double precision f,tau,omega,omega_old,omega_new,domega,f_new<br />

$ ,f_old,df,dfdomega,EPSV,R,P_c,T_c,T_ref,rho_ref,rho_star,M<br />

$ ,T_0C<br />

l<strong>og</strong>ical found,saturation,fiters<br />

common/constants/EPSV,R,P_c,T_c,T_ref,rho_ref,rho_star,M,T_0C,IMAX<br />

$ ,fiters<br />

common/switches/iterate_rho_l<br />

c omega_old=omega<br />

omega_old=0.032148/rho_ref<br />

call calculate(f_old,tau,omega_old,in)<br />

omega_new=omega_old*(1d0+1d−3)<br />

if (in.eq.1) then<br />

saturation=.true.<br />

else<br />

saturation=.false.<br />

endif<br />

i=0<br />

found=.false.<br />

5 if ((i .lt. IMAX) .and.(.not.found)) then<br />

if (saturation) call test_saturation(tau,omega_new,error,f)<br />

call calculate(f_new,tau,omega_new,in)<br />

if (error.eq.2) then<br />

8/19<br />

19−03−2007

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!