楚天湘水 发表于 2013-1-9 12:14:29

Aspen Dynamic 自带例题反应精馏MTBE Fortran代码请教

本帖最后由 楚天湘水 于 2013-1-9 12:15 编辑

大家好:最近两天看了一下反应精馏MTBE的合成,反应式和动力学方程如下




731271733 发表于 2013-1-9 12:14:29

楚天湘水 发表于 2013-1-9 12:19
C    thermodynamic rate constant DKAC    =============================== 9010FORMAT(1X,3(G13.6,1X))...

楼主,请教两个问题:
1、你所贴的程序目的是计算反应速率,而计算反应速率需要活度(程序中的ACTIVE变量)。但是为什么在计算活度前先调用了PPMON_FUGLY?这是用来计算逸度系数的。而且程序中计算活度时也没有用到逸度系数(程序中的PHI变量)。
2、计算逸度系数时,程序是这样调用的CALL PPMON_FUGLY(T,P,X(1,1)
    +    ,Y,NCOMP,IDX,NBOPST,KDIAG,KPHI,PHI,DPHI,KER)。
其中的参数X(1,1)表示液相中甲醇的摩尔分数。这里为什么用甲醇的,而不是用其他组分的,如IC4、NC4、MTBE,对应的应为X(2,1)、X(3,1)、X(4,1)?

楚天湘水 发表于 2013-1-9 12:20:50

本帖最后由 楚天湘水 于 2013-1-9 14:34 编辑

C    个人感觉这个值就是每块板所装填的催化剂吧,单位可能是g,所以乘以-3次方C   但代码提供的注释又说是use mass holdup askgcata,不知道二者有什么关系    RATES(K_IC4)=-RATNET   RATES(K_MEOH)=-RATNET   RATES(K_MTBE)=RATNET   RATES(K_NC4)=0.D+00    IF(IDBG.GE.1)THEN       WRITE(MAXWRT_MAXBUF(1),9030) NSTAGE,RATE,RATNET       CALL DMS_WRTTRM(1)   ENDIF   RETURN#undef P_MAX3C好像是释放一个宏的意思,具体不太懂 ,求解释。   END 以上代码红色字体是我加上的注释,同时还加了一张图片。其他部分是aspen提供的例子的源码。现在我再说说我的问题,大家一起讨论一下。1、我感觉这个程序好像是每计算一块存在反应的塔板,都得调用一次这个程序,这个程序每执行一次,都会有一些中间的变量写入文件,但这些变量写入了哪个文件,我不清楚,也查不到这些中间变量的值。2、程序中并没有输入塔板数,温度等变量,是不是程序可以自动调用aspen中的这些值?具体怎么调用的呢?3、IDBG是个什么变量呢,因为我改变他的命名为IDBH,可以通过aspcomp的编译,但aspen运行这个程序不错误,是不是像KER一样,是某个函数的一个输出值呢?查了好几版本的user module ,都没查到这个值或者函数?他是怎样实现又0到1的变化的呢?求解释。4、DMS_GTPRPS是自定义的函数呢?还是aspen user module自身就有的函数呢?5、#undef P_MAX3的意思?网上查了一下,好像是释放宏的意思,是不是程序运行结束,要释放调用过的aspen user module的公用函数呢?没有学过Fortran,求解释。 谢谢大家了,关于Fortran动力学的资料太少了,欢迎大家一起讨论。同时上传这个例子的BKP文件和相关的.f文件(因为06和07的f文件有一点小小的改变,故两个都上传)这几个case是可以在aspen安装的目录下找到的: \AspenTech\Aspen Plus Dynamics V7.1\Examples 文件名为DyMTBE.BKP 和RaMTBE.f 另外美国里海大学威廉鲁宾教授和台湾大学余政靖教授合著的书Reactive Distillation Design and Control第九章也提到了这个例子,但没具体解释代码。我上传第九章节,有兴趣的可以看一看。

附件已经在一楼了,谢谢大家的关注。

PSESKY 发表于 2013-1-9 12:14:29

楚天湘水 发表于 2013-1-9 12:20
C    个人感觉这个值就是每块板所装填的催化剂吧,单位可能是g,所以乘以-3次方C   但代码提供的注释又说 ...

