iapwsif97水物性计算fortran90程序.doc

上传人:文库蛋蛋多 文档编号:2393096 上传时间:2023-02-17 格式:DOC 页数:30 大小:197KB
返回 下载 相关 举报
iapwsif97水物性计算fortran90程序.doc_第1页
第1页 / 共30页
iapwsif97水物性计算fortran90程序.doc_第2页
第2页 / 共30页
iapwsif97水物性计算fortran90程序.doc_第3页
第3页 / 共30页
iapwsif97水物性计算fortran90程序.doc_第4页
第4页 / 共30页
iapwsif97水物性计算fortran90程序.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《iapwsif97水物性计算fortran90程序.doc》由会员分享,可在线阅读,更多相关《iapwsif97水物性计算fortran90程序.doc(30页珍藏版)》请在三一办公上搜索。

1、IAPWS-IF97水物性计算Fortran90程序基于IAPWS-IF97的水物性计算Fortran90语言程序代码,程序编写为动态链接库(dll)形式,以便于调用。下面具体讲述。如上图所示,水与水蒸气可分为5个区,但本程序只适用于4个区,即图中的第1、2、3、4区,不包括第5区。压力与温度范围为:程序的输入变量为压力P与温度T,单位分别为Pa与K。输出变量(12个)如下:-比容v内能u比焓h比熵s定压比热容Cp定容比热容Cv声速wm3/kgJ/kgJ/kgJ/kg*KJ/kg*KJ/kg*Km/s定压热膨胀率等温压缩率导热系数动力粘度表面张力1/K1/PaW/m*KPa*sN/m-输出变量

