Télécharger tube_scal_complet.dgibi
* fichier : tube_scal_complet.dgibi ************************************************************************ ************************************************************************ ****************************************************************** * Transport d'un scalaire dans un tube * * * * FORMULATION VF COMPRESSIBLE EXPLICITE/IMPLICITE * * SOLVEURS: UPWIND/CENTERED * * * * A. BECCANTINI LTMF NOVEMBRE 2001 * ****************************************************************** GRAPH = FAUX ; *GRAPH = VRAI ; ******************* ******************* **** MESH ***** ******************* ******************* RAF = 16 ; NY = 4 ; NX = 12 '*' RAF ; L = 1.0D0 ; DX = L '/' NX '/' 2.0D0; H = NY '*' DX ; xD = 0.5D0 '*' L ; xG = -1.0D0 '*' xD ; yH = 0.5D0 '*' H ; yB = -1.0D0 '*' yH ; A1 = xG yB ; A2 = 0.0D0 yB ; A3 = xD yB ; A4 = xD yH ; A5 = 0.0D0 yH ; A6 = xG yH ; VECTG = XG 0.0D0 ; VECTD = XD 0.0D0 ; xBG = xG '-' DX; XBD = xD '+' DX; B1 = xBG yB; B2 = xBG yH; B3 = xBD yB; B4 = xBD yH; DOM1 = LAT12 'TRANSLATION' NX VECTG ; DOM2 = LAT12 'TRANSLATION' NX VECTD ; VECTFG = (-1.0D0 '*' DX) 0.0D0 ; VECTFD = DX 0.0D0 ; FRONTG = LAT1 'TRANSLATION' 1 VECTFG ; * *** Rotation * ANGLE = 30.0D0; ORIG = 0.0D0 0.0D0; DOM1 = DOM1 'TOURNER' ANGLE ORIG; DOM2 = DOM2 'TOURNER' ANGLE ORIG; FRONTG = FRONTG 'TOURNER' ANGLE ORIG; DOMINT = DOM1 'ET' DOM2 ; 'ELIMINATION' DOMINT 1D-6; DOMTOT = DOMINT 'ET' FRONTG ; 'ELIMINATION' DOMTOT 1D-6; * **** EULER model to make the domaine table * QDOMINT = TDOMINT . 'QUAF' ; QFRONTG = TFRONTG . 'QUAF' ; QDOMTOT = TDOMTOT . 'QUAF' ; 'ELIMINATION' QDOMTOT 1D-6 QDOMINT ; 'ELIMINATION' QDOMTOT 1D-6 QFRONTG ; * ******* Post-Treatment line * 'OPTION' 'ELEM' 'QUA4' ; XINIT = XG '+' (0.5D0 '*' DX) ; YINIT = YB '+' (0.5D0 '*' DX) ; XFIN = XD '-' (0.5D0 '*' DX) ; YFIN = YINIT ; PINI = XINIT YINIT; PFIN = XFIN YFIN ; IAUX = (2 '*' NX) '-' 1 ; COURB = PINI 'DROIT' IAUX PFIN; COURB = COURB 'TOURNER' ANGLE ORIG; COURB = COURB 'COULEUR' 'VERT'; 'SI' GRAPH ; 'TRACER' (DOMTOT 'ET' COURB) 'TITRE' ('CHAINE' 'Maillage '); 'FINSI' ; ********************************** ********************************** **** INITIAL CONDITIONS **** ********************************** ********************************** * *** Left state * rog = 1.0 ; * *** Right state * rod = 1.250D-1 ; * Speed unscal = 1.0 ; UX = unscal '*' ('COS' ANGLE) ; UY = unscal '*' ('SIN' ANGLE) ; 'NATU' 'DISCRET'; 'NATU' 'DISCRET'; RN = RO_f et RO_i ; * *** I.C. graphics * 'SI' GRAPH ; 'FINSI' ; ******************************************* ******************************************* ******** EXECUTION ************************ ******************************************* ******************************************* RN0 = 'COPIER' RN ; * **** Computation parameters * TPS = 0.0 ; SF = 2. ; * * SF = safety factor * In a regular mesh SF = 2 <-> CFL = 1 * TFINAL = 0.5 ; METO = 'UPWIND' ; TEMPDIS = 'EXPLICIT' ; * * METO = 'CENTERED' * 'UPWIND' * * TEMPDIS = 'EXPLICIT' -> Forward Euler scheme * 'IMPLICIT' -> Backward Euler scheme * 'CN' -> Cranck-Nicholson * 'SDIRK' -> Singly Diagonal Implicit Runge Kutta * * **** Temporal loop * 'MESSAGE' ; 'MESSAGE' ('CHAINE' 'SF = ' SF) ; 'MESSAGE' ; * **** Jacobian and global matrix * $DOMTOT RF UN ; $DOMTOT RF UN ; DT_CON = SF '*' DELTAT ; 'SI' ('EGA' TEMPDIS 'IMPLICIT') ; MJACO ; 'FINSI' ; 'SI' ('EGA' TEMPDIS 'CN'); MJACO ; 'FINSI' ; 'SI' ('EGA' TEMPDIS 'SDIRK') ; A11 = (3. '+' (3 '**' 0.5)) '/' 6. ; A22 = A11 ; A21 = 1. '-' (2. '*' A11) ; B1 = 0.5 ; B2 = 0.5 ; MJACO ; 'FINSI' ; *********************************** **** Matrix inversion ************* *********************************** MATTAB = 'TABLE' 'METHINV' ; MATTAB . 'TYPINV' = 5 ; MATTAB . 'IMPINV' = 0 ; * Methode de numerotation de DDL MATTAB . 'TYRENU' = 'SLOA' ; MATTAB . 'PCMLAG' = 'APR2' ; MATTAB . 'GMRESTRT' = 50 ; * ILU MATTAB . 'PRECOND' = 3 ; MATTAB . 'NITMAX' = 1000 ; MATTAB . 'RESID' = 1.D-10 ; DELTAR = RN '*' 0.0 ; MATTAB . 'MATASS' = MATASS ; MATTAB . 'MAPREC' = MATASS ; MATTAB . 'XINIT' = DELTAR ; ****************************** **** Temporal loop ******* ****************************** 'REPETER' BL1 -1 ; $DOMTOT RF UN ; DT_CON = SF '*' DELTAT ; 1.0E-15) ; 'SI' ('EGA' TEMPDIS 'IMPLICIT') ; * ******* Implicit * 'SI' (DTMIN < DT_CON) ; MJACO ; MATTAB . 'MATASS' = MATASS ; MATTAB . 'MAPREC' = MATASS ; 'FINSI' ; * DELTAR = 'KRES' MATASS 'TYPI' (MATTAB) 'CLIM' CLIM 'SMBR' RESI 'IMPR' 0 ; 'FINSI' ; * 'SI' ('EGA' TEMPDIS 'CN') ; 'SI' (DTMIN < DT_CON) ; 'ET' MJACO ; MATTAB . 'MATASS' = MATASS ; MATTAB . 'MAPREC' = MATASS ; 'FINSI' ; * DELTAR = 'KRES' MATASS 'TYPI' (MATTAB) 'CLIM' CLIM 'SMBR' RESI 'IMPR' 0 ; 'FINSI' ; * 'SI' ('EGA' TEMPDIS 'SDIRK') ; 'SI' (DTMIN < DT_CON) ; MJACO ; MATTAB . 'MATASS' = MATASS ; MATTAB . 'MAPREC' = MATASS ; 'FINSI' ; * DELTAR1 = 'KRES' MATASS 'TYPI' (MATTAB) 'CLIM' CLIM 'SMBR' RESI 'IMPR' 0 ; DELTAR1)) ; $DOMTOT RF UN ; DELTAR2 = 'KRES' MATASS 'TYPI' (MATTAB) 'CLIM' CLIM 'SMBR' RESI 'IMPR' 0 ; DELTAR = (B1 '*' DELTAR1) '+' (B2 '*' DELTAR2) ; 'FINSI' ; * 'SI' ('EGA' TEMPDIS 'EXPLICIT') ; 'FINSI' ; * **** Increment of the variables (convection) * RN = RN '+' DELTAR ; TPS = TPS '+' DTMIN ; 'SI' (((&BL1 '/' 20) '*' 20) 'EGA' &BL1) ; 'MESSAGE' ('CHAINE' 'ITER = ' &BL1 ' TPS = ' TPS) ; 'FINSI' ; 'SI' (TPS > TFINAL) ; 'QUITTER' BL1 ; 'FINSI' ; 'FIN' BL1 ; * *** Solutions * 'SI' GRAPH ; 'FINSI' ; * *** Objects evolutions * xx yy = 'COORDONNEE' Courb; x0 = 'MINIMUM' lxx; x1 = 'MAXIMUM' lxx ; * ro tro = 'CHAINE' '1D ' METO ', ' TEMPDIS ' : RO ' ' tmps ' TFINAL ' elem ' 'QUA4' ; XPOS = (TPS '*' UNSCAL) '-' (L '/' 2.) ; Xcel = 'EXTRAIRE' lxx &BL1 ; 'SI' (XCEL < XPOS) ; 'SINON' ; 'FINSI' ; 'FIN' BL1 ; 'SI' GRAPH ; 'DESSIN' (EVRO 'ET' EVROAN) 'TITRE' tro ; 'FINSI' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'Transport of passive scalars: problem' ; 'ERREUR' 5 ; 'FINSI' ; 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales