Download gaculVF.dgibi

Back to the list

* fichier : gaculVF.dgibi
GRAPH = FAUX ;
******************** CAS TEST : gacul.dgibi ************************
*
*
* Test de fonctionnement de DARCYSAT en 2D avec effet de gravite
* ==============================================================
* Infiltration d'eau dans une colonne verticale de sable uniformément
* désaturé.
*
* -  condition initiale : désaturation uniforme correspondant à une
*    succion de 1,15 m ;
* -  a l'instant initial, une extrémité de la colonne est noyée.
*    La frontière est supposée rester a pression nulle ;
*
* ===================================================================
*    Les options de modélisation declarées dans la table transmise à
*    la procédure DARCYSAT sont les suivantes :
*
*
* -  les effets gravitationnels sont pris en compte (indice GRAVITE de
*    valeur VRAI);
*
* -  Une liste de temps de sauvegarde est fournie en valeur de l'indice
*    TEMPS_SAUVES ;
*
* -  Le pas de temps est d'abord automatique (indice TEMPS_CALCULES absent)
*    L'utilisateur fournit
*    > le pas de temps initial (indice 'DT_INITIAL'),
*    > le nombre d'itérations recherché par pas de temps (indice 'NITER')
*    > le nombre de pas de temps (indice 'NPAS')
*
* -  Une sous-relaxation de 0,8 est prise en compte (indice SOUSRELAX)
*
* -  L'homogenéisation spatiale des propriétes physiques s'effectue
*    par moyenne arithmétique des valeurs obtenues aux faces (indice
*    HOMOGENEISATION de valeur DECENTRE)
*
*!!!!!!!!!!!!!!!!!!!!!!!!
* -  La précision de convergence demandée est de 0,5 mm (indice RESIDU_MAX)
* cas test tiré du rapport DMT 97/25 :
* "Implémentation dans CASTEM 2000 d'un modèle de transfert hydrique
*  en milieu poreux non saturé"
*
*
********************* CAS TEST : gacul.dgibi ************************

'OPTION' 'ECHO' 1 ;
'SAUTER' 'PAGE';
*
'TITRE' 'infiltration verticale dans le sable : gacul.dgibi';
'OPTION' 'DIME' 2 'ELEM' 'QUA4' ;
'OPTION' 'ISOV' 'LIGN' 'TRACER' 'PSC' ;

*--------------------------------------------------------------------
* Création maillage
*
*- Discrétisation :
ENX = 1      ;
ENY = 200    ;
'DENS' (1./eny) ;

*- Création des points et des droites
*
A0 = -.5   1.0D0;  B0 = .5  1.0D0;
A1 = -.5   0.5D0;  B1 = .5  0.5D0;
A2 = -.5   0.25D0;  B2 = .5  0.25D0 ;
A3 = -.5   0.0D0;  B3 = .5  0.0D0 ;

*- Création des droites
*
AB0 = 'DROIT' ENX A0 B0 ;
AB1 = 'DROIT' ENX A1 B1 ;
AB2 = 'DROIT' ENX A2 B2 ;
AB3 = 'DROIT' ENX A3 B3 ;

*- Creation des surfaces
*
MASSIF0 = AB3 'REGLER' AB2 'REGLER' AB1 'REGLER' AB0 ;
ENY  = 'NBEL' MASSIF0 ;
ENTR = 'COULEUR' ('INVERSE' AB0) 'ROUGE' ;
SORT = 'COULEUR' (AB3) 'ROUGE' ;

'SI' GRAPH  ;
  'TRACER' (MASSIF0 'ET' ENTR 'ET' SORT) ;
'FINSI' ;

*- Creation des maillages contenant tous les points
*
QFTOT  = 'CHANGER' MASSIF0 'QUAF' ;
QFSORT = 'CHANGER' SORT    'QUAF' ;
QFENTR = 'CHANGER' ENTR    'QUAF' ;


'ELIMINATION' 0.00001 (QFTOT 'ET' QFSORT 'ET' QFENTR) ;

*- Modèles
*
MODHYB  = 'MODELE' QFTOT  'DARCY' 'ISOTROPE'        ;
MODENTR = 'MODELE' QFENTR 'DARCY' 'ISOTROPE'        ;
MODSORT = 'MODELE' QFSORT 'DARCY' 'ISOTROPE'        ;
CEENTR  = 'DOMA'  MODENTR 'CENTRE' ;
CESORT  = 'DOMA'  MODSORT 'CENTRE' ;
HYCEN   = 'DOMA'  MODHYB  'CENTRE' ;
HYFAC   = 'DOMA'  MODHYB  'FACE';

*- ordonnées
*
NDIME = 'VALEUR' 'DIME' ;
ZCC   = 'COOR' HYCEN NDIME ;
ZFF   = 'COOR' HYFAC NDIME ;

*- Création ligne de suivi pour le post-traitement et le test
* ligne des points centres (cas 1D)
*
'REPETER' BCL (ENY - 1) ;
    IP = &BCL ;
    JP = IP + 1 ;
    PI = 'POINT' HYCEN IP ;
    PJ = 'POINT' HYCEN JP ;
   'SI' (IP 'EGA' 1);
      LCENC = ('MANU' 'SEG2' PI PJ) ;
   'SINON' ;
      LCENC = LCENC 'ET' ('MANU' 'SEG2' PI PJ) ;
   'FINSI' ;
 FIN BCL ;

*--------------------------------------------------------------------
*- pression initiale (metre d'eau) dans le sable
HN    = -1.15 ;

*--------------------------------------------------------------------
*- Conditions aux limites

*- frontière en limite du domaine de calcul (milieu désaturé)
ESORT = 'NOMC' (('REDU' ZFF CESORT) + HN) 'TH' 'NATURE' 'DISCRET';


*- frontière mouillée
EENTR = 'NOMC' ('REDU' ZFF CEENTR) 'TH' 'NATURE' 'DISCRET';

*- chargement des CLs
LICALC = 'PROG' 0.D0  1.e20 ;
LIST1  = 'PROG' 2 * 1.D0 ;
VALI0  = 'CHAR' 'THIM' (ESORT et EENTR)  ('EVOL' 'MANU' LICALC LIST1) ;

*--------------------------------------------------------------------
*- initialisation des inconnues
*  (doit être compatible avec les conditions aux limites)
*

*- trace de charge d'eau
z      = 'REDU' (ZFF + HN) ('DIFF' CEENTR HYFAC) ;


*- charge d'eau
H0     = 'NOMC' (ZCC + HN) 'H' 'NATURE' 'DISCRET';

*- flux
QFACE0 = 'MANU' 'CHPO' HYFAC 1 'FLUX' 0.D0 'NATURE' 'DISCRET' ;


*                                         ---------------------------
*                                         = Table DARCY_TRANSITOIRE =
*                                         ---------------------------
*- initialisation table
SATUR                     = 'TABLE' ;
SATUR. 'TEMPS'            = 'TABLE' ;
SATUR. 'CHARGE'           = 'TABLE' ;
SATUR. 'FLUX'             = 'TABLE' ;


SATUR . 'ITMAX' = 20;

*- données géommétriques
SATUR. 'SOUSTYPE'         = 'DARCY_TRANSATUR' ;
SATUR. 'MODELE'           = MODHYB              ;

*- instant initial
SATUR. 'TEMPS' . 0        = 0.                  ;
SATUR. 'CHARGE' . 0       = H0                  ;
SATUR. 'FLUX' . 0         = QFACE0              ;

*- conditions aux limites et chargements
SATUR . 'TRACE_IMPOSE' = VALI0 ;


SATUR . 'LUMP'   = FAUX;
SATUR . 'TYPDISCRETISATION'   = 'VF' ;

* GBM MODIFIE

TABRES = table METHINV;
TABRES . 'TYPINV' = 2;
TABRES . 'PRECOND' = 5;

SATUR . 'METHINV' = TABRES;
SATUR . 'METHINV' . RESID = 1.D-20;


*- données physiques
* loi de perméabilité
LoiP                      = 'TABLE' 'PUISSANCE';
LoiP.'ALPHA'              = 7.3 ;
LoiP.'PERMSAT'            = 5.85E-2 / 3600. ;
SATUR.'LOI_PERMEABILITE'  = 'TABLE' LoiP ;

* loi de succion
LoiS                      = 'TABLE' 'VAN_GENUCHTEN';
LoiS. 'PORO'              = 0.3 ;
LoiS. 'TERESIDU'          = 0.055 ;
LoiS. 'NEXP'              = 2.0304  ;
LoiS. 'MEXP'              = 0.5075 ;
LoiS. 'BHETA'             = 0.029227 * 100. ;
SATUR.'LOI_SATURATION'    = 'TABLE' LoiS ;

* gravité (rho_w g,  en mètres d'eau, vaut 1)
SATUR. 'FORCE_GRAVITE'    = 1.;

*- données numériques
SATUR. 'SOUS_RELAXATION'  = 1.0D0;
SATUR. 'TEMPS_FINAL'      = 3000. ;
SATUR. 'HOMOGENEISATION'  = 'CHAINE' 'DECENTRE' ;
SATUR. 'NPAS'             = 1000 ;
SATUR. 'RESIDU_MAX'       = 1.D-2 ;
SATUR. 'NITER'            = 12 ;
SATUR. 'DT_INITIAL'       = 5. ;
SATUR. 'TEMPS_SAUVES'     = ('PROG' 1 'PAS' 1 6.)*500. ;
*SATUR. 'MESSAGES'         = 0 ;


'SI' GRAPH ;
*--------------------------------------------------------------------
*--- Visualisation de la loi de capacité capillaire.
* droite support des variables
  dx  = 'DROIT' (0. -1.15 ) 1000  (0. 0.) ;
  zc  = 'COOR' dx 2 ;
  ev2 = 'EVOL' 'BLEU' 'CHPO' zc 'SCAL' dx ;
  px  = 'EXTR' ev2 'ORDO' ;
* calcul de la teneur en eau pour la pression zc
  TAB = 'TABLE'  ;
  s0 t0 cap = HT_PRO (SATUR.'LOI_SATURATION') ZC  ;
  ev0 = 'EVOL' 'TURQ' 'CHPO' s0 'SCAL' dx ;
  evt = 'EVOL' 'VERT' 'MANU' px (100. * ('EXTR' ev0 'ORDO')) ;
  'DESSIN' evt 'TITX' 'Pc(m)' 'TITY' 'S(%)'
               'TITRE' 'Loi capillaire S(Pc)' ;
* calcul de la teneur en eau pour la pression zc - dp
  dp  = 1.e-4 ;
  s1 t1 cap = HT_PRO (SATUR.'LOI_SATURATION')
               ('KOPS' zc '-'  dp) ;
* représentation de la capacité
  c1  = (t0 - t1) / dp;
  ev1 = 'EVOL' 'ROUGE' 'CHPO' c1 'SCAL' dx ;
  evc = 'EVOL' 'JAUNE' 'MANU' px ('EXTR' ev1 'ORDO') ;
  'DESSIN' evc 'TITX' 'Pc(m)' 'TITY' 'Capa(1/m)'
               'TITRE' 'Capacite capillaire' ;
'FINSI' ;

*                                           ===========================
*                                           |         CALCUL          |
*                                           ===========================
DARCYSAT SATUR ;

* Post-traitement
* ===============
*-- Test de non régression
* Le test est effectué en vérifiant la solution à 1 heure de temps physique

*- solution a 1 heure de temps physique
lp = 'PROG' 35*-1.1500 -1.1501 -1.1496 -1.1516 -0.95203 -0.40387
            -0.22041 -0.15351 -0.11533 -8.84629E-02 -6.74391E-02
            -4.98338E-02 -3.43395E-02 -2.01365E-02 -6.63732E-03 ;

*- construction de la pression aux centres
SATUR.'PRESSION' = 'TABLE'  ;
'REPETER' bb (dime SATUR.TEMPS) ;
   id = &bb - 1 ;
   HN = SATUR.'CHARGE'.id ;
   SATUR.'PRESSION'.id = (nomc HN SCAL 'NATURE' 'DISCRET') - ZCC ;
'FIN' bb ;

*ev   = 'EVOL' 'CHPO' SATUR.'PRESSION'. 4 'SCAL' LCENC ;
*lp2  = 'EXTR' ev 'ORDO' ;
*err1 = 'MAXIMUM' ('ABS' (lp - lp2)) ;
*mess 'régression : ' err1 ;

*-- Tracé (tous les temps)
  LT        = 'LECT' 0  PAS 1 ((dime SATUR.TEMPS) - 1)  ;
  liopt     = 'MOTS' 'MIMA' 'AXES';
  TDES      = TRACHIS SATUR 'CHARGE' LCENC LT 'PREF' ' ' 'UNIT' 's' ;
'SI' GRAPH ;
  DESTRA TDES liopt 'TITX' 'z (m)' 'TITY' 'Pw (m)' ;
'FINSI' ;

toto = 'PRIM' TDES . 6 . VALEUR;
inta = 'EXTRAIRE' toto 'ORDO';
inta = 'EXTRAIRE'  ('DIME' inta) inta;

err = 'ABS' (inta '+' 0.235 '/' 0.235);
'LISTE' err;

'SI' (err > 2.D-2) ;
   'ERREUR'  5;
'FINSI'  ;
 

'FIN';

 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer