Télécharger fsco3d.eso

Retour à la liste

Numérotation des lignes :

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

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