aspen外挂fortran动力学方程探讨
本帖最后由 六月痕 于 2013-12-7 20:58 编辑C User Kinetics Subroutine for RCSTR, RPLUG, RBATCH, PRES-RELIEFC SUBROUTINEUSRKIN (SOUT, NSUBS,IDXSUB,ITYPE,NINT, 2 INT, NREAL, REAL, IDS, NPO, 3 NBOPST, NIWORK,IWORK, NWORK,WORK, 4 NC, NR, STOIC, RATES,FLUXM, 5 FLUXS,XCURR, NTCAT, RATCAT, NTSSAT, 6 RATSSA,KCALL,KFAIL, KFLASH, NCOMP, 7 IDX, Y, X, X1, X2, 8 NRALL,RATALL, NUSERV, USERV, NINTR, 9 INTR, NREALR, REALR, NIWR,IWR, 1 NWR, WR)C 以上定义子程序变量 IMPLICITNONE !fortran 语句 清除隐含变量CC DECLARE VARIABLES USED IN DIMENSIONINGC INTEGERNSUBS, NINT,NPO, NIWORK,NWORK, + NC, NR, NTCAT, NTSSAT,NCOMP, + NRALL, NUSERV,NINTR,NREALR,NIWR, + NWRC#include "ppexec_user.cmn" !公用区,存储运行时间控制标志 EQUIVALENCE(RMISS, USER_RUMISS) !EQUIVALENCE 是fortran中的等价语句 EQUIVALENCE(IMISS, USER_IUMISS !USER_RUMISS 实型补遗代码 USER_IUMISS 实型补遗代码 CCCCC.....RCSTR...#include "rcst_rcstri.cmn" !公共模块包含 RCSTR 模块的整型结构参数#include "rxn_rcstrr.cmn" !公共模块包含 RCSTR 模块的实型结构参数CC.....RPLUG...#include "rplg_rplugi.cmn" !公共模块包括RPLUG模块的整型结构参数#include "rplg_rplugr.cmn" !公共模块包括RPLUG模块的实型结构参数 EQUIVALENCE(XLEN, RPLUGR_UXLONG)!长度 EQUIVALENCE(DIAM, RPLUGR_UDIAM) !直径CC.....RBATCH...#include "rbtc_rbati.cmn"#include "rbtc_rbatr.cmn"CC.....PRES-RELIEF...#include "rbtc_presrr.cmn" !公共模块包括泄压系统模块的实形结构参数CC.....REACTOR (OR PRES-RELIEF VESSEL)PROPERTIES...#include "rxn_rprops.cmn" !公共区 实型性质(例如温度。压强等)P71 EQUIVALENCE(TEMP, RPROPS_UTEMP) !温度 EQUIVALENCE(PRES, RPROPS_UPRES) !压力 EQUIVALENCE(VFRAC, RPROPS_UVFRAC) !摩尔气相分率反应器 EQUIVALENCE(BETA, RPROPS_UBETA) EQUIVALENCE(VVAP, RPROPS_UVVAP) EQUIVALENCE(VLIQ, RPROPS_UVLIQ) EQUIVALENCE(VLIQS, RPROPS_UVLIQS)C#include "shs_stwork.cmn" !SHS_STWORK 是物流闪蒸工作偏移量公用区 P134 EQUIVALENCE(MKBAS, STWORK_NDUM) EQUIVALENCE(MKPHAS, STWORK_NBLM) EQUIVALENCE(MTAPP, STWORK_NCOVAR) EQUIVALENCE(MKBASS, STWORK_NWR) EQUIVALENCE(MTAPPS, STWORK_NIWR) EQUIVALENCE(SSALT, STWORK_RDUM1) EQUIVALENCE(VSALT, STWORK_RDUM2) EQUIVALENCE(FSALT, STWORK_FFSALT)#include "pputl_ppglob.cmn" !由所有模拟程序性质程序使用的物性全局公用区#include "dms_ncomp.cmn" !包括各种类别组分的数目和与组分相关的流段的长度#include "dms_plex.cmn" !DMS_PLEX含有Plex的长的内核存储区域,存储fortran调用所需的物性参数 EQUIVALENCE(IB(1), B(1))!B 实型的Plex区域IB 整型的Plex区域C C DECLARE ARGUMENTSC INTEGERIDXSUB(NSUBS),ITYPE(NSUBS), INT(NINT), + IDS(2),NBOPST(6,NPO),IWORK(NIWORK), + IDX(NCOMP), INTR(NINTR), IWR(NIWR), + NREAL, KCALL, KFAIL,KFLASH,I REAL*8SOUT(1), WORK(NWORK), + STOIC(NC,NSUBS,NR),RATES(1), + FLUXM(1), FLUXS(1), RATCAT(NTCAT), + RATSSA(NTSSAT), Y(NCOMP), + X(NCOMP), X1(NCOMP), X2(NCOMP) REAL*8RATALL(NRALL),USERV(NUSERV), + REALR(NREALR),WR(NWR), XCURRCCC DECLARE LOCAL VARIABLESC INTEGERIMISS, MKBAS, MKPHAS,MTAPP, MKBASS, + MTAPPS,LMW REAL*8REAL(NREAL), XL(3), B(1),RMISS, XLEN, + DIAM,TEMP, PRES,VFRAC, BETA, + VVAP,VLIQ, VLIQS, SSALT, VSALT, + FSALT, RTEMP, DENLIQ,CONAA,CONACT, + FTERM, STERM, RATE,SUMR INTEGERXMWCC INITIALIZE RATESCCC STATEMENT FUNCTIONS FOLLOWCCC BEGIN EXECUTABLE CODEC XMW(I) =LMW + I !组分分子量,The MW values start from B(LMW + 1)P42CC SET PLEX OFFSETSC LMW = IPOFF1_IPOFF1(306) !??? 没找到依据,猜测确定组分数据区域的DMS_PLEX偏移量 DO100 I = 1, NC RATES(I) = 0D0 XL(I) = 0D0 100 CONTINUEC !以上排数偏移量的影响 DO101 I = 1, NCOMP XL(IDX(I)) = X(I) 101 CONTINUE !以上为每个组分质量分数赋值CC The structure in the array SOUT is as follows:CC SOUT(1) - SOUT(NCC) : Component flowrates(kg-moles/sec)C SOUT(NCC+1) : Totalflowrates(kg-moles/sec)C SOUT(NCC+2) :Temperature(K)C SOUT(NCC+3) :Pressure(N/SQM)C SOUT(NCC+4) : Massenthalpy(J/KG)C SOUT(NCC+5) : Molar vaporfractionC SOUT(NCC+6) : Molar liquidfractionC SOUT(NCC+7) : Massentropy(J/KG-K)C SOUT(NCC+8) : Massdensity(KG/CUM)C SOUT(NCC+9) : Molecular WeightCC Details of this infomation can be found in the User GuideC on page 17-10 for 8.5-6 or Reference Manual Vol. 6, User ModelsC for Release 9.CC Set Reactor TemperatureC RTEMP = SOUT(NCOMP_NCC+2) !反应器温度CC Get liquid mixture densityC DENLIQ = 1.0 / STWORK_VL !求密度CC Compute Concentration for reactants:CC CONC(i) = X(i) * RHOC CONAA = XL(1) * DENLIQ !计算Allyl-Alcohol浓度 CONACT = XL(2) * DENLIQ !计算Acetone浓度CCCC CALCULATE RATES OF REACTIONSCC The rates must be set for every single component exists in theC system(both reactants and products) according to stoichiometry.CC RATES - The rates for all componentsCC Acetone + Allyl Alcohol -> N-Propyl PropionateC !动力学方程主代码 FTERM = REALR(1) * EXP( -REALR(2) / PPGLOB_RGAS / RTEMP ) !计算k值,其中real(1), real(2)均为subroutine中的可变整型量 STERM = conaa * conact**0.5 RATE= FTERM * STERM * RCSTRR_VOLRC ! ??不知道为什么要乘以反应器体积,难道求速率方程式时是以单位体积为基准? RATES(1) = -rate !每个组分必须均指定速率(非常重要否则计算出错) RATES(2) = -rate RATES(3) = rateCC Checking Mass Balance for RATES Vector !核对质量是否守恒C SUMR = 1.0 DO102 I=1,NCOMP_NCC SUMR = SUMR + RATES(I)*B(XMW(I)) 102 CONTINUE IF(DABS(1.0 - SUMR) .GT. 1E-6) THEN WRITE(USER_NHSTRY,*) + 'CalculatedRates Not in Mass Balance!' WRITE(USER_NHSTRY,*) + 'Errorsin User Kinetics Subroutines!' ENDIF write(USER_NHSTRY,*)'volrc = ', RCSTRR_VOLRC write(USER_NHSTRY,*)'vfrrc = ', RCSTRR_VFRRC RETURN#undef P_NPOFF1 END
问题: 1LMW = IPOFF1_IPOFF1(306) !??? 没找到依据,猜测确定组分数据区域的DMS_PLEX偏移量 2#include "dms_ipoff1.cmn" !?? aspen内部之间相互调用的存储空间 3 RATE= FTERM *STERM * RCSTRR_VOLRC ! ??不知道为什么要乘以反应器体积,难道求速率方程式时是以单位体积为基准?
体会:首先感谢论坛提供的资料,以上实例来自论坛,大家可以搜索下载。上面注释中的页码对应ASPEN_PLUS_10.0_用户模型.pdf。对于aspen调用fortran动力学方程,正处于学习阶段。由于论坛此方面的资料较少,特开此贴希望大家积极参与讨论,如果上述有不妥之处,也希望能者不吝指教。对于程序的书写,谈一下个人感受。Aspen自带有模板D:(安装盘)\Program Files (x86)\AspenTech\Aspen Plus V7.3\Engine\User下的usrkin.f。可以在此基础上添加主代码即可。Top: 1 fortran 程序名字不要超过6字符,程序内均采用双精度型变量 2 合理调用aspen内部物性参数(难点),注意偏移量的影响 3 对方程式每个组分指定反应速率(曾经漏掉过,一直报错) 4 最好核对质量守恒,曾经见过一个程序没有此段代码。否则容易出错(曾经写过一程序,一直提示质量不守恒,不知是不是缺少此段代码的过)
以下隐藏为bkp文件及相应ppt(论坛可找到)
http://meng.horse/xwb/images/bgimg/icon_logo.png 该贴已经同步到 六月痕的微博 不会很伤啊 请问,能外挂c++的库吗 六月痕 发表于 2015-1-10 10:25
不是C开头的行代码就是主体(能表达的语句)!仔细阅读Fortran的语法规则会有帮助
现在大概搞清楚这些代码的含义了。多谢啦。
可是新的问题又来了,我运行的时候出现错误,说有unknown PKW-input. 我在想,是不是因为我用了高版本的8.4打开低版本的7.3就出现了这个问题啊?你有碰到过吗?改如何解决呢?求赐教啊,多C:\Users\dly\Desktop\1谢啦。 caiqing90 发表于 2014-12-29 16:15
看了半天ppt,硬是看不懂。有没有跟详细更基础的资料呀。有视频教程最好了
ppt算是详细的了,这方面资料较少,曾经逛了N个论坛,这里还算多的,下附链接,供参考
fortran - 淘帖 - 马后炮化工论坛 - Powered by Mahoupao Technology
http://meng.horse/forum.php?mod=collection&action=view&ctid=94&fromop=my caiqing90 发表于 2015-1-12 14:09
现在大概搞清楚这些代码的含义了。多谢啦。
可是新的问题又来了,我运行的时候出现错误,说有unknown PK ...
这是运行的附件内容?首先,对于高版本不了解,8.0以后貌似变化挺大,不敢乱说。其次,没查到PKW含义,猜测是变量没被定义,所以程序不识别 幸运的咖喱小子 发表于 2015-11-19 22:13
楼主,你好,我想问一下,通过fortran子程序可以设置同一反应器内的多个化学反应的动力学参数吗?看了一些 ...
有这样的例子,E:\Program Files\AspenTech\Aspen Plus V7.3.2\GUI\Examples\Entrained Flow Coal Gasifier caiqing90 发表于 2014-12-31 15:32
楼主,请问你知道如何查看aspen plus中自带的例子的fortran语句吗?我找不到他的主代码呀,求赐教。
不是C开头的行代码就是主体(能表达的语句)!仔细阅读Fortran的语法规则会有帮助
楼主,我想问下,这个反应动力学代码适不适用于反应精馏塔呢?我要是写反应精馏塔的代码需要用到密度跟相对分子质量,还有体积之类的参数,能不能借用您这里面的相对分子质量,和密度的代码呢?还有计算密度的公式时:STWORK_VL代表什么意思呢? wangyunlai1231 发表于 2015-12-23 08:13
有这样的例子,E:\Program Files\AspenTech\Aspen Plus V7.3.2\GUI\Examples\Entrained Flow Coal Gasifi ...
您好,我向请问一下,关于aspen安装文件里附带的例子全在您给的路径example里了吗? 如果在fortran中没有定义组分的顺序,那么组分的顺序就会和aspen中component中的顺序是一样的,这个时候写rates(1),rates(2)......的时候就要特别注意,记得和组分相对应,而不是只看那个反应式,否则会出现质量不守恒的情况。
wangyunlai1231 发表于 2015-12-23 08:13
有这样的例子,E:\Program Files\AspenTech\Aspen Plus V7.3.2\GUI\Examples\Entrained Flow Coal Gasifi ...
请问Aspen Plus11.1版本里有吗,我怎么没有找到,能否给个列子,谢谢 楚天湘水 发表于 2013-12-13 18:18
如果在fortran中没有定义组分的顺序,那么组分的顺序就会和aspen中component中的顺序是一样的,这个时候写r ...
如果用calcuator的话,rate在哪里定义呢?求指教{:1106_366:} SPECIFIC VOLUME MODEL VL2RKT WAS CALLED WITH INVALID INPUT:ALL MOLE FRACTIONS ARE ZERO. PROPERTIES WILL NOT BE CALCULATED. 请问这个错误应该从那儿入手改正呢? 冰海烈焰 发表于 2015-1-14 21:12
楼主有没有一些资料解释NCOMP-NCC含义?新手入门,不知道该怎么学习。
官方手册V7.3,至于高版本的,没有,即使变动也不会太大
胡小倪 发表于 2014-10-22 10:52
想问楼主一下你程序里面的NCOMP_NCC表示的是啥?前半部分应该是组分,那后面的NCC是指啥?
NCOMP_NCC is the number of conventional components 楼主,你好,我想问一下,通过fortran子程序可以设置同一反应器内的多个化学反应的动力学参数吗?看了一些例子,都是针对某一个反应的,不知道有不有涉及多个反应的例子?
好像一些简单的编程可以直接在CALCULATOR里面进行fortran语言编程,但是偶不会,连在calculator里设置变量都出问题,现在又急需用到这块,太需要学习学习了
guanxian1990 于 2014-05-10 20:49:20 补充以下内容:
看着都觉得头大啊 aspen外挂fortran动力学方程探讨 [修改]
- 本文出自马后炮化工论坛,原文地址aspen外挂fortran动力学方程探讨 [修改]
- 本文出自马后炮化工论坛,原文地 楼主是高手啊,一般人不会外挂fortran的,学习学习
- 本文出自马后炮化工论坛,原文地址:http://meng.horse/thread-76210-1-1.html 六月痕 发表于 2015-1-15 13:14
ppt算是详细的了,这方面资料较少,曾经逛了N个论坛,这里还算多的,下附链接,供参考
fortran - 淘帖 - ...
谢谢分享 kenny4256 发表于 2014-3-27 08:15
楼主是高手啊,一般人不会外挂fortran的,学习学习
请问怎么将Fortran语句外挂上8.4的ASPEN bigZyoyo 发表于 2016-7-28 15:48
最近也在看,编译成功,但是计算提示零除,不知道是哪里有错?
请问您解决这个问题了吗? {:1106_361:}楼主fortran嵌入遇到很棘手问题望给予帮助 谢谢了http://meng.horse/thread-81846-1-1.html zjwmcl 发表于 2013-12-7 21:06
都有什么啊?
附件是讲解用户动力学程序的ppt,压缩包是bkp文件和fortran文件 对于以浓度为推动力的反应,反应速率单位是kmole/(cum*s),物流输出不可能带有cum,所以要乘以反应器体积。 resgroupinc 发表于 2014-1-29 04:02
请问,能外挂c++的库吗
原理上应该可以,没见过。只知道matlab,vb可以 楼主,请问你知道如何查看aspen plus中自带的例子的fortran语句吗?我找不到他的主代码呀,求赐教。
六月痕 发表于 2014-10-22 23:52
NCOMP_NCC is the number of conventional components
明白了,谢谢你 请问一下aspen自带例子的外挂fortran在哪里呢?那个文件夹里面只有一个.DLL和.opt的文件。谢谢~~~ 六月痕 发表于 2015-1-15 13:06
官方手册V7.3,至于高版本的,没有,即使变动也不会太大
谢谢楼主。 想问楼主一下你程序里面的NCOMP_NCC表示的是啥?前半部分应该是组分,那后面的NCC是指啥?
国内应该出一本系统讲解ASPEN二次开发的书就好了,现在都是看着帖子和论文摸索。。 正在学习用Fortran编辑控制方程,连接到Aspen反应模块中,拿来学习。谢谢楼主。 看了半天ppt,硬是看不懂。有没有跟详细更基础的资料呀。有视频教程最好了{:1106_389:} 请问前辈 在计算反应物浓度时,XL具体代表的是什么意思,是指摩尔分率吗? roger309-l0 发表于 2013-12-11 10:26
謝謝樓主分享
好资料,一定好好学习! 不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不 楼主有没有一些资料解释NCOMP-NCC含义?新手入门,不知道该怎么学习。 不知楼主在哪里学到具体的的。各种代码完全看不懂啊。敬请指教。 最近也在看,编译成功,但是计算提示零除,不知道是哪里有错? 正在探索中谢楼主分享学习了~~~~~~~~~ 这确实是很需要探讨的问题!尤其对反应器来说很有必要! 现在新的案例中只能找到obj和dll文件,其他的找不到 楼主是高手啊,一般人不会外挂fortran的,学习学习
楼主是高手啊,一般人不会外挂fortran的,学习学习。 说实在的这些变量名真的头大 请问楼主,如果是以催化剂质量为基准的呢? 以前编过一些,有一些功能需要自己试着来 非常感谢楼主,正需要的fortran 编程资料 正需要fortran资料,学习学习,楼主辛苦了。
都有什么啊? 看不懂呀 六月痕,亲,可不可以关注下我哦[抱抱]
http://meng.horse/xwb/images/bgimg/icon_logo.png 来自 Fennie梓珊 的新浪微博 好资料,不学不能说会ASPEN 看不懂,代码控 限售条件股份 下下来学习学习 给力!高手啊 没整过!围观! 好资料,正好需要哦 是关于Fortran的ppt吗,先看看 一提到编程,头就大了。 正需要fortran资料,学习学习,楼主辛苦了。 {:1106_362:}
楼主厉害 正在做动力学的问题,希望有所帮助 謝謝樓主分享
页:
[1]
2