Télécharger lccl3d.eso

Retour à la liste

Numérotation des lignes :

lccl3d
  1. C LCCL3D SOURCE PV090527 23/02/13 21:15:09 11592
  2. SUBROUTINE LCCL3D(M,K,G,b,d,pt0,pc0,s1,s2,s3,dcc,Hdp,
  3. # lcc,ldp,fc1,fd2,precision3d,log_err)
  4. c Multiplicateur plastique CamClay et Drucker Prager couples
  5. c (A.Sellier 2021/04/22)
  6. implicit real*8 (a-h,o-z)
  7. implicit integer (i-n)
  8.  
  9. real*8 M,K,G,b,d,pt0,pc0,s1,s2,s3,dcc,Hdp,lcc,ldp
  10. real*8 BB(2,2),denom
  11. real*8 precision3d
  12. logical log_err
  13.  
  14. log_err=.false.
  15.  
  16. C t1 = M ** 2
  17. C t2 = t1 ** 2
  18. C t3 = t2 * K
  19. C t4 = pc0 ** 2
  20. C t5 = t4 ** 2
  21. C t18 = pt0 ** 2
  22. C t21 = s1 + s2 + s3
  23. C t25 = t21 ** 2
  24. C t28 = K * t25 * t2 / 0.3D1
  25. C t29 = s1 ** 2
  26. C t30 = -s2 - s3
  27. C t32 = s2 ** 2
  28. C t33 = s2 * s3
  29. C t34 = s3 ** 2
  30. C t35 = s1 * t30 + t29 + t32 - t33 + t34
  31. C t36 = G * t35
  32. C t40 = t18 * pt0
  33. C t46 = -t28 + t36
  34. C t50 = t4 * pc0
  35. C t53 = t18 ** 2
  36. C t54 = t53 * t3
  37. C t57 = t40 * t21 * t3
  38. C t59 = t28 + t36
  39. C t87 = (0.3D1 * s1 * t30 + 0.3D1 * t29 + 0.3D1 * t32 - 0.3D1 *
  40. C #t33 + 0.3D1 * t34)
  41. C if(t87.gt.0.d0) then
  42. C t87=sqrt(t87)
  43. C else
  44. C log_err=.true.
  45. C goto 10
  46. C end if
  47. C t89 = t1 * K
  48. C t94 = b * pt0 * t89
  49. C t96 = t21 * b
  50. C t97 = t96 * t89
  51. C t115 = (pc0 - pt0) ** 2
  52. C t130 = (pc0 + pt0) ** 2
  53. C BB(1,1) = -t5 * t4 * t3 / 0.16D2 - 0.3D1 / 0.8D1 * t5 * pc0 * K *
  54. C #(pt0 + 0.2D1 / 0.9D1 * s1 + 0.2D1 / 0.9D1 * s2 + 0.2D1 / 0.9D1 * s
  55. C #3) * t2 - t5 * (0.45D2 / 0.4D1 * t18 * t3 + 0.5D1 * pt0 * t21 * t3
  56. C # + t28 + t36) / 0.12D2 - t50 * (0.5D1 / 0.2D1 * t40 * t3 + 0.5D1 /
  57. C # 0.3D1 * t18 * t21 * t3 - 0.2D1 / 0.3D1 * pt0 * t46) / 0.2D1 - t4
  58. C #* (0.15D2 / 0.8D1 * t54 + 0.5D1 / 0.3D1 * t57 + t18 * t59) / 0.2D1
  59. C # + pc0 * (-0.9D1 / 0.8D1 * t54 - 0.5D1 / 0.4D1 * t57 + t18 * t46)
  60. C #* pt0 / 0.3D1 - t53 * t18 * t3 / 0.16D2 - t53 * pt0 * t21 * t3 / 0
  61. C #.12D2 - t53 * t59 / 0.12D2 + dcc
  62. C BB(1,2) = -(t87 * (t50 * b * t89 / 0.2D1 + t4 * (0.3D1 / 0.2D1 * t
  63. C #94 + t97 / 0.3D1) - 0.2D1 / 0.3D1 * pc0 * (-0.9D1 / 0.4D1 * t94 -
  64. C #t97) * pt0 + t40 * b * t89 / 0.2D1 + t18 * t96 * t89 / 0.3D1) + G
  65. C #* t115 * t35) / t87 / 0.2D1
  66. C BB(2,1) = -t87 * t115 * G / 0.6D1 - K * d * t130 * (pc0 + pt0 + 0.
  67. C #2D1 / 0.3D1 * s1 + 0.2D1 / 0.3D1 * s2 + 0.2D1 / 0.3D1 * s3) * t1 /
  68. C # 0.4D1
  69. C BB(2,2) = -K * b * d - G - Hdp
  70.  
  71. t1 = s1 ** 2
  72. t3 = -s2 - s3
  73. t5 = s2 ** 2
  74. t7 = s2 * s3
  75. t9 = s3 ** 2
  76. t12 = sqrt(0.3D1 * s1 * t3 + 0.3D1 * t1 + 0.3D1 * t5 - 0.3D1 * t7
  77. #+ 0.3D1 * t9)
  78. t14 = sqrt(0.4D1)
  79. t16 = (pc0 - pt0) ** 2
  80. t17 = t16 ** 2
  81. t21 = (s1 + s2 + s3 + 0.3D1 / 0.2D1 * pc0 + 0.3D1 / 0.2D1 * pt0) *
  82. #* 2
  83. t22 = M ** 2
  84. t23 = t22 ** 2
  85. t32 = sqrt((t23 * t21 + 0.81D2 / 0.2D1 * t1 + 0.81D2 / 0.2D1 * s1
  86. #* t3 + 0.81D2 / 0.2D1 * t5 - 0.81D2 / 0.2D1 * t7 + 0.81D2 / 0.2D1
  87. #* t9) * t17)
  88. t36 = sqrt(0.3D1)
  89. t38 = t23 * K
  90. t39 = pc0 ** 2
  91. t42 = 0.2D1 / 0.3D1 * s1
  92. t43 = 0.2D1 / 0.3D1 * s2
  93. t44 = 0.2D1 / 0.3D1 * s3
  94. t50 = pt0 ** 2
  95. t54 = s1 + s2 + s3
  96. t58 = t54 ** 2
  97. t63 = s1 * t3 + t1 + t5 - t7 + t9
  98. t71 = 0.1D1 / t32
  99. t72 = 0.1D1 / t12
  100. t76 = t22 * K
  101. t81 = K * b
  102. BB(1,1) = -t72 * t71 * t14 * (-0.2D1 * t32 * t14 * t12 * dcc + 0.6
  103. #D1 * t12 * (t39 * t38 / 0.12D2 + pc0 * t23 * K * (pt0 + t42 + t43
  104. #+ t44) / 0.6D1 + t23 * K * t50 / 0.12D2 + pt0 * t54 * t38 / 0.9D1
  105. #+ K * t58 * t23 / 0.27D2 + G * t63) * t36 * t17) / 0.8D1
  106. BB(1,2) = -t72 * (t12 * (t39 * pc0 * b * t76 / 0.6D1 - t39 * t22 *
  107. # (pt0 - t42 - t43 - t44) * t81 / 0.6D1 - pc0 * t22 * b * K * pt0 *
  108. # (0.4D1 / 0.3D1 * s1 + 0.4D1 / 0.3D1 * s2 + 0.4D1 / 0.3D1 * s3 + p
  109. #t0) / 0.6D1 + t50 * pt0 * b * t76 / 0.6D1 + t50 * t54 * b * t76 /
  110. #0.9D1) + G * t16 * t63) / 0.2D1
  111. BB(2,1) = -0.3D1 / 0.2D1 * t16 * t36 * (t12 * G + (pc0 + pt0 + t42
  112. # + t43 + t44) * t22 * d * K / 0.2D1) * t71 * t14
  113. BB(2,2) = -d * t81 - G - Hdp
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120. denom=BB(1,1) * BB(2,2) - BB(1,2) * BB(2,1)
  121.  
  122. if((abs(denom).gt.precision3d).or.(88.ne.t88)) then
  123. lcc = (BB(1,2) * fd2 - BB(2,2) * fc1) / denom
  124. ldp = -(BB(1,1) * fd2 - BB(2,1) * fc1) / denom
  125. else
  126. log_err=.true.
  127. end if
  128.  
  129. 10 if(log_err.or.lcc.ne.lcc.or.ldp.ne.ldp) then
  130. print*,'Pb dans lccldp3d'
  131. lcc=0.d0
  132. ldp=0.d0
  133. log_err=.true.
  134. end if
  135.  
  136. return
  137. end
  138.  
  139.  
  140.  
  141.  
  142.  

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