Télécharger elfma0.eso

Retour à la liste

Numérotation des lignes :

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

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