~ubuntu-branches/ubuntu/precise/code-saturne/precise

« back to all changes in this revision

Viewing changes to src/comb/cs_gascomb.f90

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2011-11-01 17:43:32 UTC
  • mto: (6.1.7 sid)
  • mto: This revision was merged to the branch mainline in revision 11.
  • Revision ID: package-import@ubuntu.com-20111101174332-tl4vk45no0x3emc3
Tags: upstream-2.1.0
Import upstream version 2.1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
!-------------------------------------------------------------------------------
 
2
 
 
3
! This file is part of Code_Saturne, a general-purpose CFD tool.
 
4
!
 
5
! Copyright (C) 1998-2011 EDF S.A.
 
6
!
 
7
! This program is free software; you can redistribute it and/or modify it under
 
8
! the terms of the GNU General Public License as published by the Free Software
 
9
! Foundation; either version 2 of the License, or (at your option) any later
 
10
! version.
 
11
!
 
12
! This program is distributed in the hope that it will be useful, but WITHOUT
 
13
! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 
14
! FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
 
15
! details.
 
16
!
 
17
! You should have received a copy of the GNU General Public License along with
 
18
! this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
 
19
! Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
20
 
 
21
!-------------------------------------------------------------------------------
 
22
 
 
23
subroutine cs_gascomb &
 
24
!====================
 
25
 ( ncelet , ncel   , icb1 , icb2 ,                                        &
 
26
   indpdf ,                                                               &
 
27
   rtp    , x2     ,                                                      &
 
28
   f1m    , f2m    , f3m      , f4m    , f5m  , f6m , f7m , f8m , f9m ,   &
 
29
   pdfm1  , pdfm2  , doxyd    , dfuel  , hrec ,                           &
 
30
   af1    , af2    , cx1m     , cx2m   , wmf1   , wmf2 ,                  &
 
31
   fuel1  , fuel2  , fuel3 , fuel4 , fuel5 ,fuel6 , fuel7  ,              &
 
32
   oxyd   , prod1  , prod2  , prod3 , xiner ,                             &
 
33
   fs3no  , fs4no  , yfs4no    )
 
34
 
 
35
!===============================================================================
 
36
! FONCTION :
 
37
! --------
 
38
! CALCUL DES CONCENTRATIONS GAZEUSES MOYENNES
 
39
!  VALEURS CELLULES
 
40
!  ----------------
 
41
! Arguments
 
42
!__________________.____._____.________________________________________________.
 
43
! name             !type!mode ! role                                           !
 
44
!__________________!____!_____!________________________________________________!
 
45
! ncelet           ! i  ! <-- ! number of extended (real + ghost) cells        !
 
46
! ncel             ! i  ! <-- ! number of cells                                !
 
47
! indpdf           ! te ! <-- ! passage par les pdf                            !
 
48
! f1m              ! tr ! <-- ! moyenne du traceur 1 mvl [chx1m+co]            !
 
49
! f2m              ! tr ! <-- ! moyenne du traceur 2 mvl [chx2m+co]            !
 
50
! f3m              ! tr ! <-- ! moyenne du traceur 3 (oxydant 1)               !
 
51
! f4m              ! tr ! <-- ! moyenne du traceur 4 (oxydant 2)               !
 
52
! f5m              ! tr ! <-- ! moyenne du traceur 5 (oxydant 3)               !
 
53
! f6m              ! tr ! <-- ! moyenne du traceur 6 (humidite )               !
 
54
! f7m              ! tr ! <-- ! moyenne du traceur 7 (C + O2  )                !
 
55
! f8m              ! tr ! <-- ! moyenne du traceur 8 (C + CO2 )                !
 
56
! f9m              ! tr ! <-- ! moyenne du traceur 9 (C + H2O )                !
 
57
! pdfm1            ! tr ! <-- ! borne minimum de la pdf                        !
 
58
! pdfm2            ! tr ! <-- ! borne maximum de la pdf                        !
 
59
! dfuel            ! tr ! <-- ! amplitude du pic de dirac en 0                 !
 
60
! doxyd            ! tr ! <-- ! amplitude du pic de dirac en 1                 !
 
61
! hrec             ! tr ! <-- ! hauteur du rectangle de la pdf                 !
 
62
! fuel1            ! tr !  <- ! fraction massique chx1m                        !
 
63
! fuel2            ! tr !  <- ! fraction massique chx2m                        !
 
64
! fuel3            ! tr !  <- ! fraction massique co                           !
 
