* KEPSILON PROCEDUR CB215821 20/11/04 21:18:38 10766 ************************************************************************ * Ro UN Mu DT (GB T) * * EN * KN * -> CHPOINT générés dans la table inco * TKTE teta=k/epsilon * TETK i =epsilon/k alias TKTE * NUTI valeur intermédiaire de NUT * FI inconnue Fi * PRODT Prodution turbulente * TKTI teta=k/epsilon intermédiaire * Ksi facteur de déséquilibre : nut P / epsilon * MUF viscosité dynamique effective * (tourbillonnaire+moléculaire) ************************************************************************ iarg=rx.'IARG' ; *NASTOK = rv.'NAVISTOK' ; $mod=rx.'DOMZ' ; *mess ' DEBUT KEPSILON'; * Lecture du 1er Argument la densité Ro = rv.inco.(rx.'ARG1'); Sinon ; Ro = rx.'ARG1'; Finsi ; * Lecture du 3ème Argument la viscosité cinématique Mu = rv.inco.(rx.'ARG3'); Sinon ; Mu = rx.'ARG3'; Finsi ; Mus2= Mu*(0.5); iRo = 1. / Ro ; Sinon ; Finsi ; Mum = Mu ; iMu = 1./MU ; Sinon ; Finsi ; Nu = Mu * iRo; iNu = Ro * iMu; Num = Nu*0.5 ; Sinon ; Finsi ; Si( (non(ega rx.'KOPT'.'KIMPL' 1)) et (non(ega rx.'KOPT'.'KFORM' 1)) ); Finsi ; ******* Options du K-epsilon ******************************************* EDPNUT=VRAI;Tmin=FAUX; EDPFI =FAUX; Kbw=FAUX ;KCnu=FAUX;RNG=FAUX;Filtre=FAUX;CSTE=FAUX;M2M=FAUX;Kimpr=FAUX; KRet=FAUX;KLbr=FAUX;Kchn=FAUX;Brls=FAUX;Kkl=FAUX;Kbrey=FAUX; Brjl=FAUX;Brlb=FAUX; V0=FAUX;TETA=VRAI;PERI=FAUX; Si ('EXIST' rv 'ALGO_KEPSILON'); ko=0; Si ('EXIST' rv.'ALGO_KEPSILON' 'IMPR') ; Kimpr =VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'RNG') ; RNG =VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'Filtre') ; Filtre =VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'Bw') ; Kbw =VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'Cnu') ; KCnu =VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'Nut') ; EDPNUT =VRAI ;EDPFI=FAUX ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'Fi') ; EDPNUT =FAUX ;EDPFI=VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'M2M') ; M2M =VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'CSTE') ; CSTE =VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'KL') ; EDPNUT =FAUX ;EDPFI=FAUX; Kkl=VRAI;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'KLbr') ; KLbr =VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'Chien') ; Kchn =VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'Sharma') ; Brls =VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'Jones') ; Brjl =VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'Lam' ) ; Brlb =VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'V0') ; V0 =VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'Ret') ; KRet =VRAI ;ko=ko+1; Finsi; Si ('EXIST' rv.'ALGO_KEPSILON' 'Perio') ; PERI =VRAI ;ko=ko+1; Finsi; Si (NON (EGA ko lko)); Mess ' '; list rv.'ALGO_KEPSILON'; Finsi ; Finsi ; Sinon ; Si Kimpr; Finsi ; Finsi ; KFORM=rx.'KOPT'.'KFORM' ; IDCEN=rx.'KOPT'.'IDCEN' ; CMD =rx.'KOPT'.'CMD' ; IDIV =rx.'KOPT'.'IDIV' ; rx.'KOPT'.'IDIV' =0 ; rx.'KOPT'.'IDCEN' =2 ; * rx.'KOPT'.'CMD' =0.5; rx.'KOPT'.'CMD' =0.2; NBTETA=10; Si V0 ; rx.'KOPT'.'CMD' =0.2 ; EDPNUT=VRAI;EDPFI=FAUX; Tmin=FAUX;Kbw=FAUX;KCnu=FAUX;M2M=FAUX;CSTE=FAUX; Filtre=FAUX;Kret=FAUX;KLbr=FAUX;Kchn=FAUX;Brls=FAUX;Brjl=FAUX; Brlb=FAUX;PERI =FAUX; TETA=VRAI Finsi ; Si(Kkl ou KLbr ou Kchn ou Brls ou Brjl ou Brlb); Kbrey= VRAI; Tmin = FAUX; Finsi; Si Kimpr ; Si ('EXIST' rv 'ALGO_KEPSILON'); Finsi ; Finsi ; IPT=rv.'PASDETPS'.'NUPASDT'; ******* Options du K-epsilon * Fin ************************************* ************** Constantes diverses ********** * Constante de Bradshaw Bw de Smagorinski Cs Bw=0.3 ; Cs=0.1 ; Ka=0.41; * Paramètre de Menter Nut P < Ksim * epsilon (ksim=10) ksim=10.; ************** Constantes du K epsilon **************** cnuo=0.09; c1=1.44; c2=1.92; sgk=1. ; Si (Kkl ou KLbr); ****** Constantes du modèle K-L ou K-L Bas Reynolds *** cnuo=0.09; c1=1.44; cl=1./Ka; cd=0.9; Aetmu=63.; Aeteps=3.8; sgk=0.9; finsi; Si Kchn; ****** Constantes K epsilon Bas Reynolds Chien ******** cnuo=0.09; c1=1.35; c2=1.8 ; sgk=1. ; finsi; Si RNG ; ************** Constantes du RNG K epsilon ************ cnuo=0.0845; c1=1.42; c2=1.68; sgk=0.7179; etao=4.377; beta=0.012; etai=1./etao; finsi; Si M2M ; ************** Constantes de Mohammadi Medic ********** cnuo=0.09; c1=0.1296; c2=11./6.; sgk=1.; finsi; Si CSTE; ************** Constantes lues dans rv.inco *********** cnuo=rv.inco.'cnu'; c2=rv.inco.'c2'; sgk=rv.inco.'sgk'; finsi; Si Kimpr; Finsi; rcnu = cnuo**0.5 ; * : mp=-9. ; mq = 5. ; * : mp= 3. ; mq =-2. ; * : mp=-17.; mq = 9. ; * : mp=(-1.)*c1; mq = 1. ; * : mp=2. ; mq =-1. ; * : mp=-2. ; mq = 1. ; * : mp=(-1.)*c2; mq = 1. ; * Fi : mp=-3. ; mq = 2. ; **************** INITIALISATIONs *********************** *TYPINV = 4 ; cette option est prematureeé TYPINV = 3 ; Si(non (exist rx 'rxk')); rxt1=table 'KIZX'; rxt2=table 'KIZX'; rxk=table 'KIZX'; rxe=table 'KIZX'; rx.'rxt1'=rxt1; rx.'rxti'=rxti; rx.'rxt2'=rxt2; rx.'rxk'=rxk; rx.'rxe'=rxe; rv.'METH_KEP'=mtinv; mtinv.'TYPINV'=TYPINV; mtinv.'IMPINV'=1; mtinv.'TYRENU'='SLOA'; mtinv.'PCMLAG'='APR2'; mtinv.'OUBMAT' = 0 ; mtinv.'SCALING' = 0 ; mtinv.'NITMAX'=500; mtinv.'RESID'=1.e-12; mtinv.'PRECOND'=3; mtinv.'FCPRECT'=1; mtinv.'FCPRECI'=1; mtinv.'BCGSBTOL'=1.D-40; *********** étape de diffusion de K ********************* rxk.'NOMZONE'=' '; rxk.'DOMZ'=rx.'DOMZ'; rxk.'TDOMZ'=0; rxk.'KOPT'=rx.'KOPT'; rxk.'IARG'=1 ; rxk.'ARG1'=1.e-10; *********** étape de diffusion de Epsilon *************** rxe.'NOMZONE'=' '; rxe.'DOMZ'=rx.'DOMZ'; rxe.'TDOMZ'=0; rxe.'KOPT'=rx.'KOPT'; rxe.'IARG'=1 ; rxe.'ARG1'=1.e-10; mess ' Il doit y avoir deux inconnues !'; Finsi; Ko=(abs rv.inco.MI1) + 1.e-10; Eo=(abs rv.inco.MI2) + 1.e-10; rv.inco.'TKTE' =To ; rv.inco.'Fio' =Fio; ************************ dT/dt ************************** rxt1.'NOMZONE'=' '; rxt1.'DOMZ'=rx.'DOMZ'; rxt1.'TDOMZ'=0; rxt1.'KOPT'=rx.'KOPT'; rxt1.'IARG'=3; *rxt1.'ARG1'=Nu ; rxt1.'ARG2'=rx.'ARG2'; rxt1.'ARG3'=0. ; rxt2.'NOMZONE'=' '; rxt2.'DOMZ'=rx.'DOMZ'; rxt2.'TDOMZ'=0; rxt2.'KOPT'=rx.'KOPT'; *rxt2.'LISTINCO'=MOTS 'NUTI' ; rxt2.'IARG'=3; *rxt2.'ARG1'=Nu; rxt2.'ARG2'=rx.'ARG2'; rxt2.'ARG3'=0. ; Si (NON ('EXIST' (rv.'INCO') 'NUTI')); Finsi ; Si (NON ('EXIST' (rv.'INCO') 'FI')); Finsi ; Sinon; rxk=rx.'rxk'; mtinv=rv.'METH_KEP'; rxe=rx.'rxe'; rxt1=rx.'rxt1'; rxt2=rx.'rxt2'; ******** On crée les matrices de périodicité ************ Si Peri; *st1 mat1 = KOPS 'MATRIK' ; *---------------------------------------- mr1=rv.'INCO'.'M1PERIODIC'; mr2=rv.'INCO'.'M2PERIODIC'; rxk.'PERIODIC_mat'=mati; rxk.'PERIODIC_st' =sti; *---------------------------------------- Finsi; **** Fin On crée les matrices de périodicité ************ Finsi ; ********************** Fin Initialisations ******************* Si('EXIST' rxk 'PERIODIC_mat'); matipc=rxk.'PERIODIC_mat'; stipc =rxk.'PERIODIC_st' ; Finsi; MEN=FAUX ; Si (exist rv.'CLIM' MI1); climk=((abs climk) + 1.e-10); Si(exist rv 'climk'); x2=rv.'climk' - x1; climk=x2 + xo; Finsi ; MEN=VRAI; Sinon ; Si(exist rv 'climk'); climk=abs (rv.'climk'); Sinon; mess ' Une condition limite sur K est necessaire !'; Finsi ; Finsi ; Si (exist rv.'CLIM' MI2); clime=((abs clime) + 1.e-10); MEN=VRAI; Si(exist rv 'clime'); x2=rv.'clime' - x1; clime=x2 + xo; Finsi ; Sinon ; Si(exist rv 'clime'); clime=abs (rv.'clime'); Sinon; mess ' Une condition limite sur Epsilon est necessaire !'; Finsi ; Finsi ; Si MEN ; repeter bloc1 nbic ; Si((non (ega mic MI1)) et (non (ega mic MI2))); Finsi ; Fin Bloc1 ; rv.'CLIM'=climr ; Finsi; rv.'climk'=climk; rv.'clime'=clime; dtn=rx.'ARG4'; alfa=rv.'ALFA'; * dtn = 'MOT' ('TEXTE' ('CHAINE' dtn)) ; dtn=rv.'PASDETPS'.'DELTAT'; sinon ; dtn=rv.'INCO'.dtn; finsi; finsi; dtn=dtn*alfa; * mess ' Kepsilon : Pas de temps ' dtn ; dt=dtn ; dti=1./dt; mdt=(-1.)*dt; *mess 'On calcule les grandeurs initiales Ko Eo To '; Ko=(abs rv.inco.MI1) + 1.e-10 ; Eo=(abs rv.inco.MI2) + 1.e-10 ; mtinv.'XINIT'=Ko; rv.inco.'TKTE'=To ; rv.inco.'TETK'=Io ; * Muto est repris dans inco Si(exist rv.inco 'Muto'); Muto=rv.inco.'Muto'; Muto=Muto + 1.e-10 ; Sinon; Muto=Ro * cnuo * Ko * To ; Finsi; Nuto = Muto*iRo; ******************** Calcul de P *********************** * mess 'AVANT CALCUL P'; MIU=rx.'ARG2' ; UN=rv.inco.miu; Si(ega iarg 4); Sinon ; Si(ega iarg 6); m4=rv.inco.(rx.'ARG5'); sinon; m4=rx.'ARG5'; finsi; m5=rv.inco.(rx.'ARG6'); sinon; m5=rx.'ARG6'; finsi; Sinon; erreur KEPSILON ; Finsi; Finsi; mdu2= mdu2 + 1.e-10; Si (non Kbrey); * Pmax * Réalisabilité sur P dés/activée [A] (P < 10 epsilon/nut (Menter)) a =Pmax ; al=0.7 ; ala=al*a ; * b=ala*al*((1.-al)**(-1.)); b2=ala*(1.+ (ala*al) - ala)*((1.-al)**(-1.)); *b3 = ala*(1.+ (ala*ala*al) - (ala*ala))*((1.-al)**(-1.)); *P =(ik*P)+((1.-ik)*a*(P+b)*(inve(a+P+b))); *P =(ik*P)+((1.-ik)*a*((P*P*P+b3)*(inve(a+(P*P*P+b3))))); * Pmax Finsi; *mess ' P = ' (maxi P ) (mini P ); rP=(ABS(P+1.e-20))**0.5 ; ****************** FIN CALCUL P ********************** ******************************************************** Ak = Cnu * To * To * P ; Si KCnu ; * On recalcule Cnu ************************************* * alternative hyperbolique alfa = 0.103 ; beta = 0.15 ; * alternative exponentielle Alfa = Log (cnu(0)/cnu(1)) * Ak =0 -> cnu=0.7 Ak = 1 cnu=0.09 -> alfa = 2.0512 * Cnu = cnuo*( (exp (2.0512*(1.-Ak))) + 1.e-10); * On recalcule Cnu Fin ********************************* ******************************************************** Finsi ; **************** Calcul constante c2 ******************* *f3=1.; ATETA=(c1-1.); BTETA=c2-1.; Si RNG; eta=rP*To; eta3=eta*eta*eta; cp2=(cnu*eta3*(1.-(etai*eta))) * *cc2=c2 + cp2; c2=c2 + cp2; oubli cp2; oubli eta; oubli eta3; finsi; Ret = Ro * Ko * To * iMu ; fmu = 1. ; Rocnu=Ro*Cnu; Epsok=0.; Epsoe=0.; **************** Modèle K-L **************************** Si Kkl; fmu = 1. ; Cnu=Cnuo ; Rocnu=Ro*Cnuo ; Ret = Muto * iMu * (1./Cnu); Finsi ; **************** Modèle K-L Bas-Reynolds *************** Si KLbr; fmu = 1. ; Cnu=Cnuo ; Rocnu=Ro*Cnu ; dparoi=rv.'INCO'.'dparoi'; yet=dparoi*(Ko**0.5)*(iNu); lmu=cl*dparoi*(1. - (exp ( (-1./Aetmu)*yet))); leps=cl*dparoi*(1. - (exp ( (-1./Aeteps)*yet))); leps=leps+1.e-10; *f3=lmu*(inve leps); Finsi ; **************** Modèle Bas-Reynolds de Chien ********** Si Kchn; yplus=rv.'INCO'.'yplus'; dparoi=rv.'INCO'.'dparoi'; fmu = 1. - (exp (-0.0115*yplus)); Cnu=Cnuo*fmu; Rocnu= Ro*cnu; f2 = 1. - (0.22 * (exp((-1./36.)*Ret*Ret))); *E=(-2.)*Mu*Eo*(dparoi**(-2.))*(exp ((-0.5)*yplus)); *epso=2.*Mu*Ko*(dparoi**(-2.)); *alf=1. + ((inve Eo)*(E*To + epso)); Epsoe=2.*Mu*(dparoi**(-2.))*(exp ((-0.5)*yplus)); epsok=2.*Mu*(dparoi**(-2.)); alf=1.; ATETA=(c1-1.); BTETA = (c2*f2) - alf; Finsi ; **************** Modèle Bas-Reynolds de Launder-Sharma * Si Brls; Cnu = Cnuo*fmu; Rocnu=Ro*Cnu ; rKo=Ko**0.5; E=2.*mu*Muto*D2u2; f2 = 1. - (0.3 * (exp((-1.)*Ret*Ret))); ATETA=(c1-1.); BTETA = (c2*f2) - alf; Finsi ; **************** Modèle Bas-Reynolds de Jones-Launder ** Si Brjl; Cnu = Cnuo*fmu; Rocnu=Ro*Cnu ; rKo=Ko**0.5; *Grp=Kops 'GRADS' (exco un 'UX') $mod; *Grp=Kops 'GRADS' (exco grp 'UY') $mod; *Grp=exco grp 'UY'; *mess 'Grp ' (mini grp) (maxi grp); *D2u2=Grp*Grp; E=2.*mu*Muto*D2u2; f2 = 1. - (0.3 * (exp((-1.)*Ret*Ret))); ATETA=(c1-1.); BTETA = (c2*f2) - alf; Finsi ; **************** Modèle Bas-Reynolds de Lam-Bremhorst ** Si Brlb; Ry = (Ko**0.5)*dparoi*iMu*Ro; Ret = Muto * iMu * (1./cnuo); Cnu = Cnuo*fmu; Rocnu=Ro*Cnu ; f2 = 1. - (exp((-1.)*Ret*Ret)); c1 = c1 * f1 ; c2 = c2 * f2 ; E=0.; epso=0.; ATETA=(c1-1.); BTETA = (c2*f2) - alf; Finsi ; ***** Solution Teta(t) et Equation sur Nuti ************ Si TETA; *................ EDP TETA ............................................. *TSCA *mess ' TSCA sur TETA' ; rxt1.'IARG'=3; rxt1.'ARG1'=Num; rxt1.'ARG2'=UN ; rxt1.'ARG3'=0. ; climt= nomc 'TKTE' T=To ; alt = 1.e-1; alt = 0. ; REPETER BCLTETA NBTETA; Stp = BTETA + (To/dt) + (cnu*ATETA*P*T*T); Stn = (2.*cnu*ATETA*P*T) + (1./dt) ; *MDIA *mess ' MDIA sur TETA' ; rxt1.'IARG'=1; St1 = St et st1 ; mat1 = mat et mat1 ; mtinv.'MATASS'=mat1; mtinv.'MAPREC'=mat1; mtinv.'IMPINV'=0; mtinv.'TYPINV'=TYPINV; Si PERI ; MPI1='TKTE'; Finsi; *mess 'Equation sur TKTE'; Si Tmin; * Réalisabilité sur TETA dés/activée [A] iTetamin = (1./Num)*mdu2; *iTetamin = (1./(Num*0.01))*mdu2; a =iTetamin ; al=0.3; ala=al*a ; b=al*ala*((1.-al)**(-1.)); * b2=ala*(1.+ (ala*al) - ala)*((1.-al)**(-1.)); *b3 = ala*(1.+ (ala*ala*al) - (ala*ala))*((1.-al)**(-1.)); *iT1=(ik*iT1)+((1.-ik)*a*((iT1*iT1+b2)*(inve(a+(iT1*iT1+b2))))); *iT1=(ik*iT1)+((1.-ik)*a*((iT1*iT1*iT1+b3)*(inve(a+(iT1*iT1*iT1+b3))))); Finsi ; Si (non Kbrey); * Tmax * Réalisabilité sur T1 dés/activée [A] (nut P < 10 epsilon (Menter)) *Tmax =(((ABS P)**0.5)*cnuo) inve ; a =Tmax ; al=0.7 ; ala=al*a ; * b=ala*al*((1.-al)**(-1.)); b2=ala*(1.+ (ala*al) - ala)*((1.-al)**(-1.)); *b3 = ala*(1.+ (ala*ala*al) - (ala*ala))*((1.-al)**(-1.)); *iE1=(ik*iE1)+((1.-ik)*a*(iE1+b)*(inve(a+iE1+b))); *iE1=(ik*iE1)+((1.-ik)*a*((iE1*iE1*iE1+b3)*(inve(a+(iE1*iE1*iE1+b3))))); * Tmax Finsi; T1= (ABS T1) + 1.e-10 ; *mess ' iter =' &BCLTETA ' ERRT=' errt ; T = T1 ; Si (ERRT < 1.e-12) ; QUITTER BCLTETA ; Finsi ; Si ('EGA' &BCLTETA 12); Finsi ; FIN BCLTETA ; *mess ' Iteration ' &BCLTETA ' ERRT=' errt ; *............ Fin EDP TETA ............................................. Finsi; *................ EDP Nut .............................................. Si EDPNUT ; Nutj = Nuto; Snp= cnu*T*P*(2.-c1) ; *MDIA *mess ' MDIA sur NUTI' ; rxt2.'IARG'=1; * (nomc 'NUTI' (Dg*((Nuto*(1./dt)) + (Nutj*Snp)))); *TSCA *mess ' TSCA sur NUTI' ; rxt2.'IARG'=4; rxt2.'ARG1'=1.; rxt2.'ARG2'=UN ; rxt2.'ARG3'=(Mus2*iRo); rxt2.'ARG4'=0. ; St2= St et st2 ; mat2= mat et mat2 ; climn = nomc 'NUTI' Nutv=Nutj; mtinv.'MATASS'=mat2; mtinv.'MAPREC'=mat2; mtinv.'IMPINV'=0; mtinv.'TYPINV'=TYPINV; Si PERI ; MPI1='NUTI'; Finsi; *mess 'Equation sur NUTI'; Si(NON Kbrey); * Réalisabilité sur Ki dés/activée [A] a = 0.5*mdu2; al=0.9 ; ala=al*a ; * b=ala*al*((1.-al)**(-1.)); * b2=ala*(1.+ (ala*al) - ala)*((1.-al)**(-1.)); b3 = ala*(1.+ (ala*ala*al) - (ala*ala))*((1.-al)**(-1.)); *Ki=(ik*Ki)+((1.-ik)*a*(Ki+b)*(inve(a+Ki+b))); *Ki=(ik*Ki)+((1.-ik)*a*((Ki*Ki+b2)*(inve(a+(Ki*Ki+b2))))); Finsi; Finsi ; *............ Fin EDP Nut .............................................. *................ EDP Fi ............................................... Si EDPFI ; mp=-3. ; mq = 2. ; Sfp= 0.; *Sfn= (cnu*To*P*(mp + (mq*c1))); *Sfp= ((inve To)*((mq*c2) + mp)) ; *MDIA *mess ' MDIA sur FI' ; rxt2.'IARG'=1; *TSCA *mess ' TSCA sur FI' ; rxt2.'IARG'=3; rxt2.'ARG1'=Num; rxt2.'ARG2'=UN ; rxt2.'ARG3'=0. ; St2 = St et st2 ; mat2 = mat et mat2 ; climf= nomc 'FI' mtinv.'MATASS'=mat2; mtinv.'MAPREC'=mat2; mtinv.'IMPINV'=0; mtinv.'TYPINV'=TYPINV; *mess 'Equation sur FI'; Fi= (ABS Fi) + 1.e-10 ; Si(NON Kbrey); * Réalisabilité sur Ki dés/activée [A] a = 0.5*mdu2; al=0.9 ; ala=al*a ; * b=ala*al*((1.-al)**(-1.)); * b2=ala*(1.+ (ala*al) - ala)*((1.-al)**(-1.)); b3 = ala*(1.+ (ala*ala*al) - (ala*ala))*((1.-al)**(-1.)); *Ki=(ik*Ki)+((1.-ik)*a*(Ki+b)*(inve(a+Ki+b))); *Ki=(ik*Ki)+((1.-ik)*a*((Ki*Ki+b2)*(inve(a+(Ki*Ki+b2))))); Finsi; Finsi ; *............ Fin EDP Fi ............................................... *................ modèle K-L ........................................... Si Kkl; Echl= rv.inco.'Echl'; T2=T**(-2.); ** Réalisabilité sur Ki dés/activée [A] * a = 0.5*mdu2; al=0.9 ; ala=al*a ; ** b=ala*al*((1.-al)**(-1.)); ** b2=ala*(1.+ (ala*al) - ala)*((1.-al)**(-1.)); * b3 = ala*(1.+ (ala*ala*al) - (ala*ala))*((1.-al)**(-1.)); * ik=masq Ki 'INFERIEUR' ala ; **Ki=(ik*Ki)+((1.-ik)*a*(Ki+b)*(inve(a+Ki+b))); **Ki=(ik*Ki)+((1.-ik)*a*((Ki*Ki+b2)*(inve(a+(Ki*Ki+b2))))); * Ki=(ik*Ki)+((1.-ik)*a*((Ki*Ki*Ki+b3)*(inve(a+(Ki*Ki*Ki+b3))))); Ei = cd*(Ki**1.5)*(Echl**(-1.)); Finsi; *............ Fin modèle K-L ........................................... *................ modèle KLbr .......................................... Si KLbr; T2=T**(-2.); Si(NON Kbrey); * Réalisabilité sur Ki dés/activée [A] a = 0.5*mdu2; al=0.9 ; ala=al*a ; * b=ala*al*((1.-al)**(-1.)); * b2=ala*(1.+ (ala*al) - ala)*((1.-al)**(-1.)); b3 = ala*(1.+ (ala*ala*al) - (ala*ala))*((1.-al)**(-1.)); *Ki=(ik*Ki)+((1.-ik)*a*(Ki+b)*(inve(a+Ki+b))); *Ki=(ik*Ki)+((1.-ik)*a*((Ki*Ki+b2)*(inve(a+(Ki*Ki+b2))))); Finsi; Finsi; *............ Fin modèle KLbr .......................................... *********************** Fin Equation sur Nuti et Teta(t) ************ ********************** On conserve les résultats intermédiaires ***** rv.inco.'NUTI' = Nuti ; ****** Etape de diffusion equation sur K *************************** *DFDT * mess ' Etape de convection/diffusion + DFDT sur K' ; rxk.'KOPT'.'KFORM'=0 ; rxk.'KOPT'.'IDCEN'=1 ; rxk.'IARG'=3; rxk.'ARG1'=Ro; rxk.'ARG3'=rx.'ARG4'; rxk.'KOPT'.'KFORM'=KFORM; *TSCAL rxk.'IARG' = 1 ; *MDIA *mess ' MDIA pour les termes Bas-Reynolds' ; rxk.'IARG'=1; *St2 = kcht $mod scal sommet comp MI1 * (nomc MI1 (Dg*Sfp)); sk = sk1 et sko ; mak = mak1 et mak et matk; Si PERI ; MPI1=MI1; Finsi; mtinv.'MATASS'=mak ; mtinv.'MAPREC'=mak ; mtinv.'IMPINV'=0; mtinv.'TYPINV'=TYPINV; * mess 'Equation de diffusion sur K '; K1=(abs K1) + 1.e-10 ; *mess 'maxi mini K1 apres Diff ' (maxi K1) (mini K1) ; ****** Etape de diffusion equation sur Epsilon ********************* Si ((NON Kkl) et (NON KLbr)); *DFDT *mess ' Etape de diffusion DFDT sur EPSILON' ; rxe.'KOPT'.'KFORM'=0 ; rxe.'KOPT'.'IDCEN'=1 ; rxe.'IARG'=3; rxe.'ARG1'=Ro; rxe.'ARG3'=rx.'ARG4'; rxe.'KOPT'.'KFORM'=KFORM; *TSCA rxe.'IARG'=1; *MDIA *mess ' MDIA pour les termes Bas-Reynolds' ; rxe.'IARG'=1; *St2 = kcht $mod scal sommet comp MI2 * (nomc MI2 (Dg*Sfp)); se = se1 et seo ; mae = mae1 et mae et maed; clime= rv.'clime' ; Si PERI ; MPI1=MI2; Finsi; mtinv.'MATASS'=mae ; mtinv.'MAPREC'=mae ; mtinv.'IMPINV'=0; mtinv.'TYPINV'=TYPINV; * mess 'Equation de diffusion sur Epsilon '; E1=(Abs E1) + 1.e-10 ; * mess 'maxi mini E1 apres Diff ' (maxi E1) (mini E1) ; Finsi; ****** Cas K-L ***************************************************** Si Kkl ; * mess 'Modèle K-L '; E1=cd*(K1**1.5)*(rv.inco.'Echl'**(-1.)); * mess 'maxi mini E1 apres Diff ' (maxi E1) (mini E1) ; Finsi; ****** Avancement en temps ****************************** Si(NON Kbrey); * Réalisabilité sur K1 dés/activée [A] a = 0.5*mdu2; al=0.9 ; ala=al*a ; * b=ala*al*((1.-al)**(-1.)); * b2=ala*(1.+ (ala*al) - ala)*((1.-al)**(-1.)); b3 = ala*(1.+ (ala*ala*al) - (ala*ala))*((1.-al)**(-1.)); *K1=(ik*K1)+((1.-ik)*a*(K1+b)*(inve(a+K1+b))); *K1=(ik*K1)+((1.-ik)*a*((K1*K1+b2)*(inve(a+(K1*K1+b2))))); * Réalisabilité sur E1 dés/activée [A] (nut P < 10 epsilon (Menter)) * iEmin =10*((K1*((ABS P)**0.5)) inve) ; a =iEmin ; al=0.7 ; ala=al*a ; * b=ala*al*((1.-al)**(-1.)); b2=ala*(1.+ (ala*al) - ala)*((1.-al)**(-1.)); *b3 = ala*(1.+ (ala*ala*al) - (ala*ala))*((1.-al)**(-1.)); *iE1=(ik*iE1)+((1.-ik)*a*(iE1+b)*(inve(a+iE1+b))); *iE1=(ik*iE1)+((1.-ik)*a*((iE1*iE1*iE1+b3)*(inve(a+(iE1*iE1*iE1+b3))))); finsi; Si Kbw ; *mess ' Réalisabilité Bw '; * Réalisabilité sur Nut dés/activée [A] a =Mutmax ; al=0.9 ; ala=al*a ; * b=ala*al*((1.-al)**(-1.)); * b2=ala*(1.+ (ala*al) - ala)*((1.-al)**(-1.)); b3 = ala*(1.+ (ala*ala*al) - (ala*ala))*((1.-al)**(-1.)); *Mut=(ik*Mut)+((1.-ik)*a*(Mut+b)*(inve(a+Mut+b))); *Mut=(ik*Mut)+((1.-ik)*a*((Mut*Mut+b2)*(inve(a+(Mut*Nut+b2))))); *Teta1 = K1 * (inve E1); mess ' MUT1?'; mess ' MUT1? OK'; Finsi ; Si Filtre; Echmax=rv.inco.'Echl'; a =Echmax ; al=0.9; ala=al*a ; * b=ala*al*((1.-al)**(-1.)); * b2=ala*(1.+ (ala*al) - ala)*((1.-al)**(-1.)); b3 = ala*(1.+ (ala*ala*al) - (ala*ala))*((1.-al)**(-1.)); *Ech=(ik*Ech)+((1.-ik)*a*(Ech+b)*(inve(a+Ech+b))); *Ech=(ik*Ech)+((1.-ik)*a*((Ech*Ech+b2)*(inve(a+(Ech*Ech+b2))))); Finsi ; Si (NON KLbr); Finsi; ****** Cas KLbr **************************************************** Si KLbr ; E1=(K1**1.5)*(leps**(-1.)); Mut = Rocnu * (K1**0.5) * lmu; Finsi; ****** Cas KLbr Fin ************************************************ Ko=K1 ; Eo=E1 ; rv.inco.'Ksi'=Ksi ; FIDT=RV.'FIDT'; INDF = IPT - (IPT/FIDT * FIDT); Si (EGA INDF 0); Mess ' Ecart relatif entre deux pas de temps : sur K ' dk ' sur Epsilon ' de ; Finsi ; ****** Historiques ************************************** Si(non(exist H 'KFIH')); H.'KFIH'=20; Finsi ; KFIH=H.'KFIH'; INDH = IPT - (IPT/KFIH * KFIH); Si (EGA INDH 0); EV1=H.MI1; Si(ega nlt 0); tps= 0. ; Sinon; finsi ; repeter bloc1 nb; Si (EGA &bloc1 1); Sinon; Finsi ; Fin bloc1 ; H.MI1=evi; Finsi ; EV2=H.MI2; repeter bloc1 nb; Si (EGA &bloc1 1); Sinon; Finsi ; Fin bloc1 ; H.MI2=evi; Finsi ; Finsi ; Finsi ; ****** Petit menage avant retour ************************ rx.'KOPT'.'IDIV'=IDIV ; *Mess ' FIN PROC KEPSILON' ; RESPRO as2 ama1 ; FINPROC ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales