Télécharger lfroa.eso

Retour à la liste

Numérotation des lignes :

lfroa
  1. C LFROA SOURCE OF166741 25/02/21 21:17:52 12166
  2.  
  3. SUBROUTINE LFROA(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 pour les liquides de face LSE2 *
  11. C dans le cas 2D, ou de face LTR3 ou LQU4 dans le cas 3D. *
  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 RCLMAT(NDDL,NDDL)
  53. ENDSEGMENT
  54.  
  55. MELEME=IPOGEO
  56. c* SEGACT MELEME
  57. NBNN=NUM(/1)
  58. NBELEM=NUM(/2)
  59. C
  60. MINTE=IPMINT
  61. c* SEGACT,MINTE
  62. NBPGAU=POIGAU(/1)
  63. C
  64. DIM3=1.D0
  65. C
  66. xMATRI=IPMATR
  67. c* SEGACT,xMATRI*MOD
  68. c* NLIGRD=LRE
  69. c* NLIGRP=LRE
  70.  
  71. NV1=5
  72. SEGINI,MWORK
  73. C
  74. C boucle sur les éléments
  75. C
  76. DO 1 IB=1,NBELEM
  77. C
  78. C on cherche les coordonnées de l'élément IB
  79. C
  80. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  81. CALL ZERO(REL,LRE,LRE)
  82. CALL ZERO(RCLMAT,NDDL,NDDL)
  83. C
  84. C boucle sur les points de Gauss
  85. C
  86. DO 10 IGAU=1,NBPGAU
  87. C
  88. C récupération de l'épaisseur
  89. C
  90. IF (IFOUR.EQ.-2) THEN
  91. IF (IVACAR.NE.0) THEN
  92. MPTVAL=IVACAR
  93. MELVAL=IVAL(1)
  94. IF (MELVAL.NE.0) THEN
  95. IGMN=MIN(IGAU,VELCHE(/1))
  96. IBMN=MIN(IB,VELCHE(/2))
  97. DIM3=VELCHE(IGMN,IBMN)
  98. ELSE
  99. DIM3=1.D0
  100. ENDIF
  101. ENDIF
  102. ENDIF
  103. C
  104. C récupération des données matériau
  105. C
  106. MPTVAL=IVAMAT
  107. DO 11 J=1,5
  108. MELVAL=IVAL(J)
  109. IGMN=MIN(IGAU,VELCHE(/1))
  110. IBMN=MIN(IB,VELCHE(/2))
  111. VALMAT(J)=VELCHE(IGMN,IBMN)
  112. 11 CONTINUE
  113. C
  114. RHO=VALMAT(1)
  115. CSON=VALMAT(2)
  116. ROREF=VALMAT(3)
  117. CREF=VALMAT(4)
  118. RLCAR=VALMAT(5)
  119. C
  120. C coefficient d'amortissement normalisé
  121. C
  122. RCL=(1.D0/CSON/rho)*ROREF*RLCAR*roref*cref**2/rlcar
  123. C
  124. C matrice RCLMAT
  125. C
  126. RCLMAT(1,1)=RCL
  127. RCLMAT(2,2)=RCL
  128. C
  129. C calcul de la matrice N des fonctions de forme
  130. C
  131. XDPGE=0.D0
  132. YDPGE=0.D0
  133. CALL NMATST(IGAU,MELE,MFR,NBNN,LRE,IFOUR,NIFOUR,NDDL,
  134. 1 DIM3,XE,SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE)
  135. C
  136. C mise à zéro des composantes sur p
  137. C
  138. DO 21 J=1,LRE
  139. BGENE(2,J)=0.D0
  140. 21 CONTINUE
  141. C
  142. C calcul du jacobien
  143. C
  144. IF (IDIM.EQ.3) THEN
  145. DXDQSI=0.D0
  146. DYDQSI=0.D0
  147. DZDQSI=0.D0
  148. DXDETA=0.D0
  149. DYDETA=0.D0
  150. DZDETA=0.D0
  151. DO 40 I=1,NBNN
  152. DXDQSI=DXDQSI+SHPTOT(2,I,IGAU)*XE(1,I)
  153. DYDQSI=DYDQSI+SHPTOT(2,I,IGAU)*XE(2,I)
  154. DXDETA=DXDETA+SHPTOT(3,I,IGAU)*XE(1,I)
  155. DYDETA=DYDETA+SHPTOT(3,I,IGAU)*XE(2,I)
  156. DZDQSI=DZDQSI+SHPTOT(2,I,IGAU)*XE(3,I)
  157. DZDETA=DZDETA+SHPTOT(3,I,IGAU)*XE(3,I)
  158. 40 CONTINUE
  159. DJAC=SQRT((DYDQSI*DZDETA-DYDETA*DZDQSI)**2+
  160. 1 (DXDETA*DZDQSI-DXDQSI*DZDETA)**2+
  161. 2 (DXDQSI*DYDETA-DXDETA*DYDQSI)**2)
  162. ELSE
  163. c* ELSE IF(IDIM.EQ.2) THEN
  164. DXDQSI=0.D0
  165. DYDQSI=0.D0
  166. DO I=1,NBNN
  167. DXDQSI=DXDQSI+SHPTOT(2,I,IGAU)*XE(1,I)
  168. DYDQSI=DYDQSI+SHPTOT(2,I,IGAU)*XE(2,I)
  169. ENDDO
  170. DJAC=SQRT(DXDQSI**2+DYDQSI**2)
  171. ENDIF
  172. C
  173. C calcul de l'élément de volume
  174. C
  175. IF (IFOUR.LT.0.OR.IFOUR.EQ.2) THEN
  176. R=1.D0
  177. IF (IFOUR.EQ.-2) R=DIM3
  178. ELSE
  179. R=0.D0
  180. DO I=1,NBNN
  181. R=R+SHPTOT(1,I,IGAU)*XE(1,I)
  182. ENDDO
  183. IF (IFOUR.EQ.0.OR.(IFOUR.EQ.1
  184. 1 .AND.NIFOUR.EQ.0)) THEN
  185. R=2*XPI*R
  186. ELSE
  187. c* ELSEIF (IFOUR.EQ.1.AND.NIFOUR.NE.0) THEN
  188. R=XPI*R
  189. ENDIF
  190. ENDIF
  191. C
  192. C construction de la matrice d'amortissement
  193. C
  194. DJAC=DJAC*POIGAU(IGAU)*R
  195. CALL BDBST(BGENE,DJAC,RCLMAT,LRE,NDDL,REL)
  196. C
  197. 10 CONTINUE
  198. C
  199. C remplissage de XMATRI
  200. C
  201. CALL REMPMT(REL,LRE,RE(1,1,ib))
  202. *
  203. ** la matrice calculée ci dessus serait correcte si l'on avait
  204. ** une formulation uniquement en pi. Comme on retient la formulation
  205. ** en p et pi et pour ne rien ajouter sur la ligne en pi (si non on
  206. ** ne satisfait plus la relation entre p et pi) on aboutit à une matrice
  207. ** disymetrique avec des termes uniquement sur le lignes en pi et collones
  208. ** en p. D'où la matrice suivante :
  209.  
  210. do 30 i = 1, lre
  211. do 31 j = 2, lre
  212. ix = mod(j,2)
  213. if (ix.eq.0) then
  214. re(i,j,ib) = -re( i,(j-1),ib)
  215. re( i,(j-1),ib) = 0.d0
  216. endif
  217. 31 continue
  218. 30 continue
  219.  
  220. 1 CONTINUE
  221.  
  222. SEGSUP,MWORK
  223. c* SEGDES MELEME,MINTE,xMATRI
  224.  
  225. RETURN
  226. END
  227.  
  228.  
  229.  
  230.  

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