回應一下:
1.2.ASPEN計算會將中間的計算值全部存在PLEX裡面,那是一個很大的舉陣。所有的資料以及參數都會儲存在裡面。
   我們只要能夠從PLEX抓出我們需要參數即可在FORTRAN中計算。
   ASPEN--->FORTRAN CALCULATE--->ASPEN (REPEAT*)
   要抓那個參數要去查USER MODEL對每個不同參數的代號的命名,可從手冊上得知。

3.   IDBG,KER那個是執行CODE,例如KER=1代表要求程式計算出你所想知道的值
                                                   KER=0代表不要程式計算任何值
      (KER有0-3的變化,各有不同意思,在手冊上有,可直接搜尋KER即可找出)

4.   DMS_*一般是指ASPEN裡面的運作,你的例子要求ACTIVITY,在新版中有不同的呼叫方式。
      請在手冊上搜尋,DMS_ALIPOFF3(24),新版2006.5後因應儲存PLEX便利性
      要抓ACTIVITY已經改變成ALIPOFF而非書上的那種寫法。


5.   那句可刪掉也可以正常運行,詳細功能不清楚。
      建議可以從ASPEN的FORTRAN範例(USER跟KEN)下手研究


6.   關於寫出FORTRAN抓的數值,程式會在相圖目錄下產生一個新的文字檔*.dat。可用WORDPAD打開
      可參考OPEN OPEN(10,FILE='fortran.DAT')
               WRITE(10,想看的變數)

祝順利

楚天湘水 发表于 2013-1-9 12:14:29

PSESKY 发表于 2013-6-17 17:06
回應一下:
1.2.ASPEN計算會將中間的計算值全部存在PLEX裡面,那是一個很大的舉陣。所有的資料以及參數 ...

不好意思,今天才看到你的回复。
首先谢谢你的热心回复,1,2的回答让我明白了PLEX是什么东西,以后还要多关注这个。
文件的读写过段时间在研究一下。
台湾大学在这方面做的比较好,一段时间我也曾多次登录台湾大学PSE的网站下载资料学习,希望你能在论坛多多发言,共同进步。

damoguyan 发表于 2013-1-9 12:14:29

IDBG是个什么变量呢,你只赋给了它初值,它中间怎么变的,为什么会大于1

damoguyan 发表于 2013-1-9 12:14:29

x(1,1)中的x是什么样的一个矩阵,也不是很清楚,求指导

damoguyan 发表于 2013-1-9 12:14:29

如果IDBG值就是0的话,那接下来的几个输出和计算就不运行了

xinquanliuyun 发表于 2013-1-9 12:14:29

楼主求指教啊?最近在做这个但是一直找不到动力学数据,楼主qq多少?我的505606742

hbeden 发表于 2013-1-9 12:14:29

我也想问楼主个问题,偏移量 offset 是什么玩意。

生命之怒放 发表于 2013-1-9 12:14:29

{:1106_362:} xue xi le ,tai ganxie louzhu

liuhui8803 发表于 2013-1-9 12:14:29

学习了,感谢楼主

18562317750 发表于 2013-1-9 12:14:29

DECLARE VARIABLES USED IN DIMENSIONING
变量是如何选取的?请大神们指教

18562317750 发表于 2013-1-9 12:14:29

楚天湘水 发表于 2013-7-8 10:14
不好意思,今天才看到你的回复。
首先谢谢你的热心回复,1,2的回答让我明白了PLEX是什么东西,以后还要 ...

请问编程中变量是如何选取的??

liangyf2010 发表于 2013-1-9 12:14:29

请问有没有这方面可参考的书籍资料

试剑阁阁主 发表于 2013-1-9 12:14:29

XUEIXIYIXIA

蔡育群 发表于 2013-1-9 12:14:29

请问楼主,图中的real值与integer是如何设定的

carbon002 发表于 2013-1-9 12:14:29

感觉楼主分享,最近正在学习动力学的应用,感觉难度比较大

楚天湘水 发表于 2013-1-9 12:17:38

