Télécharger fsco2d.eso

Retour à la liste

Numérotation des lignes :

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

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