$$$$ XBIF * XBIF PROCEDUR MAGN 98/12/30 21:15:27 3420 *X XBIF (Procedure) *X modele bifluide *X resolution d'equations de Navier-Stokes couplees DEBPROC XBIF ; ARGU RV*TABLE RVP*TABLE RVC*TABLE KF*FLOTTANT KP*FLOTTANT ; idime=vale 'DIME' ; si (ega idime 2) ; vnul=0. 0. ; sinon; vnul=0. 0. 0. ; finsi ; bidon = table ; GR=rv.'GR' ; ALFA=rv.'ALFA' ; ITMA=rv.'ITMA' ; FIDT=rv.'FIDT' ; KIZT=rv.'INCO' ; testpr=exist rv 'PRESSION' ; testdefo=exist rv 'DEFOR' ; si testdefo ; verdefo rv ; finsi ; si (non(exist rv 'HIST')) ; rv.'HIST'=bidon ; finsi ; HIST=rv.'HIST'; si (non(exist rv kizd)) ; kdia rv ; finsi ; si (non(exist rvc kizd)) ; kdia rvc ; finsi ; si (non(exist rvc kizc)) ; rvc.kizc=table 'KIZC' ; finsi ; si (non(exist rvc kizg)) ; rvc.kizg=table 'KIZG' ; finsi ; si (non(exist rv kizg)) ; rv.kizg=table 'KIZG' ; finsi ; KIZG=rv.'KIZG' ; si (non(exist rv kizg1)) ; rv.kizg1=table 'KIZG1' ; finsi ; KIZG1=rv.'KIZG1' ; KD=rv.'KIZD' ; si (exist rv kizc) ; KIZC=rv.'KIZC' ; sinon ; KIZC=table 'KIZC' ; rv.'KIZC'=KIZC ; finsi ; SI testpr ; dmn=rvp.'DOMAINE' ; rvp=rv.'PRESSION' ; U=KIZT.'UN' ; V=KIZT.'VN' ; Du=KD.'UN' ; Dv=KD.'VN' ; FV=RVC.'INCO'.'CN' ; si (non(exist rvp diagv)) ; rvp.diagv=Du ; finsi ; rvp.'KIZC' = kizc ; si (non(exist rvp 'MATC')) ; C=kmac rvp ; rvp.'MATC'=C ; finsi ; C=rvp.'MATC' ; P=kcht (rvp.domaine) SCAL CENTRE 0.; rvp.'PRESSION'=P ; GP=kcht (rvp.domaine) SCAL SOMMET 0.; FINSI ; si (exist rv 'DECDOM') ; decdom rv ; quitter xbif ; finsi ; diaga = DGSI $DOMTOT ; diagb = COPIE diaga ; diaga = NOMC diaga 'UX' ; diagb = NOMC diagb 'UY' ; diaga = CHAN 'ATTRIBUT' diaga 'NATURE' 'DIFFUS' ; diagb = CHAN 'ATTRIBUT' diagb 'NATURE' 'DIFFUS' ; diag0 = diaga ET diagb ; diag = kcht $DOMTOT vect sommet diag0 ; nbop=dime (rv.listoper) ; REPETER BLOC1 ITMA ; repeter bloc2 nbop ; klop &bloc2 rv ; fin bloc2 ; SI testpr ; dt=(rv.pasdetps.deltat)*ALFA ; rvp.deltat=dt ; P=rvp.'PRESSION' ; detr P ; f=KIZG.'UN' ; g=KIZG.'VN' ; g2=kops g '-' (kops diag '*' GR) ; f1=kops f '+' (kops diag '*' (kops KF '*' (kops U '-' V))) ; g1=kops g2 '+' (kops diag '*' (kops KP '*' (kops V '-' U))) ; dm1f=kops (kops f1 '/' Du) '-' (kops U '/' dt) ; P=kmf C dm1f ; detr dm1f ; kres rvp P ; rvp.'PRESSION'=P ; detr GP ; gp= kmtp C P ; GPF=gp ; RO=ROF/ROP ; GPP=kops RO '*' gp ; KIZG.'UN'=kops f1 '-' GPF ; KIZG.'VN'=kops g1 '-' GPP ; rset f vnul ; rset g vnul ; detr g2 ; detr f1 ; detr g1 ; dltt= rv.pasdetps.deltat ; FINSI ; avct KIZT KIZC (rv.pasdetps) KIZG KD HIST ALFA 'IMPR' FIDT ; si testdefo ; si (&bloc1 > itd) ; rvp.'PN'=elno (kcht dmn SCAL CENTRE P) dmn ; DEFO.'PN'=rvp.'PN' ; reponse = TDFO DEFO ; si (ega reponse vrai) ; DEFO.'MAIL' = KDEF DEFO.'VDEF' dmrv.MAILLAGE ; quitter XBIF ; finsi ; finsi ; finsi ; si (testpr) ; detr (KIZG.'UN') ; detr (KIZG.'VN') ; KIZG.'UN'=f ; KIZG.'VN'=g ; finsi ; VP = RV.'INCO'.'VN' ; RVC.1KONV.ARG1 = KSOF $DOMTOT VP ; RVC.1KONV.ARG2 = NOEL $DOMTOT VP ; klop 1 RVC 'MUSCL' ; rvc.pasdetps.deltat =dltt ; avct (RVC.'INCO') (RVC.'KIZC') (rvc.pasdetps) (RVC.'KIZG') (RVC.'KIZD') (RVP.DOMAINE) (RVC.'ALFA') 'IMPR' (RVC.'FIDT') ; menage ; FIN BLOC1 ; si (testpr) ; rvp.'PRESSION'=kcht dmn scal centre P ; rvp.'PN'= elno dmn rvp.'PRESSION' ; rvp.gradp=GP ; finsi; FINPROC ;