65
! fuel4            ! tr !  <- ! fraction massique h2s                          !
 
66
! fuel5            ! tr !  <- ! fraction massique h2                           !
 
67
! fuel6            ! tr !  <- ! fraction massique hcn                          !
 
68
! oxyd             ! tr !  <- ! fraction massique o2                           !
 
69
! prod1            ! tr !  <- ! fraction massique co2                          !
 
70
! prod2            ! tr !  <- ! fraction massique h2o                          !
 
71
! prod3            ! tr !  <- ! fraction massique so2                          !
 
72
! prod4            ! tr !  <- ! fraction massique nh3                          !
 
73
! xiner            ! tr !  <- ! fraction massique n2                           !
 
74
!__________________!____!_____!________________________________________________!
 
75
 
 
76
!     TYPE : E (ENTIER), R (REEL), A (ALPHAMNUMERIQUE), T (TABLEAU)
 
77
!            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
 
78
!     MODE : <-- donnee, --> resultat, <-> Donnee modifiee
 
79
!            --- tableau de travail
 
80
!===============================================================================
 
81
 
 
82
!==============================================================================
 
83
! Module files
 
84
!==============================================================================
 
85
 
 
86
use paramx
 
87
use numvar
 
88
use optcal
 
89
use cstphy
 
90
use cstnum
 
91
use entsor
 
92
use parall
 
93
use pointe
 
94
use ppppar
 
95
use ppthch
 
96
use coincl
 
97
use cpincl
 
98
use ppincl
 
99
use ppcpfu
 
100
 
 
101
!===============================================================================
 
102
 
 
103
implicit none
 
104
 
 
105
! Arguments
 
106
 
 
107
integer          ncelet , ncel
 
108
integer          icb1   , icb2
 
109
integer          indpdf(ncel)
 
110
 
 
111
double precision rtp(ncelet,*), x2(ncel)
 
112
double precision f1m(ncel)  , f2m(ncel) , f3m(ncel)
 
113
double precision f4m(ncel)  , f5m(ncel) , f6m(ncel)
 
114
double precision f7m(ncel)  , f8m(ncel) , f9m(ncel)
 
115
 
 
116
 
 
117
double precision pdfm1(ncel), pdfm2(ncel) , dfuel(ncel)
 
118
double precision doxyd(ncel) , hrec(ncel)
 
119
 
 
120
double precision af1(ncel,ngazg), af2(ncel,ngazg)
 
121
double precision cx1m(ncel), cx2m(ncel) , wmf1(ncel) , wmf2(ncel)
 
122
 
 
123
double precision fuel1(ncel), fuel2(ncel) , fuel3(ncel)
 
124
double precision fuel4(ncel), fuel5(ncel) , fuel6(ncel), fuel7(ncel)
 
125
double precision oxyd(ncel)
 
126
double precision prod1(ncel), prod2(ncel), prod3(ncel)
 
127
double precision xiner(ncel)
 
128
!
 
129
double precision fs3no(ncel),fs4no(ncel)
 
130
double precision yfs4no(ncel,ngazg)
 
131
 
 
132
! Local variables
 
133
integer           NBPRINT
 
134
parameter        (NBPRINT=15)
 
135
integer          INTTMP(NBPRINT)
 
136
!
 
137
integer          ii,iel
 
138
integer          n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15
 
139
 
 
140
double precision bb1   , bb2  , fs1 , fs2 , fs3 , fs4
 
141
double precision anu1  , anu2  , anu3  , anu4  , anu5
 
142
double precision reac1 , reac2 , reac3 , reac4 , reac5
 
143
double precision scomb , soxy
 
144
double precision wmco  , wmh2s , wmh2  , wmhcn
 
145
double precision wmo2  , wmco2 , wmh2o , wmso2 , wmnh3 , wmn2
 
146
double precision zco2t
 
147
double precision somm  , sommax , sommin
 
148
 
 
149
double precision zz(ngazem) , zzox(ngazem) , zzcl(ngazem)
 
150
double precision zzs1(ngazem),zzs2(ngazem),zzs3(ngazem),zzs4(ngazem)
 
151
 
 
152
!
 
153
!===============================================================================
 
154
! 1. CALCULS PRELIMINAIRES
 
155
!===============================================================================
 
156
 
 
157
! --- Masses molaires
 
158
wmco   = wmole(ico  )
 
159
wmh2s  = wmole(ih2s )
 
160
wmh2   = wmole(ihy  )
 
161
wmhcn  = wmole(ihcn )
 
