Télécharger froa3d.eso

Retour à la liste

Numérotation des lignes :

froa3d
  1. C FROA3D SOURCE OF166741 25/02/21 21:16:56 12166
  2.  
  3. SUBROUTINE FROA3D(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 3D pour les *
  11. C massifs de face FAC3, FAC4, FAC6 ou FAC8. *
  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. IMPLICIT INTEGER(I-N)
  32. IMPLICIT REAL*8(A-H,O-Z)
  33.  
  34. -INC PPARAM
  35. -INC CCOPTIO
  36.  
  37. -INC SMRIGID
  38. -INC SMELEME
  39. -INC SMCOORD
  40. -INC SMCHAML
  41. -INC SMINTE
  42.  
  43. -INC TMPTVAL
  44.  
  45. SEGMENT,MWORK
  46. REAL*8 XE(3,NBNN)
  47. REAL*8 REL(LRE,LRE)
  48. REAL*8 SHPWRK(6,NBNN),BGENE(NDDL,LRE)
  49. REAL*8 VALMAT(NV1)
  50. REAL*8 VECN(NDDL),VECT1(NDDL),VECT2(NDDL)
  51. REAL*8 XNNT(NDDL,NDDL),XTTT1(NDDL,NDDL),XTTT2(NDDL,NDDL)
  52. ENDSEGMENT
  53.  
  54. IF (IFOUR.NE.2) THEN
  55. CALL ERREUR(21)
  56. RETURN
  57. ENDIF
  58. C
  59. MELEME=IPOGEO
  60. c* SEGACT MELEME
  61. NBNN=NUM(/1)
  62. NBELEM=NUM(/2)
  63. C
  64. MINTE=IPMINT
  65. c* SEGACT,MINTE
  66. NBPGAU=POIGAU(/1)
  67. C
  68. xMATRI=IPMATR
  69. c* SEGACT,xMATRI*MOD
  70. c* NLIGRD=LRE
  71. c* NLIGRP=LRE
  72. c*
  73. NV1=3
  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 des données matériau
  90. C
  91. MPTVAL=IVAMAT
  92. DO 11 J=1,3
  93. MELVAL=IVAL(J)
  94. IGMN=MIN(IGAU,VELCHE(/1))
  95. IBMN=MIN(IB,VELCHE(/2))
  96. VALMAT(J)=VELCHE(IGMN,IBMN)
  97. 11 CONTINUE
  98. C
  99. RHO=VALMAT(1)
  100. E=VALMAT(2)
  101. XNU=VALMAT(3)
  102. CS=E/(RHO*2.*(1+XNU))
  103. CP=2*CS*(1-XNU)/(1-2*XNU)
  104. CP=SQRT(CP)
  105. CS=SQRT(CS)
  106. C
  107. C coefficients d'amortissement
  108. C
  109. RCP=RHO*CP
  110. RCS=RHO*CS
  111. C
  112. C calcul des vecteurs du plan tangent
  113. C
  114. VNQSI1=0.D0
  115. VNQSI2=0.D0
  116. VNQSI3=0.D0
  117. VNETA1=0.D0
  118. VNETA2=0.D0
  119. VNETA3=0.D0
  120. C
  121. DO 20 I=1,NBNN
  122. VNQSI1=VNQSI1+SHPTOT(2,I,IGAU)*XE(1,I)
  123. VNQSI2=VNQSI2+SHPTOT(2,I,IGAU)*XE(2,I)
  124. VNQSI3=VNQSI3+SHPTOT(2,I,IGAU)*XE(3,I)
  125. VNETA1=VNETA1+SHPTOT(3,I,IGAU)*XE(1,I)
  126. VNETA2=VNETA2+SHPTOT(3,I,IGAU)*XE(2,I)
  127. VNETA3=VNETA3+SHPTOT(3,I,IGAU)*XE(3,I)
  128. 20 CONTINUE
  129. C
  130. C calcul de VECN,VECT1,VECT2 et du jacobien
  131. C
  132. VECN(1)=VNQSI2*VNETA3-VNQSI3*VNETA2
  133. VECN(2)=VNQSI3*VNETA1-VNQSI1*VNETA3
  134. VECN(3)=VNQSI1*VNETA2-VNQSI2*VNETA1
  135. XNORM=VECN(1)**2+VECN(2)**2+VECN(3)**2
  136. XNORM=SQRT(XNORM)
  137. C
  138. DJAC0=XNORM*POIGAU(IGAU)
  139. C
  140. VECN(1)=VECN(1)/XNORM
  141. VECN(2)=VECN(2)/XNORM
  142. VECN(3)=VECN(3)/XNORM
  143. C
  144. XNORM1=VNQSI1**2+VNQSI2**2+VNQSI3**2
  145. XNORM1=SQRT(XNORM1)
  146. VECT1(1)=VNQSI1/XNORM1
  147. VECT1(2)=VNQSI2/XNORM1
  148. VECT1(3)=VNQSI3/XNORM1
  149. C
  150. VECT2(1)=VECT1(2)*VECN(3)-VECT1(3)*VECN(2)
  151. VECT2(2)=VECT1(3)*VECN(1)-VECT1(1)*VECN(3)
  152. VECT2(3)=VECT1(1)*VECN(2)-VECT1(2)*VECN(1)
  153. C
  154. C calcul des matrices nnT, ttT1, et ttT2
  155. C
  156. DO 30 I=1,NDDL
  157. DO 31 J=1,NDDL
  158. XNNT(I,J)=VECN(I)*VECN(J)
  159. XTTT1(I,J)=VECT1(I)*VECT1(J)
  160. XTTT2(I,J)=VECT2(I)*VECT2(J)
  161. 31 CONTINUE
  162. 30 CONTINUE
  163. C
  164. C calcul de la matrice N des fonctions de forme
  165. C
  166. XDPGE=0.D0
  167. YDPGE=0.D0
  168. CALL NMATST(IGAU,MELE,MFR,NBNN,LRE,IFOUR,NIFOUR,NDDL,
  169. & DIM3,XE,SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE)
  170. C
  171. C construction de la matrice d'amortissement
  172. C
  173. DJACN=DJAC0*RCP
  174. CALL BDBST(BGENE,DJACN,XNNT,LRE,NDDL,REL)
  175.  
  176. DJACT=DJAC0*RCS
  177. CALL BDBST(BGENE,DJACT,XTTT1,LRE,NDDL,REL)
  178. CALL BDBST(BGENE,DJACT,XTTT2,LRE,NDDL,REL)
  179. C
  180. 10 CONTINUE
  181. C
  182. C remplissage de XMATRI
  183. C
  184. CALL REMPMT(REL,LRE,RE(1,1,ib))
  185. C
  186. 1 CONTINUE
  187. C
  188. SEGSUP,MWORK
  189.  
  190. c* SEGDES MELEME,MINTE,xMATRI
  191.  
  192. RETURN
  193. END
  194.  
  195.  
  196.  

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