fortran动力学子程序调到aspen中 运行报错
参考论坛上的帖子,用fortran编写了一个动力学子程序,但是调到aspen中运行报错,我感觉是子程序编写的问题,请路过的各位前辈看一下哪错了,附件是模拟的文件和子程序。图片是反应速率方程,希望各位前辈指点,不胜感激,谢谢各位。https://meng.horse/forum.php?mod=attachment&aid=MTEwMzA4fDQ1OGI5NjEwfDE1ODUyMzI1MDB8NTEzNTQzfDIxODA2NQ%3D%3D&noupdate=yes¬humb=yes
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
没有人嘛{:525:} 楼主了解集总反应动力学模型怎么用Fortran编写么 最近也在学习,还没入门,等浓明白了回来看看 请问群主解决了吗?我的运行也会报错:severe error:Fortran invalid operation encounterd
页:
[1]