Télécharger cldeta.eso

Retour à la liste

Numérotation des lignes :

cldeta
  1. C CLDETA SOURCE CHAT 05/01/12 22:04:36 5004
  2. SUBROUTINE CLDETA (YUNG,XNU,RT,XLTR,XLTT,EPTT,EPTR,EPRS,OUVER,
  3. . CONTR,DDEFT,DCONPR)
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8(A-H,O-Z)
  6.  
  7. -INC PPARAM
  8. -INC CCOPTIO
  9. C
  10. DIMENSION RT(*),XLTR(*),XLTT(*),EPTT(*),EPTR(*),EPRS(*),OUVER(*)
  11. DIMENSION CONTR(*),DDEFT(*),DCONPR(*)
  12. DIMENSION DDR(6,6),ET(3),EPPT(3),EPSPR(3)
  13. C
  14. C***********************************************************************
  15. C************* CALCUL DE L ETAT DE CHARGE OU DE DECHARGE ***************
  16. C***********************************************************************
  17. C
  18. C INITIALISATION
  19. C
  20. CALL ZDANUL(DDR,36)
  21. RFE=1.D-8
  22. RFS=YUNG*RFE
  23. C
  24. DO 10 I=1,3
  25. ET(I)=YUNG
  26. IF(XLTR(I).LE.0.D0) ET(I)=0.D0
  27. EPPT(I)=EPTT(I)-XLTT(I)/YUNG
  28. EPSPR(I)=EPRS(I)
  29. IF(XLTR(I).GT.0.D0.AND.RT(I).LE.RFS) EPSPR(I)=EPTR(I)
  30. C
  31. IF(XLTR(I).GT.0.D0.AND.RT(I).GT.RFS) THEN
  32. C
  33. IF(XLTT(I).GT.0.D0) THEN
  34. IF(RT(I).GE.XLTT(I)) THEN
  35. EPSPR(I)=((XLTR(I)-RT(I))/(XLTR(I)-XLTT(I)))*EPPT(I)
  36. ELSE
  37. EPSPR(I)=EPPT(I)+((1.D0-RT(I)/XLTT(I))*(EPTR(I)-EPPT(I)))
  38. ENDIF
  39. ELSE
  40. EPSPR(I)=(1.D0-RT(I)/XLTR(I))*EPTR(I)
  41. ENDIF
  42. C
  43. EPPMAX=(1.D0-RT(I)/XLTR(I))*EPSPR(I)
  44. EPRM=(1.D0-RT(I)/XLTR(I))*EPRS(I)
  45. EPRM=MIN(EPPMAX,EPRM)
  46. ELSE
  47. EPPMAX=EPSPR(I)
  48. EPRM=EPRS(I)
  49. ENDIF
  50. C
  51. IF(XLTR(I).GT.0.D0)
  52. . ET(I)=(YUNG*XLTR(I))/(XLTR(I)+(YUNG*EPSPR(I)))
  53.  
  54. C
  55. IF(ABS(CONTR(I)).LE.RFS) THEN
  56. IF(RT(I).LE.RFS) THEN
  57. IF((ABS(OUVER(I)-EPRM)).LE.RFE.OR.OUVER(I).LE.EPRM) THEN
  58. IF(DDEFT(I).LT.0.D0) THEN
  59. ET(I)=YUNG
  60. ELSE
  61. ET(I)=0.D0
  62. ENDIF
  63. ELSE
  64. ET(I)=0.D0
  65. ENDIF
  66. ELSE
  67. IF((ABS(OUVER(I)-EPPMAX)).LE.RFE.OR.OUVER(I).GE.EPPMAX) THEN
  68. IF(DDEFT(I).LT.0.D0) ET(I)=0.D0
  69. ELSE
  70. IF((ABS(OUVER(I)-EPRM)).LE.RFE.OR.OUVER(I).LE.EPRM) THEN
  71. IF(DDEFT(I).LT.0.D0) ET(I)=YUNG
  72. ELSE
  73. IF(DDEFT(I).LT.0.D0) ET(I)=0.D0
  74. ENDIF
  75. ENDIF
  76. ENDIF
  77. ENDIF
  78. C
  79. IF((ABS(XLTR(I)-RT(I))).LE.RFS.AND.XLTR(I).GT.0.D0) ET(I)=YUNG
  80. C
  81. 10 CONTINUE
  82. C
  83. ET1=ET(1)
  84. ET2=ET(2)
  85. ET3=ET(3)
  86. UPUN=1.D0+XNU
  87. UMUN=1.D0-XNU
  88. UMDN=1.D0-2.D0*XNU
  89. EMET1=YUNG-ET1
  90. EMET2=YUNG-ET2
  91. EMET3=YUNG-ET3
  92. C
  93. DENO=(EMET1*EMET2*EMET3)+
  94. . (ET1*EMET2*EMET3)+(EMET1*ET2*EMET3)+(EMET1*EMET2*ET3)+
  95. . (UPUN*UMUN*((EMET1*ET2*ET3)+(ET1*EMET2*ET3)+(ET1*ET2*EMET3)))+
  96. . (UPUN*UPUN*UMDN*(ET1*ET2*ET3))
  97. USDENO=1.D0/DENO
  98. C
  99. DDR(1,1)=((EMET2*EMET3)+(ET2*EMET3)+(EMET2*ET3)+
  100. . (ET2*ET3*UPUN*UMUN))*YUNG*ET1*USDENO
  101. DDR(1,2)=XNU*YUNG*ET1*ET2*(EMET3+(ET3*UPUN))*USDENO
  102. DDR(1,3)=XNU*YUNG*ET1*ET3*(EMET2+(ET2*UPUN))*USDENO
  103. DDR(2,1)=DDR(1,2)
  104. DDR(2,2)=((EMET1*EMET3)+(ET1*EMET3)+(EMET1*ET3)+
  105. . (ET1*ET3*UPUN*UMUN))*YUNG*ET2*USDENO
  106. DDR(2,3)=XNU*YUNG*ET2*ET3*(EMET1+(ET1*UPUN))*USDENO
  107. DDR(3,1)=DDR(1,3)
  108. DDR(3,2)=DDR(2,3)
  109. DDR(3,3)=((EMET1*EMET2)+(ET1*EMET2)+(EMET1*ET2)+
  110. . (ET1*ET2*UPUN*UMUN))*YUNG*ET3*USDENO
  111. DDR(4,4)=YUNG/(2.D0*UPUN)
  112. DDR(5,5)=DDR(4,4)
  113. DDR(6,6)=DDR(4,4)
  114. C
  115. CALL MULMAT(DCONPR,DDR,DDEFT,6,1,6)
  116. C
  117. IF(IIMPI.EQ.9) THEN
  118. WRITE(IOIMP,*) 'DDR'
  119. WRITE(IOIMP,1000) ((DDR(I,J),J=1,6),I=1,6)
  120. WRITE(IOIMP,1001) (DDEFT(I),I=1,6)
  121. WRITE(IOIMP,1002) (DCONPR(I),I=1,6)
  122. 1000 FORMAT(6(1X,1PE12.5))
  123. 1001 FORMAT(1X,'DDEFT =',6(1X,1PE12.5))
  124. 1002 FORMAT(1X,'DCONPR=',6(1X,1PE12.5))
  125. ENDIF
  126. C
  127. RETURN
  128. C
  129. END
  130.  
  131.  

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