Télécharger froa3d.eso

Retour à la liste

Numérotation des lignes :

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

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