162
wmnh3  = wmole(inh3 )
 
163
wmo2   = wmole(io2  )
 
164
wmco2  = wmole(ico2 )
 
165
wmh2o  = wmole(ih2o )
 
166
wmso2  = wmole(iso2 )
 
167
wmn2   = wmole(in2  )
 
168
 
 
169
! ---- Initialisation des fractions massiques avec l'oxydant 1
 
170
 
 
171
do iel = 1, ncel
 
172
  fuel1(iel)  = wmf1(iel)*af3(icb1)
 
173
  fuel2(iel)  = wmf2(iel)*af3(icb2)
 
174
  fuel3(iel)  = wmco     *af3(ico)
 
175
  fuel4(iel)  = wmh2s    *af3(ih2s)
 
176
  fuel5(iel)  = wmh2     *af3(ihy)
 
177
  fuel6(iel)  = wmhcn    *af3(ihcn)
 
178
  fuel7(iel)  = wmnh3    *af3(inh3)
 
179
  oxyd(iel)   = wmo2     *af3(io2)
 
180
  prod1(iel)  = wmco2    *af3(ico2)
 
181
  prod2(iel)  = wmh2o    *af3(ih2o)
 
182
  prod3(iel)  = wmso2    *af3(iso2)
 
183
  xiner(iel)  = wmn2     *af3(in2)
 
184
enddo
 
185
 
 
186
!===============================================================================
 
187
! 3. CALCUL DE LA COMPOSITION DU MELANGE SANS LES PDF
 
188
!    SI LES FLUCTUATIONS DE S SONT TROP FAIBLES
 
189
!===============================================================================
 
190
 
 
191
do iel = 1, ncel
 
192
 
 
193
  if ( indpdf(iel).eq.0 ) then
 
194
 
 
195
! --> Calculs preliminaires
 
196
    if ( ieqco2 .eq. 1 ) then
 
197
      zco2t = (rtp(iel,isca(iyco2))/ (1.d0-x2(iel)))/wmco2
 
198
    else
 
199
      zco2t = 0.d0
 
200
    endif
 
201
 
 
202
! --> Composition de la phase gazeuse avant combustion
 
203
!
 
204
    do ii=1,ngazg
 
205
      zz(ii) = af1(iel,ii)*f1m(iel)+af2(iel,ii)*f2m(iel)                &
 
206
              +af3(ii)*f3m(iel)+af4(ii)*f4m(iel)+af5(ii)*f5m(iel)       &
 
207
              +af6(ii)*f6m(iel)+af7(ii)*f7m(iel)+af8(ii)*f8m(iel)       &
 
208
              +af9(ii)*f9m(iel)
 
209
    enddo
 
210
!
 
211
! --> Calcul de la composition du melange
 
212
!
 
213
!  1ere reaction :
 
214
!
 
215
    anu1   = 0.5d0
 
216
    reac1  = min(zz(ihy),(zz(io2)/anu1))
 
217
    zz(ihy) = zz(ihy)  -      reac1
 
218
    zz(io2) = zz(io2)  - anu1*reac1
 
219
    zz(ih2o)= zz(ih2o) +      reac1
 
220
!
 
221
!  2eme reaction :
 
222
!
 
223
    anu2   = 0.25d0*abs(cx1m(iel)-cx2m(iel))
 
224
    reac2  = min(zz(icb1), (zz(io2)/anu2))
 
225
    zz(icb1)= zz(icb1) -           reac2
 
226
    zz(icb2)= zz(icb2) +           reac2
 
227
    zz(io2)  = zz(io2)   -      anu2*reac2
 
228
    zz(ih2o) = zz(ih2o)  + 2.d0*anu2*reac2
 
229
!
 
230
!  3eme reaction :
 
231
!
 
232
    anu3  = 0.25d0*(2.d0 + cx2m(iel))
 
233
    reac3 = min(zz(icb2), (zz(io2)/anu3))
 
234
    zz(icb2) = zz(icb2) -                 reac3
 
235
    zz(ico)   = zz(ico)   +                 reac3
 
236
    zz(io2)   = zz(io2)   -            anu3*reac3
 
237
    zz(ih2o)  = zz(ih2o)  + 0.5d0*cx2m(iel)*reac3
 
238
!
 
239
!  4eme reaction :
 
240
!
 
241
    anu4  = 1.5D0
 
242
    reac4 = min(zz(ih2s), (zz(io2)/anu4))
 
243
    zz(ih2s) = zz(ih2s)   -      reac4
 
