Télécharger fsma3d.eso

Retour à la liste

Numérotation des lignes :

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

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