Télécharger hbmfnl.eso

Retour à la liste

Numérotation des lignes :

hbmfnl
  1. C HBMFNL SOURCE OF166741 26/05/11 21:15:11 12538
  2.  
  3. *=======================================================================
  4. * Calcul de FNL(X) par AFT (Alternating Frequency Time)
  5. *=======================================================================
  6.  
  7. SUBROUTINE HBMFNL(NT,NHBM,NDDL,NFFT,KTQ,KTKAM,KTPHI,KTLIAA,
  8. & KTLIAB,KTPAS,KTFEX,KOCLFA,KOCLB1,mFNL)
  9.  
  10. *----- Declarations ----------------------------------------------------
  11. IMPLICIT INTEGER(I-N)
  12. IMPLICIT REAL*8(A-H,O-Z)
  13.  
  14. -INC SMLREEL
  15. POINTEUR mFNL.MLREEL
  16.  
  17. -INC TMDYNC
  18.  
  19. SEGMENT mwork
  20. REAL*8 V1(NT)
  21. REAL*8 XT(NDDL,NFFT),FT(NDDL,NFFT),VT(NDDL,NFFT)
  22. REAL*8 XAUX(NDDL,4), VAUX(NDDL,4)
  23. ENDSEGMENT
  24.  
  25. INTEGER NDDL,NT,NFFT
  26. REAL*8 PDT
  27. LOGICAL RIGIDE, GETJAC
  28.  
  29. REAL*8 ZERO,ONE
  30. PARAMETER (ZERO=0.D0, ONE=1.D0)
  31.  
  32. * Variables generalisees: coefficients de Fourier et frequence
  33. MTQ=KTQ
  34. * Matrices XK,KASM,XM,GAM,IGAM,DL
  35. MTKAM=KTKAM
  36. * Deformees modales
  37. MTPHI = KTPHI
  38. NSB = XPHILB(/1)
  39. NPLSB = XPHILB(/2)
  40. NA2 = XPHILB(/3)
  41. IDIMB = XPHILB(/4)
  42. * Liaisons sur base A
  43. MTLIAA = KTLIAA
  44. NLIAA = IPALA(/1)
  45. * Liaisons sur base B
  46. MTLIAB = KTLIAB
  47. NLIAB = IPALB(/1)
  48. NIP = XABSCI(/2)
  49. NPLB = JPLIB(/1)
  50. * Forces externes
  51. MTFEX=KTFEX
  52. * Truc local base A
  53. LOCLFA = KOCLFA
  54. * Truc local base B
  55. LOCLB1 = KOCLB1
  56. * Inconnues sur un pas de temps (AFT)
  57. MTPAS=KTPAS
  58. RIGIDE =.FALSE.
  59. c Initialisation (pas d'erreur)
  60. IERRD=0
  61. GETJAC=.FALSE.
  62.  
  63. SEGINI,MWORK
  64.  
  65. *------ Time-domain displacements and velocities: XT, VT ---------------
  66.  
  67. CALL IFT(Q1,NT,NDDL,NHBM,NFFT,GAM,XT)
  68. CALL HBMDVEC(NT,NHBM,NDDL,Q1,OMEG,V1)
  69. CALL IFT(V1,NT,NDDL,NHBM,NFFT,GAM,VT)
  70.  
  71. *------ Time-domain nonlinear forces, tangent matrix: FT -------
  72.  
  73. c >>> Loop over time steps >>>
  74. PDT = ONE/NFFT
  75. DO I = 1,NFFT
  76.  
  77. c initialisation des vecteurs du pas de temps
  78. DO L=1,NDDL
  79. XAUX(L,1) = XT(L,I)
  80. * VAUX pour la vitesse des liaisons A
  81. VAUX(L,1) = VT(L,I)
  82. * XAUX(:,2) permettait de retrouver le bonne vitesse pour les liaisons A
  83. * quand D2VLFA utilisait XVIT=
  84. XAUX(L,2) = XAUX(L,1)-PDT*VAUX(L,1)
  85. FTOTA(L,1)=ZERO
  86. ENDDO
  87. DO JJ=1,NDDL
  88. DO IJ=1,NDDL
  89. KTOTXA(IJ,JJ) = ZERO
  90. KTOTVA(IJ,JJ) = ZERO
  91. ENDDO
  92. ENDDO
  93.  
  94. c Fnl(x,v) en base A (ddls modaux)
  95. IF (NLIAA.NE.0) THEN
  96. CALL D2VLFA(XAUX,VAUX,FTOTA,NDDL,IPALA,IPLIA,XPALA,XVALA,
  97. & NLIAA,PDT,ZERO,I,1,FINERT,IVINIT,LOCLFA.FTESTA,
  98. & KTOTXA,KTOTVA,GETJAC)
  99. ENDIF
  100.  
  101. c Fnl(x,-) en base B (ddls physique)
  102. IF (NLIAB.NE.0) THEN
  103. * pour les liaisons *_frottement, on impose le glissement a vrai
  104. do il=1,NLIAB
  105. IPALB(il,2)=1
  106. enddo
  107. CALL D2VLFB(XAUX,VAUX,FTOTA,NDDL,IPALB,IPLIB,XPALB,XVALB,
  108. & NLIAB,XPHILB,JPLIB,NPLB,IDIMB,FTOTB,FTOTBA,XPTB,
  109. & PDT,ZERO,I,IBASB,IPLSB,INMSB,IORSB,NSB,NPLSB,NA2,
  110. & 1,FEXPSM,NPC1,IERRD,LOCLB1.FTESTB,
  111. & XABSCI,XORDON,NIP,FEXB,RIGIDE,IAROTA,XCHPFB,
  112. & KTOTXA,KTOTVA,KTOTXB,KTOTVB,GETJAC)
  113. ENDIF
  114.  
  115. c Stockage de la force au pas de temps I
  116. DO J=1,NDDL
  117. FT(J,I) = FTOTA(J,1)
  118. ENDDO
  119.  
  120. cbp,2020-09 c Decalage pour le pas de temps suivant (utile pour la vitesse tangentielle)
  121. cbp,2020-09 * remarque/TODO : avec HBM il faudrait utiliser Q2 directement pour la vitesse
  122. cbp,2020-09 DO 22 ID = 1,IDIMB
  123. cbp,2020-09 DO 20 IP = 1,NPLB
  124. cbp,2020-09 XPTB(IP,2,ID) = XPTB(IP,1,ID)
  125. cbp,2020-09 20 CONTINUE
  126. cbp,2020-09 22 CONTINUE
  127.  
  128. ENDDO
  129. c <<< end of Loop over time steps <<<
  130.  
  131.  
  132. c------ Fourier coefficients of nonlinear forces: FNL ------------------
  133. CALL DFT(FT,NDDL,NHBM,NFFT,IGAM,mFNL.prog(1))
  134.  
  135. * DO IM = 1,NDDL
  136. * DO KI = 1,NFFT
  137. * XX51(KI) = FT(IM,KI)
  138. * ENDDO
  139. * CALL rfft1f(NFFT,1,XX51,NFFT,wwsave,lensav,work,lenwrk,ier)
  140. * IA = 0
  141. * DO KI = IM,NT-(NDDL-IM),NDDL
  142. * IA = IA+1
  143. * mFNL.PROG(KI) = XX51(IA)
  144. * ENDDO
  145. * ENDDO
  146.  
  147. c------ Menage ------------------
  148. SEGSUP,MWORK
  149.  
  150. RETURN
  151. END
  152.  
  153.  
  154.  

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