Télécharger hbmrw.eso

Retour à la liste

Numérotation des lignes :

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

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