Télécharger hbmhill.eso

Retour à la liste

Numérotation des lignes :

hbmhill
  1. C HBMHILL SOURCE CB215821 25/04/08 21:15:19 12227
  2.  
  3. SUBROUTINE HBMHILL(NT,NHBM,NDDL,OMEG,Q1,RX,XM,XASM,dv0,dv1,ZINIT,
  4. & LHILL,ZSTABN,CPOSRE,FLAG,ZSTAB)
  5.  
  6. *=======================================================================
  7. * Calcul de stabilite
  8. *=======================================================================
  9. * On utilise la methode de Hill (domaine frequentiel) pour une solution
  10. * periodique (Q1,OMEG) des equations d'equilibre dynamique R(X,w) = 0.
  11. *
  12. * (Rx + µ*D1 + µ**2*D2)*Phi = 0
  13. * µ : valeurs propres
  14. * Phi: vecteurs propres
  15. * ==> 2*n*(2*H+1) paires (µ,Phi) pour H harmoniques et n ddl, dont 2*n
  16. * correspondent aux exposants de Floquet.
  17. * Dans cette sous-routine, on utilise une procedure simplifiee pour
  18. * la caracterisation des bifurcations.
  19. * -----------
  20. * Entrees
  21. * -----------
  22. * OMEG : frequence du cycle
  23. * NT,NHBM,NDDL : taille du systeme, # d'harmoniques, # de DDL
  24. * XM,XASM : matrices de masse, amortissement
  25. * RX : matrice Jacobienne
  26. * dv0,dv1 : variations dans le parametre de continuation
  27. * aux pas precedent et actuel, respectivement
  28. * CPOSRE : indicateur de bifurcation au pas precedent
  29. * ZSTAB : stabilite du pas precedent (0 si initialisation)
  30. * -----------
  31. * Sorties
  32. * -----------
  33. * CPOSRE : indicateurs de bifurcation au pas actuel
  34. * FLAG : caracterise le type de bifurcation
  35. * ZSTABN=ZSTAB : stabilite de la solution (Q1,OMEG)
  36. *=======================================================================
  37.  
  38. IMPLICIT INTEGER(I-N)
  39. IMPLICIT REAL*8(A-H,O-Z)
  40.  
  41. -INC CCREEL
  42.  
  43. INTEGER NT,NHBM,NDDL,INFO,INDEIG(2*NT),INDM,I,J,CPOSRE,CPOSREN
  44. REAL*8 OMEG,RX(NT,NT),XM(NDDL,1),XASM(NDDL,1)
  45. REAL*8 Rw(NT),MATJ(NT+1,NT+1),t0(NT+1),Q1(NT)
  46. REAL*8 EXPIM(2*NT),EXPRE(2*NT)
  47. REAL*8 VR(2*NT,2*NT),VL(2*NT,2*NT),WORK(8*NT),BB
  48. REAL*8 DEL1(NT,NT),DEL2(NT),Mi,Ci,JJ(2*NT,2*NT)
  49. REAL*8 LHILL(2,2*NDDL)
  50. cbp REAL*8 XPI,mumx(2*NDDL),ZR(2*NDDL),ZI(2*NDDL),dv0,dv1
  51. REAL*8 mumx(2*NDDL),ZIINDM,dv0,dv1
  52. CHARACTER*8 FLAG
  53. LOGICAL ZSTABN,ZSTAB,ZINIT
  54.  
  55. REAL*8 ZERO,ONE,XTOL,DEUXPI
  56. PARAMETER (ZERO=0.D0,ONE=1.D0,XTOL=1.D-8,
  57. & DEUXPI=2.D0*XPI)
  58.  
  59.  
  60. *-----------------------------------------------------------------------
  61. * 1. Construction de la matrice de Hill
  62. DO I = 1,NT
  63. DO J = 1,NT
  64. DEL1(I,J)=ZERO
  65. ENDDO
  66. ENDDO
  67. * DEL2
  68. DO I=1,2*NHBM+1
  69. DO J=1,NDDL
  70. DEL2(NDDL*(I-1)+J) = ONE/XM(J,1)
  71. ENDDO
  72. ENDDO
  73. * DEL1
  74. DO I=1,NDDL
  75. DEL1(I,I) = XASM(I,1)
  76. ENDDO
  77. DO J = 2,2*NHBM,2
  78. DO I=1,NDDL
  79. Ci = XASM(I,1)
  80. Mi = XM(I,1)
  81. BB = OMEG*J*Mi
  82. DEL1(NDDL*(1+(J-2))+I,NDDL*(1+(J-2))+I) = Ci
  83. DEL1(NDDL*(1+(J-2))+I,NDDL*(1+(J-1))+I) = BB
  84. DEL1(NDDL*(1+(J-1))+I,NDDL*(1+(J-2))+I) = -BB
  85. DEL1(NDDL*(1+(J-1))+I,NDDL*(1+(J-1))+I) = Ci
  86. ENDDO
  87. ENDDO
  88.  
  89. *-----------------------------------------------------------------------
  90. * 2. Assemblage de JJ
  91. *
  92. * JJ = [DEL2\DEL1 DEL2\Rx]
  93. * [ -I 0 ]
  94. *
  95. DO I=1,NT
  96. DO J=1,NT
  97. * JJ_11 = DEL2\DEL1
  98. JJ(I,J) = -DEL1(I,J)*DEL2(J)
  99. * JJ_12 = DEL2\Rx
  100. JJ(I,NT+J) = -RX(I,J)*DEL2(J)
  101. * JJ_21 = [I]
  102. IF (I.EQ.J) THEN
  103. JJ(NT+I,J) = ONE
  104. ELSE
  105. JJ(NT+I,J) = ZERO
  106. ENDIF
  107. * JJ_22 = [0]
  108. JJ(NT+I,NT+J) = ZERO
  109. ENDDO
  110. ENDDO
  111.  
  112. *-----------------------------------------------------------------------
  113. * 3. Calcul des valeurs/vecteurs propres de JJ
  114. CALL DGEEV('N','V',2*NT,JJ,2*NT,EXPRE,EXPIM,VL,1,VR,2*NT,
  115. & WORK,8*NT,INFO)
  116.  
  117. *-----------------------------------------------------------------------
  118. * 4. Tri des valeurs propres
  119. CALL HBMORDO(2*NT,NDDL,OMEG,EXPIM,INDEIG)
  120.  
  121. *-----------------------------------------------------------------------
  122. * 5. Evaluation de stabilite
  123. * On recupere les exposants de Floquet
  124. ZSTABN=.TRUE.
  125. DO I=1,2*NDDL
  126. cbp : TRIVALS a permute les elements de EXPIM, mais pas EXPRE
  127. LHILL(1,I) = EXPRE(INDEIG(I))
  128. LHILL(2,I) = EXPIM(I)
  129. IF (LHILL(1,I).GT.ZERO) THEN
  130. ZSTABN=.FALSE.
  131. ENDIF
  132. * calcul des Multiplicateurs de Floquet --> deplace par bp
  133. ENDDO
  134.  
  135. *-----------------------------------------------------------------------
  136. * 6. Detection des bifurcations
  137. * On utilise comme indicateur le nombre d'exposants de Floquet dont la
  138. * partie reelle est positive.
  139.  
  140. * COMPTAGE -> CPOSREN=?
  141. CPOSREN = 0
  142. DO I = 1,2*NDDL
  143. c IF (LHILL(1,I).LT.ZERO)THEN
  144. IF (LHILL(1,I).GE.ZERO)THEN
  145. CPOSREN = CPOSREN+1
  146. ENDIF
  147. ENDDO
  148.  
  149. FLAG = 'S'
  150. IF (.NOT.ZINIT) THEN
  151. * WRITE(*,*) 'FTEST=',ABS(CPOSREN-CPOSRE)
  152.  
  153. * Bifurcations statiques:
  154. * un seul exposant traverse l'axe imaginaire
  155. IF (ABS(CPOSREN-CPOSRE).EQ.1) THEN
  156.  
  157. IF (dv0*dv1.LT.ZERO) THEN
  158. * Point Limite
  159. FLAG = 'L'
  160. ELSE
  161. * Branchement
  162. FLAG = 'B'
  163. ENDIF
  164.  
  165. * Bifurcations dynamiques:
  166. * une paire d'exposants traversent l'axe imaginaire
  167. ELSEIF (ABS(CPOSREN-CPOSRE).EQ.2) THEN
  168.  
  169. c * Multiplicateurs de Floquet
  170. c DO I=1,2*NDDL
  171. c cbp ZR(I) = EXP(DEUXPI*LHILL(1,I)/OMEG)*COS(DEUXPI*LHILL(2,I)/OMEG)
  172. c cbp ZI(I) = EXP(DEUXPI*LHILL(1,I)/OMEG)*SIN(DEUXPI*LHILL(2,I)/OMEG)
  173. c mumx(I) = EXP(2.D0*XPI*LHILL(1,I)/OMEG)
  174. c ENDDO
  175. c INDM = MAXLOC(mumx,2*NDDL)
  176. cbp: ci-dessus, remplace par (car EXP est une fonction croissante) :
  177. INDM=1
  178. XINDM=LHILL(1,INDM)
  179. DO I=1,2*NDDL
  180. IF(LHILL(1,I).GT.XINDM) THEN
  181. INDM=I
  182. XINDM=LHILL(1,I)
  183. ENDIF
  184. ENDDO
  185. cbp: calcul de INDM douteux si ce n'est pas la 1ere instabilite -> a verifier + tard
  186. ZIINDM = EXP(DEUXPI*LHILL(1,INDM)/OMEG)
  187. & * SIN(DEUXPI*LHILL(2,INDM)/OMEG)
  188. cbp IF (ABS(ZI(INDM)).LT.1.E-8) THEN
  189. IF (ABS(ZIINDM).LT.XTOL) THEN
  190. * Doublement de periode
  191. FLAG = 'P'
  192. ELSE
  193. * Neimark-Sacker (Hopf secondaire)
  194. FLAG = 'N'
  195. END IF
  196.  
  197. ELSE
  198. c cas non traite
  199. ENDIF
  200.  
  201. ENDIF
  202.  
  203. *-----------------------------------------------------------------------
  204. * 7. enregistrement pour le pas suivant
  205. CPOSRE = CPOSREN
  206. ZSTAB = ZSTABN
  207.  
  208. END
  209.  
  210.  
  211.  
  212.  

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