Télécharger ht_pro.procedur

Retour à la liste

Numérotation des lignes :

  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.  
  159.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales