summaryrefslogtreecommitdiff
path: root/Donjon/src/THMH2O.f
blob: eb220122fced120324029d9500f3d378aea42bc2 (plain)
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
*DECK THMH2O
      SUBROUTINE THMH2O(ITIME,I,J,K,K0,PINLET,MFLOW,HMAVG,ENT,HD,IFLUID,
     >   IHCONV,KHCONV,ISUBM,RADCL,ZF,VCOOL,IDFM,PHI,XFL,EPS,SLIP,
     >   ACOOL,PCH,DZ,TCALO,RHO,RHOLAV,RHOG,TSCLAD,KWA,VGJprime,HLV)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Nucleate boiling correlations along a single coolant channel.
*
*Copyright:
* Copyright (C) 2012 Ecole Polytechnique de Montreal.
*
*Author(s): 
* A. Hebert, P. Gallet
*
*Parameters: input
* ITIME   type of calculation  (0=steady-state; 1=transient).
* I       position of channel alon X-axis
* J       position of channel alon Y-axis
* K       position of channel alon Z-axis
* K0      onser of nuclear boiling point
* PINLET  pressure in Pascal
* MFLOW   massic coolant flow rate in Kg/m^2/s
* HMAVG   averaged enthalpy
* ENT     four values of enthalpy in J/Kg to be used in Gaussian
*         integration
* HD      hydraulic diameter in m
* IFLUID  type of fluid (0=H2O; 1=D2O).
* IHCONV  flag indicating HCONV chosen (0=default/1=user-provided).
* KHCONV  fixed user-provided HCONV value in W/m^2/K.
* ISUBM   subcooling model (0: one-phase; 1: Jens-Lottes model;
*         2: Saha-Zuber model).
* RADCL   outer clad radius in m
* ZF      parameters used to compute heat flux on clad surface in
*         transient cases.
* PHI     heat flow exchanged between clad and fluid in W/m^2.
*         Given in steady-state cases.
* XFL     input coolant flow quality
* EPS     input coolant void fraction
* SLIP    input slip ratio of vapor phase speed to liquid phase speed.
* ACOOL   coolant cross section area in m^2.
* PCH     heating perimeter in m.
* DZ      axial mesh width in m.
* VCOOL   local coolant velocity
* IDFM    flag indicating if the drift flux model is to be used 
*         (0=HEM1(no drift velocity)/1=EPRI/2=MODEBSTION/3=GERAMP/4=CHEXAL)
*
*Parameters: output
* PHI     heat flow exchanged between clad and fluid in W/m^2.
*         Computed in transient cases.
* XFL     output coolant flow quality
* EPS     output coolant void fraction
* SLIP    output slip ratio of vapor phase speed to liquid phase speed.
* TCALO   coolant temperature in K
* RHO     coolant density in Kg/m^3
* RHOLAV  liquid density in kg/m^3
* RHOG    vapour density in kg/m^3
* TSCLAD  clad temperature in K
* KWA     flow regime (=0: single-phase; =1: subcooled; =2: nucleate
*         boiling; =3 superheated steam)
* VGJ     drift velocity in m/s
* VGJprime 
* HLV     delta between liquid and vapour enthalpies
*
*-----------------------------------------------------------------------
*
*----
*  SUBROUTINE ARGUMENTS
*----
      INTEGER I,J,K,K0,IFLUID,IHCONV,ISUBM,KWA
      REAL PINLET,MFLOW,HMAVG,ENT(4),HD,KHCONV,RADCL,ZF(2),PHI,TCALO,
     > RHO,RHOLAV,TSCLAD,XFL,EPS,SLIP,ACOOL,PCH,DZ,VCOOL,VGJprime
*----
*  LOCAL VARIABLES
*----
      REAL W(4),HL(4),JL,JG,REL,PRL,VGJ,UL
      CHARACTER HSMG*131
      LOGICAL LFIRST
*----
*  SAVE VARIABLES
*----
      SAVE DHSUB,DSAT,W
      DATA W /0.347855,0.652145,0.652145,0.347855/