代码C***********************************************************************C LICENSED MATERIAL.PROPERTY OFASPEN TECHNOLOGY, INC.TO BE       C TREATED AS ASPEN TECH PROPRIETARYINFORMATION UNDER THE TERMS       COFTHE ASPEN PLUSSUBSCRIPTION AGREEMENT.                           *C***********************************************************************C-----------------------------------------------------------------------C      COPYRIGHT (C) 1994C         ASPEN TECHNOLOGY, INC.C         CAMBRIDGE, MAC-----------------------------------------------------------------------CC    calculation of MTBE synthesis reaction rateC    User Kinetics Subroutine for RADFRAC, BATCHFRAC, RATEFRACC   SUBROUTINE RAMTBE (NSTAGE, NCOMP,NR,   NRL,   NRV,    2                   T,      TLIQ,   TVAP,   P,       VF,   3                   F,      X,      Y,      IDX,   NBOPST,    4                   KDIAG,STOIC,IHLBAS, HLDLIQ,TIMLIQ,    5                   IHVBAS,HLDVAP,TIMVAP, NINT,    INT,    6                   NREAL,REAL,   RATES,RATEL,   RATEV,    7                   NINTB,INTB,   NREALB, REALB,   NIWORK,    8                   IWORK,NWORK,WORK)CC   VARIABLES IN ARGUMENT LISTCC      VARIABLEI/OTYPE    DIMENSION   DESCRIPTION AND RANGEC      NSTAGE   I    I         -          STAGE NUMBERC      NCOMP      I    I         -          NUMBER OF COMPONENTSC      NR         I    I         -          TOTAL NUMBER OF KINETICC                                          REACTIONSC      NRL      I    I         -          NUMBER OF LIQUID PHASEC                                          KINETIC REACTIONSC      NRV      I    I         -          NUMBER OF VAPOR PHASEC                                          KINETIC REACTIONSC      T          I    R         -          STAGE TEMPERATURE (K)C      TLIQ       I    R         -          LIQUID TEMPERATURE (K)C                                             *USED ONLY BY RATEFRAC **C      TVAP       I    R         -          VAPOR TEMPERATURE (K)C                                             * USED ONLY BYRATEFRAC **C      P          I    R         -          STAGE PRESSURE (N/SQ.M)C      VF         I    R         -          VAPOR FRACTIONC      F          I    R         -          TOTAL FLOW ON STAGEC                                          (VAPOR+LIQUID)(KMOL/SEC)C      X          I    R      NCOMP,3   LIQUID MOLE FRACTIONC      Y          I    R      NCOMP       VAPOR MOLE FRACTIONC      IDX      I    I      NCOMP       COMPONENT INDEX VECTORC      NBOPST   I    I         6          OPTION SET BEAD POINTERC      KDIAG      I    I         -          LOCAL DIAGNOSTIC LEVEL
C      STOIC      I    R      NCOMP,NR    REACTION STOICHIOMETRYC      IHLBAS   I    I         -          BASIS FOR LIQUIDC                                          HOLDUP SPECIFICATIONC                                          1:VOLUME,2:MASS,3:MOLEC      HLDLIQ   I    R         -          LIQUID HOLDUPC                                             IHLBAS    UNITSC                                          1         CU.M.C                                             2         KGC                                          3         KMOLC      TIMLIQ   I    R         -          LIQUID RESIDENCE TIMEC                                          (SEC)C      IHVBAS   I    I         -          BASIS FOR VAPORC                                          HOLDUP SPECIFICATIONC                                          1:VOLUME,2:MASS,3:MOLEC      HLDVAP   I    R         -          VAPOR HOLDUPC                                          IHVBAS    UNITSC                                          1         CU.M.C                                             2         KGC                                          3         KMOLC      TIMVAP   I    R         -          VAPOR RESIDENCE TIME(SEC)C      NINT       I    I         -          LENGTH OF INTEGER VECTORC      INT       I/O   I      NINT      INTEGER VECTORC      NREAL      I    I         -          LENGTH OF REAL VECTORC      REAL      I/O   R      NREAL       REAL VECTORC      RATES      O    R      NCOMP       COMPONENT REACTIONRATESC                                             (KMOL/SEC)C      RATEL      O    R      NRL         INDIVIDUAL REACTIONRATESC                                             INTHE LIQUID PHASEC                                          (KMOL/SEC)C                                             *USED ONLY BY RATEFRAC **C      RATEV      O    R      NRV         INDIVIDUAL REACTIONRATESC                                             INTHE VAPOR PHASEC                                          (KMOL/SEC)C                                             * USED ONLY BY RATEFRAC **C      NINTB      I    I         -          LENGTH OF INTEGER VECTORC                                          (FROM UOS BLOCK)C      INTB      I/O   I      NINTB       INTEGER VECTORC                                             (FROM UOS BLOCK)C      NREALB   I    I         -          LENGTH OF REAL VECTORC                                          (FROM UOS BLOCK)C      REALB   I/O   R      NREALB      REAL VECTORC                                             (FROM UOS BLOCK)C      NIWORK   I    I         -          LENGTH OF INTEGER WORK

楚天湘水 发表于 2013-1-9 12:18:46

本帖最后由 楚天湘水 于 2013-1-9 14:32 编辑

C                                             VECTOR
C       IWORK   I/O   I         NIWORK      INTEGER WORK VECTOR
C       NWORK      I    I          -          LENGTH OF REAL WORK VECTOR
C       WORK      I/O   R         NWORK       REAL WORK VECTOR
C
C***********************************************************************
C
      IMPLICIT NONE
C
C   DECLARE VARIABLES USED IN DIMENSIONING
C
      INTEGER NCOMP, NR,    NRL,   NRV,   NINT,
   +      NINTB, NREALB,NIWORK,NWORK, N_COMP
C
C   DECLARE PARAMETERS & VARIABLES USED IN PARAMETERS
C
      INTEGER K_MEOH,K_IC4, K_NC4, K_MTBE
      PARAMETER(K_MEOH=1)
      PARAMETER(K_IC4=2)
      PARAMETER(K_NC4=3)
      PARAMETER(K_MTBE=4)
      PARAMETER(N_COMP=4)

C   component order
C   ===============
C   this routine assumes that the components are in this order :


C
C   DECLARE ARGUMENTS
C
      INTEGER IDX(NCOMP),   NBOPST(6),    INT(NINT),
   +      INTB(NINTB),IWORK(NIWORK),NSTAGE,
   +      KDIAG, IHLBAS,IHVBAS,NREAL, KPHI,
   +      KER,   L_GAMMA,      J
      REAL*8 X(NCOMP,3),   Y(NCOMP),
   +       STOIC(NCOMP,NR),   RATES(NCOMP),
   +       RATEL(NRL),   RATEV(NRV),
   +       REALB(NREALB),WORK(NWORK),B(1),T,
   +       TLIQ,TVAP,P,   VF,    F
      REAL*8 HLDLIQ,TIMLIQ,HLDVAP,TIMVAP,TZERO,
   +       FT
C
CC    DECLARE SYSTEM FUNCTIONSC   REAL*8 DLOGCC    DECLARE LOCAL VARIABLESC   INTEGER IMISS, IDBG   REAL*8 REAL(NREAL),RMISS,C1,    C2,    C3,    +       C4,    C5,   C6,    DKA,   DKR,    +       Q,   RATE, RATNET   REAL*8 PHI(N_COMP)   REAL*8 DPHI(N_COMP)   REAL*8 ACTIV(N_COMP) C#include "ppexec_user.cmn"   EQUIVALENCE (RMISS, USER_RUMISS)   EQUIVALENCE (IMISS, USER_IUMISS)CC#include "dms_maxwrt.cmn"C user model 的解释是write to the Terminal File #include "dms_ipoff3.cmn"C user model 的解释是directly access some calculated or intermediate properties from theplex   REAL*8 DMS_GTPRPSC:这一句没看懂,查不到DMS_GTPRPS的意思,CIn version 2006, a projectto reduce memory usage by Aspen Plus has Cresulted in a major changeto the way these calculated properties are stored. CAs a result, labeled commonIPOFF3_IPOFF3 can no longer be used in this #include "dms_plex.cmn"   EQUIVALENCE(B(1),IB(1)) CC   DATA STATEMENTSC   DATA IDBG/0/C   IDBG参数设置为0 ,赋值语句,非执行语句C   IDBG参数由0到1怎么变化的,不清楚?C   我尝试改变IDBG的命名,比如改成IDBH,可以通过aspcomp编译,但运C    行aspen的时候会出现错误,在user model里面查找IDBG,没有找到这个参数。

