* fichier : diffu2.dgibi ************************************************************************ * Section : Diffusion Fick ************************************************************************ *----------------------------------------------------------------------* * diffu2.dgibi : exemple d'utilisation du modele de DIFFUSION (FICK) * * * * Diffusion COUPLEE de deux especes (C6 / C8) * * * * On modelise la diffusion simulatee de 2 especes (C6, C8) dans un * * massif semi-infini en imposant les flux des deux especes au bord, * * les concentrations en C6 & C8 etant initialement nulles. * * * * De plus, la diffusion des 2 especes est COUPLEE : on suppose que le * * moteur de la diffusion est le gradient de C, C6 Et C8 etant deux * * isotopes de la meme espece chimique. Ainsi, le vecteur courant de * * diffusion de chaque espece depend du gradient de concentration de * * chaque isotope : * * j6 = -D6.grad(C) = -D6.grad(C6+C8) = -D6.grad(C6)-D6.grad(C8) * * De meme : * * j8 = -D8.grad(C) = -D8.grad(C6+C8) = -D8.grad(C6)-D8.grad(C8) * * Les matrices de couplage sont ajoutees au blocages associes a la * * diffusion. Elles sont calculees a partir des matrices de diffusivite * * de chaque espece, en renommant le nom des inconnues sur lesquelles * * elles agissent. * * *----------------------------------------------------------------------* * IG1 = VRAI : affichage des traces ; * IG1 = FAUX ; * * *------------------------------ MAILLAGE ------------------------------* * * OPTI DIME 2 ELEM QUA8 ; * * * Repere : * O1 = 0. 0. ; X1 = 1. 0. ; Y1 = 0. 1. ; * * * Dimensions : * DG1 = 15.E-9 ; LG1 = 300.E-9 ; * * * Parametre / Maillage : * NEX1 = 30 ; L1 = O1 'DROI' 1 (DG1 * Y1) ; SG1 = L1 'TRAN' (-1 * NEX1) 'DINI' 5.E-9 'DFIN' 20.E-9 (LG1 * X1) ; L3 = SG1 'COTE' 3 ; * * 'SI' IG1 ; 'TITR' ' Maillage & C.L. : flux imposes sur le bord rouge (L1) ' ; 'TRAC' 'QUAL' (SG1 'ET' (L1 'COUL' 'ROUG')) ; 'FINS' ; * * *--------------------- MODELE / CARACTERISTIQUES ----------------------* * * * L'option 'INCO' de 'MODE' permet de definir le nom des inconnues * * primales et duales du modele (CO / QCO par defaut). * * Attention ! limite a 2 caracteres pour le nom de l'inconnue primale * MOD1 = 'MODE' SG1 'DIFFUSION' 'FICK' 'INCO' 'C6' 'QC6' ; MOD2 = 'MODE' SG1 'DIFFUSION' 'FICK' 'INCO' 'C8' 'QC8' ; KD1 = 1.E-18 ; KD2 = 4.E-19 ; MAT1 = 'MATE' MOD1 'KD' KD1 'CDIF' 1. ; MAT2 = 'MATE' MOD2 'KD' KD2 'CDIF' 1. ; * * * MATRICES de COUPLAGE : * * 1. on construit les matrices de diffusivite de chaque espece : * DC6QC6 = 'COND' MOD1 MAT1 ; DC8QC8 = 'COND' MOD2 MAT2 ; * 2. on renomme les noms d'inconnues sur lesquelles elles agissent : * * Pour DC6QC6, on a : C6 -> QC6, on veut : C8 -> QC6 : * * Pour DC8QC8, on a : C8 -> QC8, on veut : C6 -> QC8 : * * Attention ! il faut ajouter le mot-cle 'QUEL' pour indiquer a Cast3M * * que les matrices assemblees formeront un systeme qui ne * * sera pas symetrique (QUELconque). * DC8QC6 = 'CHAN' 'INCO' DC6QC6 ('MOTS' 'C6') ('MOTS' 'C8') ('MOTS' 'QC6') ('MOTS' 'QC6') 'QUEL' ; DC6QC8 = 'CHAN' 'INCO' DC8QC8 ('MOTS' 'C8') ('MOTS' 'C6') ('MOTS' 'QC8') ('MOTS' 'QC8') 'QUEL' ; * * *------------------------- C.L. / CHARGEMENTS -------------------------* * * * Blocages : * * Par choix, on limite au bord la concentration relative des 2 especes * * a leur valeur dans le milieu ext. & on la fixe nulle a l'autre bord :* CL1 = 'BLOQ' 'MAXI' 'C6' L1 ; CL2 = 'BLOQ' 'MAXI' 'C8' L1 ; CL3 = 'BLOQ' 'C6' L3 ; CL4 = 'BLOQ' 'C8' L3 ; CL0 = CL1 'ET' CL2 'ET' CL3 'ET' CL4 ; * Valeurs des limites Max. : * C6L1 = 0.5 ; C8L1 = 0.5 ; DCL1 = 'DEPI' CL1 C6L1 ; DCL2 = 'DEPI' CL2 C8L1 ; * * * Flux imposes : * FLXC0 = KD1 / 100.E-9 ; FLXC6 = 'FLUX' MOD1 L1 FLXC0 ; FLXC8 = 'FLUX' MOD2 L1 FLXC0 ; * * * A Noter : concentrations imposees => chargement 'CIMP' : * * : flux imposes => chargement 'QC..' : * * Chargement : * XNBH1 = 24. ; XNBPAS1 = 1. ; PAS1 = XNBPAS1 * XNBH1 ; TFIN1 = XNBH1 * 3600. ; LTPS1 = 'PROG' 0. TFIN1 ; LAMP1 = 'PROG' 1. 1. ; EV1 = 'EVOL' 'MANU' 'TEMP' LTPS1 'AMPL' LAMP1 ; CG1 = 'CHAR' 'CIMP' DCL1 EV1 ; CG2 = 'CHAR' 'CIMP' DCL2 EV1 ; CG3 = 'CHAR' 'QC6 ' FLXC6 EV1 ; CG4 = 'CHAR' 'QC8 ' FLXC8 EV1 ; CG0 = CG1 'ET' CG2 'ET' CG3 'ET' CG4 ; * * *------------------------------ PASAPAS -------------------------------* * * * COUPLAGE : on rajoute les matrices de couplage : DC8QC6 et DC6QC8, * * aux blocages de diffusion : * * * TAB1 = 'TABL' ; TAB1 . 'MODELE' = MOD1 'ET' MOD2 ; TAB1 . 'CARACTERISTIQUES' = MAT1 'ET' MAT2 ; TAB1 . 'BLOCAGES_DIFFUSIONS' = CL0 'ET' DC8QC6 'ET' DC6QC8 ; TAB1 . 'CHARGEMENT' = CG0 ; TAB1 . 'RELAXATION_THETA' = 1. ; TAB1 . 'TEMPS_CALCULES' = 'PROG' 0. PAS (TFIN1 / PAS1) TFIN1 ; * PASAPAS TAB1 ; * *----------------------------- AFFICHAGES -----------------------------* * * * Table legende dessins : * TDESS1 = 'TABL' ; TDESS1 . 3 = 'MOT' 'TIRR' ; TDESS1 . 4 = 'MOT' 'TIRR' ; TDESS1 . 5 = 'MOT' 'TIRR' ; TDESS1 . 'TITRE' = 'TABL' ; TDESS1 . 'TITRE' . 1 = ' Concentration C6 ' ; TDESS1 . 'TITRE' . 2 = ' Concentration C8 ' ; TDESS1 . 'TITRE' . 3 = ' C6 + C8 ' ; TDESS1 . 'TITRE' . 4 = ' C6-C8 pas couples' ; * * * Solutions analytiques etat final sans couplage : * L2 = SG1 'COTE' 2 ; CHC6L2 = (LG1 - (L2 'COOR' 1) * C6L1 / LG1) 'NOMC' 'C6'; EVCREF1 = 'EVOL' 'JAUN' 'CHPO' CHC6L2 'C6' L2 ; * * NB1 = 'DIME' (TAB1 . TEMPS) ; NBPAS2 = 'ENTI' (8. * XNBPAS1) ; LDESS1 = 'LECT' 1 'PAS' 2 (NBPAS2 + 1) PAS NBPAS2 NB1 ; I1 = 0 ; 'REPE' B1 NB1 ; TPSI1 = TAB1 . 'TEMPS' . I1 ; CHCI1 = TAB1 . 'CONCENTRATIONS' . I1 ; CHC6I1 SG2 = (CHCI1 'EXCO' 'C6') SG1 'PLUS' (3. * DG1 * Y1) ; CHC8I1 = CHCI1 'EXCO' 'C8' ; EVCI1 = 'EVOL' 'ROUG' 'CHPO' CHCI1 'C6' L2 ; EVCI2 = 'EVOL' 'VERT' 'CHPO' CHCI1 'C8' L2 ; EVCI3 = (EVCI1 + EVCI2) 'COUL' 'BLAN' ; 'SI' (IG1 'ET' ('DANS' ('LECT' &B1) LDESS1)) ; 'TITR' ('CHAI' ' Concentration a ' 'FORMAT' '(F4.1)' (TPSI1 / 3600.) ' h') ; 'SI' (&B1 'NEG' NB1) ; 'TRAC' (CHC6I1 'ET' CHC8I1) (SG1 'ET' SG2) ; 'DESS' (EVCI1 'ET' EVCI2 'ET' EVCI3) 'LEGE' TDESS1 ; 'SINO' ; 'TITR' ' Concentration au temps final (24 h) ' ; 'TRAC' (CHC6I1 'ET' CHC8I1) (SG1 'ET' SG2) ; 'DESS' (EVCI1 'ET' EVCI2 'ET' EVCI3 'ET' EVCREF1) 'LEGE' TDESS1 ; 'FINS' ; 'FINS' ; I1 = I1 + 1 ; 'FIN' B1 ; * * 'FIN' ; * * *----------------------------------------------------------------------*