*----
*  COMPUTE THE PROPERTIES OF THE SATURATED STEAM
*----
      IF(HMAVG.LT.0.0) CALL XABORT('THMH2O: NEGATIVE INPUT ENTHALPY.')
      IF(IFLUID.EQ.0) THEN
         CALL THMSAT(PINLET,TSAT)
         CALL THMTX(TSAT,0.0,RHOL,HLSAT,ZKL,ZMUL,CPL)
         CALL THMTX(TSAT,1.0,RHOG,HGSAT,ZKG,ZMUG,CPG)
      ELSE IF(IFLUID.EQ.1) THEN
         CALL THMHST(PINLET,TSAT)
         CALL THMHTX(TSAT,0.0,RHOL,HLSAT,ZKL,ZMUL,CPL)
         CALL THMHTX(TSAT,1.0,RHOG,HGSAT,ZKG,ZMUG,CPG)
      ENDIF
*----
*  COMPUTE THE DENSITY AND TEMPERATURE OF THE LIQUID
*----
      HL(1)=MIN1(ENT(1),HLSAT)
      HL(2)=MIN1(ENT(2),HLSAT)
      HL(3)=MIN1(ENT(3),HLSAT)
      HL(4)=MIN1(ENT(4),HLSAT)
      CALL THMPH(IFLUID,PINLET,HL(1),R11,TL1)
      CALL THMPH(IFLUID,PINLET,HL(2),R11,TL2)
      CALL THMPH(IFLUID,PINLET,HL(3),R11,TL3)
      CALL THMPH(IFLUID,PINLET,HL(4),R11,TL4)
      IF(IFLUID.EQ.0) THEN
        CALL THMPT(PINLET,TL1,RHO1,R2,R3,R4,CP1)
        CALL THMPT(PINLET,TL2,RHO2,R2,R3,R4,CP2)
        CALL THMPT(PINLET,TL3,RHO3,R2,R3,R4,CP3)
        CALL THMPT(PINLET,TL4,RHO4,R2,R3,R4,CP4)
        IF(ABS(TSAT-TL1).LT.0.1) CALL THMTX(TSAT,0.0,RHO1,R2,R3,R4,CP1)
        IF(ABS(TSAT-TL2).LT.0.1) CALL THMTX(TSAT,0.0,RHO2,R2,R3,R4,CP2)
        IF(ABS(TSAT-TL3).LT.0.1) CALL THMTX(TSAT,0.0,RHO3,R2,R3,R4,CP3)
        IF(ABS(TSAT-TL4).LT.0.1) CALL THMTX(TSAT,0.0,RHO4,R2,R3,R4,CP4)
      ELSE IF(IFLUID.EQ.1) THEN
        CALL THMHPT(PINLET,TL1,RHO1,R2,R3,R4,CP1)
        CALL THMHPT(PINLET,TL2,RHO2,R2,R3,R4,CP2)
        CALL THMHPT(PINLET,TL3,RHO3,R2,R3,R4,CP3)
        CALL THMHPT(PINLET,TL4,RHO4,R2,R3,R4,CP4)
        IF(ABS(TSAT-TL1).LT.0.1) CALL THMHTX(TSAT,0.0,RHO1,R2,R3,R4,CP1)
        IF(ABS(TSAT-TL2).LT.0.1) CALL THMHTX(TSAT,0.0,RHO2,R2,R3,R4,CP2)
        IF(ABS(TSAT-TL3).LT.0.1) CALL THMHTX(TSAT,0.0,RHO3,R2,R3,R4,CP3)
        IF(ABS(TSAT-TL4).LT.0.1) CALL THMHTX(TSAT,0.0,RHO4,R2,R3,R4,CP4)
      ENDIF
      TL=0.5*(W(1)*TL1+W(2)*TL2+W(3)*TL3+W(4)*TL4)
      RHOLAV=0.5*(W(1)*RHO1+W(2)*RHO2+W(3)*RHO3+W(4)*RHO4)
      CPLAV=0.5*(W(1)*CP1+W(2)*CP2+W(3)*CP3+W(4)*CP4)
