Télécharger dycpl2.eso

Retour à la liste

Numérotation des lignes :

  1. C DYCPL2 SOURCE BP208322 18/01/10 21:15:32 9684
  2. C
  3. SUBROUTINE DYCPL2(IP1,IP3,IP4,VSURD,XA0,XDEP,NPAS,PDT,XCONV)
  4.  
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8(A-H,O-Z)
  7. *--------------------------------------------------------------------*
  8. * *
  9. * Operateur DYNE : *
  10. * ________________ *
  11. * *
  12. * Calcul de la force fluidelastique par convolution. *
  13. * (cas particulier du modele de Granger Paidoussis) *
  14. * *
  15. * Parametres : *
  16. * *
  17. * e IP1 LISTREEL de grandeurs precalculees du modele *
  18. * e//s IP3 LISTREEL y_i(t_n-1) // y_i(t_n) *
  19. * e//s IP4 LISTREEL S_i(t_n-1) // S_i(t_n) *
  20. * e VSURD FLOTTTANT V/D *
  21. * e XA0 FLOTTTANT alpha_0 = 1 - \sum alpha_i *
  22. * e XDEP FLOTTTANT q(t_n) *
  23. * e PDT FLOTTANT = \Delta t *
  24. * s XCONV FLOTTANT int_0^t_n h(\tau)*Qj(t-\tau) d\tau *
  25. * *
  26. * si devogelaere (et pas differences_centrees), on a plutot : *
  27. * e PDT FLOTTANT = \Delta t/2 *
  28. * e//s IP3 LISTREEL y_i(t_n-1/2) // y_i(t_n) *
  29. * e//s IP4 LISTREEL S_i(t_n-1/2) // S_i(t_n) *
  30. * *
  31. * Auteur : *
  32. * BP, 2017-12-19 *
  33. * *
  34. *--------------------------------------------------------------------*
  35.  
  36. -INC SMLREEL
  37. POINTEUR MLREE4.MLREEL
  38. c LOGICAL LWRITE
  39.  
  40.  
  41. * RECUPERATION
  42. * des listreels deja actif en entree (ip3 et ip4 sont modifiables)
  43. MLREE1=IP1
  44. c MLREE2=IP2
  45. c --> optimisation par precalcul dans 1 seul listreel
  46. MLREE3=IP3
  47. MLREE4=IP4
  48. c JG1=MLREE1.PROG(/1)
  49. c JG=JG1/3
  50. JG=MLREE4.PROG(/1)
  51.  
  52. c CALCUL DE L'INTEGRALE DE CONVOLUTION
  53. XCONV = 0.D0
  54. c boucle sur i (degré d'approximation du modele (souvent 2))
  55. DO 1 I=1,JG
  56. cc alpha_i et delta_i
  57. c Ai = MLREE1.PROG(I)
  58. c Di = MLREE2.PROG(I)
  59. c AiDi = A1 * Di
  60. c AUXi = Di*VSURD*PDT
  61. c --> optimisation par precalcul
  62. c alpha_i * delta_i
  63. AiDi = MLREE1.PROG(I)
  64. c YSHIFT=EXP(+delta_i*V/D*PDT) si DIFF_CENT (ou PDT/2 si DEVOGE)
  65. YSHIFT=MLREE1.PROG(I+JG)
  66. c XSHIFT=EXP(-delta_i*V/D*PDT) si DIFF_CENT (ou PDT/2 si DEVOGE)
  67. XSHIFT=MLREE1.PROG(I+2*JG)
  68. * recup des valeurs du pas precedent
  69. Yim1 = MLREE3.PROG(I)
  70. Sim1 = MLREE4.PROG(I)
  71. * decalage temporel
  72. * (pour eviter les exp(grand*t)=infini et exp(-grand*t)=0)
  73. c XSHIFT = EXP(-1.D0*AUXi)
  74. cc profitons du fait que exp(0)=1
  75. cc Yim1 = Yim1 * XSHIFT
  76. c --> optimisation par precalcul
  77. Sim1 = Sim1 * XSHIFT
  78. * calcul des y_i(t=T)
  79. c Yi = EXP(AUXi)*XDEP
  80. c --> optimisation par precalcul
  81. Yi = YSHIFT * XDEP
  82. * contribution a l'integrale du pas :
  83. dSi = PDT * 0.5D0 * (Yi + Yim1)
  84. Si = Sim1 + dSi
  85. c dernier produit et cumul
  86. XCONVi = AiDi * XSHIFT * Si
  87. c IF(LWRITE) write(*,*) '>dycpl2 i=',i,AUXi,Yim1,Sim1,Yi,Si
  88. XCONV = XCONV + XCONVi
  89. * stockage pour porchain pas de temps
  90. c MLREE3.PROG(I) = Yi
  91. MLREE3.PROG(I) = XDEP
  92. MLREE4.PROG(I) = Si
  93. 1 CONTINUE
  94.  
  95. c AJOUT DU TERME DE PURE RAIDEUR
  96. XSTIFF = XA0 * XDEP / VSURD
  97. XCONV = XCONV + XSTIFF
  98.  
  99. RETURN
  100. END
  101.  
  102.  
  103.  

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