|
[Fortran] 纯文本查看 复制代码 06 | double precision P , T , xh 2 s , n |
07 | double precision dPdT , H 1 , V , Hdiss , Hsolve |
09 | print * , "please imput temperature (K)" |
11 | print * , "please imput pressure (MPa)" |
13 | print * , "please imput hydation number" |
15 | print * , "please imput mole fraction of h2s in liquid" |
18 | call dissenthalpy ( Hdiss , T , dPdT , V ) |
19 | call solveenthalpy ( Hsolve , xh 2 s , n ) |
28 | subroutine Derivative ( dPDT , T ) |
29 | double precision dPdT , T , e ( 4 ) |
30 | data e / -436.1 , 4.6 , -0.018 , 0.0000196 / |
31 | dPdT = e ( 1 ) + e ( 2 ) * T + e ( 3 ) * T * * 2 + e ( 4 ) * T * * 3 |
36 | subroutine Totalmolarvolume ( V , Vliquid , Vgas , Vhydrate ) |
37 | double precision V , Vliquid , Vgas , Vhydrate , xh 2 s , n , parameter 1 , parameter 2 , density 2 , l ( 4 ) |
39 | data l / 21.90583 , -0.21947 , 7.33695E-4 , -8.18347E-7 / |
43 | Vliquid = xh 2 s * parameter 1 + parameter 2 |
54 | Vgas = l ( 1 ) + l ( 2 ) * T + l ( 3 ) * T * * 2 + l ( 4 ) * T * * 3 |
57 | V = ( 1 - ( n * xh 2 s ) / ( 1 - xh 2 s ) ) * Vgas + n * Vliquid - Vhydrate |
59 | print * , "Vliquid=" , Vliquid |
60 | print * , "Vhydrate=" , Vhydrate |
66 | subroutine dissenthalpy ( Hdiss , T , dPdT , V ) |
67 | double precision Hdiss , T , dPdT , V , Vliquid , Vgas , Vhydrate |
68 | call Derivative ( dPDT , T ) |
69 | call Totalmolarvolume ( V , Vliquid , Vgas , Vhydrate ) |
70 | Hdiss = 1000000.0 * dPdT * T * V |
75 | subroutine solveenthalpy ( Hsolve , xh 2 s , n ) |
76 | double precision Hsolve , xh 2 s , n |
77 | Hsolve = 17960.0 * n * xh 2 s / ( 1 - xh 2 s ) |
78 | print * , "Hsolve=" , Hsolve |
按照上面的运行结果,我输入T=274.15 K, P=0.118 MPa,n=6.2, xh2s=0.004的情况下,输出结果为:
dPdT= -124.007293931873
Vliquid= -4.165183558045402E+056
Vhydrate= 1.390999968862161E-004
Vgas= 1.013072811542869E+018
V= 3.855278546349224E+118
Hdiss= -1.310663612078491E+129
Hsolve= 447.196787148594
H1= -1.310663612078491E+129
上述高亮部分结果不对,为什么会出现10的129次方呢,可我又不知道为什么,本人小白一枚,求各位大佬支招
|
|