244
    zz(io2)  = zz(io2)    - anu4*reac4
 
245
    zz(ih2o) = zz(ih2o)   +      reac4
 
246
    zz(iso2) = zz(iso2)   +      reac4
 
247
!
 
248
!  5eme reaction :
 
249
!
 
250
    anu5   = 0.5d0
 
251
    if ( ieqco2 .eq. 0 ) then
 
252
      reac5  = min(zz(ico), (zz(io2)/anu5))
 
253
    else if ( ieqco2 .eq. 1 ) then
 
254
      reac5  = min(max(zco2t-zz(ico2),0.d0),zz(ico),zz(io2)/anu5)
 
255
    endif
 
256
    zz(ico) = zz(ico)    -      reac5
 
257
    zz(io2) = zz(io2)    - anu5*reac5
 
258
    zz(ico2)= zz(ico2)   +      reac5
 
259
!
 
260
    fuel1(iel) = zz(icb1) * wmf1(iel)
 
261
    fuel2(iel) = zz(icb2) * wmf2(iel)
 
262
    fuel3(iel) = zz(ico ) * wmco
 
263
    fuel4(iel) = zz(ih2s) * wmh2s
 
264
    fuel5(iel) = zz(ihy ) * wmh2
 
265
    fuel6(iel) = zz(ihcn) * wmhcn
 
266
    fuel7(iel) = zz(inh3) * wmnh3
 
267
    oxyd (iel) = zz(io2 ) * wmo2
 
268
    prod1(iel) = zz(ico2) * wmco2
 
269
    prod2(iel) = zz(ih2o) * wmh2o
 
270
    prod3(iel) = zz(iso2) * wmso2
 
271
    xiner(iel) = zz(in2 ) * wmn2
 
272
!
 
273
  endif
 
274
 
 
275
enddo
 
276
 
 
277
!===============================================================================
 
278
! 4. CALCUL DE LA COMPOSITION DU MELANGE AVEC LES PDF
 
279
!===============================================================================
 
280
!
 
281
do iel = 1, ncel
 
282
 
 
283
  if ( indpdf(iel).eq.1 ) then
 
284
 
 
285
! --> Calculs preliminaires
 
286
 
 
287
    if ( ieqco2 .eq. 1 ) then
 
288
      zco2t = (rtp(iel,isca(iyco2))/(1.d0-x2(iel)))/wmco2
 
289
    else
 
290
      zco2t = 0.d0
 
291
    endif
 
292
! Oxydant local
 
293
    soxy = f3m(iel)+f4m(iel)+f5m(iel)+f6m(iel)+f7m(iel)+f8m(iel)+f9m(iel)
 
294
!
 
295
    zzox(icb1) = 0.d0
 
296
    zzox(icb2) = 0.d0
 
297
    do ii=3,ngazg
 
298
      zzox(ii)   = (  af3(ii)*f3m(iel)+af4(ii)*f4m(iel)     &
 
299
                     +af5(ii)*f5m(iel)+af6(ii)*f6m(iel)     &
 
300
                     +af7(ii)*f7m(iel)+af8(ii)*f8m(iel)     &
 
301
                     +af9(ii)*f9m(iel)                        ) / soxy
 
302
    enddo
 
303
! Combustible local
 
304
    scomb       = f1m(iel)+f2m(iel)
 
305
    do ii=1,ngazg
 
306
      zzcl(ii)  = ( af1(iel,ii)*f1m(iel)+af2(iel,ii)*f2m(iel) ) / scomb
 
307
    enddo
 
308
!
 
309
!  1ere reaction : recombinaison de l'hydrogene
 
310
!
 
311
    reac1 = min(zzox(ihy),(2.d0*zzox(io2)))
 
312
    zzox(ihy ) = zzox(ihy ) -       reac1
 
313
    zzox(ih2o) = zzox(ih2o) +       reac1
 
314
    zzox(io2 ) = zzox(io2 ) - 0.5d0*reac1
 
315
!
 
316
!  2eme reaction : CHx1 + (x1-x2)/4 O2  => CHx2 + (x1-x2)/2 H2O
 
317
!
 
318
    if ( zzcl(icb1) .gt. 0.d0  .and. zzox(io2) .gt. 0.d0 ) then
 
319
      fs1 = zzox(io2)/( abs(cx1m(iel)-cx2m(iel))/4.d0      &
 
320
           *zzcl(icb1)+zzox(io2) )
 
321
    else
 
322
      fs1 = 1.d0
 
323
    endif
 
324
!
 
