Download ht_pro.procedur

Back to the list

   1 : * HT_PRO    PROCEDUR  FANDEUR   13/03/25    21:15:00     7446           
   2 : ************************************************************************
   3 : *  Fonction qui calcule la saturation et la teneur en eau
   4 : *  en fonction de la pression d'eau.
   5 : *
   6 : *  Loi de Van Genuchten :
   7 : *  Saturation réduite dans [0,1] : S = [1 + (-beta Pw)^n]^(-m)
   8 : *
   9 : *  et S = (TH2O - teta_r)/(poros - teta_r)
  10 : *
  11 : *  Entrée :
  12 : *  --------
  13 : *    LOI    : table de données contenant les indices
  14 : *               BHETA, NEXP, MEXP     : coef. de la loi
  15 : *           ou  BHETA, COEF_N, COEF_C : coef. de la loi
  16 : *                                   (attention à l'unité de beta)
  17 : *               PORO              porosité (s. d.)         poros
  18 : *               TERESIDU          teneur en eau résiduelle teta_r
  19 : *    PW     : Pression d'eau (négative)
  20 : *              = succion si Pgaz = 0 (1 atm par convention)
  21 : *
  22 : *  Sortie :
  23 : *  --------
  24 : *    SAT               : saturation réduite S
  25 : *    TENEUR            : teneur en eau      TH20
  26 : *    CAPP              : capacite
  27 : *
  28 : ************************************************************************
  29 : *
  30 : *  Remarque :
  31 : *  ----------
  32 : *
  33 : *  L'unité dans laquelle sont exprimées les pressions doit être cohérente
  34 : *  avec la valeur du paramètre BHETA.
  35 : *
  36 : ************************************************************************
  37 : 'DEBPROC' HT_PRO LOI*'TABLE' PW/'CHPOINT'                              ;
  38 : 
  39 : LOISAT = 'CHAINE' LOI.'SOUSTYPE'                                       ;
  40 : 
  41 : 'SI' ('EXISTE' LOI 'NOMZONE')                                          ;
  42 :   NOMT = 'CHAINE' LOI.'NOMZONE'                                        ;
  43 : 'SINON'                                                                ;
  44 :   NOMT = 'CHAINE' '??????'                                             ;
  45 : 'FINSI'                                                                ;
  46 : 
  47 : *     Vérification des paramètres
  48 : 
  49 : 'SI' ('NON' ('EXISTE' PW))                                             ;
  50 :     'SI' ('EGA' LOISAT 'VAN_GENUCHTEN')                                ;
  51 :       'SI' ('NON' ('EXISTE' LOI 'NEXP' ))                              ;
  52 :          'ERREUR' ('CHAINE' 'Il manque le coefficient '
  53 :                             'NEXP dans la loi de saturation ' NOMT)    ;
  54 :       'FINSI'                                                          ; 
  55 :       'SI' ('NON' ('EXISTE' LOI 'MEXP' ))                              ;
  56 :          'ERREUR' ('CHAINE' 'Il manque le coefficient '
  57 :                             'MEXP dans la loi de saturation ' NOMT)    ;
  58 :       'FINSI'                                                          ;
  59 :       'SI' ('NON' ('EXISTE' LOI 'BHETA' ))                             ;
  60 :          'ERREUR' ('CHAINE' 'Il manque le coefficient '
  61 :                             'BHETA dans la loi de saturation ' NOMT)   ;
  62 :       'FINSI'                                                          ;
  63 :     'SINON'                                                            ;
  64 :       'SI' (('EGA' LOISAT 'EXPONENTIELLE') 'OU'
  65 :             ('EGA' LOISAT 'LOGARITHMIQUE'))                            ;
  66 :         'SI' ('NON' ('EXISTE' LOI 'COEF_C' ))                          ;
  67 :            'ERREUR' 'Il manque le coefficient COEF_C dans'
  68 :                   ' la loi de saturation de ' NOMT                     ;
  69 :         'FINSI'                                                        ;
  70 :         'SI' ('NON' ('EXISTE' LOI 'COEF_N' ))                          ;
  71 :            'ERREUR' 'Il manque le coefficient COEF_N dans'
  72 :                   ' la loi de saturation de ' NOMT                     ;
  73 :         'FINSI'                                                        ;
  74 :         'SI' ('NON' ('EXISTE' LOI 'BHETA' ))                           ;
  75 :            'ERREUR' 'Il manque le coefficient BHETA dans'
  76 :                   ' la loi de saturation de ' NOMT                     ;
  77 :         'FINSI'                                                        ;
  78 :       'SINON'                                                          ;
  79 :         'ERREUR' 'loi de saturation  de ' NOMT ' : type '
  80 :                  LOISAT ' inconnue ...'                                ;
  81 :       'FINSI'                                                          ;
  82 :    'FINSI'                                                             ;
  83 :    'SI' ('NON' ('EXISTE' LOI 'PORO' ))                                 ;
  84 :       'ERREUR' 'Il manque le coefficient PORO dans'
  85 :                   ' la loi de saturation de ' NOMT                     ;
  86 :    'FINSI'                                                             ;
  87 :    SAT = VRAI ; TENEUR = VRAI ; CAPP = VRAI ;                          ;
  88 : 'SINON'                                                                ;
  89 : 
  90 :    'SI' ('NON' ('EXISTE' LOI 'PORO' ))                                 ;
  91 :       'ERREUR' 'Il manque le coefficient PORO dans'
  92 :                   ' la loi de saturation de ' NOMT                     ;
  93 :    'FINSI'                                                             ;
  94 : 
  95 :    'SI' ('EXISTE' LOI 'TERESIDU' )                                     ;
  96 :       teta_r = LOI.'TERESIDU'                                          ;
  97 :    'SINON'                                                             ;
  98 :       teta_r = 0.                                                      ;
  99 :    'FINSI'                                                             ;
 100 : 
 101 :    'SI' ('EGA' LOISAT 'VAN_GENUCHTEN')                                 ;
 102 : *     saturation
 103 :       HH2    = (-1.D0 '*' LOI.'BHETA') '*' Pw                          ;
 104 :       HH3    = 1. '+' (HH2 '**' LOI.'NEXP')                            ;
 105 :       SAT    = HH3 '**' (-1.D0 * LOI.'MEXP')                           ;
 106 : *     capacite
 107 :       CAPP   = LOI.'MEXP' * LOI.'NEXP' * LOI.'BHETA'                   ;
 108 :       CAPP   = CAPP * (HH2 '**' (LOI.'NEXP' '-' 1))                    ;
 109 :       CAPP   = CAPP '/' (HH3 '**'  (LOI.'MEXP' '+' 1))                 ;
 110 :       CAPP   = CAPP * (LOI.'PORO' '-' teta_r)                          ;
 111 :    'FINSI'                                                             ;
 112 : 
 113 :    'SI' ('EGA' LOISAT 'EXPONENTIELLE')                                 ;
 114 :       SAT =  PW '*' LOI.'BHETA'                                        ;
 115 :       SAT =  'EXP'  ('ABS'  SAT)                                       ;
 116 :       SATN =  SAT '**' LOI.'COEF_N'                                    ;
 117 :       SAT =  SATN '+' (LOI.'COEF_C' '-' 1.)                            ;
 118 :       SAT = SAT '**' -1.                                               ;
 119 :       SAT = SAT '*' LOI.'COEF_C'                                       ;
 120 : 
 121 :       CAPP = SAT * SAT                                                 ;
 122 :       CAPP = CAPP '/' LOI.'COEF_C'                                     ;
 123 :       CAPP = SATN * CAPP                                               ;
 124 :       CAPP = LOI.'BHETA' * LOI.'COEF_N' * CAPP                         ;
 125 :       CAPP = CAPP * (LOI.'PORO' '-' teta_r)                            ;
 126 :    'FINSI'                                                             ;
 127 : 
 128 :    'SI' ('EGA' LOISAT 'LOGARITHMIQUE')                                 ;
 129 :       SAT = PW '*' LOI.'BHETA'                                         ;
 130 :       SOT = 'MASQUE' ('ABS' SAT) 'SUPERIEUR' 1.D0                      ;
 131 : * on tronque à 1 si inferieur à 1, C'est dans la loi
 132 :       SAT = (SAT * SOT) '+' (1.D0 '-' SOT)                             ;
 133 :       SATN =  'LOG'  (('ABS' SAT) '+' 1.D-30)                          ;
 134 :       SAT = ('ABS'  SATN)  '**' LOI.'COEF_N'                           ;
 135 :       SAT =  SAT '+' LOI.'COEF_C'                                      ;
 136 :       SAT =  SAT  '**' -1.                                             ;
 137 :       SAT =  SAT '*' LOI.'COEF_C'                                      ;
 138 : 
 139 :       CAPP = SAT * SAT                                                 ;
 140 :       CAPP = CAPP '/'  LOI.'COEF_C'                                    ;
 141 :       CAPP = CAPP * (SATN '**' ( LOI.'COEF_N' '-' 1.D0))               ;
 142 :       CAPP = CAPP *  LOI.'COEF_N'                                      ;
 143 :       CAPP = CAPP '/' PW                                               ;
 144 :       CAPP = CAPP * (LOI.'PORO' '-' teta_r)                            ;
 145 :     'FINSI'                                                            ;
 146 : 
 147 : **************          TENEUR EN EAU *****************************
 148 :    T1pm   = SAT '*' (LOI.'PORO' '-' teta_r)                            ;
 149 :    TENEUR = T1pm '+' teta_r                                            ;
 150 : 
 151 : 'FINSI'                                                                ;
 152 : 
 153 : 'FINPROC' SAT TENEUR CAPP                                              ;
 154 : ************************************************************************
 155 : 
 156 :  
 157 :  
 158 :  

© Cast3M 2003 - All rights reserved.
Disclaimer