Télécharger fvnu.eso

Retour à la liste

Numérotation des lignes :

  1. C FVNU SOURCE CHAT 07/04/20 21:15:15 5723
  2. FUNCTION FVNU(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 'NU ' 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=221 : temp. inferieure au zero absolu
  21. C IERUT=222 : valeur illicite de 'PORO'
  22. C IERUT=223 : valeur illicite de 'YOGC'
  23. C-----------------------------------------------------------------------
  24. C Type de la fonction
  25. C
  26. REAL*8 FVNU
  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, CISC1, YOUC2, CISC2
  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. FVNU=0.D0
  51. C
  52. IF (T.LT.0.0D0) THEN
  53. C........Temperature en Kelvin
  54. IERUT = 221
  55. RETURN
  56. ELSE IF ((PORO.LT.0.0D0).OR.(PORO.GT.1.0D0)) THEN
  57. IERUT = 222
  58. RETURN
  59. ELSE IF ((IYOGC.LT.1).OR.(IYOGC.GT.2)) THEN
  60. IERUT = 223
  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. CISC1 = 8.583D10 - (5.157D6 * T) - (3.747D3 * T * T)
  69. ELSE
  70. YOUC1 = -1.33445D12 + (1.18106D9 * T) - (2.38803D5 * T * T)
  71. CISC1 = -5.7625D11 + (5.02189D8 * T) - (1.00939D5 * T * T)
  72. ENDIF
  73. C
  74. C.....Si correction de porosite
  75. C
  76. IF (IYOGC.EQ.2) THEN
  77. IF (PORO.LT.0.3D0) THEN
  78. YOUC2 = YOUC1 * (1.D0-(2.5D0*PORO))
  79. CISC2 = CISC1 * (1.D0-(2.25D0*PORO))
  80. ELSE
  81. YOUC2 = YOUC1 * ((1.D0-PORO)/(1.D0+(6.D0*PORO)))
  82. CISC2 = CISC1 * ((1.D0-PORO)/(1.D0+(3.85D0*PORO)))
  83. ENDIF
  84. FVNU = (YOUC2/(2.D0*CISC2)) - 1.D0
  85. C
  86. ELSE
  87. FVNU = (YOUC1/(2.D0*CISC1)) - 1.D0
  88. ENDIF
  89. C
  90. RETURN
  91. END
  92.  
  93.  
  94.  
  95.  

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