Télécharger froa2d.eso

Retour à la liste

Numérotation des lignes :

froa2d
  1. C FROA2D SOURCE OF166741 25/02/21 21:16:55 12166
  2.  
  3. SUBROUTINE FROA2D(IPOGEO,IPMATR,IPMINT,IVAMAT,
  4. 1 IVACAR,MELE,MFR,LRE,NDDL)
  5.  
  6. C***********************************************************************
  7. C *
  8. C Routine appelée par FRVISQ. *
  9. C *
  10. C Calcule l'amortissement de frontière dans le cas 2D pour les *
  11. C massifs de face SEG2 ou SEG3. *
  12. C *
  13. C Entrées : *
  14. C -------- *
  15. C *
  16. C IPOGEO : pointeur sur le maillage de l'enveloppe des massifs, *
  17. C type MELEME *
  18. C IPMATR : pointeur sur le segment IMATRI, chapeau des rigidités *
  19. C élémentaires *
  20. C IPMINT : pointeur sur le segment d'intégration, type MINTE *
  21. C IVAMAT : pointeur sur un segment MPTVAL de données matériau *
  22. C IVACAR : pointeur sur un segment MPTVAL de caractéristiques *
  23. C (épaisseur dans le cas contraintes planes) *
  24. C MELE : numéro de l'élément fini associé à la face du massif *
  25. C MFR : numéro de la formulation *
  26. C LRE : taille de la matrice d'amortissement à construire *
  27. C NDDL : nombre de degrés de liberté *
  28. C *
  29. C Remplit le segment XMATRI pour chaque élément de la sous-zone. *
  30. C***********************************************************************
  31.  
  32. IMPLICIT INTEGER(I-N)
  33. IMPLICIT REAL*8(A-H,O-Z)
  34.  
  35. -INC PPARAM
  36. -INC CCOPTIO
  37. -INC CCREEL
  38.  
  39. -INC SMRIGID
  40. -INC SMELEME
  41. -INC SMCOORD
  42. -INC SMCHAML
  43. -INC SMINTE
  44.  
  45. -INC TMPTVAL
  46.  
  47. SEGMENT MWORK
  48. REAL*8 XE(3,NBNN)
  49. REAL*8 REL(LRE,LRE)
  50. REAL*8 SHPWRK(6,NBNN),BGENE(NDDL,LRE)
  51. REAL*8 VALMAT(NV1)
  52. REAL*8 VECN(NDDL),VECT1(NDDL),VECT2(NDDL)
  53. REAL*8 XNNT(NDDL,NDDL),XTTT1(NDDL,NDDL),XTTT2(NDDL,NDDL)
  54. ENDSEGMENT
  55.  
  56. MELEME=IPOGEO
  57. c* SEGACT,MELEME
  58. NBNN=NUM(/1)
  59. NBELEM=NUM(/2)
  60. *
  61. MINTE=IPMINT
  62. c* SEGACT,MINTE
  63. NBPGAU=POIGAU(/1)
  64. C
  65. NV1=3
  66. C
  67. DIM3=1.D0
  68. C
  69. xMATRI=IPMATR
  70. c* SEGACT,xMATRI*MOD
  71. c* NLIGRD=LRE
  72. c* NLIGRP=LRE
  73. *
  74. SEGINI,MWORK
  75. C
  76. C boucle sur les éléments
  77. C
  78. DO 1 IB=1,NBELEM
  79. C
  80. C on cherche les coordonnées de l'élément IB
  81. C
  82. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  83. CALL ZERO(REL,LRE,LRE)
  84. C
  85. C boucle sur les points de Gauss
  86. C
  87. DO 10 IGAU=1,NBPGAU
  88. C
  89. C récupération de l'épaisseur
  90. C
  91. IF (IFOUR.EQ.-2) THEN
  92. MPTVAL=IVACAR
  93. IF (IVACAR.NE.0) THEN
  94. MELVAL=IVAL(1)
  95. IF (MELVAL.NE.0) THEN
  96. IGMN=MIN(IGAU,VELCHE(/1))
  97. IBMN=MIN(IB,VELCHE(/2))
  98. DIM3=VELCHE(IGMN,IBMN)
  99. ELSE
  100. DIM3=1.D0
  101. ENDIF
  102. ENDIF
  103. ENDIF
  104. C
  105. C récupération des données matériau
  106. C
  107. MPTVAL=IVAMAT
  108. DO 11 J=1,3
  109. MELVAL=IVAL(J)
  110. IGMN=MIN(IGAU,VELCHE(/1))
  111. IBMN=MIN(IB,VELCHE(/2))
  112. VALMAT(J)=VELCHE(IGMN,IBMN)
  113. 11 CONTINUE
  114. C
  115. RHO=VALMAT(1)
  116. E=VALMAT(2)
  117. XNU=VALMAT(3)
  118. CS=E/(2*(1+XNU)*RHO)
  119. IF (IFOUR.EQ.-2) THEN
  120. CP=SQRT(E/(RHO*(1-XNU*XNU)))
  121. ELSE
  122. CP=SQRT(2*CS*(1-XNU)/(1-2*XNU))
  123. ENDIF
  124. CS=SQRT(CS)
  125. C
  126. C coefficients d'amortissement
  127. C
  128. RCP=RHO*CP
  129. RCS=RHO*CS
  130. C
  131. C calcul de la tangente locale normalisée
  132. C
  133. VNQSI1=0.D0
  134. VNQSI2=0.D0
  135. DO 20 I=1,NBNN
  136. VNQSI1=VNQSI1+SHPTOT(2,I,IGAU)*XE(1,I)
  137. VNQSI2=VNQSI2+SHPTOT(2,I,IGAU)*XE(2,I)
  138. 20 CONTINUE
  139. XNORM=SQRT(VNQSI1*VNQSI1+VNQSI2*VNQSI2)
  140. VECT1(1)=VNQSI1/XNORM
  141. VECT1(2)=VNQSI2/XNORM
  142. IF(IFOUR.EQ.1) VECT1(3)=0.D0
  143. C
  144. C calcul de la normale
  145. C
  146. VECN(1)=-VECT1(2)
  147. VECN(2)=VECT1(1)
  148. IF(IFOUR.EQ.1) VECN(3)=0.D0
  149. C
  150. C calcul des matrices nnT et ttT1
  151. C
  152. DO 30 I=1,NDDL
  153. DO 31 J=1,NDDL
  154. XNNT(I,J)=VECN(I)*VECN(J)
  155. XTTT1(I,J)=VECT1(I)*VECT1(J)
  156. 31 CONTINUE
  157. 30 CONTINUE
  158. C
  159. C calcul du deuxième vecteur tangent dans le cas du mode Fourier
  160. C et de la matrice ttT2 associee
  161. C
  162. IF (IFOUR.EQ.1) THEN
  163. VECT2(1)=0.D0
  164. VECT2(2)=0.D0
  165. VECT2(3)=1.D0
  166. DO I=1,NDDL
  167. DO J=1,NDDL
  168. XTTT2(I,J)=VECT2(I)*VECT2(J)
  169. ENDDO
  170. ENDDO
  171. ENDIF
  172. C
  173. C calcul de la matrice N des fonctions de forme
  174. C
  175. XDPGE=0.D0
  176. YDPGE=0.D0
  177. CALL NMATST(IGAU,MELE,MFR,NBNN,LRE,IFOUR,NIFOUR,NDDL,
  178. 1 DIM3,XE,SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE)
  179. C
  180. C calcul du jacobien
  181. C
  182. DXDQSI=0.D0
  183. DYDQSI=0.D0
  184. DO 40 I=1,NBNN
  185. DXDQSI=DXDQSI+SHPTOT(2,I,IGAU)*XE(1,I)
  186. DYDQSI=DYDQSI+SHPTOT(2,I,IGAU)*XE(2,I)
  187. 40 CONTINUE
  188. DJAC=SQRT(DXDQSI*DXDQSI+DYDQSI*DYDQSI)
  189. C
  190. C calcul de l'élément de volume
  191. C
  192. IF (IFOUR.LT.0) THEN
  193. R=1.D0
  194. IF (IFOUR.EQ.-2) R=DIM3
  195. ELSE
  196. R=0.D0
  197. DO I=1,NBNN
  198. R=R+SHPTOT(1,I,IGAU)*XE(1,I)
  199. ENDDO
  200. IF (IFOUR.EQ.0.OR.(IFOUR.EQ.1
  201. & .AND.NIFOUR.EQ.0)) THEN
  202. R=2*XPI*R
  203. ELSEIF (IFOUR.EQ.1.AND.NIFOUR.NE.0) THEN
  204. R=XPI*R
  205. ENDIF
  206. ENDIF
  207. C
  208. C construction de la matrice d'amortissement
  209. C
  210. DJACN=ABS(DJAC)*RCP*POIGAU(IGAU)*R
  211. CALL BDBST(BGENE,DJACN,XNNT,LRE,NDDL,REL)
  212.  
  213. DJACT=ABS(DJAC)*RCS*POIGAU(IGAU)*R
  214. CALL BDBST(BGENE,DJACT,XTTT1,LRE,NDDL,REL)
  215. C
  216. C cas du mode Fourier
  217. C
  218. IF (IFOUR.EQ.1) THEN
  219. CALL BDBST(BGENE,DJACT,XTTT2,LRE,NDDL,REL)
  220. ENDIF
  221. C
  222. 10 CONTINUE
  223. C
  224. C remplissage de XMATRI
  225. C
  226. CALL REMPMT(REL,LRE,RE(1,1,ib))
  227. C
  228. 1 CONTINUE
  229.  
  230. SEGSUP,MWORK
  231. c* SEGDES,xMATRI,MINTE,MELEME
  232.  
  233. RETURN
  234. END
  235.  
  236.  
  237.  

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