325
    do ii=1,ngazg
 
326
      zzs1(ii) = fs1*zzcl(ii)+(1.d0-fs1)*zzox(ii)
 
327
    enddo
 
328
    zzs1(icb2) = zzs1(icb1)+zzs1(icb2)
 
329
    zzs1(ih2o) = zzs1(ih2o) + 0.5d0*abs(cx1m(iel)-cx2m(iel))*zzs1(icb1)
 
330
    zzs1(icb1) = 0.d0
 
331
    zzs1(io2 ) = 0.d0
 
332
 
 
333
!
 
334
!  3eme reaction : CHx2 + (2+x2)/4 O2 => CO + x2/2 H2O
 
335
!
 
336
    if ( zzs1(icb2).gt. 0.d0 .and. zzox(io2).gt. 0.d0 ) then
 
337
      fs2 = fs1 * zzox(io2) / ( (2.d0+cx2m(iel))/4.d0   &
 
338
           *zzs1(icb2)+zzox(io2) )
 
339
    else
 
340
      fs2 = fs1
 
341
    endif
 
342
!
 
343
    do ii=1,ngazg
 
344
      zzs2(ii) = (fs2/fs1)*zzs1(ii)+(1.d0-(fs2/fs1))*zzox(ii)
 
345
    enddo
 
346
    zzs2(ico )= zzs2(ico)+zzs2(icb2)
 
347
    zzs2(ih2o)= zzs2(ih2o)+cx2m(iel)/2.d0*zzs2(icb2)
 
348
    zzs2(icb2)= 0.d0
 
349
    zzs2(io2 )= 0.d0
 
350
!
 
351
!  4eme reaction :  H2S + 3/2 O2 => H2O + SO2
 
352
!
 
353
    if ( zzs2(ih2s).gt. 0.d0 .and. zzox(io2).gt. 0.d0 ) then
 
354
      fs3 = fs2 * zzox(io2) / ( 1.5d0*zzs2(ih2s)+zzox(io2) )
 
355
    else
 
356
      fs3 = fs2
 
357
    endif
 
358
!
 
359
    do ii=1,ngazg
 
360
      zzs3(ii) = (fs3/fs2)*zzs2(ii)+(1.d0-(fs3/fs2))*zzox(ii)
 
361
    enddo
 
362
    zzs3(iso2) = zzs3(iso2)+zzs3(ih2s)
 
363
    zzs3(ih2o) = zzs3(ih2o)+zzs3(ih2s)
 
364
    zzs3(ih2s) = 0.d0
 
365
    zzs3(io2 ) = 0.d0
 
366
!
 
367
!  5eme reaction CO+1/2 O2 => CO2
 
368
!
 
369
    if ( ( zzs3(ico).gt. 0.d0 .and. zzox(io2).gt. 0.d0 )   &
 
370
        .and. ieqco2 .eq. 0                              ) then
 
371
      fs4 = fs3 * zzox(io2) / ( zzs3(ico) + zzox(io2) )
 
372
    else
 
373
      fs4 = fs3
 
374
    endif
 
375
!
 
376
    do ii=1,ngazg
 
377
      zzs4(ii) = (fs4/fs3)*zzs3(ii)+(1.d0-(fs4/fs3))*zzox(ii)
 
378
    enddo
 
379
!
 
380
    if ( ieqco2 .eq. 0 ) then
 
381
      zzs4(ico2) = zzs4(ico2)+zzs4(ico)
 
382
      zzs4(io2 ) = zzs4(io2)/2.d0
 
383
      zzs4(ico ) = 0.d0
 
384
    endif
 
385
!
 
386
!  Stockage de fs3 , fs4 et des concentrations en fs4 pour le modele de NOx
 
387
!
 
388
    if ( ieqnox .eq. 1 ) then
 
389
!
 
390
      fs3no(iel) = fs3
 
391
!
 
392
      if ( zzs3(ico).gt. 0.d0 .and. zzox(io2).gt. 0.d0 ) then
 
393
        fs4no(iel) = fs3 * zzox(io2) / ( zzs3(ico) + zzox(io2) )
 
394
      else
 
395
        fs4no(iel) = fs3
 
396
      endif
 
397
!
 
398
      do ii=1,ngazg
 
399
        yfs4no(iel,ii) = (fs4no(iel)/fs3)*zzs3(ii)              &
 
400
                       +(1.d0-(fs4no(iel)/fs3))*zzox(ii)
 
401
      enddo
 
