* fichier :  transport1_new.dgibi
*
********************* CAS TEST : transport1.dgibi ********************
*
GRAPH = FAUX    ;
'OPTI' 'ECHO' 1 ;
CRIT1 = 1.D-6   ;
'SAUT' 'PAGE'   ;
*
*---------------------------------------------------------------------
* TEST TRANSPORT1
*                 CALCUL DARCY ISOTROPE TRANSPORT.
*                       Transport d'un front.
*
*                   dT
*                   -- + div (uT - Kgrad(T)) = 0
*                   dt
*
* Ce test permet de verifier le bon fonctionnement des operateurs
* utilises afin de resoudre l'equation de transport par diffusion
* convection d'un champ scalaire passif par la methode d'elements
* finis mixtes hybrides et VF implantes dans CASTEM2000.
* Le decentrement est utilise. 
*
*
*---------------------------------------------------------------------
*
*------------------
* Options generales
*------------------
*
'OPTI' 'DIME' 2 'ELEM' 'QUA4' ;
'OPTI' 'ISOV' 'SURF'          ;
*
*
*=========
* MAILLAGE
*=========
*
*
*- Creation 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     = 20.D0            ;
X0    = 0.D0            ;
X1    = X0 + L          ;
Y0    = 0.D0            ;
Y1    = Y0 + H          ;
INUMX = 141              ;
INUMY = 17               ;

DX    = X1 - X0 / INUMX ;
DY    = H '/' INUMY     ;

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

*
*- Creation des DROITES frontieres
*
DRBAS = A3 'DROI' INUMX A1 ;
DRGAU = A1 'DROI' INUMY D1 ;
DRHAU = D1 'DROI' INUMX D3 ;
DRDRO = D3 'DROI' INUMY A3 ;
PELIM = DY / (100.D0) ;
*
*- Creation maillage GEOMETRIQUE
*
PTOT1  = 'DALL' DRBAS DRGAU DRHAU DRDRO ;
PTOT2  = 'ORIE' PTOT1                   ;
*
*- Creation maillage HYBRIDE y compris sous-objets (cond. limites)
*
*DRMID = B1 'DROI' INUMX B3              ;
*DRMIC = C1 'DROI' INUM1 C3              ;
*EXT1  = 'MANU' 'POI1' B1                ;
*
QFTOT= 'CHAN' PTOT2  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' ;
CHYB1 = 'DOMA' MODHYB 'SURFACE'          ;
CHYB2 = 'DOMA' MODHYB 'NORMALE'          ;


xcoor ycoor = 'COORDONNEE' ('DOMA' modhyb centre);


*
*                                               ---------------------
*                                               = Donnees physiques =
*                                               ---------------------
*
T0    = 0.D0 ; T1  = 100.D0    ;
VX1   = 1.D0 ; VY1 = 0.D0    ;
VK    = 1.D-1               ;
MATI2 = MANU 'CHPO' ('DOMA' MODHYB 'CENTRE')  'K' VK ;
MATI2 = ('NOMC' K11 MATI2) '+' ('NOMC' K22 mati2) '+' ('NOMC' K21 (0.D0 * MATI2));
*MATI2 = KCHA MODHYB MATI2 'CHAM';
*
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' ;
MOT1  = 'MOTS' 'VX' 'VY'                     ;
MOT2  = 'MOTS' 'UX' 'UY'                     ;
FLU1  = 'PSCA' SPEED CHYB2 MOT1 MOT2         ;
FLU2  = CHYB1 * FLU1                         ;
FLU3  = 'NOMC' 'FLUX' FLU2                   ;
*
*                                             -----------------------
*                                             = Donnees transitoire =
*                                             -----------------------
*  TETA   : Parametre de le theta-methode
*  TMAX   : Temps final
*  TSUP   : Temps pour conditions aux limites
*  DELTAT : Pas de temps
*
TETA   = 1.00D0       ;
TMIN   = 0.D0         ;
TMAX   = 60.00D0      ;
TSUP   = 1.2D0 * TMAX ;
DELTAT = 1.0D-0        ;
*
LICALC = 'PROG' TMIN 'PAS' DELTAT TMAX ;
LISAUV = 'PROG' TMAX                   ;
*
*                                             ------------------------
*                                             = Conditions initiales =
*                                             ------------------------
*TCHYB =  'MANU' 'CHPO' ('DOMA' MODHYB 'CENTRE') 1 'H' 1.D0
*              'NATURE' 'DISCRET' ;

INUMX1 = INUMX '+' 1;
INUMY1 = INUMY '+' 1;
TCHYB = 'MASQUE' xcoor SUPERIEUR (0.2D0 * L);
TCHYB = TCHYB * ( 'MASQUE' xcoor INFERIEUR (0.3D0 * L));
TCHYB = TCHYB * ( 'MASQUE' ycoor INFERIEUR (0.6D0 * H));
TCHYB = TCHYB * ( 'MASQUE' ycoor SUPERIEUR (0.4D0 * H));
TCHYB = 'NOMC' 'H' TCHYB;

* On rend la masse initiale independante du maillage.
TCHYB = TCHYB / (maxi (resu (TCHYB * (doma modhyb volume))));



*
*                                                       --------------
*                                                       = T imposee  =
*                                                       --------------
*opti donn 5;
CHCLIM = TABLE;
CHCLIM . 'DIRICHLET' = 'MANU' 'CHPO' ('DOMA' MODDRO 'CENTRE') 1 'H' T0 'NATURE' 'DISCRET' ;
CHCLIM . 'DIRICHLET' = CHCLIM . 'DIRICHLET' + ('MANU' 'CHPO' ('DOMA' MODGAU 'CENTRE') 1 'H' T1 'NATURE' 'DISCRET') ;
 
GEOL1 = TABLE;
GEOL1 . 'CONCENTRATION'     = 'MANUEL' CHPO ('DOMA' modhyb 'CENTRE') 'H' 0.D0 ;
GEOL1 . 'LUMP'              = FAUX                  ;
GEOL1 . 'TYPDISCRETISATION' = 'EFMH'                ;
GEOL1 . 'THETA_DIFFUSION'   = 1.0D0                 ;
GEOL1 . 'THETA_CONVECTION'  = 1.0D0                 ;
GEOL1 . 'DECENTREMENT'      = FAUX                  ;
GEOL1 . 'DELTAT'            = 10.D15                ;
* conduct en m/an
GEOL1 . 'DIFFUSIVITE'       =  mati2 '/' vk      ;
GEOL1 . 'SOLVEUR'           = 2                     ;
GEOL1 . 'PRECONDITIONNEUR'  = 3                     ;
GEOL1 . 'POROSITE'          = 'MANU' 'CHPO' (doma MODHYB CENTRE) 'CK' 0.D0 ;
GEOL1 . 'CLIMITES'          = CHCLIM                ;
GEOL1 . 'RECALCUL'          = VRAI                  ;
*

*'OPTION' donn 5;

GEOL1 GEOL2 = TRANGEOL Modhyb GEOL1;









QFACE1 =  GEOL1 . 'FLUXDIFF'               ;
VCENT1 = 'HVIT' MODHYB (nomc FLUX QFACE1)              ;


*
*                                          ---------------------------
*                                          = 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'      = 1.D-10 * MATI2;
Transp.'POROSITE'              = 1.D0;
Transp.'COEF_RETARD'           = 1.D0;
*Transp.'CONVECTION'            =  NOMC 'SCAL' FLU3 ;
Transp.'CONVECTION'            =  (nomc SCAL (1.D0 * QFACE1)) / (doma MODHYB SURFACE) ;
Transp . 'CONVECTION'        = Transp . CONVECTION * (doma Modhyb NORMALE);
Transp.'VITELEM'            =   VCENT1 ;
*Transp . 'ALPHAL'           = MANU 'CHPO' (doma MODHYB centre)
*                              'SCAL' 1.D0;
*Transp . 'ALPHAT'           = MANU 'CHPO' (doma MODHYB centre)
*                              'SCAL' 0.D0;

* Conditions initiales :
Transp.'TEMPS'. 0              = TMIN ;
Transp.'CONCENTRATION'. 0      = TCHYB;
Transp.'FLUXDIFF'. 0           = 0.D0 * FLU3 ;
Transp.'FLUXCONV'. 0           = 0.D0 * FLU3;

* Conditions aux limites :
Transp . 'TRACE_IMPOSE' = CHAR ('MANU' 'CHPO' ('DOMA' MODGAU 'CENTRE') 1 'H' 0.D0  'NATURE' 'DISCRET') ('EVOL' 'MANU' ('PROG' 0. TSUP) ('PROG' 1. 1.))       ;
*Transp . 'FLUXTOT_IMP' =  TTT1       ;


* Paramètres numeriques :
Transp.'THETA_DIFF'            = 1.D0;
Transp.'THETA_CONVECTION'      = 1.D0;
Transp.'LUMP'                  = FAUX;
Transp.'TYPDISCRETISATION'     = 'EFMH';
Transp.'DECENTR'          = VRAI;

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 * TCHYB;
*                                                            ==========
*                                                            | CALCUL |
*                                                            ==========


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

****************************************************************************
'SI' (GRAPH) ;
titre 'Premier champ de concentration' ;
trac (kcha TRANSP . CONCENTRATION . 1 MODHYB CHAM) modhyb;
*
NbTps = 'DIME' (Transp.'TEMPS') ;
titre 'Dernier champ de concentration calcule' ;
trac (kcha (TRANSP . CONCENTRATION . (NbTps - 1)) MODHYB CHAM) modhyb;
'FINSI' ;



LiMASS = 'PROG' ;
LiTps = 'PROG' ;
zozo = 0.D0;
roro = 'PROG';
litpm1 = 'PROG' ;
*



'REPETER' BclFlT (('DIME' (Transp.'TEMPS')) - 1 );
  ICour   = (&BclFlT) ;
  toto = 'KOPS' transp . CONCENTRATION . Icour  * transp . POROSITE;
  toto = toto * ('DOMA' modhyb VOLUME);
*  'LISTE' ('MAXIMUM' ('RESULT' toto));
   LiTps   = LiTps 'ET' ('PROG' (Transp. 'TEMPS' . ICour)) ;
  FlTCour = 'MAXIMUM' ('RESULT' toto) ;
*  'LISTE' fltcour;
  LiMASS   = LiMASS 'ET' ('PROG' FlTCour) ;
'FIN' BclFlT ;


mailimg = 'DOMA' modgau centre;
mailimd = 'DOMA' moddro centre;


EvMASS = 'EVOL' 'ROUGE' 'MANUEL' 'Time (y)' Litps 'Total mass' (LiMASS) ;

'SI' (graph) ;
'DESSIN' EvMASS 'TITRE' 'evolution de la masse dans les fractures' ;
'FINSI' ;


LiFLT = 'PROG' ;
LiTps = 'PROG' ;
zozo = 0.D0;
roro = 'PROG';
litpm1 = 'PROG' ;
'REPETER' BclFlT ('DIME' (Transp.'TEMPS')) ;
  ICour   = (&BclFlT) '-' 1 ;
  LiTps   = LiTps 'ET' ('PROG' (Transp. 'TEMPS' . ICour)) ;
  LesFlCo = ('REDU' (TRANSP . FLUXCONV . ICour '+' TRANSP . FLUXDIFF . ICour ) mailimg) ;
  FlTCour = 'MAXIMUM' ('RESULT' LesFlCo) ;
*  'LISTE' fltcour;
  LiFLT   = LiFLT 'ET' ('PROG' FlTCour) ;
  SI ( Icour < (('DIME' (Transp.'TEMPS')) '-' 1));
  zozo = zozo '+' (fltcour * (((Transp. 'TEMPS' . (ICour+1))) '-' ((Transp. 'TEMPS' . ICour))));
  roro = roro 'ET' ('PROG' zozo);
  LiTpm1 = LiTpm1 'ET' ('PROG' (Transp. 'TEMPS' . ICour)) ;
  'FINSI' ;
