1
!-------------------------------------------------------------------------------
3
! This file is part of Code_Saturne, a general-purpose CFD tool.
5
! Copyright (C) 1998-2011 EDF S.A.
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
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
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.
21
!-------------------------------------------------------------------------------
23
subroutine cs_fuel_param
24
!=======================
26
!===============================================================================
30
! INIT DES OPTIONS DES VARIABLES TRANSPORTEES
31
! ET DES VARIABLES ALGEBRIQUES
34
!-------------------------------------------------------------------------------
36
!__________________.____._____.________________________________________________.
37
! name !type!mode ! role !
38
!__________________!____!_____!________________________________________________!
39
!__________________!____!_____!________________________________________________!
41
! TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
42
! L (LOGIQUE) .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
43
! MODE : <-- donnee, --> resultat, <-> Donnee modifiee
44
! --- tableau de travail
45
!===============================================================================
47
!===============================================================================
49
!===============================================================================
66
!===============================================================================
70
integer ipp , ii , jj , iok , icla
72
double precision wmolme
74
!===============================================================================
75
! 0. VERIFICATION ISCALT, ISCSTH
76
!===============================================================================
77
! L'utilisateur ne doit pas y avoir touche.
80
write(nfecra,1000)iscalt
85
if(iscsth(iscapp(ii)).ne.-10) then
86
write(nfecra,1001)ii,iscapp(ii),iscapp(ii),iscsth(iscapp(ii))
92
!===============================================================================
93
! 1. VARIABLES TRANSPORTEES
94
!===============================================================================
96
! --> Definition des scamin et des scamax des variables transportees
98
! ---- Variables propres a la phase dispersee
104
scamin(ing(icla)) = 0.d0
105
scamax(ing(icla)) = +rinfin
106
scamin(iyfol(icla)) = 0.d0
107
scamax(iyfol(icla)) = 4.d-1
108
scamin(ih2(icla)) = h02fol
109
scamax(ih2(icla)) = +grand
112
! ---- Variables propres a la phase continue
118
if ( noxyd .ge. 2 ) then
123
if ( noxyd .eq. 3 ) then
127
! Combustion heterogene
131
scamin(ifvp2m) = 0.d0
132
scamax(ifvp2m) = 0.25d0
134
if ( ieqco2 .ge. 1 ) then
139
if ( ieqnox .eq. 1 ) then
144
scamin(ihox) = -grand
145
scamax(ihox) = +grand
148
! --> Nature des scalaires transportes
152
! ---- Type de scalaire (0 passif, 1 temperature en K
153
! -1 temperature en C
155
! La distinction -1/1 sert pour le rayonnement
156
iscsth(iscapp(isc)) = 0
160
! ---- On resout en enthalpie avec un CP constant (Cf. cpvarp)
165
! --> Donnees physiques ou numeriques propres aux scalaires CP
171
if ( iscavr(jj) .le. 0 ) then
173
! En combustion on considere que la viscosite turbulente domine
174
! ON S'INTERDIT DONC LE CALCUL DES FLAMMES LAMINAIRES AVEC Le =/= 1
180
! ------ Schmidt ou Prandtl turbulent
184
! ------ Coeff dissipation des fluctuations
188
ii = isca(iscapp(isc))
190
! ------ Niveau de detail des impressions pour les variables et
191
! donc les scalaires (valeurs 0 ou 1)
192
! Si = -10000 non modifie par l'utilisateur -> niveau 1
193
if(iwarni(ii).eq.-10000) then
197
! ------ Informations relatives a la resolution des scalaires
199
! - Facteur multiplicatif du pas de temps
202
! - Schema convectif % schema 2ieme ordre
207
! - Type de schema convetif second ordre (utile si BLENCV > 0)
208
! = 0 : Second Order Linear Upwind
212
! - Test de pente pour basculer d'un schema centre vers l'upwind
213
! = 0 : utlisation automatique du test de pente
214
! = 1 : calcul sans test de pente
217
! - Reconstruction des flux de convetion et de diffusion aux faces
218
! = 0 : pas de reconstruction
224
!---> Variable courante : nom, sortie chrono, suivi listing, sortie histo
226
! Comme pour les autres variables,
227
! si l'on n'affecte pas les tableaux suivants,
228
! les valeurs par defaut seront utilisees
230
! NOMVAR( ) = nom de la variable
231
! ICHRVR( ) = sortie chono (oui 1/non 0)
232
! ILISVR( ) = suivi listing (oui 1/non 0)
233
! IHISVR( ) = sortie historique (nombre de sondes et numeros)
234
! si IHISVR(.,1) = -1 sortie sur toutes les sondes
236
! NB : Les 8 premiers caracteres du noms seront repris dans le
237
! listing 'developpeur'
240
! ---- Variables propres a la suspension gaz - particules
242
ipp = ipprtp(isca(ihm))
243
NOMVAR(IPP) = 'Enthalpy'
248
! ---- Variables propres a la phase dispersee
251
ipp = ipprtp(isca(iyfol(icla)))
252
WRITE(NOMVAR(IPP),'(A8,I2.2)')'YFOL_FOL' ,ICLA
256
ipp = ipprtp(isca(ih2(icla)))
257
WRITE(NOMVAR(IPP),'(A7,I2.2)')'HLF_FOL' ,ICLA
261
ipp = ipprtp(isca(ing(icla)))
262
WRITE(NOMVAR(IPP),'(A6,I2.2)')'NG_FOL' ,ICLA
268
! ---- Variables propres a la phase gaz
270
ipp = ipprtp(isca(ifvap))
271
NOMVAR(IPP) = 'Fr_VAP'
275
ipp = ipprtp(isca(if7m))
276
NOMVAR(IPP) = 'Fr_HET'
280
ipp = ipprtp(isca(ifvp2m))
281
NOMVAR(IPP) = 'Var_CB'
286
if ( ieqco2 .ge. 1 ) then
287
ipp = ipprtp(isca(iyco2))
288
NOMVAR(IPP) = 'FR_CO2'
294
if ( ieqnox .eq. 1 ) then
295
ipp = ipprtp(isca(iyhcn))
296
NOMVAR(IPP) = 'FR_HCN'
300
ipp = ipprtp(isca(iyno))
301
NOMVAR(IPP) = 'FR_NO'
305
ipp = ipprtp(isca(ihox))
306
NOMVAR(IPP) = 'Enth_Ox'
312
!===============================================================================
313
! 2. VARIABLES ALGEBRIQUES OU D'ETAT
314
!===============================================================================
317
! ---> Variables algebriques propres a la suspension gaz - particules
319
ipp = ipppro(ipproc(immel))
325
! ---> Variables algebriques propres a la phase dispersee
328
ipp = ipppro(ipproc(itemp2(icla)))
329
write(nomvar(ipp),'(a7,i2.2)')'Tem_FOL' ,icla
333
ipp = ipppro(ipproc(irom2(icla)))
334
write(nomvar(ipp),'(a7,i2.2)')'Rho_FOL' ,icla
338
ipp = ipppro(ipproc(idiam2(icla)))
339
write(nomvar(ipp),'(a6,i2.2)')'Dia_gt' ,icla
343
ipp = ipppro(ipproc(ih1hlf(icla)))
344
write(nomvar(ipp),'(a6,i2.2)')'H1-Hlf' ,icla
348
ipp = ipppro(ipproc(igmeva(icla)))
349
write(nomvar(ipp),'(a6,i2.2)')'Ga_EVA' ,icla
353
ipp = ipppro(ipproc(igmhtf(icla)))
354
write(nomvar(ipp),'(a6,i2.2)')'Ga_HET' ,icla
360
! ---> Variables algebriques propres a la phase continue
362
ipp = ipppro(ipproc(itemp1))
363
NOMVAR(IPP) = 'Temp_GAZ'
367
ipp = ipppro(ipproc(irom1))
368
NOMVAR(IPP) = 'ROM_GAZ'
372
ipp = ipppro(ipproc(iym1(1)))
373
NOMVAR(IPP) = 'YM_FO0'
377
ipp = ipppro(ipproc(iym1(2)))
378
NOMVAR(IPP) = 'YM_FOV'
382
ipp = ipppro(ipproc(iym1(3)))
383
NOMVAR(IPP) = 'YM_CO'
387
ipp = ipppro(ipproc(iym1(4)))
388
NOMVAR(IPP) = 'YM_H2S'
392
ipp = ipppro(ipproc(iym1(5)))
393
NOMVAR(IPP) = 'YM_H2'
397
ipp = ipppro(ipproc(iym1(6)))
398
NOMVAR(IPP) = 'YM_HCN'
402
ipp = ipppro(ipproc(iym1(7)))
403
NOMVAR(IPP) = 'YM_NH3'
407
ipp = ipppro(ipproc(iym1(8)))
408
NOMVAR(IPP) = 'YM_O2'
412
ipp = ipppro(ipproc(iym1(9)))
413
NOMVAR(IPP) = 'YM_CO2'
417
ipp = ipppro(ipproc(iym1(10)))
418
NOMVAR(IPP) = 'YM_H2O'
422
ipp = ipppro(ipproc(iym1(11)))
423
NOMVAR(IPP) = 'YM_SO2'
427
ipp = ipppro(ipproc(iym1(12)))
428
NOMVAR(IPP) = 'YM_N2'
433
if ( ieqnox .eq. 1 ) then
434
ipp = ipppro(ipproc(ighcn1))
439
ipp = ipppro(ipproc(ighcn2))
444
ipp = ipppro(ipproc(ignoth))
451
ipp = ipppro(ipproc(ibcarbone))
452
NOMVAR(IPP) = 'Bilan_C'
456
ipp = ipppro(ipproc(iboxygen))
457
NOMVAR(IPP) = 'Bilan_O'
461
ipp = ipppro(ipproc(ibhydrogen))
462
NOMVAR(IPP) = 'Bilan_H'
467
!===============================================================================
468
! 3. INFORMATIONS COMPLEMENTAIRES
469
!===============================================================================
471
! ---> Initialisation
473
! ---- Calcul de RO0 a partir de T0 et P0
474
! (loi des gaz parfaits applliquee a l'air)
475
! On initialise RO0 avec l'oxydant 1 qui est sense etre
476
! l'oxydant majoritaire
478
wmolme = ( wmole(io2) *oxyo2(1) +wmole(in2) *oxyn2(1) &
479
+wmole(ih2o)*oxyh2o(1)+wmole(ico2)*oxyco2(1)) &
480
/(oxyo2(1)+oxyn2(1)+oxyh2o(1)+oxyco2(1))
481
ro0 = p0*wmolme / (rr*t0)
483
! ---- Initialisation pour la masse volumique du coke
484
! Maintenant c'est fait dans FULECD
487
! ---> Coefficient de relaxation de la masse volumique
488
! RHO(n+1) = SRROM * RHO(n) + (1-SRROM) * RHO(n+1)
491
! ---> Viscosite laminaire associee au scalaire enthalpie
492
! DIFTL0 (diffusivite dynamique en kg/(m s))
493
! C'est cette valeur par defaut qui est TOUJOURS utilisee dans les
494
! calculs charbon (un peu etonnant de ne pas prendre en
495
! compte les variations de ce parametre physique si on
496
! recherche des informations sur les flux thermiques aux parois)
501
! ---> Masse volumique variable et viscosite constante (pour les suites)
505
!===============================================================================
506
! 4. ON REDONNE LA MAIN A L'UTLISATEUR
507
!===============================================================================
512
!===============================================================================
513
! 5. VERIFICATION DES DONNERS FOURNIES PAR L'UTLISATEUR
514
!===============================================================================
517
call cs_fuel_verify(iok)
521
write(nfecra,9999)iok
531
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
533
'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES ',/,&
535
'@ PHYSIQUE PARTICULIERE (FUEL) DEMANDEE ',/,&
537
'@ La valeur de ISCALT est renseignee automatiquement. ',/,&
539
'@ L''utilisateur ne doit pas la renseigner dans usini1, or ',/,&
540
'@ elle a ete affectee comme suit : ',/,&
541
'@ ISCALT = ',I10 ,/,&
543
'@ Le calcul ne sera pas execute. ',/,&
545
'@ Verifier usini1. ',/,&
547
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
551
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
553
'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES ',/,&
555
'@ PHYSIQUE PARTICULIERE (FUEL) DEMANDEE ',/,&
557
'@ Les valeurs de ISCSTH sont renseignees automatiquement. ',/,&
559
'@ L''utilisateur ne doit pas les renseigner dans usini1, or ',/,&
560
'@ pour le scalaire ',I10 ,' correspondant au scalaire ',/,&
561
'@ physique particuliere ',I10 ,' on a ',/,&
562
'@ ISCSTH(',I10 ,') = ',I10 ,/,&
564
'@ Le calcul ne sera pas execute. ',/,&
566
'@ Verifier usini1. ',/,&
568
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
572
' Pas d erreur detectee lors de la verification des donnees ',/,&
573
' (user_fuel_ini1).',/)
578
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
580
'@ @@ ATTENTION : ARRET A L''ENTREE DES DONNEES ',/,&
582
'@ LES PARAMETRES DE CALCUL SONT INCOHERENTS OU INCOMPLETS ',/,&
584
'@ Le calcul ne sera pas execute (',I10,' erreurs). ',/,&
586
'@ Se reporter aux impressions precedentes pour plus de ',/,&
587
'@ renseignements. ',/,&
588
'@ Verifier user_fuel_ini1. ',/,&
590
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&