Télécharger d2vlfa.eso

Retour à la liste

Numérotation des lignes :

  1. C D2VLFA SOURCE BP208322 15/07/22 21:15:10 8586
  2. C DEVLFA SOURCE IANIS 96/08/08 21:15:06 2249
  3. SUBROUTINE D2VLFA(Q1,Q2,FTOTA,NA1,IPALA,IPLIA,XPALA,XVALA,
  4. & NLIAA,XDT,NPAS,IND,FINERT,IVINIT,FTEST,FTOTA0)
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8(A-H,O-Z)
  7. *--------------------------------------------------------------------*
  8. * *
  9. * Operateur DYNE : algorithme de Fu - de Vogelaere *
  10. * ________________________________________________ *
  11. * *
  12. * Calcul des forces de choc base A. *
  13. * *
  14. * Param}tres: *
  15. * *
  16. * e Q1(.,.) Vecteur des deplacements generalises. *
  17. * e Q2(.,.) Vecteur des vitesses generalisees. *
  18. * es FTOTA Forces ext{rieures totalis{es sur la base A. *
  19. * e NA1 Nombre total d'inconnues en base A. *
  20. * e IPALA Renseigne sur le type de la liaison. *
  21. * e IPLIA Tableau contenant les num{ros "DYNE" de la liaison. *
  22. * e XPALA Tableau contenant les param}tres de la liaison. *
  23. * es XVALA Tableau contenant les variables internes des liaisons *
  24. * e NLIAA Nombre de liaisons sur la base A. *
  25. * e XDT Valeurs des pas de temps *
  26. * e NPAS Numero du pas de temps *
  27. * e IND Indice du demi-pas de temps *
  28. * = 2 si 1er demi-pas = 1 si 2eme demi-pas *
  29. * es FINERT Forces d'inertie *
  30. * e IVINIT =1 si vitesses initiales, =0 sinon *
  31. * *
  32. * Auteur, date de cr{ation: *
  33. * *
  34. * Lionel VIVAN, le 20 aout 1989. *
  35. * E. de LANGRE, 15 fevrier 91 correction jeu negatif *
  36. * Lionel VIVAN, 12 mars 1991 ajout de la liaison FLUIDE *
  37. * Denis ROBERT, 30 avril 1992 ajout liaison POLYNOMIALE *
  38. * *
  39. * remarque: *
  40. * ========= *
  41. * Si jeu n{gatif (cas particulier de la base A ou il n'y a pas de *
  42. * normale), on renverse les variables avec XNORM. *
  43. * *
  44. *--------------------------------------------------------------------*
  45. *
  46. INTEGER IPALA(NLIAA,*),IPLIA(NLIAA,*)
  47. REAL*8 XPALA(NLIAA,*),Q1(NA1,*),Q2(NA1,*),FTOTA(NA1,*)
  48. REAL*8 XVALA(NLIAA,4,*),XDT(*),FINERT(NA1,*)
  49. PARAMETER (XZERO = 0.D0)
  50. REAL*8 FTest(nA1,4)
  51. REAL*8 ftOTa0(NA1,4)
  52. *
  53. * Boucle sur le nombre de liaisons
  54. *
  55. XFIN = 0.D0
  56. PDT = XDT(NPAS)
  57.  
  58. c PDTS2 = 0.5D0 * PDT
  59. pdts2 = pdt
  60.  
  61. DO 10 I = 1,NLIAA
  62. ITYP = IPALA(I,1)
  63. icond= IPALa(I,2)
  64. iannul= 0
  65. * --- cas des liaisons conditionnelles
  66. if (icond .eq. 1 ) then
  67. DO 101 j = 4,20
  68. jliai = ipala(i,j)
  69. jpliai = abs ( jliai)
  70. if ( jliai . EQ. 0 ) then
  71. goto 101
  72. else
  73. jtyp = ipala(jpliai,1)
  74. do 102 ik = 1,nA1
  75. do 103 jk = 1,4
  76. ftest(ik,jk) = 0d0
  77. ftota0 (ik,jk) = ftota(ik,jk)
  78. 103 continue
  79. 102 continue
  80. * CALCUL DES LIAISONS POUR TEST
  81. *
  82. * ****** choc {l{mentaire POINT_PLAN sans amortissement
  83. *
  84. IF (JTYP.EQ.1) THEN
  85. XRAID = XPALA(jpliai,1)
  86. XJEU = XPALA(jpliai,2)
  87. XNORM = 1.
  88. IF (XJEU.LT.0D0) THEN
  89. XNORM = -1.
  90. XJEU = -1*XJEU
  91. ENDIF
  92. INA1 = IPLIA(jpliai,1)
  93. XDEP = XNORM*Q1(INA1,IND)
  94. CALL DYCHEL(XDEP,XRAID,XJEU, XFL,iannul)
  95. XVALA(jpliai,IND,1) = XNORM*XFL
  96. XVALA(jpliai,IND,4) = XNORM*XDEP
  97. FTest(INA1,IND) =Ftest(INA1,IND) + XNORM*XFL
  98. *
  99. * ------ choc {l{mentaire POINT_PLAN avec amortissement
  100. *
  101. ELSE IF (JTYP.EQ.2) THEN
  102. XRAID = XPALA(jpliai,1)
  103. XJEU = XPALA(jpliai,2)
  104. XAMO = XPALA(jpliai,3)
  105. XNORM = 1.
  106. IPERM = 0
  107. IF (XJEU.LT.XZERO) THEN
  108. XNORM = -1.
  109. XJEU = -1*XJEU
  110. ENDIF
  111. INA1 = IPLIA(jpliai,1)
  112. XDEP = XNORM * Q1(INA1,IND)
  113. IF ((NPAS.EQ.1).AND.(IND.EQ.3)) THEN
  114. XVIT = XNORM * Q2(INA1,IND)
  115. ELSE
  116. IND2 = IND + 1
  117. XDEPM1 = XNORM * Q1(INA1,IND2)
  118. XVIT = (XDEP - XDEPM1) / PDTS2
  119. ENDIF
  120. XVALA(jpliai,IND,3) = XNORM*XVIT
  121. CALL DYCHAM(XDEP,XVIT,XRAID,XJEU,XAMO,XFL,IPERM,iannul)
  122. *+*
  123. IF (XDEP.GT.0.D0 .AND. XFL.GT.0.D0) XFL = 0.D0
  124. IF (XDEP.LT.0.D0 .AND. XFL.LT.0.D0) XFL = 0.D0
  125. *+*
  126. XVALA(jpliai,IND,1) = XNORM*XFL
  127. XVALA(jpliai,IND,4) = XNORM*XDEP
  128. FTest(INA1,IND) =Ftest(INA1,IND) + XNORM*XFL
  129. *
  130. * ------ choc {l{mentaire POINT_PLAN_FLUIDE
  131. *
  132. ELSE IF (JTYP.EQ.3) THEN
  133. XINER = XPALA(jpliai,1)
  134. XCONV = XPALA(jpliai,2)
  135. XVISC = XPALA(jpliai,3)
  136. XPCEL = XPALA(jpliai,4)
  137. XPCRA = XPALA(jpliai,5)
  138. XJEU = XPALA(jpliai,6)
  139. INA1 = IPLIA(jpliai,1)
  140. XDEP = Q1(INA1,IND)
  141. IF ((NPAS.EQ.1).AND.(IND.EQ.3)) THEN
  142. XVIT = Q2(INA1,IND)
  143. ELSE
  144. IND2 = IND + 1
  145. XDEPM1 = Q1(INA1,IND2)
  146. XVIT = (XDEP - XDEPM1) / PDTS2
  147. ENDIF
  148. IF (XJEU.GT.0D0) THEN
  149. XDH= XJEU - XDEP
  150. XNORM = 1.
  151. ELSE
  152. XDH= XDEP - XJEU
  153. XNORM = -1.
  154. ENDIF
  155. * Calcul de la masse ajout{e
  156. XXIN = -XINER / XDH
  157. FINERT(INA1,IND) = FINERT(INA1,IND) + XXIN
  158. * Calcul de la force de convection
  159. CALL DYFCON(XDH,XDEP,XVIT,XJEU,XCONV,XFCO,iannul)
  160. * Calcul de la force de viscosit{
  161. CALL DYFVIS(XDH,XDEP,XVIT,XJEU,XVISC,XFVI,iannul)
  162. * Calcul de la force de perte de charge
  163. CALL DYFPDC(XDH,XDEP,XVIT,XJEU,XPCEL,XPCRA,XFPE,iannul)
  164. XFL = (XFCO* XNORM ) + XFVI + XFPE
  165. XVALA(jpliai,IND,1) = XDEP
  166. XVALA(jpliai,IND,2) = XVIT
  167. XVALA(jpliai,IND,3) = XXIN
  168. XVALA(jpliai,IND,4) = XFCO*XNORM
  169. XVALA(jpliai,IND,5) = XFVI
  170. XVALA(jpliai,IND,6) = XFPE
  171. FTest(INA1,IND) =Ftest(iNA1,IND) + XFL
  172. *
  173. * ------ force {l{mentaire de COUPLAGE EN VITESSE
  174. *
  175. ELSE IF (JTYP.EQ.4) THEN
  176. INA1 = IPLIA(jpliai,1)
  177. INA2 = IPLIA(jpliai,2)
  178. XDEP = Q1(INA2,IND)
  179. IF ((NPAS.EQ.1).AND.(IND.EQ.3)) THEN
  180. XVIT = Q2(INA2,IND)
  181. ELSE
  182. IND2 = IND + 1
  183. XDEPM1 = Q1(INA2,IND2)
  184. XVIT = (XDEP - XDEPM1) / PDTS2
  185. ENDIF
  186. XCPLGE = XPALA(jpliai,1)
  187. CALL DYCPLV(XVIT,XCPLGE,XFL,iannul)
  188. XVALA(jpliai,IND,3) = XVIT
  189. XVALA(jpliai,IND,1) = XFL
  190. XVALA(jpliai,IND,4) = XDEP
  191. FTest(INA1,IND) =Ftest(INA1,IND) + XFL
  192. *
  193. * ------ force {l{mentaire de COUPLAGE EN DEPLACEMENT
  194. *
  195. ELSE IF (JTYP.EQ.5) THEN
  196. INA1 = IPLIA(jpliai,1)
  197. INA2 = IPLIA(jpliai,2)
  198. XDEP = Q1(INA2,IND)
  199. XCPLGE = XPALA(jpliai,1)
  200. CALL DYCPLD(XDEP,XCPLGE,XFL,iannul)
  201. cbp on mutliplie eventuellement par une fonction temporelle
  202. jfonct = ipala(jpliai,3)
  203. if(jfonct.ge.1) then
  204. XFREQ = XPALA(jpliai,2)
  205. XTIME = DBLE(NPAS-1)*PDT
  206. if(jfonct.eq.1) XFONCT = COS(XFREQ*XTIME)
  207. if(jfonct.eq.2) XFONCT = SIN(XFREQ*XTIME)
  208. XFL = XFL * XFONCT
  209. endif
  210. XVALA(jpliai,IND,1) = XFL
  211. XVALA(jpliai,IND,4) = XDEP
  212. FTest(INA1,IND) =Ftest(INA1,IND) + XFL
  213. *
  214. * ------ force elementaire de type POLYNOMIALE
  215. *
  216. ELSE IF (JTYP.EQ.6) THEN
  217. * WRITE(IOIMP,*)'DEVLFA : IPLIA(',jpliai,'1)=',IPLIA(jpliai,1)
  218. * nombre de modes "origine"
  219. NMOD = IPALA(I,2)
  220. CALL D2POL1(Q1,Q2,NA1,IPLIA,XPALA,XVALA,NLIAA,IND,XDT,
  221. & NPAS,jpliai,NMOD,FTest,IVINIT,iannul)
  222. *
  223. * ------ choc {l{mentaire ...
  224. *
  225. * ELSE IF (JTYP.EQ. ) THEN
  226. * .......
  227. * .......
  228. *
  229. ENDIF
  230. ***** tests pour voir si on annulera
  231. xff = 0d0
  232. do 104 ik = 1,na1
  233. do 105 jk = 1,4
  234. xff = xff + ( ftest(ik,jk) ** 2)
  235. 105 continue
  236. 104 continue
  237. xff = xff ** .5
  238. if ( ((xff .le. 1e-20 ) .and. ( jliai .gt. 0) )
  239. & .OR. ((xff .gt. 1e-20 ) .and. ( jliai .lt. 0) ) )
  240. & then
  241. iannul = 1
  242. endif
  243. endif
  244. 101 continue
  245. * --- fin du cas des liaisons conditionnelles
  246. endif
  247. *
  248. * ------ choc {l{mentaire POINT_PLAN sans amortissement
  249. *
  250. IF (ITYP.EQ.1) THEN
  251. XRAID = XPALA(I,1)
  252. XJEU = XPALA(I,2)
  253. XNORM = 1.
  254. IF (XJEU.LT.0D0) THEN
  255. XNORM = -1.
  256. XJEU = -1*XJEU
  257. ENDIF
  258. INA1 = IPLIA(I,1)
  259. XDEP = XNORM*Q1(INA1,IND)
  260. CALL DYCHEL(XDEP,XRAID,XJEU, XFL,iannul)
  261. XVALA(I,IND,1) = XNORM*XFL
  262. XVALA(I,IND,4) = XNORM*XDEP
  263. FTOTA(INA1,IND) = FTOTA(INA1,IND) + XNORM*XFL
  264. *
  265. * ------ choc {l{mentaire POINT_PLAN avec amortissement
  266. *
  267. ELSE IF (ITYP.EQ.2) THEN
  268. XRAID = XPALA(I,1)
  269. XJEU = XPALA(I,2)
  270. XAMO = XPALA(I,3)
  271. IPERM = 0
  272. XNORM = 1.
  273. IF (XJEU.LT.XZERO) THEN
  274. XNORM = -1.
  275. XJEU = -1*XJEU
  276. ENDIF
  277. INA1 = IPLIA(I,1)
  278. XDEP = XNORM * Q1(INA1,IND)
  279. IF ((NPAS.EQ.1).AND.(IND.EQ.3)) THEN
  280. XVIT = XNORM * Q2(INA1,IND)
  281. ELSE
  282. IND2 = IND + 1
  283. XDEPM1 = XNORM * Q1(INA1,IND2)
  284. XVIT = (XDEP - XDEPM1) / PDTS2
  285. ENDIF
  286. XVALA(I,IND,3) = XNORM*XVIT
  287. CALL DYCHAM(XDEP,XVIT,XRAID,XJEU,XAMO,XFL,IPERM,iannul)
  288. *+*
  289. IF (XDEP.GT.0.D0 .AND. XFL.GT.0.D0) XFL = 0.D0
  290. IF (XDEP.LT.0.D0 .AND. XFL.LT.0.D0) XFL = 0.D0
  291. *+*
  292. XVALA(I,IND,1) = XNORM*XFL
  293. XVALA(I,IND,4) = XNORM*XDEP
  294. FTOTA(INA1,IND) = FTOTA(INA1,IND) + XNORM*XFL
  295. *
  296. * ------ choc {l{mentaire POINT_PLAN_FLUIDE
  297. *
  298. ELSE IF (ITYP.EQ.3) THEN
  299. XINER = XPALA(I,1)
  300. XCONV = XPALA(I,2)
  301. XVISC = XPALA(I,3)
  302. XPCEL = XPALA(I,4)
  303. XPCRA = XPALA(I,5)
  304. XJEU = XPALA(I,6)
  305. INA1 = IPLIA(I,1)
  306. XDEP = Q1(INA1,IND)
  307. IF ((NPAS.EQ.1).AND.(IND.EQ.3)) THEN
  308. XVIT = Q2(INA1,IND)
  309. ELSE
  310. IND2 = IND + 1
  311. XDEPM1 = Q1(INA1,IND2)
  312. XVIT = (XDEP - XDEPM1) / PDTS2
  313. ENDIF
  314. IF (XJEU.GT.0D0) THEN
  315. XDH= XJEU - XDEP
  316. XNORM = 1.
  317. ELSE
  318. XDH= XDEP - XJEU
  319. XNORM = -1.
  320. ENDIF
  321. * Calcul de la masse ajout{e
  322. XXIN = -XINER / XDH
  323. FINERT(INA1,IND) = FINERT(INA1,IND) + XXIN
  324. * Calcul de la force de convection
  325. CALL DYFCON(XDH,XDEP,XVIT,XJEU,XCONV,XFCO,iannul)
  326. * Calcul de la force de viscosit{
  327. CALL DYFVIS(XDH,XDEP,XVIT,XJEU,XVISC,XFVI,iannul)
  328. * Calcul de la force de perte de charge
  329. CALL DYFPDC(XDH,XDEP,XVIT,XJEU,XPCEL,XPCRA,XFPE,
  330. & iannul)
  331. XFL = (XFCO* XNORM ) + XFVI + XFPE
  332. XVALA(I,IND,1) = XDEP
  333. XVALA(I,IND,2) = XVIT
  334. XVALA(I,IND,3) = XXIN
  335. XVALA(I,IND,4) = XFCO*XNORM
  336. XVALA(I,IND,5) = XFVI
  337. XVALA(I,IND,6) = XFPE
  338. FTOTA(INA1,IND) = FTOTA(INA1,IND) + XFL
  339. *
  340. * ------ force {l{mentaire de COUPLAGE EN VITESSE
  341. *
  342. ELSE IF (ITYP.EQ.4) THEN
  343. INA1 = IPLIA(I,1)
  344. INA2 = IPLIA(I,2)
  345. XDEP = Q1(INA2,IND)
  346. IF ((NPAS.EQ.1).AND.(IND.EQ.3)) THEN
  347. XVIT = Q2(INA2,IND)
  348. ELSE
  349. IND2 = IND + 1
  350. XDEPM1 = Q1(INA2,IND2)
  351. XVIT = (XDEP - XDEPM1) / PDTS2
  352. ENDIF
  353. XCPLGE = XPALA(I,1)
  354. CALL DYCPLV(XVIT,XCPLGE,XFL,iannul)
  355. XVALA(I,IND,3) = XVIT
  356. XVALA(I,IND,1) = XFL
  357. XVALA(I,IND,4) = XDEP
  358. FTOTA(INA1,IND) = FTOTA(INA1,IND) + XFL
  359. *
  360. * ------ force {l{mentaire de COUPLAGE EN DEPLACEMENT
  361. *
  362. ELSE IF (ITYP.EQ.5) THEN
  363. INA1 = IPLIA(I,1)
  364. INA2 = IPLIA(I,2)
  365. XDEP = Q1(INA2,IND)
  366. XCPLGE = XPALA(I,1)
  367. CALL DYCPLD(XDEP,XCPLGE,XFL,iannul)
  368. cbp on mutliplie eventuellement par une fonction temporelle
  369. jfonct = ipala(I,3)
  370. if(jfonct.ge.1) then
  371. XFREQ = XPALA(I,2)
  372. XTIME = DBLE(NPAS-1)*PDT
  373. if(jfonct.eq.1) XFONCT = COS(XFREQ*XTIME)
  374. if(jfonct.eq.2) XFONCT = SIN(XFREQ*XTIME)
  375. XFL = XFL * XFONCT
  376. endif
  377. XVALA(I,IND,1) = XFL
  378. XVALA(I,IND,4) = XDEP
  379. FTOTA(INA1,IND) = FTOTA(INA1,IND) + XFL
  380. *
  381. * ------ force elementaire de type POLYNOMIALE
  382. *
  383. ELSE IF (ITYP.EQ.6) THEN
  384. * WRITE(IOIMP,*)'DEVLFA : IPLIA(',I,'1)=',IPLIA(I,1)
  385. * nombre de modes "origine"
  386. NMOD = IPALA(I,2)
  387. CALL D2POL1(Q1,Q2,NA1,IPLIA,XPALA,XVALA,NLIAA,IND,XDT,
  388. & NPAS,I,NMOD,FTOTA,IVINIT,iannul)
  389. *
  390. * ------ choc {l{mentaire ...
  391. *
  392. * ELSE IF (ITYP.EQ. ) THEN
  393. * .......
  394. * .......
  395. *
  396. ENDIF
  397.  
  398.  
  399. *
  400. * la suite n'est plus utile car on passe iannul aux s_p de calcul des
  401. * forces de liaisons.
  402.  
  403. * si la liaisn était annulée on l'annule
  404. * if ( ( icond.eq. 1 ) .and. ( iannul.eq.1)) then
  405. * on annulle l'increment de ftotb
  406. * do 112 ik = 1,na1
  407. * do 113 jk = 1,4
  408. * ftota (ik,jk) = ftota0(ik,jk)
  409. * 113 continue
  410. * 112 continue
  411.  
  412. * end if
  413. 10 CONTINUE
  414. * END DO
  415. *
  416. END
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  

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