Advertisement
Guest User

USERPRES

a guest
Sep 12th, 2024
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.68 KB | None | 0 0
  1. C User Subroutine for RYIELD---PRESCORR.
  2.  
  3. C$ #1 BY: JERRY CHANG, DATE: 4-FEB-2009.
  4.  
  5. SUBROUTINE USRPRES (SIN, SOUT, NSUBS, IDXSUB, ITYPE,
  6. 1 NINT, INT, NREAL, REAL, IDS,
  7. 2 NPO, NBOPST, NIWORK, IWORK, NWORK,
  8. 3 WORK)
  9.  
  10. C***********************************************************************
  11. C COPYRIGHT (C) 1989 *
  12. C ASPEN TECHNOLOGY, INC. *
  13. C CAMBRIDGE, MA *
  14. C***********************************************************************
  15.  
  16. C-----------------------------------------------------------------------
  17. C The model to correct the effect of pressure on total yield of
  18. C volatiles is from the C.-Y Wen et al.'s work (C.-Y. Wen and
  19. C T.-Z. Chaung, Entrainment Coal Gasification Modeling, Ind. Eng.
  20. C Chem. Process Des. Dev., 1979, 18(4): 684-695).
  21. C-----------------------------------------------------------------------
  22.  
  23. C-----------------------------------------------------------------------
  24. C PURPOSE: TO MAKE THE PRESSURE CORRECTION FOR THE AMOUNT OF EACH
  25. C PYROLYSIS PRODUCT FROM THE PRESSURE DOING THE EXPERIMENT
  26. C OF COAL PYROLYSIS TO THE REAL PRESSURE IN THE GASIFIER,
  27. C AND THEN TO CALCULATE THE COMPONENT ATTRIBUTE OF CHAR
  28. C AFTER CORRECTION.
  29. C
  30. C
  31. C NOTE: IN THE PRESSURE CORRECTION, THE RELATIVE COMPOSITION OF GAS
  32. C COMPONENTS IN GAS PHASE IS ASSUMED TO BE CONSTANT. THE TOTAL
  33. C YIELD OF VOLATILES IS CHANGED BY THE EQUATION:
  34. C
  35. C V2 = V1 * (1 - A*LN(PT))
  36. C
  37. C WHERE: V1 = TOTAL YIELD OF VOLATILES AT THE PRESSURE OF COAL
  38. C PYROLYSIS EXPERIMENT;
  39. C V2 = TOTAL YIELD OF VOLATILES AT THE PRESSURE OF REAL
  40. C GASIFIER;
  41. C PT = PRESSURE IN REAL GASIFIER, ATM;
  42. C A = CONSTANT. IN THIS MODEL, A IS SELECTED TO BE 0.066.
  43. C-----------------------------------------------------------------------
  44.  
  45. IMPLICIT NONE
  46. C
  47. C DECLARE VARIABLES USED IN DIMENSIONING
  48. C
  49. INTEGER NSUBS, NINT, NREAL, NPO, NIWORK, NWORK
  50. C
  51. #include "ppexec_user.cmn"
  52. EQUIVALENCE (RMISS, USER_RUMISS)
  53. EQUIVALENCE (IMISS, USER_IUMISS)
  54. #include "dms_ncomp.cmn"
  55.  
  56. EQUIVALENCE (B(1), IB(1))
  57. C
  58. #include "pputl_ppglob.cmn"
  59. #include "dms_maxwrt.cmn"
  60. #include "dms_plex.cmn"
  61.  
  62. C DECLARE ARGUMENTS
  63. C
  64. INTEGER IDXSUB(NSUBS), ITYPE(NSUBS), INT(NINT), IDS(2,13),
  65. + NBOPST(6,NPO), IWORK(NIWORK), IMISS, DMS_IFCMNC,
  66. + LMW, LMWI, I
  67. C
  68. REAL*8 SIN(1), SOUT(1), WORK(NWORK), REAL(NREAL),
  69. + XMW(1), B(1), RMISS
  70. C
  71. REAL*8 PT, MCOIN, MH2IN, MCO2IN, MH2OIN, MH2SIN,
  72. + MN2IN, MCH4IN, MC6H6IN, NCOOUT, NH2OUT, NCO2OUT,
  73. + NH2OOUT, NH2SOUT, NN2OUT, NCH4OUT, NC6H6OUT, MCHAR1IN,
  74. + MTOTG, YCO, YH2, YCO2, YH2O, YH2S,
  75. + YN2, YCH4, YC6H6, MTOTGC
  76. C
  77. REAL*8 NPROX1, NULTA1, NSULF1, PAMOIS, PAFC, PAVM,
  78. + PAASH, UAASH, UAC, UAH, UAN, UACL,
  79. + UAS, UAO, SAP, SAS, SAO, NPROX2,
  80. + NULTA2, NSULF2
  81.  
  82. C BEGIN EXECUTABLE CODE
  83.  
  84. C PRESSURE OF REACTOR (ATM)
  85. PT = 24.0
  86.  
  87. C RETRIVE MOLECULAR WEIGHT OF EACH COMPONENT (KG/KMOL)
  88. LMW = DMS_IFCMNC('MW')
  89. DO I = 1,NCOMP_NCC
  90. LMWI = LMW+I
  91. XMW(I) = B(LMWI)
  92. END DO
  93.  
  94. C RETRIEVE MASS FLOW RATES OF COMPONENTS IN INLET STREAM(KG/S)
  95. MCOIN = SIN(IDXSUB(1)-1+2) * XMW(2)
  96. MH2IN = SIN(IDXSUB(1)-1+3) * XMW(3)
  97. MCO2IN = SIN(IDXSUB(1)-1+4) * XMW(4)
  98. MH2OIN = SIN(IDXSUB(1)-1+5) * XMW(5)
  99. MH2SIN = SIN(IDXSUB(1)-1+6) * XMW(6)
  100. MN2IN = SIN(IDXSUB(1)-1+7) * XMW(7)
  101. MCH4IN = SIN(IDXSUB(1)-1+8) * XMW(8)
  102. MC6H6IN = SIN(IDXSUB(1)-1+9) * XMW(9)
  103. MCHAR1IN = SIN(IDXSUB(3)-1+2)
  104.  
  105. C WEIGHT FRACTION OF GASEOUS COMPONENTS IN GAS PHASE
  106. MTOTG = MCOIN + MH2IN + MCO2IN + MH2OIN + MH2SIN + MN2IN
  107. + +MCH4IN + MC6H6IN
  108. YCO = MCOIN / MTOTG
  109. YH2 = MH2IN / MTOTG
  110. YCO2 = MCO2IN / MTOTG
  111. YH2O = MH2OIN / MTOTG
  112. YH2S = MH2SIN / MTOTG
  113. YN2 = MN2IN / MTOTG
  114. YCH4 = MCH4IN / MTOTG
  115. YC6H6 = MC6H6IN/ MTOTG
  116.  
  117. C TOTAL MASS FLOW RATE OF GAS PHASE AFTER PRESSURE CORRECTION (KG/S)
  118. MTOTGC = MTOTG * (1.0D0-0.066*LOG(PT))
  119.  
  120. C FLOW RATES OF COMPONENTS IN OUTLET STREAMS (MIXED COMPONENTS: KMOL/S;
  121. C NONCONVENTIONAL COMPONENT: KG/S)
  122. NCOOUT = MTOTGC * YCO / XMW(2)
  123. NH2OUT = MTOTGC * YH2 / XMW(3)
  124. NCO2OUT = MTOTGC * YCO2 / XMW(4)
  125. NH2OOUT = MTOTGC * YH2O / XMW(5)
  126. NH2SOUT = MTOTGC * YH2S / XMW(6)
  127. NN2OUT = MTOTGC * YN2 / XMW(7)
  128. NCH4OUT = MTOTGC * YCH4 / XMW(8)
  129. NC6H6OUT = MTOTGC * YC6H6 / XMW(9)
  130. C
  131. SOUT(IDXSUB(1)-1+2) = NCOOUT
  132. SOUT(IDXSUB(1)-1+3) = NH2OUT
  133. SOUT(IDXSUB(1)-1+4) = NCO2OUT
  134. SOUT(IDXSUB(1)-1+5) = NH2OOUT
  135. SOUT(IDXSUB(1)-1+6) = NH2SOUT
  136. SOUT(IDXSUB(1)-1+7) = NN2OUT
  137. SOUT(IDXSUB(1)-1+8) = NCH4OUT
  138. SOUT(IDXSUB(1)-1+9) = NC6H6OUT
  139. SOUT(IDXSUB(3)-1+3) = MTOTG + MCHAR1IN - MTOTGC
  140.  
  141. C TOTAL FLOW RATES OF EACH SUBSTREAM (MIXED COMPONENTS: KMOL/S;
  142. C NONCONVENTIONAL COMPONENT: KG/S)
  143. SOUT(IDXSUB(1)+NCOMP_NCC) = NCOOUT + NH2OUT + NCO2OUT + NH2OOUT
  144. + +NH2SOUT + NN2OUT + NCH4OUT + NC6H6OUT
  145. SOUT(IDXSUB(3)+NCOMP_NNCC)= SOUT(IDXSUB(3)-1+3)
  146.  
  147.  
  148. C COMPONENT ATTRIBUTE OF NC SUBSTREAM
  149.  
  150. C ****COMPONENT ATTRIBUTE OF FEED CHAR1
  151.  
  152. C LOCATE BEGINNING OF EACH ANALYSIS ATTRIBUTE
  153. NPROX1 = IDXSUB(3) - 1 + NCOMP_NNCC + 9 + 4 + 7 + 3
  154. NULTA1 = IDXSUB(3) - 1 + NCOMP_NNCC + 9 + 4 + 7 + 3 + 4
  155. NSULF1 = IDXSUB(3) - 1 + NCOMP_NNCC + 9 + 4 + 7 + 3 + 4 + 7
  156.  
  157. C PROXIMATE ANALYSIS
  158. PAMOIS = SIN(NPROX1+1)
  159. PAFC = SIN(NPROX1+2)
  160. PAVM = SIN(NPROX1+3)
  161. PAASH = SIN(NPROX1+4)
  162.  
  163. C ULTIMATE ANALYSIS
  164. UAASH = SIN(NULTA1+1)
  165. UAC = SIN(NULTA1+2)
  166. UAH = SIN(NULTA1+3)
  167. UAN = SIN(NULTA1+4)
  168. UACL = SIN(NULTA1+5)
  169. UAS = SIN(NULTA1+6)
  170. UAO = SIN(NULTA1+7)
  171.  
  172. C SULFURNAL ANALYSIS
  173. SAP = SIN(NSULF1+1)
  174. SAS = SIN(NSULF1+2)
  175. SAO = SIN(NSULF1+3)
  176.  
  177.  
  178. C ****COMPONENT ATTRIBUTE OF PRODUCT CHAR2
  179.  
  180. C LOCATE BEGINNING OF EACH ANALYSIS ATTRIBUTE
  181. NPROX2 = IDXSUB(3) - 1 + NCOMP_NNCC + 9 + (4+7+3)*2
  182. NULTA2 = IDXSUB(3) - 1 + NCOMP_NNCC + 9 + (4+7+3)*2 + 4
  183. NSULF2 = IDXSUB(3) - 1 + NCOMP_NNCC + 9 + (4+7+3)*2 + 4 + 7
  184.  
  185. C PROXIMATE ANALYSIS
  186. SOUT(NPROX2+1) = PAMOIS
  187. SOUT(NPROX2+2) = MCHAR1IN*PAFC *0.01 / SOUT(IDXSUB(3)-1+3) * 100.0
  188. SOUT(NPROX2+4) = MCHAR1IN*PAASH*0.01 / SOUT(IDXSUB(3)-1+3) * 100.0
  189. SOUT(NPROX2+3) = 100.0 - SOUT(NPROX2+2) - SOUT(NPROX2+4)
  190.  
  191. C ULTIMATE ANALYSIS
  192. C %%%ASH%%%
  193. SOUT(NULTA2+1) = SOUT(NPROX2+4)
  194.  
  195. C %%%CARBON%%%
  196. C IT IS CALCULATED BY ATOM BALANCE.
  197. SOUT(NULTA2+2) = (MCHAR1IN*UAC*0.01
  198. + +(MCOIN /XMW(2) - NCOOUT )*12.0107
  199. + +(MCO2IN /XMW(4) - NCO2OUT )*12.0107
  200. + +(MCH4IN /XMW(8) - NCH4OUT )*12.0107
  201. + +(MC6H6IN/XMW(9) - NC6H6OUT)*6.0*12.0107)
  202. + / SOUT(IDXSUB(3)-1+3) *100.0
  203.  
  204. C %%%HYDROGEN%%%
  205. SOUT(NULTA2+3) = (MCHAR1IN*UAH*0.01
  206. + +(MH2IN /XMW(3) - NH2OUT )*2.0*1.00794
  207. + +(MH2OIN /XMW(5) - NH2OOUT )*2.0*1.00794
  208. + +(MH2SIN /XMW(6) - NH2SOUT )*2.0*1.00794
  209. + +(MCH4IN /XMW(8) - NCH4OUT )*4.0*1.00794
  210. + +(MC6H6IN/XMW(9) - NC6H6OUT)*6.0*1.00794)
  211. + / SOUT(IDXSUB(3)-1+3) *100.0
  212.  
  213. C %%%NITROGEN%%%
  214. SOUT(NULTA2+4) = (MCHAR1IN*UAN*0.01
  215. + +(MN2IN /XMW(7) - NN2OUT) *2.0*14.00674)
  216. + / SOUT(IDXSUB(3)-1+3) *100.0
  217.  
  218. C %%%CHLORINE%%%
  219. SOUT(NULTA2+5) = (MCHAR1IN*UACL*0.01)
  220. + / SOUT(IDXSUB(3)-1+3) *100.0
  221.  
  222. C %%%SULFUR%%%
  223. SOUT(NULTA2+6) = (MCHAR1IN*UAS*0.01
  224. + +(MH2SIN /XMW(6) - NH2SOUT) *32.065)
  225. + / SOUT(IDXSUB(3)-1+3) *100.0
  226.  
  227. C %%%OXYGEN%%%
  228. SOUT(NULTA2+7) = 100.0 - SOUT(NULTA2+1) - SOUT(NULTA2+2)
  229. + - SOUT(NULTA2+3) - SOUT(NULTA2+4)
  230. + - SOUT(NULTA2+5) - SOUT(NULTA2+6)
  231.  
  232. C SULFURNAL ANALYSIS
  233. SOUT(NSULF2+1) = SOUT(NULTA2+6)/3.0
  234. SOUT(NSULF2+2) = SOUT(NULTA2+6)/3.0
  235. SOUT(NSULF2+3) = SOUT(NULTA2+6)/3.0
  236.  
  237. RETURN
  238. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement