Télécharger dyne20.eso

Retour à la liste

Numérotation des lignes :

  1. C DYNE20 SOURCE BP208322 18/07/11 21:15:11 9879
  2. SUBROUTINE DYNE20(ILIB,KTLIAB)
  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 a partir des informations contenues dans la *
  12. * table ILIB. *
  13. * *
  14. * Parametres: *
  15. * *
  16. * e ILIB Table rassemblant la description des liaisons *
  17. * es KTLIAB Segment descriptif des liaisons sur la base B. *
  18. * *
  19. * *
  20. * Parametres de dimensionnement pour une liaison sur base: *
  21. * *
  22. * NIPALB : nombre de parametres pour definir le type des *
  23. * liaisons (NIPALB est fixe a 3). *
  24. * NXPALB : nombre maxi de parametres internes definissant les *
  25. * liaisons. *
  26. * NPLBB : nombre maxi de points intervenant dans une liaison. *
  27. * *
  28. * NPLB : nombre total de points. *
  29. * NLIAB : nombre total de liaisons. *
  30. * *
  31. * *
  32. * Tableaux fortran pour les liaisons sur base B : *
  33. * *
  34. * XPALB(NLIAB,NXPALB) : parametres de la liaison. *
  35. * IPALB(NLIAB,NIPALB) : renseigne sur le type de liaison. *
  36. * et les eventuelles conditions *
  37. * XABSCI Tableau contenant les abscisses de la loi plastique *
  38. * pour les liaisons point-point- ... -plastique *
  39. * XORDON Tableau contenant les ordonnees de la loi plastique *
  40. * pour les liaisons point-point- ... -plastique *
  41. * *
  42. * JPLIB(NPLB) : numero global des points. *
  43. * IPLIB(NLIAB,NPLBB) : numeros locaux des points concernes par *
  44. * la liaison. *
  45. * *
  46. * Icorres Pour garder le numero du pointeur des tables de *
  47. * liaison *
  48. * *
  49. * *
  50. * Auteur, date de creation: *
  51. * *
  52. * Lionel VIVAN, le 21 Septembre 1989. *
  53. * E de LANGRE 08/94 laisns conditionnelles *
  54. * I. Pinto 05/97, liaisons ligne_cercle,appels a dyn207 *
  55. * *
  56. *--------------------------------------------------------------------*
  57. -INC CCOPTIO
  58. *
  59. SEGMENT MTLIAB
  60. INTEGER IPALB(NLIAB,NIPALB),IPLIB(NLIAB,NPLBB),JPLIB(NPLB)
  61. REAL*8 XPALB(NLIAB,NXPALB)
  62. REAL*8 XABSCI(NLIAB,NIP),XORDON(NLIAB,NIP)
  63. ENDSEGMENT
  64. *
  65. SEGMENT icorres( nliab)
  66. *
  67. LOGICAL L1,L0
  68. CHARACTER*40 CMOT,MONMOT,CHARRE
  69. MTLIAB = KTLIAB
  70. NPLB = JPLIB(/1)
  71. NLIAB = IPALB(/1)
  72. segini icorres
  73. *
  74. * Boucle sur le nombre de liaisons
  75. *
  76. II = 0
  77. *
  78. DO 10 I = 1,NLIAB
  79. CALL ACCTAB(ILIB,'ENTIER',I,X0,' ',L0,IP0,
  80. & 'TABLE',I0,X0,' ',L1,ITLIAI)
  81.  
  82. icorres ( i )=itliai
  83.  
  84. IF (IERR.NE.0) RETURN
  85. CALL ACCTAB(ITLIAI,'MOT',I0,X0,'SOUSTYPE',L0,IP0,
  86. & 'MOT',I1,X0,MONMOT,L1,IP1)
  87. IF (IERR.NE.0) RETURN
  88. *
  89. * Liaison elementaire
  90. *
  91. IF (MONMOT(1:19).EQ.'LIAISON_ELEMENTAIRE') THEN
  92.  
  93. CMOT=' '
  94. CALL ACCTAB(ITLIAI,'MOT',I0,X0,'TYPE_LIAISON',L0,IP0,
  95. & 'MOT',I1,X0,CMOT,L1,IP1)
  96. IF (IERR.NE.0) RETURN
  97. *
  98. * attention a l'ordre : en dernier les + courts
  99. IF (CMOT(1:21).EQ.'POINT_PLAN_FROTTEMENT') THEN
  100. ITYP = 3
  101. CALL DYN201(I,ITLIAI,ITYP,KTLIAB,NPLB)
  102. IF (IERR.NE.0) RETURN
  103. ELSE IF (CMOT(1:22).EQ.'CERCLE_PLAN_FROTTEMENT') THEN
  104. ITYP = 5
  105. CALL DYN201(I,ITLIAI,ITYP,KTLIAB,NPLB)
  106. IF (IERR.NE.0) RETURN
  107. ELSEIF (CMOT(1:17).EQ.'POINT_PLAN_FLUIDE') THEN
  108. ITYP = 7
  109. CALL DYN201(I,ITLIAI,ITYP,KTLIAB,NPLB)
  110. IF (IERR.NE.0) RETURN
  111. ELSEIF (CMOT(1:10).EQ.'POINT_PLAN') THEN
  112. ITYP = 1
  113. CALL DYN201(I,ITLIAI,ITYP,KTLIAB,NPLB)
  114. IF (IERR.NE.0) RETURN
  115.  
  116. ELSE IF
  117. & (CMOT(1:30).EQ.'POINT_POINT_ROTATION_PLASTIQUE') THEN
  118. ITYP = 50
  119. CALL DYN205(I,ITLIAI,ITYP,KTLIAB,NPLB)
  120. IF (IERR.NE.0) RETURN
  121.  
  122. ELSE IF (CMOT(1:22).EQ.'POINT_POINT_FROTTEMENT') THEN
  123. ITYP = 13
  124. CALL DYN202(I,ITLIAI,ITYP,KTLIAB,NPLB)
  125. IF (IERR.NE.0) RETURN
  126. ELSE IF
  127. & (CMOT(1:33).EQ.'POINT_POINT_DEPLACEMENT_PLASTIQUE') THEN
  128. ITYP = 16
  129. CALL DYN202(I,ITLIAI,ITYP,KTLIAB,NPLB)
  130. IF (IERR.NE.0) RETURN
  131. ELSE IF (CMOT(1:11).EQ.'POINT_POINT') THEN
  132. ITYP = 11
  133. CALL DYN202(I,ITLIAI,ITYP,KTLIAB,NPLB)
  134. IF (IERR.NE.0) RETURN
  135.  
  136. ELSE IF (CMOT(1:23).EQ.'POINT_CERCLE_FROTTEMENT') THEN
  137. ITYP = 23
  138. CALL DYN203(I,ITLIAI,ITYP,KTLIAB,NPLB)
  139. IF (IERR.NE.0) RETURN
  140. ELSE IF (CMOT(1:24).EQ.'CERCLE_CERCLE_FROTTEMENT') THEN
  141. ITYP = 25
  142. CALL DYN203(I,ITLIAI,ITYP,KTLIAB,NPLB)
  143. IF (IERR.NE.0) RETURN
  144. ELSE IF (CMOT(1:19).EQ.'POINT_CERCLE_MOBILE') THEN
  145. ITYP = 33
  146. CALL DYN203(I,ITLIAI,ITYP,KTLIAB,NPLB)
  147. IF (IERR.NE.0) RETURN
  148. ELSE IF (CMOT(1:12).EQ.'POINT_CERCLE') THEN
  149. ITYP = 21
  150. CALL DYN203(I,ITLIAI,ITYP,KTLIAB,NPLB)
  151. IF (IERR.NE.0) RETURN
  152.  
  153. ELSE IF (CMOT(1:23).EQ.'PROFIL_PROFIL_INTERIEUR') THEN
  154. ITYP = 31
  155. CALL DYN204(I,ITLIAI,ITYP,KTLIAB,NPLB)
  156. IF (IERR.NE.0) RETURN
  157. ELSE IF (CMOT(1:23).EQ.'PROFIL_PROFIL_EXTERIEUR') THEN
  158. ITYP = 32
  159. CALL DYN204(I,ITLIAI,ITYP,KTLIAB,NPLB)
  160. IF (IERR.NE.0) RETURN
  161.  
  162. ELSE IF (CMOT(1:22).EQ.'LIGNE_LIGNE_FROTTEMENT') THEN
  163. ITYP = 35
  164. CALL DYN206(I,ITLIAI,ITYP,KTLIAB,NPLB)
  165.  
  166. ELSE IF(CMOT(1:23).EQ.'LIGNE_CERCLE_FROTTEMENT') THEN
  167. ITYP = 37
  168. CALL DYN207(I,ITLIAI,ITYP,KTLIAB,NPLB)
  169.  
  170. ELSE IF (CMOT(1:13).EQ.'PALIER_FLUIDE') THEN
  171. ITYP = 60
  172. CALL DYN208(I,ITLIAI,ITYP,KTLIAB,NPLB)
  173. IF (IERR.NE.0) RETURN
  174.  
  175. ELSE
  176. CALL ERREUR(490)
  177. RETURN
  178. ENDIF
  179. *
  180. * Liaison ...........
  181. *
  182. * ELSE IF (MONMOT(1: ).EQ.' ') THEN
  183. * .......
  184. * .......
  185. *
  186. ELSE
  187. CALL ERREUR(489)
  188. RETURN
  189. ENDIF
  190. 10 CONTINUE
  191. *
  192. *
  193. *
  194. *
  195. * ----- liaisons conditionnelles ?
  196. *
  197. *
  198. DO 11 I = 1,NLIAB
  199. ksi = 0
  200. CALL ACCTAB(ILIB,'ENTIER',I,X0,' ',L0,IP0,
  201. & 'TABLE',I0,X0,' ',L1,ITLIAI)
  202.  
  203. DO 12 j = 1,NLIAB
  204. jtliai = icorres ( j )
  205. monmot = ' '
  206. CALL ACCTAB(ITLIAI,'TABLE',I0,x0,' ',L0,jtliai,
  207. & monmot,I1,X0,CHARRE,L1,IP1)
  208. IF (IERR.NE.0) RETURN
  209. * ------- si on trouve un logique en face d'une table
  210. * de liaison , c'est bon
  211. IF (MONMOT.EQ.'LOGIQUE ') THEN
  212. ksi = ksi + 1
  213. ipalb(i,4) = 1
  214. IF (L1 ) THEN
  215. ipalb (i,4+ksi) = j
  216. ELSE IF (.NOT. L1) THEN
  217. ipalb (i,4+ksi) = -1 * j
  218. ENDIF
  219. ENDIF
  220. 12 CONTINUE
  221. 11 CONTINUE
  222. * --------- fin des conditions
  223.  
  224.  
  225. ***** eventuel message ****
  226.  
  227. IF (IIMPI.EQ.333) THEN
  228. NLIAB = IPALB(/1)
  229. NIPALB = IPALB(/2)
  230. NXPALB = XPALB(/2)
  231. NPLBB = IPLIB(/2)
  232. NPLB = JPLIB(/1)
  233. DO 1000 IN = 1,NLIAB
  234. DO 1002 II = 1,NIPALB
  235. WRITE(IOIMP,*)'DYNE20 : IPALB(',IN,',',II,') =',IPALB(IN,II)
  236. 1002 CONTINUE
  237. DO 1004 IX = 1,NXPALB
  238. WRITE(IOIMP,*)'DYNE20 : XPALB(',IN,',',IX,') =',XPALB(IN,IX)
  239. 1004 CONTINUE
  240. DO 1006 IP = 1,NPLBB
  241. WRITE(IOIMP,*)'DYNE20 : IPLIB(',IN,',',IP,') =',IPLIB(IN,IP)
  242. 1006 CONTINUE
  243. 1000 CONTINUE
  244. DO 1008 IP = 1,NPLB
  245. WRITE(IOIMP,*)'DYNE20 : JPLIB(',IP,') =',JPLIB(IP)
  246. 1008 CONTINUE
  247. ENDIF
  248.  
  249. *
  250. RETURN
  251. END
  252.  
  253.  
  254.  

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