* fichier : diffu2.dgibi
*----------------------------------------------------------------------*
* 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   = 'RIGI' MOD1 MAT1 ;
DC8QC8   = 'RIGI' 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' ;
*                                                                      *
*----------------------------------------------------------------------*
 

