Télécharger fsco2d.eso

Retour à la liste

Numérotation des lignes :

fsco2d
  1. C FSCO2D SOURCE FANDEUR 12/07/18 21:15:37 7434
  2. *
  3. SUBROUTINE FSCO2D(IPT,IPMAIL,IPVECT,V,IVAFOR,IVACAR)
  4. *
  5. *_______________________________________________________________________
  6. *
  7. * CALCULE LES FORCES SURFACIQUES SUR LES FACES D ELEMENTS
  8. * COQUES BIDIMENSIONNELS
  9. *
  10. * ENTREES :
  11. * ---------
  12. *
  13. * IPT TABLEAU DE POINTEUR SUR UN MPTVAL CONTENANT LES FORCES
  14. * APPLIQUEES
  15. * 0 SI ON A DONNE UNE FORCE CONSTANTE
  16. * IPMAIL POINTEUR SUR UN OBJET GEOMETRIQUE
  17. * IPVECT POINTEUR SUR LE VECTEUR REPRESENTANT LA FORCE
  18. * V VECTEUR REPRESENTANT LA FORCE
  19. * IVAFOR POINTEUR SUR UN MPTVAL ET UN MELVAL DEVANT CONTENIR LES
  20. * FORCES NODALES RESULTANTES
  21. *
  22. *_______________________________________________________________________
  23. *
  24. IMPLICIT INTEGER(I-N)
  25. IMPLICIT REAL*8(A-H,O-Z)
  26. *
  27.  
  28. -INC PPARAM
  29. -INC CCOPTIO
  30. -INC CCREEL
  31. *
  32. -INC SMCHAML
  33. -INC SMELEME
  34. -INC SMCOORD
  35. *
  36. SEGMENT MPTVAL
  37. INTEGER IPOS(NS) ,NSOF(NS)
  38. INTEGER IVAL(NCOSOU)
  39. CHARACTER*16 TYVAL(NCOSOU)
  40. ENDSEGMENT
  41. *
  42. DIMENSION IPT(*),V(*)
  43. DIMENSION XE(3,2)
  44. *
  45. PARAMETER ( X2Pi = 6.283185307179586476925286766559D0 )
  46. *
  47. MELVA1 = IPT(1)
  48. MELVA2 = IPT(2)
  49. IF (IPVECT.EQ.0) THEN
  50. F11I = XZero
  51. F12I = XZero
  52. F21I = XZero
  53. F22I = XZero
  54. IF (MELVA1.NE.0) THEN
  55. SEGACT,MELVA1
  56. IGM1 = MIN(2,MELVA1.VELCHE(/1))
  57. IBM1 = MELVA1.VELCHE(/2)
  58. ENDIF
  59. IF (MELVA2.NE.0) THEN
  60. SEGACT,MELVA2
  61. IGM2 = MIN(2,MELVA2.VELCHE(/1))
  62. IBM2 = MELVA2.VELCHE(/2)
  63. ENDIF
  64. ELSE
  65. F11I = V(1)
  66. F12I = V(2)
  67. F21I = V(1)
  68. F22I = V(2)
  69. ENDIF
  70. *
  71. MELEME=IPMAIL
  72. C* SEGACT,MELEME <- ACTIF EN E/S (NON MODIFIE)
  73. C* NBNN=NUM(/1)
  74. NBELEM=NUM(/2)
  75. C
  76. C RECUPERATION DE L'EPAISSEUR (CONTRAINTES PLANES) :
  77. C
  78. DIM3 = 1.D0
  79. MELVA3 = 0
  80. IF (IVACAR.NE.0 .AND. IFOUR.EQ.-2) THEN
  81. MPTVAL = IVACAR
  82. MELVA3 = IVAL(1)
  83. IF (MELVA3.NE.0) THEN
  84. IGM3 = MELVA3.VELCHE(/1)
  85. IBM3 = MELVA3.VELCHE(/2)
  86. ENDIF
  87. ENDIF
  88.  
  89. IF (IFOUR.LE.0) THEN
  90. IFO = 0
  91. ELSE IF (IFOUR.EQ.1)THEN
  92. IFO = 1
  93. ENDIF
  94. *
  95. MPTVAL = IVAFOR
  96. *
  97. * BOUCLE SUR LES ELEMENTS
  98. *
  99. DO 1 IB = 1, NBELEM
  100. C
  101. C RECUPERATION DE L'EPAISSEUR SI DEFINIE
  102. C
  103. IF (MELVA3.NE.0) THEN
  104. IBMN = MIN(IB,IBM3)
  105. *OF Valeur constante par element ?
  106. DIM3 = MELVA3.VELCHE(IGM3,IBMN)
  107. ENDIF
  108. *
  109. CALL DOXE(XCOOR,IDIM,2,NUM,IB,XE)
  110.  
  111. R1 = XE(1,1)
  112. R2 = XE(1,2)
  113.  
  114. A = R2 - R1
  115. B = XE(2,2) - XE(2,1)
  116. D2 = A*A + B*B
  117. D = SQRT(D2)
  118. UNSD = 1.D0/D
  119. A = A * UNSD
  120. B = B * UNSD
  121.  
  122. IF (IFOUR.LT.0) THEN
  123. IF (IFOUR.EQ.-2) THEN
  124. R1 = DIM3
  125. R2 = DIM3
  126. ELSE
  127. R1 = 1.D0
  128. R2 = 1.D0
  129. ENDIF
  130. ELSE IF (IFOUR.EQ.0) THEN
  131. R1 = X2Pi * R1
  132. R2 = X2Pi * R2
  133. C* ELSE IF (IFOUR.EQ.1) THEN
  134. ELSE
  135. IF (NIFOUR.EQ.0) THEN
  136. R1 = X2Pi * R1
  137. R2 = X2Pi * R2
  138. ELSE
  139. R1 = XPI * R1
  140. R2 = XPI * R2
  141. ENDIF
  142. ENDIF
  143. *
  144. IF (IPVECT.EQ.0) THEN
  145. IF (MELVA1.NE.0) THEN
  146. IBMN = MIN(IB,IBM1)
  147. F11I = MELVA1.VELCHE(1,IBMN)
  148. F21I = MELVA1.VELCHE(IGM1,IBMN)
  149. ENDIF
  150. IF (MELVA2.NE.0) THEN
  151. IBMN = MIN(IB,IBM2)
  152. F12I = MELVA2.VELCHE(1,IBMN)
  153. F22I = MELVA2.VELCHE(IGM2,IBMN)
  154. ENDIF
  155. ENDIF
  156. *
  157. * chgt repère du vecteur F: global -> local
  158. *
  159. F11 = A*F11I + B*F12I
  160. F12 = -B*F11I + A*F12I
  161. F21 = A*F21I + B*F22I
  162. F22 = -B*F21I + A*F22I
  163. *
  164. FA = F12*R1
  165. FB = F12*R2 + F22*R1 - 2.D0*F12*R1
  166. FC = (F22-F12)*(R2-R1)
  167. *
  168. XO1 = D2 * (FA/12.D0+FB/30.D0+FC/60.D0)
  169. XO2 =-D2 * (FA/12.D0+FB/20.D0+FC/30.D0)
  170. *
  171. FP12 = D * (FA*0.5D0+FB*0.15D0+FC/15.D0)
  172. FP22 = D * (FA*0.5D0+FB*0.35D0+FC*4.D0/15.D0)
  173. *
  174. IF (IFOUR.EQ.0) THEN
  175. FD=F11*R1
  176. FE=F21*R2
  177. FF=F21*R1 + F11*R2 + FE
  178. FG=F21*R1 + F11*R2 + FD
  179. FP11=D*(FD/4.D0 + FF/12.D0)
  180. FP21=D*(FE/4.D0 + FG/12.D0)
  181. ELSE
  182. FP11=D*(F11/3.D0 + F21/6.D0)
  183. FP21=D*(F21/3.D0 + F11/6.D0)
  184. ENDIF
  185. *
  186. MELVAL = IVAL(1)
  187. VELCHE(1,IB) = -B*FP12 + A*FP11
  188. VELCHE(2,IB) = -B*FP22 + A*FP21
  189. *
  190. MELVAL = IVAL(2)
  191. VELCHE(1,IB) = A*FP12 + B*FP11
  192. VELCHE(2,IB) = A*FP22 + B*FP21
  193. *
  194. MELVAL = IVAL(3+IFO)
  195. VELCHE(1,IB) = XO1
  196. VELCHE(2,IB) = XO2
  197. *
  198. 1 CONTINUE
  199.  
  200. IF (IPVECT.EQ.0) THEN
  201. IF (MELVA1.NE.0) SEGDES,MELVA1
  202. IF (MELVA2.NE.0) SEGDES,MELVA2
  203. ENDIF
  204. C* SEGDES,MELEME <- ACTIF EN E/S (NON MODIFIE)
  205.  
  206. RETURN
  207. END
  208.  
  209.  
  210.  

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