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