402
      yfs4no(iel,ico2) = yfs4no(iel,ico2)+yfs4no(iel,ico)
 
403
      yfs4no(iel,io2 ) = yfs4no(iel,io2)/2.d0
 
404
      yfs4no(iel,ico ) = 0.d0
 
405
 
 
406
      yfs4no(iel,icb1) = yfs4no(iel,icb1) * wmf1(iel)
 
407
      yfs4no(iel,icb2) = yfs4no(iel,icb2) * wmf2(iel)
 
408
      do ii=ico,ngazg
 
409
        yfs4no(iel,ii) = yfs4no(iel,ii)*wmole(ii)
 
410
      enddo
 
411
!
 
412
    endif
 
413
!
 
414
!        D�sormais on connait les concentrations e
 
415
!        cl,s1,s2,s3,s4,Ox
 
416
!        les concentrations interm�diaires sont lin�aires par morceaux
 
417
!        et les param�tres de la pdf dfuel,doxyd, pdfm1,pdfm2,hrec
 
418
!
 
419
!        On initialise par les concentrations aux extr�mit�s
 
420
    do ii = 1,ngazg
 
421
      zz(ii) = dfuel(iel)*zzcl(ii)+doxyd(iel)*zzox(ii)
 
422
    enddo
 
423
! Integration sur le premier intervalle de richesse (entre s1 et 1)
 
424
    bb1 = max(pdfm1(iel),fs1)
 
425
    bb2 = min(pdfm2(iel),1.d0)
 
426
    if( bb2.gt.bb1 ) then
 
427
      do ii = 1,ngazg
 
428
        zz(ii) =  zz(ii) + hrec(iel)*(bb2-bb1)/(1.d0-fs1)       &
 
429
                *(  zzs1(ii)-fs1*zzcl(ii)                       &
 
430
                  +(zzcl(ii)-zzs1(ii))*(bb1+bb2)*0.5d0 )
 
431
      enddo
 
432
    endif
 
433
! Int�gration sur le deuxi�me intervalle de (entre s2 et s1)
 
434
    bb1 = max(pdfm1(iel),fs2)
 
435
    bb2 = min(pdfm2(iel),fs1)
 
436
    if( bb2.gt.bb1 ) then
 
437
      do ii = 1,ngazg
 
438
        zz(ii) =  zz(ii) + hrec(iel)*(bb2-bb1)/(fs1-fs2)         &
 
439
                *( fs1*zzs2(ii)-fs2*zzs1(ii)                     &
 
440
                  +(zzs1(ii)-zzs2(ii))*(bb1+bb2)*0.5d0 )
 
441
      enddo
 
442
    endif
 
443
! Integration sur le troisi�me intervalle de (entre s3 et s2)
 
444
    bb1 = max(pdfm1(iel),fs3)
 
445
    bb2 = min(pdfm2(iel),fs2)
 
446
    if( bb2.gt.bb1 ) then
 
447
      do ii = 1,ngazg
 
448
        zz(ii) =  zz(ii) + hrec(iel)*(bb2-bb1)/(fs2-fs3)         &
 
449
                *( fs2*zzs3(ii)-fs3*zzs2(ii)                     &
 
450
                  +(zzs2(ii)-zzs3(ii))*(bb1+bb2)*0.5d0 )
 
451
      enddo
 
452
    endif
 
453
!
 
454
! Integration sur le quatrieme intervalle de (entre s4 et s3)
 
455
    bb1 = max(pdfm1(iel),fs4)
 
456
    bb2 = min(pdfm2(iel),fs3)
 
457
    if ( bb2.gt.bb1 ) then
 
458
      do ii = 1,ngazg
 
459
        zz(ii) =  zz(ii) + hrec(iel)*(bb2-bb1)/(fs3-fs4)         &
 
460
                *( fs3*zzs4(ii)-fs4*zzs3(ii)                     &
 
461
                  +(zzs3(ii)-zzs4(ii))*(bb1+bb2)*0.5d0 )
 
462
      enddo
 
463
    endif
 
464
!  Integration sur le cinquieme intervalle de (entre 0 et s4)
 
465
    bb1 = max(pdfm1(iel),0.d0)
 
466
    bb2 = min(pdfm2(iel),fs4)
 
467
    if ( bb2.gt.bb1 ) then
 
468
      do ii = 1,ngazg
 
469
        zz(ii) =  zz(ii) + hrec(iel)*(bb2-bb1)/(fs4-0.d0)         &
 
