Télécharger dyna14.eso

Retour à la liste

Numérotation des lignes :

dyna14
  1. C DYNA14 SOURCE PV 20/03/30 21:18:04 10567
  2. SUBROUTINE DYNA14(ITREFR,KTLIAA)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. *--------------------------------------------------------------------*
  6. * *
  7. * Operateur DYNE : algorithme de Fu - de Vogelaere *
  8. * ________________________________________________ *
  9. * *
  10. * Remplissage du tableau contenant les parametres de liaison en *
  11. * cas de reprise (liaison POLYNOMIALE ou COUPLAGE_DEPLACEMENT *
  12. * avec convolution en base A) *
  13. * *
  14. * Parametres: *
  15. * *
  16. * ITREFR Table contenant les variables internes des liaisons *
  17. * sauvegardees dans la table de reprise *
  18. * KTLIAA Description des liaisons en base A *
  19. * *
  20. * Auteur, date de creation: *
  21. * *
  22. * Denis ROBERT-MOUGIN : le 14 mai 1992 *
  23. * *
  24. *--------------------------------------------------------------------*
  25. *
  26.  
  27. -INC PPARAM
  28. -INC CCOPTIO
  29. -INC SMLENTI
  30. -INC SMTABLE
  31. -INC SMLREEL
  32. -INC SMCOORD
  33. *
  34. SEGMENT,ICPR(nbpts)
  35. SEGMENT,MTLIAA
  36. INTEGER IPALA(NLIAA,NIPALA),IPLIA(NLIAA,NPLAA),JPLIA(NPLA)
  37. REAL*8 XPALA(NLIAA,NXPALA)
  38. ENDSEGMENT
  39. *
  40. LOGICAL L0,L1
  41. CHARACTER*(8) TYPIND
  42. *
  43. MTLIAA = KTLIAA
  44. NLIAA = XPALA(/1)
  45. IF (IIMPI.EQ.333) THEN
  46. WRITE(IOIMP,*)'Entree dans DYNA14'
  47. WRITE(IOIMP,*)'NLIAA = ',NLIAA
  48. ENDIF
  49. *
  50. * Boucle sur les liaisons en base A (I) sauvegardees (IPOLY)
  51. *
  52. IPOLY = 0
  53. DO 10 I = 1,NLIAA
  54. ITYP = IPALA(I,1)
  55. c IF(IIMPI.EQ.333) WRITE(IOIMP,*)'Liaison ',I,': ITYP = ',ITYP
  56.  
  57. * Liaison acceptees = 5 (avec convolution) et 6
  58. IF(ITYP.EQ.5) THEN
  59. IFONC=IPALA(I,3)
  60. c WRITE(IOIMP,*)'dyna14: Liaison ',I,': ITYP = ',ITYP,IFONC
  61. IF(IFONC.NE.100.AND.IFONC.NE.101) GOTO 10
  62. ELSEIF(ITYP.NE.6) THEN
  63. c WRITE(IOIMP,*)'dyna14: Liaison ',I,': ITYP = ',ITYP
  64. GOTO 10
  65. ENDIF
  66.  
  67. * Attention : les liaisons doivent etre dans le meme ordre
  68. * dans la table ITREFI que la table des liaisons !
  69. IPOLY = IPOLY + 1
  70. CALL ACCTAB(ITREFR,'ENTIER',IPOLY,X0,' ',L0,IP0,
  71. & 'TABLE',I1,X1,' ',L1,ITREFI)
  72. IF (IERR.NE.0) RETURN
  73. CALL ACCTAB(ITREFI,'MOT',I0,X0,'TYPE',L0,IP0,
  74. & 'ENTIER',ITYPR,X1,' ',L1,ITR)
  75. IF (IERR.NE.0) RETURN
  76. IF (ITYPR.NE.ITYP) THEN
  77. WRITE(ioimp,*) 'Incoherence table de reprise liaison',I
  78. CALL ERREUR(21)
  79. RETURN
  80. ENDIF
  81.  
  82. * -- Cas des liaisons couplage deplacement avec convolution --
  83. IF (ITYP.EQ.5) THEN
  84.  
  85. CALL ACCTAB(ITREFI,'MOT',I0,X0,'DEPLACEMENT',
  86. & L0,IP0,'LISTREEL',I1,X1,' ',L1,IPLR2)
  87. IF (IERR.NE.0) RETURN
  88. c IPALA(I,5)=IPLR2
  89. c On recopie dans le nouveau listreel les deplacements deja
  90. c calcules avant reprise
  91. c IFONC=100 : convolution generale via un listreel fourni
  92. c IF(IFONC.EQ.100) THEN
  93. MLREE2=IPALA(I,5)
  94. c IFONC=101 : convolution via le modele de granger_paidoussis
  95. c --> optimisation : on retrouve les memes indices ...
  96. c ELSEIF(IFONC.EQ.101) THEN
  97. c MLREE2=IPALA(I,6)
  98. c ENDIF
  99. MLREEL=IPLR2
  100. segact,MLREEL
  101. JG2=PROG(/1)
  102. do i2=1,JG2
  103. MLREE2.PROG(i2)=PROG(i2)
  104. enddo
  105. CALL ACCTAB(ITREFI,'MOT',I0,X0,'DEPLACEMENT_1/2',
  106. & L0,IP0,'LISTREEL',I1,X1,' ',L1,IPLR3)
  107. IF (IERR.NE.0) RETURN
  108. c IPALA(I,6)=IPLR3
  109. c On recopie dans le nouveau listreel les deplacements deja
  110. c calcules avant reprise
  111. c IF(IFONC.EQ.100) THEN
  112. MLREE3=IPALA(I,6)
  113. c IFONC=101 : convolution via le modele de granger_paidoussis
  114. c --> optimisation : on retrouve les memes indices ...
  115. c ELSEIF(IFONC.EQ.101) THEN
  116. c MLREE3=IPALA(I,7)
  117. c ENDIF
  118. MLREEL=IPLR3
  119. segact,MLREEL
  120. JG3=PROG(/1)
  121. do i3=1,JG3
  122. MLREE3.PROG(i3)=PROG(i3)
  123. enddo
  124.  
  125.  
  126. * -- Cas des liaisons polynomiales --
  127. ELSEIF (ITYP.EQ.6) THEN
  128.  
  129. CALL ACCTAB(ITREFI,'MOT',I0,X0,
  130. & 'POINTS_LIAISON_POLYNOMIALE',
  131. & L0,IP0,'LISTENTI',I1,X1,' ',L1,IPLEN1)
  132. IF (IERR.NE.0) RETURN
  133. CALL ACCTAB(ITREFI,'MOT',I0,X0,
  134. & 'VARIABLES_LIAISON_POLYNOMIALE',
  135. & L0,IP0,'LISTREEL',I1,X1,' ',L1,IPLRE1)
  136. IF (IERR.NE.0) RETURN
  137. *
  138. IF(IIMPI.EQ.333) WRITE(IOIMP,*)'Lecture des points'
  139. MLENTI = IPLEN1
  140. SEGACT MLENTI
  141. NP = LECT(/1)
  142. NPJ = NP / 2
  143. DO 20 J=1,NPJ
  144. K = J * 2
  145. IKX = LECT(K)
  146. IPLIA(I,J) = IKX
  147. K = (J * 2) - 1
  148. JPLIA(IKX) = LECT(K)
  149. 20 CONTINUE
  150. *****PV SEGSUP MLENTI
  151. *
  152. IF(IIMPI.EQ.333) WRITE(IOIMP,*)'Lecture des deplacements'
  153. MLREEL = IPLRE1
  154. SEGACT MLREEL
  155. NV = PROG(/1)
  156. DO 30 J=1,NV
  157. XPALA(I,J) = PROG(J)
  158. 30 CONTINUE
  159. *****PV SEGSUP MLREEL
  160.  
  161. ENDIF
  162.  
  163. 10 CONTINUE
  164. *
  165. END
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  

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