Télécharger dyfor1.eso

Retour à la liste

Numérotation des lignes :

dyfor1
  1. C DYFOR1 SOURCE BP208322 20/09/18 21:16:19 10718
  2. C DYFORC SOURCE LAVARENN 96/11/05 21:22:41 2357
  3. SUBROUTINE DYFOR1(XPTB,XVALB,IPALB,IPLIB,XPALB,NLIAB,NPLB,IND
  4. &,IND2,PDTS2,I,iannul,IESC,IROLE,XCHPFB)
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8(A-H,O-Z)
  7. *--------------------------------------------------------------------*
  8. * *
  9. * Opérateur DYNE : algorithme de Fu - de Vogelaere *
  10. * ________________________________________________ *
  11. * *
  12. * Calcul des forces de choc sur base B pour les liaisons de *
  13. * type ligne_cercle *
  14. * *
  15. * Paramètres: *
  16. * *
  17. * e XPTB Tableau des déplacements des points *
  18. * e IPALB Renseigne sur la liaison. *
  19. * e IPLIB Tableau contenant les numéros "DYNE" de la liaison. *
  20. * e XPALB Tableau contenant les paramètres de la liaison. *
  21. * es XVALB Tableau contenant les variables internes de liaisons. *
  22. * es XCHPFB Tableau contenant les valeurs des futurs chpoints *
  23. * e NLIAB Nombre de liaisons sur la base B. *
  24. * e NPLB Nombre total de points intervenant dans les liaisons. *
  25. * e IND Indice du pas. *
  26. * e I numéro de la liaison. *
  27. * e IESC numéro DYNE du noeud esclave *
  28. * e IROLE indique qui est le maitre et l'esclave *
  29. * = 0 premiere passe , =1 deuxième passe *
  30. * *
  31. * *
  32. * Auteur, date de création: *
  33. * *
  34. * Ibrahim PINTO, 05/97 ,liaisons ligne_cercle *
  35. *--------------------------------------------------------------------*
  36. *
  37. INTEGER IPALB(NLIAB,*),IPLIB(NLIAB,*)
  38. INTEGER ICAND(2)
  39. REAL*8 XPALB(NLIAB,*),XPTB(NPLB,2,*),XVALB(NLIAB,4,*)
  40. REAL*8 XXXN(3),XCHPFB(2,NLIAB,4,*),XTE(3),XNET
  41.  
  42.  
  43.  
  44. *
  45. XEPSI = 0.0001
  46. IGP = IPALB(I,2)
  47. IDIM = IPALB(I,3)
  48. * ILOCAL = IPALB(I,23)
  49. ITYP = IPALB(I,1)
  50.  
  51. XPOID = 0.D0
  52.  
  53.  
  54. XRAY=XPALB(I,2)
  55. *
  56. IF (ITYP.EQ.37 .OR. ITYP.EQ.39) THEN
  57. ID1 = 6
  58. ELSE
  59. ID1 = 7
  60. ENDIF
  61. *
  62. IF (IROLE.EQ.0) THEN
  63. KMAI = 0
  64. IMAI = ID1 +4*IDIM
  65. IBUT = IMAI + IPALB(I,21)*IDIM
  66. KBUT = IPALB(I,21)
  67. LMAI = ID1 + (IPALB(I,21)+IPALB(I,22)+4)*IDIM
  68. LBUT = LMAI +IPALB(I,21)*IDIM
  69. JMAI = 26 + IPALB(I,21)+IPALB(I,22)
  70. JBUT = JMAI + IPALB(I,21)
  71. MBUT = LBUT +IPALB(I,22)*IDIM +
  72. & IPALB(I,21)
  73. NBUT = MBUT +IPALB(I,21)+IPALB(I,22)
  74. ELSE
  75. KMAI = IPALB(I,21)
  76. IBUT = ID1 + 4*IDIM
  77. IMAI = IBUT + IPALB(I,21)*IDIM
  78. KBUT = 0
  79. LBUT = ID1 + (IPALB(I,21)+IPALB(I,22)+4)*IDIM
  80. LMAI = LBUT +IPALB(I,21)*IDIM
  81. JBUT = 26 + 2*(IPALB(I,21)+IPALB(I,22))
  82. JMAI = JBUT +IPALB(I,21)
  83. MBUT = LMAI +IPALB(I,22)*IDIM
  84. NBUT = MBUT +IPALB(I,21)+IPALB(I,22)
  85. ENDIF
  86. ID2 = ID1 + IDIM
  87. ID4 = ID1 +3*IDIM
  88.  
  89. CALL DYCAN1(IPALB,IPLIB,XPALB,XPTB,IND,I,NLIAB,NPLB,
  90. & XXXN,XNET,XTE,XPOID,ICAND,IESC,IROLE)
  91.  
  92.  
  93. XVITN =0.D0
  94. IDCAN1 = IMAI + (ICAND(1)-1)*IDIM
  95. IDCAN2 = IMAI + (ICAND(2)-1)*IDIM
  96.  
  97.  
  98. DO 80 ID=1,IDIM
  99. *
  100. * Déplacement du point de contact au pas courant
  101. x1=(XPTB(IPLIB(I,KMAI+ICAND(2)),1,ID))*(1-XPOID)
  102. x2=(XPTB(IPLIB(I,KMAI+ICAND(1)),1,ID))*XPOID
  103. xde2=x1+x2
  104.  
  105. XVALB(I,IND,3+ID) = XVALB(I,IND,3+ID)+
  106. &XPALB(I,IDCAN1+ID)*XPOID +XPALB(I,IDCAN2+ID)*(1-XPOID)
  107.  
  108. cbp,2020-09* Déplacement du point de contact au pas précédent
  109. cbp,2020-09 XDM2 =(XPTB(IPLIB(I,KMAI+ICAND(2)),IND2,ID))*(1-XPOID)
  110. cbp,2020-09 & + (XPTB(IPLIB(I,KMAI+ICAND(1)),IND2,ID))*XPOID
  111. * Vitesse du point de contact au pas courant
  112. XVI2 =(XPTB(IPLIB(I,KMAI+ICAND(2)),2,ID))*(1-XPOID)
  113. & + (XPTB(IPLIB(I,KMAI+ICAND(1)),2,ID))*XPOID
  114.  
  115.  
  116. cbp,2020-09*-----Déplacement de la butee(point de contact sur le cercle)
  117. cbp,2020-09*-----on a neglige les rotations des butees
  118. cbp,2020-09 XDB = (XPTB(IPLIB(I,KBUT+IESC),IND,ID)
  119. cbp,2020-09 & -XPTB(IPLIB(I,KBUT+IESC),IND2,ID))
  120. * Vitesse de la butee
  121. XVB = XPTB(IPLIB(I,KBUT+IESC),2,ID)
  122.  
  123. * Vitesse de glissement
  124. cbp,2020-09 XPALB(I,ID2+ID)=(XDB+XDM2-XDE2)/PDTS2
  125. XPALB(I,ID2+ID)=XVB-XVI2
  126. * Vitesse normale
  127. cbp,2020-09 XVITN = XVITN + ((XDB+XDM2-XDE2)*XXXN(ID)/PDTS2)
  128. XVITN = XVITN + (XVB-XVI2)*XXXN(ID)
  129. 80 CONTINUE
  130.  
  131.  
  132. DO 82 ID=1,IDIM
  133. * Vitesse tangentielle
  134. XPALB(I,ID2+ID) = XPALB(I,ID2+ID) - (XVITN*XXXN(ID))
  135. 82 CONTINUE
  136. * Calcul de la force de choc
  137. XPALB(I,1) = XPALB(I,MBUT+IESC)
  138.  
  139. IF (ITYP.EQ.37 .OR. ITYP.EQ.39) THEN
  140. CALL DYCHE5(XNET,XTE,XXXN,IDIM,IGP,XPALB,NLIAB,I
  141. & ,IPALB,XFN,XFT,XPUS,iannul)
  142. ELSE
  143.  
  144. XPALB(I,7) = XPALB(I,NBUT+IESC)
  145. CALL DYCHA5(XNET,XTE,XXXN,XVITN,IDIM,IGP,XPALB,NLIAB,
  146. &I,IPALB,XFN,XFT,XPUS,iannul)
  147.  
  148.  
  149. ENDIF
  150.  
  151.  
  152. XVALB(I,IND,3) = XVALB(I,IND,3) + XVITN
  153. IPALB(I,2) = IGP
  154.  
  155.  
  156. IF (IGP.EQ.1) THEN
  157. PS =0.D0
  158. DO 84 ID=1,IDIM
  159. PS=PS+(XPALB(I,ID2+ID)*XPALB(I,ID2+ID))
  160. 84 CONTINUE
  161. XVITT = SQRT(PS)
  162. ELSE
  163. XVITT = 0.D0
  164. ENDIF
  165. XVALB(I,IND,11) = XVALB(I,IND,11)+XVITT
  166.  
  167.  
  168.  
  169.  
  170.  
  171. IF (XNET.GE.XRAY) THEN
  172.  
  173. DO 90 ID=1,IDIM
  174. XPALB(I,ID+LMAI+(ICAND(1)-1)*IDIM) =XPALB(I,ID+LMAI+
  175. &(ICAND(1)-1)*IDIM)-XPOID * (XFN*XXXN(ID) + XPALB(I,ID4+ID))
  176. XPALB(I,ID+LMAI+(ICAND(2)-1)*IDIM) =XPALB(I,ID+LMAI+(ICAND
  177. &(2)-1)*IDIM)- ( 1.-XPOID )*(XFN*XXXN(ID) + XPALB(I,ID4+ID))
  178. XPALB(I,ID+LBUT+(IESC-1)*IDIM) =XPALB(I,ID+LBUT+
  179. &(IESC-1)*IDIM) + XFN * XXXN(ID) + XPALB(I,ID4+ID)
  180. 90 CONTINUE
  181. XCHPFB(1,I,IND,IPLIB(I,KBUT+IESC))=
  182. &XCHPFB(1,I,IND,IPLIB(I,KBUT+IESC))+XFN
  183.  
  184.  
  185.  
  186.  
  187. XCHPFB(2,I,IND,IPLIB(I,KBUT+IESC))=
  188. &XCHPFB(2,I,IND,IPLIB(I,KBUT+IESC))+ABS(XFT)
  189.  
  190. XCHPFB(1,I,IND,IPLIB(I,KMAI+ICAND(1)))=
  191. &XCHPFB(1,I,IND,IPLIB(I,KMAI+ICAND(1)))+XPOID *XFN
  192. XCHPFB(2,I,IND,IPLIB(I,KMAI+ICAND(1)))=
  193. &XCHPFB(2,I,IND,IPLIB(I,KMAI+ICAND(1)))+XPOID *ABS(XFT)
  194. XCHPFB(1,I,IND,IPLIB(I,KMAI+ICAND(2)))=
  195. &XCHPFB(1,I,IND,IPLIB(I,KMAI+ICAND(2)))+( 1.-XPOID )*XFN
  196. XCHPFB(2,I,IND,IPLIB(I,KMAI+ICAND(2)))=
  197. &XCHPFB(2,I,IND,IPLIB(I,KMAI+ICAND(2)))+( 1.-XPOID )*ABS(XFT)
  198. IF (XPOID.GT.XEPSI) THEN
  199. IPALB(I,JMAI+ICAND(1))=1
  200. ENDIF
  201. IF ((1.0-XPOID).GT.XEPSI) THEN
  202. IPALB(I,JMAI+ICAND(2))=1
  203. ENDIF
  204. IPALB(I,JBUT+IESC) = 1
  205. XVALB(I,IND,1) = XVALB(I,IND,1)+XFN
  206. XVALB(I,IND,10) = XVALB(I,IND,10)+ ABS(XFT)
  207. XVALB(I,IND,12) = XVALB(I,IND,12)+ XPUS
  208. ENDIF
  209. *
  210.  
  211.  
  212. END
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  

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