Télécharger ellp22.eso

Retour à la liste

Numérotation des lignes :

  1. C ELLP22 SOURCE KK2000 14/04/09 21:15:20 8027
  2. SUBROUTINE ELLP22(CORRES,FLAG,COOR,GAMA,ZA1,MASS,RMAS,
  3. * ZS,NP,NP24,NMAS,NNT)
  4. C
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8 (A-H,O-Y)
  7. IMPLICIT COMPLEX*16 (Z)
  8. C
  9. C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  10. C
  11. C OPERATEUR ELFE LAPLACE POUTRE
  12. C
  13. C PRISE EN COMPTE DE LA MASSE PONCTUELLE
  14. C
  15. C PARAMETRES :
  16. C
  17. C COOR : TABLEAU DES COORDONNEES DES NOEUDS (3,2*NP)
  18. C GAMA : TABLEAU DES VECTEUR DEFINISSANT LE PLAN LOCALE OXY (3,2*NP)
  19. C ZA1 : MATRICE DE RIGIDITE
  20. C MASS : LIEU DES MASSES PONCTUELLES
  21. C RASS : VALEUR DES MASSES PONCTUELLES
  22. C ZS : VALEUR DE LA VARIABLE DE LAPLACE
  23. C NP : NOMBRE DE POUTRES
  24. C NP24 : --> NP*24
  25. C NMAS : NOMBRE DE MASSES PONCTUELLES
  26. C NNT : NOMBRE TOTAL DE NOEUDS
  27. C
  28. C
  29. C AUTEURS : SAINT-DIZIER ET GORCY
  30. C DATE : 04 FEVRIER 1991
  31. C
  32. C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  33. C
  34. DIMENSION COOR(3,*),GAMA(3,*)
  35. DIMENSION ZA1(NP24,*),MASS(NNT,4)
  36. DIMENSION RMAS(NNT,4)
  37. INTEGER FLAG(*),CORRES(*)
  38. C
  39. C
  40. C
  41. IF (NMAS.GT.0) THEN
  42. DO 10 I = 1 , NMAS
  43. INP = MASS(I,2)
  44. N1 = 2*INP-1
  45. N2 = 2*INP
  46. X1 = COOR (1,N1)
  47. Y1 = COOR (2,N1)
  48. Z1 = COOR (3,N1)
  49. X2 = COOR (1,N2)
  50. Y2 = COOR (2,N2)
  51. Z2 = COOR (3,N2)
  52. C
  53. XL = SQRT((X2-X1)**2 + (Y2-Y1)**2 + (Z2-Z1)**2)
  54. C
  55. C -- VECTEUR UNITAIRE OX REPERE LOCALE
  56. C
  57. XI1 = (X2-X1)/XL
  58. XI2 = (Y2-Y1)/XL
  59. XI3 = (Z2-Z1)/XL
  60. C
  61. C -- VECTEUR UNITAIRE OY REPERE LOCALE
  62. C
  63. GX = GAMA(1,INP)
  64. GY = GAMA(2,INP)
  65. GZ = GAMA(3,INP)
  66. GG = SQRT(GX*GX + GY*GY + GZ*GZ)
  67. GX = GX/GG
  68. GY = GY/GG
  69. GZ = GZ/GG
  70. C
  71. DELTA = SQRT (1.D0 - (XI1*GX + XI2*GY + XI3*GZ)**2)
  72. C
  73. DET=-(GX*XI3-GZ*XI1)**2-(GY*XI1-GX*XI2)**2-(GY*XI3-GZ*XI2)**2
  74. C
  75. IF (ABS(DET).LT.1E-12) THEN
  76. XJ1 = -XI2
  77. XJ2 = 0.
  78. XJ3 = 0.
  79. ELSE
  80. XJ1 = (XI2*(GY*XI1-GX*XI2)-XI3*(GX*XI3-GZ*XI1))*DELTA/DET
  81. XJ2 = (XI3*(GZ*XI2-GY*XI3)-XI1*(GY*XI1-GX*XI2))*DELTA/DET
  82. XJ3 = (XI1*(GX*XI3-GZ*XI1)-XI2*(GZ*XI2-GY*XI3))*DELTA/DET
  83. ENDIF
  84. C
  85. C -- VECTEUR UNITAIRE OZ REPERE LOCALE
  86. C
  87. XK1 = XI2*XJ3 - XI3*XJ2
  88. XK2 = XI3*XJ1 - XI1*XJ3
  89. XK3 = XI1*XJ2 - XI2*XJ1
  90. C
  91. Z11 = XJ2*XK3 - XJ3*XK2
  92. Z12 = XJ3*XK1 - XJ1*XK3
  93. Z13 = XJ1*XK2 - XJ2*XK1
  94. Z21 = XI3*XK2 - XI2*XK3
  95. Z22 = XI1*XK3 - XI3*XK1
  96. Z23 = XI2*XK1 - XI1*XK2
  97. Z31 = XI2*XJ3 - XI3*XJ2
  98. Z32 = XI3*XJ1 - XI1*XJ3
  99. Z33 = XI1*XJ2 - XI2*XJ1
  100. C
  101. NN = CORRES (MASS(I,1))
  102. IZA1 = MASS(I,4)
  103. JZA1 = MASS(I,3)
  104. C
  105. C
  106. IF (FLAG((NN-1)*12+1).EQ.0) THEN
  107. ZA1(IZA1 ,JZA1) = -CMPLX(1.D0)*RMAS(I,1)*ZS*ZS
  108. ENDIF
  109. IF (FLAG((NN-1)*12+2).EQ.0) THEN
  110. ZA1(IZA1+1,JZA1+1) = -CMPLX(1.D0)*RMAS(I,1)*ZS*ZS
  111. ENDIF
  112. IF (FLAG((NN-1)*12+3).EQ.0) THEN
  113. ZA1(IZA1+2,JZA1+2) = -CMPLX(1.D0)*RMAS(I,1)*ZS*ZS
  114. ENDIF
  115. C
  116. IF (FLAG((NN-1)*12+4).EQ.0) THEN
  117. ZA1(IZA1+3,JZA1+3) = -CMPLX(1.D0)*ZS*ZS*( RMAS(I,2)*Z11*XI1
  118. * + RMAS(I,3)*Z21*XJ1 + RMAS(I,4)*Z31*XK1 )
  119. ZA1(IZA1+3,JZA1+4) = -CMPLX(1.D0)*ZS*ZS*( RMAS(I,2)*Z12*XI1
  120. * + RMAS(I,3)*Z22*XJ1 + RMAS(I,4)*Z32*XK1 )
  121. ZA1(IZA1+3,JZA1+5) = -CMPLX(1.D0)*ZS*ZS*( RMAS(I,2)*Z13*XI1
  122. * + RMAS(I,3)*Z23*XJ1 + RMAS(I,4)*Z33*XK1 )
  123. ENDIF
  124. C
  125. IF (FLAG((NN-1)*12+5).EQ.0) THEN
  126. ZA1(IZA1+4,JZA1+3) = -CMPLX(1.D0)*ZS*ZS*( RMAS(I,2)*Z11*XI2
  127. * + RMAS(I,3)*Z21*XJ2 + RMAS(I,4)*Z31*XK2 )
  128. ZA1(IZA1+4,JZA1+4) = -CMPLX(1.D0)*ZS*ZS*( RMAS(I,2)*Z12*XI2
  129. * + RMAS(I,3)*Z22*XJ2 + RMAS(I,4)*Z32*XK2 )
  130. ZA1(IZA1+4,JZA1+5) = -CMPLX(1.D0)*ZS*ZS*( RMAS(I,2)*Z13*XI2
  131. * + RMAS(I,3)*Z23*XJ2 + RMAS(I,4)*Z33*XK2 )
  132. ENDIF
  133. C
  134. IF (FLAG((NN-1)*12+6).EQ.0) THEN
  135. ZA1(IZA1+5,JZA1+3) = -CMPLX(1.D0)*ZS*ZS*( RMAS(I,2)*Z11*XI3
  136. * + RMAS(I,3)*Z21*XJ3 + RMAS(I,4)*Z31*XK3 )
  137. ZA1(IZA1+5,JZA1+4) = -CMPLX(1.D0)*ZS*ZS*( RMAS(I,2)*Z12*XI3
  138. * + RMAS(I,3)*Z22*XJ3 + RMAS(I,4)*Z32*XK3 )
  139. ZA1(IZA1+5,JZA1+5) = -CMPLX(1.D0)*ZS*ZS*( RMAS(I,2)*Z13*XI3
  140. * + RMAS(I,3)*Z23*XJ3 + RMAS(I,4)*Z33*XK3 )
  141. ENDIF
  142. C
  143. C
  144. 10 CONTINUE
  145. C
  146. END IF
  147. C
  148. END
  149.  
  150.  
  151.  

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