Télécharger dyne20.eso

Retour à la liste

Numérotation des lignes :

dyne20
  1. C DYNE20 SOURCE BP208322 19/02/25 21:15:59 10120
  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.  
  58. -INC PPARAM
  59. -INC CCOPTIO
  60. *
  61. SEGMENT MTLIAB
  62. INTEGER IPALB(NLIAB,NIPALB),IPLIB(NLIAB,NPLBB),JPLIB(NPLB)
  63. REAL*8 XPALB(NLIAB,NXPALB)
  64. REAL*8 XABSCI(NLIAB,NIP),XORDON(NLIAB,NIP)
  65. ENDSEGMENT
  66. *
  67. SEGMENT icorres( nliab)
  68. *
  69. LOGICAL L1,L0
  70. CHARACTER*40 CMOT,MONMOT,CHARRE
  71. MTLIAB = KTLIAB
  72. NPLB = JPLIB(/1)
  73. NLIAB = IPALB(/1)
  74. segini icorres
  75. *
  76. * Boucle sur le nombre de liaisons
  77. *
  78. II = 0
  79. *
  80. DO 10 I = 1,NLIAB
  81. CALL ACCTAB(ILIB,'ENTIER',I,X0,' ',L0,IP0,
  82. & 'TABLE',I0,X0,' ',L1,ITLIAI)
  83.  
  84. icorres ( i )=itliai
  85.  
  86. IF (IERR.NE.0) RETURN
  87. CALL ACCTAB(ITLIAI,'MOT',I0,X0,'SOUSTYPE',L0,IP0,
  88. & 'MOT',I1,X0,MONMOT,L1,IP1)
  89. IF (IERR.NE.0) RETURN
  90. *
  91. * Liaison elementaire
  92. *
  93. IF (MONMOT(1:19).EQ.'LIAISON_ELEMENTAIRE') THEN
  94.  
  95. CMOT=' '
  96. CALL ACCTAB(ITLIAI,'MOT',I0,X0,'TYPE_LIAISON',L0,IP0,
  97. & 'MOT',I1,X0,CMOT,L1,IP1)
  98. IF (IERR.NE.0) RETURN
  99. *
  100. * attention a l'ordre : en dernier les + courts !!!
  101. IF (CMOT(1:21).EQ.'POINT_PLAN_FROTTEMENT') THEN
  102. ITYP = 3
  103. CALL DYN201(I,ITLIAI,ITYP,KTLIAB,NPLB)
  104. IF (IERR.NE.0) RETURN
  105. ELSE IF (CMOT(1:22).EQ.'CERCLE_PLAN_FROTTEMENT') THEN
  106. ITYP = 5
  107. CALL DYN201(I,ITLIAI,ITYP,KTLIAB,NPLB)
  108. IF (IERR.NE.0) RETURN
  109. ELSEIF (CMOT(1:17).EQ.'POINT_PLAN_FLUIDE') THEN
  110. ITYP = 7
  111. CALL DYN201(I,ITLIAI,ITYP,KTLIAB,NPLB)
  112. IF (IERR.NE.0) RETURN
  113. ELSEIF (CMOT(1:10).EQ.'POINT_PLAN') THEN
  114. ITYP = 1
  115. CALL DYN201(I,ITLIAI,ITYP,KTLIAB,NPLB)
  116. IF (IERR.NE.0) RETURN
  117.  
  118. ELSE IF
  119. & (CMOT(1:30).EQ.'POINT_POINT_ROTATION_PLASTIQUE') THEN
  120. ITYP = 50
  121. CALL DYN205(I,ITLIAI,ITYP,KTLIAB,NPLB)
  122. IF (IERR.NE.0) RETURN
  123.  
  124. ELSE IF (CMOT(1:22).EQ.'POINT_POINT_FROTTEMENT') THEN
  125. ITYP = 13
  126. CALL DYN202(I,ITLIAI,ITYP,KTLIAB,NPLB)
  127. IF (IERR.NE.0) RETURN
  128. ELSE IF
  129. & (CMOT(1:33).EQ.'POINT_POINT_DEPLACEMENT_PLASTIQUE') THEN
  130. ITYP = 16
  131. CALL DYN202(I,ITLIAI,ITYP,KTLIAB,NPLB)
  132. IF (IERR.NE.0) RETURN
  133. ELSE IF (CMOT(1:11).EQ.'POINT_POINT') THEN
  134. ITYP = 11
  135. CALL DYN202(I,ITLIAI,ITYP,KTLIAB,NPLB)
  136. IF (IERR.NE.0) RETURN
  137.  
  138. ELSE IF (CMOT(1:23).EQ.'POINT_CERCLE_FROTTEMENT') THEN
  139. ITYP = 23
  140. CALL DYN203(I,ITLIAI,ITYP,KTLIAB,NPLB)
  141. IF (IERR.NE.0) RETURN
  142. ELSE IF (CMOT(1:24).EQ.'CERCLE_CERCLE_FROTTEMENT') THEN
  143. ITYP = 25
  144. CALL DYN203(I,ITLIAI,ITYP,KTLIAB,NPLB)
  145. IF (IERR.NE.0) RETURN
  146. ELSE IF (CMOT(1:19).EQ.'POINT_CERCLE_MOBILE') THEN
  147. ITYP = 33
  148. CALL DYN203(I,ITLIAI,ITYP,KTLIAB,NPLB)
  149. IF (IERR.NE.0) RETURN
  150. ELSE IF (CMOT(1:12).EQ.'POINT_CERCLE') THEN
  151. ITYP = 21
  152. CALL DYN203(I,ITLIAI,ITYP,KTLIAB,NPLB)
  153. IF (IERR.NE.0) RETURN
  154.  
  155. ELSE IF (CMOT(1:23).EQ.'PROFIL_PROFIL_INTERIEUR') THEN
  156. ITYP = 31
  157. CALL DYN204(I,ITLIAI,ITYP,KTLIAB,NPLB)
  158. IF (IERR.NE.0) RETURN
  159. ELSE IF (CMOT(1:23).EQ.'PROFIL_PROFIL_EXTERIEUR') THEN
  160. ITYP = 32
  161. CALL DYN204(I,ITLIAI,ITYP,KTLIAB,NPLB)
  162. IF (IERR.NE.0) RETURN
  163.  
  164. ELSE IF (CMOT(1:22).EQ.'LIGNE_LIGNE_FROTTEMENT') THEN
  165. ITYP = 35
  166. CALL DYN206(I,ITLIAI,ITYP,KTLIAB,NPLB)
  167.  
  168. ELSE IF(CMOT(1:23).EQ.'LIGNE_CERCLE_FROTTEMENT') THEN
  169. ITYP = 37
  170. CALL DYN207(I,ITLIAI,ITYP,KTLIAB,NPLB)
  171.  
  172. ELSE IF (CMOT(1:13).EQ.'PALIER_FLUIDE') THEN
  173. ITYP = 60
  174. CALL DYN208(I,ITLIAI,ITYP,KTLIAB,NPLB)
  175. IF (IERR.NE.0) RETURN
  176.  
  177. ELSE
  178. CALL ERREUR(490)
  179. RETURN
  180. ENDIF
  181. *
  182. * Liaison ...........
  183. *
  184. * ELSE IF (MONMOT(1: ).EQ.' ') THEN
  185. * .......
  186. * .......
  187. *
  188. ELSE
  189. CALL ERREUR(489)
  190. RETURN
  191. ENDIF
  192. 10 CONTINUE
  193. *
  194. *
  195. *
  196. *
  197. * ----- liaisons conditionnelles ?
  198. *
  199. *
  200. DO 11 I = 1,NLIAB
  201. ksi = 0
  202. CALL ACCTAB(ILIB,'ENTIER',I,X0,' ',L0,IP0,
  203. & 'TABLE',I0,X0,' ',L1,ITLIAI)
  204. * la I^eme liaison est-elle conditionnee par la J^eme
  205. DO 12 j = 1,NLIAB
  206. jtliai = icorres ( j )
  207. monmot = ' '
  208. CALL ACCTAB(ITLIAI,'TABLE',I0,x0,' ',L0,jtliai,
  209. & MONMOT,I1,X0,CHARRE,L1,IP1)
  210. IF (IERR.NE.0) RETURN
  211. * ------- si on trouve un logique en face d'une table
  212. * de liaison , c'est bon
  213. IF (MONMOT.EQ.'LOGIQUE ') THEN
  214. ksi = ksi + 1
  215. if(ipalb(i,4).ge.2) then
  216. CALL ERREUR(905)
  217. return
  218. endif
  219. ipalb(i,4) = 1
  220. IF (L1 ) THEN
  221. ipalb (i,4+ksi) = j
  222. ELSE IF (.NOT. L1) THEN
  223. ipalb (i,4+ksi) = -1 * j
  224. ENDIF
  225. ENDIF
  226. 12 CONTINUE
  227. 11 CONTINUE
  228. * --------- fin des conditions
  229.  
  230.  
  231. ***** eventuel message ****
  232.  
  233. IF (IIMPI.EQ.333) THEN
  234. NLIAB = IPALB(/1)
  235. NIPALB = IPALB(/2)
  236. NXPALB = XPALB(/2)
  237. NPLBB = IPLIB(/2)
  238. NPLB = JPLIB(/1)
  239. DO 1000 IN = 1,NLIAB
  240. DO 1002 II = 1,NIPALB
  241. WRITE(IOIMP,*)'DYNE20 : IPALB(',IN,',',II,') =',IPALB(IN,II)
  242. 1002 CONTINUE
  243. DO 1004 IX = 1,NXPALB
  244. WRITE(IOIMP,*)'DYNE20 : XPALB(',IN,',',IX,') =',XPALB(IN,IX)
  245. 1004 CONTINUE
  246. DO 1006 IP = 1,NPLBB
  247. WRITE(IOIMP,*)'DYNE20 : IPLIB(',IN,',',IP,') =',IPLIB(IN,IP)
  248. 1006 CONTINUE
  249. 1000 CONTINUE
  250. DO 1008 IP = 1,NPLB
  251. WRITE(IOIMP,*)'DYNE20 : JPLIB(',IP,') =',JPLIB(IP)
  252. 1008 CONTINUE
  253. ENDIF
  254.  
  255. *
  256. RETURN
  257. END
  258.  
  259.  
  260.  
  261.  

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