*----
*  COMPUTE THE STEAM FLOW QUALITY AND LIQUID ENTHALPY
*  Reference: R. T. Lahey Jr. and F. J. Moody, "The thermal hydraulics
*  of a Boiling water nuclear reactor," American Nuclear Society, 1977.
*  Equation (5.177), page 224
*  F2: Thermodynamic quality
*----
      TSCLAD=600.0
      IF(K0.GT.0) TSCLAD=TSAT+DSAT
      XFL0=XFL
      EPS0=EPS
      SLIP0=SLIP
      LFIRST=.TRUE.
      HLAVG=HMAVG
      F2=0.0
      F3=0.0
      IF(K0.GT.0) THEN
        HLV=HGSAT-HLSAT
        IF((HLV.GT.0.0).AND.(DHSUB.GT.0.0)) THEN
          F2=(HMAVG-HLSAT)/HLV
          F3=(DHSUB/HLV)*EXP(-(HMAVG-HLSAT)/DHSUB-1.0)
        ENDIF
        IF(HMAVG.GE.HGSAT) THEN
          XFL=1.0
          EPS=1.0
          SLIP=1.0
          HLAVG=0.0
        ELSE
          IF(ISUBM.EQ.1) THEN
*           Use the Paul Gallet thesis model.
            PI=RHOLAV*CPLAV*(TSCLAD-TL)/(RHOG*HLV)
            XFL=XFL0+PCH*PHI*DZ/(MFLOW*ACOOL*HLV)/(1.0+PI)
          ELSE IF(ISUBM.EQ.2) THEN
*           Use a profile fit model.
            XFL=MAX(XFL0,(F2+F3)/(1.0+F3))
          ENDIF
          HLAVG=MIN(HLSAT,(HMAVG-XFL*HGSAT)/(1.0-XFL))
        ENDIF
*----
*  RECOMPUTE THE LIQUID PROPERTIES
*----
        IF(HLAVG.GT.0.0) THEN
          CALL THMPH(IFLUID,PINLET,HLAVG,RHOL,TL)
          IF(IFLUID.EQ.0) THEN
            CALL THMPT(PINLET,TL,R1,R2,ZKL,ZMUL,CPL)
          ELSE IF(IFLUID.EQ.1) THEN
            CALL THMHPT(PINLET,TL,R1,R2,ZKL,ZMUL,CPL)
          ENDIF
