Télécharger d2vpas.eso

Retour à la liste

Numérotation des lignes :

  1. C D2VPAS SOURCE BP208322 17/07/10 21:15:04 9488
  2. C DEVPAS SOURCE LAVARENN 96/10/30 21:18:39 2349
  3. SUBROUTINE D2VPAS(Q1,Q2,Q3,NA1,NPC1,XK,XASM,XM,XDT,NPAS,FTOTA,
  4. & FEXA,IFEXA,NPFEXA,NLIAA,NLSA,IPALA,IPLIA,XPALA,XVALA,
  5. & NLIAB,NLSB,NPLB,IDIMB,IPALB,IPLIB,JPLIB,XPALB,XVALB,FTOTB,
  6. & FTOTBA,XPTB,FEXPSM,
  7. & FINERT,IERRD,FTEST,FTOTA0,FTEST2,FTOTB0,WEXT,WINT,
  8. & XABSCI,XORDON,NIP,FTEXB,FEXB,RIGIDE,KTPHI,XCHPFB,
  9. & XOPM1,NB1,NB1K,NB1C,NB1M)
  10. IMPLICIT INTEGER(I-N)
  11. IMPLICIT REAL*8(A-H,O-Z)
  12. *--------------------------------------------------------------------*
  13. * *
  14. * Opérateur DYNE : algorithme de Fu - de Vogelaere *
  15. * ________________________________________________ *
  16. * *
  17. * Calcul d'un pas de temps, appel aux s-p spécifiques. *
  18. * *
  19. * Paramètres: *
  20. * *
  21. * es Q1(,) Vecteur des déplacements généralisés *
  22. * es Q2(,) Vecteur des vitesses généralisées *
  23. * es Q3(,) Vecteur des accélérations généralisées *
  24. * es NA1 Nombre total d'inconnues en base A *
  25. * es NPC1 Nombre de pas de calcul - 1 *
  26. * es XK Vecteur des raideurs généralisées *
  27. * es XASM Vecteur des amortissements généralisés *
  28. * es XM Vecteur des masses généralisées *
  29. * es XDT Valeurs des pas de temps *
  30. * es NPAS Numéro du pas de temps *
  31. * es FTOTA Forces extérieures totalisées, sur la base A *
  32. * es FEXA Evolution des forces extérieures en base A *
  33. * e FTEXB Evolution des forces extérieures en base B *
  34. * e FEXB Forces extérieures sur la base B, servant au calcul *
  35. * des moments pour les corps rigides. *
  36. * e RIGIDE Vrai si corps rigide, faux sinon *
  37. * es IFEXA Numéro du mode correspondant au point de chargement *
  38. * es NPFEXA Nombre de points de chargement *
  39. * e NLIAA Nombre de liaisons sur la base A *
  40. * e NLSA Nombre de liaisons A en sortie *
  41. * e IPALA Tableau renseignant sur le type de liaison (base A) *
  42. * e IPLIA Tableau contenant les numéros "DYNE" des points *
  43. * e XPALA Tableau contenant les paramètres des liaisons *
  44. * es XVALA Tableau contenant les variables internes de liaison A *
  45. * XPHILB Vecteur des deformees modales *
  46. * e NLIAB Nombre de liaisons sur la base B *
  47. * e NLSB Nombre de liaisons base B en sortie *
  48. * e NPLB Nombre total de points de liaisons (base B) *
  49. * e IDIMB Nombre de directions *
  50. * e IPALB Tableau renseignant sur le type de liaison *
  51. * e IPLIB Tableau contenant les numeros "DYNE" des points *
  52. * e JPLIB Tableau contenant les numeros "GIBI" des points *
  53. * e XPALB Tableau contenant les parametres des liaisons (base B) *
  54. * es XVALB Tableau contenant les variables internes de liaison B *
  55. * FTOTB Forces exterieures totalisees sur la base B *
  56. * e XABSCI Tableau contenant les abscisses de la loi plastique *
  57. * e XORDON Tableau contenant les ordonnees de la loi plastique *
  58. * e NIP Nbr de points dans l'evolution de la loi plastique *
  59. * FTOTBA Forces totales base B projetees base A *
  60. * XPTB Deplacements des points de liaison *
  61. * IBASB Appartenance des points de liaison a une sous-base *
  62. * IPLSB Position du point de liaison dans la sous-base *
  63. * INMSB Nombre de modes dans la sous-base *
  64. * IORSB Position du 1er mode de la sous-base dans ens. modes *
  65. * IAROTA Indique la position des modes de rotation *
  66. * NSB Nombre de sous-bases *
  67. * NPLSB Nombre de points de liaison par sous-base *
  68. * NA2 Nombre d'inconnues dans la sous-base *
  69. * FEXPSM Forces exterieures base B *
  70. * FINERT Forces d'inertie base B *
  71. * IERRD Indicateur d'erreur *
  72. * - FTEST Tableau local FTEST de la subroutine D2VLFA *
  73. * - FTOTA0 Tableau local FTOTA0 de la subroutine D2VLFA *
  74. * - FTEST2 Tableau local FTEST de la subroutine DEVLB1 *
  75. * - FTOTB0 Tableau local FTOTB0 de la subroutine DEVLB1 *
  76. * e,s WEXT travail des forces exterieures
  77. * e,s WINT travail des forces interieures (rigidite et
  78. * amortissement et forces de liaison )
  79. * *
  80. * Auteur, date de création: *
  81. * *
  82. * Denis ROBERT-MOUGIN, le 26 mai 1989. *
  83. * *
  84. *--------------------------------------------------------------------*
  85. *
  86. SEGMENT,MTPHI
  87. INTEGER IBASB(NPLB),IPLSB(NPLB),INMSB(NSB),IORSB(NSB)
  88. INTEGER IAROTA(NSB)
  89. REAL*8 XPHILB(NSB,NPLSB,NA2,IDIMB)
  90. ENDSEGMENT
  91. *
  92. INTEGER IFEXA(*),IPALA(NLIAA,*),IPLIA(NLIAA,*)
  93. INTEGER IPALB(NLIAB,*),IPLIB(NLIAA,*),JPLIB(*)
  94. REAL*8 Q1(NA1,*),Q2(NA1,*),Q3(NA1,*)
  95. REAL*8 XVALA(NLIAA,4,*),XPALA(NLIAA,*),XM(NA1,*),XK(NA1,*)
  96. REAL*8 XPALB(NLIAB,*),XVALB(NLIAB,4,*),FEXPSM(NPLB,NPC1,2,*)
  97. REAL*8 XASM(NA1,*),XDT(*),FTOTA(NA1,*),FEXA(NPFEXA,NPC1,*)
  98. REAL*8 FTOTB(NPLB,*),FTOTBA(*),XPTB(NPLB,4,*),FINERT(NA1,*)
  99. REAL*8 WEXT(NA1,2),WINT(NA1,2)
  100. REAL*8 XABSCI(NLIAB,*),XORDON(NLIAB,*),FEXB(NPLB,2,*)
  101. REAL*8 FTEXB(NPLB,NPC1,2,*),XCHPFB(2,NLIAB,4,NPLB)
  102. REAL*8 XOPM1(NB1,NB1,*),Q2DEMI(NA1),FAMOR(NA1)
  103. *
  104. LOGICAL RIGIDE
  105. LOGICAL LWRITE
  106. *
  107. MTPHI = KTPHI
  108. NSB = XPHILB(/1)
  109. NPLSB = XPHILB(/2)
  110. NA2 = XPHILB(/3)
  111. IVINIT = 0
  112. c LWRITE=.false.
  113. c LWRITE=(NPAS.le.20).or.(mod(NPAS,1000).eq.0)
  114. c if(LWRITE) write(*,*) '-------- NPAS =',NPAS
  115.  
  116. III = 1
  117. pdt = xdt(npas)
  118. pdt2=pdt/2.D0
  119. pdt22=pdt*pdt2
  120. *
  121. * Déplacements généralisés
  122.  
  123. DO 1 I = 1,NA1
  124. q1(i,1) = q1(i,2) + q2(i,2)*pdt + q3(i,2)*pdt22
  125. 1 continue
  126. c if(LWRITE) write(*,*) 'Q1(:,1) =',(Q1(iou,1),iou=1,NA1)
  127.  
  128. *
  129. * Totalisation des forces extérieures pour la base A
  130. * pour la fin du pas precedent
  131. c write(*,*) 'appel D2VFXA'
  132. CALL D2VFXA(FEXA,IFEXA,FTOTA,NPFEXA,NA1,NPC1,NPAS,FTEXB,FEXB,
  133. & NPLB,IDIMB,RIGIDE)
  134. c if(LWRITE) write(*,*) 'FEXA(:,1) =',(FTOTA(iou,III),iou=1,NA1)
  135.  
  136. * Ajout des forces de raideur
  137. * F_1 = FEXT_1 - K Q_1
  138. CALL DEVLK0(Q1,XK,FTOTA,NA1,NB1K,III)
  139.  
  140. * Ajout des forces de liaison
  141. *
  142. IF (NLIAA.NE.0) THEN
  143. c write(*,*) 'appel D2VLFA - PDT=',XDT(1)
  144. CALL D2VLFA(Q1,Q2,FTOTA,NA1,IPALA,IPLIA,XPALA,XVALA,
  145. & NLIAA,XDT,NPAS,III,FINERT,IVINIT,FTEST,FTOTA0)
  146. ENDIF
  147. IF (NLIAB.NE.0) THEN
  148. c write(*,*) 'appel D2VLFB'
  149. CALL D2VLFB(Q1,FTOTA,NA1,IPALB,IPLIB,XPALB,XVALB,NLIAB,
  150. & XPHILB,JPLIB,NPLB,IDIMB,FTOTB,FTOTBA,XPTB,XDT,
  151. & NPAS,IBASB,IPLSB,INMSB,IORSB,NSB,NPLSB,NA2,III,
  152. & FEXPSM,NPC1,IERRD,FTEST2,FTOTB0,
  153. & XABSCI,XORDON,NIP,FEXB,RIGIDE,IAROTA,XCHPFB)
  154. IF (IERRD.NE.0) RETURN
  155. ENDIF
  156. c if(LWRITE) write(*,*) 'FTOTBA(:) =',(FTOTBA(iou),iou=1,NA1)
  157. c if(LWRITE) write(*,*) 'FTOTA(:,1) =',(FTOTA(iou,1),iou=1,NA1)
  158.  
  159. * forces d'amortissement
  160. IF (NB1C.GT.1) THEN
  161. DO 3 I=1,NA1
  162. Q2DEMI(i)=(q1(i,1) - q1(i,2))/pdt
  163. 3 CONTINUE
  164. DO 4 I=1,NA1
  165. FAMOR(I) = 0.D0
  166. DO 4 J=1,NB1
  167. FAMOR(I) = FAMOR(I) + XASM(I,J) * Q2DEMI(J)
  168. 4 CONTINUE
  169. ELSE
  170. DO 41 I=1,NA1
  171. FAMOR(I) = XASM(I,1) * (q1(I,1) - q1(I,2))/pdt
  172. 41 CONTINUE
  173. ENDIF
  174. c if(LWRITE) write(*,*) 'FAMOR =',(FAMOR(iou),iou=1,NA1)
  175. c if(LWRITE) write(*,*) 'FINERT =',(FINERT(iou,III),iou=1,NA1)
  176.  
  177. * Accelerations et Vitesses généralisées
  178. c -Cas C ou M pleine
  179. IF (NB1.NE.1) THEN
  180. DO 5 I=1,NA1
  181. Q3(I,1) = 0.D0
  182. DO 6 J=1,NB1
  183. Q3(I,1) = Q3(I,1) + XOPM1(I,J,1)*(FTOTA(J,III)-FAMOR(J))
  184. 6 CONTINUE
  185. * Vitesses généralisées
  186. q2(i,1) = q2(i,2) + (q3(i,2) + q3(i,1))*pdt2
  187. 5 CONTINUE
  188.  
  189. c -Cas C et M diagonales
  190. ELSE
  191. DO 51 I=1,NA1
  192. UNSM = 1.D0 / ( XM(I,1) - FINERT(I,III) )
  193. Q3(I,1) = (FTOTA(I,III)-FAMOR(I)) * UNSM
  194. c Q3(I,1) = (FTOTA(I,III)-FAMOR(I)) / (XM(I,1) - FINERT(I,III))
  195. * Vitesses généralisées
  196. q2(i,1) = q2(i,2) + (q3(i,2) + q3(i,1))*pdt2
  197. 51 CONTINUE
  198.  
  199. ENDIF
  200.  
  201. c if(LWRITE) write(*,*) 'Q3(:,1) =',(Q3(iou,1),iou=1,NA1)
  202. c if(LWRITE) write(*,*) 'Q2(:,1) =',(Q2(iou,1),iou=1,NA1)
  203.  
  204. c calcul des travaux
  205.  
  206. c write(*,*) 'appel D2VENE'
  207. CALL D2VENE (NA1,III,NPAS,FEXA,Q1,Q2,FTOTA,WEXT,WINT,
  208. & XASM,NPC1,NB1C)
  209.  
  210.  
  211. END
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  

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