| 查看: 1772 | 回复: 18 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[交流]
【求助】有很多错误的程序,找不出来了 已有2人参与
|
|||
|
c 此程序是运用peng-robinson方程计算气体的逸度系数faita(1),faita(2),是利用牛顿迭代法求解 c 然后通过origin拟合得到这些数据N1,N2,m1,m2,K1,K2 c 求解得到f1,f2,x1的过程,首先利用牛顿迭代法求解x1, 然后利用表达式求解f1,f2 PROGRAM MAIN LOGICAL converged REAL EXTERNAL FUNCTION MS MSD G dG integer::S N SQ parameter(EPS=1.0E-06,R=83.14,epsilon=1-2**(0.5),sigma=1+2**(0.5) *) dimension:: faita(7),ns(4),ma(4),K(4),A(1000000),M(7),omiga(7), *Tc(7),Pc(7),Z(1000000),b(7),beta(7),alpha(7),q(7),as(7),Z1(7) real:: alpha,beta,Tr,omiga,M,rho(7),q,a,b,SV,I(7) DATA (ns=(/2.0,3.0,4.0,5.0/);ma=(/1.0,2.0,3.0, *4.0/);K=(/5.0,6.0,7.0,8.0/);M=(/16.043,30.070,44.097, *58.123,72.150, 44.01, 28.01/);omiga=(/0.012,0.100,0.152,0.2, *0.252,0.224,0.048/);Tc=(/190.6,305.3,369.8,425.1,469.7,304.2, *132.9/);Pc=(/45.99,48.72,42.48,37.96,33.70,73.83,34.99/) READ(*,*)P1 P=P1/100 SV=(1-(T/Tc(N))**(0.5))**2 alpha(N)=(1+(0.37464+1.54226*omiga(N)-0.26992*omiga(N)**2)*SV) as(N)=((0.45724*R**2*Tc(N)**2)/Pc(N))*alpha(N) b(N)=0.07779*R*Tc(N)/Pc(N) beta(N)=b(N)*P/(R*T) q(N)=as(N)*alpha(N)*P/(R**2*T**2) MS(Z)=Z**3-(1-beta(N))*Z**2+(q(N)-2*beta(N)-3*beta(N)**2)*Z- *(q*beta(N)-beta(N)**2-beta(N)**3) MSD(Z)=3*Z**2-2*(1-beta(N))*Z+(q(N)-2*beta(N)-3*beta(N)**2) IF(N.LT.7.AND.N.GT.1)THEN DO WHILE(.not.converged.and.ABS(MSD(Z)).GT.0) Z=Z-MS(Z)/MSD(Z) converged=(abs(MS(Z)/MSD(Z)).LT.EPS) END DO ELSE END IF Z1(N)=Z DO 4 N=1,7 I(N)=(1/(sigma-epsilon))*log((Z1(N)+sigma*beta(N))/ *(Z1(N)+epsilon*beta(N))) rho(N)=(P/(Z1(N)*R*T))*M(N)*EPS faita(N)=exp(Z1(N)-1-log(Z1(N)-beta)-q(N)*I(N)) 4 CONTINUE f1=P*y1*faita(1)/X f2=P*(1-y1)*faita(2)/(1-X) G(X)=ns(1)*LOG(1+K(1)*f1**m(1))+ns(2)*LOG(1+K(2)*f1**ma(2))- *ns(3)*LOG(1+K(3)*f2**m(3))+ns(4)*LOG(1+K(4)*f2**ma(4)) dG(X)=(ma(1)*ns(1)*K(1)*f1*(ma(1)-1))/(1+K(1)*f1**ma(1))+ *(ma(2)*ns(2)*K2*f1*(ma(2)-1))/(1+K(2)*f1**m(2))- *(ma(3)*ns(3)*K(3)*f2*(ma(3)-1))/(1+K(3)*f2**ma(3))+ *(ma(4)*ns(4)*K4*f2*(ma(4)-1))/(1+K(4)*f2**ma(4)) S=0 DO WHILE(.not.converged.and.ABS(dG(X)).GT.0) X=X-G(X)/dG(X) S=S+1 converged=(abs(G(X)/dG(X)).LT.EPS) END DO x1=X 20 format(1x,3F9.4) write(20,*)f1,f2,x1 end --------------------Configuration: bb - Win32 Debug-------------------- Compiling Fortran... D:\vc++\MSDev98\MyProjects\22\bb.for D:\vc++\MSDev98\MyProjects\22\bb.for(14) : Error: Syntax error, found ';' when expecting one of: , ) DATA (ns=(/2.0,3.0,4.0,5.0/);ma=(/1.0,2.0,3.0, -------------------------------------^ D:\vc++\MSDev98\MyProjects\22\bb.for(27) : Error: This name has not been declared as an array. [MS] MS(Z)=Z**3-(1-beta(N))*Z**2+(q(N)-2*beta(N)-3*beta(N)**2)*Z- ------^ D:\vc++\MSDev98\MyProjects\22\bb.for(27) : Error: The shapes of the array expressions do not conform. MS(Z)=Z**3-(1-beta(N))*Z**2+(q(N)-2*beta(N)-3*beta(N)**2)*Z- -----------------------------------------------------------------^ D:\vc++\MSDev98\MyProjects\22\bb.for(27) : Error: The shapes of the array expressions do not conform. [MS] MS(Z)=Z**3-(1-beta(N))*Z**2+(q(N)-2*beta(N)-3*beta(N)**2)*Z- ------^ D:\vc++\MSDev98\MyProjects\22\bb.for(29) : Error: This name has not been declared as an array. [MSD] MSD(Z)=3*Z**2-2*(1-beta(N))*Z+(q(N)-2*beta(N)-3*beta(N)**2) --------^ D:\vc++\MSDev98\MyProjects\22\bb.for(29) : Error: The shapes of the array expressions do not conform. [MSD] MSD(Z)=3*Z**2-2*(1-beta(N))*Z+(q(N)-2*beta(N)-3*beta(N)**2) --------^ D:\vc++\MSDev98\MyProjects\22\bb.for(37) : Error: The shapes of the array expressions do not conform. [Z1] Z1(N)=Z --------^ D:\vc++\MSDev98\MyProjects\22\bb.for(43) : Error: The shapes of the array expressions do not conform. [FAITA] faita(N)=exp(Z1(N)-1-log(Z1(N)-beta)-q(N)*I(N)) ------^ D:\vc++\MSDev98\MyProjects\22\bb.for(49) : Error: This name has not been declared as an array. [G] G(X)=ns(1)*LOG(1+K(1)*f1**m(1))+ns(2)*LOG(1+K(2)*f1**ma(2))- --------^ D:\vc++\MSDev98\MyProjects\22\bb.for(51) : Error: This name has not been declared as an array. [DG] dG(X)=(ma(1)*ns(1)*K(1)*f1*(ma(1)-1))/(1+K(1)*f1**ma(1))+ ------^ Error executing df.exe. bb.obj - 10 error(s), 0 warning(s) |
» 猜你喜欢
职称评审没过,求安慰
已经有41人回复
回收溶剂求助
已经有7人回复
硝基苯如何除去
已经有3人回复
A期刊撤稿
已经有4人回复
垃圾破二本职称评审标准
已经有17人回复
投稿Elsevier的Neoplasia杂志,到最后选publishing options时页面空白,不能完成投稿
已经有22人回复
EST投稿状态问题
已经有7人回复
毕业后当辅导员了,天天各种学生超烦
已经有4人回复
求助文献
已经有3人回复
投稿返修后收到这样的回复,还有希望吗
已经有8人回复
» 本主题相关价值贴推荐,对您同样有帮助:
Perl 生物信息学编程求助,运行出现问题,烦请帮忙查找一下错误,谢谢!
已经有3人回复
求高人帮忙看一下我这个Fortran程序的错误出在哪里?
已经有12人回复
出现应用程序错误
已经有8人回复
求助!!!!安装MS5.0程序过程中出现的错误提示
已经有12人回复
帮我看看这里错误提示是什么意思?
已经有3人回复
【求助】此程序没有错误,怎么运行不出来?
已经有6人回复
【求助】程序运行后出现的错误 access violation
已经有15人回复

snoopyzhao
至尊木虫 (职业作家)
- 程序强帖: 16
- 应助: 157 (高中生)
- 贵宾: 0.02
- 金币: 18844.7
- 红花: 29
- 帖子: 3803
- 在线: 1422.4小时
- 虫号: 183750
- 注册: 2006-02-13
- 专业: 污染生态化学
★ ★ ★
余泽成(金币+3):辛苦了! 2010-07-11 16:27:27
zyj8119(金币+5):DO循环不是给了范围了吗?那么多公式? 2010-07-11 17:41:32
余泽成(金币+3):辛苦了! 2010-07-11 16:27:27
zyj8119(金币+5):DO循环不是给了范围了吗?那么多公式? 2010-07-11 17:41:32
|
看不懂你要做什么,不过有几点建议: 你的程序似乎是 Fortran77 的固定格式,而且里面的循环什么的也是按 Fortran 77 样式写的。但里面有些写法似乎又是 Fortran 90 的样式,这样很不好,建议按一种风格来写你的程序,要么就是纯 Fortran 77 的,要么就是 Fortran90 的。 你的程序中有很多变量没有初值,比如 SV=(1-(T/Tc(N))**(0.5))**2 中的 N; 再如: MS(Z)=Z**3-(1-beta(N))*Z**2+(q(N)-2*beta(N)-3*beta(N)**2)*Z-(q*beta(N)-beta(N)**2-beta(N)**3) 中的 Z。如果你这里的 MS 是一个函数(就像你前面申明的那样),那么最好用别的符号来代替 Z,否则会引起歧义。 这个程序中最大的问题也就在这些个函数的定义上面了…… |
3楼2010-07-11 13:45:13
|
改成这样,还有7个错误 c 此程序是运用peng-robinson方程计算气体的逸度系数faita(1),faita(2),是利用牛顿迭代法求解 c 然后通过origin拟合得到这些数据N1,N2,m1,m2,K1,K2 c 求解得到f1,f2,x1的过程,首先利用牛顿迭代法求解x1, 然后利用表达式求解f1,f2 PROGRAM MAIN LOGICAL converged REAL EXTERNAL FUNCTION MS MSD G dG integer::S N SQ parameter(EPS=1.0E-06,R=83.14,epsilon=1-2**(0.5),sigma=1+2**(0.5) *) dimension:: faita(7),ns(4),ma(4),K(4),M(7),omiga(7), *Tc(7),Pc(7),b(7),beta(7),alpha(7),q(7),as(7),Z1(7) real:: alpha,beta,Tr,omiga,M,rho(7),q,a,b,SV,I(7) DATA (ns=(/2.0,3.0,4.0,5.0/);ma=(/1.0,2.0,3.0,4.0/); *K=(/5.0,6.0,7.0,8.0/);M=(/16.043,30.070,44.097, *58.123,72.150, 44.01, 28.01/);omiga=(/0.012,0.100,0.152,0.2, *0.252,0.224,0.048/);Tc=(/190.6,305.3,369.8,425.1,469.7,304.2, *132.9/);Pc=(/45.99,48.72,42.48,37.96,33.70,73.83,34.99/) READ(*,*)P1 P=P1/100 SV=(1-(T/Tc(N))**(0.5))**2 alpha(N)=(1+(0.37464+1.54226*omiga(N)-0.26992*omiga(N)**2)*SV) as(N)=((0.45724*R**2*Tc(N)**2)/Pc(N))*alpha(N) b(N)=0.07779*R*Tc(N)/Pc(N) beta(N)=b(N)*P/(R*T) q(N)=as(N)*alpha(N)*P/(R**2*T**2) MS(Z)=Z**3-(1-beta(N))*Z**2+(q(N)-2*beta(N)-3*beta(N)**2)*Z- *(q*beta(N)-beta(N)**2-beta(N)**3) MSD(Z)=3*Z**2-2*(1-beta(N))*Z+(q(N)-2*beta(N)-3*beta(N)**2) IF(N.LT.7.AND.N.GT.1)THEN DO WHILE(.not.converged.and.ABS(MSD(Z)).GT.0) Z=Z-MS(Z)/MSD(Z) converged=(abs(MS(Z)/MSD(Z)).LT.EPS) END DO ELSE END IF Z1(N)=Z DO 4 N=1,7 I(N)=(1/(sigma-epsilon))*log((Z1(N)+sigma*beta(N))/ *(Z1(N)+epsilon*beta(N))) rho(N)=(P/(Z1(N)*R*T))*M(N)*EPS faita(N)=exp(Z1(N)-1-log(Z1(N)-beta)-q(N)*I(N)) 4 CONTINUE f1=P*y1*faita(1)/X f2=P*(1-y1)*faita(2)/(1-X) G(X)=ns(1)*LOG(1+K(1)*f1**m(1))+ns(2)*LOG(1+K(2)*f1**ma(2))- *ns(3)*LOG(1+K(3)*f2**m(3))+ns(4)*LOG(1+K(4)*f2**ma(4)) dG(X)=(ma(1)*ns(1)*K(1)*f1*(ma(1)-1))/(1+K(1)*f1**ma(1))+ *(ma(2)*ns(2)*K2*f1*(ma(2)-1))/(1+K(2)*f1**m(2))- *(ma(3)*ns(3)*K(3)*f2*(ma(3)-1))/(1+K(3)*f2**ma(3))+ *(ma(4)*ns(4)*K4*f2*(ma(4)-1))/(1+K(4)*f2**ma(4)) S=0 DO WHILE(.not.converged.and.ABS(dG(X)).GT.0) X=X-G(X)/dG(X) S=S+1 converged=(abs(G(X)/dG(X)).LT.EPS) END DO x1=X 20 format(1x,3F9.4) write(20,*)f1,f2,x1 end --------------------Configuration: bb - Win32 Debug-------------------- Compiling Fortran... D:\vc++\MSDev98\MyProjects\22\bb.for D:\vc++\MSDev98\MyProjects\22\bb.for(14) : Error: Syntax error, found ';' when expecting one of: , ) DATA (ns=(/2.0,3.0,4.0,5.0/);ma=(/1.0,2.0,3.0,4.0/); -------------------------------------^ D:\vc++\MSDev98\MyProjects\22\bb.for(27) : Error: This name has not been declared as an array. [MS] MS(Z)=Z**3-(1-beta(N))*Z**2+(q(N)-2*beta(N)-3*beta(N)**2)*Z- ------^ D:\vc++\MSDev98\MyProjects\22\bb.for(27) : Error: The shapes of the array expressions do not conform. [MS] MS(Z)=Z**3-(1-beta(N))*Z**2+(q(N)-2*beta(N)-3*beta(N)**2)*Z- ------^ D:\vc++\MSDev98\MyProjects\22\bb.for(29) : Error: This name has not been declared as an array. [MSD] MSD(Z)=3*Z**2-2*(1-beta(N))*Z+(q(N)-2*beta(N)-3*beta(N)**2) --------^ D:\vc++\MSDev98\MyProjects\22\bb.for(43) : Error: The shapes of the array expressions do not conform. [FAITA] faita(N)=exp(Z1(N)-1-log(Z1(N)-beta)-q(N)*I(N)) ------^ D:\vc++\MSDev98\MyProjects\22\bb.for(49) : Error: This name has not been declared as an array. [G] G(X)=ns(1)*LOG(1+K(1)*f1**m(1))+ns(2)*LOG(1+K(2)*f1**ma(2))- --------^ D:\vc++\MSDev98\MyProjects\22\bb.for(51) : Error: This name has not been declared as an array. [DG] dG(X)=(ma(1)*ns(1)*K(1)*f1*(ma(1)-1))/(1+K(1)*f1**ma(1))+ ------^ Error executing df.exe. |

2楼2010-07-11 11:20:39

4楼2010-07-11 14:30:10
|
$ 此程序是运用peng-robinson方程计算气体的逸度系数faita(1),faita(2),是利用牛顿迭代法求解 $ 然后通过origin拟合得到这些数据N1,N2,m1,m2,K1,K2 $ 求解得到f1,f2,x1的过程,首先利用牛顿迭代法求解IAST理论得到x1, 然后利用表达式求解f1,f2 PROGRAM MAIN LOGICAL converged REAL EXTERNAL FUNCTION MS MSD G dG integer::S N SQ parameter(EPS=1.0E-06,R=83.14,epsilon=1-2**(0.5),sigma=1+2**(0.5) *) dimension:: faita(7),ns(4),ma(4),K(4),M(7),omiga(7), *Tc(7),Pc(7),b(7),beta(7),alpha(7),q(7),as(7),Z1(7) real:: alpha,beta,Tr,omiga,M,rho(7),q,a,b,SV,I(7),ZM DATA (ns=(/2.0,3.0,4.0,5.0/);ma=(/1.0,2.0,3.0,4.0/); *K=(/5.0,6.0,7.0,8.0/);M=(/16.043,30.070,44.097, *58.123,72.150, 44.01, 28.01/);omiga=(/0.012,0.100,0.152,0.2, *0.252,0.224,0.048/);Tc=(/190.6,305.3,369.8,425.1,469.7,304.2, *132.9/);Pc=(/45.99,48.72,42.48,37.96,33.70,73.83,34.99/) READ(*,*)P1 $ 计算peng-robinson方程中需要的一些参量 DO 3 N=1,7 P=P1/100 SV=(1-(T/Tc(N))**(0.5))**2 alpha(N)=(1+(0.37464+1.54226*omiga(N)-0.26992*omiga(N)**2)*SV) as(N)=((0.45724*R**2*Tc(N)**2)/Pc(N))*alpha(N) b(N)=0.07779*R*Tc(N)/Pc(N) beta(N)=b(N)*P/(R*T) q(N)=as(N)*alpha(N)*P/(R**2*T**2) 3 CONTINUE $ 运用牛顿迭代法开始求解压缩因子的方程 MS(ZM)=ZM**3-(1-beta(N))*ZM**2+(q(N)-2*beta(N)-3*beta(N)**2)*Z- *(q*beta(N)-beta(N)**2-beta(N)**3) MSD(ZM)=3*ZM**2-2*(1-beta(N))*ZM+(q(N)-2*beta(N)-3*beta(N)**2) IF(N.LT.7.AND.N.GT.1)THEN DO WHILE(.not.converged.and.ABS(MSD(ZM)).GT.0) ZM=ZM-MS(ZM)/MSD(ZM) converged=(abs(MS(ZM)/MSD(ZM)).LT.EPS) END DO ELSE END IF Z1(N)=ZM $ 求解密度和逸度 DO 4 N=1,7 I(N)=(1/(sigma-epsilon))*log((Z1(N)+sigma*beta(N))/ *(Z1(N)+epsilon*beta(N))) rho(N)=(P/(Z1(N)*R*T))*M(N)*EPS faita(N)=exp(Z1(N)-1-log(Z1(N)-beta)-q(N)*I(N)) 4 CONTINUE $ 运用IAST理论以及上面得到的逸度系数,开始求解IAST的方程 f1=P*y1*faita(1)/X f2=P*(1-y1)*faita(2)/(1-X) G(X)=ns(1)*LOG(1+K(1)*f1**m(1))+ns(2)*LOG(1+K(2)*f1**ma(2))- *ns(3)*LOG(1+K(3)*f2**m(3))+ns(4)*LOG(1+K(4)*f2**ma(4)) dG(X)=(ma(1)*ns(1)*K(1)*f1*(ma(1)-1))/(1+K(1)*f1**ma(1))+ *(ma(2)*ns(2)*K2*f1*(ma(2)-1))/(1+K(2)*f1**m(2))- *(ma(3)*ns(3)*K(3)*f2*(ma(3)-1))/(1+K(3)*f2**ma(3))+ *(ma(4)*ns(4)*K4*f2*(ma(4)-1))/(1+K(4)*f2**ma(4)) S=0 DO WHILE(.not.converged.and.ABS(dG(X)).GT.0) X=X-G(X)/dG(X) S=S+1 converged=(abs(G(X)/dG(X)).LT.EPS) END DO x1=X 20 format(1x,3F9.4) write(20,*)f1,f2,x1 end |

5楼2010-07-11 14:53:50













回复此楼