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 :
© Cast3M 2003 - All rights reserved.
Disclaimer