Télécharger fvsmax.eso

Retour à la liste

Numérotation des lignes :

fvsmax
  1. C FVSMAX SOURCE CHAT 07/04/20 21:15:17 5723
  2. FUNCTION FVSMAX(VALPAR,NPARA,IERUT)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. C-----------------------------------------------------------------------
  6. C DESCRIPTION FONCTIONNELLE :
  7. C -------------------------
  8. C Fonction externe d'evaluation de la composante 'SMAX' du modele
  9. C 'FLUAGE' 'POLYNOMIAL' externalise pour TOUTATIS
  10. C
  11. C INTERFACE :
  12. C ---------
  13. C ENTREE : VALPAR : REAL*8(NPARA), valeurs des parametres
  14. C ENTREE : NPARA : INTEGER, nombre de parametres
  15. C SORTIE : IERUT : INTEGER, code retour
  16. C
  17. C CODIFICATION DES ERREURS :
  18. C ------------------------
  19. C IERUT=0 : OK
  20. C IERUT=241 : temp. inferieure au zero absolu
  21. C IERUT=242 : valeur illicite de 'PORO'
  22. C IERUT=243 : valeur illicite de 'YOGC'
  23. C-----------------------------------------------------------------------
  24. C Type de la fonction
  25. C
  26. REAL*8 FVSMAX
  27. C
  28. C Arguments de l'interface
  29. C
  30. INTEGER NPARA, IERUT
  31. REAL*8 VALPAR(NPARA)
  32. C
  33. C Variables locales
  34. C
  35. REAL*8 T, PORO, YOUC1, YOUC2
  36. INTEGER IYOGC
  37. C
  38. C---------------------- Debut du code executable -----------------------
  39. C
  40. C Identification des parametres : affectation de variables locales
  41. C
  42. T=VALPAR(1)
  43. PORO=VALPAR(2)
  44. IF(VALPAR(3).GE.0.99999 . and. VALPAR(3).le.1.00001) IYOGC=1
  45. IF(VALPAR(3).GE.1.99999 . and. VALPAR(3).le.2.00001) IYOGC=2
  46. C
  47. C Tests d'erreur sur les parametres
  48. C
  49. IERUT=0
  50. FVSMAX=0.D0
  51. C
  52. IF (T.LT.0.0D0) THEN
  53. C........Temperature en Kelvin
  54. IERUT = 241
  55. RETURN
  56. ELSE IF ((PORO.LT.0.0D0).OR.(PORO.GT.1.0D0)) THEN
  57. IERUT = 242
  58. RETURN
  59. ELSE IF ((IYOGC.LT.1).OR.(IYOGC.GT.2)) THEN
  60. IERUT = 243
  61. RETURN
  62. ENDIF
  63. C
  64. C Calcul de la fonction
  65. C
  66. IF (T.LT.2610.0D0) THEN
  67. YOUC1 = 2.2693D11 - (1.5399D7 * T) - (9.3597D3 * T * T)
  68. ELSE
  69. YOUC1 = -1.33445D12 + (1.18106D9 * T) - (2.38803D5 * T * T)
  70. ENDIF
  71. C
  72. C.....Si correction de porosite
  73. C
  74. IF (IYOGC.EQ.2) THEN
  75. IF (PORO.LT.0.3D0) THEN
  76. YOUC2 = YOUC1 * (1.D0-(2.5D0*PORO))
  77. ELSE
  78. YOUC2 = YOUC1 * ((1.D0-PORO)/(1.D0+(6.D0*PORO)))
  79. ENDIF
  80. FVSMAX = 1.D-3 * YOUC2
  81. C
  82. ELSE
  83. FVSMAX = 1.D-3 * YOUC1
  84. ENDIF
  85. C
  86. RETURN
  87. END
  88.  
  89.  
  90.  
  91.  

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