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 />

if (omega_new*rho_ref.lt.rho_star) then<br />

omega_old=omega_new*0.999<br />

else<br />

omega_old=omega_new*1.001<br />

endif<br />

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

error=0<br />

endif<br />

df=f_new−f<br />

if ((abs(df/f).le.EPSV).or.(abs(df/f).le.1.d−6.and.<br />

$ omega_old.eq.omega_new)) then<br />

found=.true.<br />

goto 10<br />

end if<br />

if ((f_new−f_old).eq.0) then<br />

dfdomega=(1D−12)/(omega_new−omega_old)<br />

else<br />

dfdomega=(f_new−f_old)/(omega_new−omega_old)<br />

endif<br />

c if (fiters) print*,in<br />

c $ ,f,f_new,f_old,abs(df/f),1/(omega_old*rho_ref*M)*1.d−6,1<br />

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

omega_old=omega_new<br />

domega=−(df/dfdomega)<br />

omega_new=omega_old+domega<br />

if (omega_old.lt.1) then<br />

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

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

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

omega_new=omega_old+omega_old*9<br />

endif<br />

else<br />

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

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

endif<br />

f_old=f_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 />

if (fiters) print*,’Warning: No convergence in iterer_omega’,in<br />

$ ,f,f_new,abs(df/f),1/(omega_old*rho_ref*M)*1.d−6,1<br />

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

end if<br />

omega=omega_new<br />

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

return<br />

end<br />

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

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

double precision f,tau,omega,tau_old,tau_new,dtau,f_new<br />

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

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

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

$ ,fiters<br />

tau_old=tau<br />

call calculate(f_old,tau_old,omega,in)<br />

tau_new=tau_old*1.01<br />

i=0<br />

found=.false.<br />

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

call calculate(f_new,tau_new,omega,in)<br />

df=f_new−f<br />

if (abs(df/f).le.EPSV) then<br />

found=.true.<br />

goto 10<br />

end if<br />

dfdtau=(f_new−f_old)/(tau_new−tau_old)<br />

tau_old=tau_new<br />

dtau=−(df/dfdtau)<br />

tau_new=tau_old+dtau<br />

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

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

9/19<br />

19−03−2007

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

Saved successfully!

Ooh no, something went wrong!