* fichier :  precipite1EFMH.dgibi
************************************************************************
* Section : Fluides Darcy
* Section : Fluides Transport
************************************************************************
*
********************* CAS TEST : transport1.dgibi ********************
*
GRAPH = 'N'   ;
'OPTI' 'ECHO' 1 ;
CRIT1 = 1.D-3 ;
'SAUT' 'PAGE' ;
*
*---------------------------------------------------------------------
* TEST TRANSPORT1
*    uniquement de la précipitation cinétique ordre 1
*    tout uniforme - pas de vitesse
*    revient à resoudre  Rw dC/dt = codis w (limsol - C)
*                        d(1-w)F/DT = - codis w (limsol -C)
*    solution C(t) = limsol * (1 - exp(-codis * t /R))
*
*    pour une quantité initiale suffisante de précipité
*
*    F(t) = F(0) - (C(t) * w * R / (1 - w))
*
*---------------------------------------------------------------------
*
*------------------
* 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 = 10              ;
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 = MODE QFTOT 'DARCY' 'ANISOTROPE' ;
MODDRO = MODE QFDRO 'DARCY' 'ISOTROPE' ;
MODGAU = MODE QFGAU 'DARCY' 'ISOTROPE' ;

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

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

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


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

VX1   = 1.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   = 30.00D0      ;
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 'H' T0
                                  'NATURE' 'DISCRET' ;


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

TGAUCHE = 0.D0  ;
T1 = TGAUCHE;
TGAUCHE = 'KCHT' MODGAU SCAL CENTRE (1.D0 * TGAUCHE);
TGAUCHE = 'CHAN' TGAUCHE 'ATTRIBUT' 'NATURE' 'DISCRET' ;
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'            = 0.D0 * SPEED ;
*Transp.'VITELEM'               = 0.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)  'SCAL' 0.D0 ;
Transp.'FLUXCONV'. 0           = 'MANUEL' 'CHPO'
                        (doma MODHYB face)  'SCAL' 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-15;

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)
                                 'SCAL' 0.25D0;

Transp . 'COEF_DISSOLUTION' =  MANU 'CHPO' (doma MODHYB centre)
                                 'SCAL' 2.5D0 ;

Transp . 'PRECIPITE' = 'TABLE' ;
Transp . 'PRECIPITE' . 0 =  MANU 'CHPO' (doma MODHYB centre)
                                 'SCAL' 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        ;

*
'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 'H'  drmil ;
*   'DESS' AV2 'MIMA'  'NCLK'                         ;
   toto = 'KCHA' modhyb epr1 'CHAM';
   'TRACER' modhyb toto 'NCLK';
'FINS'                                         ;

* concentration au temps t
conct = maxi EPR1 ;

limsol = Transp . 'LIMITE_SOLUBILITE' ;
retard = Transp . 'COEF_RETARD' ;
codis  = transp . 'COEF_DISSOLUTION' ;
solu   = limsol *
        (1.D0 - (exp (-1.D0 * codis * ttra / retard))) ;
solu = 'MAXIMUM' solu;
errconc = 'ABS' (conct - solu / solu) ;
'MESSAGE'  'erreur concentration' errconc;


*
*-------------
FIN VISURESU ;
*-------------

'SI' (errconc > CRIT1 )  ;
     'ERRE' 5 ;
'SINO'        ;
     'ERRE' 0 ;
'FINSI'       ;
*
'FIN' ;


*
*'FIN' ;
 

