Download precipite4EFMH.dgibi

Back to the list

* fichier :  precipite4EFMH.dgibi
*
********************* CAS TEST : precipite4.dgibi ********************
*
GRAPH = 'N'   ;
'OPTI' 'ECHO' 1 ;
CRIT1 = 1.D-6 ;
'SAUT' 'PAGE' ;
*
*---------------------------------------------------------------------
* TEST PRECIPITE4
* precipité uniforme initial de 1 (par unité de volume solide) partout.
* vitesse vx = 1 vy = 0 uniforme
* maillage 2D pseudo 1D.
* concini = 0.
* concentration à gauche nulle, flux diff nul à droite.
* Le précipité fond, le frond se déplace de gauche à droite selon
* l'expression VX * limsol * tps '/' F00 '/' (1.D0 '-' POROS)
* ou poros est la porosité, F00 la concentration de precipité, tps
* le temps écoulé et limsol la limite de solubilité
*
* utilise TRANSGEN
*---------------------------------------------------------------------
*
*------------------
* Options generales
*------------------
*
'OPTI' 'DIME' 2 'ELEM' 'QUA4' ;
'OPTI' 'ISOV' 'SURF'          ;
*
*
*=========
* MAILLAGE
*=========
*
*
*- Création des points supports du contour du domaine, et des droites
*- passant par les centres et les faces pour le post-traitement.
*
L     = 100.D0          ;
H     = 1.D0            ;
HS2   = H/2.D0          ;
X0    = 0.D0            ;
X1    = X0 + L          ;
Y0    = 0.D0            ;
Y1    = Y0 + H          ;
INUMX = 200             ;
INUMY = 1               ;
INUM1 = INUMX - 1       ;

DX    = X1 - X0 / INUMX ;

A1    = X0 Y0   ;
A3    = X1 Y0   ;
D1    = X0 Y1   ;
D3    = X1 Y1   ;

*
*- Création des DROITES frontieres
*
DRBAS = A3 'DROI' INUMX A1 ;
DRGAU = A1 'DROI' INUMY D1 ;
DRHAU = D1 'DROI' INUMX D3 ;
DRDRO = D3 'DROI' INUMY A3 ;
PELIM = DX / (5. * INUMX) ;
*
*- Creation maillage GEOMETRIQUE
*
PTOT1  = 'DALL' DRBAS DRGAU DRHAU DRDRO ;
PTOT1  = 'ORIE' PTOT1                   ;
*
*- Creation maillage HYBRIDE y compris sous-objets (cond. limites)
*
QFTOT= 'CHAN' PTOT1  QUAF ;
QFGAU= 'CHAN' DRGAU  QUAF ;
QFDRO= 'CHAN' DRDRO  QUAF ;
 ELIM PELIM (QFTOT ET QFGAU ET QFDRO) ;
*
*================
* INITIALISATIONS
*================
*
*                                                    ----------------
*                                                    = MODELISATION =
*                                                    ----------------
MODHYB = 'MODL' QFTOT 'DARCY' 'ANISOTROPE' ;
MODDRO = 'MODL' QFDRO 'DARCY' 'ISOTROPE' ;
MODGAU = 'MODL' QFGAU 'DARCY' 'ISOTROPE' ;

*
*                                               ---------------------
*                                               = Donnees physiques =
*                                               ---------------------
*

*     ---------------------
*          DIFFUSIVITE
*     ---------------------

VK    = 1.D-6                ;
MATI2 = MANU 'CHPO' ('DOMA' MODHYB 'CENTRE')  'K' VK ;


*     ---------------------
*          VITESSE
*     ---------------------

VX1   = 5.D0 ; VY1 = 0.D0    ;
*
SPEED = 'MANU' 'CHPO' ('DOMA' MODHYB 'FACE')  2
        'VX' VX1 'VY' VY1 'NATURE' 'DISCRET' ;
SPEEDC = 'MANU' 'CHPO' ('DOMA' MODHYB 'CENTRE')  2
        'VX' VX1 'VY' VY1 'NATURE' 'DISCRET' ;
*
*    -----------------------
*      Donnees transitoire 
*    -----------------------
*
TETA   = 1.00D0       ;
TMIN   = 0.D0         ;
TMAX   = 0.25D2      ;
TSUP   = 1.2D0 * TMAX ;
DELTAT = 0.250D0        ;
*
LICALC = 'PROG' TMIN 'PAS' DELTAT TMAX ;
LISAUV = LICALC                        ;


*
*      ------------------------
*       Conditions initiales 
*      ------------------------

T0 = 0.D0 ;
CINI =  'MANU' 'CHPO' ('DOMA' MODHYB 'CENTRE') 1 'I129' T0
                                  'NATURE' 'DISCRET' ;

                                  
