Télécharger hbmzx.eso

Retour à la liste

Numérotation des lignes :

hbmzx
  1. C HBMZX SOURCE OF166741 26/05/11 21:15:18 12538
  2.  
  3. SUBROUTINE HBMZX(NT,NDDL,ISD,X,OMEG,XM,XC,XK,ZX,LOGAMO)
  4.  
  5. *=======================================================================
  6. * ZX: calcul du produit Z(w)*X
  7. *
  8. * Z : Matrice de raideur dynamique
  9. * = | w²*kron(DL²,M) + w*kron(DL,C) + kron(I,K) si LOGAMO
  10. * | w²*kron(DL²,M) + kron(I,K) sinon
  11. * X : coefficients de Fourier
  12. * w : frequence
  13. *=======================================================================
  14.  
  15.  
  16. *----- Declarations ----------------------------------------------------
  17.  
  18. IMPLICIT INTEGER(I-N)
  19. IMPLICIT REAL*8(A-H,O-Z)
  20.  
  21. REAL*8 X(NT),ZX(NT),OMEG
  22. REAL*8 XM(NDDL,NDDL),XC(NDDL,NDDL),XK(NDDL,NDDL)
  23. REAL*8 CF
  24. INTEGER NT,NDDL,ISD,H,I,J,M,P,Q
  25. LOGICAL LOGAMO
  26.  
  27. * Nombre d'harmoniques
  28. NH = (NT/NDDL - 1)/2
  29.  
  30. *------ Matrices diagonales --------------------------------------------
  31. IF (ISD.EQ.1) THEN
  32.  
  33. * Termes constants
  34. DO 1 P=1,NDDL
  35. ZX(P) = XK(P,1)*X(P)
  36. 1 CONTINUE
  37.  
  38. c -cas non conservatif (i.e. avec amortissement)
  39. IF (LOGAMO) THEN
  40.  
  41. DO 10 J=1,2*NH
  42. * Termes pairs (sin)
  43. IF (MOD(J,2).EQ.0) THEN
  44. cf = -J * 0.5D0
  45. r_z1 = OMEG*cf
  46. r_z2 = r_z1*r_z1
  47. DO 11 I = 1,NDDL
  48. ZX(J*nddl+I)= (XK(I,1)-r_z2*XM(I,1))*x(J*nddl+I)
  49. & +r_z1*XC(I,1)*x((J-1)*nddl+I)
  50. 11 CONTINUE
  51. * Termes impairs (cos)
  52. ELSE
  53. cf = (J+1)*0.5D0
  54. r_z1 = OMEG*cf
  55. r_z2 = r_z1*r_z1
  56. DO 12 I = 1,NDDL
  57. ZX(J*nddl+I)=(XK(I,1)-r_z2*XM(I,1))*X(J*nddl+I)
  58. & +r_z1*XC(I,1)*x((J+1)*NDDL+I)
  59. 12 CONTINUE
  60. ENDIF
  61. 10 CONTINUE
  62.  
  63. c -cas conservatif (i.e. sans amortissement)
  64. ELSE
  65. DO 20 J=1,2*NH
  66. * Termes pairs (sin)
  67. IF (MOD(J,2).EQ.0) THEN
  68. cf = -J * 0.5D0
  69. r_z1 = OMEG*cf
  70. r_z2 = r_z1*r_z1
  71. DO 21 I = 1,NDDL
  72. ZX(J*nddl+I)=(XK(I,1)- r_z2*XM(I,1))*x(J*nddl+I)
  73. 21 CONTINUE
  74. * Termes impairs (cos)
  75. ELSE
  76. cf = (J+1) * 0.5D0
  77. r_z1 = OMEG*cf
  78. r_z2 = r_z1*r_z1
  79. DO 22 I = 1,NDDL
  80. ZX(J*nddl+I)=(XK(I,1)-r_z2*XM(I,1))*X(J*nddl+I)
  81. 22 CONTINUE
  82. ENDIF
  83. 20 CONTINUE
  84. ENDIF
  85.  
  86.  
  87. *------ Matrices generales ---------------------------------------------
  88. ELSE
  89.  
  90. * Termes constants
  91. DO 101 P=1,NDDL
  92. r_z = 0.D0
  93. DO 102 Q=1,NDDL
  94. r_z = r_z + XK(P,Q)*X(Q)
  95. 102 CONTINUE
  96. ZX(P) = r_z
  97. 101 CONTINUE
  98.  
  99. c -cas non conservatif (i.e. avec amortissement)
  100. IF (LOGAMO) THEN
  101. DO 111 J=2,2,2*NH
  102. r_z1 = J*OMEG
  103. r_z2 = r_z1 * r_z1
  104. DO 112 M=1,NDDL
  105. ZX(J*NDDL+M) = 0.D0
  106. DO 113 H=1,NDDL
  107. ZX(J*NDDL+M)=ZX(J*NDDL+M)+(XK(M,H)-r_z2*XM(M,H))
  108. & *X(J*NDDL+H)+r_z1*XC(M,H)*X((J+1)*NDDL+H)
  109. ZX((J+1)*NDDL+M)=ZX((J+1)*NDDL+M)-(XK(M,H)+r_z2
  110. & *XM(M,H))*X((J+1)*NDDL+H)-r_z1*XC(M,H)*X(J*NDDL+H)
  111. 113 CONTINUE
  112. 112 CONTINUE
  113. 111 CONTINUE
  114.  
  115. c -cas conservatif (i.e. sans amortissement)
  116. ELSE
  117. DO 121 J=2,2,2*NH
  118. r_z2 = (J*OMEG)**2
  119. DO 122 M=1,NDDL
  120. ZX(J*NDDL+M) = 0.D0
  121. DO 123 H=1,NDDL
  122. ZX(J*NDDL+M)=ZX(J*NDDL+M)+(XK(M,H)-r_z2*XM(M,H))
  123. & *X(J*NDDL+H)
  124. ZX((J+1)*NDDL+M)=ZX((J+1)*NDDL+M)+(XK(M,H)-r_z2
  125. & *XM(M,H))*X((J+1)*NDDL+H)
  126. 123 CONTINUE
  127. 122 CONTINUE
  128. 121 CONTINUE
  129.  
  130. ENDIF
  131.  
  132. ENDIF
  133.  
  134. RETURN
  135. END
  136.  
  137.  
  138.  

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