2、是以一个数组的形式存储,例如数组为prop(12),数组与变量的对应顺序为:vuhsCpCvw单位如前所述。现给出具体的调用方法:给定压力P(Pa)与温度T(K),计算物性,程序自己判断所属区域:call h2o(P,T,prop(12)若想得到给定压力P(Pa)或温度T(K)下的饱和态物性,则可如下调用:a. 给定压力call PsatW(P,T)或给定温度call TsatW(P,T)b. 饱和液态call h2o(P,1.001*T,prop(12)或饱和汽态call h2o(P,0.999*T,prop(12)当然还有其他方法,读者详细了解程序内容后,请自行发现。这里给出获得动态链接库

3、的方法:1. 新建一个动态链接库工程2. 加入附录所示源程序文件3. 编译,获得最重要的下面两个文件:.lib与.dll4. 上面两个文件就可用于其他程序的物性调用参考文献Wolfgang Wagner, Hans-Joachim Kretzschmar. Properties ofWater and Steam Based on the Industrial formulation IAPWS-IF97, Second Edition.附录:源程序(19个文件)【1】. const.f90module constimplicit nonereal*8:Rg=0.461526E3 !J/kg/

4、Kreal*8:Tc=647.096 !Kreal*8:Pc=22.064E6 !Pareal*8:rhoc=322.0 !kg/m3end module const【2】. reg1.f90module reg1implicit noneinteger:I(34),J(34)real*8:n(34)data I /&0 ,&0 ,&0 ,&0 ,&0 ,&0 ,&0 ,&0 ,&1 ,&1 ,&1 ,&1 ,&1 ,&1 ,&2 ,&2 ,&2 ,&2 ,&2 ,&3 ,&3 ,&3 ,&4 ,&4 ,&4 ,&5 ,&8 ,&8 ,&21 ,&23 ,&29 ,&30 ,&31 ,&32

5、&/data J /&-2 ,&-1 ,&0 ,&1 ,&2 ,&3 ,&4 ,&5 ,&-9 ,&-7 ,&-1 ,&0 ,&1 ,&3 ,&-3 ,&0 ,&1 ,&3 ,&17 ,&-4 ,&0 ,&6 ,&-5 ,&-2 ,&10 ,&-8 ,&-11 ,&-6 ,&-29 ,&-31 ,&-38 ,&-39 ,&-40 ,&-41 &/data n /&0.14632971213167 ,&-0.84548187169114 ,&-3.756360367204 ,&3.3855169168385 ,&-0.95791963387872 ,&0.15772038513228 ,&-0.

6、016616417199501 ,&8.1214629983568E-04 ,&2.8319080123804E-04 ,&-6.0706301565874E-04 ,&-0.018990068218419 ,&-0.032529748770505 ,&-0.021841717175414 ,&-5.283835796993E-05 ,&-4.7184321073267E-04 ,&-3.0001780793026E-04 ,&4.7661393906987E-05 ,&-4.4141845330846E-06 ,&-7.2694996297594E-16 ,&-3.1679644845054

7、E-05 ,&-2.8270797985312E-06 ,&-8.5205128120103E-10 ,&-2.2425281908E-06 ,&-6.5171222895601E-07 ,&-1.4341729937924E-13 ,&-4.0516996860117E-07 ,&-1.2734301741641E-09 ,&-1.7424871230634E-10 ,&-6.8762131295531E-19 ,&1.4478307828521E-20 ,&2.6335781662795E-23 ,&-1.1947622640071E-23 ,&1.8228094581404E-24 ,&

8、-9.3537087292458E-26 &/end module reg1【3】. reg2.f90module reg2implicit noneinteger:Jo(9),I(43),J(43)real*8:no(9),n(43)data Jo /&0 ,&1 ,&-5 ,&-4 ,&-3 ,&-2 ,&-1 ,&2 ,&3 &/data no /&-9.6927686500217 ,&10.086655968018 ,&-0.005608791128302 ,&0.071452738081455 ,&-0.40710498223928 ,&1.4240819171444 ,&-4.38

9、3951131945 ,&-0.28408632460772 ,&0.021268463753307 &/data I /&1 ,&1 ,&1 ,&1 ,&1 ,&2 ,&2 ,&2 ,&2 ,&2 ,&3 ,&3 ,&3 ,&3 ,&3 ,&4 ,&4 ,&4 ,&5 ,&6 ,&6 ,&6 ,&7 ,&7 ,&7 ,&8 ,&8 ,&9 ,&10 ,&10 ,&10 ,&16 ,&16 ,&18 ,&20 ,&20 ,&20 ,&21 ,&22 ,&23 ,&24 ,&24 ,&24 &/data J /&0 ,&1 ,&2 ,&3 ,&6 ,&1 ,&2 ,&4 ,&7 ,&36 ,&0

10、 ,&1 ,&3 ,&6 ,&35 ,&1 ,&2 ,&3 ,&7 ,&3 ,&16 ,&35 ,&0 ,&11 ,&25 ,&8 ,&36 ,&13 ,&4 ,&10 ,&14 ,&29 ,&50 ,&57 ,&20 ,&35 ,&48 ,&21 ,&53 ,&39 ,&26 ,&40 ,&58 &/data n /&-1.7731742473213E-03 ,&-0.017834862292358 ,&-0.045996013696365 ,&-0.057581259083432 ,&-0.05032527872793 ,&-3.3032641670203E-05 ,&-1.8948987

11、516315E-04 ,&-3.9392777243355E-03 ,&-0.043797295650573 ,&-2.6674547914087E-05 ,&2.0481737692309E-08 ,&4.3870667284435E-07 ,&-3.227767723857E-05 ,&-1.5033924542148E-03 ,&-0.040668253562649 ,&-7.8847309559367E-10 ,&1.2790717852285E-08 ,&4.8225372718507E-07 ,&2.2922076337661E-06 ,&-1.6714766451061E-11

12、,&-2.1171472321355E-03 ,&-23.895741934104 ,&-5.905956432427E-18 ,&-1.2621808899101E-06 ,&-0.038946842435739 ,&1.1256211360459E-11 ,&-8.2311340897998 ,&1.9809712802088E-08 ,&1.0406965210174E-19 ,&-1.0234747095929E-13 ,&-1.0018179379511E-09 ,&-8.0882908646985E-11 ,&0.10693031879409 ,&-0.33662250574171

13、 ,&8.9185845355421E-25 ,&3.0629316876232E-13 ,&-4.2002467698208E-06 ,&-5.9056029685639E-26 ,&3.7826947613457E-06 ,&-1.2768608934681E-15 ,&7.3087610595061E-29 ,&5.5414715350778E-17 ,&-9.436970724121E-07 &/end module reg2【4】. reg3.f90module reg3implicit noneinteger:I(40),J(40)real*8:n(40)data I /&0 ,&

14、0 ,&0 ,&0 ,&0 ,&0 ,&0 ,&0 ,&1 ,&1 ,&1 ,&1 ,&2 ,&2 ,&2 ,&2 ,&2 ,&2 ,&3 ,&3 ,&3 ,&3 ,&3 ,&4 ,&4 ,&4 ,&4 ,&5 ,&5 ,&5 ,&6 ,&6 ,&6 ,&7 ,&8 ,&9 ,&9 ,&10 ,&10 ,&11 &/data J /&0 ,&0 ,&1 ,&2 ,&7 ,&10 ,&12 ,&23 ,&2 ,&6 ,&15 ,&17 ,&0 ,&2 ,&6 ,&7 ,&22 ,&26 ,&0 ,&2 ,&4 ,&16 ,&26 ,&0 ,&2 ,&4 ,&26 ,&1 ,&3 ,&26 ,&0

15、 ,&2 ,&26 ,&2 ,&26 ,&2 ,&26 ,&0 ,&1 ,&26 &/data n /&1.0658070028513 ,&-15.732845290239 ,&20.944396974307 ,&-7.6867707878716 ,&2.6185947787954 ,&-2.808078114862 ,&1.2053369696517 ,&-8.4566812812502E-03 ,&-1.2654315477714 ,&-1.1524407806681 ,&0.88521043984318 ,&-0.64207765181607 ,&0.38493460186671 ,&-

16、0.85214708824206 ,&4.8972281541877 ,&-3.0502617256965 ,&0.039420536879154 ,&0.12558408424308 ,&-0.2799932969871 ,&1.389979956946 ,&-2.018991502357 ,&-8.2147637173963E-03 ,&-0.47596035734923 ,&0.0439840744735 ,&-0.44476435428739 ,&0.90572070719733 ,&0.70522450087967 ,&0.10770512626332 ,&-0.3291362325

17、8954 ,&-0.50871062041158 ,&-0.022175400873096 ,&0.094260751665092 ,&0.16436278447961 ,&-0.013503372241348 ,&-0.014834345352472 ,&5.7922953628084E-04 ,&3.2308904703711E-03 ,&8.0964802996215E-05 ,&-1.6557679795037E-04 ,&-4.4923899061815E-05 &/end module reg3【5】. reg4.f90module reg4implicit nonereal*8:

18、n(10)data n /&1167.0521452767 ,&-724213.16703206 ,&-17.073846940092 ,&12020.82470247 ,&-3232555.0322333 ,&14.91510861353 ,&-4823.2657361591 ,&405113.40542057 ,&-0.23855557567849 ,&650.17534844798 &/end module reg4【6】. mod_thcon.f90module mod_thcon!implicit nonereal*8:n0(4),n1(5),n2(10)!data n0 /&0.1

19、02811d-1 ,&0.299621d-1 ,&0.156146d-1 ,&-0.422464d-2 &/data n1 /&-0.397070 ,&0.400302 ,&1.06 ,&-0.171587 ,&2.39219 &/data n2 /&0.701309d-1 ,&0.118520d-1 ,&0.642857 ,&0.169937d-2 ,&-1.02 ,&-4.11717 ,&-6.17937 ,&0.0822994 ,&10.0932 ,&0.308976d-2 &/!end module mod_thcon【7】. mod_visc.f90module mod_visc!i

20、mplicit noneinteger:I(21),J(21)real*8:no(4),n(21)!data no /&0.167752e-1 ,&0.220462e-1 ,&0.6366564e-2 ,&-0.241605e-2 &/data I /&0 ,&0 ,&0 ,&0 ,&1 ,&1 ,&1 ,&1 ,&1 ,&2 ,&2 ,&2 ,&2 ,&2 ,&3 ,&3 ,&4 ,&4 ,&5 ,&6 ,&6 &/data J /&0 ,&1 ,&2 ,&3 ,&0 ,&1 ,&2 ,&3 ,&5 ,&0 ,&1 ,&2 ,&3 ,&4 ,&0 ,&1 ,&0 ,&3 ,&4 ,&3 ,&

21、5 &/data n /&0.520094 ,&0.850895e-1 ,&-0.108374e1 ,&-0.289555 ,&0.222531 ,&0.999115 ,&0.188797e1 ,&0.126613e1 ,&0.120573 ,&-0.281378 ,&-0.906851 ,&-0.772479 ,&-0.489837 ,&-0.257040 ,&0.161913 ,&0.257399 ,&-0.325372e-1 ,&0.698452e-1 ,&0.872102e-2 ,&-0.435673e-2 ,&-0.593264e-3 &/!end module mod_visc【8

22、】. b23.f90module b23implicit nonereal*8:n(5)data n /&348.05185628969 ,&-1.1671859879975 ,&1.0192970039326E-03 ,&572.54459862746 ,&13.91883977887 &/end module b23【9】. Pb23.f90subroutine Pb23(P,T)!DEC$ ATTRIBUTES DLLEXPORT : Pb23!use constuse b23!implicit nonereal*8:P,Treal*8:pi,sitareal*8:Pstar,Tstar

23、!data Pstar /1.0E6/ ! Padata Tstar /1.0/ ! K!if (T .lt. 623.15 .or. T .gt. 863.15) thenstop Error: Out B23 Range !endif!sita=T/Tstarpi=n(1)+n(2)*sita+n(3)*sita*sitaP=pi*Pstar!end subroutine Pb23【10】. Tb23.f90subroutine Tb23(P,T)!DEC$ ATTRIBUTES DLLEXPORT : Tb23!use constuse b23!implicit nonereal*8:P

24、,Treal*8:pi,sitareal*8:Pstar,Tstar!data Pstar /1.0E6/ ! Padata Tstar /1.0/ ! K!if (P .lt. 16.529E6 .or. P .gt. 100.0E6) thenstop Error: Out B23 Range !endif!pi=P/Pstarsita=n(4)+sqrt(pi-n(5)/n(3)T=sita*Tstar!end subroutine Tb23【11】. PsatW.f90subroutine PsatW(P,T)!DEC$ ATTRIBUTES DLLEXPORT : PsatW!use

25、 constuse reg4!implicit nonereal*8:P,Treal*8:Pstar,Tstar,sitareal*8:A,B,C!data Pstar /1.0E6/ ! Padata Tstar /1.0/ ! K!if (T .lt. 273.15) .or. (T .gt. 647.096) stop Error: Reg4 (Saturate) PsatW !sita=T/Tstar+n(9)/(T/Tstar-n(10)!A=sita*sita+n(1)*sita+n(2)B=n(3)*sita*sita+n(4)*sita+n(5)C=n(6)*sita*sita

26、+n(7)*sita+n(8)!P=(2.0*C/(-B+sqrt(B*B-4.0*A*C)*4.0P=P*Pstar!end subroutine PsatW【12】. TsatW.f90subroutine TsatW(P,T)!DEC$ ATTRIBUTES DLLEXPORT : TsatW!use constuse reg4!implicit nonereal*8:P,Treal*8:Pstar,Tstar,sitareal*8:D,E,F,G!data Pstar /1.0E6/ ! Padata Tstar /1.0/ ! K!if (P .lt. 611.657) .or. (

27、P .gt. 22.064E6) stop Error: Reg4 (Saturate) TsatW!sita=(P/Pstar)*0.25!E=sita*sita+n(3)*sita+n(6)F=n(1)*sita*sita+n(4)*sita+n(7)G=n(2)*sita*sita+n(5)*sita+n(8)D=2.0*G/(-F-sqrt(F*F-4.0*E*G)!T=(n(10)+D-sqrt(n(10)+D)*2.0-4.0*(n(9)+n(10)*D)/2.0T=T*Tstar!end subroutine TsatW【13】. propreg1.f90subroutine p

28、ropreg1(P,T,prop)!DEC$ ATTRIBUTES DLLEXPORT : propreg1!P: Pa;!T: K ;!use constuse reg1!implicit noneinteger:iireal*8:P,Treal*8:prop(12)real*8:gamma,pi,tau,gamma_pi,gamma_pipi,gamma_tau,gamma_tautau,gamma_pitaureal*8:Pstar,Tstar!data Pstar /16.529E6/ ! Padata Tstar /1386.0/ ! K!pi=P/Pstartau=Tstar/T!

29、gamma=0.0do ii=1,34gamma=gamma+n(ii)*(7.1-pi)*I(ii)*(tau-1.222)*J(ii)enddogamma_pi=0.0do ii=1,34gamma_pi=gamma_pi-n(ii)*I(ii)*(7.1-pi)*(I(ii)-1.0)*(tau-1.222)*J(ii)enddogamma_pipi=0.0do ii=1,34gamma_pipi=gamma_pipi+n(ii)*I(ii)*(I(ii)-1.0)*(7.1-pi)*(I(ii)-2.0)*(tau-1.222)*J(ii)enddogamma_tau=0.0do ii

30、=1,34gamma_tau=gamma_tau+n(ii)*(7.1-pi)*I(ii)*J(ii)*(tau-1.222)*(J(ii)-1.0)enddogamma_tautau=0.0do ii=1,34gamma_tautau=gamma_tautau+n(ii)*(7.1-pi)*I(ii)*J(ii)*(J(ii)-1.0)*(tau-1.222)*(J(ii)-2.0)enddogamma_pitau=0.0do ii=1,34gamma_pitau=gamma_pitau-n(ii)*I(ii)*(7.1-pi)*(I(ii)-1.0)*J(ii)*(tau-1.222)*(

31、J(ii)-1.0)enddo!prop(1)=pi*gamma_pi*Rg*T/Pprop(2)=(tau*gamma_tau-pi*gamma_pi)*Rg*Tprop(3)=tau*gamma_tau*Rg*Tprop(4)=(tau*gamma_tau-gamma)*Rgprop(5)=-tau*2.0*gamma_tautau*Rgprop(6)=(-tau*2.0*gamma_tautau+(gamma_pi-tau*gamma_pitau)*2.0/gamma_pipi)*Rgprop(7)=abs(gamma_pi)*sqrt(Rg*T/(gamma_pi-tau*gamma_

32、pitau)*2.0/(tau*tau*gamma_tautau)-gamma_pipi)prop(8)=(1.0-tau*gamma_pitau/gamma_pi)/Tprop(9)=-pi*gamma_pipi/(P*gamma_pi)!end subroutine propreg1【14】. propreg2.f90subroutine propreg2(P,T,prop)!DEC$ ATTRIBUTES DLLEXPORT : propreg2!P: Pa;!T: K ;!prop: v u h s cp cv w(sound speed) beta kappa thcon visc

33、sft!use constuse reg2!implicit noneinteger:iireal*8:P,Treal*8:prop(12)real*8:pi,tau,gamma0,gamma0_pi,gamma0_pipi,gamma0_tau,gamma0_tautau,gamma0_pitaureal*8:gamma,gamma_pi,gamma_pipi,gamma_tau,gamma_tautau,gamma_pitaureal*8:Pstar,Tstar!data Pstar /1.0E6/ ! Padata Tstar /540.0/ ! K!pi=P/Pstartau=Tsta

34、r/T!gamma0=log(pi)do ii=1,9gamma0=gamma0+no(ii)*tau*Jo(ii)enddogamma0_pi=1.0/pigamma0_pipi=-1.0/pi*2.0gamma0_tau=0.0do ii=1,9gamma0_tau=gamma0_tau+no(ii)*Jo(ii)*tau*(Jo(ii)-1.0)enddogamma0_tautau=0.0do ii=1,9gamma0_tautau=gamma0_tautau+no(ii)*Jo(ii)*(Jo(ii)-1.0)*tau*(Jo(ii)-2.0)enddogamma0_pitau=0.0

35、!gamma=0.0do ii=1,43gamma=gamma+n(ii)*pi*I(ii)*(tau-0.5)*J(ii)enddogamma_pi=0.0do ii=1,43gamma_pi=gamma_pi+n(ii)*I(ii)*pi*(I(ii)-1.0)*(tau-0.5)*J(ii)enddogamma_pipi=0.0do ii=1,43gamma_pipi=gamma_pipi+n(ii)*I(ii)*(I(ii)-1.0)*pi*(I(ii)-2.0)*(tau-0.5)*J(ii)enddogamma_tau=0.0do ii=1,43gamma_tau=gamma_ta

36、u+n(ii)*pi*I(ii)*J(ii)*(tau-0.5)*(J(ii)-1.0)enddogamma_tautau=0.0do ii=1,43gamma_tautau=gamma_tautau+n(ii)*pi*I(ii)*J(ii)*(J(ii)-1.0)*(tau-0.5)*(J(ii)-2.0)enddogamma_pitau=0.0do ii=1,43gamma_pitau=gamma_pitau+n(ii)*I(ii)*pi*(I(ii)-1.0)*J(ii)*(tau-0.5)*(J(ii)-1.0)enddo!prop(1)=pi*(gamma0_pi+gamma_pi)

37、*Rg*T/Pprop(2)=(tau*(gamma0_tau+gamma_tau)-pi*(gamma0_pi+gamma_pi)*Rg*Tprop(3)=tau*(gamma0_tau+gamma_tau)*Rg*Tprop(4)=(tau*(gamma0_tau+gamma_tau)-(gamma0+gamma)*Rgprop(5)=-tau*2.0*(gamma0_tautau+gamma_tautau)*Rgprop(6)=prop(5)-Rg*(1.0+pi*gamma_pi-tau*pi*gamma_pitau)*2.0/(1.0-pi*pi*gamma_pipi)prop(7)

38、=(1.0+2.0*pi*gamma_pi+(pi*gamma_pi)*2.0)/(1.0-pi*pi*gamma_pipi)+(1.0+pi*gamma_pi-tau*pi*gamma_pitau)*2.0/(tau*tau*(gamma0_tautau+gamma_tautau)prop(7)=sqrt(prop(7)*Rg*T)prop(8)=(1.0+pi*gamma_pi-tau*pi*gamma_pitau)/(T*(1.0+pi*gamma_pi)prop(9)=(1.0-pi*pi*gamma_pipi)/(P*(1.0+pi*gamma_pi)!end subroutine propreg2【15】. propreg3.f90subroutine propreg3(P,T,prop)!DEC$ ATTRIBUTES DLLEXPORT : propreg3!use constuse reg3!implicit noneinteger:iireal*8:P,T,rho,P1,rho1,rho2real*8:prop(12)real*8:delta,tau,fi,fi_delta,fi_deltadelta,fi_tau,fi_tautau,fi_deltataureal*8:rhostar,Tstar!rhostar=rho

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号