提问
盖德化工网  >  盖德问答  >  aspen中fort...

aspen中fortran子程序编译的问题!?

回复 1# shuchang 你好,学习了一下。顺便我想问个问题,我的Fortran程序里也含有这个语句#include "ppexec_user.cmn",可是编译时出现下面的警告: 警告 1 warning #5117: Bad # preprocessor line 请问这是怎么回事呀?是不是因为我的Aspen安装程序里没有ppexec_user.cmn这个文件呀?
0评论 +关注
共82个回答
同问一下,在调用aspen plus提供的用户子程序时,里面提供了很多变量,有哪些是必需的,还有提供的各变量的具体含义是什么,麻烦路过的高手解答一下
程序源代码如下: subroutine usrknt (n,ncomp,nr,nrl,nrv,t,tliq,tvap,p,phfrac,f,x, y,idx,nbopst,kdiag,stoic,ihlbas,hldliq,timliq,ihvbas,hldvap,timvap,nint,int,nreal,real,rates,ratel,ratev,nintb,intb,nrealb,realb,niwork,iwork,nwork,work) implicit none !declare variables used in dimensioning integer ncomp, nr, nrv, nint, nintb, nrealb,niwork,nwork, user_iumiss real user_rumiss #include "ppexec_user.cmn" equivalence (rmiss, user_rumiss) equivalence (imiss, user_iumiss) !declare arguments integer nrl(3),idx(ncomp),nbopst(6), int(nint),intb(nintb),& iwork(niwork),n,kdiag, ihlbas, ihvbas,nreal real*8 phfrac(3),x(ncomp,3),y(ncomp),& stoic(ncomp,nr),rates(ncomp),& ratel(1),ratev(nrv),& realb(nrealb),work(nwork), t,tliq,& tvap,p,f,hldliq,timliq real*8 hldvap,timvap !declare local variables integer imiss real*8 real(nreal), rmiss !begin executable code integer i real*8 c,g,e,r,dp,k,rate i=10 c=10 g=0.002 e=2.7182 dp=0.00093 r=8.314 k=c*g*e**(22000/(r*t))/dp rates=k*x(1,1) return end 但编译时出错,提示信息如下: --------------------configuration: text1 - win32 debug-------------------- linking... dfor.lib(dformain.obj) : error lnk2001: unresolved external symbol _main__ debug/text1.exe : fatal error lnk1120: 1 unresolved externals error executing link.exe. text1.exe - 2 error(s), 0 warning(s) 请问高手这是什么意思?应该如何解决?谢谢! [ ]
那是网上别人写的,我拿过来编译的。不过我注释掉也不行,仍然是2错误。 我用的编译器您看看和您一样吗?
我有点忘了,再写子函数不行么?
我可能知道你的原因了,你的图上子程序那么长肯定是不行的,应该不超过80行,太长会提示你,你新建个项目再把我的代码拷过去试试,我的没问题,我的 版本和你的一样
讨论的很好,希望多些这样的讨论,把这个帖子顶起来
我看了 楼上的几个回复,好像没有特别提起fortran的编译器,我在读7.2的usermodel时候,里面好像提起过11.0以后的版本得需要intel+ms2003以后的环境,建议楼主试试intel fortran11+msvs2008.
写成如下代码就可以,fortran只有子函数是不能编译通过的。我已经刚才编译成功了。但有几个警告还没消除,楼主自己干吧。 program usrknt_main call usrknt(n,ncomp,nr,nrl,nrv,t,tliq,tvap,p,phfrac,f,x, y, @idx,nbopst,kdiag,stoic,ihlbas,hldliq,timliq,ihvbas,hldvap,timvap, @nint,int,nreal,real,rates,ratel,ratev,nintb,intb,nrealb,realb, @niwork,iwork,nwork,work) stop end subroutine usrknt(n,ncomp,nr,nrl,nrv,t,tliq,tvap,p,phfrac,f,x, y, @idx,nbopst,kdiag,stoic,ihlbas,hldliq,timliq,ihvbas,hldvap,timvap, @nint,int,nreal,real,rates,ratel,ratev,nintb,intb,nrealb,realb, @niwork,iwork,nwork,work) implicit none !declare variables used in dimensioning integer ncomp, nr, nrv, nint, nintb, nrealb,niwork,nwork, @user_iumiss real user_rumiss !#include "ppexec_user.cmn" equivalence (rmiss, user_rumiss) equivalence (imiss, user_iumiss) !declare arguments integer nrl(3),idx(ncomp),nbopst(6), int(nint),intb(nintb), &iwork(niwork),n,kdiag, ihlbas, ihvbas,nreal real*8 phfrac(3),x(ncomp,3),y(ncomp), &stoic(ncomp,nr),rates(ncomp), &ratel(1),ratev(nrv), &realb(nrealb),work(nwork), t,tliq, &tvap,p,f,hldliq,timliq real*8 hldvap,timvap !declare local variables integer imiss real*8 real(nreal), rmiss !begin executable code integer i real*8 c,g,e,r,dp,k,rate i=10 c=10 g=0.002 e=2.7182 dp=0.00093 r=8.314 k=c*g*e**(22000/(r*t))/dp rates=k*x(1,1) return end
cvf6.6 的编译器貌似不可以的,当然用来学习fortran还是足够的,另外需要告诉你的cvf原有的开发团队现在都是在intel麾下~
谢谢,不过我们的编译器肯定不一样! 你的程序我修改语法以后才能在我这儿通过!而且我这个编译器肯定和aspen不一致,估计还得用fortran77编译器!
此类问题可以到fortran的论坛上求助啊!比如我经常上的一个: http://
总结一下个人经验,请大家指点,另外要谢谢lsrwan ,可惜不能在本版评分: 1.安装compaq fortan 6.6编译器; 2.用f77的格式编写aspen子程序,格式可以参照aspen v7自带的fortran程序,具体参数学习《用户模型》这本书; 3.编好的程序请用aspcomp编译,通过后即可。 注:本文的子程序是反应精馏子程序,大家可以借鉴! [ ]
编程很麻烦呀,我也想学学,不知道有什么好的资料
看来我的理解还是有问题,aspen v7自带的fortran程序用aspcomp编译没有任何问题,但是在compaq visual fortran 6.6下编译却有6个错误;在compaq visual fortran 6.6下编译问题不大的程序用aspcomp编译却错误一大堆。而我aspen选择的编译器就是compaq fortran 6.6.
aspenone 7.2 用 cvf 6.6没有问题的,fortran代码无需用f77,用f90,f95都可以。
你要修改的,比如对齐什么的,肯定能通过。 [ ]
原帖由 muyejing 于 2009-3-24 14:58 发表 同问一下,在调用aspen plus提供的用户子程序时,里面提供了很多变量,有哪些是必需的,还有提供的各变量的具体含义是什么,麻烦路过的高手解答一下 这些变量大部分应该是模型内部调用的吧,具体含义你可以看《用户模型10.0》这本书,论坛上有。
有可能编译器选择还是不正确?
1: subroutine usrknt (n,ncomp,nr,nrl,nrv,t,tliq,tvap,p,phfrac,f,x, y,idx,nbopst,kdiag,stoic,ihlbas,hldliq,timliq,ihvbas,hldvap,timvap,nint,int,nreal,real,rates,ratel,ratev,nintb,intb,nrealb,realb,niwork,iwork,nwork,work) 代码太长要分行 2 !declare local variables 注释行这样写么,先把所有的注释行去掉看看。
有谁知道aspen v7支持fortran 95不?
编辑推荐
三价铬溶液颜色问题? 15个回答
能否用离心代替旋蒸去除乙醇? 2个回答
想请教下靛蓝染料在紫外分光光度计下吸收的问题? 4个回答
硫酸钙结垢,用什么清洗掉? 4个回答
氰基取代苯环上的卤素的反应条件? 0个回答
 
请填写举报原因
选择举报原因
 
增加悬赏
剩余能量值
能量值