470
                *( fs4*zzox(ii)-0.d0*zzs4(ii)                     &
 
471
                  +(zzs4(ii)-zzox(ii))*(bb1+bb2)*0.5d0 )
 
472
      enddo
 
473
    endif
 
474
!
 
475
    if ( ieqco2 .eq. 1 ) then
 
476
!
 
477
!   transport de co2
 
478
!
 
479
      anu5   = 0.5d0
 
480
      reac5  = min(max(zco2t-zz(ico2),0.d0),zz(ico),zz(io2)/anu5)
 
481
!
 
482
      zz(ico ) = zz(ico ) -      reac5
 
483
      zz(io2 ) = zz(io2 ) - anu5*reac5
 
484
      zz(ico2) = zz(ico2) +      reac5
 
485
!
 
486
    endif
 
487
 
 
488
    fuel1(iel) = zz(icb1) * wmf1(iel)
 
489
    fuel2(iel) = zz(icb2) * wmf2(iel)
 
490
    fuel3(iel) = zz(ico ) * wmco
 
491
    fuel4(iel) = zz(ih2s) * wmh2s
 
492
    fuel5(iel) = zz(ihy ) * wmh2
 
493
    fuel6(iel) = zz(ihcn) * wmhcn
 
494
    fuel7(iel) = zz(inh3) * wmnh3
 
495
    oxyd(iel)  = zz(io2 ) * wmo2
 
496
    prod1(iel) = zz(ico2) * wmco2
 
497
    prod2(iel) = zz(ih2o) * wmh2o
 
498
    prod3(iel) = zz(iso2) * wmso2
 
499
    xiner(iel) = zz(in2 ) * wmn2
 
500
 
 
501
 
 
502
  endif
 
503
 
 
504
enddo
 
505
 
 
506
!===============================================================================
 
507
! 5.  IMPRESSION
 
508
!===============================================================================
 
509
n1  = ncel
 
510
n2  = 0
 
511
n3  = 0
 
512
n4  = 0
 
513
n5  = 0
 
514
n6  = 0
 
515
n7  = 0
 
516
n8  = 0
 
517
n9  = 0
 
518
n10 = 0
 
519
n11 = 0
 
520
n12 = 0
 
521
n13 = 0
 
522
n14 = 0
 
523
n15 = 0
 
524
 
 
525
! --> Controle des parametres de la pdf
 
526
 
 
527
do iel = 1, ncel
 
528
  if ( indpdf(iel).ne.0 ) then
 
529
    n2 = n2 +1
 
530
  endif
 
531
enddo
 
532
 
 
533
! --> Controle des differentes valeurs des fractions massiques
 
534
 
 
535
sommin = 1.d+20
 
536
sommax =-1.d+20
 
537
do iel = 1, ncel
 
538
 
 
539
  somm = fuel1(iel) + fuel2(iel) + fuel3(iel)                     &
 
540
       + fuel4(iel) + fuel5(iel) + fuel6(iel) + fuel7(iel)        &
 
541
       + oxyd(iel)                                                &
 
542
       + prod1(iel) + prod2(iel) + prod3(iel)                     &
 
543
       + xiner(iel)
 
544
 
 
545
  sommin = min(sommin,somm)
 
546
  sommax = max(sommax,somm)
 
547
 
 
548
  if ( abs(somm-1.d0).lt.epsicp )   then
 
549
    n3  = n3 +1
 
550
  endif
 
551
 
 
552
  if ( fuel1(iel).lt.(-epzero) .or.                               &
 
553
       fuel1(iel).gt.(1.d0+epzero) ) n4  = n4 +1
 
554
  if ( fuel2(iel).lt.(-epzero) .or.                               &
 
555
       fuel2(iel).gt.(1.d0+epzero) ) n5  = n5 +1
 
556
  if ( fuel3(iel).lt.(-epzero) .or.                               &
 
557
       fuel3(iel).gt.(1.d0+epzero) ) n6  = n6 +1
 
558
  if ( fuel4(iel).lt.(-epzero) .or.                               &
 
559
       fuel4(iel).gt.(1.d0+epzero) ) n7  = n7 +1
 
560
  if ( fuel5(iel).lt.(-epzero) .or.                               &
 
561
       fuel5(iel).gt.(1.d0+epzero) ) n8  = n8 +1
 
562
  if ( fuel6(iel).lt.(-epzero) .or.                               &
 
563
       fuel6(iel).gt.(1.d0+epzero) ) n9  = n9 +1
 
564
  if ( fuel7(iel).lt.(-epzero) .or.                               &
 
565
       fuel7(iel).gt.(1.d0+epzero) ) n10 = n10+1
 
