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
! Module for calculation options
27
!=============================================================================
31
!=============================================================================
33
! Definition des equations
35
! = 1 prise en compte du terme instationnaire
36
! = 0 prise en compte du terme instationnaire
38
! = 1 prise en compte de la convection
39
! = 0 non prise en compte de la convection
41
! = 1 prise en compte de la diffusion (moleculaire et turbulente)
42
! = 0 non prise en compte de la diffusion (moleculaire et turbulente)
43
! idifft : si idiff = 1
44
! = 1 prise en compte de la diffusion turbulente
45
! = 0 non prise en compte de la diffusion turbulente
47
integer, save :: istat(nvarmx), iconv(nvarmx), idiff(nvarmx), idifft(nvarmx)
49
! Proprietes physiques rho et viscl constantes ou variables
50
! =1 variable, =0 constant
51
! sert lors des lectures de fichier suite pour eviter d'ecraser
52
! la valeur fournie par la valeur de l'ancien calcul.
53
integer, save :: irovar, ivivar
57
! ischtp : indicateur de schema en temps
60
! istmpf : indicateur de schema flux de masse
61
! = 2 theta schema avec theta > 0 (= 0.5 : ordre 2)
62
! = 0 theta schema avec theta = 0 (explicite)
63
! = 1 schema standard v1.0
64
! nterup : nombre d'iteration sur navier-stokes pour couplage vitesse/
66
! isno2t : indicateur d'extrapolation de termes sources Navier Stokes
67
! pour le schema en temps
68
! isto2t : indicateur d'extrapolation de termes sources des grandeurs
69
! turbulentes pour le schema en temps
70
! isso2t : indicateur d'extrapolation de termes sources des scalaires
71
! pour le theta schema en temps
72
! iroext : indicateur d'extrapolation de la masse volumique
73
! pour le schema en temps
74
! iviext : indicateur d'extrapolation de la viscosite totale
75
! pour le schema en temps
76
! ivsext : indicateur d'extrapolation de la diffusivite scalaire
78
! initvi : =1 si viscosite totale relue dans un suite
80
! initro : =1 si masse volumique relue dans un suite
82
! icpext : indicateur d'extrapolation de la masse volumique
83
! pour le schema en temps
85
! initcp : =1 si chaleur specifique relue dans un suite
86
! initvs : =1 si diffusivite scalaire relue dans un suite
88
! thetav : ponderation entre les pas de temps n et n+1 pour les
89
! variable principales
90
! = 1 : schema Euler implicite
91
! =1/2: schema centre en temps
93
! thetsn : schema en temps pour les termes sources de Navier Stokes
94
! = 0 : viscosite secondaire explicite
95
! =1/2: viscosite secondaire extrapolee en n+1/2
96
! = 1 : viscosite secondaire extrapolee en n+1
97
! thetst : schema en temps pour les termes sources des grandeurs turbulentes
98
! = 0 : viscosite secondaire explicite
99
! =1/2: viscosite secondaire extrapolee en n+1/2
100
! = 1 : viscosite secondaire extrapolee en n+1
101
! thetss : schema en temps pour les termes sources des scalaires
102
! = 0 : viscosite secondaire explicite
103
! =1/2: viscosite secondaire extrapolee en n+1/2
104
! = 1 : viscosite secondaire extrapolee en n+1
105
! thetfl : schema en temps pour le flux de masse
106
! = 0 : flux de masse explicite
107
! =1/2: flux de masse extrapole en n+1/2
108
! = 1 : flux de masse extrapole en n+1
109
! thetvi : schema en temps pour la viscosite totale
110
! = 0 : viscosite totale explicite
111
! =1/2: viscosite totale extrapolee en n+1/2
112
! = 1 : viscosite totale extrapolee en n+1
113
! thetro : schema en temps pour la masse volumique
114
! = 0 : masse volumique totale explicite
115
! =1/2: masse volumique totale extrapolee en n+1/2
116
! = 1 : masse volumique extrapolee en n+1
117
! thetcp : schema en temps pour la masse volumique
118
! = 0 : chaleur specifique totale explicite
119
! =1/2: chaleur specifique totale extrapolee en n+1/2
120
! = 1 : chaleur specifique extrapolee en n+1
121
! epsup : tests de convergence du systeme vitesse/pression quand ce
122
! dernier est resolu par sous-iterations (point fixe)
123
! xnrmu : norme de u(k+1) - u(k)
124
! xnrmu0 : norme de u(0)
126
integer, save :: nterup, &
128
isno2t, isto2t, isso2t(nscamx), &
130
iviext, icpext, ivsext(nscamx), &
132
initcp, initvs(nscamx)
133
double precision, save :: thetav(nvarmx), thetsn, thetst, &
135
thetfl, thetro, thetvi, &
136
thetcp, thetvs(nscamx), epsup , &
141
! blencv : 100*(1-blencv) est le pourcentage d'upwind
142
! = 1 : pas d'upwind en dehors du test de pente
144
! ischcv : schema convectif centre ou second order
147
! isstpc : indicateur sans ou avec test de pente
148
! = 1 : sans test de pente
149
! = 0 : avec test de pente
151
integer, save :: ischcv(nvarmx), isstpc(nvarmx)
152
double precision, save :: blencv(nvarmx)
154
! Reconstruction des gradients et des seconds membres
155
! imrgra : methode de recontruction des gradients
156
! = 0 : recontruction 97
157
! = 1 : moindres carres 99
158
! = 2 : moindres carres support etendu complet
159
! = 3 : moindres carres avec selection du support etendu
160
! = 4 : reconstruction 97 avec initialisation moindres carres
161
! anomax : angle de non orthogonalite des faces en radian au dela duquel
162
! on retient dans le support etendu des cellules voisines
163
! de la face les cellules dont un noeud est sur la face
164
! nswrgr : nombre de sweeps de reconstruction des gradients 97
165
! nswrsm : nombre de sweeps de reconstruction des seconds membres
166
! epsrgr : precision pour la reconstruction des gradients 97
167
! epsrsm : precision pour la reconstruction des seconds membres
168
! imligr : limitation des gradients
169
! < 0 : pas de limitation des gradients
170
! = 0 : premier ordre
172
! climgr : facteur de limitation (>=1, =1 : forte limitation)
173
! ircflu : reconstruction des flux aux faces
176
! extrag : extrapolation des gradients au bord (0 <= extrag <= 1)
180
integer, save :: imrgra, nswrgr(nvarmx), nswrsm(nvarmx), &
181
imligr(nvarmx) , ircflu(nvarmx)
183
double precision, save :: anomax , &
184
epsrgr(nvarmx), epsrsm(nvarmx), &
185
climgr(nvarmx), extrag(nvarmx)
188
! nitmax : nombre d'iterations max
189
! epsilo : precision relative cherchee
191
! =-1 : calcule automatiquement (0 si iconv=0, 1 sinon)
192
! = 0 : gradient conjugue
195
! et on ajoute ipol*1000 ou ipol est le degre du polynome de
196
! preconditionnement de Neumann
197
! en pratique, il semble que ce preconditonnement ne soit pas efficace
198
! on gagne 10% cpu sur un cas, on perd 3% sur un autre avec ipol=1
199
! on perd avec ipol=2
200
! ces valeurs ont ete obtenues sur de petits cas.
201
! idircl : decalage de la diagonale de la matrice s'il n'y a pas de Dirichlet
204
! le code calcule automatiquement pour chaque variable ndircl, nombre de
205
! CL de Dirichlet, et en deduit s'il doit decaler ou pas la diagonale
207
integer, save :: nitmax(nvarmx),iresol(nvarmx),idircl(nvarmx), &
210
double precision, save :: epsilo(nvarmx)
214
! = 0 pas de multigrille
215
! = 1 multigrille algebrique
216
! ncymax : nombre max de cycles
217
! nitmgf : nombre d'iter sur maillage fin
220
integer, save :: imgr(nvarmx), ncymax(nvarmx), nitmgf(nvarmx)
221
double precision, save :: rlxp1
224
! isuite : suite de calcul
226
! = 1 pour suite de calcul
227
! iscold : correspondance nouveaux-anciens scalaires
228
! iecaux : ecriture du suite auxiliaire
229
! ileaux : lecture du suite auxiliaire
230
! isuit1 : suite du module thermique 1D en paroi
231
! isuict : suite du module aerorefrigerant
232
! isuivo : suite de la methode des vortex
234
integer, save :: isuite , ileaux, iecaux, iscold(nscamx), &
235
isuit1 , isuict, isuivo
237
! Gestion des pas de temps
238
! ntpabs : pas de temps precedent absolu
239
! ntcabs : pas de temps courant absolu
240
! ntmabs : pas de temps max absolu
241
! ttpabs : temps precedent absolu
242
! ttcabs : temps courant absolu
243
! ttmabs : temps max absolu
244
! inpdt0 : indicateur "zero pas de temps"
246
! ntmabs = numero absolu du dernier pas de temps desire
247
! si on a deja fait 10 pas de temps
248
! et qu'on veut en faire 10 autres,
249
! il faut affecter 10 + 10 = 20 a ntmabs
250
! ntpabs = numero relu dans le fichier suite
251
! ntcabs = incremente au debut du pas de temps
252
! et donc initialise a ntpabs
253
! inpdt0 = 1 pour ne faire aucun pas de temps (0 sinon)
254
! pour les calculs non suite :
255
! on saute uniquement les resolutions (Navier-Stokes,
256
! turbulence, scalaires...)
257
! pour les calculs suite :
258
! on saute les resolutions (navier-stokes,
259
! turbulence, scalaires...) et le calcul des proprietes
260
! physiques, les conditions aux limites (les grandeurs
261
! sont lues dans le fichier suite)
263
integer, save :: ntpabs, ntcabs, ntmabs, inpdt0
264
double precision, save :: ttpabs, ttcabs
266
! Option pas de temps
267
! idtvar : pas de temps variable
268
! = -1 : algorithme stationnaire
269
! = 0 : pas de temps constant
270
! = 1 : pas de temps uniforme en espace et variable en temps
271
! = 2 : pas de temps variable en espace et variable en temps
272
! iptlro : limitation du pas de temps liee aux effets de densite
275
! coumax : nombre de Courant maximum (idtvar non nul)
276
! foumax : nombre de Fourier maximum (idtvar non nul)
277
! varrdt : variation relative permise de dt (idtvar non nul)
278
! dtmin, dtmax : valeur limite min et max de dt (idtvar non nul)
279
! prendre pour dtmax = max (ld/ud, sqrt(lt/(gdelta rho/rho)), ...)
280
! cdtvar : coef multiplicatif pour le pas de temps de chaque variable
281
! pour u,v,w,p il est inutilise
282
! pour k,e on prend la meme valeur : celle de k
283
! pour Rij, e on prend la meme valeur : celle de r11
284
! relaxv : relaxation des variables (1 pas de relax)
285
! relxst : coefficient de relaxation de base stationnaire
287
integer, save :: idtvar,iptlro
288
double precision, save :: dtref,coumax,foumax, &
289
dtmin,dtmax ,varrdt,cdtvar(nvarmx), &
290
relaxv(nvarmx), relxst
294
! = 0 pas de turbulence
295
! = 10 longueur de melange
297
! * 20 modele standard
298
! * 21 modele a production lineaire
299
! = 30, 31 Rij-epsilon
300
! * 30 modele standard (LRR)
303
! * 40 modele de Smagorinsky constant
304
! * 41 modele de Smagorinsky dynamique "classique"
305
! * 42 modele de Smagorinsky dynamique de "Piomelli et Liu"
309
! = int(iturb/10) pour distinguer rapidement les classes de modeles
311
! = 0 une echelle (deux echelles = faux)
312
! = 1 deux echelles (deux echelles = vrai)
313
! = 2 deux echelles limitation de yplus a ypluli (scalable wall function)
315
! = 0 une echelle avec loi en puissance
316
! = 1 une echelles avec loi log
318
! = 0 clipping en valeur absolue de k et epsilon
319
! = 1 clipping couple k-epsilon base sur des relations physiques
321
! = 1 prise en compte de 2/3 rho grad k dans navier stokes
322
! = 0 non prise en compte de 2/3 rho grad k dans navier stokes
324
! = 1 gravite dans k-epsilon
327
! = 1 gravite dans Rij-epsilon
329
! iscalt numero du scalaire qui tient lieu de temperature
330
! donc variable isca(iscalt)
332
! = 1 k-epsilon couple en increments
335
! = 1 viscosite dans la matrice en increments de vitesse (Rij)
338
! = 1 traitement precis de Rij au bord, voir condli (Rij)
341
! = 1 traitement complet de la diagonale du tenseur de
342
! diffusion de Rij et epsilon (Rij)
343
! = 0 traitement simplifie
345
! = 1 implicitation partielle de Rij dans les cl de symetrie
346
! = 0 pas d'implicitation
348
! = 1 implicitation partielle de Rij et epsilon dans les cl
349
! de paroi turbulente
350
! = 0 pas d'implicitation
351
! idries : amortissement de type Van Driest a la paroi
352
! = 0 sans amortissement
353
! = 1 avec amortissement
354
! ivrtex : utilisation de la methode des vortex
355
! = 0 sans methode des vortex
356
! = 1 avec methode des vortex
358
integer, save :: iturb , itytur, &
359
ideuch, ilogpo, iclkep, &
362
irijnu, irijrb, irijec, &
363
igrari, idifre, iclsyr, &
364
iclptr, idries, ivrtex
366
! ivisse prise en compte de -2/3 grad(mu div(u)) + div(mu (grad_t(u)))
368
integer, save :: ivisse
372
! = 2 pour reconstruction des vitesses de type rt0
373
! = 1 pour reconstruction des vitesses avec gradient de l'increment
374
! de pression par moindres carres
377
! = 0 pour calcul sans pression continuite
378
! = 1 pour calcul avec pression continuite
379
! arak proportion d'Arakawa (1 pour Arakawa complet)
380
! relaxv relaxation des variables (1 pas de relax)
381
! rnormp normalisation pour la convergence de resolp
383
integer, save :: irevmc, iprco , irnpnw
384
double precision, save :: rnormp, arak
387
! = 1 resolution couplee des composantes de vitesse
388
! = 0 resolution decouplee des composantes de vitesse (Standard)
390
integer, save :: ivelco
392
! ipucou algorithme couplage instationnaire vitesse/pression
394
integer, save :: ipucou
396
! iccvfg calcul a champ de vitesse fige
398
integer, save :: iccvfg
400
! Calcul de la viscosite
402
integer, save :: imvisf
404
! Type des conditions limites et index min et max
405
! des sous listes defaces de bord
407
integer, save :: idebty(ntypmx), ifinty(ntypmx)
409
! itrbrb = 1 traitement precis de la temperature au bord, voir condli
410
! (utilise pour couplage syrthes)
412
! icpsyr = 1 si scalaire couple a syrthes
413
! donc pour le moment vaut 1 pour iscalt uniquement
415
integer, save :: itbrrb, icpsyr(nscamx)
417
! Prise en compte de l'equilibre entre le gradient de pression
418
! et les termes sources de gravite et de perte de charge
420
! iphydr = 0 algorithme sans prise en compte de l'equilibre
421
! = 1 algorithme avec prise en compte de l'equilibre
422
! icalhy = 0 pas de calcul de la pression hydrostatique pour les
423
! dirichlets de pression en sortie
424
! = 1 calcul de la pression hydrostatique pour les
425
! Dirichlets de pression en sortie
427
integer, save :: iphydr, icalhy
429
! Calcul des estimateurs
431
integer, save :: iescal(nestmx)
433
! Calcul des moyennes temporelles (calcul des moments)
435
! nbmomt : nombre de moyennes demandees
436
! nbdtcm : nombre de tableaux ncel pour le temps cumule
437
! ntdmom : numero du pas de temps initial pour le calcul du moment
438
! imoold : numero de l'ancien moment correspondant en cas de suite
439
! icmome : pointeur pour les moments (donne un numero de propriete)
440
! s'utilise ainsi propce(iel,ipproc(icmome(imom)))
441
! idtmom : numero du temps cumule associe aux moments
442
! ce numero va de 1 a n pour les temps cumules non uniformes
443
! et de -1 a -p pour les temps cumules uniformes
445
! si idtmom(imom) > 0 propce(iel,ipropc(icdtmo(idtmom(imom))))
446
! si idtmom(imom) < 0 dtcmom(-idtmom(imom))
447
! idfmom : numero des variables composant le moment idfmom(jj,imom)
448
! idgmom : degre du moment
449
! icdtmo : numero de propriete du temps cumule (voir idtmom)
450
! ippmom : repere pour le post si on doit diviser la variable
451
! par un temps cumule (voir memtri et usvpst)
452
! dtcmom : valeur du pas de temps cumule quand il est uniforme (voir idtmom).
454
integer, save :: nbmomt, nbdtcm, &
455
ntdmom(nbmomx), imoold(nbmomx), &
456
icmome(nbmomx), idtmom(nbmomx), &
457
idfmom(ndgmox,nbmomx), idgmom(nbmomx), &
458
icdtmo(nbmomx), ippmom(nvppmx)
459
double precision, save :: dtcmom(nbmomx)
461
! Indicateur pertes de charge global (ie somme sur les processeurs
464
integer, save :: ncpdct
466
! Indicateur module thermique 1d global (ie somme sur les processeurs
469
integer, save :: nfpt1t
471
! Indicateur termes sources de masse global (ie somme sur les processeurs
474
integer, save :: nctsmt
476
! Indicateur de passage dans l'initialisation des
477
! variables par l'utilisateur
478
! iusini = 1 passage dans usiniv ou ppiniv
479
! 0 pas de passage (ni iusini ni ppiniv)
480
! iuscfp = 1 passage dans uscfpv
483
integer, save :: iusini, iuscfp
485
! Parametres numeriques pour le calcul de la distance a la paroi
487
! ineedy : = 1 distance a la paroi est necessaire pour le calcul
488
! = 0 distance a la paroi n'est pas necessaire
489
! imajdy : = 1 distance a la paroi a ete mise a jour
490
! = 0 distance a la paroi n'a pas ete mise a jour
491
! icdpar : = 1 calcul standard (et relecture en suite de calcul)
492
! = 2 calcul ancien (et relecture en suite de calcul)
493
! =-1 forcer le recalcul en suite (par calcul standard)
494
! =-2 forcer le recalcul en suite (par calcul ancien)
495
! nitmay : nombre max d'iterations pour les resolutions iteratives
496
! nswrsy : nombre de sweep pour reconstruction des s.m.
497
! nswrgy : nombre de sweep pour reconstruction des gradients
498
! imligy : methode de limitation du gradient
499
! ircfly : indicateur pour reconstruction des flux
500
! ischcy : indicateur du schema en espace
501
! isstpy : indicateur pour test de pente
502
! imgrpy : multigrille
503
! iwarny : niveau d'impression
504
! ntcmxy : nombre max d'iteration pour la convection de y
506
integer, save :: ineedy, imajdy, icdpar, &
507
nitmay, nswrsy, nswrgy, &
508
imligy, ircfly, ischcy, &
509
isstpy, imgrpy, iwarny, &
512
! blency : 1 - proportion d'upwind
513
! epsily : precision pour resolution iterative
514
! epsrsy : precision pour la reconstruction du second membre
515
! epsrgy : precision pour la reconstruction des gradients
516
! climgy : coef gradient*distance/ecart
517
! extray : coef d'extrapolation des gradients
518
! coumxy : valeur max du courant pour equation convection
519
! epscvy : precision pour convergence equation convection stationnaire
520
! yplmxy : valeur max de yplus au dessus de laquelle l'amortissement de
521
! Van Driest est sans effet et donc pour laquelle un calcul de
522
! yplus moins precis est suffisant
524
double precision, save :: blency, epsily, epsrsy, &
525
epsrgy, climgy, extray, &
526
coumxy, epscvy, yplmxy
528
! Parametres numeriques pour le calcul des efforts aux bords
530
! ineedf : = 1 on calcule les efforts aux parois
531
! = 0 on ne calcule pas les efforts aux parois
533
integer, save :: ineedf
535
!=============================================================================