Télécharger dyn205.eso

Retour à la liste

Numérotation des lignes :

dyn205
  1. C DYN205 SOURCE BP208322 19/02/25 21:15:55 10120
  2. SUBROUTINE DYN205(I,ITLB,ITYP,KTLIAB,NPLB)
  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 des tableaux de description des liaisons sur *
  11. * la base des informations contenues dans la table ILIB *
  12. * Liaison DE TYPE POINT_POINT_ROTATION_PLASTIQUE *
  13. * *
  14. * Parametres: *
  15. * *
  16. * e I Numero de la liaison. *
  17. * e ITLB Table rassemblant la description d'une liaison. *
  18. * e ITYP Type de la liaison. *
  19. * s KTLIAB Segment descriptif des liaisons sur base B. *
  20. * e NPLB Nombre total de points. *
  21. * *
  22. * *
  23. * Auteur, date de creation: *
  24. * *
  25. * Nicolas WECXSTEEN 04/96 point-point- ... -plastique *
  26. * *
  27. *--------------------------------------------------------------------*
  28.  
  29. -INC PPARAM
  30. -INC CCOPTIO
  31. -INC SMCOORD
  32. -INC SMEVOLL
  33. -INC SMLREEL
  34. *
  35. SEGMENT MTLIAB
  36. INTEGER IPALB(NLIAB,NIPALB),IPLIB(NLIAB,NPLBB),JPLIB(NPLB)
  37. REAL*8 XPALB(NLIAB,NXPALB)
  38. REAL*8 XABSCI(NLIAB,NIP),XORDON(NLIAB,NIP)
  39. ENDSEGMENT
  40. *
  41. LOGICAL L1,L0,LPERM,LELAS,LECRO
  42. CHARACTER*8 MONAMO,CHARRE,MONPER,MONELA,TYPRET
  43. CHARACTER*20 MONECR
  44.  
  45. *
  46. MTLIAB = KTLIAB
  47. *
  48. * --- choc elementaire POINT_POINT_ROTATION_PLASTIQUE avec ou sans
  49. * amortissement
  50. *
  51. IF (ITYP.EQ.50) THEN
  52. CALL ACCTAB(ITLB,'MOT',I0,X0,'POINT_A',L0,IP0,
  53. & 'POINT',I1,X1,CHARRE,L1,INOA)
  54. IF (IERR.NE.0) RETURN
  55. CALL ACCTAB(ITLB,'MOT',I0,X0,'POINT_B',L0,IP0,
  56. & 'POINT',I1,X1,CHARRE,L1,INOB)
  57. IF (IERR.NE.0) RETURN
  58. CALL ACCTAB(ITLB,'MOT',I0,X0,'AXE_ROTATION',L0,IP0,
  59. & 'POINT',I1,X1,CHARRE,L1,IPOI)
  60. IF (IERR.NE.0) RETURN
  61. CALL ACCTAB(ITLB,'MOT',I1,X0,'JEU',L0,IP0,
  62. & 'FLOTTANT',I0,XJEU,CHARRE,L1,IP1)
  63. IF (IERR.NE.0) RETURN
  64. CALL ACCTAB(ITLB,'MOT',I1,X0,'LOI_DE_COMPORTEMENT',L0,IP0,
  65. & 'EVOLUTIO',I1,X1,CHARRE,L1,IPEVO)
  66. IF (IERR.NE.0) RETURN
  67. *
  68. MONPER = ' '
  69. LPERM = .FALSE.
  70. CALL ACCTAB(ITLB,'MOT',I1,X0,'LIAISON_PERMANENTE',L0,
  71. & IP0,MONPER,I0,X1,CHARRE,LPERM,IP1)
  72. IF (IERR.NE.0) RETURN
  73. TYPRET = ' '
  74. CALL ACCTAB(ITLB,'MOT',I1,X0,'ECROUISSAGE',L0,
  75. & IP0,TYPRET,I0,X1,MONECR,L1,IP1)
  76. IF (IERR.NE.0) RETURN
  77. LECRO = (TYPRET.EQ.'MOT')
  78. MONELA = ' '
  79. LELAS = .FALSE.
  80. CALL ACCTAB(ITLB,'MOT',I1,X0,'COMPORTEMENT_ELASTIQUE',L0,
  81. & IP0,MONELA,I0,X1,' ',LELAS,IP1)
  82. IF (IERR.NE.0) RETURN
  83. IPERM = 0
  84. *
  85. * iperm = -2 : liaison elastique permanente
  86. * iperm = -1 : choc elastique
  87. * iperm = 0 : donnees incoherentes ou insuffisantes
  88. * iperm = 1 : choc plastique
  89. * iperm = 2 : liaison plastique isotrope
  90. * iperm = 3 : liaison plastique cinematique
  91. *
  92.  
  93. IF (LPERM) THEN
  94. IF (LELAS.AND.(.NOT.LECRO)) IPERM = -2
  95. IF (MONECR.EQ.'ISOTROPE'.AND.(.NOT.LELAS)) IPERM = 2
  96. IF (MONECR.EQ.'CINEMATIQUE'.AND.(.NOT.LELAS)) IPERM = 3
  97. IF (.NOT.(XJEU.EQ.0.)) THEN
  98. * WRITE(*,*) 'Liaison permanente, mise a zero du jeu.'
  99. XJEU = 0.D0
  100. ENDIF
  101. ELSE
  102. IF (.NOT.LECRO) THEN
  103. IF (LELAS) THEN
  104. IPERM = -1
  105. ELSE
  106. IPERM = 1
  107. ENDIF
  108. ENDIF
  109. ENDIF
  110. IF (IPERM.EQ.0) THEN
  111. CALL ERREUR(905)
  112. RETURN
  113. ENDIF
  114. *
  115. MEVOLL = IPEVO
  116. *
  117. * si IEVOLL(/1) different de 1 => probleme (on veut une seule courbe)
  118. * Ici, on recupere les abscisses et les ordonnees de l'evolution dans des
  119. * tableaux xabsci et xordon
  120. *
  121. SEGACT MEVOLL
  122. KEVOLL = IEVOLL(1)
  123. SEGACT KEVOLL
  124. MLREE1 = IPROGX
  125. MLREE2 = IPROGY
  126. SEGACT MLREE1
  127. SEGACT MLREE2
  128. * NIP = MLREE1.PROG(/1)
  129. NIP = XABSCI(/2)
  130. *
  131. DO 10 MM=1,NIP
  132. XABSCI (I,MM) = MLREE1.PROG(MM)
  133. XORDON (I,MM) = MLREE2.PROG(MM)
  134. 10 CONTINUE
  135. *
  136. SEGDES MLREE1
  137. SEGDES MLREE2
  138. SEGDES KEVOLL
  139. SEGDES MEVOLL
  140. *
  141. MONAMO = ' '
  142. CALL ACCTAB(ITLB,'MOT',I1,X0,'AMORTISSEMENT',L0,IP0,
  143. & MONAMO,I0,XAMON,CHARRE,L1,IP1)
  144. IF (IERR.NE.0) RETURN
  145. *
  146. IPALB(I,1) = ITYP
  147. IPALB(I,3) = IDIM
  148. IF(LPERM) IPALB(I,4)=2
  149. IPALB(I,5) = IPERM
  150. XPALB(I,1) = XJEU
  151. *
  152. * normalisation de l'axe de rotation
  153. *
  154. IPNV = (IDIM + 1) * (IPOI - 1)
  155. PS = 0.D0
  156. DO 20 ID = 1,IDIM
  157. XC = XCOOR(IPNV + ID)
  158. PS = PS + XC * XC
  159. 20 CONTINUE
  160. * end do
  161. IF (PS.LE.0.D0) THEN
  162. CALL ERREUR(162)
  163. RETURN
  164. ENDIF
  165. IF (MONAMO.EQ.'FLOTTANT') THEN
  166. IPALB(I,1) = 51
  167. XPALB(I,2) = XAMON
  168. DO 22 ID = 1,IDIM
  169. ID2 = 2 + ID
  170. XPALB(I,ID2) = XCOOR(IPNV + ID) / SQRT(PS)
  171. 22 CONTINUE
  172. * end do
  173. ELSE
  174. DO 24 ID = 1,IDIM
  175. ID2 = 1 + ID
  176. XPALB(I,ID2) = XCOOR(IPNV + ID) / SQRT(PS)
  177. 24 CONTINUE
  178. * end do
  179. ENDIF
  180. *
  181. CALL PLACE2(JPLIB,NPLB,IPLAC,INOA)
  182. IPLIB(I,1) = IPLAC
  183. CALL PLACE2(JPLIB,NPLB,IPLAC,INOB)
  184. IPLIB(I,2) = IPLAC
  185. *
  186. *
  187. * --- choc elementaire POINT_POINT...
  188. *
  189. * ELSE IF (ITYP.EQ. ) THEN
  190. * ...
  191. * ...
  192. ENDIF
  193. *
  194. END
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  

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