*         --------------
*          T imposée  
*         --------------

TGAUCHE = 0.D0  ;
T1 = TGAUCHE;
TGAUCHE = 'KCHT' MODGAU SCAL CENTRE (1.D0 * TGAUCHE);
TGAUCHE = NOMC I129 TGAUCHE;
TGAUCHE = 'CHAR' TGAUCHE
        ('EVOL' 'MANU' ('PROG' 0. TSUP) ('PROG' 1. 1.));

*
*                                          ---------------------------
*                                          = Table DARCY_TRANSITOIRE =
*                                          ---------------------------
*
*
*

*-- Table de transport :
Transp                         = 'TABLE';
Transp . 'MODELE'              = MODHYB ;
Transp.'TEMPS'                 = 'TABLE';
Transp.'CONCENTRATION'         = 'TABLE';
Transp.'FLUXDIFF'              = 'TABLE';
Transp.'FLUXCONV'              = 'TABLE';
Transp.'CARACTERISTIQUES'      = MATI2;
Transp.'POROSITE'              = 0.2D0;
Transp.'COEF_RETARD'           = 10.D0;
Transp.'CONVECTION'            = 1.D0 * SPEED ;
Transp.'VITELEM'               = 1.D0 * SPEEDC ;
*Transp . 'ALPHAL'              = MANU 'CHPO' (doma MODHYB centre)
*                                 'SCAL' 1.D0;
*Transp . 'ALPHAT'              = MANU 'CHPO' (doma MODHYB centre)

*Transp.'DECROISSANCE'          = ('LOG' 2.D0) '/' 5.D0;

*                                 'SCAL' 0.D0;

* Conditions initiales :
Transp.'TEMPS'. 0              = TMIN ;
Transp.'CONCENTRATION'. 0      = CINI ;
Transp.'FLUXDIFF'. 0           = 'MANUEL' 'CHPO'
                        (doma MODHYB face)  'I129' 0.D0 ;
Transp.'FLUXCONV'. 0           = 'MANUEL' 'CHPO'
                        (doma MODHYB face)  'I129' 0.D0 ;

* Conditions aux limites DIRICHLET à gauche:
Transp . 'TRACE_IMPOSE' =  TGAUCHE       ;

* CONDITION FLUX MIXTE à gauche
*Transp . 'FLUXTOT_IMP' =  TGAUCHE       ;

* Fluxdiffusif a gauche
*Transp . 'FLUX_IMPOSE' =  TGAUCHE        ;


* Paramètres numériques :
Transp.'THETA_DIFF'            = 1.D0;
Transp.'THETA_CONV'            = 1.D0;
Transp.'THETA_DEC'             = 0.5D0;
Transp.'LUMP'                  = FAUX;
Transp.'TYPDISCRETISATION'     = 'EFMH';
Transp.'DECENTR'          = VRAI;
Transp.'NUM_PECLET'       = 2.D0;
Transp.'SEUILCALC'          = 1.D-14;

TABRES = table METHINV;
TABRES . 'TYPINV' = 1;
TABRES . 'PRECOND' = 3;

Transp . 'METHINV' = TABRES;


Transp.'TEMPS_CALCULES'        = LiCalc;
Transp.'TEMPS_SAUVES'          = LiSauv;


Transp . INTCONC = TABLE;
Transp . INTCONC . 0 = 0.D0 * CINI;


* Precipité

* CE SONT DES CHAMPS . A CORRIGER
Transp . 'LIMITE_SOLUBILITE'   =  MANU 'CHPO' (doma MODHYB centre)
                                 'I129' 0.25D0;

Transp . 'COEF_DISSOLUTION' =  MANU 'CHPO' (doma MODHYB centre)
                                 'I129' 2.5D8 ;

Transp . 'PRECIPITE' = 'TABLE' ;
Transp . 'PRECIPITE' . 0 =  MANU 'CHPO' (doma MODHYB centre)
                                 'I129' 1.D0;

Transp . INTPREC = TABLE;
Transp . INTPREC . 0 = 0.D0 * CINI;                                 

* IL FAUT UN INDICE DISSOLUTION

Transp . 'DISSOLUTION' = 'TABLE'  ;
Transp . 'DISSOLUTION' . 0 = 0.D0 * CINI;
                                 


*     TESTER UN TERME SOURCE; TESTER UNE SEULE MAILLE,
*     TESTER CONVECTION PURE ...... TRES IMPORTATN
*     TESTER DECROISSANCE '-' filiation
*     TESTER FLUX imposés, dissolution, precipitation
*     retard poros, diffusion seule. 
*     changer poros ne devrait rien change 'SAUF' niveau source
*                                                            ==========
*                                                            | CALCUL |
*                                                            ==========


