* PREPAENC PROCEDUR FD144363 23/11/29 21:15:04 11797 geo*'TABLE ' TIC*'TABLE ' ; *---------------------------------------------------------- *---- Suivi des modifications *--- 10/01/00 : Creation * *--- 14/03/05 option THERCO pour thermique implicite (Alex Bleyer et JPM) * * 1/changer discrH en discr * * * *---------------------------------------------------------- *---------------------------------------------------------- * Test des entrees et debut de preparation de l'algorithme *---------------------------------------------------------- *-------------------------------------------------------- ********************* PREPARATION *********************** *-------------------------------------------------------- Si(NON (EXIST TBT 'VERSION')) ; TBT.'VERSION'=0 ; Finsi ; Si ('EXIST' TBT 'TTsortie') ; TTsortie=TBT.'TTsortie' ; Sinon ; TTsortie=FAUX ; Finsi ; Si ('EXIST' TBT 'TTbreche') ; TTbreche=TBT.'TTbreche' ; Sinon ; TTbreche=FAUX ; Finsi ; Si ('EXIST' TBT 'TFIMP') ; TFIMP=TBT.'TFIMP' ; Sinon ; TFIMP=FAUX ; Finsi ; Si ('EXIST' TBT 'TTIMP') ; TTIMP=TBT.'TTIMP' ; Sinon ; TTIMP=FAUX ; Finsi ; Si ('EXIST' TBT 'TPAROIS') ; TPAROIS=TBT.'TPAROIS' ; Sinon ; TPAROIS=FAUX ; Finsi ; DIM3D=FAUX ; Si(EGA idim 3); DIM3D=VRAI ; Finsi ; *----------------------------------------------------------- * Definition du modele FLUIDE : NAVIER_STOKES * appel a MODELE avec la discretisation choisie DISCR *----------------------------------------------------------- * On Crée la géométrie discrérisée pour le fluide vtf = rxt.'vtf' ; tyelvf='XXXX' ; tyelvf='LI2D' ; Mess ' ERREUR ERREUR ERREUR ERREUR ERREUR ERREUR ' ; Mess ' ' ; Mess 'Maillage Foireux ' ; Mess ' ' ; ERREUR 21 ; Finsi ; Finsi ; tyelvf='LI3D' ; Mess ' ERREUR ERREUR ERREUR ERREUR ERREUR ERREUR ' ; Mess ' ' ; Mess 'Maillage Foireux ' ; Mess ' ' ; ERREUR 21 ; Finsi ; Finsi ; tyelvf='QD2D' ; Mess ' ERREUR ERREUR ERREUR ERREUR ERREUR ERREUR ' ; Mess ' ' ; Mess 'Maillage Foireux ' ; Mess ' ' ; ERREUR 21 ; Finsi ; Finsi ; tyelvf='QD3D' ; Mess ' ERREUR ERREUR ERREUR ERREUR ERREUR ERREUR ' ; Mess ' ' ; Mess 'Maillage Foireux ' ; Mess ' ' ; ERREUR 21 ; Finsi ; Finsi ; Si(EGA 'LI2D' tyelvf) ; repeter bcle nbe ; ERREUR 21 ; Finsi ; Fin bcle ; Finsi ; Si(EGA 'LI3D' tyelvf) ; repeter bcle nbe ; ERREUR 21 ; Finsi ; Fin bcle ; Finsi ; Si(EGA tyelvf 'QD2D') ; repeter bcle nbe ; ERREUR 21 ; Finsi ; Fin bcle ; Finsi ; Si(EGA tyelvf 'QD3D') ; repeter bcle nbe ; ERREUR 21 ; Finsi ; Fin bcle ; Finsi ; mdns = 'NAVIER_STOKES' ; GEO.'Mvtf' = Mvtf ; GEO.'$vtf' = $vtf ; GEO.'VTotal'= VTotal ; Si(Ega IDIM 3) ; Finsi ; *----------------------------------------------------------- * sortie menvfU * ............__________________ * | | * . | * | | * . | * | | * . | * | menvfU | * . | * | | * . | * |axe | * . | * | | * . | * | |_ * . |/| * | |/| * . |/| * | |/| * . |/| * | menvfU |/| * . |/| * | |/| * . |/| * | |/| * . |/| * | menvfU |/| * ............__________________|/| * breche * * *----------------------------------------------------------- * Creation de l'enveloppe du maillage FLUIDE GEO.'MmenvfU' = GEO.'Mmenvf' ; *---------------------------------------------------------- * Traitement de l'axe en 2D et des plans de symétrie en 3D * 'SI' TBT . 'Taxe' ; axe = rxt . 'axe' ; GEO . '$axe' = $axe ; GEO . 'axe' = axe ; 'FINS' ; * * *----------------------------------------------------------- *----------------------------------------------------------- * Traitement d'un nombre de brèches et sorties quelconques * - vérification de son inclusion dans l'enveloppe * - définition de BRECHEI : maillage BRECHE interieur * - définition de BRECHEC : maillage du contour de la brèche Si TTsortie ; *µµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµ ibr=index (rxt.'Sorties') ; Repeter BBRS NBR ; Sriches=rxt.'Sorties'.(ibr.&BBRS) ; ' ' 'pour la sortie' ' ' (ibr.&BBRS) ; sreche = Sriches.'Maillage' ; Si DIM3D ; diru = Bybre moins Byint ; Finsi ; Sriches.'Msreche' = Msreche ; Sriches.'$sreche' = $sreche ; Sriches.'sreche' = sreche ; Sriches.'Ssreche' = Ssreche ; Sriches.'Dsreche' = Dsreche ; ai= 'INTER' Msreche (GEO.'Mmenvf') ; Si (ega nbai 0) ; Finsi ; * Internal and external points 'SI' ('NON' DIM3D) ; 'SI' TBT . 'Taxe' ; 'SI' ('NEG' nint1 0) ; 'FINS' ; 'FINS' ; 'SINO' ; 'FINS' ; 'SI' ('EGA' a 0) ; 'FINS' ; Sriches . 'srechec' = srechec ; Sriches . 'srechei' = srechei ; 'FIN' BBRS ; 'FINS' ; *µµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµ Si TTbreche ; *µµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµ ibr=index (rxt.'Breches') ; Repeter BBRS NBR ; Briches=rxt.'Breches'.(ibr.&BBRS) ; ' ' 'pour la brèche' ' ' (ibr.&BBRS) ; creche = Briches.'Maillage' ; Si DIM3D ; diru = Bybre moins Byint ; Finsi ; Briches.'Mbreche' = Mcreche ; Briches.'$breche' = $creche ; Briches.'breche' = creche ; Briches.'Sbreche' = Screche ; Briches.'Dbreche' = Dcreche ; ai= 'INTER' Mcreche (GEO.'Mmenvf') ; Si (ega nbai 0) ; Finsi ; * Internal and external points 'SI' ('NON' DIM3D) ; 'SI' (TBT . 'Taxe') ; 'SI' ('NEG' nint1 0) ; 'FINS' ; 'FINS' ; 'SINO' ; 'FINS' ; 'SI' ('EGA' a 0) ; 'FINS' ; Briches . 'brechec' = crechec ; Briches . 'brechei' = crechei ; 'FIN' BBRS ; 'FINS' ; *µµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµ *----- TRAITEMENT DES RECOMBINEURS ------------------------- 'SI' (TBT.'TRECOMB') ; 'REPETER' BCLREC NBREC ; PAREXT = rxt.'RECOMB'. &BCLREC . 'PAREXT' ; ENTREE = rxt.'RECOMB'. &BCLREC . 'ENTREE' ; SORTIE = rxt.'RECOMB'. &BCLREC . 'SORTIE' ; direntr = rxt.'RECOMB'. &BCLREC . 'direntr' ; dirsort = rxt.'RECOMB'. &BCLREC . 'dirsort' ; DIRNAME = 'CHAIN' 'DREC' 'ent' &BCLREC ; GEO. DIRNAME = direntr ; DIRNAME = 'CHAIN' 'DREC' 'sor' &BCLREC ; GEO. DIRNAME = dirsort ; QNAME = 'CHAIN' 'MREC' 'par' &BCLREC ; GEO. QNAME = M_PAREXT ; QNAME = 'CHAIN' 'MREC' 'ent' &BCLREC ; GEO. QNAME = M_ENTREE ; QNAME = 'CHAIN' 'MREC' 'sor' &BCLREC ; GEO. QNAME = M_SORTIE ; $NAME = 'CHAIN' '$REC' 'par' &BCLREC ; GEO. $NAME = $PAREXT ; $NAME = 'CHAIN' '$REC' 'ent' &BCLREC ; GEO. $NAME = $ENTREE ; $NAME = 'CHAIN' '$REC' 'sor' &BCLREC ; GEO. $NAME = $SORTIE ; NAME = 'CHAIN' 'REC' 'par' &BCLREC ; NAME = 'CHAIN' 'REC' 'ent' &BCLREC ; GEO. NAME = ENTREE ; NAME = 'CHAIN' 'REC' 'sor' &BCLREC ; GEO. NAME = SORTIE ; NAME = 'CHAIN' 'SREC' 'ent' &BCLREC ; NAME = 'CHAIN' 'SREC' 'sor' &BCLREC ; ai = 'INTER' (M_PAREXT 'ET' M_ENTREE 'ET' M_SORTIE) (GEO.'Mmenvf') ; 'SI' ('EGA' nbai 0) ; 'FINSI' ; * Travail en 2D pour définir l'entree et la sortie du recombineur 'SI' ('NON' DIM3D) ; 'SI' ('EGA' a 0) ; 'ERREUR' 5 ; 'FINSI' ; 'SI' ('EGA' a 0) ; 'ERREUR' 5 ; 'FINSI' ; 'SINON' ; * Travail en 3D pour définir l'entree et la sortie du recombineur 'SI' ('EGA' a 0) ; 'ERREUR' 5 ; 'FINSI' ; 'SI' ('EGA' a 0) ; 'ERREUR' 5 ; 'FINSI' ; 'FINSI' ; NAME = 'CHAIN' 'REC' 'entI' &BCLREC ; GEO.NAME = ENTREEi ; NAME = 'CHAIN' 'REC' 'entC' &BCLREC ; GEO.NAME = ENTREEc ; NAME = 'CHAIN' 'REC' 'sorI' &BCLREC ; GEO.NAME = SORTIEi ; NAME = 'CHAIN' 'REC' 'sorC' &BCLREC ; GEO.NAME = SORTIEc ; 'FIN' BCLREC ; 'FINSI' ; 'SI' TBT . 'GRAPH' ; 'SI' TBT . 'Taxe' ; tmenvf = axe 'ET' GEO . 'menvfU' ; 'SINO' ; tmenvf = GEO . 'menvfU' ; 'FINS' ; Si TTsortie ; ibr=index (rxt.'Sorties') ; Repeter BBRS NBR ; Briches=rxt.'Sorties'.(ibr.&BBRS) ; srechei=Briches.'srechei' ; srechec=Briches.'srechec' ; tmenvf = tmenvf et srechei et srechec ; FIN BBRS ; FINSI ; Si TTbreche ; ibr=index (rxt.'Breches') ; Repeter BBRS NBR ; Briches=rxt.'Breches'.(ibr.&BBRS) ; brechei=Briches.'brechei' ; brechec=Briches.'brechec' ; tmenvf = tmenvf et brechei et brechec ; FIN BBRS ; FINSI ; 'SI' (TBT.'TRECOMB') ; 'REPETER' BCLREC NBREC ; NAME = 'CHAIN' 'REC' 'entI' &BCLREC ; ENTREEi = GEO.NAME ; NAME = 'CHAIN' 'REC' 'entC' &BCLREC ; ENTREEc = GEO.NAME ; NAME = 'CHAIN' 'REC' 'sorI' &BCLREC ; SORTIEi = GEO.NAME ; NAME = 'CHAIN' 'REC' 'sorC' &BCLREC ; SORTIEc = GEO.NAME ; tmenvf = tmenvf et ENTREEi et ENTREEc ; tmenvf = tmenvf et SORTIEi et SORTIEc ; 'FIN' BCLREC ; 'FINSI' ; 'TRAC' tmenvf 'FINSI' ; *----------------------------------------------------------- * Traitement de la thermique paroi * => Il doit y avoir deux types de paroi dans le modele * Type 1 = THERMP la paroi est couplee au fluide et on calcule * son evolution thermique en fonction du temps * Type 2 = TP_IMPOSEE : la paroi produit une condition * limite de type temperature imposee pour la resolution * de la temperature fluide en fonction du temps * Dans un meme cas test, l'utilisateur veut pouvoir coupler * les deux approches et pouvoir definir des conditions initiales * differentes et piloter la variation en fonction du temps * Les parois sont decrites dans la table RXT.'TABMUR' * Il faut regrouper les parois servant de CL en temperature et * par type (beton/acier...) les parois dont on veut traiter la * thermique * * On Crée la géométrie discrérisée pour la thermique paroi 'SI' TPAROIS ; mess ' THERMIQUE PAROIS MULTIPLES ' ; ipr=index (rxt.'PAROIS') ; mdns = 'NAVIER_STOKES' ; Repeter BPRS NPAR ; Parois=rxt.'PAROIS'.(ipr.&BPRS) ; GEO.(ipr.&BPRS)='TABLE' ; vtp=Parois.'vtp' ; GEO.(ipr.&BPRS).'vtp' = vtp ; GEO.(ipr.&BPRS).'Mvtp' = Mvtp ; GEO.(ipr.&BPRS).'$vtp' = $vtpi ; GEO.(ipr.&BPRS).'VTotalp'= VTotalp ; GEO.(ipr.&BPRS).'Diagp' = Diagpi ; 'SI' TBT.'GRAPH' ; 'FINSI' ; 'SI'('EGA' &BPRS 1) ; ROCP = Parois.'ROCP'*Diagpi ; LAMB = Parois.'LAMBDA'*Diagpi ; TPPI = Parois.'Tp0'*Diagpi ; vtpt = vtp ; Mvtpt= Mvtp ; 'SINON' ; a=inter vtpt vtp 'NOVERIF' ; trace a CACHE TITR ' maillage intersection' ; Mess ; Mess ' Les éléments de maillage composant la paroi se chevauchent'; Mess ; ERREUR ' ' ; Finsi ; ROCP = ROCP + (Parois.'ROCP'*Diagpi) ; LAMB = LAMB + (Parois.'LAMBDA'*Diagpi) ; TPPI = TPPI + (Parois.'Tp0'*Diagpi) ; vtpt = vtpt et vtp ; Mvtpt = Mvtpt et Mvtp ; 'FINSI' ; FIN BPRS ; rxt.'vtp' = vtpt ; Mvtp = Mvtpt ; mdns = 'NAVIER_STOKES' ; GEO.'Mvtp' = Mvtp ; GEO.'$vtp' = $vtpp ; GEO.'VTotalp'= VTotalp ; Si(NON ( EXIST tic 'TPNM')) ; Finsi ; 'SI' TBT.'GRAPH' ; Trace tic.'TPNM' (GEO.'vtp') 'FINSI' ; 'FINSI' ; TBT.'TPAROIF' = FAUX ; 'SI' (TBT.'THERMP' ou TPAROIS) ; mess ' THERMIQUE PAROIS ' ; 'SI' (NON TPAROIS) ; mdns = 'NAVIER_STOKES' ; GEO.'Mvtp' = Mvtp ; GEO.'$vtp' = $vtpt ; GEO.'VTotalp'= VTotalp ; 'FINSI' ; 'SI' TBT.'GRAPH' ; 'TRACE' GEO.'vtp' 'TITR' 'Maillage pour la THERMIQUE ' ; 'FINSI' ; * On recherche l'intersection entre vtf et vtp * => paroif TBT.'TPAROIF' = VRAI ; GEO.'Mparoif' = Mparoif ; GEO.'$paroif' = $paroif ; GEO.'Sparoif' = Sparoif ; 'SI' TBT.'GRAPH' ; 'FINSI' ; 'FINSI' ; 'SI' TBT.'ECHEXT' ; GEO.'Mparext' = Mparext ; GEO.'$parext' = $parext ; 'FINSI' ; 'FINSI' ; *----------------------------------------------------------- * Traitement des Flux imposés * XFIMP 3 : Flux de masse imposés 'SI' TFIMP ; ifimp=INDEX (rxt.'XFIMP') ; REPETER BBFIMP NBFIMP ; Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ; Bfimp.'Mmfpi' = Mmfpi ; Bfimp.'$mfpi' = $mfpi ; *-- Verification de l'inclusion de MFPI dans l'enveloppe a = 'INTERSECTION' (Bfimp.'mfpi') (GEO.'menvf') ; FIN BBFIMP ; 'FINSI' ; * XFIMP 3 : Flux de masse imposés *----------------------------------------------------------- * Traitement des températures imposées (condenseurs) 'SI' TTIMP ; itimp=INDEX (rxt.'TIMP') ; REPETER BBTIMP NBTIMP ; Btimp=rxt.'TIMP'.(itimp.&BBTIMP) ; Btimp.'Mmtpi' = Mmtpi ; Btimp.'$mtpi' = $mtpi ; *-- Verification de l'inclusion de MTPI dans l'enveloppe a = 'INTERSECTION' (Btimp.'mtpi') (GEO.'menvf') ; FIN BBTIMP ; 'FINSI' ; *** vérification de l'inclusion du maillage de la paroi du mur *** et de l'enveloppe du maillage fluide 'SI' TBT.'TECHANP' ; GEO.'Mmtp0' = Mmtp0 ; GEO.'$mtp0' = $mtp0 ; *-- Verification de l'inclusion de MTPI dans l'enveloppe a = 'INTERSECTION' (GEO.'mtp0') (GEO.'menvf') ; 'FINSI' ; *----------------------------------------------------------- 'SI' (TBT.'ASPER') ; aspinj = rxt.'aspinj' ; toitf = rxt.'toitf' ; 'FINSI' ; * ----------------------------------------------------------- 'SI' TBT.'ASPER' ; 'FINSI' ; *---------------------------------------------------------- * Definition d'un point interieur sur lequel on impose * la pression Si(exist rxt 'pi'); Finsi ; GEO.'Pimp' = Pimp ; *----------------------------------------------------------- * Preparation des conditions initiales pour les differentes grandeurs * 'SI' TBT.'ASPER' ; t = rxt.'scenasp'.'t' ; 'FINSI' ; tf0 = rxt.'TF0' ; Pt0 = rxt.'PT0' ; 'SI'(TBT.'THERMP' et (NON TPAROIS)) ; tp0 = rxt.'Tp0' ; * Calcul d'une temperature moyenne de paroi Tpm0 'SINON' ; Tpm0 = 0. ; 'FINSI' ; 'SI' TPAROIS ; ipr=index (rxt.'PAROIS') ; Tpm0=0. ; Rocpm0=0. ; Repeter BPRS NPAR ; tp0 = tic.CTp0 ; rocp = tic.Crocp ; * Calcul d'une temperature moyenne de paroi Tpm0 Rocpm0=Rocpm0 + FIN BPRS ; rxt.'Tp0'=Tpm0 ; rxt.'ROCP'=Rocpm0 ; 'SINON' ; Tpm0 = 0. ; 'FINSI' ; 'SI' TBT.'VAPEUR' ; Yvap0 = rxt.'Yvap0' ; 'SI' (EXIST rxt 'Mliq0') ; vertytab rxt 'Mliq0' 'FLOTTANT' ; Mliq0 = rxt.'Mliq0' ; 'SINON' ; Mliq0 = 0. ; 'FINSI' ; 'SINON' ; Yvap0 = 0. ; 'FINSI' ; 'SI' TBT.'THE' ; Yhe0 = rxt.'Yhe0' ; 'SINON' ; Yhe0 = 0. ; 'FINSI' ; 'SI' TBT.'TH2' ; Yh20 = rxt.'Yh20' ; 'SINON' ; Yh20 = 0. ; 'FINSI' ; 'SI' TBT.'TO2' ; Yo20 = rxt.'Yo20' ; 'SINON' ; Yo20 = 0. ; 'FINSI' ; 'SI' TBT.'TN2' ; Yn20 = rxt.'Yn20' ; 'SINON' ; Yn20 = 0. ; 'FINSI' ; 'SI' TBT.'TCO2' ; Yco20 = rxt.'Yco20' ; 'SINON' ; Yco20 = 0. ; 'FINSI' ; 'SI' TBT.'TCO' ; Yco0 = rxt.'Yco0' ; 'SINON' ; Yco0 = 0. ; 'FINSI' ; *--------------------------------------------------------------- * AIR : on traite l'air comme un composant a part entiere * il faudra se mefier de ce point lors des calculs de combustion * Yair0 = 1.0 - Yvap0 - Yhe0 - Yh20 - Yo20 - Yn20 - Yco20 - Yco0 ; *--------------------------------------------------------------- * RGPM = constante des gaz parfaits pour le mélange Rgh2 = TBT.'Rgh2' ; Rghe = TBT.'Rghe' ; Rgo2 = TBT.'Rgo2' ; Rgn2 = TBT.'Rgn2' ; Rgco2 = TBT.'Rgco2' ; Rgco = TBT.'Rgco' ; Rgvap = TBT.'Rgvap' ; Rgair = TBT.'Rgair' ; Rgpm = (Rgvap '*' Yvap0) '+' (Rgair '*' Yair0) '+' (Rghe '*' Yhe0) '+' (Rgh2 '*' Yh20) '+' (Rgo2 '*' Yo20) '+' (Rgn2 '*' Yn20) '+' (Rgco '*' Yco0) '+' (Rgco2 '*' Yco20) ; *--------------------------------------------------------------- * Calcul Cp (Tf0) et Cpm pour le mélange de gaz * CALCP appelé à l'initialisation * Tfm=Tf0 ; Cpvap = TBT.'Cpvap' ; Cpm = (Cpvap '*' Yvap0) '+' (Cpair '*' Yair0) '+' (Cphe '*' Yhe0) '+' (Cph2 '*' Yh20) '+' (Cpo2 '*' Yo20) '+' (Cpn2 '*' Yn20) '+' (Cpco '*' Yco0) '+' (Cpco2 '*' Yco20) ; *--------------------------------------------------------------- * Calcul Mu (Tkm) pour le mélange de gaz * Tkm=Tfm + 273.15 ; Mu = (Muvap '*' Yvap0) '+' (Muair '*' Yair0) '+' (Muhe '*' Yhe0) '+' (Muh2 '*' Yh20) '+' (Muo2 '*' Yo20) '+' (Mun2 '*' Yn20) '+' (Muco '*' Yco0) '+' (Muco2 '*' Yco20) ; *--------------------------------------------------------------- * Calcul des autres grandeurs initiales * Cvm = Capacite calorifique a volume constante (J/kg/K) * Gamm = Gamma du mélange * Rho0 = Densité initiale (kg/m3) * Ri0 = Densité de chaque gaz (kg/m3) * Cvm = Cpm '-' Rgpm ; * Gamm = Cpm '/' Cvm ; Gamm = Cpm '*' (Cvm ** (-1.0)) ; * Rho0 = pt0 '/' (Rgpm '*' (tf0 '+' 273.15)) ; Rho0 = pt0 '*' ((Rgpm '*' (tf0 '+' 273.15))**(-1.0)); Rvap0 = Rho0 '*' Yvap0 ; Rhe0 = Rho0 '*' Yhe0 ; Rh20 = Rho0 '*' Yh20 ; Ro20 = Rho0 '*' Yo20 ; Rn20 = Rho0 '*' Yn20 ; Rco20 = Rho0 '*' Yco20 ; Rco0 = Rho0 '*' Yco0 ; Rair0 = Rho0 '*' Yair0 ; *----------------------------------------------------------- * BRECHE : determination du facteur geometrique pour DEBIT * en EF * src=0. ; src2=0. ; Si TTsortie ; ibr=index (rxt.'Sorties') ; Repeter BBRS NBR ; Sriches=rxt.'Sorties'.(ibr.&BBRS) ; diru = Sriches . 'diru' ; $sreche=Sriches.'$sreche' ; srechec=Sriches.'srechec' ; 'SI' DIM3D ; Sriches.'$srechec'=$srechec ; 'SINON' ; 'NATURE' 'DISCRET' ; 'FINSI' ; fgeo = 'ABS' ((Sriches.'Ssreche') '*' (1./src)) ; Sriches.'facgeo' = fgeo ; FIN BBRS ; FINSI ; Si TTbreche ; ibr=index (rxt.'Breches') ; Repeter BBRS NBR ; Briches=rxt.'Breches'.(ibr.&BBRS) ; diru = Briches . 'diru' ; $breche=Briches.'$breche' ; brechec=Briches.'brechec' ; 'SI' DIM3D ; Briches.'$brechec'=$brechec ; 'SINON' ; 'NATURE' 'DISCRET' ; 'FINSI' ; fgeo = 'ABS' ((Briches.'Sbreche') '*' (1./src)) ; Briches.'facgeo' = fgeo ; FIN BBRS ; FINSI ; *----------------------------------------------------------- *----- FIN du TRAITEMENT DE LA BRECHE ---------------------- *----------------------------------------------------------- *----- TRAITEMENT DES RECOMBINEURS 'SI' (TBT.'TRECOMB') ; 'REPETER' BCLREC NBREC ; $toto = 'CHAIN' '$REC' 'ent' &BCLREC ; $tutu = 'CHAIN' '$REC' 'sor' &BCLREC ; NAME = 'CHAIN' 'REC' 'entI' &BCLREC ; ENTREEi = GEO.NAME ; NAME = 'CHAIN' 'REC' 'entC' &BCLREC ; ENTREEc = GEO.NAME ; NAME = 'CHAIN' 'REC' 'sorI' &BCLREC ; SORTIEi = GEO.NAME ; NAME = 'CHAIN' 'REC' 'sorC' &BCLREC ; SORTIEc = GEO.NAME ; DIRENT = 'CHAIN' 'DREC' 'ent' &BCLREC ; direntr = GEO. DIRENT ; DIRSOR = 'CHAIN' 'DREC' 'sor' &BCLREC ; dirsort = GEO. DIRSOR ; 'SI' DIM3D ; 3 'UX' 0.0 'UY' 0.0 'UZ' 0.0 'NATURE' 'DISCRET' ; toto1 ; 3 'UX' 0.0 'UY' 0.0 'UZ' 0.0 'NATURE' 'DISCRET' ; tutu1 ; 'SINON' ; 2 'UX' 0.0 'UY' 0.0 'NATURE' 'DISCRET' ; toto1 ; 2 'UX' 0.0 'UY' 0.0 'NATURE' 'DISCRET' ; tutu1 ; 'FINSI' ; S_ENT = 'CHAIN' 'SREC' 'ent' &BCLREC ; S_SOR = 'CHAIN' 'SREC' 'sor' &BCLREC ; toto5 = 'ABS' ((GEO.S_ENT) '*' (toto4**(-1.0))) ; tutu5 = 'ABS' ((GEO.S_SOR) '*' (tutu4**(-1.0))) ; FG_ENT = 'CHAIN' 'fgREC' 'ent' &BCLREC ; GEO.FG_ENT = toto5 ; FG_SOR = 'CHAIN' 'fgREC' 'sor' &BCLREC ; GEO.FG_SOR = tutu5 ; 'FIN' BCLREC ; 'FINSI' ; *------------------------------------------------------------ * TRAITEMENT DES EQUATIONS A RESOUDRE *------------------------------------------------------------ * * - Definition de constantes intervenant dans les equations * FCPRECI = Frequence de recalcul du préc. dans la methode iterative * FCPRECT = Frequence de recalcul du préc. en fn du pas de temps * calprec = logique pilotant le preconditionnement calprec = VRAI ; FCPRECT = RXT.'FCPRECT' ; 'SI' (FCPRECT 'EGA' 1) ; 'MESS' 'ON PRECONDITIONNE A CHAQUE ITERATION!' ; 'FINSI' ; 'SINON' ; FCPRECT = 5 ; 'FINSI' ; FCPRECI = RXT.'FCPRECI' ; 'SI' (FCPRECI 'EGA' 1) ; 'MESS' 'ON PRECONDITIONNE A CHAQUE ITERATION!' ; 'FINSI' ; 'SINON' ; FCPRECI = 5 ; 'FINSI' ; 'SINON' ; RXT.'FRPREC' = 1 ; calprec = FAUX ; FCPRECI = 1 ; FCPRECT = 1 ; 'FINSI' ; * Donnees à la brèche (vitesse et température * pour les conditions aux limites uj=0. ; vj=-0. ; wj=-1. ; Tj = 0. ; *-- Suivant la formulation la ligne de commande change --------- * LCTSCA ligne de commande de TSCA Si (Ega TBT.'FEF' 'EFM1') ; Finsi ; DTX= 'DT' ; *Si (EGA TBT.'FEF' 'EFM1') ; *DTX= 'DELTAT' ; *Finsi ; *--------------------------------------------------------------- *- EQUATIONS DE LA QDM * Formulation non conservative * Decentrement SUPG * *---- Modèle K-Epsilon EFM1 -------------------------------- 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'ZONE' $vtf 'OPER' 'NSKE' 'NUm' 'NUT' 'ROG' 'INCO' 'UN' 'KN' 'EN' 'OPTI' 'EFM1' 'CENTREE' 'ZONE' $vtf 'OPER' 'DFDT' 1. 'UNM' DTX 'INCO' 'UN' 'ZONE' $vtf 'OPER' 'DFDT' 1. 'KNM' DTX 'INCO' 'KN' 'ZONE' $vtf 'OPER' 'DFDT' 1. 'ENM' DTX 'INCO' 'EN' ; *---- Modèle K-Epsilon EFM1 -- FIN ------------------------- Sinon ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' * 'ZONE' $vtf 'OPER' 'SGE' 'UN' 'NU' 'INCO' 'UN' 'ZONE' $vtf 'OPER' 'NS' 1. 'UN' 'NUEFF' 'ROG' 'INCO' 'UN' 'OPTI' 'EFM1' 'CENTREE' 'ZONE' $vtf 'OPER' 'DFDT' 1. 'UNM' DTX 'INCO' 'UN' ; Finsi ; * * - Conditions aux limites sur les parois (vitesse nulle) * ou Fonctions de paroi * Si (TBT.'FPAROI') ; rv= 'EQEX' rv 'OPTI' TBT.'FEF' TBT.'FIMPL' 'INCO' 'UN' 'KN' 'EN' ; 'SINON' ; rv= 'EQEX' rv 'OPTI' TBT.'FEF' TBT.'FIMPL' (TBT.'YP') 'INCO' 'UN' ; 'FINSI' ; Sinon ; rv= 'EQEX' rv 'CLIM' 'UN' 'UIMP' GEO.'menvfU' 0. 'UN' 'VIMP' GEO.'menvfU' 0. ; 'SI' DIM3D ; rv= 'EQEX' rv 'CLIM' 'UN' 'WIMP' GEO.'menvfU' 0. ; Finsi ; Finsi ; * * - Conditions aux limites sur la brèche et les sorties * *!? Si TTsortie ; ibr=index (rxt.'Sorties') ; Repeter BBRS NBR ; Sriches=rxt.'Sorties'.(ibr.&BBRS) ; srechei=Sriches.'srechei' ; srechec=Sriches.'srechec' ; rv= 'EQEX' rv 'CLIM' 'UN' 'UIMP' srechei uj 'UN' 'VIMP' srechei vj 'UN' 'UIMP' srechec 0. 'UN' 'VIMP' srechec 0. ; FIN BBRS ; FINSI ; Si TTbreche ; ibr=index (rxt.'Breches') ; Repeter BBRS NBR ; Briches=rxt.'Breches'.(ibr.&BBRS) ; brechei=Briches.'brechei' ; brechec=Briches.'brechec' ; rv= 'EQEX' rv 'CLIM' 'UN' 'UIMP' brechei uj 'UN' 'VIMP' brechei vj 'UN' 'UIMP' brechec 0. 'UN' 'VIMP' brechec 0. ; FIN BBRS ; FINSI ; 'SI' (TBT.'TRECOMB') ; 'REPETER' BCLREC NBREC ; NAME = 'CHAIN' 'REC' 'entI' &BCLREC ; ENTREEi = GEO.NAME ; NAME = 'CHAIN' 'REC' 'entC' &BCLREC ; ENTREEc = GEO.NAME ; NAME = 'CHAIN' 'REC' 'sorI' &BCLREC ; SORTIEi = GEO.NAME ; NAME = 'CHAIN' 'REC' 'sorC' &BCLREC ; SORTIEc = GEO.NAME ; rv= 'EQEX' rv 'CLIM' 'UN' 'UIMP' ENTREEi uj 'UN' 'VIMP' ENTREEi vj 'UN' 'UIMP' ENTREEc 0. 'UN' 'VIMP' ENTREEc 0. ; rv= 'EQEX' rv 'CLIM' 'UN' 'UIMP' SORTIEi uj 'UN' 'VIMP' SORTIEi vj 'UN' 'UIMP' SORTIEc 0. 'UN' 'VIMP' SORTIEc 0. ; 'SI' DIM3D ; rv= 'EQEX' rv 'CLIM' 'UN' 'WIMP' ENTREEi Wj 'UN' 'WIMP' ENTREEc 0. ; rv= 'EQEX' rv 'CLIM' 'UN' 'WIMP' SORTIEi Wj 'UN' 'WIMP' SORTIEc 0. ; 'FINSI' ; 'FIN' BCLREC ; 'FINSI' ; 'SI' DIM3D ; Si TTsortie ; ibr=index (rxt.'Sorties') ; Repeter BBRS NBR ; Sriches=rxt.'Sorties'.(ibr.&BBRS) ; srechei=Sriches.'srechei' ; srechec=Sriches.'srechec' ; rv= 'EQEX' rv 'CLIM' 'UN' 'WIMP' srechei wj 'UN' 'WIMP' srechec 0. ; FIN BBRS ; FINSI ; Si TTbreche ; ibr=index (rxt.'Breches') ; Repeter BBRS NBR ; Briches=rxt.'Breches'.(ibr.&BBRS) ; brechei=Briches.'brechei' ; brechec=Briches.'brechec' ; rv= 'EQEX' rv 'CLIM' 'UN' 'WIMP' brechei wj 'UN' 'WIMP' brechec 0. ; FIN BBRS ; FINSI ; 'FINSI' ; * * Imposition de la vitesse normale nulle sur l'axe en MODE AXIS * (le MODE PLAN est pris en compte via VNIMP plus loin) rv= 'EQEX' rv 'CLIM' 'UN' 'UIMP' (GEO . 'axe') 0.; 'FINS' ; *--------------------------------------------------------------- * Definition des inconnues vitesse UN et terme source * de flottabilite ROG * * - Definition de la table des inconnues rv.inco= tic ; 'SI' DIM3D ; Si TTsortie ; ibr=index (rxt.'Sorties') ; Repeter BBRS NBR ; Sriches=rxt.'Sorties'.(ibr.&BBRS) ; * mess ' Conditions limites unj ??? ' (ibr.&BBRS) ; srechei=Sriches.'srechei' ; $sreche=Sriches.'$sreche' ; uinj = uinj + uino ; FIN BBRS ; FINSI ; Si TTbreche ; mess ' Tient on passe la '; ibr=index (rxt.'Breches') ; Repeter BBRS NBR ; Briches=rxt.'Breches'.(ibr.&BBRS) ; * mess ' Conditions limites unj ??? ' (ibr.&BBRS) ; brechei=Briches.'brechei' ; $breche=Briches.'$breche' ; uinj = uinj + uino ; FIN BBRS ; FINSI ; Si (exist tic 'UN'); Sinon ; 'SI' (TTbreche ou TTsortie); 'SINON'; 'FINSI'; Finsi ; Si (exist tic 'UNM'); Sinon ; 'SI' (TTbreche ou TTsortie); 'SINON'; 'FINSI'; Finsi ; Si(exist tic 'ROG'); Sinon ; Finsi ; 'SINON' ; Si TTsortie ; ibr=index (rxt.'Sorties') ; Repeter BBRS NBR ; Sriches=rxt.'Sorties'.(ibr.&BBRS) ; srechei=Sriches.'srechei' ; $sreche=Sriches.'$sreche' ; uinj = uinj + uino ; FIN BBRS ; FINSI ; Si TTbreche ; ibr=index (rxt.'Breches') ; Repeter BBRS NBR ; Briches=rxt.'Breches'.(ibr.&BBRS) ; brechei=Briches.'brechei' ; $breche=Briches.'$breche' ; uinj = uinj + uino ; FIN BBRS ; FINSI ; Si(exist tic 'UN'); Sinon ; 'SI' (TTbreche ou TTsortie); 'SINON'; 'FINSI'; Finsi ; Si(exist tic 'UNM'); Sinon ; 'SI' (TTbreche ou TTsortie); 'SINON'; 'FINSI'; Finsi ; Si(exist tic 'ROG'); Sinon ; Finsi ; 'FINSI' ; Si(exist tic 'KN') ; *ma=extr tic.'KN' MAILLAGE ; *mc=doma $vtf 'SOMMET' ; *ELIM (ma et mc) epsi ; Sinon ; Finsi ; Si(exist tic 'EN') ; *ma=extr tic.'EN' MAILLAGE ; *mc=doma $vtf 'SOMMET' ; *ELIM (ma et mc) epsi ; Sinon ; Finsi ; Si(exist tic 'KNM') ; *ma=extr tic.'KNM' MAILLAGE ; *mc=doma $vtf 'SOMMET' ; *ELIM (ma et mc) epsi ; Sinon ; Finsi ; Si(exist tic 'ENM') ; *ma=extr tic.'ENM' MAILLAGE ; *mc=doma $vtf 'SOMMET' ; *ELIM (ma et mc) epsi ; Sinon ; Finsi ; Si(exist tic 'NUT') ; *ma=extr tic.'NUT' MAILLAGE ; *mc=doma $vtf 'CENTRE' ; *ELIM (ma et mc) epsi ; Sinon ; Finsi ; 'FINSI' ; *----------------------------------------------------------------------- * Specification pour la resolution du systeme * TYPINV = 3 : Gradient Conjugue * = 2 : BiCGStab * = 1 : Methode Directe * PRECOND = 3 Preconditionnement I-LU(0) * NITMAX = nombre maximal d'iterations * RESID = precision du Residu EPSS * *----------------------------------------------------------------------- * Precision EPSS * EPSS = 1.e-5 ; * EPSS = 1.e-10 ; EPSS = 1.e-20 ; * Nombre total d iterations * NTIT = 600 ; NTIT = 800 ; rv.'METHINV'.TYPINV=TBT.'TYPINV' ; rv.'METHINV'.TYPRENU=TBT.'RENU' ; rv.'METHINV'.IMPINV=TBT.'nimpr' ; rv.'METHINV'.NITMAX=NTIT ; rv.'METHINV'.PRECOND=3 ; rv.'METHINV'.'FCPRECI' = FCPRECI ; rv.'METHINV'.'FCPRECT' = FCPRECT ; rv.'METHINV'.'CALPREC' = calprec ; rv.'METHINV'.RESID = EPSS ; *---------------------------------------------------------------------- * Definition du minimum pour recalcul du preconditionnement * *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * 'SI' ( 'NON' tbt.'UTILPREC' ) ; * rv.'MINPREC' = rv.'METHINV'.NITMAX ; * 'FINSI' ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *---------------------------------------------------------------------- * Traitement de la PRESSION * rvpr= 'EQEX' 'OPTI' TBT.'FEF' TBT.'FIMPL' TBT.'KPRE' 'SUPG' ; *Si (NON TBT.'Tsortie') ; rvpr= 'EQEX' rvpr 'OPTI' TBT.'FEF' TBT.'FIMPL' 'INCOD' TBT.'KPRE' *Finsi ; Si(exist rxt 'pi') ; * Si(TBT.'Tsortie') ; * Si(EGA TBT.'KPRE' 'MSOMMET') ; * sortiep=doma GEO.'$sortie' MSOMMET ; * rvpr='EQEX' rvpr * 'CLIM' 'PRES' 'TIMP' sortiep 0. ; * Finsi ; * Sinon ; rvpr='EQEX' rvpr * Finsi ; Finsi ; Si (TBT.'FPAROI') ; rvpr= 'EQEX' rvpr 'OPTI' TBT.'FEF' TBT.'FIMPL' TBT.'KPRE' Finsi ; * * Traitement d'un pseudo plan de symétrie en MODE PLAN * (le MODE AXIS est pris en compte en imposant UIMP=0) rvpr = 'EQEX' rvpr 'OPTI' TBT . 'FEF' TBT . 'FIMPL' TBT . 'KPRE' 'FINS' ; MAXEL=TBT.'MAXELPRE' ; mess ' Maximum d éléments pour une résolution directe de la pression' ' ' MAXEL; rvpr.'METHINV'.TYPINV= 1 ; rvpr.'METHINV'.TYPRENU=TBT.'RENU' ; rvpr.'METHINV'.IMPINV=TBT.'nimpr' ; 'SINON' ; rvpr.'METHINV'.TYPINV=TBT.'TYPINV' ; rvpr.'METHINV'.TYPRENU=TBT.'RENU' ; rvpr.'METHINV'.IMPINV=TBT.'nimpr' ; rvpr.'METHINV'.NITMAX= NTIT ; rvpr.'METHINV'.PRECOND=3 ; rvpr.'METHINV'.'FCPRECI' = FCPRECI ; rvpr.'METHINV'.'FCPRECT' = FCPRECT ; rvpr.'METHINV'.'CALPREC' = calprec ; rvpr.'METHINV'.RESID =1.e-12 ; ' ' '=> Méthode itérative, TYPINV=' TBT.'TYPINV'; 'FINSI' ; *------------------------------------------------------------- * Definition de l'inconnue de PRESSION * Sinon ; Finsi ; *------------------------------------------------------------ *-- EQUATIONS DU MODèLE K-EPSILON Si ( Exist TBT 'MODTURB') ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'NOCONS' 'ZONE' $vtf 'OPER' 'TSCA' 1. 'UN' 'NUEFF' 'Sk' 'INCO' 'KN' 'OPTI' 'EFM1' 'CENTREE' 'ZONE' $vtf 'OPER' 'DFDT' 1. 'KNM' DTX 'INCO' 'KN' ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'NOCONS' 'ZONE' $vtf 'OPER' 'TSCA' 1. 'UN' 'NUEFF' 'Se' 'INCO' 'EN' 'OPTI' 'EFM1' 'CENTREE' 'ZONE' $vtf 'OPER' 'DFDT' 1. 'ENM' DTX 'INCO' 'EN' ; * * - Conditions aux limites sur la brèche * kj=0. ; ej=1.e30 ; Si TTsortie ; ibr=index (rxt.'Sorties') ; Repeter BBRS NBR ; Briches=rxt.'Sorties'.(ibr.&BBRS) ; mess ' Conditions limites sur K et Epsilon sortie' ' ' (ibr.&BBRS) ; brechei=Briches.'brechei' ; brechec=Briches.'brechec' ; Rrk= 'EQEX' Rrk 'CLIM' 'KN' 'TIMP' brechei kj 'KN' 'TIMP' brechec 0. ; Rre= 'EQEX' Rre 'CLIM' 'EN' 'TIMP' brechei ej 'EN' 'TIMP' brechec 1.e30 ; FIN BBRS ; FINSI ; Si TTbreche ; ibr=index (rxt.'Breches') ; Repeter BBRS NBR ; Briches=rxt.'Breches'.(ibr.&BBRS) ; mess ' Conditions limites sur K et Epsilon brèche' ' ' (ibr.&BBRS) ; brechei=Briches.'brechei' ; brechec=Briches.'brechec' ; Rrk= 'EQEX' Rrk 'CLIM' 'KN' 'TIMP' brechei kj 'KN' 'TIMP' brechec 0. ; Rre= 'EQEX' Rre 'CLIM' 'EN' 'TIMP' brechei ej 'EN' 'TIMP' brechec 1.e30 ; FIN BBRS ; FINSI ; Rrk .inco = tic ; Rrk .'METHINV'.TYPINV=TBT.'TYPINV' ; Rrk .'METHINV'.TYPRENU=TBT.'RENU' ; Rrk .'METHINV'.IMPINV=TBT.'nimpr' ; Rrk .'METHINV'.NITMAX=NTIT ; Rrk .'METHINV'.PRECOND=3 ; Rrk .'METHINV'.'FCPRECI' = FCPRECI ; Rrk .'METHINV'.'FCPRECT' = FCPRECT ; Rrk .'METHINV'.'CALPREC' = calprec ; Rrk .'METHINV'.RESID = EPSS ; Rre .inco = tic ; Rre .'METHINV'.TYPINV=TBT.'TYPINV' ; Rre .'METHINV'.TYPRENU=TBT.'RENU' ; Rre .'METHINV'.IMPINV=TBT.'nimpr' ; Rre .'METHINV'.NITMAX=NTIT ; Rre .'METHINV'.PRECOND=3 ; Rre .'METHINV'.'FCPRECI' = FCPRECI ; Rre .'METHINV'.'FCPRECT' = FCPRECT ; Rre .'METHINV'.'CALPREC' = calprec ; Rre .'METHINV'.RESID = EPSS ; *---------------------------------------------------------------------- * Definition du minimum pour recalcul du preconditionnement * *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * 'SI' ( 'NON' tbt.'UTILPREC' ) ; * Rrk .'MINPREC' = Rrk .'METHINV'.NITMAX ; * Rre .'MINPREC' = Rre .'METHINV'.NITMAX ; * 'FINSI' ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Si (exist tic 'KN') ; Sinon ; Finsi ; Si (exist tic 'KNM') ; Sinon ; Finsi ; Si(exist tic 'Sk') ; Sinon ; Finsi ; Si (exist tic 'EN') ; Sinon ; Finsi ; *mess ' EN OK ' ; Si (exist tic 'ENM') ; Sinon ; Finsi ; Si(exist tic 'Se') ; Sinon ; Finsi ; Si (exist tic 'NUEFF') ; Sinon ; list tic.'NUEFF' ; Finsi ; * *mess ' Fin preparation KEPSILON ' ; * 'FINSI' ; 'FINSI' ; *------------------------------------------------------------ *-- EQUATIONS SUR LA TEMPERATURE FLUIDE TF * Formulation non conservative Decentrement SUPG * Termes sources : STF correspond a dP/dt * 'ECHI' partie convective de l'echange paroi * Le modele concerne est PAROIC1 * ATTENTION : division par RHO.CP * Les parois imposees sont aussi traitees par ECHI * TRTF=VRAI On range la table 'rtf' dans la table 'rv' pour bénéficier * du parallélisme par équation de EXEC * TRTF=FAUX On traite séparément 'rtf' donc séquentiellement 'SI' (TBT.'TRTF') ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'NOCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 1. 'UN' 'NUEFF' 0. 'INCO' 'TF' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'TF' 'OPTI' 'EFM1' 'CENTREE' 'ZONE' $vtf 'OPER' 'FIMP' 'STF' 'INCO' 'TF' 'OPTI' 'EFM1' 'CENTREE' 'IMPL' 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'TFNM' DTX 'INCO' 'TF' ; 'SINON' ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'NOCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 1. 'UN' 'NUEFF' 0. 'INCO' 'TF' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'TF' 'OPTI' 'EFM1' 'CENTREE' 'ZONE' $vtf 'OPER' 'FIMP' 'STF' 'INCO' 'TF' 'OPTI' 'EFM1' 'CENTREE' 'IMPL' 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'TFNM' DTX 'INCO' 'TF' ; 'FINSI' ; rtf.'PASDETPS' = rv.'PASDETPS' ; 'SI' TBT.'TPAROIF' ; 'SI' TBT.'THERCO' ; rtf = 'EQEX' rtf 'OPTI' 'EF' 'CENTREE' 'IMPL' rtf = 'EQEX' rtf 'OPTI' 'EF' 'CENTREE' 'IMPL' 'SINON' ; rtf = 'EQEX' rtf 'OPTI' 'EFM1' 'CENTREE' 'IMPL' 'FINSI' ; 'FINSI' ; * XFIMP 4 Tf ; Flux de Chaleur imposés 'SI' TFIMP ; ifimp=INDEX (rxt.'XFIMP') ; REPETER BBFIMP NBFIMP ; Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ; $mfpi=Bfimp.'$mfpi' ; CKqt =(Bfimp.'Kqt') ; rtf = 'EQEX' rtf 'OPTI' 'EFM1' 'CENTREE' 'IMPL' 'ZONE' $mfpi 'OPER' 'FIMP' CKqt 'INCO' 'TF' ; FIN BBFIMP ; 'FINSI' ; * XFIMP 4 Tf ; Flux de Chaleur imposés 'SI' TTIMP ; itimp=INDEX (rxt.'TIMP') ; REPETER BBTIMP NBTIMP ; Btimp=rxt.'TIMP'.(itimp.&BBTIMP) ; $mtpi=Btimp.'$mtpi' ; CKHE1 =(Btimp.'KHE1') ; CTBP1 =(Btimp.'TBP1') ; rtf = 'EQEX' rtf 'OPTI' 'EFM1' 'CENTREE' 'IMPL' 'ZONE' $mtpi 'OPER' 'ECHI' CKHE1 CTBP1 'INCO' 'TF' ; FIN BBTIMP ; 'FINSI' ; 'SI' TBT.'TECHANP' ; rtf = 'EQEX' rtf 'OPTI' 'EFM1' 'CENTREE' 'IMPL' 'ZONE' $mtp0 'OPER' 'ECHI' 'KHE0' 'TBP0' 'INCO' 'TF' ; 'FINSI' ; * - Initialisation du terme Source STF Si (non(exist tic 'STF')); tic.'STF' = 0.0 ; Finsi ; rtf.inco = tic ; rtf.'METHINV'.TYPINV=TBT.'TYPINV' ; rtf.'METHINV'.TYPRENU=TBT.'RENU' ; rtf.'METHINV'.IMPINV=TBT.'nimpr' ; rtf.'METHINV'.NITMAX=NTIT ; rtf.'METHINV'.PRECOND=3 ; rtf.'METHINV'.'FCPRECI' = FCPRECI ; rtf.'METHINV'.'FCPRECT' = FCPRECT ; rtf.'METHINV'.'CALPREC' = calprec ; rtf.'METHINV'.RESID = EPSS ; *---------------------------------------------------------------------- * Definition du minimum pour recalcul du preconditionnement * *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * 'SI' ( 'NON' tbt.'UTILPREC' ) ; * rtf.'MINPREC' = rtf.'METHINV'.NITMAX ; * 'FINSI' ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *---------------------------------------------------------- * ---- EQUATION SUR LA DENSITE DE VAPEUR * Formulation conservative - Decentrement SUPG * BRECHE : traitee comme CLIM * CONDENSATION : traitee par 'ECHI' sur modele PAROIC * TRrvap=VRAI On range la table 'Rrrvap' dans la table 'rv' pour bénéficier * du parallélisme par équation de EXEC * TRrvap=FAUX On traite séparément 'Rrvap' donc séquentiellement 'SI' TBT.'VAPEUR' ; 'SI' (TBT.'TRrvap') ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0. 'INCO' 'RVP' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RVP' 'OPTI' 'EFM1' 'CENTREE' 'SINON' ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0. 'INCO' 'RVP' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RVP' 'OPTI' 'EFM1' 'CENTREE' 'FINSI' ; Rrvap.'PASDETPS' = rv.'PASDETPS' ; 'SI' TBT.'TPAROIF' ; Rrvap = 'EQEX' Rrvap 'OPTI' 'EFM1' 'CENTREE' 'FINSI' ; 'SI' TTIMP ; itimp=INDEX (rxt.'TIMP') ; REPETER BBTIMP NBTIMP ; Btimp=rxt.'TIMP'.(itimp.&BBTIMP) ; $mtpi=Btimp.'$mtpi' ; CKKC1 =Btimp.'KKC1' ; CROVI1=Btimp.'ROVI1' ; Rrvap = 'EQEX' Rrvap 'OPTI' 'EFM1' 'CENTREE' 'ZONE' $mtpi 'OPER' 'ECHI' CKKC1 CROVI1 'INCO' 'RVP' ; FIN BBTIMP ; 'FINSI' ; 'SI' TBT.'TECHANP' ; Rrvap = 'EQEX' Rrvap 'OPTI' 'EFM1' 'CENTREE' 'FINSI' ; * XFIMP 4 RVP ; Flux de masse vapeur imposés 'SI' TFIMP ; ifimp=INDEX (rxt.'XFIMP') ; REPETER BBFIMP NBFIMP ; Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ; $mfpi=Bfimp.'$mfpi' ; CKqeau =(Bfimp.'Kqeau') ; Rrvap = 'EQEX' Rrvap 'OPTI' 'EFM1' 'CENTREE' 'IMPL' 'ZONE' $mfpi 'OPER' 'FIMP' CKqeau 'INCO' 'RVP' ; FIN BBFIMP ; 'FINSI' ; * XFIMP 4 RVP ; Flux de masse vapeur imposés Rrvap.inco = tic ; Rrvap.'METHINV'.TYPINV=TBT.'TYPINV' ; Rrvap.'METHINV'.TYPRENU=TBT.'RENU' ; Rrvap.'METHINV'.IMPINV=TBT.'nimpr' ; Rrvap.'METHINV'.NITMAX=NTIT ; Rrvap.'METHINV'.PRECOND=3 ; Rrvap.'METHINV'.'FCPRECI' = FCPRECI ; Rrvap.'METHINV'.'FCPRECT' = FCPRECT ; Rrvap.'METHINV'.'CALPREC' = calprec ; Rrvap.'METHINV'.RESID = EPSS ; *---------------------------------------------------------------------- * Definition du minimum pour recalcul du preconditionnement * *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * 'SI' ( 'NON' tbt.'UTILPREC' ) ; * Rrvap.'MINPREC' = Rrvap.'METHINV'.NITMAX ; * 'FINSI' ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 'FINSI' ; *---------------------------------------------------------- * EQUATIONS SUR LA DENSITE HELIUM * Formulation conservative - Decentrement SUPG * BRECHE : condition aux limites * TRrhe=VRAI On range la table 'Rrhe' dans la table 'rv' pour bénéficier * du parallélisme par équation de EXEC * TRrhe=FAUX On traite séparément 'Rrhe' donc séquentiellement 'SI' TBT.'THE' ; 'SI' (TBT.'TRrhe') ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RHE' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RHE' 'OPTI' 'EFM1' 'CENTREE' 'SINON' ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RHE' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RHE' 'OPTI' 'EFM1' 'CENTREE' 'FINSI' ; Rrhe.'PASDETPS' = rv.'PASDETPS' ; * XFIMP 4 RHE ; Flux de masse Hélium imposé 'SI' TFIMP ; ifimp=INDEX (rxt.'XFIMP') ; REPETER BBFIMP NBFIMP ; Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ; $mfpi=Bfimp.'$mfpi' ; CKqhe =(Bfimp.'Kqhe') ; Rrhe = 'EQEX' Rrhe 'OPTI' 'EFM1' 'CENTREE' 'IMPL' 'ZONE' $mfpi 'OPER' 'FIMP' CKqhe 'INCO' 'RHE' ; FIN BBFIMP ; 'FINSI' ; * XFIMP 4 RHE ; Flux de masse Hélium imposé Rrhe.inco = tic ; Rrhe.'METHINV'.TYPINV=TBT.'TYPINV' ; Rrhe.'METHINV'.TYPRENU=TBT.'RENU' ; Rrhe.'METHINV'.IMPINV=TBT.'nimpr' ; Rrhe.'METHINV'.NITMAX=NTIT ; Rrhe.'METHINV'.PRECOND=3 ; Rrhe.'METHINV'.'FCPRECI' = FCPRECI ; Rrhe.'METHINV'.'FCPRECT' = FCPRECT ; Rrhe.'METHINV'.'CALPREC' = calprec ; Rrhe.'METHINV'.RESID = EPSS ; *---------------------------------------------------------------------- * Definition du minimum pour recalcul du preconditionnement * *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * 'SI' ( 'NON' tbt.'UTILPREC' ) ; * Rrhe.'MINPREC' = Rrhe.'METHINV'.NITMAX ; * 'FINSI' ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 'FINSI' ; *---------------------------------------------------------- * EQUATIONS SUR LA DENSITE HYDROGENE * Formulation conservative - Decentrement SUPG * BRECHE : condition aux limites * TRrh2=VRAI On range la table 'Rrh2' dans la table 'rv' pour bénéficier * du parallélisme par équation de EXEC * TRrh2=FAUX On traite séparément 'Rrh2' donc séquentiellement 'SI' TBT.'TH2' ; 'SI' (TBT.'TRrh2') ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RH2' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RH2' 'OPTI' 'EFM1' 'CENTREE' 'SINON' ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RH2' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RH2' 'OPTI' 'EFM1' 'CENTREE' 'FINSI' ; Rrh2.'PASDETPS' = rv.'PASDETPS' ; * XFIMP 4 RH2 ; Flux de masse H2 imposé 'SI' TFIMP ; ifimp=INDEX (rxt.'XFIMP') ; REPETER BBFIMP NBFIMP ; Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ; $mfpi=Bfimp.'$mfpi' ; CKqh2 =(Bfimp.'Kqh2') ; Rrh2 = 'EQEX' Rrh2 'OPTI' 'EFM1' 'CENTREE' 'IMPL' 'ZONE' $mfpi 'OPER' 'FIMP' CKqh2 'INCO' 'RH2' ; FIN BBFIMP ; 'FINSI' ; * XFIMP 4 RH2 ; Flux de masse H2 imposé Rrh2.inco = tic ; Rrh2.'METHINV'.TYPINV=TBT.'TYPINV' ; Rrh2.'METHINV'.TYPRENU=TBT.'RENU' ; Rrh2.'METHINV'.IMPINV=TBT.'nimpr' ; Rrh2.'METHINV'.NITMAX=NTIT ; Rrh2.'METHINV'.PRECOND=3 ; Rrh2.'METHINV'.'FCPRECI' = FCPRECI ; Rrh2.'METHINV'.'FCPRECT' = FCPRECT ; Rrh2.'METHINV'.'CALPREC' = calprec ; Rrh2.'METHINV'.RESID = EPSS ; *---------------------------------------------------------------------- * Definition du minimum pour recalcul du preconditionnement * *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * 'SI' ( 'NON' tbt.'UTILPREC' ) ; * Rrh2.'MINPREC' = Rrh2.'METHINV'.NITMAX ; * 'FINSI' ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 'FINSI' ; *---------------------------------------------------------- * EQUATIONS SUR LA DENSITE OXYGENE * Formulation conservative - Decentrement SUPG * BRECHE : condition aux limites * TRro2=VRAI On range la table 'Rro2' dans la table 'rv' pour bénéficier * du parallélisme par équation de EXEC * TRro2=FAUX On traite séparément 'Rro2' donc séquentiellement 'SI' TBT.'TO2' ; 'SI' (TBT.'TRro2') ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RO2' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RO2' 'OPTI' 'EFM1' 'CENTREE' 'SINON' ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RO2' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RO2' 'OPTI' 'EFM1' 'CENTREE' 'FINSI' ; Rro2.'PASDETPS' = rv.'PASDETPS' ; * XFIMP 4 RO2 ; Flux de masse O2 imposé 'SI' TFIMP ; ifimp=INDEX (rxt.'XFIMP') ; REPETER BBFIMP NBFIMP ; Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ; $mfpi=Bfimp.'$mfpi' ; CKqo2 =(Bfimp.'Kqo2') ; Rro2 = 'EQEX' Rro2 'OPTI' 'EFM1' 'CENTREE' 'IMPL' 'ZONE' $mfpi 'OPER' 'FIMP' CKqo2 'INCO' 'RO2' ; FIN BBFIMP ; 'FINSI' ; * XFIMP 4 RO2 ; Flux de masse O2 imposé Rro2.inco = tic ; Rro2.'METHINV'.TYPINV=TBT.'TYPINV' ; Rro2.'METHINV'.TYPRENU=TBT.'RENU' ; Rro2.'METHINV'.IMPINV=TBT.'nimpr' ; Rro2.'METHINV'.NITMAX=NTIT ; Rro2.'METHINV'.PRECOND=3 ; Rro2.'METHINV'.'FCPRECI' = FCPRECI ; Rro2.'METHINV'.'FCPRECT' = FCPRECT ; Rro2.'METHINV'.'CALPREC' = calprec ; Rro2.'METHINV'.RESID = EPSS ; *---------------------------------------------------------------------- * Definition du minimum pour recalcul du preconditionnement * *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * 'SI' ( 'NON' tbt.'UTILPREC' ) ; * Rro2.'MINPREC' = Rro2.'METHINV'.NITMAX ; * 'FINSI' ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 'FINSI' ; *---------------------------------------------------------- * EQUATIONS SUR LA DENSITE AZOTE * Formulation conservative - Decentrement SUPG * BRECHE : condition aux limites * TRrn2=VRAI On range la table 'Rrn2' dans la table 'rv' pour bénéficier * du parallélisme par équation de EXEC * TRrn2=FAUX On traite séparément 'Rrn2' donc séquentiellement 'SI' TBT.'TN2' ; 'SI' (TBT.'TRrn2') ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0. 'INCO' 'RN2' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RN2' 'OPTI' 'EFM1' 'CENTREE' 'SINON' ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0. 'INCO' 'RN2' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RN2' 'OPTI' 'EFM1' 'CENTREE' 'FINSI' ; Rrn2.'PASDETPS' = rv.'PASDETPS' ; * 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUT' 'UN' 0.0 'INCO' 'RN2' *mess ' Option NOCONS RN2 pour test branchee AREVOIR ' ; * XFIMP 4 RN2 ; Flux de masse N2 imposé 'SI' TFIMP ; ifimp=INDEX (rxt.'XFIMP') ; REPETER BBFIMP NBFIMP ; Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ; $mfpi=Bfimp.'$mfpi' ; CKqn2 =(Bfimp.'Kqn2') ; Rrn2 = 'EQEX' Rrn2 'OPTI' 'EFM1' 'CENTREE' 'IMPL' 'ZONE' $mfpi 'OPER' 'FIMP' CKqn2 'INCO' 'RN2' ; FIN BBFIMP ; 'FINSI' ; * XFIMP 4 RN2 ; Flux de masse N2 imposé Rrn2.inco = tic ; Rrn2.'METHINV'.TYPINV=TBT.'TYPINV' ; Rrn2.'METHINV'.TYPRENU=TBT.'RENU' ; Rrn2.'METHINV'.IMPINV=TBT.'nimpr' ; Rrn2.'METHINV'.NITMAX=NTIT ; Rrn2.'METHINV'.PRECOND=3 ; Rrn2.'METHINV'.'FCPRECI' = FCPRECI ; Rrn2.'METHINV'.'FCPRECT' = FCPRECT ; Rrn2.'METHINV'.'CALPREC' = calprec ; Rrn2.'METHINV'.RESID = EPSS ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * 'SI' ( 'NON' tbt.'UTILPREC' ) ; * Rrn2.'MINPREC' = Rrn2.'METHINV'.NITMAX ; * 'FINSI' ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 'FINSI' ; *---------------------------------------------------------- * EQUATIONS SUR LA DENSITE DIOXYDE DE CARBONE * Formulation conservative - Decentrement SUPG * BRECHE : condition aux limites * TRrco2=VRAI On range la table 'Rrco2' dans la table 'rv' pour bénéficier * du parallélisme par équation de EXEC * TRrco2=FAUX On traite séparément 'Rrco2' donc séquentiellement 'SI' TBT.'TCO2' ; 'SI' (TBT.'TRrco2') ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RCO2' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RCO2' 'OPTI' 'EFM1' 'CENTREE' 'SINON' ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RCO2' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RCO2' 'OPTI' 'EFM1' 'CENTREE' 'FINSI' ; Rrco2.'PASDETPS' = rv.'PASDETPS' ; * XFIMP 4 RCO2 ; Flux de masse CO2 imposé 'SI' TFIMP ; ifimp=INDEX (rxt.'XFIMP') ; REPETER BBFIMP NBFIMP ; Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ; $mfpi=Bfimp.'$mfpi' ; CKqco2 =(Bfimp.'Kqco2') ; Rrco2 = 'EQEX' Rrco2 'OPTI' 'EFM1' 'CENTREE' 'IMPL' 'ZONE' $mfpi 'OPER' 'FIMP' CKqco2 'INCO' 'RCO2'; FIN BBFIMP ; 'FINSI' ; * XFIMP 4 RCO2 ; Flux de masse CO2 imposé Rrco2.inco = tic ; Rrco2.'METHINV'.TYPINV=TBT.'TYPINV' ; Rrco2.'METHINV'.TYPRENU=TBT.'RENU' ; Rrco2.'METHINV'.IMPINV=TBT.'nimpr' ; Rrco2.'METHINV'.NITMAX=NTIT ; Rrco2.'METHINV'.PRECOND=3 ; Rrco2.'METHINV'.'FCPRECI' = FCPRECI ; Rrco2.'METHINV'.'FCPRECT' = FCPRECT ; Rrco2.'METHINV'.'CALPREC' = calprec ; Rrco2.'METHINV'.RESID = EPSS ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * 'SI' ( 'NON' tbt.'UTILPREC' ) ; * Rrco2.'MINPREC' = Rrco2.'METHINV'.NITMAX ; * 'FINSI' ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 'FINSI' ; *---------------------------------------------------------- * EQUATIONS SUR LA DENSITE DE l'AIR (Nième équation) TCO2AIR * Formulation conservative - Decentrement SUPG * BRECHE : condition aux limites * TRrair=VRAI On range la table 'Rrair' dans la table 'rv' pour bénéficier * du parallélisme par équation de EXEC * TRrair=FAUX On traite séparément 'Rrair' donc séquentiellement 'SI' TBT.'TAIR' ; 'SI' (TBT.'TRrair') ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RAIR' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RAIR' 'OPTI' 'EFM1' 'CENTREE' 'SINON' ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RAIR' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RAIR' 'OPTI' 'EFM1' 'CENTREE' 'FINSI' ; Rrair.'PASDETPS' = rv.'PASDETPS' ; * XFIMP 4 RAIR ; Flux de masse Air imposé 'SI' TFIMP ; ifimp=INDEX (rxt.'XFIMP') ; REPETER BBFIMP NBFIMP ; Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ; $mfpi=Bfimp.'$mfpi' ; CKqair =(Bfimp.'Kqair') ; Rrair = 'EQEX' Rrair 'OPTI' 'EFM1' 'CENTREE' 'IMPL' 'ZONE' $mfpi 'OPER' 'FIMP' CKqair 'INCO' 'RAIR'; FIN BBFIMP ; 'FINSI' ; * XFIMP 4 RCO2 ; Flux de masse CO2 imposé Rrair.inco = tic ; Rrair.'METHINV'.TYPINV=TBT.'TYPINV' ; Rrair.'METHINV'.TYPRENU=TBT.'RENU' ; Rrair.'METHINV'.IMPINV=TBT.'nimpr' ; Rrair.'METHINV'.NITMAX=NTIT ; Rrair.'METHINV'.PRECOND=3 ; Rrair.'METHINV'.'FCPRECI' = FCPRECI ; Rrair.'METHINV'.'FCPRECT' = FCPRECT ; Rrair.'METHINV'.'CALPREC' = calprec ; Rrair.'METHINV'.RESID = EPSS ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * 'SI' ( 'NON' tbt.'UTILPREC' ) ; * Rrair.'MINPREC' = Rrair.'METHINV'.NITMAX ; * 'FINSI' ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 'FINSI' ; *---------------------------------------------------------- * EQUATIONS SUR LA DENSITE MONOXYDE DE CARBONE * Formulation conservative - Decentrement SUPG * BRECHE : condition aux limites * TRrco=VRAI On range la table 'Rrco' dans la table 'rv' pour bénéficier * du parallélisme par équation de EXEC * TRrco=FAUX On traite séparément 'Rrco' donc séquentiellement 'SI' TBT.'TCO' ; 'SI' (TBT.'TRrco') ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RCO' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RCO' 'OPTI' 'EFM1' 'CENTREE' 'SINON' ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' TBT.'FCONS' * 'ZONE' $vtf 'OPER' 'TSCA' 'NUEFF' 'UN' 0.0 'INCO' 'RCO' 'ZONE' $vtf 'OPER' 'TSCA' LCTSCA 'INCO' 'RCO' 'OPTI' 'EFM1' 'CENTREE' 'FINSI' ; Rrco.'PASDETPS' = rv.'PASDETPS' ; * XFIMP 4 RCO ; Flux de masse CO imposé 'SI' TFIMP ; ifimp=INDEX (rxt.'XFIMP') ; REPETER BBFIMP NBFIMP ; Bfimp=rxt.'XFIMP'.(ifimp.&BBFIMP) ; $mfpi=Bfimp.'$mfpi' ; CKqco =(Bfimp.'Kqco') ; Rrco = 'EQEX' Rrco 'OPTI' 'EFM1' 'CENTREE' 'IMPL' 'ZONE' $mfpi 'OPER' 'FIMP' CKqco 'INCO' 'RCO' ; FIN BBFIMP ; 'FINSI' ; * XFIMP 4 RCO ; Flux de masse CO imposé Rrco.inco = tic ; Rrco.'METHINV'.TYPINV=TBT.'TYPINV' ; Rrco.'METHINV'.TYPRENU=TBT.'RENU' ; Rrco.'METHINV'.IMPINV=TBT.'nimpr' ; Rrco.'METHINV'.NITMAX=NTIT ; Rrco.'METHINV'.PRECOND=3 ; Rrco.'METHINV'.'FCPRECI' = FCPRECI ; Rrco.'METHINV'.'FCPRECT' = FCPRECT ; Rrco.'METHINV'.'CALPREC' = calprec ; Rrco.'METHINV'.RESID = EPSS ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * 'SI' ( 'NON' tbt.'UTILPREC' ) ; * Rrco.'MINPREC' = Rrco.'METHINV'.NITMAX ; * 'FINSI' ; *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 'FINSI' ; *---------------------------------------------------------- * EQUATION DE LA CHALEUR POUR LA THERMIQUE PAROI TP * CONDENSATION ET CONVECTION : densite de flux imposee FIMP * sur modele PAROIC1 * 'SI' TBT.'THERMP' ; 'SI' TBT.'THERCO' ; rtp = rtf ; 'SINON' ; rtp.'METHINV'.TYPINV=2 ; rtp.'METHINV'.TYPRENU=TBT.'RENU' ; rtp.'METHINV'.IMPINV=TBT.'nimpr' ; rtp.'METHINV'.NITMAX=NTIT ; rtp.'METHINV'.PRECOND=3 ; rtp.'METHINV'.'FCPRECI' = FCPRECI ; rtp.'METHINV'.'FCPRECT' = FCPRECT ; rtp.'METHINV'.'CALPREC' = calprec ; rtp.'METHINV'.RESID = EPSS ; 'FINSI' ; 'SI' (NON TPAROIS) ; $vtp=GEO.'$vtp' ; rtp= 'EQEX' rtp 'OPTI' TBT.'FEF' TBT.'FIMPL' 'CENTREE' 'ZONE' $vtp 'OPER' 'LAPN' 'LAMBDA' 'INCO' 'TP' 'OPTI' 'EFM1' 'CENTREE' 'ZONE' $vtp 'OPER' 'DFDT' 'ROCP' 'TPNM' DTX 'INCO' 'TP'; 'SINON' ; ipr=index (rxt.'PAROIS') ; Repeter BPRS NPAR ; Parois=rxt.'PAROIS'.(ipr.&BPRS) ; $vtpi=GEO.(ipr.&BPRS).'$vtp' ; rtp= 'EQEX' rtp 'OPTI' TBT.'FEF' TBT.'FIMPL' 'CENTREE' 'ZONE' $vtpi 'OPER' 'LAPN' CLAMBDA 'INCO' 'TP' 'OPTI' 'EFM1' 'CENTREE' 'ZONE' $vtpi 'OPER' 'DFDT' CROCP 'TPNM' DTX 'INCO' 'TP'; FIN BPRS ; 'FINSI' ; 'SI' TBT.'ECHEXT' ; hxtc=tic.'HEXT' ; txtc=tic.'TPEXT' ; Si(EGA thx 'CHPOINT') ; Finsi ; ; Si(EGA ttx 'CHPOINT') ; Finsi ; tic.'HEXTc'=hxtc ; tic.'TPEXTc'=txtc ; rtp= 'EQEX' rtp 'OPTI' 'EFM1' 'CENTREE' 'FINSI' ; 'SI' TBT . 'TPAROIF' ; 'SI' TBT . 'THERCO' ; rtp = 'EQEX' rtp 'OPTI' 'EF' 'CENTREE' 'IMPL' rtp = 'EQEX' rtp 'OPTI' 'EF' 'CENTREE' 'IMPL' 'SINO' ; 'SI' (TBT . 'VAPEUR') ; rtp = 'EQEX' rtp 'OPTI' 'EFM1' 'CENTREE' 'SINO' ; rtp = 'EQEX' rtp 'OPTI' 'EFM1' 'CENTREE' 'FINSI' ; 'FINSI' ; 'FINSI' ; rtp.'PASDETPS' = rv.'PASDETPS' ; rtp.inco = tic ; 'SI' TBT.'THERCO'; rtf = rtp ; 'FINSI' ; 'FINSI' ; *----------------------------------------------------------------------- * TRAITEMENT DE LA CONDENSATION EN MASSE * Modif FP 18/05/00. 'SI' (TBT.'VERSION' '>EG' 1) ; * Variables : * ----------- * rrliq : table de résolution. * Les variables ci-dessous sont dans la bable des inconnues tic. * RLIQ : masse volumique de liquide en suspension à l'instant N. * RLIQM : masse volumique de liquide drainé à l'instant N - 1. * RBRO : masse volumique de liquide en suspension à l'instant N. * SLIQ : terme source lié à la formation de liquide en suspension. * SRVL : terme source dans l'équation sur la masse volumique de * vapeur (SRVL = -SLIQ). * STL : terme source dans l'équation de la température * (STL = Lv*SLIQ/Rho/Cp). 'SI' ('EXISTE' tic 'RLIQ'); 'SINON'; 'FINSI'; 'SI' ('EXISTE' tic 'RBRO'); 'SINON'; 'FINSI'; 'FINSI'; *----------------------------------------------------------------------- * TRAITEMENT DE L'ASPERSION C. CAROLI * 'SI' TBT.'ASPER' ; ********************** EQEX VN + UN *********************** * nup = 1.00e-20 ; nup = 1.00e-10 ; rod = rxt.'rod' ; gdrz = (-9.81 '*' (rod-Rho0) '/' rod) ; 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'ZONE' $vtf 'OPER' 'NS' 1. 'VN' nup 'GDR' 'INCO' 'VN' 'OPTI' 'EFM1' 'CENTREE' * 'ZONE' $vtf 'OPER' 'DFDT' 'KDIS' 'UNM' 1.0 'INCO' 'VN' * 'ZONE' $vtf 'OPER' 'PENCECHI' 'KDIS' 'UNM' 1.0 'INCO' 'VN' 'ZONE' $vtf 'OPER' 'PENCECHI' 'KDIS' 'UN' 1.0 'INCO' 'VN' 'OPTI' 'EFM1' 'CENTREE' * Utilisé par PENCECHI rvn . 'TBT' = tbt ; 'SI' DIM3D ; rvn = 'EQEX' rvn 'CLIM' 'VN' 'UIMP' toitf 0.0 'VN' 'VIMP' toitf 0.0 'VN' 'WIMP' toitf 0.0 'VN' 'UIMP' aspinj 0.0 'VN' 'VIMP' aspinj 0.0 'VN' 'WIMP' aspinj vzinj ; 'SINON' ; rvn = 'EQEX' rvn 'CLIM' 'VN' 'UIMP' toitf 0.0 'VN' 'VIMP' toitf 0.0 'VN' 'UIMP' aspinj 0.0 'VN' 'VIMP' aspinj vzinj ; 'FINSI' ; rv = 'EQEX' rv 'OPTI' 'EFM1' 'CENTREE' * 'ZONE' $vtf 'OPER' 'PENCECHI' 'KGAS' 'VNM' 1.0 'INCO' 'UN' ; * 'ZONE' $vtf 'OPER' 'DFDT' 'KGAS' 'VNM' 1.0 'INCO' 'UN' ; * Utilisé par PENCECHI rv . 'TBT' = tbt ; Si(exist tic 'VN'); Sinon; 'SI' DIM3D ; 'SINON' ; 'FINSI' ; Finsi ; Si(exist tic 'VNM'); Sinon; 'SI' DIM3D ; 'SINON' ; 'FINSI' ; Finsi; Si(exist tic 'GDR'); Sinon; 'SI' DIM3D ; 'SINON' ; 'FINSI' ; Finsi; Si(exist tic 'KDIS'); Sinon; Finsi; Si(exist tic 'KGAS'); Sinon; Finsi; rvn.'PASDETPS' = rv.'PASDETPS' ; rvn.inco = tic ; rvn.'METHINV'.TYPINV = TBT.'TYPINV' ; rvn.'METHINV'.TYPRENU=TBT.'RENU' ; rvn.'METHINV'.IMPINV = TBT.'nimpr' ; rvn.'METHINV'.NITMAX = NTIT ; rvn.'METHINV'.PRECOND = 3 ; rvn.'METHINV'.'FCPRECI' = FCPRECI ; rvn.'METHINV'.'FCPRECT' = FCPRECT ; rvn.'METHINV'.'CALPREC' = calprec ; rvn.'METHINV'.RESID = 1.0e-10 ; TBT.'RVN' = rvn ; ********************** EQEX XD **************************** 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'NOCONS' 'OPTI' 'EFM1' 'CENTREE' 'ZONE' $vtf 'OPER' 'FIMP' 'SXD' 'INCO' 'XD' 'OPTI' 'EFM1' 'CENTREE' 'ZONE' $vtf 'OPER' 'DFDT' 1.0 'XDM' DTX 'INCO' 'XD' ; rxd = 'EQEX' rxd 'CLIM' 'XD' 'TIMP' toitf 0.0 'XD' 'TIMP' aspinj xdinj ; Si(exist tic 'XD'); Sinon ; Finsi ; Si(exist tic 'XDM'); Sinon ; Finsi ; Si(exist tic 'SXD'); Sinon ; Finsi ; rxd.'PASDETPS' = rv.'PASDETPS' ; rxd.inco = tic ; rxd.'METHINV'.TYPINV = TBT.'TYPINV' ; rxd.'METHINV'.TYPRENU=TBT.'RENU' ; rxd.'METHINV'.IMPINV = TBT.'nimpr' ; rxd.'METHINV'.NITMAX = NTIT ; rxd.'METHINV'.PRECOND = 3 ; rxd.'METHINV'.'FCPRECI' = FCPRECI ; rxd.'METHINV'.'FCPRECT' = FCPRECT ; rxd.'METHINV'.'CALPREC' = calprec ; rxd.'METHINV'.RESID = 1.0e-10 ; TBT.'RXD' = rxd ; ********************** EQEX DD **************************** 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'OPTI' 'EFM1' 'CENTREE' 'ZONE' $vtf 'OPER' 'FIMP' 'SDIA' 'INCO' 'DD' 'OPTI' 'EFM1' 'CENTREE' ; rdd = 'EQEX' rdd 'CLIM' 'DD' 'TIMP' toitf ddinj ; Si(exist tic 'DD'); Sinon; Finsi; Si(exist tic 'DDM'); Sinon; Finsi; Si(exist tic 'SDIA'); Sinon; Finsi; rdd.'PASDETPS' = rv.'PASDETPS' ; rdd.inco = tic ; rdd.'METHINV'.TYPINV = TBT.'TYPINV' ; rdd.'METHINV'.TYPRENU=TBT.'RENU' ; rdd.'METHINV'.IMPINV = TBT.'nimpr' ; rdd.'METHINV'.NITMAX = NTIT ; rdd.'METHINV'.PRECOND = 3 ; rdd.'METHINV'.'FCPRECI' = FCPRECI ; rdd.'METHINV'.'FCPRECT' = FCPRECT ; rdd.'METHINV'.'CALPREC' = calprec ; rdd.'METHINV'.RESID = 1.0e-10 ; TBT.'RDD' = rdd ; ********************** EQEX TD + TF *********************** 'OPTI' TBT.'FEF' TBT.'FIMPL' 'SUPG' 'OPTI' 'EFM1' 'CENTREE' * 'ZONE' $vtf 'OPER' 'DFDT' 'HDIS' 'TFNM' 1.0 'INCO' 'TD' * 'ZONE' $vtf 'OPER' 'PENCECHI' 'HDIS' 'TFNM' 1.0 'INCO' 'TD' 'ZONE' $vtf 'OPER' 'PENCECHI' 'HDIS' 'TF' 1.0 'INCO' 'TD' 'OPTI' 'EFM1' 'CENTREE' 'ZONE' $vtf 'OPER' 'FIMP' 'STD' 'INCO' 'TD' 'OPTI' 'EFM1' 'CENTREE' rtd = 'EQEX' rtd CLIM TD TIMP aspinj tdinj ; * Utilisation de tbt par PENCECHI rtd . 'TBT' = tbt ; rtf = 'EQEX' rtf 'OPTI' 'EFM1' 'CENTREE' * 'ZONE' $vtf 'OPER' 'PENCECHI' 'HGAS' 'TDM' 1.0 'INCO' 'TF' ; * 'ZONE' $vtf 'OPER' 'DFDT' 'HGAS' 'TDM' 1.0 'INCO' 'TF' ; * Utilisé par PENCECHI rtf . 'TBT' = tbt ; Si(exist tic 'TD'); Sinon; Finsi; Si(exist tic 'TDM'); Sinon; Finsi; Si(exist tic 'HDIS'); Sinon; Finsi; Si(exist tic 'HGAS'); Sinon; Finsi; Si(exist tic 'STD'); Sinon; Finsi; rtd.'PASDETPS' = rv.'PASDETPS' ; rtd.inco = tic ; rtd.'METHINV'.TYPINV = TBT.'TYPINV' ; rtd.'METHINV'.TYPRENU=TBT.'RENU' ; rtd.'METHINV'.IMPINV = TBT.'nimpr' ; rtd.'METHINV'.NITMAX = NTIT ; rtd.'METHINV'.PRECOND = 3 ; rtd.'METHINV'.'FCPRECI' = FCPRECI ; rtd.'METHINV'.'FCPRECT' = FCPRECT ; rtd.'METHINV'.'CALPREC' = calprec ; rtd.'METHINV'.RESID = 1.0e-10 ; TBT.'RTD' = rtd ; ********************** EQEX RVP + RHO ********************* Rrvap = 'EQEX' Rrvap 'OPTI' 'EFM1' 'CENTREE' 'ZONE' $vtf 'OPER' 'FIMP' 'SRVP' 'INCO' 'RVP' ; Si(exist tic 'SRVP'); Sinon; Finsi; 'FINSI' ; *------------------------------------------------------------- * FIN DE LA DISCRETISATION DES EQUATIONS EQEX *------------------------------------------------------------- ************************************* **** initialisations temporaires **** ************************************* Si(non(exist tic 'NUPADT')); tic.'NUPADT'=0 ; Finsi; * A/ Suivi temporel *------------------ * LTPS : liste des temps calcules (s) * LMAXU : module maximum de la vitesse (m/s) * Rhom : densite du mélange (kg/m3) * Rhomv : densite de vapeur dans le mélange (kg/m3) (Si VAPEUR VRAI) * Rhomvg: densite de vapeur + brouillard dans le mélange (kg/m3) * * Rhomhe: densite de helium dans le mélange (kg/m3) (Si THE VRAI) * Rhomh2: densite de h2 dans le mélange (kg/m3) (Si TH2 VRAI) * Rhomo2: densite de o2 dans le mélange (kg/m3) (Si TO2 VRAI) * Rhomn2: densite de n2 dans le mélange (kg/m3) (Si Tn2 VRAI) * Rhomco: densite de CO dans le mélange (kg/m3) (Si Tco VRAI) * Rhomco2 : densite de CO2 dans le mélange (kg/m3) (Si Tco2 VRAI) * Rhomco2 : densite de l'air dans le mélange (kg/m3) * Tfm : temperature moyenne du fluide (Celsius) * Tpm : Température moyenne paroi (Celsius) (Si THERMP VRAI) * Tpcm: Température ??? (Celsius) (Si TTIMP VRAI) * Qc : debit de condensation total (kg/s) (masse et paroi) * Econd : energie extraite par condensation (J/m3) * Hcond : enthalpie extraite par condensation (J/m3) * Econv : energie de convection (J/m3) * Easpe : energie extraite par l'aspersion (J/m3) (Si ASPER VRAI) * Haspe : enthalpie extraite par l'aspersion (J/m3) (Si ASPER VRAI) * Qaspe : debit aspersion (kg/s) (Si ASPER VRAI) * Remn : énergie interne spécifique du mélange (J/m3) * Rgpm : constante de gaz parfaits du mélange (J/kg/K) * Cvm Cpm Gamm : capacite calorifique du mélange (J/kg/K) et rapport * Roj : densite a l'injection (kg/m3) * Ltbp0 : température moyenne définie par l'utilisateur (TECHANP) * Calcul de la masse initiale REm0 = Rho0 '*' Cvm '*' (Tf0 '+' 273.15) ; Mrest = Rvap0 * Vtotal ; * Calcul de Econv initial Econvw = 0.0 ; Econv0 = 0.0 ; Ltbp0 = 0.0 ; 'SI'((TBT.'THERMP') et (TBT.'TPAROIF')); * Energie extraite du gaz par convection Tfpw = rxt.'TF0' ; Tbpw = rxt.'Tp0' ; Hconvw = rxt.'ECHAN' ; Surfw = GEO.'Sparoif' ; Econvw = Hconvw '*' (Tfpw '-' Tbpw) '*' Surfw ; *Mess '!!!!!!!!' ; *Mess ' Bizarre Bizarre Econvw n est valable qu à l initialisation'; *Mess '!!!!!!!!' ; 'FINSI' ; Econvi=0. ; 'SI' TTIMP ; itimp=INDEX (rxt.'TIMP') ; REPETER BBTIMP NBTIMP ; Btimp=rxt.'TIMP'.(itimp.&BBTIMP) ; * Energie extraite du gaz par convection Tfpi = rxt.'TF0' ; * Ltbpi = EXTR Btimp.'TIMP' 1 ; * Btimp.'Ltbpi'=Btimp.'Ltbpi' et (Prog Ltbpi); Hconvi = Btimp.'ECHAN' ; Surfi = Btimp.'Smtpi' ; Econvi = Econvi + (Hconvi '*' (Tfpi '-' Ltbpi) '*' Surfi) ; FIN BBTIMP ; 'FINSI' ; 'SI' TBT.'TECHANP' ; * Energie extraite du gaz par convection Tfp0 = rxt.'TF0' ; Ltbp0 = rxt.'ECHANP'.'TMUR' ; Hconv0 = rxt.'ECHANP'.'ECHAN' ; Surf0 = GEO.'Smtp0' ; Econv0 = Hconv0 '*' (Tfp0 '-' Ltbp0) '*' Surf0 ; 'FINSI' ; Econv = Econvw '+' Econvi '+' Econv0 ; *MESS 'Econv = ' Econv ; * Identification des LISTREELs tic.'Lg0D'= tic.'Lg0D' 'Rhom' 'h2 ' 'Rhom' 'o2 ' 'Rhom' 'n2 ' 'Rhom' 'co ' 'Rhom' 'co2 ' 'Rhom' 'air ' 'Rhom' 'vg ' 'Tfm ' ' ' 'Tpm ' ' ' 'Qc ' ' ' 'Econ' 'd ' 'Hcon' 'd ' 'Econ' 'v ' 'Easp' 'e ' 'Hasp' 'e ' 'Qasp' 'e ' 'Remn' ' ' 'Rgpm' ' ' 'Cvm ' ' ' 'Gamm' ' ' 'Cpm ' ' ' 'PT ' ' ' ); 'dPdt' ' ' 'Minj' ' ' 'Mcon' 'd ' 'Mres' 't ' 'Rliq' 'm ' 'Rbro' 'm ' 'Mliq' 'puis' 'Hliq' 'puis' 'drho' ' ' 'MdTf' ' ' 'mdTf' ' ' 'Mdra' 'ir '); * Valeur d'initialisation par défaut tic.'Li0D'= tic.'Li0D' Rh20 Ro20 Rn20 Rco0 Rco20 Rair0 Rvap0 Tf0 Tpm0 0. 0. 0. Econv 0. 0. 0. REm0 Rgpm Cvm Gamm Cpm PT0 ); 0. 0. 0. Mrest 0. 0. 0. 0. 0. 0. 0. 0.); * L'ajustement se fait à la fin du paragraphe B/ apres * avoir complété le tableau Lg0D (voir Ajustement) * Modif. FP 19/05/00 'SI' (TBT.'CONDMAS'); * Rliqm : Densité moyenne (rapportée au volume) du liquide * 'SI' ('NON' ('EXISTE' tic 'Rliqm')); * tic.'Rliqm' = 'PROG' ndli * 0.; * 'FINSI'; * 'SI' ('NON' ('EXISTE' tic 'Rbrom')); * tic.'Rbrom' = 'PROG' ndli * 0.; * 'FINSI'; 'FINSI'; Roj = Rho0 ; * PT : pression totale (Pa) * dPdt : variation temporelle de la pression (J/m3/s) * guj : vitesse injection (m/s) 1ère brèche * guj2: vitesse injection (m/s) 2ème brèche * Minj : masse totale injectee (kg) * Mcond : masse totale condensee (kg) * Mrest : masse de vapeur restante dans l'enceinte (kg) * Hj : enthalpie injection (J/Kg) * Ej : energie interne injection (J/Kg) * Emur : energie stockee dans le mur (J/Kg) 'SI' TBT.'THERMP' ; Emur0 = rxt.'ROCP' * (rxt.'Tp0' + 273.15) ; Si(non(exist tic 'Emur')); Finsi; 'FINSI' ; * * *------------------------------------------------------------ * Sauvegarde des corrections pour bilan 0D : on garde la cor- * rection si 0D ou le max et le min si multiD * Sur les especes : c'est MultiD * Sur Rho : c'est 0D * Sur Tf : c'est MultiD * tic.'drho' = 'PROG' ndli * 0.0 ; * tic.'MdTf' = 'PROG' ndli * 0.0 ; * tic.'mdTf' = 'PROG' ndli * 0.0 ; 'SI' TBT.'VAPEUR' ; * tic.'Mdrvap' = 'PROG' ndli * 0.0 ; 'FINSI' ; 'SI' TBT.'THE' ; * tic.'Mdrhe' = 'PROG' ndli * 0.0 ; 'FINSI' ; 'SI' TBT.'TH2' ; * tic.'Mdrh2' = 'PROG' ndli * 0.0 ; 'FINSI' ; 'SI' TBT.'TO2' ; * tic.'Mdro2' = 'PROG' ndli * 0.0 ; 'FINSI' ; 'SI' TBT.'TN2' ; * tic.'Mdrn2' = 'PROG' ndli * 0.0 ; 'FINSI' ; 'SI' TBT.'TCO' ; * tic.'Mdrco' = 'PROG' ndli * 0.0 ; 'FINSI' ; 'SI' TBT.'TCO2' ; * tic.'Mdrco2' = 'PROG' ndli * 0.0 ; 'FINSI' ; *Il y a toujours de l'air * tic.'Mdrair' = 'PROG' ndli * 0.0 ; *------------------------------------------------------------ * B/ CHPOINT *----------- 'SI' TBT.'THERMP' ; Si(exist tic 'TP') ; Sinon ; Finsi ; Si(exist tic 'TPNM'); Sinon ; Finsi ; 'FINSI' ; Si(exist tic 'TF'); Sinon ; Finsi ; Si(exist tic 'TFNM'); Sinon ; Finsi ; Si(exist tic 'RHO'); Sinon ; Finsi ; Si(exist tic 'RHONM'); Sinon ; Finsi ; * Cas avec Fonctions de PAROI 'SI' TBT.'FPAROI' ; Si(exist tic 'UET'); Sinon ; Finsi ; 'FINSI' ; * Cas avec Vapeur donc eventuellement condensation 'SI' TBT.'VAPEUR' ; Si(exist tic 'RVP') ; Sinon ; Finsi ; Si(exist tic 'ROVP') ; Sinon ; tic.'ROVP' = tic.'RVP' ; Finsi ; Si(exist tic 'RVPNM') ; Sinon ; Finsi ; Si(exist tic 'YVAP') ; Sinon ; Finsi ; 'FINSI' ; 'SI' TBT.'TPAROIF' ; Si (exist tic 'KKCW') ; Sinon ; Finsi ; 'SI' TBT.'VAPEUR' ; Si (exist tic 'ROVIW') ; Sinon ; tic.'ROVIW' = 'KCHT' GEO.'$paroif' 'SCAL' 'SOMMET' Finsi ; 'FINSI' ; Si (exist tic 'FHPW') ; Sinon ; Finsi ; 'FINSI' ; 'SI' TTIMP ; itimp=INDEX (rxt.'TIMP') ; REPETER BBTIMP NBTIMP ; Btimp=rxt.'TIMP'.(itimp.&BBTIMP) ; CKKC1=Btimp.'KKC1' ; Si (exist tic CKKC1) ; Sinon ; Finsi ; CKH1=Btimp.'KH1' ; Si (exist tic CKH1) ; Sinon ; Finsi ; 'SI' TBT.'VAPEUR' ; CROVI1=Btimp.'ROVI1' ; Si (exist tic CROVI1) ; Sinon ; Finsi ; 'FINSI' ; * CQc1=chai 'Qc1' &BBTIMP ; * CMcond1=chai 'Mcond1' &BBTIMP ; * tic.CQc1=Prog 0. ; * tic.CMcond1=Prog 0. ; CFHP1=Btimp.'FHP1' ; Si (exist tic CFHP1) ; Sinon ; Finsi ; *?tic.'Lg0D'=tic.'Lg0D' et ('MOTS' 'Mcon' 'd1 ' 'Qc1 ' ' '); *?tic.'Li0D'=tic.'Li0D' et ('PROG' 0. 0. ); FIN BBTIMP ; 'FINSI' ; * Fin Cas avec Vapeur donc eventuellement condensation 'SI' TBT.'TECHANP' ; Si (exist tic 'KKC0') ; Sinon ; Finsi ; Si (exist tic 'KH0') ; Sinon ; tic.'KH0' = 'KCHT' GEO.'$mtp0' 'SCAL' 'CENTRE' (rxt.'ECHANP'.'ECHAN') ; Finsi ; 'SI' TBT.'VAPEUR' ; Si (exist tic 'ROVI0') ; Sinon ; tic.'ROVI0' = 'KCHT' GEO.'$mtp0' 'SCAL' 'SOMMET' Finsi ; 'FINSI' ; Si (exist tic 'FHP0') ; Sinon ; Finsi ; 'FINSI' ; * Fin Cas avec Vapeur donc eventuellement condensation 'SI' TBT.'THE' ; Si(exist tic 'RHE'); Sinon ; Finsi ; Si(exist tic 'RHEM'); Sinon ; Finsi ; Si(exist tic 'YHE'); Sinon ; Finsi ; 'SINON' ; tic.'YHE' = 0. ; 'FINSI' ; 'SI' TBT.'TH2' ; Si(exist tic 'RH2'); Sinon ; Finsi ; Si(exist tic 'RH2M'); Sinon ; Finsi ; Si(exist tic 'YH2'); Sinon ; Finsi ; 'SINON' ; tic.'YH2' = 0. ; 'FINSI' ; 'SI' TBT.'TO2' ; Si(exist tic 'RO2'); Sinon ; Finsi ; Si(exist tic 'YO2'); Sinon ; Finsi ; 'SINON' ; tic.'YO2' = 0. ; 'FINSI' ; 'SI' TBT.'TN2' ; Si(exist tic 'RN2'); Sinon ; Finsi ; Si(exist tic 'RN2M'); Sinon ; Finsi ; Si(exist tic 'YN2'); Sinon ; Finsi ; 'SINON' ; tic.'YN2' = 0. ; 'FINSI' ; 'SI' TBT.'TCO2' ; Si(exist tic 'RCO2'); Sinon ; Finsi ; Si(exist tic 'RCO2M'); Sinon ; Finsi ; Si(exist tic 'YCO2'); Sinon ; Finsi ; 'SINON' ; tic.'YCO2' = 0. ; 'FINSI' ; *** 'SI' TBT.'TAIR' ; Si(exist tic 'RAIR'); Sinon ; Finsi ; *** Si(exist tic 'RAIRM'); *** tic.'RAIRM' = 'KCHT' $vtf 'SCAL' 'SOMMET' (tic.'RAIRM') ; *** Sinon ; *** tic.'RAIRM' = 'KCHT' $vtf 'SCAL' 'SOMMET' Rair0 ; *** Finsi ; Si(exist tic 'YAIR'); Sinon ; Finsi ; *** 'SINON' ; *** tic.'YAIR' = 'KCHT' $vtf 'SCAL' 'SOMMET' Yair0 ; *** 'FINSI' ; 'SI' TBT.'TCO' ; Si(exist tic 'RCO'); Sinon ; Finsi ; Si(exist tic 'RCOM'); Sinon ; Finsi ; Si(exist tic 'YCO'); Sinon ; Finsi ; 'SINON' ; tic.'YCO' = 0. ; 'FINSI' ; ***************************************************************** * Ajustement des LISTREELs * * On fait l'ajustement de listreel * * après avoir complété le tableau Lg0D * Lg0D=tic.'Lg0D' ; Li0D=tic.'Li0D' ; Repeter Bcli nlg0D ; Si(non(exist tic nm)) ; Sinon ; Si(< ndlj ndli) ; Finsi ; Si(> ndlj ndli) ; mess ' dimension de tic.' nm ' ' 'trop grande ' ; mess ndlj ' ' 'alors que ce devrait être' ' ' ndli ; mess ' On ne sait pas quoi faire ' ; erreur 5 ; Finsi ; Finsi ; Fin Bcli ; * Au tour des parois à T imposées * Pourquoi ajuster ? 'SI' TTIMP ; itimp=INDEX (rxt.'TIMP') ; REPETER BBTIMP NBTIMP ; Btimp=rxt.'TIMP'.(itimp.&BBTIMP) ; CMcond1=Btimp.'Mcond1' ; Si(< ndlj ndli) ; mess ' On ne devrait pas passer par là' ; Finsi ; Si(> ndlj ndli) ; mess ' dimension de tic.' cmcond1 ' ' 'trop grande' ' ' ; mess ndlj ' ' 'alors que ce devrait être' ' ' ndli ; mess ' On ne sait pas quoi faire ' ; erreur 5 ; Finsi ; 'FINSI' ; FIN BBTIMP ; 'FINSI' ; * Fin des parois à T imposées ***************************************************************** *------------------------------------------------------- * C/ FLOTTANT ou LOGIQUE Si(non(exist tic 'Tps')); tic.'Tps' = 0.0 ; Finsi ; Si(exist tic 'Rgp') ; sinon ; tic.'Rgp' = Rgp ; finsi ; Si(exist tic 'Rgpi') ; sinon ; syi=tic.'YHE' + tic.'YH2' + tic.'YO2' + tic.'YN2' + tic.'YCO2' + tic.'YCO' + tic.'YAIR' ; Yihe = tic.'YHE' * Rit ; Yih2 = tic.'YH2' * Rit ; Yio2 = tic.'YO2' * Rit ; Yin2 = tic.'YN2' * Rit ; Yico2= tic.'YCO2' * Rit ; Yico = tic.'YCO' * Rit ; Yiair= tic.'YAIR' * Rit ; Rgpi = (Rgair '*' Yiair) '+' (Rghe '*' Yihe ) '+' (Rgh2 '*' Yih2 ) '+' (Rgo2 '*' Yio2 ) '+' (Rgn2 '*' Yin2 ) '+' (Rgco '*' Yico ) '+' (Rgco2 '*' Yico2 ) ; tic.'Rgpi' = Rgpi ; finsi ; Si(exist tic 'Mu'); sinon ; tic.'Mu' = Mu ; finsi ; TBT.'RV'=rv ; TBT.'RRHO'=rrho ; 'SI' TBT.'VAPEUR' ; TBT.'Rrvap'=Rrvap ; 'FINSI' ; 'SI' TBT.'THE' ; TBT.'Rrhe'=Rrhe ; 'FINSI' ; 'SI' TBT.'TH2' ; TBT.'Rrh2'=Rrh2 ; 'FINSI' ; 'SI' TBT.'TO2' ; TBT.'Rro2'=Rro2 ; 'FINSI' ; 'SI' TBT.'TN2' ; TBT.'Rrn2'=Rrn2 ; 'FINSI' ; 'SI' TBT.'TCO2' ; TBT.'Rrco2'=Rrco2 ; 'FINSI' ; 'SI' TBT.'TAIR' ; TBT.'Rrair'=Rrair ; 'FINSI' ; 'SI' TBT.'TCO' ; TBT.'Rrco'=Rrco ; 'FINSI' ; TBT.'RTF'=rtf ; 'SI' TBT.'THERMP' ; TBT.'RTP'=rtp ; 'FINSI' ; Si (Exist TBT 'MODTURB') ; TBT.'Rrk'= Rrk ; TBT.'Rre'= Rre ; Finsi ; Finsi ; *-------------------------------------------------------- *-------------------------------------------------------- * D/ APERSION 'SI' TBT.'ASPER' ; GEO.'$aspinj'= $aspinj ; GEO.'$toitf' = $toitf ; 'FINSI' ; * RECOMBINEUR 'SI' TBT.'TRECOMB' ; TIC . 'RECOMB' = 'TABLE' ; 'REPETER' BCLREC NBREC ; TIC . 'RECOMB' . &BCLREC = 'TABLE' ; 'FIN' BCLREC ; * TIC . 'QIN_H2' = 'PROG' 0.0 ; * TIC . 'QIN_H2O' = 'PROG' 0.0 ; * TIC . 'QIN_O2' = 'PROG' 0.0 ; * TIC . 'QIN_N2' = 'PROG' 0.0 ; * TIC . 'QIN_HE' = 'PROG' 0.0 ; * TIC . 'QIN_CO2' = 'PROG' 0.0 ; * TIC . 'QIN_CO' = 'PROG' 0.0 ; * TIC . 'QOUT_H2' = 'PROG' 0.0 ; * TIC . 'QOUT_H2O' = 'PROG' 0.0 ; * TIC . 'QOUT_O2' = 'PROG' 0.0 ; * TIC . 'QOUT_N2' = 'PROG' 0.0 ; * TIC . 'QOUT_HE' = 'PROG' 0.0 ; * TIC . 'QOUT_CO2' = 'PROG' 0.0 ; * TIC . 'QOUT_CO' = 'PROG' 0.0 ; 'FINSI' ; 'FINSI' ; *** FIN PREPARATION - DEBUT ALGORITHME ****************** FINPROC;
© Cast3M 2003 - Tous droits réservés.
Mentions légales