'FIN' BclFlT ;
*
XConvSY = 1.D0 ;
LiTpsy = LiTps '/' (XConvSY) ;
EvFLT = 'EVOL' 'ROUGE' 'MANUEL' 'Time (y)' LiTpsy 'Total FLux' (LiFLT '*' XconvSY) ;
*
ChTitr = 'CHAINE' 'Evolution du flux (1/year) en sortie (positif sortant)' ;

'SI' (GRAPH) ;
'DESSIN' EvFLT 'TITRE' ChTitr ;
'FINSI' ;

EvFLTS = 'EVOL' 'JAUNE' 'MANUEL' 'Time (y)' LiTpm1 'Total FLux (1/y) sortant'  roro ;

ChTitr = 'CHAINE' 'Evolution du flux total integre dans le temps en sortie (positif sortant)';



*
LiFLT = 'PROG' ;
LiTps = 'PROG' ;
*
*  Pas de CORRECTION normale sortante à droite

zozo = 0.D0;
roro = 'PROG';
litpm1 = 'PROG' ;
'REPETER' BclFlT ('DIME' (Transp.'TEMPS')) ;
  ICour   = (&BclFlT) '-' 1 ;
  LiTps   = LiTps 'ET' ('PROG' (Transp. 'TEMPS' . ICour)) ;
  LesFlCo =  ('REDU' (TRANSP . FLUXCONV . ICour '+' TRANSP . FLUXDIFF . ICour) mailimd)  ;
  FlTCour = 'MAXIMUM' ('RESULT' LesFlCo) ;
  LiFLT   = LiFLT 'ET' ('PROG' FlTCour) ;
  SI ( Icour < (('DIME' (Transp.'TEMPS')) '-' 1));
  zozo = zozo '+' (fltcour * (((Transp. 'TEMPS' . (ICour+1))) '-' ((Transp. 'TEMPS' . ICour))));
  roro = roro 'ET' ('PROG' zozo);
  LiTpm1 = LiTpm1 'ET' ('PROG' (Transp. 'TEMPS' . ICour)) ;
  'FINSI' ;
'FIN' BclFlT ;

LiTpsy = LiTps '/' (XConvSY) ;
EvFLT = 'EVOL' 'BLEU' 'MANUEL' 'Time (y)' LiTpsy 'Total FLux (1/y)' (LiFLT*xconvsy) ;

ChTitr = 'CHAINE' 'Evolution du flux total en entree (positif sortant)';

'SI' (graph) ;
'DESSIN' EvFLT 'TITRE' ChTitr ;
'FINSI';

EvFLTE = 'EVOL' 'JAUNE' 'MANUEL' 'Time (y)' LiTpm1 'Total FLux (1/y) entree ' roro ;

ChTitr = 'CHAINE' 'Evolution du flux total integre dans le temps à lentree 'ET' sortie (positif sortant)';
'SI' (graph) ;
'DESSIN' (EvFLTE 'ET' evflts) 'TITRE' ChTitr ;

'DESSIN' (evflts '+' evflte) TITRE 'flux total en entree ET sortie';

'DESSIN' (evflts '+' evflte '+' evmass) TITRE 'conservation masse totale';
'FINSI' ;

* Projection sur des SUPPORTS COMMUNS
ABSCi  = EXTR evflts 'ABSC' ;
LRflteA= IPOL ABSCi evflte  ;
LRmassA= IPOL ABSCi evmass  ;
evflteA='EVOL' 'JAUNE' 'MANUEL' 'Time (y)' ABSCi 'Total FLux (1/y) entree ' LRflteA ;
evmassA='EVOL' 'ROUGE' 'MANUEL' 'Time (y)' ABSCi 'Total mass' LRmassA ;

Bilan = evflts '+' evflteA '+' evmassA '-' 1.D0 ;
LRE1= 'EXTR' Bilan 'ORDO';
err1=('MAXI' 'ABS' LRE1) ;
'MESS' 'conservation de la masse' err1;

'SI' (err1 > 1.D-11 ) ;
   'MESS' 'mauvaise conservation de la masse:' err1 ;
   'ERREUR' 5;
'SINON' ;
*  pas d'erreur de conservation
   ERCONSEF = VRAI;   
'FINSI'   ;


**************post VF ********************************************
* on sauve la derniere concentration EFMH

concEFMH = Transp . CONCENTRATION . (('DIME' transp . TEMPS) '-' 1);



*-- Table de transport :
Transp                         = 'TABLE';
Transp . 'MODELE'              = MODHYB ;
Transp.'TEMPS'                 = 'TABLE';
Transp.'CONCENTRATION'         = 'TABLE';
Transp.'FLUXDIFF'              = 'TABLE';
Transp.'FLUXCONV'              = 'TABLE';
Transp.'CARACTERISTIQUES'      = 1.D-10 * MATI2;
Transp.'POROSITE'              = 1.D0;
Transp.'COEF_RETARD'           = 1.D0;
*Transp.'CONVECTION'            =  NOMC 'SCAL' FLU3 ;
Transp.'CONVECTION'            =  (nomc SCAL (1.D0 * QFACE1)) / (doma MODHYB SURFACE) ;
Transp . 'CONVECTION'        = Transp . CONVECTION * (doma Modhyb NORMALE);
Transp.'VITELEM'            =   VCENT1 ;
*Transp . 'ALPHAL'           = MANU 'CHPO' (doma MODHYB centre)
*                              'SCAL' 1.D0;
*Transp . 'ALPHAT'           = MANU 'CHPO' (doma MODHYB centre)
*                              'SCAL' 0.D0;

* Conditions initiales :
Transp.'TEMPS'. 0              = TMIN ;
Transp.'CONCENTRATION'. 0      = TCHYB;
Transp.'FLUXDIFF'. 0           = 0.D0 * FLU3 ;
Transp.'FLUXCONV'. 0           = 0.D0 * FLU3;

* Conditions aux limites :
Transp . 'TRACE_IMPOSE' = CHAR ('MANU' 'CHPO' ('DOMA' MODGAU 'CENTRE') 1 'H' 0.D0  'NATURE' 'DISCRET') ('EVOL' 'MANU' ('PROG' 0. TSUP) ('PROG' 1. 1.))       ;
*Transp . 'FLUXTOT_IMP' =  TTT1       ;


* Paramètres numeriques :
Transp.'THETA_DIFF'            = 1.D0;
Transp.'THETA_CONVECTION'      = 1.D0;
Transp.'LUMP'                  = FAUX;
Transp.'TYPDISCRETISATION'     = 'VF';
Transp.'DECENTR'          = VRAI;

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 * TCHYB;
*                                                            ==========
*                                                            | CALCUL |
*                                                            ==========


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

****************************************************************************
'SI' (GRAPH) ;
titre 'Premier champ de concentration' ;
trac (kcha TRANSP . CONCENTRATION . 1 MODHYB CHAM) modhyb;
*
NbTps = 'DIME' (Transp.'TEMPS') ;
titre 'Dernier champ de concentration calcule' ;
trac (kcha (TRANSP . CONCENTRATION . (NbTps - 1)) MODHYB CHAM) modhyb;
'FINSI' ;



LiMASS = 'PROG' ;
LiTps = 'PROG' ;
zozo = 0.D0;
roro = 'PROG';
litpm1 = 'PROG' ;
*



'REPETER' BclFlT (('DIME' (Transp.'TEMPS')) - 1 );
  ICour   = (&BclFlT) ;
  toto = 'KOPS' transp . CONCENTRATION . Icour  * transp . POROSITE;
  toto = toto * ('DOMA' modhyb VOLUME);
*  'LISTE' ('MAXIMUM' ('RESULT' toto));
   LiTps   = LiTps 'ET' ('PROG' (Transp. 'TEMPS' . ICour)) ;
  FlTCour = 'MAXIMUM' ('RESULT' toto) ;
