Télécharger hbmini.eso

Retour à la liste

Numérotation des lignes :

hbmini
  1. C HBMINI SOURCE CB215821 23/01/25 21:15:22 11573
  2. *
  3. SUBROUTINE HBMINI(KTKAM,KTQ,KTFEX,KTPAS,KTLIAA,KTEMP,KTLIAB,KTPHI,
  4. & KCPR,KOCLFA,KOCLB1,KPARNUM,NHBM,NFFT,CHECK,ITER)
  5. *
  6. C=======================================================================
  7. C= HBMINI =
  8. C= -------- =
  9. C= =
  10. C= Fonction : =
  11. C= ---------- =
  12. C= A partir d'une approximation initiale, converge vers une solution =
  13. C= des equations d'equilibre pour une frequence donnee. =
  14. C= -->iterations hybrides NR - gradient conjuge =
  15. C= =
  16. C=======================================================================
  17. *
  18. IMPLICIT INTEGER(I-N)
  19. IMPLICIT REAL*8(A-H,O-Z)
  20. LOGICAL CHECK
  21. CHARACTER*8 FLAG
  22. *
  23. -INC PPARAM
  24. -INC CCOPTIO
  25. *-INC TMDYNC.INC
  26. ************************** debut TMDYNC.INC ****************************
  27.  
  28. * TMDYNC : FUTUR INCLUDE POUR LES SEGMENTS DE L'OPERATEUR DYNC
  29. * TODO : a extraire dans un include des que stabilise
  30. *
  31. * Segment des variables generalisees:
  32. * -----------------------------------
  33. SEGMENT MTQ
  34. REAL*8 Q1(NT1)
  35. REAL*8 OMEG,XPARA
  36. REAL*8 JAC(NT1,NT1),ZZ(NT1,NT1),RX(NT1,NT1)
  37. REAL*8 dX(NT1), dw, dv
  38. ENDSEGMENT
  39. * Q1 : vecteur des inconnues frequentielles de dimension (2h+1)*n
  40. * Q1 = {q_0 q_c1 q_s1 ... q_sh}
  41. * avec q_i vecteur de dimension n ou n=nombre de modes
  42. * OMEG : frequence fondamentale de l'approximation
  43. * XPARA: parametre de continuation (par defaut la frequence)
  44. * \in [PARINI,PARFIN]
  45. * RX : matrice jacobienne = ZZ + dFnl/dX
  46. * JAC : jacobienne des efforts non-lineaires = dFnl/dX
  47. * ZZ : matrice dynamique associee aux matrices modales K, M et C
  48. * lineaires et constantes
  49. * {dX,dw,(dv)} : vecteur tangent utilise pour la prediction
  50. *
  51. *
  52. * Segment contenant les matrices XK, XASM et XM:
  53. * ---------------------------------------------
  54. SEGMENT MTKAM
  55. REAL*8 XK(NA1,NB1K),XASM(NA1,NB1C),XM(NA1,NB1M)
  56. REAL*8 GAM(NPC1,nl1),IGAM(nl1,NPC1),DL(nl1)
  57. * REAL*8 GAMFIN(NPC2,nl1)
  58. ENDSEGMENT
  59. * XK,XASM et XM : matrices de raideur, amortissement et masse
  60. * GAM et IGAM : matrices pour la FFT et son inverse
  61. * GAMFIN :
  62. *
  63. * Segment des deformees modales:
  64. * ------------------------------
  65. * (idem DYNE)
  66. SEGMENT MTPHI
  67. INTEGER IBASB(NPLB),IPLSB(NPLB),INMSB(NSB),IORSB(NSB)
  68. INTEGER IAROTA(NSB)
  69. REAL*8 XPHILB(NSB,NPLSB,NA2,IDIMB)
  70. ENDSEGMENT
  71. *
  72. * Segment descriptif des liaisons en base A:
  73. * ------------------------------------------
  74. * (idem DYNE)
  75. SEGMENT MTLIAA
  76. INTEGER IPALA(NLIAA,NIPALA),IPLIA(NLIAA,NPLAA),JPLIA(NPLA)
  77. REAL*8 XPALA(NLIAA,NXPALA)
  78. ENDSEGMENT
  79. *
  80. * Segment descriptif des liaisons en base B:
  81. * ------------------------------------------
  82. * (idem DYNE)
  83. SEGMENT MTLIAB
  84. INTEGER IPALB(NLIAB,NIPALB),IPLIB(NLIAB,NPLBB),JPLIB(NPLB)
  85. REAL*8 XPALB(NLIAB,NXPALB)
  86. REAL*8 XABSCI(NLIAB,NIP),XORDON(NLIAB,NIP)
  87. ENDSEGMENT
  88. *
  89. * Segment representant les chargements exterieurs:
  90. * -----------------------------------------------
  91. SEGMENT MTFEX
  92. REAL*8 FEXA(NT1)
  93. REAL*8 FEXPSM(NPLB,NPC1,2,IDIMB)
  94. INTEGER BAL
  95. ENDSEGMENT
  96. * FEXA : Vecteur des efforts ext. sous la forme de coefficients de
  97. * Fourier et exprimes en base A
  98. * FEXPSM: chargement/deplacement statique lie aux modes negliges
  99. * (neglige aussi les Fnl). Dans DYNC toujours =0, cree pour
  100. * compatibilite avec calcul des Fnl.
  101. * BAL : indique s'il s'agit d'un chargement de type balourd
  102. * (cad proportionnel a OMEG**2)
  103. *
  104. * Segment "local" pour DEVLFA:
  105. * ----------------------------
  106. SEGMENT LOCLFA
  107. REAL*8 FTEST(NA1,4)
  108. ENDSEGMENT
  109. *
  110. * Segment "local" pour DEVLB1:
  111. * ----------------------------
  112. SEGMENT LOCLB1
  113. REAL*8 FTEST2(NPLB,6)
  114. ENDSEGMENT
  115. *
  116. * Segment contenant les variables au cours d un pas de temps:
  117. * ----------------------------------------------------------
  118. SEGMENT MTPAS
  119. REAL*8 FTOTA(NA1,4),FTOTB(NPLB,IDIMB),FTOTBA(NA1)
  120. REAL*8 XPTB(NPLB,2,IDIMB),FINERT(NA1,4)
  121. REAL*8 XVALA(NLIAA,4,NTVAR),XVALB(NLIAB,4,NTVAR)
  122. REAL*8 FEXB(NPLB,2,IDIM),XCHPFB(2,NLIAB,4,NPLB)
  123. REAL*8 KTOTXA(NA1,NA1),KTOTVA(NA1,NA1)
  124. REAL*8 KTOTXB(NPLB,IDIMB,IDIMB), KTOTVB(NPLB,IDIMB,IDIMB)
  125. ENDSEGMENT
  126. * FTOTA/B/BA : forces sur base A, B et B projetees sur A
  127. * XPTB : deplacement du point d'une liaison en base B
  128. * XVALA/B : grandeurs de la liaison en base A/B a stocker
  129. * FEXB : forces exterieures en base B (a priori uniquement
  130. * pour les moments appliques aux rotations rigides ?)
  131. * XCHPFB : forces de contact en base B (lorsqu'on considere un
  132. * maillage de contact dans certaines liaisons)
  133. * KTOTXA/XB/VA/VB : Jacobienne par rapport au deplacement/vitesse en
  134. * base A/B (= contributions a dFnl/dX)
  135. *
  136. *
  137. * Segment des points de reference des modes (base A):
  138. * --------------------------------------------------
  139. SEGMENT MPREF
  140. INTEGER IPOREF(NPREF)
  141. ENDSEGMENT
  142. *
  143. * Segment des points en base B:
  144. * -----------------------------
  145. SEGMENT NCPR(NBPTS)
  146. * NCRP(#global) = #local dans XPTB (1er indice)
  147. *
  148. * Segment des parametres numeriques pour la continuation:
  149. * ------------------------------------------------------
  150. SEGMENT PARNUM
  151. CHARACTER*4 TYPS
  152. REAL*8 DS,DSMAX,DSMIN,ANGMIN,ANGMAX,ITERMOY,ISENS,TOLMIN
  153. REAL*8 PARINI,PARFIN
  154. INTEGER ITERMAX,NBPAS
  155. LOGICAL JANAL
  156. ENDSEGMENT
  157. *
  158. * Segment des resultats:
  159. * ---------------------
  160. SEGMENT PSORT
  161. REAL*8 QSAVE(NT1,NPAS),WSAVE(NPAS),LSAVE(2,2*NA1,NPAS)
  162. REAL*8 VSAVE(NPAS)
  163. LOGICAL ZSAVE(NPAS)
  164. CHARACTER*2 TYPBIF(NBIFU)
  165. REAL*8 QBIFU(NT1,NBIFU),WBIFU(NBIFU),WBIF2(NBIFU)
  166. REAL*8 QPSIR(NT1,NBIFU),QPSII(NT1,NBIFU)
  167. INTEGER CBIF
  168. ENDSEGMENT
  169. * QSAVE(i,j) = Q harmonique i au pas j
  170. * VSAVE(j) = parametre de continuation (si non w) au j-eme pas
  171. * ZSAVE(j) = stabilite au j-eme pas
  172. * LSAVE(1,j) : partie reelle de l'exposant de Floquet
  173. * LSAVE(2,j) : partie imaginaire de l'exposant de Floquet
  174. * TYPBIF = {LimitPoint, BranchPoint, NeimarkSacker, PeriodDoubling}
  175. * QBIFU,WBIFU : vecteur Q et w au point de bifurcation
  176. * WBIF2 : partie imaginaire de l'exposant de Floquet
  177. * QPSIR,QPSII : vecteur propre au point de bifurcation
  178.  
  179. * Segment des tableaux de travail:
  180. * -------------------------------
  181. SEGMENT MTEMP
  182. REAL*8 RW(NT1),A,T0(NT1+1),TP(NT1+1),AMPX,AUX
  183. REAL*8 T02(NT1+2), TP2(NT1+2)
  184. INTEGER IPIV(NT1),IPIV2(NT1+1),IPIV3(NT1+2)
  185. REAL*8 res
  186. REAL*8 RHS(NT1+1),Ja(NT1+1,NT1+1)
  187. REAL*8 QOLD(NT1),OMEGOLD
  188. REAL*8 MATJA(NT1+1,NT1+1),Rw2(NT1)
  189. REAL*8 Jaa(NT1+2,NT1+2),RHS2(NT1+2),Ra(NT1),VV,VVOLD
  190. ENDSEGMENT
  191. * Jacobiennes augmentees
  192. * Ja : [ RX Rw ; dX dw]
  193. * Jaa: [ RX Rw Ra; gx 0 0; dX dw da]
  194.  
  195. * SEGMENT NNNN
  196. * REAL*8 IGAM2(nl1,NPC2),DL2(nl1)
  197. * ENDSEGMENT
  198.  
  199. *************************** fin TMDYNC.INC *****************************
  200.  
  201. *-----------------------------------------------------------------------
  202. * Le contenu des segments est donne en entree a NEWT:
  203. *
  204. * Matrices XK,XASM,XM,GAM,IGAM
  205. MTKAM=KTKAM
  206. *
  207. * Variables generalisees: coefficients de Fourier et frequence
  208. MTQ=KTQ
  209. *
  210. * Forces externes
  211. MTFEX=KTFEX
  212. *
  213. * Variables sur un pas de temps
  214. MTPAS=KTPAS
  215. *
  216. * Liaisons sur base A
  217. MTLIAA = KTLIAA
  218. * Liaisons sur base B
  219. MTLIAB = KTLIAB
  220. *
  221. * Truc local base A
  222. LOCLFA = KOCLFA
  223. * Truc local base B
  224. LOCLB1 = KOCLB1
  225. *
  226. * Deformees modales
  227. MTPHI = KTPHI
  228. *
  229. * Parametres numeriques
  230. PARNUM = KPARNUM
  231. *
  232. MTEMP=KTEMP
  233. * Nombre de modes
  234. NDDL = XM(/1)
  235. NDDL2 = XM(/2)
  236. * Nombre d'inconnues
  237. NT = Q1(/1)
  238.  
  239. *----- Iterations de Newton Raphson -----------------------------------
  240.  
  241. * -systeme NON-Autonome (= force)
  242. IF (TYPS.EQ.'FORC') THEN
  243. CALL HBMNEWT(NT,NHBM,NDDL,NFFT,MTQ,MTKAM,MTPHI,MTEMP,PARNUM,
  244. & MTLIAA,MTLIAB,MTFEX,MTPAS,LOCLFA,LOCLB1,CHECK,'IF',ITER)
  245.  
  246. * -systeme AUTOnome (sans forces exterieures)
  247. ELSEIF (TYPS.EQ.'AUTO') THEN
  248. CALL HBMNEWT(NT,NHBM,NDDL,NFFT,MTQ,MTKAM,MTPHI,MTEMP,PARNUM,
  249. & MTLIAA,MTLIAB,MTFEX,MTPAS,LOCLFA,LOCLB1,CHECK,'IA',ITER)
  250.  
  251. * -systeme Hamiltonien (modes non lineaires)
  252. ELSEIF (TYPS.EQ.'NNM') THEN
  253. CALL HBMNEWT(NT,NHBM,NDDL,NFFT,MTQ,MTKAM,MTPHI,MTEMP,PARNUM,
  254. & MTLIAA,MTLIAB,MTFEX,MTPAS,LOCLFA,LOCLB1,CHECK,'IN',ITER)
  255. ELSE
  256. WRITE(IOIMP,*) 'DYNC : Type TYPS de probleme inconnu !'
  257. CALL ERREUR(5)
  258. RETURN
  259.  
  260. ENDIF
  261.  
  262.  
  263. * Sortie
  264. KTQ = MTQ
  265. KTEMP=MTEMP
  266.  
  267. END
  268.  
  269.  
  270.  
  271.  
  272.  

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