- 积分
- 27
- 注册时间
- 2020-3-21
- 积分
- 27

|

楼主 |
发表于 1970-1-1 08:00:00
显示全部楼层
本帖最后由 花枝鼠 于 2020-4-22 20:37 编辑
C A sample user subroutine that calculates and returns the mixture liquid enthalpy is given in the next Example.
C----------------------------------------------------------------------
SUBROUTINE HL2U (T ,P ,Z ,N ,IDX ,
1 IRW ,IIW ,KCALC ,KOP ,NDS ,
2 KDIAG ,QMX ,DQMX ,KER )
C
C----------------------------------------------------------------------
C HV2U IS A USER MIXTURE ENTHALPY SUBROUTINE
C
C THIS USER SUBROUTINE CALCULATES THE LIQUID ENTHALPY OF A BINARY
C MIXTURE CONTAINING ONE POLYMER AND ONE SOLVENT.
C
C
C NAME OF MODULE: HL2U
C
C
IMPLICIT NONE
C
DIMENSION Z(N), IDX(N), KOP(10)
DIMENSION D(15)
C... USER DIMENSION
DIMENSION XTRUE(10)
C
C
#include "dms_ncomp.cmn"
#include "ppexec_user.cmn"
#include "dms_plex.cmn"
C
EQUIVALENCE (IB(1), B(1))
INTEGER XMW, DHFORM, CPIG, II, DMS_IFCMNC
INTEGER IMON, IPOL, IIMON, IIPOL, I, N, J, ISEG
REAL*8 DELT1, DELT2, DELT3, DELT4, H_MON, H,POL,
* HM_MIX, AVG_MW, T, TREF, QMX
C
C----------------------------------------------------------------------
C
C STATEMENT FUNCTIONS FOLLOW
C
XMW(I) = DMS_IFCMNC('MW') + I
DHFORM(I) = DMS_IFCMNC('DHFORM') + I
CPIG(I,J) = DMS_IFCMNC('CPIG') + 11*(J - 1) + I
C
C *** NOTE *******************************************
C
C PARAMETERS ARE LOCATED USING THE UTILITY DMS_IFCMNC
C AND THE NAME OF THE PARAMETER. FOR EXAMPLE,
C DMS_IFCMNC('MW') RETRIEVES THE LOCATIONS WHERE THE
C COMPONENT MOLECULAR WEIGHTS ARE STORED.
C
C ****************************************************
C
DO 100 I=1,10
XSEG(I) = 0.D0
100 CONTINUE
C
TREF = 298.15
C
C----------------------------------------------------------------------
C
C *** NOTE *******************************************
C COMPONENT ID FOR MONOMER *HARD-WIRED* AT POSITION 2
C COMPONENT ID FOR POLYMER *HARD-WIRED* AT POSITION 3
C ****************************************************
C
IMON = 2
IPOL = 3
ISEG = 4
C
C
C## BOTH Z AND XSEG ARE PACKED: XSEG(IPOL) CONTAINS MOLE FRAC OF SEGMENT
C
CALL XATOXT(N, IDX, B(XMW(1)), Z, XTRUE)
C
C POLYMERIC SPECIES Property Set PROPERTIES
C
DELT1 = T - TREF
DELT2 = (T**2 - TREF**2)/2.D0
DELT3 = (T**3 - TREF**3)/3.D0
DELT4 = (T**4 - TREF**4)/4.D0
H_MON = B(DHFORM(IMON)) + B(CPIG(1,IMON))*DELT1 +
+ B(CPIG(2,IMON))*DELT2 + B(CPIG(3,IMON))*DELT3 + B(CPIG(4,IMON))
+*DELT4
H_POL = B(DHFORM(IPOL)) + B(CPIG(1,IPOL))*DELT1 +
+ B(CPIG(2,IPOL))*DELT2 + B(CPIG(3,IPOL))*DELT3 + B(CPIG(4,IPOL))
+*DELT4
C
C *** NOTE *******************************************
C IN CASE A COMPONENT ATTRIBUTE WAS NEEDED FOR THE
C CALCULATION OF THE POLYMER ENTHALPY, THE APPROPRIATE
C UTILITY ROUTINE SHOULD BE CALLED.
C
C FOR EXAMPLE, SUPPOSE THE NUMBER-AVERAGE DEGREE OF
C POLYMERIZATION (DPn) OF THE POLYMER WAS NECESSARY.
C THE UTILITY ROUTINE GETDPN CAN BE USED TO RETURN
C THE DESIRED ATTRIBUTE:
C
C CALL POLY_GETDPN (1, 1, IPOL, DPN)
C
C THE ARGUMENTS HAVE THE FOLLOWING MEANING:
C
C 1 = CONVENTIONAL SUBSTREAM
C 1 = DPN FOR 1 COMPONENT IS REQUESTED (NCP=1)
C IPOL = POLYMER COMPONENT INDEX
C DPN = RETURNED VALUE OF THE NUMBER AVERAGE
C DEGREE OF POLYMERIZATION
C
C ****************************************************
C
IIMON = 0
IIPOL = 0
DO 10 I=1,N
II = IDX(I)
IF (II.EQ.IMON) IIMON = I
IF (II.EQ.IPOL) IIPOL = I
10 CONTINUE
C
HM_MIX = H_MON*XTRUE(IIMON) + H_POL*XTRUE(IIPOL)
AVG_MW = B(XMW(IMON))*Z(IIMON) + B(XMW(IPOL))*Z(IIPOL)
C
C
C CONVERT FROM TRUE TO APPARENT MOLE BASIS
QMX = HM_MIX * AVG_MW / B(XMW(ISEG))
C
C
999 CONTINUE
RETURN
END |
-
-
|