Télécharger fsco3d.eso

Retour à la liste

Numérotation des lignes :

fsco3d
  1. C FSCO3D SOURCE OF166741 25/02/21 21:17:00 12166
  2.  
  3. SUBROUTINE FSCO3D(IPT,IPMAIL,IPVECT,VEC, IVAFOR)
  4.  
  5. C____________________________________________________________________
  6. C
  7. C CALCULE LES FORCES SURFACIQUES POUR LES COQUES 3D
  8. C
  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 OBJET GEOMETRIQUE
  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 MELVALS ASSOCIEES AUX FORCES
  20. C NODALE RESULTANTES
  21. C____________________________________________________________________
  22. C
  23. IMPLICIT INTEGER(I-N)
  24. IMPLICIT REAL*8(A-H,O-Z)
  25.  
  26. -INC PPARAM
  27. -INC CCOPTIO
  28.  
  29. -INC SMCHAML
  30. -INC SMELEME
  31. -INC SMCOORD
  32.  
  33. -INC TMPTVAL
  34.  
  35. DIMENSION VEC(*),IPT(*)
  36.  
  37. DIMENSION XE(3,3),XEL(3,3),BPSS(3,3),BB(9),FT(18),F(6)
  38. DIMENSION XX(3),YY(3)
  39.  
  40. DATA XX/0.5D0,0.5D0,0.0D0/
  41. DATA YY/0.0D0,0.5D0,0.5D0/
  42. PARAMETER (X1s3 = 0.333333333333333333333333333333333333333333D0 ,
  43. & X1s6 = 0.166666666666666666666666666666666666666667D0 )
  44.  
  45. MELVA1 = IPT(1)
  46. MELVA2 = IPT(2)
  47. MELVA3 = IPT(3)
  48. IF (IPVECT.EQ.0) THEN
  49. V1 = 0.D0
  50. V2 = 0.D0
  51. V3 = 0.D0
  52. IF (MELVA1.NE.0) THEN
  53. SEGACT,MELVA1
  54. IGM1 = MIN(3,MELVA1.VELCHE(/1))
  55. IBM1 = MELVA1.VELCHE(/2)
  56. ENDIF
  57. IF (MELVA2.NE.0) THEN
  58. SEGACT,MELVA2
  59. IGM2 = MIN(3,MELVA2.VELCHE(/1))
  60. IBM2 = MELVA2.VELCHE(/2)
  61. ENDIF
  62. IF (MELVA3.NE.0) THEN
  63. SEGACT,MELVA3
  64. IGM3 = MIN(3,MELVA3.VELCHE(/1))
  65. IBM3 = MELVA3.VELCHE(/2)
  66. ENDIF
  67. ELSE
  68. V1 = VEC(1)
  69. V2 = VEC(2)
  70. V3 = VEC(3)
  71. ENDIF
  72. C
  73. MELEME=IPMAIL
  74. C* SEGACT,MELEME (<- actif en E/S et non modifie)
  75. NBELEM = NUM(/2)
  76. C
  77. C BOUCLE SUR LES ELEMENTS
  78. C
  79. DO 1000 IB = 1, NBELEM
  80.  
  81. C Force moyenne sur l'element
  82. IF (IPVECT.EQ.0) THEN
  83. IF (MELVA1.NE.0) THEN
  84. IBMN = MIN(IB,IBM1)
  85. IF (IGM1.GT.1) THEN
  86. V1 = ( MELVA1.VELCHE(1,IBMN) + MELVA1.VELCHE(2,IBMN)
  87. & + MELVA1.VELCHE(3,IBMN) ) * X1s3
  88. ELSE
  89. V1 = MELVA1.VELCHE(1,IBMN)
  90. ENDIF
  91. ENDIF
  92. IF (MELVA2.NE.0) THEN
  93. IBMN = MIN(IB,IBM2)
  94. IF (IGM2.GT.1) THEN
  95. V2 = ( MELVA2.VELCHE(1,IBMN) + MELVA2.VELCHE(2,IBMN)
  96. & + MELVA2.VELCHE(3,IBMN) ) * X1s3
  97. ELSE
  98. V2 = MELVA2.VELCHE(1,IBMN)
  99. ENDIF
  100. ENDIF
  101. IF (MELVA3.NE.0) THEN
  102. IBMN = MIN(IB,IBM3)
  103. IF (IGM3.GT.1) THEN
  104. V3 = ( MELVA3.VELCHE(1,IBMN) + MELVA3.VELCHE(2,IBMN)
  105. & + MELVA3.VELCHE(3,IBMN) ) * X1s3
  106. ELSE
  107. V3 = MELVA3.VELCHE(1,IBMN)
  108. ENDIF
  109. ENDIF
  110. ENDIF
  111. C
  112. CALL DOXE(XCOOR,IDIM,3,NUM,IB,XE)
  113. C
  114. C MATRICE DE PASSAGE
  115. C
  116. CALL VPAST(XE,BPSS)
  117. C
  118. C COORDONNEES LOCALES
  119. C
  120. CALL VCORLC(XE,XEL,BPSS)
  121. C
  122. C chgt de repere des forces appliquees
  123. C
  124. VL1 = BPSS(1,1)*V1 + BPSS(1,2)*V2 + BPSS(1,3)*V3
  125. VL2 = BPSS(2,1)*V1 + BPSS(2,2)*V2 + BPSS(2,3)*V3
  126. VL3 = BPSS(3,1)*V1 + BPSS(3,2)*V2 + BPSS(3,3)*V3
  127. C
  128. X21 = XEL(1,2) - XEL(1,1)
  129. Y31 = XEL(2,3) - XEL(2,1)
  130. r_z = X21 * Y31 * X1s6
  131. FXT = r_z * VL1
  132. FYT = r_z * VL2
  133. SURFZ = r_z * VL3
  134. C
  135. C MISE A 0 DU VECTEUR FORCE
  136. C
  137. DO I = 1, 18
  138. FT(I) = 0.D0
  139. ENDDO
  140. C
  141. C INTEGRATION NUMERIQUE : IGAU NUMERO DU POINT DE GAUSS
  142. C IA NUMERO D UN NOEUD
  143. C
  144. DO 200 IGAU = 1, 3
  145. CALL MFDKT(XX(IGAU),YY(IGAU),XEL,BB)
  146. DO 210 IA = 1, 3
  147. IK = (IA-1)*3
  148. IP = IK*2+2
  149. FT(IP-1) = FXT
  150. FT(IP ) = FYT
  151. FT(IP+1) = FT(IP+1) + SURFZ*BB(IK+1)
  152. FT(IP+2) = FT(IP+2) + SURFZ*BB(IK+2)
  153. FT(IP+3) = FT(IP+3) + SURFZ*BB(IK+3)
  154. 210 CONTINUE
  155. 200 CONTINUE
  156. C
  157. C CHANGEMENT DE REPERE
  158. C
  159. MPTVAL = IVAFOR
  160. DO 400 I = 1, 3
  161. KP = 6 * (I-1)
  162. DO 402 J = 1,3
  163. MELVAL = IVAL(J)
  164. VELCHE(I,IB) = BPSS(1,J)*FT(1+KP) + BPSS(2,J)*FT(2+KP)
  165. & + BPSS(3,J)*FT(3+KP)
  166. MELVAL = IVAL(J+3)
  167. VELCHE(I,IB) = BPSS(1,J)*FT(4+KP) + BPSS(2,J)*FT(5+KP)
  168. & + BPSS(3,J)*FT(6+KP)
  169. 402 CONTINUE
  170. 400 CONTINUE
  171.  
  172. 1000 CONTINUE
  173.  
  174. IF (IPVECT.EQ.0) THEN
  175. IF (MELVA1.NE.0) SEGDES,MELVA1
  176. IF (MELVA2.NE.0) SEGDES,MELVA2
  177. IF (MELVA3.NE.0) SEGDES,MELVA3
  178. ENDIF
  179. C* SEGDES,MELEME (<- actif en E/S et non modifie)
  180.  
  181. RETURN
  182. END
  183.  
  184.  
  185.  

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