Télécharger coq2ma.eso

Retour à la liste

Numérotation des lignes :

  1. C COQ2MA SOURCE CHAT 06/03/29 21:17:32 5360
  2. SUBROUTINE COQ2MA(Q,E,DIM3,RHO,IMATMA,IFOUR,NIFOU,LRE,
  3. + AMM,IARR,XDPGE,YDPGE)
  4. C
  5. C***********************************************************************
  6. C MATRICE DE MASSE D'UN ELEMENT COQUE A 2 NOEUDS
  7. C CODE X.DE MAZANCOURT DECEMBRE 85
  8. C***********************************************************************
  9. C ENTREES
  10. C Q(3,2) : COORDONNEES DES 2 NOEUDS , R PUIS Z
  11. C E : EPAISSEUR ( CONSTANTE )
  12. C RHO : MASSE VOLUMIQUE
  13. C IMATMA=1-MATRICE MASSE- OU 0-VECTEUR MASSE-(CAS DE MATR DIAGONALE)
  14. C AVANT L'APPEL IL EST MIS A 1
  15. C IFOUR=IFOUR DE CCOPTIO
  16. C NIFOU=NIFOUR DE CCOPTIO
  17. C LRE = TAILEE DE LA MATRICE MASSE 6 SI IFOU.LE.0 8 SI IFOU.GT.0
  18. C SORTIE
  19. C AMM(LRE,LRE) = MATRICE DE MASSE
  20. C IARR:INDICATEUR D'ERREUR,VAUT ZERO NORMALEMENT
  21. C***********************************************************************
  22. IMPLICIT INTEGER(I-N)
  23. IMPLICIT REAL*8 (A-H,O-Z)
  24. C Include contenant quelques constantes dont XPI :
  25. -INC CCREEL
  26. DIMENSION Q(3,*),AM(9,9),AMM(LRE,*)
  27. DIMENSION II(6)
  28. DATA II/1,2,4,5,6,8/
  29. C
  30. C ---------- INITIALISATION
  31. CALL ZERO(AM,9,9)
  32. CALL ZERO(AMM,LRE,LRE)
  33. C
  34. IARR=0
  35. R=.5D0*(Q(1,1)+Q(1,2))
  36. Y=.5D0*(Q(2,1)+Q(2,2))
  37. XD=XDPGE-R
  38. YD=Y-YDPGE
  39. SP=Q(1,2)-Q(1,1)
  40. CP=Q(2,2)-Q(2,1)
  41. D2=CP*CP+SP*SP
  42. D=SQRT(D2)
  43. E2=E*E
  44. C
  45. C -----------------------------TESTS D'ERREUR
  46. C
  47. IF(D.EQ.0) THEN
  48. IARR=1
  49. GOTO 60
  50. ENDIF
  51. IF(IFOUR.GE.0) THEN
  52. IF(ABS(R/D).LE.1.D-03) THEN
  53. IARR=2
  54. GOTO 60
  55. ENDIF
  56. ELSE
  57. R=1.D0
  58. ENDIF
  59. C
  60. C ---------- NORME
  61. C ********** CASTEM20 SOMME(COS**2)=1
  62. C
  63. COEF=RHO*E*D*DIM3
  64. IF(IMATMA.NE.0) GOTO 20
  65. C ---------- VECTEUR MASSE
  66. RM=.5D0*COEF*R
  67. IF(IFOUR.EQ.0.OR.(IFOUR.EQ.1.AND.NIFOU.EQ.0)) THEN
  68. RM=2*XPI*RM
  69. ELSEIF(IFOUR.EQ.1.AND.NIFOU.NE.0) THEN
  70. RM=XPI*RM
  71. ENDIF
  72. DO 15 I=1,2
  73. K=4*(I-1)
  74. DO 151 J=1,3
  75. K=K+1
  76. AM(K,K)=RM
  77. 151 CONTINUE
  78. 15 CONTINUE
  79. RETURN
  80. C
  81. C ---------- PRELIMINAIRES
  82. C
  83. 20 CONTINUE
  84. A=COEF*R/420.D0
  85. B=COEF*SP/840.D0
  86. IF(IFOUR.LT.0) B=0.D0
  87. IF(IFOUR.EQ.0.OR.(IFOUR.EQ.1.AND.NIFOU.EQ.0)) THEN
  88. A=2*XPI*A
  89. B=2*XPI*B
  90. ELSEIF(IFOUR.EQ.1.AND.NIFOU.NE.0) THEN
  91. A=XPI*A
  92. B=XPI*B
  93. ENDIF
  94. SP=SP/D
  95. CP=CP/D
  96. SP2=SP*SP
  97. CP2=CP*CP
  98. SPCP=SP*CP
  99. DSP=D*SP
  100. DCP=D*CP
  101. ASP2=A*SP2
  102. ACP2=A*CP2
  103. BSP2=B*SP2
  104. BCP2=B*CP2
  105. ASPCP=A*SPCP
  106. BSPCP=B*SPCP
  107. AUX=22.D0*A-8.D0*B
  108. AUX1=13.D0*A-B
  109. C ---------- CALCULS
  110. AM(1,1)=156.D0*ACP2-84.D0*BCP2+140.D0*ASP2-70.D0*BSP2
  111. AM(1,2)=14.D0*BSPCP-16.D0*ASPCP
  112. AM(1,4)=-DCP*AUX
  113. AM(1,5)=54.D0*ACP2+70.D0*ASP2
  114. AM(1,6)=16.D0*ASPCP
  115. AM(1,8)=DCP*AUX1
  116. AM(2,2)=156.D0*ASP2-84.D0*BSP2+140.D0*ACP2-70.D0*BCP2
  117. AM(2,4)=DSP*AUX
  118. AM(2,5)=AM(1,6)
  119. AM(2,6)=54.D0*ASP2+70.D0*ACP2
  120. AM(2,8)=-DSP*AUX1
  121. AM(3,3)=140.D0*A-70.D0*B
  122. AM(3,7)=70.D0*A
  123. AM(4,4)=D2*(4.D0*A-B)
  124. AUX=22.D0*A+8.D0*B
  125. AUX1=13.D0*A+B
  126. AM(4,5)=-DCP*AUX1
  127. AM(4,6)=DSP*AUX1
  128. AM(4,8)=-3.D0*D2*A
  129. AM(5,5)=156.D0*ACP2+84.D0*BCP2+140.D0*ASP2+70.D0*BSP2
  130. AM(5,6)=-16.D0*ASPCP-14.D0*BSPCP
  131. AM(5,8)=DCP*AUX
  132. AM(6,6)=156.D0*ASP2+84.D0*BSP2+140.D0*ACP2+70.D0*BCP2
  133. AM(6,8)=-DSP*AUX
  134. AM(7,7)=140.D0*A+70.D0*B
  135. AM(8,8)=D2*(4.D0*A+B)
  136. C ---------- ON COMPLETE PAR SYMETRIE
  137. DO 50 I=2,8
  138. JFIN=I-1
  139. DO 501 J=1,JFIN
  140. AM(I,J)=AM(J,I)
  141. 501 CONTINUE
  142. 50 CONTINUE
  143. 60 CONTINUE
  144. IF(IFOUR.GT.0) THEN
  145. DO 500 IA= 1,8
  146. DO 5001 IB= 1,8
  147. AMM(IA,IB)=AM(IA,IB)
  148. 5001 CONTINUE
  149. 500 CONTINUE
  150. ELSE IF(IFOUR.LE.0) THEN
  151. DO 600 IA= 1,6
  152. DO 6001 IB= 1,6
  153. AMM(IA,IB)=AM(II(IA),II(IB))
  154. 6001 CONTINUE
  155. 600 CONTINUE
  156. ENDIF
  157. IF(IFOUR.EQ.-3)THEN
  158. AMM(7,7)=COEF
  159. AMM(7,8)=COEF*XD
  160. AMM(7,9)=COEF*YD
  161. AMM(8,7)=AMM(7,8)
  162. AMM(8,8)=COEF*((D2*CP2/12.D0)+(E2*SP2/12.D0)+(XD*XD))
  163. AMM(8,9)=COEF*(SPCP*((E2/12.D0)-(D2/12.D0))+(XD*YD))
  164. AMM(9,7)=AMM(7,9)
  165. AMM(9,8)=AMM(8,9)
  166. AMM(9,9)=COEF*((E2*CP2/12.D0)+(D2*SP2/12.D0)+(YD*YD))
  167. ENDIF
  168. RETURN
  169. END
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  

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