*----
*  COMPUTE THE COOLANT VOID FRACTION AND SLIP RATIO
*  A drift-flux model is proposed by means of the concentration
*  parameter CO and the drift velocity VGJ (their correspondent 
*  correlations are supposed to work fine under different flow regimes.
*----
          IF(HGSAT.GT.HLSAT) THEN
            CO=1.13
            PR=PINLET/10**6
            SIGM=-7.2391E-6*PR**3+2.8345E-4*PR**2-5.1566E-3*PR+4.2324E-2
            VGJ=1.18*((SIGM*9.81*(RHOL-RHOG))/RHOL**2)**0.25
            F4=CO*((XFL*RHOL)+((1.0-XFL)*RHOG))+(RHOL*RHOG*VGJ/MFLOW)
            EPS=(XFL*RHOL)/F4
            JL=(1.0-XFL)*MFLOW/RHOL
            JG=XFL*MFLOW/RHOG
            IF(EPS.NE.0) SLIP=JG*(1.0-EPS)/(JL*EPS)
          ENDIF
        ELSE
*         superheated steam
          CALL THMPH(IFLUID,PINLET,HMAVG,RHOG,TCALO)
          IF(IFLUID.EQ.0) THEN
            CALL THMPT(PINLET,TCALO,R1,R2,ZKG,ZMUG,CPG)
          ELSE IF(IFLUID.EQ.1) THEN
            CALL THMHPT(PINLET,TCALO,R1,R2,ZKG,ZMUG,CPG)
          ENDIF
        ENDIF
      ENDIF
*----
*  COMPUTE THE FLUID PROPERTIES
*  RHO: fluid density
*  REL: Reynolds number of liquid phase
*  PRL: Prandtl number of liquid phase
*----
      IF(XFL.EQ.0.0) THEN
*       One phase liquid
        TB=TSAT-0.1
        IF(TL.LT.TB) THEN
          TCALO=TL
        ELSE
          TCALO=TB
        ENDIF
        IF(IFLUID.EQ.0) THEN
          CALL THMPT(PINLET,TCALO,R1,R2,ZKONE,ZMUONE,CPONE)
        ELSE IF(IFLUID.EQ.1) THEN
          CALL THMHPT(PINLET,TCALO,R1,R2,ZKONE,ZMUONE,CPONE)
        ENDIF
        RHO=RHOLAV
        REL=MFLOW*HD/ZMUONE
        PRL=ZMUONE*CPONE/ZKONE
      ELSE IF(HMAVG.LT.HGSAT) THEN
*       Two-phase flow
        IF((IFLUID.EQ.0).AND.(IDFM.GT.0)) THEN
            CALL THMDFM(PINLET,VCOOL,HMAVG,HD,TL,TSAT,IDFM,EPS,XFL,
     >       RHO,RHOL,RHOG,VGJ,VGJprime,C0,HLV)
            CALL THMTX(TCALO, 0.0, RHO11, H11, ZK11, ZMUL, CPL)
            UL = VCOOL - (EPS / (1.0 - EPS))*RHOG/RHO * VGJprime
            REL = ABS(UL*RHOL) * HD / ZMUL
            PRL = ZMUL*CPL/ZKL
        ELSE
            REL=MFLOW*(1.0-XFL)*HD/ZMUL
            PRL=ZMUL*CPL/ZKL
        ENDIF
        TCALO=EPS*TSAT+(1.0-EPS)*TL
        ZKONE=ZKL
        CPONE=CPL
        RHO=EPS*RHOG+(1.0-EPS)*RHOL 
        JL=(1.0-XFL)*MFLOW/RHOL
        JG=XFL*MFLOW/RHOG
        IF(EPS.NE.0) THEN
        SLIP=JG*(1.0-EPS)/(JL*EPS) 
        ENDIF
      ELSE
*       superheated steam
        RHO=RHOG
        REL=MFLOW*HD/ZMUG
        PRL=ZMUG*CPG/ZKG
      ENDIF
*----
*  THERMAL EXCHANGE BETWEEN CLAD AND FLUID USING THE DITTUS AND BOELTER
*  CORRELATION (SINGLE PHASE) OR CHEN CORRELATION (SATURATED BOILING)
*----
      IF(IHCONV.EQ.0) THEN
        ITER=0
        KWA=99
        DO
          ITER=ITER+1
          IF(ITER.GT.500) THEN
            WRITE(HSMG,'(30HTHMH2O: HCONV FAILURE IN SLICE,I5,1H.)') K
            CALL XABORT(HSMG)
          ENDIF
          HA=0.023*(ZKONE/HD)*REL**0.8*PRL**0.4
          F=1.0
          S=1.0
          IF((XFL.EQ.XFL0).OR.(TSCLAD.LE.TSAT).OR.(KWA.EQ.0)) THEN
*           Single-phase convection. Use Dittus-Boelter correlation
            KWA=0
            HB=0.0
            K0=0
            XFL=XFL0
            EPS=EPS0
            SLIP=SLIP0
          ELSE IF(HMAVG.LT.HGSAT) THEN
*           Subcooled convection. Use Dittus-Boelter and Forster-Zuber
*           correlations
*           XM: Martinelli parameter
*           F: Reynolds number factor
*           S: nucleate boiling suppression factor
*           SIGM: surface tension in N/m
*           HA: Dittus-Boelter coefficient
*           HB: Forster-Zuber coefficient
*
            IF(HMAVG.LT.HLSAT) THEN
              KWA=1
            ELSE
              KWA=2
            ENDIF
            XM=(XFL/(1.0-XFL))**0.9*(RHOL/RHOG)**0.5*(ZMUG/ZMUL)**0.1
            IF(XM.LE.0.100207) THEN
              F=1.0
            ELSE
              F=2.35*(0.213+XM)**0.736
            ENDIF
            RE=REL*F**1.25
            S=1.0/(1.0+2.53E-6*RE**1.17)
            PR=PINLET/10**6
            SIGM=-7.2391E-6*PR**3+2.8345E-4*PR**2-5.1566E-3*PR+4.2324E-2
            HA=0.023*(ZKL/HD)*REL**0.8*PRL**0.4
            DTSAT=TSCLAD-TSAT
            IF(IFLUID.EQ.0) THEN
              CALL THMSAP(PW, TSCLAD)
            ELSE
              CALL THMHSP(PW, TSCLAD)
            ENDIF
            DP=PW-PINLET
*           Forster-Zuber equation
            HLV=HGSAT-HLSAT
            HB=0.00122*ZKL**0.79*CPL**0.45*RHOL**0.49/(ZMUL**0.29*
     >      SIGM**0.5*HLV**0.24*RHOG**0.24)*DTSAT**0.24*DP**0.75
          ELSE
*           Superheated steam. Use Mokry correlation
            KWA=3
            IF(IFLUID.EQ.0) THEN
              CALL THMPT(PINLET,TSCLAD,RHOW,R2,R3,R4,R5)
            ELSE IF(IFLUID.EQ.1) THEN
              CALL THMHPT(PINLET,TSCLAD,RHOW,R2,R3,R4,R5)
            ENDIF
            HA=0.0061*(ZKG/HD)*REL**0.904*PRL**0.684*(RHOW/RHO)**0.564
            HB=0.0
          ENDIF
*         Chen correlation
          HCONV=F*HA+S*HB
          IF(HCONV.LE.0.0) THEN
            WRITE(HSMG,'(34HTHMH2O: DRY OUT REACHED IN CHANNEL,3I5)')
     >      I,J,K
            CALL XABORT(HSMG)
          ENDIF
          IF(ITIME.EQ.0) THEN
            TWAL=(PHI+S*HB*TSAT+F*HA*TCALO)/(S*HB+F*HA)
          ELSE
            ZNUM=ZF(1)+RADCL*S*HB*TSAT+RADCL*F*HA*TCALO
            ZDEN=ZF(2)+RADCL*S*HB+RADCL*F*HA
            TWAL=MAX(273.15,ZNUM/ZDEN)
            PHI=MAX(0.0,(ZF(1)-TWAL*ZF(2))/RADCL)
          ENDIF
          IF(ABS(TSCLAD-TWAL).GT.1.0E-5*TSCLAD) THEN
            TSCLAD=TWAL
          ELSE
            EXIT
          ENDIF
        ENDDO
      ELSE IF(IHCONV.EQ.1) THEN
        IF(ITIME.EQ.0) THEN
          TSCLAD=TCALO+PHI/KHCONV
        ELSE
          RCHC=RADCL*KHCONV
          TSCLAD=MAX(273.15,(ZF(1)+RCHC*TCALO)/(ZF(2)+RCHC))
          PHI=(ZF(1)-TSCLAD*ZF(2))/RADCL
        ENDIF
      ENDIF
*----
*  COMPUTE INITIAL BULK LIQUID ENTHALPY SUBCOOLING DHSUB
*----
      IF((ISUBM.GT.0).AND.(K0.EQ.0).AND.LFIRST) THEN
        DTSUB=0.0
        IF(ISUBM.EQ.1) THEN
*         Bowring correlation
*         Reference: R. W. Bowring, "Physical Model, Based on Bubble
*         Detachment, and Calculation of Steam Voidage in the Subcooled
*         Region of a Heated Channel," OECD Report HPR-10, 1962.
*         Equation3 (3) and (17)
          VC=MFLOW/RHOL
          ETA=14.0+0.1*PINLET/1.01325E+05
          DTSUB=ETA*PHI/VC*1.0E-6
         ELSE IF(ISUBM.EQ.2) THEN
*         Saha-Zuber subcooling model
*         PE: Peclet number
          PE=MFLOW*CPL*HD/ZKL
          IF(PE.LE.70000.0) THEN
            DTSUB=PHI*HD/(455.0*ZKL)
          ELSE
*           reactor conditions
            DTSUB=154.0*PHI/(MFLOW*CPL)
          ENDIF
        ENDIF
        IF(TCALO.GE.TSAT-DTSUB) K0=K
        DSAT=TSCLAD-TCALO-DTSUB
        DHSUB=CPL*DTSUB
        LFIRST=.FALSE.
      ENDIF
      RETURN
      END