Таблица Б.2 - Физические свойства компонентов природного газа, используемые в уравнении состояния ВНИЦ СМВ
Компоненты |
Химическая формула |
Молярная масса Мi |
Критические параметры |
??ci, кг/м3 |
Фактор Питцера ??i |
|||
|
|
|
pki, МПа |
??ki, кг/м3 |
Tki, K |
zki, |
|
|
Метан |
СН4 |
16,043 |
4,5988 |
163,03 |
190,67 |
0,2862 |
0,6682 |
0,0006467 |
Этан |
С2Н6 |
30,070 |
4,88 |
205,53 |
305,57 |
0,2822 |
1,2601 |
0,1103 |
Пропан |
С3Н8 |
44,097 |
4,25 |
218,54 |
369,96 |
0,2787 |
1,8641 |
0,1764 |
н-Бутан |
н-С4Н10 |
58,123 |
3,784 |
226,69 |
425,40 |
0,2761 |
2,4956 |
0,2213 |
и-Бутан |
и-С4Н10 |
58,123 |
3,648 |
225,64 |
407,96 |
0,2769 |
2,488 |
0,2162 |
Азот |
N2 |
28,0135 |
3,390 |
315,36 |
125,65 |
0,2850 |
1,16490 |
0,04185 |
Диоксид углерода |
СО2 |
44,010 |
7,386 |
466,74 |
304,11 |
0,2744 |
1,8393 |
0,2203 |
Сероводород |
H2S |
34,082 |
8,940 |
349,37 |
373,18 |
0,2810 |
1,4311 |
0,042686 |
Примечания 1 Плотность (??ki), температура (Tki) в критической точке и фактор Питцера (??i) отличаются от литературных данных и применимы только для уравнения состояния ВНИЦ СМВ. 2 ??ci - плотность i-го компонента при стандартных условиях |
Таблица Б.3 - Параметры бинарного взаимодействия xij
j |
i |
|||||||
|
СН4 |
C2H6 |
С3Н8 |
н-C4H10 |
и-С4Н10 |
N2 |
CO2 |
H2S |
СН4 |
0,0 |
0,036 |
0,076 |
0,121 |
0,129 |
0,060 |
0,074 |
0,089 |
C2H6 |
- |
0,0 |
0,0 |
0,0 |
0,0 |
0,106 |
0,093 |
0,079 |
С3Н8 |
- |
- |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
н-C4Н10 |
- |
- |
- |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
и-С4Н10 |
- |
- |
- |
- |
0,0 |
0,0 |
0,0 |
0,0 |
N2 |
- |
- |
- |
- |
- |
0,0 |
0,022 |
0,211 |
CO2 |
- |
- |
- |
- |
- |
- |
0,0 |
0,089 |
H2S |
- |
- |
- |
- |
- |
- |
- |
0,0 |
Таблица Б.4 - Параметры бинарного взаимодействия ??ij
j |
i |
|||||||
|
СН4 |
С2Н6 |
С3Н8 |
н-С4Н10 |
и-C4H10 |
N2 |
СО2 |
H2S |
СН4 |
0,0 |
-0,074 |
-0,146 |
-0,258 |
-0,222 |
-0,023 |
-0,086 |
0,0 |
С2Н6 |
- |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
С3Н8 |
- |
- |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
н-C4H10 |
- |
- |
- |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
и-С4Н10 |
- |
- |
- |
- |
0,0 |
0,0 |
0,0 |
0,0 |
N2 |
- |
- |
- |
- |
- |
0,0 |
-0,064 |
0,0 |
СО2 |
- |
- |
- |
- |
- |
- |
0,0 |
-0,062 |
H2S |
- |
- |
- |
- |
- |
- |
- |
0,0 |
ПРИЛОЖЕНИЕ В
(рекомендуемое)
Листинг программы расчета коэффициента сжимаемости природного газа
C**********************************************************
C**
С* Программа расчета коэффициента сжимаемости природного газа *
С*(основной модуль)*
С**
C**********************************************************
IMPLICIT REAL*8(A-H,O-Z)
CHARACTER*26 AR(25)
DIMENSION PI(100),TI(100),ZP(100,100)
COMMON/P/P/T/T/RON/RON/YI/YC(25)/Z/Z/NPR/NPR
DATA AR/’ метана (СН4)’,’ этана (С2Н6)’,’ пропана (С3Н8)’,
*’ н-бутана (н-С4Н10)’,’ и-бутана (и-С4Н10)’,’ азота (N2)’,
*’ диоксида углерода (СO2)’,’ сероводорода (H2S)’,
*’ ацетилена (С2Н2)’,’ этилена (С2Н4)’,’ пропилена (С3Н6)’,
*’ н-пентана (н-С5Н12)’,’ и-пентана (и-C5H12)’,
*’ нео-пентана (нео-С5Н12)’,’ н-гексана (н-С6Н14)’,
*’ бензола (С6Н6)’,’ н-гептана (н-С7Н16)’,’ толуола (С7Н8)’,
*’ н-октана (н-С8Н18)’,’ н-нонана (н-С9Н20)’,
*’ н-декана (н-С10Н22)’,’ гелия (Не)’,’ водорода (Н2)’,
*’ моноксида углерода (СО)’,’ кислорода (О2)’/
200WRITE(*,100)
CALL VAR(NVAR)
IF(NVAR.EQ.5) GO TO 134
WRITE(*,l00)
100FORMAT(25(/))
WRITE(*,1)
1FORMAT(’ Введите исходные данные для расчета.’/)
IF(NVAR.LE.2) THEN
WRITE(*,’(A)’)
*’ Плотность при 293.15 К и 101.325 кПа, в кг/куб.м ’
READ(*,*)RON
WRITE(*,53)
53FORMAT(’ Введите 0, если состав азота и диоксида углерода’,
*’ задан в молярных долях’/
*’ или 1, если состав этих компонентов задан’,
*’ в объемных долях ’)
READ(*,*)NPR
IF(NPR.EQ.0) WRITE(*,3)
3FORMAT (’ Значение молярной доли, в мол. %’)
IF(NPR.EQ.l) WRITE(*,33)
33FORMAT(’ Значение объемной доли, в об. %’)
WRITE(*,’(A)’) ’ азота (N2)
READ(*,*)YA
YA = YA/100.
WRITE(*,’(A)’) ’ диоксида углерода (С02) ’
READ(*,*)YY
YY = YY/100.
ELSE
WRITE(*,35)
35FORMAT(’ Введите 0, если состав задан в молярных долях’/
*’ или 1, если состав задан в объемных долях ’)
READ(*,*)NPR
IF(NPR.EQ.0) WRITE(*,3)
IF(NPR.EQ.l) WRITE(*,33)
DO 5 I=1,25
WRITE(*,’(A)’) AR(I)
READ(*,*)YC(I)
5YC(I) = YC(I)/100.
ENDIF
WRITE(*,’(A)’)
*’ Введите количество точек по давлению: ’
READ(*,*)NP
WRITE(*,’(A)’)
*’ Введите количество точек по температуре: ’
READ(*,*)NT
WRITE(*,’(A)’)
*’ Введите значения давлений в МПа: ’
READ(*,*)(PI(I),I=1,NP)
WRITE(*,’(A)’)
*’ Введите значения температур в К: ’
READ(*,*)(TI(I),I=1,NT)
WRITE(*,’(A)’)
*’ Ввод исходных данных завершен. ’
P=.101325D0
T=293.15D0
ICALC=1
GO TO (10,20,30,40) NVAR
10CALL NX19(YA,YY)
ZN=Z
GO TO 50
20CALL GERG2(ICALC,YA,YY)
ZN=Z
GO TO 50
30CALL AGA8DC(ICALC)
ZN=Z
GO TO 50
40CALL VNIC(ICALC)
ZN=Z
50CONTINUE
IF(Z.EQ.0D0) THEN
(NRANGE)
IF(NRANGE) 134,134,200
ENDIF
ICALC=2
NTS=0
DO 7 I=1,NP
P=PI(I)
D07 J=1,NT
T=TI(J)
IF(NVAR.EQ.l) CALL NX19(YA,YY)
IF(NVAR.EQ.2) CALL GERG2(ICALC,YA,YY)
IF(NVAR.EQ.3) CALL AGA8DC(ICALC)
IF(NVAR.EQ.4) CALL VNIC(ICALC)
IF(Z.NE.0D0) NTS=NTS+1
ZP(I,J)=Z/ZN
7CONTINUE
IF(NTS.EQ.0) THEN
(NRANGE)
IF (NRANGE) 134,134,200
ELSE
I=1
9IС=0
DO 11 J=1,NT
IF(ZP(I,J).EQ.0D0)
IC=IC+1
11CONTINUE
IF(IC.EQ.NT) THEN
IF(I.NE.NP) THEN
DO 13 J=I,NP-1
PI(J)=PI(J+1)
DO 13 K=1,NT
13ZP(J,K)=ZP(J+1,K)
ENDIF
NP=NP-1
ELSE
I=I+1
ENDIF
IF(I.LE.NP) GO TO 9
J=l
15JS=0
DO 17 I=1,NP
IF(ZP(I,J).EQ.0D0) JS=JS+1
17CONTINUE
IF(JS.EQ.NP) THEN
IF(J.NE.NT) THEN
DO 19 I=J,NT-1
ТI(I)=ТI(I+1)
DO 19 K=1,NP
19ZP(K,I)=ZP(K,I+1)
ENDIF
NT=NT-1
ELSE
J=J+1
ENDIF
IF(J.LE.NT) GO TO 15
CALL TABL(YA,YY,PI,TI,ZP,NP,NT,)
ENDIF
GO TO 200
134STOP
END
SUBROUTINE VAR(NVAR)
WRITE(*,1)
1FORMAT(//
*10X,’ Расчет коэффициента сжимаемости природного газа’//
*10Х,’ ----------------Метод расчета----------------- ’/
*10Х,’’/
*10Х,’1. Модифицированный метод NX 19’/
*10Х,’’/
*10Х,’2. Уравнение состояния GERG-91’/
*10Х,’’/
*10Х,’3. Уравнение состояния AGA8-92DC’/
*10Х,’’/
*10Х,’4. Уравнение состояния ВНИЦ СМВ’/
*10Х,’’/
*10Х,’---------------------------------------------------’/)
WRITE(*,5)
5FORMAT(/,3X,
*’Введите порядковый номер метода расчета или 5 для выхода в ДОС’,
*)
READ(*,*)NVAR
RETURN
END
(NRANGE)
IMPLICIT REAL*8(A-H,О-Z)
COMMON/Z/Z
WRITE(*,1)
1FORMAT(//
*’ Выбранная Вами методика при заданных параметрах «не работает»’/
*’ Продолжить работу программы ? 0 - нет, 1 - да ’)
READ(*,*)NRANGE
RETURN
END
SUBROUTINE TABL(YA,YY,PI,TI,ZP,NP,NT,)
IMPLICIT REAL*8(A-H,О-Z)
CHARACTER*26 AR(25), FNAME
CHARACTER METH(4)*31,A*6,LIN1(5)*9,LIN2(5)*9,LIN3(6)*9,LIN4*9,
*AT(06)*28
CHARACTER*70 F,FZ(11,2)
DIMENSION PI(100),TI(100),ZP(100,100),ZPP(6)
COMMON/RON/RON/YI/YC(25)/NPR/NPR
DATA METH/
*’(модифицированный метод NX19)’,
*’(уравнение состояния GERG-91)’,
*’(уравнение состояния AGA8-92DC)’,
*’(уравнение состояния ВНИЦ СМВ)’/
DATA LIN1/5*’------’/,LIN2/5*’------’/,LIN3/6*’------’/,
*LIN4/’------’/,A/’ - ’/
DATA AT/
*’ T, K’,’ T, K’,’ T, K’,’ T,K’,
*’T, K’,’T, K’/
DATA FZ/
*’(3X,F5.2,2X,6(3X,F6.4))’,’(3X,F5.2,5X,A6,5(3X,F6.4))’,
*’(3X,F5.2,2X,2(3X,A6),4(3X,F6.4))’,’(3X,F5.2,2X,3(3X,A6),
*3(3X,F6.4))’,
*’(3X,F5.2,2X,4(3X,A6),2(3X,F6.4))’,’(3X,F5.2,2X,5(3X,A6),
*3X,F6.4)’,
*’(3X,F5.2,2X,5(3X,F6.4),3X,A6)’,’(3X,F5.2,2X,4(3X,F6.4),
*2(3X,A6))’,
*’(3X,F5.2,2X,3(3X,F6.4),3(3X,A6))’,’(3X,F5.2,2X,2(3X,F6.4),
*4(3X,A6))’,
*’(3X,F5.2,5X,F6.4,5(3X,A6))’,’(3X,F9.6,1X,F6.4,5(3X,F6.4))’,
*’(ЗX,F9.6,lX,A6,5(3X,F6.4))’,’(3X,F9.б,lX,A6,3X,A6,4(3X,F6.4))’,
*’(3X,F9.6,1X,A6,2(3X,A6),3(3X,F6.4))’,’(3X,F9.6,1X,A6,3(3X,A6),
*2(3X,F6.4))’,
*’(3X,F9.6,1X,A6,4(3X,A6),3X,F6.4)’,’(3X,F9.6,1X,F6.4,4(3X,F6.4),
*3X,A6)’,
*’(3X,F9.6,1X,F6.4,3(3X,F6.4),2(3X,A6))’,’(3X,F9.6,1X,F6.4),
*2(3X,F6.4),3(3X,A6))’,
*’(3X,F9.6,1X,F6.4,3X,F6.4,4(3X,A6))’,’(3X,F9.6,1X,F6.4,5(3X,A6))’/
22WRITE(*,44)
44FORMAT(//’ Устройство вывода результатов расчета ?,’)
WRITE(*,’(A)’)
*’ 0 - дисплей, 1 - принтер, 2 - файл на диске ’
READ(*,*)NYST
IF(NYST.EQ.0) OPEN(1,FILE=’CON’)
IF(NYST.EQ.l) OPEN(1,FILE=’PRN’)
IF(NYST.EQ.2) WRITE(*,’(A)’) ’ Введите имя файла ’
IF(NYST.EQ.2) READ(*,’(A)’)FNAME
IF(NYST.EQ.2) OPEN(1,FILE=FNAME)
IF(NYST.EQ.0) WRITE(*,100)
100FORMAT(25(/))
IF(NYST.EQ.l) PAUSE
*’ Включите принтер, вставьте бумагу и нажмите <ВВОД> ’
WRITE(1,88)METH(NVAR)
88FORMAT(
*13X,’Коэффициент сжимаемости природного газа.’/
*18Х,А31/)
NW=3
IF(NVAR.LE.2) THEN
WRITE(1,1)RON
1FORMAT(’ Плотность при 293.15 К и 101.325 кПа ’,F6.4,’ кг/куб.м’)
NW=NW+1
IF(YA.NE.0D0.OR.YY.NE.0D0) THEN
IF(NPR.EQ.0) WRITE(1,3)
3FORMAT(’ Содержание в мол. %’)
IF(NPR.EQ.l) WRITE(1,33)
33FORMAT(’ Содержание в об.%’)
NW=NW+1
IF(YA.NE.0D0) THEN
WRITE(1,5)AR(6),YA* 100.
5FORMAT(2(A26,F7.4))
NW=NW+1
ENDIF
IF(YY.NE.0D0) THEN
WRITE(1,5)AR(7),YY*100.
NW=NW+1
ENDIF
ENDIF
ELSE
IF(NPR.EQ.0) WRITE(1,3)
IF(NPR.EQ.l) WRITE(1,33)
NW=NW+1
I=1
9J=I+1
13CONTINUE
IF(YC(J).NE.0D0) THEN
WRITE(1,5)AR(I),YC(I)*100.,AR(J),YC(J)*100.
NW=NW+1
DO 11 I=J+1,25
IF(YC(I).NE.0D0.AND.I.NE.25) GO TO 9
IF(YC(I).NE.0D0.AND.I.EQ.25) THEN
WRITE(1,5)AR(I),YC(I)*100.
nw=nw+1
GO TO 99
ENDIF
11CONTINUE
ELSE
J=J+1
IF(J.LE.25) THEN
GO TO 13
ELSE
WRITE(1,5)AR(I),YC(I)*100.
NW=NW+1
ENDIF
ENDIF
ENDIF
99CONTINUE
IF(NW.GT.12.AND.NYST.EQ.0) THEN
WRITE(*,7)
7FORMAT(/)
PAUSE ’ Для продолжения вывода нажмите <ВВОД> ’
WRITE(*,100)
NW=0
ENDIF
DO 15 I=1,NT,6
IF(NW.GT.12.AND.NYST.EQ.0) THEN
WRITE(*,7)
PAUSE ’ Для продолжения вывода нажмите <ВВОД> ’
WRITE(*,100)
NW=0
ENDIF
IF(NW.GT.46.AND.NYST.NE.O) THEN
WRITE(1,7)
WRITE(*,7)
IF(NYST.EQ.l)
PAUSE
*’ Для продолжения вывода вставьте бумагу и нажмите <ВВОД> ’
NW=0
ENDIF
IF(I+5.LE.NT) THEN
NL=6
ELSE
NL=NT-I+1
ENDIF
WRITE(1,7)
IF(NL.GT.1) WRITE(1,17)LIN2(1),(LIN1(K),K=1,NL-1)
IF(NL.EQ.l) WRITE(1,17)LIN2(1)
17FORMAT(’ ------’,6A9)
WRITE(1,19)AT(NL)
19FORMAT(’ ------’,A28)
IF(NL.GT.1)WRITE(1,21)LIN4,(LIN2(K),K=1,NL-1)
IF(NL.EQ.l) WRITE(1,21)LIN4
21FORMAT(’ p, МПа ’,6А9)
WRITE(1,23)(TI(K),K=I,I+NL-1)
23FORMAT(10X,6(:,’??’,F6.2))
WRITE(1,17)(LIN3(K),K=1,NL)
NW=NW+6
DO 25 J=1,NP
JP=1
IF(PI(J).EQ.0.101325D0) JP=2
NL1=0
NLN=0
DO 27K=I,I+NL-1
NL1=NL1+1
IF(ZP(J,K).EQ.0D0) THEN
ZPP(NL1)=A
NLN=NLN+1
ELSE
ZPP(NL1)=ZP(J,K)
ENDIF
27CONTINUE
IF(NLN.EQ.NL) GO TO 133
IF(NLN.EQ.0) THEN
F=FZ(1,JP)
ELSE
IF(ZP(J,I).EQ.0D0) F=FZ(NLN+1,JP)
IF(ZP(J,I+NL-1).EQ.0D0) F=FZ(NLN+12-NL,JP)
ENDIF
IF(NLI.EQ.1)WRITE(1,F)PI(J),ZPP(1)
IF(NL1.EQ.2)WRITE(1,F)PI(J),ZPP(1),ZPP(2)
IF(NL1.EQ.3)WRITE(1,F)PI(J),ZPP(1),ZPP(2),ZPP(3)
IF(NL1.EQ.4)WRITE(1,F)PI(J),ZPP(1),ZPP(2),ZPP(3),ZPP(4)
IF(NL1.EQ.5)
*WRITE(1,F)PI(J),ZPP(1),ZPP(2),ZPP(3),ZPP(4),ZPP(5)