好久不见H 发表于 2020-3-26 22:23:29

fortran动力学子程序调到aspen中 运行报错

参考论坛上的帖子,用fortran编写了一个动力学子程序,但是调到aspen中运行报错,我感觉是子程序编写的问题,请路过的各位前辈看一下哪错了,附件是模拟的文件和子程序。图片是反应速率方程,希望各位前辈指点,不胜感激,谢谢各位。
https://meng.horse/forum.php?mod=attachment&aid=MTEwMzA4fDQ1OGI5NjEwfDE1ODUyMzI1MDB8NTEzNTQzfDIxODA2NQ%3D%3D&noupdate=yes&nothumb=yes

好久不见H 发表于 2020-3-26 22:23:29

C    October 7 KL For Workshop Template
C    September 25 KL
C
C   User Kinetics Subroutine for RCSTR, RPLUG, RBATCH, PRES-RELIEF
C
      SUBROUTINE USRKIN (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
      IMPLICIT NONE
C
C   DECLARE VARIABLES USED IN DIMENSIONING
C
      INTEGER NSUBS, NINT,NPO,   NIWORK,NWORK,
   +      NC,    NR,    NTCAT, NTSSAT,NCOMP,
   +      NRALL, NUSERV,NINTR, NREALR,NIWR,
   +      NWR
C
#include "ppexec_user.cmn"
      EQUIVALENCE (RMISS, USER_RUMISS)
      EQUIVALENCE (IMISS, USER_IUMISS)
C
C
C
C
C.....RCSTR...
#include "rcst_rcstri.cmn"
#include "rxn_rcstrr.cmn"
C
C.....RPLUG...
#include "rplg_rplugi.cmn"
#include "rplg_rplugr.cmn"
      EQUIVALENCE (XLEN, RPLUGR_UXLONG)
      EQUIVALENCE (DIAM, RPLUGR_UDIAM)
C
C.....RBATCH...
#include "rbtc_rbati.cmn"
#include "rbtc_rbatr.cmn"
C
C.....PRES-RELIEF...
#include "rbtc_presrr.cmn"
C
C.....REACTOR (OR PRES-RELIEF VESSEL) PROPERTIES...
#include "rxn_rprops.cmn"
      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"
      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"
      EQUIVALENCE (IB(1), B(1))
C
C   DECLARE ARGUMENTS
C
      INTEGER IDXSUB(NSUBS),ITYPE(NSUBS), INT(NINT),
   +      IDS(2),NBOPST(6,NPO),IWORK(NIWORK),
   +      IDX(NCOMP),   INTR(NINTR),IWR(NIWR),
   +      NREAL, KCALL, KFAIL, KFLASH,I
      REAL*8 SOUT(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*8 RATALL(NRALL),USERV(NUSERV),
   +       REALR(NREALR),WR(NWR),      XCURR
C
C
C   DECLARE LOCAL VARIABLES
C
      INTEGER IMISS, MKBAS, MKPHAS,MTAPP, MKBASS,
   +      MTAPPS,LMW
      REAL*8 REAL(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 , KD , PCH3, PCO, PH2, KCH3O,
   +       KH, FENZI, FENMU
      REAL*8 T, P, YCH3, YCO, YH2, FCH3, FCO, FH2
      INTEGER XMW
      REAL*8 PHI(NCOMP),DPHI(NCOMP)
      INTEGER N, KDIAG,KPHI,KER
#include "dms_ipoff1.cmn"
C
C   INITIALIZE RATES
C
C
CSTATEMENT FUNCTIONS FOLLOW
C
C
C   BEGIN EXECUTABLE CODE
C
      XMW(I) = LMW + I
C
CSET PLEX OFFSETS
C
      LMW = IPOFF1_IPOFF1(306)
      DO 100 I = 1, NC
      RATES(I) = 0D0
      XL(I)    = 0D0
100CONTINUE
C
      DO 101 I = 1, NCOMP
      XL(IDX(I)) = X(I)
101CONTINUE
C
C   The structure in the array SOUT is as follows:
C
C   SOUT(1) - SOUT(NCC) : Component flowrates(kg-moles/sec)
C   SOUT(NCC+1)         : Total flowrates(kg-moles/sec)
C   SOUT(NCC+2)         : Temperature(K)
C   SOUT(NCC+3)         : Pressure(N/SQM)
C   SOUT(NCC+4)         : Mass enthalpy(J/KG)
C   SOUT(NCC+5)         : Molar vapor fraction
C   SOUT(NCC+6)         : Molar liquid fraction
C   SOUT(NCC+7)         : Mass entropy(J/KG-K)
C   SOUT(NCC+8)         : Mass density(KG/CUM)
C   SOUT(NCC+9)         : Molecular Weight
C
C   Details of this infomation can be found in the User Guide
C   on page 17-10 for 8.5-6 or Reference Manual Vol. 6, User Models
C   for Release 9.
C
C   Set Reactor Temperature
C
      

      CALL PPMON_FUGV(TEMP,PRES,Y,NC,IDX,NBOPST,KDIAG,KPHI,PHI,
   +                DPHI,KER)
C
C   BEGIN EXECUTABLE CODE
C
      T=TEMP
      P=PRES
      YCH3=Y(1)
      YCO=Y(2)
      YH2=Y(3)
   
C
      PCH3=YCH3*P
      PCO=YCO*P
      PH2=YH2*P
   
C
C
      FCH3=PCH3*PHI(1)
      FCO=PCO*PHI(2)
      FH2=PH2*PHI(3)
      
      
C
C   Get liquid mixture density
C
      DENLIQ = 1.0 / STWORK_VL
C
C   Compute Concentration for reactants:
C
C   CONC(i) = X(i) * RHO
C
      CONAA = XL(1) * DENLIQ
      CONACT = XL(2) * DENLIQ
      
C
C
C
C   CALCULATE RATES OF REACTIONS
C
C   The rates must be set for every single component exists in the
C   system(both reactants and products) according to stoichiometry.
C
C   RATES - The rates for all components
C
C   Acetone + Allyl Alcohol -> N-Propyl Propionate
C
      KD = REALR(1) * EXP( -REALR(2) / PPGLOB_RGAS / TEMP )
      STERM = conaa * conact**0.5
      KCH3O = EXP ( REALR(3) / PPGLOB_RGAS - REALR(4) / TEMP )
      KH = EXP ( REALR(5) / PPGLOB_RGAS - REALR(6) /PPGLOB_RGAS /TEMP)
      FENZI= KD*KCH3O*(FCH3/FH2**0.5)*(1-FH2**0.5*FCO/KD/FCH3)
      FENMU = (1+KCH3O*FCH3/FH2**0.5) * (1+KH**0.5*FH2**0.5)
      RATE = FENZI * STERM / FENMU
      RATES(1) = -rate
      RATES(2) = rate
      RATES(3) = 2*rate
C
C   Checking Mass Balance for RATES Vector
C
      SUMR = 1.0
      DO 102 I=1,NCOMP_NCC
      SUMR = SUMR + RATES(I)*B(XMW(I))
102CONTINUE
      IF (DABS(1.0 - SUMR) .GT. 1E-6) THEN
         WRITE(USER_NHSTRY,*)
   +          'Calculated Rates Not in Mass Balance!'
         WRITE(USER_NHSTRY,*)
   +          'Errors in User Kinetics Subroutines!'
      ENDIF
       write(USER_NHSTRY,*) 'volrc = ', RCSTRR_VOLRC
      write(USER_NHSTRY,*) 'vfrrc = ', RCSTRR_VFRRC
       RETURN
#undef P_NPOFF1
      END

好久不见H 发表于 2020-3-26 22:23:29

没有人嘛{:525:}

death2081 发表于 2020-3-26 22:23:29

楼主了解集总反应动力学模型怎么用Fortran编写么

Reborn柒 发表于 2020-3-26 22:23:29

最近也在学习,还没入门,等浓明白了回来看看

独孤伊人 发表于 2020-3-26 22:23:29

请问群主解决了吗?我的运行也会报错:severe error:Fortran invalid operation encounterd
页: [1]
查看完整版本: fortran动力学子程序调到aspen中 运行报错