Télécharger fsma3d.eso

Retour à la liste

Numérotation des lignes :

fsma3d
  1. C FSMA3D SOURCE FANDEUR 12/07/18 21:15:41 7434
  2.  
  3. SUBROUTINE FSMA3D(IPT,IPMAIL,IPTINT,IPVECT,VEC,IVAFOR)
  4. C
  5. C____________________________________________________________________
  6. C
  7. C CALCULE LES FORCES SURFACIQUES SUR LES FACES D ELEMENTS
  8. C MASSIFS TRIDIMENSIONNELS
  9. C
  10. C ENTREES :
  11. C ---------
  12. C
  13. C IPT TABLEAU DE POINTEUR SUR UN MPTVAL CONTENANT LES FORCES
  14. C APPLIQUEES
  15. C 0 SI ON A DONNE UNE FORCE CONSTANTE
  16. C IPMAIL POINTEUR SUR UN OBJET GEOMETRIQUE
  17. C IPTINT POINTEUR SUR UN MINTE CONTENANT LES POINTS D INTEGRATION
  18. C IPVECT POINTEUR SUR LE VECTEUR REPRESENTANT LA FORCE
  19. C VEC VECTEUR REPRESENTANT LA FORCE
  20. C IVAFOR POINTEUR SUR UN MPTVAL ET LES MELVAL CONTENANT LES FORCES
  21. C NODALES RESUL
  22. C
  23. C______________________________________________________________________
  24. C
  25. IMPLICIT INTEGER(I-N)
  26. IMPLICIT REAL*8(A-H,O-Z)
  27. C
  28.  
  29. -INC PPARAM
  30. -INC CCOPTIO
  31.  
  32. -INC SMCHAML
  33. -INC SMELEME
  34. -INC SMINTE
  35. -INC SMCOORD
  36. C
  37. SEGMENT MPTVAL
  38. INTEGER IPOS(NS) ,NSOF(NS)
  39. INTEGER IVAL(NCOSOU)
  40. CHARACTER*16 TYVAL(NCOSOU)
  41. ENDSEGMENT
  42. C
  43. SEGMENT WORK
  44. REAL*8 XE(3,NBNN)
  45. ENDSEGMENT
  46. C
  47. DIMENSION VEC(*),IPT(*)
  48. C
  49. MELVA1 = IPT(1)
  50. MELVA2 = IPT(2)
  51. MELVA3 = IPT(3)
  52. IF (IPVECT.EQ.0) THEN
  53. IF (MELVA1.NE.0) THEN
  54. SEGACT,MELVA1
  55. IGM1 = MELVA1.VELCHE(/1)
  56. IBM1 = MELVA1.VELCHE(/2)
  57. ENDIF
  58. IF (MELVA2.NE.0) THEN
  59. SEGACT,MELVA2
  60. IGM2 = MELVA2.VELCHE(/1)
  61. IBM2 = MELVA2.VELCHE(/2)
  62. ENDIF
  63. IF (MELVA3.NE.0) THEN
  64. SEGACT,MELVA3
  65. IGM3 = MELVA3.VELCHE(/1)
  66. IBM3 = MELVA3.VELCHE(/2)
  67. ENDIF
  68. AUX1 = 0.D0
  69. AUX2 = 0.D0
  70. AUX3 = 0.D0
  71. ELSE
  72. AUX1 = VEC(1)
  73. AUX2 = VEC(2)
  74. AUX3 = VEC(3)
  75. ENDIF
  76. C
  77. MINTE=IPTINT
  78. C* SEGACT,MINTE <- ACTIF EN E/S (NON MODIFIE)
  79. NBPGAU=POIGAU(/1)
  80. C
  81. MELEME=IPMAIL
  82. C* SEGACT,MELEME <- ACTIF EN E/S (NON MODIFIE)
  83. NBNN =NUM(/1)
  84. NBELEM=NUM(/2)
  85. C
  86. SEGINI,WORK
  87. C
  88. C BOUCLE SUR LES ELEMENTS
  89. C
  90. DO 1 IB = 1, NBELEM
  91. C
  92. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  93.  
  94. IF (IPVECT.EQ.0) THEN
  95. IF (MELVA1.NE.0) IB1 = MIN(IB,IBM1)
  96. IF (MELVA2.NE.0) IB2 = MIN(IB,IBM2)
  97. IF (MELVA3.NE.0) IB3 = MIN(IB,IBM3)
  98. ENDIF
  99. C
  100. C BOUCLE SUR LES POINTS DE GAUSS
  101. C
  102. DO 10 IGAU=1,NBPGAU
  103. C
  104. C
  105. C BOUCLE SUR LES NOEUDS
  106. C
  107. VNQSI1 = 0.D0
  108. VNQSI2 = 0.D0
  109. VNQSI3 = 0.D0
  110. VNETA1 = 0.D0
  111. VNETA2 = 0.D0
  112. VNETA3 = 0.D0
  113. DO 20 I = 1,NBNN
  114. VNQSI1=VNQSI1+SHPTOT(2,I,IGAU)*XE(1,I)
  115. VNQSI2=VNQSI2+SHPTOT(2,I,IGAU)*XE(2,I)
  116. VNQSI3=VNQSI3+SHPTOT(2,I,IGAU)*XE(3,I)
  117. VNETA1=VNETA1+SHPTOT(3,I,IGAU)*XE(1,I)
  118. VNETA2=VNETA2+SHPTOT(3,I,IGAU)*XE(2,I)
  119. VNETA3=VNETA3+SHPTOT(3,I,IGAU)*XE(3,I)
  120. 20 CONTINUE
  121. VNOR1 = VNQSI2*VNETA3-VNQSI3*VNETA2
  122. VNOR2 = VNQSI3*VNETA1-VNQSI1*VNETA3
  123. VNOR3 = VNQSI1*VNETA2-VNQSI2*VNETA1
  124. r_z = POIGAU(IGAU) * SQRT(VNOR1*VNOR1+VNOR2*VNOR2+VNOR3*VNOR3)
  125. C
  126. IF (IPVECT.EQ.0) THEN
  127. IF (MELVA1.NE.0) THEN
  128. IGMN = MIN(IGAU,IGM1)
  129. AUX1 = MELVA1.VELCHE(IGMN,IB1)
  130. ENDIF
  131. IF (MELVA2.NE.0) THEN
  132. IGMN = MIN(IGAU,IGM2)
  133. AUX2 = MELVA2.VELCHE(IGMN,IB2)
  134. ENDIF
  135. IF (MELVA3.NE.0) THEN
  136. IGMN = MIN(IGAU,IGM3)
  137. AUX3 = MELVA3.VELCHE(IGMN,IB3)
  138. ENDIF
  139. ENDIF
  140. *
  141. T1 = r_z * AUX1
  142. T2 = r_z * AUX2
  143. T3 = r_z * AUX3
  144. C
  145. MPTVAL=IVAFOR
  146. DO 30 J=1,NBNN
  147. r_z = SHPTOT(1,J,IGAU)
  148. MELVAL = IVAL(1)
  149. VELCHE(J,IB) = VELCHE(J,IB) + r_z * T1
  150. MELVAL = IVAL(2)
  151. VELCHE(J,IB) = VELCHE(J,IB) + r_z * T2
  152. MELVAL = IVAL(3)
  153. VELCHE(J,IB) = VELCHE(J,IB) + r_z * T3
  154. 30 CONTINUE
  155.  
  156. 10 CONTINUE
  157.  
  158. 1 CONTINUE
  159.  
  160. SEGSUP WORK
  161.  
  162. IF (IPVECT.EQ.0) THEN
  163. IF (MELVA1.NE.0) SEGDES,MELVA1
  164. IF (MELVA2.NE.0) SEGDES,MELVA2
  165. IF (MELVA3.NE.0) SEGDES,MELVA3
  166. ENDIF
  167. C* SEGDES,MELEME <- ACTIF EN E/S (NON MODIFIE)
  168. C* SEGDES,MINTE <- ACTIF EN E/S (NON MODIFIE)
  169.  
  170. RETURN
  171. END
  172.  
  173.  
  174.  

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