566
  if ( oxyd(iel).lt.(-epzero) .or.                                &
 
567
       oxyd(iel).gt.(1.d0+epzero)  ) n11 = n11+1
 
568
  if ( xiner(iel).lt.(-epzero) .or.                               &
 
569
       xiner(iel).gt.(1.d0+epzero) ) n12 = n12+1
 
570
  if ( prod1(iel).lt.(-epzero) .or.                               &
 
571
       prod1(iel).gt.(1.d0+epzero) ) n13 = n13+1
 
572
  if ( prod2(iel).lt.(-epzero) .or.                               &
 
573
       prod2(iel).gt.(1.d0+epzero) ) n14 = n14+1
 
574
  if ( prod3(iel).lt.(-epzero) .or.                               &
 
575
       prod3(iel).gt.(1.d0+epzero) ) n15 = n15+1
 
576
 
 
577
enddo
 
578
 
 
579
n1 = ncel
 
580
 
 
581
inttmp( 1) = n1
 
582
inttmp( 2) = n2
 
583
inttmp( 3) = n3
 
584
inttmp( 4) = n4
 
585
inttmp( 5) = n5
 
586
inttmp( 6) = n6
 
587
inttmp( 7) = n7
 
588
inttmp( 8) = n8
 
589
inttmp( 9) = n9
 
590
inttmp(10) = n10
 
591
inttmp(11) = n11
 
592
inttmp(12) = n12
 
593
inttmp(13) = n13
 
594
inttmp(14) = n14
 
595
inttmp(15) = n15
 
596
if (irangp.ge.0) then
 
597
  call parism(nbprint,inttmp)
 
598
  !==========
 
599
endif
 
600
 
 
601
write(nfecra,1000) inttmp(1),inttmp(2)
 
602
write(nfecra,2200) (inttmp(ii),ii=3,15)
 
603
 
 
604
if ( irangp .ge. 0 ) then
 
605
  call parmin(sommin)
 
606
  call parmax(sommax)
 
607
endif
 
608
 
 
609
write(nfecra,*) ' Somme Min MAX = ', sommin, sommax
 
610
 
 
611
!--------
 
612
! Formats
 
613
!--------
 
614
 
 
615
 1000 format (/,                                                  &
 
616
'MODELISATION DE LA COMBUSTION AVEC LE MODELE DE DIFFUSION ',     &
 
617
'TURBULENTE (CPCYM2)',/,                                    &
 
618
'CHIMIE RAPIDE A 3 CORPS - EXTENSION A 3 COMBUSTIBLES ',          &
 
619
'(Application au FUEL)',/,                                  &
 
620
'==========================================================',     &
 
621
'==================',/,                                     &
 
622
' Nb de points de calculs                                     = ',&
 
623
   i9,/,                                                    &
 
624
' Nb de points turbulents (passage par les PDF)               = ',&
 
625
   i9)
 
626
 
 
627
 2200 format(/,                                                   &
 
628
'CONTROLE DES VALEURS DES FRACTIONS MASSIQUES',/,           &
 
629
' Nb de points de calculs qui respectent somme des Yi = 1    = ', &
 
630
   i9,/,                                                    &
 
631
' Nb de points YCHX1 , YCHX2   < 0 ou > 1 = ',I9,I9,/,      &
 
632
' Nb de points YC0   , YH2S    < 0 ou > 1 = ',I9,I9,/,      &
 
633
' Nb de points YH2   , YHCN    < 0 ou > 1 = ',I9,I9,/,      &
 
634
' Nb de points YNH3            < 0 ou > 1 = ',I9,   /,      &
 
635
' Nb de points YO2   , YN2     < 0 ou > 1 = ',I9,I9,/,      &
 
636
' Nb de points YCO2  , YH2O    < 0 ou > 1 = ',I9,I9,/,      &
 
637
' Nb de points YSO2            < 0 ou > 1 = ',I9  )
 
638
 
 
639
 3000 format(/,                                                   &
 
640
'MODELE DE CO CHARBON ACTIVE : ',/,                         &
 
641
'       AVEC  IEQCO2 = ',I2,/,                              &
 
642
'HORS SEUL LES OPTIONS 0 , 1 et 2 SONT DISPONIBLES',/,      &
 
643
'    ARRET DU CALCUL : VERIFIER USPPMO')
 
644
 
 
645
!----
 
646
! End
 
647
!----
 
648
 
 
649
return
 
650
end subroutine