* HT_PRO PROCEDUR FANDEUR 13/03/25 21:15:00 7446 ************************************************************************ * Fonction qui calcule la saturation et la teneur en eau * en fonction de la pression d'eau. * * Loi de Van Genuchten : * Saturation réduite dans [0,1] : S = [1 + (-beta Pw)^n]^(-m) * * et S = (TH2O - teta_r)/(poros - teta_r) * * Entrée : * -------- * LOI : table de données contenant les indices * BHETA, NEXP, MEXP : coef. de la loi * ou BHETA, COEF_N, COEF_C : coef. de la loi * (attention à l'unité de beta) * PORO porosité (s. d.) poros * TERESIDU teneur en eau résiduelle teta_r * PW : Pression d'eau (négative) * = succion si Pgaz = 0 (1 atm par convention) * * Sortie : * -------- * SAT : saturation réduite S * TENEUR : teneur en eau TH20 * CAPP : capacite * ************************************************************************ * * Remarque : * ---------- * * L'unité dans laquelle sont exprimées les pressions doit être cohérente * avec la valeur du paramètre BHETA. * ************************************************************************ LOISAT = 'CHAINE' LOI.'SOUSTYPE' ; 'SI' ('EXISTE' LOI 'NOMZONE') ; NOMT = 'CHAINE' LOI.'NOMZONE' ; 'SINON' ; NOMT = 'CHAINE' '??????' ; 'FINSI' ; * Vérification des paramètres 'SI' ('NON' ('EXISTE' PW)) ; 'SI' ('EGA' LOISAT 'VAN_GENUCHTEN') ; 'SI' ('NON' ('EXISTE' LOI 'NEXP' )) ; 'ERREUR' ('CHAINE' 'Il manque le coefficient ' 'FINSI' ; 'SI' ('NON' ('EXISTE' LOI 'MEXP' )) ; 'ERREUR' ('CHAINE' 'Il manque le coefficient ' 'FINSI' ; 'SI' ('NON' ('EXISTE' LOI 'BHETA' )) ; 'ERREUR' ('CHAINE' 'Il manque le coefficient ' 'FINSI' ; 'SINON' ; 'SI' (('EGA' LOISAT 'EXPONENTIELLE') 'OU' ('EGA' LOISAT 'LOGARITHMIQUE')) ; 'SI' ('NON' ('EXISTE' LOI 'COEF_C' )) ; 'ERREUR' 'Il manque le coefficient COEF_C dans' ' la loi de saturation de ' NOMT ; 'FINSI' ; 'SI' ('NON' ('EXISTE' LOI 'COEF_N' )) ; 'ERREUR' 'Il manque le coefficient COEF_N dans' ' la loi de saturation de ' NOMT ; 'FINSI' ; 'SI' ('NON' ('EXISTE' LOI 'BHETA' )) ; 'ERREUR' 'Il manque le coefficient BHETA dans' ' la loi de saturation de ' NOMT ; 'FINSI' ; 'SINON' ; 'ERREUR' 'loi de saturation de ' NOMT ' : type ' LOISAT ' inconnue ...' ; 'FINSI' ; 'FINSI' ; 'SI' ('NON' ('EXISTE' LOI 'PORO' )) ; 'ERREUR' 'Il manque le coefficient PORO dans' ' la loi de saturation de ' NOMT ; 'FINSI' ; SAT = VRAI ; TENEUR = VRAI ; CAPP = VRAI ; ; 'SINON' ; 'SI' ('NON' ('EXISTE' LOI 'PORO' )) ; 'ERREUR' 'Il manque le coefficient PORO dans' ' la loi de saturation de ' NOMT ; 'FINSI' ; 'SI' ('EXISTE' LOI 'TERESIDU' ) ; teta_r = LOI.'TERESIDU' ; 'SINON' ; teta_r = 0. ; 'FINSI' ; 'SI' ('EGA' LOISAT 'VAN_GENUCHTEN') ; * saturation HH2 = (-1.D0 '*' LOI.'BHETA') '*' Pw ; HH3 = 1. '+' (HH2 '**' LOI.'NEXP') ; SAT = HH3 '**' (-1.D0 * LOI.'MEXP') ; * capacite CAPP = LOI.'MEXP' * LOI.'NEXP' * LOI.'BHETA' ; CAPP = CAPP * (HH2 '**' (LOI.'NEXP' '-' 1)) ; CAPP = CAPP '/' (HH3 '**' (LOI.'MEXP' '+' 1)) ; CAPP = CAPP * (LOI.'PORO' '-' teta_r) ; 'FINSI' ; 'SI' ('EGA' LOISAT 'EXPONENTIELLE') ; SAT = PW '*' LOI.'BHETA' ; SAT = 'EXP' ('ABS' SAT) ; SATN = SAT '**' LOI.'COEF_N' ; SAT = SATN '+' (LOI.'COEF_C' '-' 1.) ; SAT = SAT '**' -1. ; SAT = SAT '*' LOI.'COEF_C' ; CAPP = SAT * SAT ; CAPP = CAPP '/' LOI.'COEF_C' ; CAPP = SATN * CAPP ; CAPP = LOI.'BHETA' * LOI.'COEF_N' * CAPP ; CAPP = CAPP * (LOI.'PORO' '-' teta_r) ; 'FINSI' ; 'SI' ('EGA' LOISAT 'LOGARITHMIQUE') ; SAT = PW '*' LOI.'BHETA' ; SOT = 'MASQUE' ('ABS' SAT) 'SUPERIEUR' 1.D0 ; * on tronque à 1 si inferieur à 1, C'est dans la loi SAT = (SAT * SOT) '+' (1.D0 '-' SOT) ; SATN = 'LOG' (('ABS' SAT) '+' 1.D-30) ; SAT = ('ABS' SATN) '**' LOI.'COEF_N' ; SAT = SAT '+' LOI.'COEF_C' ; SAT = SAT '**' -1. ; SAT = SAT '*' LOI.'COEF_C' ; CAPP = SAT * SAT ; CAPP = CAPP '/' LOI.'COEF_C' ; CAPP = CAPP * (SATN '**' ( LOI.'COEF_N' '-' 1.D0)) ; CAPP = CAPP * LOI.'COEF_N' ; CAPP = CAPP '/' PW ; CAPP = CAPP * (LOI.'PORO' '-' teta_r) ; 'FINSI' ; ************** TENEUR EN EAU ***************************** T1pm = SAT '*' (LOI.'PORO' '-' teta_r) ; TENEUR = T1pm '+' teta_r ; 'FINSI' ; 'FINPROC' SAT TENEUR CAPP ; ************************************************************************
© Cast3M 2003 - Tous droits réservés.
Mentions légales