Télécharger elfma0.eso

Retour à la liste

Numérotation des lignes :

  1. C ELFMA0 SOURCE CHAT 05/01/12 23:32:23 5004
  2. SUBROUTINE ELFMA0(A,B,AB,NB,ISING,EPS)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. C
  6. C ====================================================================
  7. C SOUS-PROGRAMME FORTRAN CONSTRUISANT LES MATRICES I-A0 ET -1/B0
  8. C APPELE PAR ELFLIA
  9. C
  10. C A : MATRICE I-A0
  11. C B : MATRICE -1/B0
  12. C AB : VECTEUR CONTENANT LES TERMES DES MATRICES AN ET BN
  13. C NB : NUMERO D'ORDRE DES EXTREMITES DES ELEMENTS
  14. C SI 3 ELEMENT COMPLET
  15. C CREATION : 28/01/87
  16. C PROGRAMMEUR : GUILBAUD
  17. C ====================================================================
  18. C
  19. -INC CCOPTIO
  20. DIMENSION A(*),B(*),AB(*),C(4,4),D(4,4),IS(4)
  21. C
  22. IF(NB.NE.3) THEN
  23. A(1)=1.D0-AB( 2)
  24. A(2)=1.D0-AB( 8)
  25. A(4)=1.D0-AB(13)
  26. A(6)=1.D0-AB( 4)
  27. A(8)=1.D0-AB(13)
  28. A(10)=1.D0-AB( 8)
  29. IF(NB.EQ.1) THEN
  30. A(3)=-AB( 7)
  31. A(5)=+AB(12)
  32. A(7)=+AB(14)
  33. A(9)=-AB( 9)
  34. ELSE
  35. A(3)=+AB( 7)
  36. A(5)=-AB(12)
  37. A(7)=-AB(14)
  38. A(9)=+AB( 9)
  39. ENDIF
  40. C
  41. B(1)=-1.D0/AB( 1)
  42. B(2)=-1.D0/AB( 5)
  43. B(3)=-1.D0/AB(10)
  44. B(4)=-1.D0/AB( 3)
  45. B(5)= 1.D0/AB(12)
  46. B(6)= 1.D0/AB( 7)
  47. ELSE
  48. A( 1)=1.D0-AB( 2)
  49. A( 2)=1.D0-AB( 8)
  50. A( 3)=-AB( 7)
  51. A( 4)=1.D0-AB(13)
  52. A( 5)= AB(12)
  53. A( 6)=1.D0-AB( 4)
  54. A( 7)= AB(14)
  55. A( 8)=1.D0-AB(13)
  56. A( 9)=-AB( 9)
  57. A(10)=1.D0-AB( 8)
  58. A(11)=-AB(16)
  59. A(12)=-AB(22)
  60. A(13)= AB(21)
  61. A(14)=-AB(27)
  62. A(15)=-AB(26)
  63. A(16)=-AB(18)
  64. A(17)=-AB(28)
  65. A(18)=-AB(27)
  66. A(19)= AB(23)
  67. A(20)=-AB(22)
  68. A(21)=-AB(16)
  69. A(22)=-AB(22)
  70. A(23)=-AB(21)
  71. A(24)=-AB(27)
  72. A(25)= AB(26)
  73. A(26)=-AB(18)
  74. A(27)= AB(28)
  75. A(28)=-AB(27)
  76. A(29)=-AB(23)
  77. A(30)=-AB(22)
  78. A(31)=1.D0-AB( 2)
  79. A(32)=1.D0-AB( 8)
  80. A(33)= AB( 7)
  81. A(34)=1.D0-AB(13)
  82. A(35)=-AB(12)
  83. A(36)=1.D0-AB( 4)
  84. A(37)=-AB(14)
  85. A(38)=1.D0-AB(13)
  86. A(39)= AB( 9)
  87. A(40)=1.D0-AB( 8)
  88. C
  89. ISING=0
  90. DET=AB( 1)*AB( 1)-AB(15)*AB(15)
  91. IF(DET.EQ.0.D0) ISING=1
  92. IF(ISING.EQ.1) RETURN
  93. B( 1)=-AB( 1)/DET
  94. B(11)= AB(15)/DET
  95. B(21)= AB(15)/DET
  96. B(31)=-AB( 1)/DET
  97. C
  98. DET=AB( 3)*AB( 3)-AB(17)*AB(17)
  99. IF(DET.EQ.0.D0) ISING=1
  100. IF(ISING.EQ.1) RETURN
  101. B( 6)=-AB( 3)/DET
  102. B(16)= AB(17)/DET
  103. B(26)= AB(17)/DET
  104. B(36)=-AB( 3)/DET
  105. C
  106. C(1,1)= AB( 5)
  107. C(1,2)=0.D0
  108. C(1,3)= AB(19)
  109. C(1,4)= AB(20)
  110. C(2,1)=0.D0
  111. C(2,2)=-AB( 7)
  112. C(2,3)=-AB(20)
  113. C(2,4)=-AB(21)
  114. C(3,1)= AB(19)
  115. C(3,2)=-AB(20)
  116. C(3,3)= AB( 5)
  117. C(3,4)=0.D0
  118. C(4,1)= AB(20)
  119. C(4,2)=-AB(21)
  120. C(4,3)=0.D0
  121. C(4,4)=-AB( 7)
  122. N4=4
  123. WRITE(IOIMP,*) ' FLEXION Y '
  124. WRITE(IOIMP,1000)((C(I,J),J=1,4),I=1,4)
  125. 1000 FORMAT(4(1X,1PE12.5))
  126. CALL INVER(C,N4,ISING,D,IS,EPS)
  127. IF(ISING.EQ.1) RETURN
  128. WRITE(IOIMP,*) ' '
  129. WRITE(IOIMP,1000)((C(I,J),J=1,4),I=1,4)
  130. B( 2)=-C(1,1)
  131. B( 3)=-C(1,2)
  132. B(12)=-C(1,3)
  133. B(13)=-C(1,4)
  134. B( 9)=-C(2,1)
  135. B(10)=-C(2,2)
  136. B(19)=-C(2,3)
  137. B(20)=-C(2,4)
  138. B(22)=-C(3,1)
  139. B(23)=-C(3,2)
  140. B(32)=-C(3,3)
  141. B(33)=-C(3,4)
  142. B(29)=-C(4,1)
  143. B(30)=-C(4,2)
  144. B(39)=-C(4,3)
  145. B(40)=-C(4,4)
  146. C
  147. C(1,1)= AB(10)
  148. C(1,2)=0.D0
  149. C(1,3)= AB(24)
  150. C(1,4)=-AB(25)
  151. C(2,1)=0.D0
  152. C(2,2)=-AB(12)
  153. C(2,3)= AB(25)
  154. C(2,4)=-AB(26)
  155. C(3,1)= AB(24)
  156. C(3,2)= AB(25)
  157. C(3,3)= AB(10)
  158. C(3,4)=0.D0
  159. C(4,1)=-AB(25)
  160. C(4,2)=-AB(26)
  161. C(4,3)=0.D0
  162. C(4,4)=-AB(12)
  163. WRITE(IOIMP,*) ' FLEXION Y '
  164. WRITE(IOIMP,1000)((C(I,J),J=1,4),I=1,4)
  165. CALL INVER(C,N4,ISING,D,IS,EPS)
  166. WRITE(IOIMP,*) ' '
  167. WRITE(IOIMP,1000)((C(I,J),J=1,4),I=1,4)
  168. IF(ISING.EQ.1) RETURN
  169. B( 4)=-C(1,1)
  170. B( 5)=-C(1,2)
  171. B(14)=-C(1,3)
  172. B(15)=-C(1,4)
  173. B( 7)=-C(2,1)
  174. B( 8)=-C(2,2)
  175. B(17)=-C(2,3)
  176. B(18)=-C(2,4)
  177. B(24)=-C(3,1)
  178. B(25)=-C(3,2)
  179. B(34)=-C(3,3)
  180. B(35)=-C(3,4)
  181. B(27)=-C(4,1)
  182. B(28)=-C(4,2)
  183. B(37)=-C(4,3)
  184. B(38)=-C(4,4)
  185. ENDIF
  186. RETURN
  187. END
  188.  
  189.  

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