Télécharger fsma2d.eso

Retour à la liste

Numérotation des lignes :

fsma2d
  1. C FSMA2D SOURCE OF166741 25/02/21 21:17:05 12166
  2.  
  3. SUBROUTINE FSMA2D(IPT,IPMAIL,IPTINT,IPVECT,VEC,IVAFOR,IVACAR)
  4. C
  5. C____________________________________________________________________
  6. C CALCULE LES FORCES SURFACIQUES SUR LES FACES D ELEMENTS
  7. C MASSIFS BIDIMENSIONNELS
  8. C
  9. C ENTREES :
  10. C ---------
  11. C
  12. C IPT TABLEAU DE POINTEUR SUR UN MELVAL CONTENANT LES FORCES
  13. C APPLIQUEES
  14. C 0 SI ON A DONNE UN VECTEUR CONSTANT
  15. C IPMAIL POINTEUR SUR UN OBJET GEOMETRIQUE
  16. C IPTINT POINTEUR SUR UN MINTE CONTENANT LES POINTS D INTEGRATION
  17. C IPVECT POINTEUR SUR LE VECTEUR REPRESENTANT LA FORCE
  18. C VEC VECTEUR REPRESENTANT LA FORCE
  19. C IVAFOR POINTEUR SUR UN MPTVAL ET LES MELVALS CONTENANT LES FORCES
  20. C NODALES RESULTANTES
  21. C IVACAR POINTEUR SUR UN MELVAL DE CARACTERISTIQUES
  22. C
  23. C____________________________________________________________________
  24. C
  25. IMPLICIT INTEGER(I-N)
  26. IMPLICIT REAL*8(A-H,O-Z)
  27.  
  28. -INC PPARAM
  29. -INC CCOPTIO
  30. -INC CCREEL
  31.  
  32. -INC SMCHAML
  33. -INC SMELEME
  34. -INC SMINTE
  35. -INC SMCOORD
  36.  
  37. -INC TMPTVAL
  38.  
  39. SEGMENT WORK
  40. REAL*8 XE(3,NBNN)
  41. ENDSEGMENT
  42.  
  43. DIMENSION VEC(*),IPT(*)
  44. C
  45. C= Quelques constantes (2.Pi)
  46. PARAMETER (X2Pi=6.283185307179586476925286766559D0)
  47.  
  48. MELVA1 = IPT(1)
  49. MELVA2 = IPT(2)
  50. IF (IPVECT.EQ.0) THEN
  51. IF (MELVA1.NE.0) THEN
  52. IGM1 = MELVA1.VELCHE(/1)
  53. IBM1 = MELVA1.VELCHE(/2)
  54. ENDIF
  55. IF (MELVA2.NE.0) THEN
  56. IGM2 = MELVA2.VELCHE(/1)
  57. IBM2 = MELVA2.VELCHE(/2)
  58. ENDIF
  59. V1 = XZero
  60. V2 = XZero
  61. ELSE
  62. V1 = VEC(1)
  63. V2 = VEC(2)
  64. ENDIF
  65. C
  66. MINTE=IPTINT
  67. NBPGAU=POIGAU(/1)
  68. C
  69. MELEME=IPMAIL
  70. NBNN =NUM(/1)
  71. NBELEM=NUM(/2)
  72. C
  73. SEGINI,WORK
  74. C
  75. C RECUPERATION DE L'EPAISSEUR (CONTRAINTES PLANES) :
  76. C
  77. DIM3 = 1.D0
  78. MELVA6 = 0
  79. IF (IFOUR.EQ.-2) THEN
  80. IF (IVACAR.NE.0) THEN
  81. MPTVAL = IVACAR
  82. MELVA6 = IVAL(1)
  83. IF (MELVA6.NE.0) THEN
  84. IGEP = MELVA6.VELCHE(/1)
  85. IBEP = MELVA6.VELCHE(/2)
  86. ENDIF
  87. ENDIF
  88. ENDIF
  89. C
  90. C BOUCLE SUR LES ELEMENTS
  91. C
  92. DO 1 IB=1,NBELEM
  93. C
  94. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  95. C
  96. IF (MELVA6.NE.0) IBME = MIN(IB,IBEP)
  97. IF (IPVECT.EQ.0) THEN
  98. IF (MELVA1.NE.0) IB1 = MIN(IB,IBM1)
  99. IF (MELVA2.NE.0) IB2 = MIN(IB,IBM2)
  100. ENDIF
  101. C
  102. C BOUCLE SUR LES POINTS DE GAUSS
  103. C
  104. DO 10 IGAU=1,NBPGAU
  105. C
  106. C RECUPERATION DE L'EPAISSEUR
  107. C
  108. IF (MELVA6.NE.0) THEN
  109. IGMN = MIN(IGAU,IGEP)
  110. DIM3 = MELVA6.VELCHE(IGMN,IBME)
  111. ENDIF
  112. C
  113. VNQSI1=0.D0
  114. VNQSI2=0.D0
  115. DO 20 I=1,NBNN
  116. VNQSI1=VNQSI1+SHPTOT(2,I,IGAU)*XE(1,I)
  117. VNQSI2=VNQSI2+SHPTOT(2,I,IGAU)*XE(2,I)
  118. 20 CONTINUE
  119. ZN = SQRT(VNQSI1*VNQSI1 + VNQSI2*VNQSI2)
  120. X = VNQSI1 / ZN
  121. Y = VNQSI2 / ZN
  122.  
  123. IF (IFOUR.LT.0) THEN
  124. IF (IFOUR.EQ.-2) THEN
  125. R = DIM3
  126. ELSE
  127. R = 1.D0
  128. ENDIF
  129. ELSE
  130. R=0.D0
  131. DO 21 I=1,NBNN
  132. R = R + SHPTOT(1,I,IGAU)*XE(1,I)
  133. 21 CONTINUE
  134. IF (IFOUR.EQ.0) THEN
  135. R = X2Pi*R
  136. C* ELSE IF (IFOUR.EQ.1) THEN
  137. ELSE
  138. IF (NIFOUR.EQ.0) THEN
  139. R = X2Pi*R
  140. ELSE
  141. R = XPI*R
  142. ENDIF
  143. ENDIF
  144. ENDIF
  145. WGPGAU = POIGAU(IGAU)*R
  146. *
  147. IF (IPVECT.EQ.0) THEN
  148. IF (MELVA1.NE.0) THEN
  149. IGMN = MIN(IGAU,IGM1)
  150. V1 = MELVA1.VELCHE(IGMN,IB1)
  151. ENDIF
  152. IF (MELVA2.NE.0) THEN
  153. IGMN = MIN(IGAU,IGM2)
  154. V2 = MELVA2.VELCHE(IGMN,IB2)
  155. ENDIF
  156. ENDIF
  157.  
  158. * changement de repere du vecteur force
  159. VECT = X*V1 + Y*V2
  160. VECN = X*V2 - Y*V1
  161. T1 = WGPGAU * ( VNQSI1*VECT - VNQSI2*VECN )
  162. T2 = WGPGAU * ( VNQSI1*VECN + VNQSI2*VECT )
  163. C
  164. MPTVAL = IVAFOR
  165. DO 30 J = 1, NBNN
  166. MELVAL=IVAL(1)
  167. VELCHE(J,IB)=VELCHE(J,IB)+SHPTOT(1,J,IGAU)*T1
  168. MELVAL=IVAL(2)
  169. VELCHE(J,IB)=VELCHE(J,IB)+SHPTOT(1,J,IGAU)*T2
  170. 30 CONTINUE
  171. C
  172. 10 CONTINUE
  173.  
  174. 1 CONTINUE
  175.  
  176. SEGSUP,WORK
  177.  
  178. c RETURN
  179. END
  180.  
  181.  
  182.  

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