*=======================
* Resolution transitoire
*=======================
*
TRANSGEN TRANSP ;
*
*
*=================
* POST-TRAITEMENT
*=================

TRANS2 = TABLE TRANSP;

*
*--------------------------------------------------------------------
*      Dans chaque cas on trace
*         La trace de concentration le long de DRMID
*         La concentration le long de DRMIC
*--------------------------------------------------------------------
*      Tests de NON-REGRESSION :
*         Principe du maximum
*         Position du centre de gravité du champ de concentration
*--------------------------------------------------------------------
*
*                                                Critères numériques
CFL = VX1 * DELTAT / DX                   ;
PEK = VX1 * DX / (2. * VK)                ;
FOU = 2. * VK * DELTAT / (DX * DX)        ;
'SAUT' 1 'LIGNE'                          ;
'MESS' '   Critères numériques             ' ;
'MESS' '    CFL     ' CFL ;
'MESS' '    PECLET  ' PEK ;
'MESS' '    FOURIER ' FOU ;
'MESS' '                                    ' ;
*
XC YC = 'COOR' (DOMA MODHYB 'CENTRE')   ;
ISOR1 = INDEX ( TRANS2 . 'TEMPS') ;
NTSOR = DIME ISOR1                ;


NTSO1 = NTSOR - 1                 ;
IOK   = FAUX                      ;
IRESU = 1                         ;
*
*-----------------------
REPETER VISURESU NTSO1 ;
*-----------------------
*
IRESU = IRESU + 1                        ;
INDI1 = ISOR1.IRESU                      ;
TTRA  = TRANS2 . 'TEMPS' . INDI1         ;
EPR1  = TRANS2 . 'CONCENTRATION' . INDI1        ;


poros = TRANSP . 'POROSITE';
limsol = 'MAXIMUM' TRANSP . 'LIMITE_SOLUBILITE';
F00    = maximum TRANSP . PRECIPITE . 0 ;

solanal = VX1 * limsol * TTRA '/' F00 '/' (1.D0 '-' POROS);

'MESSAGE' solanal;

*
'SI' ('NEG' GRAPH 'N' )                        ;
   LTI2 = 'CHAINE' 'Front 1D-h temps ' TTRA    ;
   'TITR' LTI2                                 ;
   drmil = 'QUELCONQUE' 'SEG2' ('EXTRAIRE' epr1 maillage) ;
   drmil = 'INVERSE' drmil                     ;
   AV2  = 'EVOL' 'ROUG' 'CHPO' EPR1 'I129'  drmil ;
   'DESS' AV2 'MIMA'  'NCLK'                         ;
   toto = 'KCHA' modhyb epr1 'CHAM';
*   'TRACER' modhyb toto 'NCLK';
'FINS'                                         ;




* concentration au temps t
*
*-------------
FIN VISURESU ;
*-------------


IRESU = 1                         ;
*
*-----------------------
REPETER VISURES NTSO1 ;
*-----------------------
*
IRESU = IRESU + 1                        ;
INDI1 = ISOR1.IRESU                      ;
TTRA  = TRANS2 . 'TEMPS' . INDI1         ;
EPR1  = TRANS2 . 'PRECIPITE' . INDI1        ;

*
'SI' ('NEG' GRAPH 'N' )                        ;
   LTI2 = 'CHAINE' 'Front 1D-h temps ' TTRA    ;
   'TITR' LTI2                                 ;
   drmil = 'QUELCONQUE' 'SEG2' ('EXTRAIRE' epr1 maillage) ;
   drmil = 'INVERSE' drmil                     ;
   AV2  = 'EVOL' 'ROUG' 'CHPO' EPR1 'I129'  drmil ;
   'DESS' AV2 'MIMA'  'NCLK'                         ;
   toto = 'KCHA' modhyb epr1 'CHAM';
*   'TRACER' modhyb toto 'NCLK';
'FINS'                                         ;

* valeur non nulle de concentration
roro = 'MASQUE' epr1 SUPERIEUR 0.1D0;
* coord x du maillage
zozo = 'COORDONNEE' 1 roro;
* multiplie pour trouver valeur du front
tutu = roro * zozo;
tutu = 'KCHA' tutu modhyb 'CHAM';
titi = 'ELEM' tutu SUPERIEUR 1.D-10;
* on extrait la coordonnée x du front
roro = 'MINIMUM' ('COORDONNEE' 1 titi);

'LISTE' roro;

* concentration au temps t
*
*-------------
FIN VISURES ;
*-------------

'SI' (roro 'EGA' solanal (2.D0 * DX)) ;
   'ERREUR' 0 ;
'SINON'                      ;
   'ERREUR' 5 ;
'FINSI' ;


*
'FIN' ;
 

© Cast3M 2003 - All rights reserved.
Disclaimer