楚天湘水 发表于 2013-1-9 12:19:37

本帖最后由 楚天湘水 于 2013-1-9 14:29 编辑

C    thermodynamic rate constant DKAC    =============================== 9010FORMAT(1X,3(G13.6,1X)) 9000FORMAT(' fugly failed at T=',G12.5,' P=',G12.5,' ker=',I4) 9020FORMAT(' compo ',I3,' mole-frac=',G12.5,' activity=',G12.5) 9030FORMAT(' stage=',I4,' spec-rate=',G12.5,' net-rate=',G12.5)CC    BEGIN EXECUTABLE CODEC   TZERO=298.15D+00   C1=-1493.D+00   C2=-77.4D+00   C3=0.508D+00   C4=-0.913D-03   C5=1.11D-06   C6=-0.628D-09   FT=C1*(1.D+00/T-1.D+00/TZERO)    *+C2*DLOG(T/TZERO)    *+C3*(T-TZERO)    *+C4*(T*T-TZERO*TZERO)    *+C5*(T**3-TZERO**3)    *+C6*(T**4-TZERO**4)    DKA=284D+00*DEXP(FT) C    reaction rate constantC    ======================      DKR=3.67D+12*DEXP(-11110.D+00/T)    IF(IDBG.GE.1)THEN       WRITE(MAXWRT_MAXBUF(1),9010) FT,DKA,DKR       CALL DMS_WRTTRM(1)   ENDIFC这些写入的值最后可以在哪查看呢?没有找到。C    calculation of components activitiesC    ====================================C    calculate only fugacity coefficient   KPHI=1 C    fugacity coefficient of components in the mixture   CALL PPMON_FUGLY(T,P,X(1,1)    +    ,Y,NCOMP,IDX,NBOPST,KDIAG,KPHI,PHI,DPHI,KER)   IF(KER.NE.0)THEN       WRITE(MAXWRT_MAXBUF(1),9000) T,P,KER       CALL DMS_WRTTRM(1)   ENDIFC    KER 的user module 解释是:Error return code: C            ≠0 if an error or warning conditionoccurred      =0 otherwiseC    set offset to get activity coefficientsC    (see vol5, p 11-11 and asp$sor search for 'GAMMAL')C   L_GAMMA=IPOFF3_IPOFF3(24) C    calculate activities for plex data   DO J=1,NCOMPC       ACTIV(J)=DEXP(B(L_GAMMA+J))*X(J,1)C       aspen2006提供的例子计算活度是用的上面的公式,V7.1的例子改用了下面的公式,DMS_GTPRPS没看明白,求解释,24是活度系数的代码       ACTIV(J)=DEXP(DMS_GTPRPS(24,J))*X(J,1)   END DO      IF(IDBG.GE.1)THEN       DO J=1,NCOMP         WRITE(MAXWRT_MAXBUF(1),9020) J,X(J,1),ACTIV(J)         CALL DMS_WRTTRM(1)       END DO   ENDIF C    reaction rateC    =============C    RATE : mol/s/kgcataC    Q    : equiv/kgcataC    DKR: mol/s/equiv   Q=4.9D+00   RATE=Q*DKR*    *      (ACTIV(K_IC4)/ACTIV(K_MEOH)    *    -ACTIV(K_MTBE)/DKA/ACTIV(K_MEOH)**2)C    use mass holdup as kgcataC SCRATCH THAT...THATS WITH VERSION 9, IN 10 USE REALB(1) AS TOTAL MASS.   RATNET=RATE*REALB(1)*1.D-03CREALB user module的解释是:Vector of realparameters (from unit operation block UserSubroutine form)。下图中1000就应该是REALB(1)。C
页: [1]
查看完整版本: Aspen Dynamic 自带例题反应精馏MTBE Fortran代码请教