Télécharger d2vpas.eso

Retour à la liste

Numérotation des lignes :

d2vpas
  1. C D2VPAS SOURCE BP208322 20/09/18 21:15:19 10718
  2. c
  3. SUBROUTINE D2VPAS(Q1,Q2,Q3,NA1,NPC1,XK,XASM,XM,PDT,T,NPAS,
  4. & FTOTA,FEXA,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,FTEST2,WEXT,WINT,
  8. & XABSCI,XORDON,NIP,FTEXB,FEXB,RIGIDE,KTPHI,XCHPFB,
  9. & XOPM1,NB1,NB1K,NB1C,NB1M)
  10.  
  11. IMPLICIT INTEGER(I-N)
  12. IMPLICIT REAL*8(A-H,O-Z)
  13. *--------------------------------------------------------------------*
  14. * *
  15. * Opérateur DYNE : algorithme des DIFFERENCES CENTREES *
  16. * ________________________________________________ *
  17. * *
  18. * Calcul d'un pas de temps, appel aux s-p spécifiques. *
  19. * *
  20. * Paramètres: *
  21. * *
  22. * es Q1(,) Vecteur des déplacements généralisés *
  23. * es Q2(,) Vecteur des vitesses généralisées *
  24. * es Q3(,) Vecteur des accélérations généralisées *
  25. * es NA1 Nombre total d'inconnues en base A *
  26. * es NPC1 Nombre de pas de calcul - 1 *
  27. * es XK Vecteur des raideurs généralisées *
  28. * es XASM Vecteur des amortissements généralisés *
  29. * es XM Vecteur des masses généralisées *
  30. * e PDT pas de temps courant *
  31. * e T temps courant *
  32. * e NPAS Numéro du pas de temps *
  33. * es FTOTA Forces extérieures totalisées, sur la base A *
  34. * es FEXA Evolution des forces extérieures en base A *
  35. * e FTEXB Evolution des forces extérieures en base B *
  36. * e FEXB Forces extérieures sur la base B, servant au calcul *
  37. * des moments pour les corps rigides. *
  38. * e RIGIDE Vrai si corps rigide, faux sinon *
  39. * es IFEXA Numéro du mode correspondant au point de chargement *
  40. * (supprime le 2018-12-14 par bp) *
  41. * es NPFEXA Nombre de points de chargement *
  42. * e NLIAA Nombre de liaisons sur la base A *
  43. * e NLSA Nombre de liaisons A en sortie *
  44. * e IPALA Tableau renseignant sur le type de liaison (base A) *
  45. * e IPLIA Tableau contenant les numéros "DYNE" des points *
  46. * e XPALA Tableau contenant les paramètres des liaisons *
  47. * es XVALA Tableau contenant les variables internes de liaison A *
  48. * XPHILB Vecteur des deformees modales *
  49. * e NLIAB Nombre de liaisons sur la base B *
  50. * e NLSB Nombre de liaisons base B en sortie *
  51. * e NPLB Nombre total de points de liaisons (base B) *
  52. * e IDIMB Nombre de directions *
  53. * e IPALB Tableau renseignant sur le type de liaison *
  54. * e IPLIB Tableau contenant les numeros "DYNE" des points *
  55. * e JPLIB Tableau contenant les numeros "GIBI" des points *
  56. * e XPALB Tableau contenant les parametres des liaisons (base B) *
  57. * es XVALB Tableau contenant les variables internes de liaison B *
  58. * FTOTB Forces exterieures totalisees sur la base B *
  59. * e XABSCI Tableau contenant les abscisses de la loi plastique *
  60. * e XORDON Tableau contenant les ordonnees de la loi plastique *
  61. * e NIP Nbr de points dans l'evolution de la loi plastique *
  62. * FTOTBA Forces totales base B projetees base A *
  63. * XPTB Deplacements des points de liaison *
  64. * IBASB Appartenance des points de liaison a une sous-base *
  65. * IPLSB Position du point de liaison dans la sous-base *
  66. * INMSB Nombre de modes dans la sous-base *
  67. * IORSB Position du 1er mode de la sous-base dans ens. modes *
  68. * IAROTA Indique la position des modes de rotation *
  69. * NSB Nombre de sous-bases *
  70. * NPLSB Nombre de points de liaison par sous-base *
  71. * NA2 Nombre d'inconnues dans la sous-base *
  72. * FEXPSM Pseudo-Modes base B *
  73. * FINERT Forces d'inertie base B *
  74. * IERRD Indicateur d'erreur *
  75. * - FTEST Tableau local FTEST de la subroutine D2VLFA *
  76. * - FTEST2 Tableau local FTEST de la subroutine DEVLB1 *
  77. * e,s WEXT travail des forces exterieures *
  78. * e,s WINT travail des forces interieures (rigidite et *
  79. * amortissement et forces de liaison ) *
  80. * *
  81. *--------------------------------------------------------------------*
  82. *
  83. SEGMENT,MTPHI
  84. INTEGER IBASB(NPLB),IPLSB(NPLB),INMSB(NSB),IORSB(NSB)
  85. INTEGER IAROTA(NSB)
  86. REAL*8 XPHILB(NSB,NPLSB,NA2,IDIMB)
  87. ENDSEGMENT
  88. *
  89. * INTEGER IFEXA(*),IPALA(NLIAA,*),IPLIA(NLIAA,*)
  90. INTEGER IPALA(NLIAA,*),IPLIA(NLIAA,*)
  91. INTEGER IPALB(NLIAB,*),IPLIB(NLIAA,*),JPLIB(*)
  92. REAL*8 Q1(NA1,*),Q2(NA1,*),Q3(NA1,*)
  93. REAL*8 XVALA(NLIAA,4,*),XPALA(NLIAA,*),XM(NA1,*),XK(NA1,*)
  94. REAL*8 XPALB(NLIAB,*),XVALB(NLIAB,4,*),FEXPSM(NPLB,NPC1,2,*)
  95. REAL*8 XASM(NA1,*),FTOTA(NA1,*),FEXA(NPFEXA,NPC1,*)
  96. REAL*8 FTOTB(NPLB,*),FTOTBA(*),XPTB(NPLB,2,*),FINERT(NA1,*)
  97. REAL*8 WEXT(NA1,2),WINT(NA1,2)
  98. REAL*8 XABSCI(NLIAB,*),XORDON(NLIAB,*),FEXB(NPLB,2,*)
  99. REAL*8 FTEST(NA1,4), FTEST2(NPLB,6)
  100. REAL*8 FTEXB(NPLB,NPC1,2,*),XCHPFB(2,NLIAB,4,NPLB)
  101. cbp,2020-09 REAL*8 XOPM1(NB1,NB1,*),Q2DEMI(NA1),FAMOR(NA1)
  102. REAL*8 XOPM1(NB1,NB1,*),FAMOR(NA1)
  103.  
  104. * TODO : KTOTXA et KTOTVA a allouer dans le segment LOCLFA ?
  105. REAL*8 KTOTXA(NA1,NA1), KTOTVA(NA1,NA1)
  106. * TODO : KTOTXB et KTOTVB a allouer dans le segment LOCLFB ?
  107. REAL*8 KTOTXB(NPLB,IDIMB,IDIMB),KTOTVB(NPLB,IDIMB,IDIMB)
  108. *
  109. c LOGICAL LWRITE
  110. LOGICAL RIGIDE
  111. *
  112. MTPHI = KTPHI
  113. NSB = XPHILB(/1)
  114. NPLSB = XPHILB(/2)
  115. NA2 = XPHILB(/3)
  116.  
  117. C Parametres d'affichage (pour debuggage)
  118. c LWRITE=.false.
  119. c LWRITE=(NPAS.LE.20).OR.(MOD(NPAS,1000).EQ.0)
  120. c if(LWRITE) write(*,*) '-------- NPAS =',NPAS
  121.  
  122. ************************************************************************
  123. * Parametres temporels locaux
  124. ************************************************************************
  125. tdeb = T
  126. tfin = T + PDT
  127. dt = PDT
  128. dt2=dt/2.D0
  129. dt22=dt*dt2
  130.  
  131. ************************************************************************
  132. * Déplacements généralisés
  133. ************************************************************************
  134.  
  135. DO 1 I = 1,NA1
  136. Q1(I,1) = Q1(I,2) + Q2(I,2)*DT + Q3(I,2)*DT22
  137. 1 CONTINUE
  138.  
  139.  
  140. ************************************************************************
  141. * Calcul des forces
  142. ************************************************************************
  143.  
  144. * Totalisation des forces extérieures pour la base A a la fin du pas
  145. CALL D2VFXA(FEXA,FTOTA,NPFEXA,NA1,NPC1,NPAS,FTEXB,FEXB,
  146. & NPLB,IDIMB,RIGIDE)
  147.  
  148. * estimation de la vitesse (ici plutot que dans DEVLF*, bp,2020-09):
  149. * \dot{q}_n ~ \dot{q}_{n+1/2} = ({q}_n - {q}_{n-1}) / dt
  150. * on utilise Q2(I,1) temporairement (il sera "bien" rempli à la fin du pas)
  151. DO I=1,NA1
  152. Q2(I,1)=(Q1(I,1)-Q1(I,2))/dt
  153. ENDDO
  154.  
  155. * Ajout des forces de liaison
  156. IF (NLIAA.NE.0) THEN
  157. CALL D2VLFA(Q1,Q2,FTOTA,NA1,IPALA,IPLIA,XPALA,XVALA,
  158. & NLIAA,dt,tfin,NPAS,1,FINERT,0,FTEST,
  159. & KTOTXA,KTOTVA,.FALSE.)
  160. ENDIF
  161. IF (NLIAB.NE.0) THEN
  162. CALL D2VLFB(Q1,Q2,FTOTA,NA1,IPALB,IPLIB,XPALB,XVALB,NLIAB,
  163. & XPHILB,JPLIB,NPLB,IDIMB,FTOTB,FTOTBA,XPTB,dt,tfin,
  164. & NPAS,IBASB,IPLSB,INMSB,IORSB,NSB,NPLSB,NA2,1,
  165. & FEXPSM,NPC1,IERRD,FTEST2,XABSCI,XORDON,NIP,
  166. & FEXB,RIGIDE,IAROTA,XCHPFB,
  167. & KTOTXA,KTOTVA,KTOTXB,KTOTVB,.FALSE.)
  168. IF (IERRD.NE.0) RETURN
  169. ENDIF
  170.  
  171. * Ajout des forces de raideur
  172. * F = F - K Q_1
  173. CALL DEVLK0(Q1,XK,FTOTA,NA1,NB1K,1)
  174.  
  175. * forces d'amortissement
  176. IF (NB1C.GT.1) THEN
  177. cbp,2020-09 DO 3 I=1,NA1
  178. cbp,2020-09 Q2DEMI(i)=(q1(i,1) - q1(i,2))/dt
  179. cbp,2020-09 3 CONTINUE
  180. DO 4 I=1,NA1
  181. FAMOR(I) = 0.D0
  182. DO 42 J=1,NB1
  183. cbp,2020-09 FAMOR(I) = FAMOR(I) + XASM(I,J) * Q2DEMI(J)
  184. FAMOR(I) = FAMOR(I) + XASM(I,J) * Q2(J,1)
  185. 42 CONTINUE
  186. 4 CONTINUE
  187. ELSE
  188. DO 41 I=1,NA1
  189. cbp,2020-09 FAMOR(I) = XASM(I,1) * (q1(I,1) - q1(I,2))/dt
  190. FAMOR(I) = XASM(I,1) * Q2(I,1)
  191. 41 CONTINUE
  192. ENDIF
  193.  
  194.  
  195. ************************************************************************
  196. * Accelerations et Vitesses généralisées
  197. ************************************************************************
  198.  
  199. c -Cas C ou M pleine
  200. IF (NB1.NE.1) THEN
  201. DO 5 I=1,NA1
  202. Q3(I,1) = 0.D0
  203. DO 6 J=1,NB1
  204. Q3(I,1) = Q3(I,1) + XOPM1(I,J,1)*(FTOTA(J,1)-FAMOR(J))
  205. 6 CONTINUE
  206. * Vitesses généralisées
  207. Q2(I,1) = Q2(I,2) + (Q3(I,2) + Q3(I,1))*DT2
  208. 5 CONTINUE
  209.  
  210. c -Cas C et M diagonales
  211. ELSE
  212. DO 51 I=1,NA1
  213. c UNSM = 1.D0 / ( XM(I,1) - FINERT(I,1) )
  214. cbp : pour les "vraies" differences centrees, il faut inclure l'amortissement
  215. UNSM = 1.D0 / ( XM(I,1) + dt2*XASM(I,1) - FINERT(I,1) )
  216. Q3(I,1) = (FTOTA(I,1)-FAMOR(I)) * UNSM
  217. c Q3(I,1) = (FTOTA(I,1)-FAMOR(I)) / (XM(I,1) - FINERT(I,1))
  218. * Vitesses généralisées
  219. Q2(I,1) = Q2(I,2) + (Q3(I,2) + Q3(I,1))*DT2
  220. 51 CONTINUE
  221.  
  222. ENDIF
  223.  
  224.  
  225.  
  226. ************************************************************************
  227. * calcul des travaux + decalage pour pas suivant
  228. ************************************************************************
  229.  
  230. CALL D2VENE (NA1,1,NPAS,FEXA,Q1,Q2,FTOTA,WEXT,WINT,
  231. & XASM,NPC1,NB1C)
  232.  
  233.  
  234. END
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  

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