1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
*DECK THMPH
SUBROUTINE THMPH(IFLUID,PP,HH,RHO,TEMP)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Backwards inversion of steam tables to find water density and
* temperature.
*
*Copyright:
* Copyright (C) 2012 Ecole Polytechnique de Montreal.
*
*Author(s):
* A. Hebert, P. Gallet
*
*Parameters: input
* IFLUID type of fluid (0=H2O; 1=D2O).
* PP pressure (Pa)
* HH enthalpy (J/Kg)
*
*Parameters: output
* RHO water density (Kg/m^3)
* TEMP temperature (K)
*
*-----------------------------------------------------------------------
*
*----
* SUBROUTINE ARGUMENTS
*----
INTEGER IFLUID
REAL PP,HH,RHO,TEMP
*----
* LOCAL VARIABLES
*----
PARAMETER(DT=-0.01,ZKELV=273.15,S=1.0)
REAL A(15),R1,R3,R4,R5,RV,HSAT,HV,XTH
DATA A/
> 0.2873E+03,-0.5098E+00,-0.3459E+00,0.1910E+00,-0.2840E-01,
> 0.8266E+02,0.1141E+01,-0.2724E+01,0.1077E+00,-0.1144E+02,
> 0.9500E+01,-0.2715E+01,-0.1290E+02,0.9148E+01,-0.8093E+01 /
*----
* INITIAL APPROXIMATION OF T1
*----
IF(IFLUID.EQ.0) THEN
CALL THMSAT(PP,TSAT)
CALL THMTX(TSAT,1.0,RV,HV,R3,R4,R5)
CALL THMTX(TSAT,0.0,R1,HSAT,R3,R4,R5)
ELSE IF(IFLUID.EQ.1) THEN
CALL THMHST(PP,TSAT)
CALL THMHTX(TSAT,1.0,RV,HV,R3,R4,R5)
CALL THMHTX(TSAT,0.0,R1,HSAT,R3,R4,R5)
ENDIF
IF((ABS(HSAT-HH)/HSAT).LE.1.0E-5) THEN
T1=TSAT
GO TO 20
ELSEIF(HH.LE.HSAT) THEN
T=(HH-1270.0E3)/420.0E3
P=(PP-140.0E5)/30.0E5
H1=A(1)+P*(A(2)+P*(A(3)+P*(A(4)+P*A(5))))
H2=A(6)+P*(A(7)+P*(A(8)+P*(A(9))))
H3=A(10)+P*(A(11)+P*(A(12)))
H4=A(13)+P*A(14)
H5=A(15)
T1=H1+T*(H2+T*(H3+T*(H4+T*(H5))))+ZKELV
* INLET TEMPERATURE WAS VERIFIED TO BE GREATER THAN 0 C. T1 INITIAL
* GUESS LOWER THAN THAT SHOULD BE INTERPRETED AS FLAWED (FAR FROM
* FITTING REGION). CORRECTING WITH AN ABOVE-0 C GUESS.
IF(T1.LT.ZKELV) T1=10.0+ZKELV
ELSEIF(HH.LE.HV) THEN
* saturated steam
TEMP=TSAT
XTH=(HH-HSAT)/(HV-HSAT)
RHO=1.0/(XTH/RV+(1.0-XTH)/R1)
GO TO 30
ELSE
* superheated steam
T1=TSAT
ENDIF
*----
* NEWTON ITERATIONS
*----
ITER=0
10 ITER=ITER+1
IF(ITER.GT.30) CALL XABORT('THMPH: CONVERGENCE FAILURE.')
IF(IFLUID.EQ.0) THEN
CALL THMPT(PP,T1,R1,H1,R3,R4,R5)
CALL THMPT(PP,T1+DT,R1,H1P,R3,R4,R5)
ELSE IF(IFLUID.EQ.1) THEN
CALL THMHPT(PP,T1,R1,H1,R3,R4,R5)
CALL THMHPT(PP,T1+DT,R1,H1P,R3,R4,R5)
ENDIF
IF(ABS((HH-H1)/HH).LT.1.E-05) GO TO 20
T1=T1+(HH-H1)*DT/(H1P-H1)
IF((HH.LE.HSAT).AND.(T1.GE.TSAT)) T1=TSAT
IF((HH.GE.HV).AND.(T1.LE.TSAT)) T1=TSAT
GO TO 10
20 RHO=R1
TEMP=T1
30 RETURN
END
|