*  'LISTE' fltcour;
  LiMASS   = LiMASS 'ET' ('PROG' FlTCour) ;
'FIN' BclFlT ;


mailimg = 'DOMA' modgau centre;
mailimd = 'DOMA' moddro centre;


EvMASS = 'EVOL' 'ROUGE' 'MANUEL' 'Time (y)' Litps 'Total mass' (LiMASS) ;

'SI' (graph) ;
'DESSIN' EvMASS 'TITRE' 'evolution de la masse dans les fractures' ;
'FINSI' ;


LiFLT = 'PROG' ;
LiTps = 'PROG' ;
zozo = 0.D0;
roro = 'PROG';
litpm1 = 'PROG' ;
'REPETER' BclFlT ('DIME' (Transp.'TEMPS')) ;
  ICour   = (&BclFlT) '-' 1 ;
  LiTps   = LiTps 'ET' ('PROG' (Transp. 'TEMPS' . ICour)) ;
  LesFlCo = ('REDU' (TRANSP . FLUXCONV . ICour '+' TRANSP . FLUXDIFF . ICour ) mailimg) ;
  FlTCour = 'MAXIMUM' ('RESULT' LesFlCo) ;
*  'LISTE' fltcour;
  LiFLT   = LiFLT 'ET' ('PROG' FlTCour) ;
  SI ( Icour < (('DIME' (Transp.'TEMPS')) '-' 1));
  zozo = zozo '+' (fltcour * (((Transp. 'TEMPS' . (ICour+1))) '-' ((Transp. 'TEMPS' . ICour))));
  roro = roro 'ET' ('PROG' zozo);
  LiTpm1 = LiTpm1 'ET' ('PROG' (Transp. 'TEMPS' . ICour)) ;
  'FINSI' ;
'FIN' BclFlT ;
*
XConvSY = 1.D0 ;
LiTpsy = LiTps '/' (XConvSY) ;
EvFLT = 'EVOL' 'ROUGE' 'MANUEL' 'Time (y)' LiTpsy 'Total FLux' (LiFLT '*' XconvSY) ;
*
ChTitr = 'CHAINE' 'Evolution du flux (1/year) en sortie (positif sortant)' ;

'SI' (GRAPH) ;
'DESSIN' EvFLT 'TITRE' ChTitr ;
'FINSI' ;

EvFLTS = 'EVOL' 'JAUNE' 'MANUEL' 'Time (y)' LiTpm1 'Total FLux (1/y) sortant'  roro ;

ChTitr = 'CHAINE' 'Evolution du flux total integre dans le temps en sortie (positif sortant)';



*
LiFLT = 'PROG' ;
LiTps = 'PROG' ;
*
*  Pas de CORRECTION normale sortante à droite

zozo = 0.D0;
roro = 'PROG';
litpm1 = 'PROG' ;
'REPETER' BclFlT ('DIME' (Transp.'TEMPS')) ;
  ICour   = (&BclFlT) '-' 1 ;
  LiTps   = LiTps 'ET' ('PROG' (Transp. 'TEMPS' . ICour)) ;
  LesFlCo =  ('REDU' (TRANSP . FLUXCONV . ICour '+' TRANSP . FLUXDIFF . ICour) mailimd)  ;
  FlTCour = 'MAXIMUM' ('RESULT' LesFlCo) ;
  LiFLT   = LiFLT 'ET' ('PROG' FlTCour) ;
  SI ( Icour < (('DIME' (Transp.'TEMPS')) '-' 1));
  zozo = zozo '+' (fltcour * (((Transp. 'TEMPS' . (ICour+1))) '-' ((Transp. 'TEMPS' . ICour))));
  roro = roro 'ET' ('PROG' zozo);
  LiTpm1 = LiTpm1 'ET' ('PROG' (Transp. 'TEMPS' . ICour)) ;
  'FINSI' ;
'FIN' BclFlT ;

LiTpsy = LiTps '/' (XConvSY) ;
EvFLT = 'EVOL' 'BLEU' 'MANUEL' 'Time (y)' LiTpsy 'Total FLux (1/y)' (LiFLT*xconvsy) ;

ChTitr = 'CHAINE' 'Evolution du flux total en entree (positif sortant)';

'SI' (graph) ;
'DESSIN' EvFLT 'TITRE' ChTitr ;
'FINSI';

EvFLTE = 'EVOL' 'JAUNE' 'MANUEL' 'Time (y)' LiTpm1 'Total FLux (1/y) entree ' roro ;

ChTitr = 'CHAINE' 'Evolution du flux total integre dans le temps à lentree 'ET' sortie (positif sortant)';
             'SI' (graph) ;
'DESSIN' (EvFLTE 'ET' evflts) 'TITRE' ChTitr ;

'DESSIN' (evflts '+' evflte) TITRE 'flux total en entree ET sortie';

'DESSIN' (evflts '+' evflte '+' evmass) TITRE 'conservation masse totale';
'FINSI' ;

* Projection sur des SUPPORTS COMMUNS
ABSCi  = EXTR evflts 'ABSC' ;
LRflteA= IPOL ABSCi evflte  ;
LRmassA= IPOL ABSCi evmass  ;
evflteA='EVOL' 'JAUNE' 'MANUEL' 'Time (y)' ABSCi 'Total FLux (1/y) entree ' LRflteA ;
evmassA='EVOL' 'ROUGE' 'MANUEL' 'Time (y)' ABSCi 'Total mass' LRmassA ;

Bilan = evflts '+' evflteA '+' evmassA '-' 1.D0 ;
LRE2  = 'EXTR' Bilan 'ORDO';
err2  =('MAXI' 'ABS' LRE2) ;
'MESS' 'conservation de la masse' err2;




'SI' ( err2 > 1.D-11 ) ;
   'MESS' 'mauvaise conservation de la masse:' err2 ;
   'ERREUR' 5;
'SINON' ;
*  pas d'erreur de conservation
   ERCONSVF = VRAI;
'FINSI'    ;


* On sauve la concentration VF finale

concVF =  Transp . CONCENTRATION . (('DIME' transp . TEMPS) '-' 1);


**************** COMPAR VF - EFMH **********************************

toto = concEFMH '-' concVF ;
toto = 'KOPS' toto * toto;
toto = ('DOMA' modhyb volume) * toto;
toto = 'MAXIMUM' (('RESULT' toto));
titi = ('DOMA' modhyb volume) * ('KOPS' concVF * concVF);
titi = 'MAXIMUM' ('RESULT' titi);
err3 = (toto '/' titi)**0.5D0;

'MESSAGE' 'erreur relative L2' err3;

'SI' (err3 > 1.D-2) ;
   'MESS' 'Comparaison VF - EFMH mauvaise:' err3 ;
   'ERREUR' 5 ;
'SINON' ;
    erEFVF = VRAI;
'FINSI' ;


**************** POST HYDRAU ****************************************

FLTotE  = 'RESULT' (('REDU' QFACE1 mailimd)) ;
FLTotE = -1.D0 * FltotE;
fltote = maxi fltote;

* FLux sortants
FLTotS  = 'RESULT' (('REDU' QFACE1 mailimg)) ;
fltots = maxi fltots;

* Affichage des resultats

'MESSAGE' 'Resultats hydraulique : ' ;
'MESSAGE' ' ' ;
'MESSAGE' 'FLux entrant (total, rapporte à la surface) ' FLTotE  ;
'MESSAGE' 'FLux sortant (total, rapporte à la surface) ' FLTotS  ;
'MESSAGE' ' ' ;
'MESSAGE' 'Keq associes ' Keq1 Keq2 ;


'SI' (erefvf 'ET' erconsvf 'ET' erconsef) ;
  'ERREUR' 0;
'SINON' ;
  'ERREUR' 5;
'FINSI' ;


'FIN';
 

 

 

 

