Télécharger dyne24.eso

Retour à la liste

Numérotation des lignes :

  1. C DYNE24 SOURCE CHAT 05/01/12 23:15:54 5004
  2. SUBROUTINE DYNE24(ITABL,ITLIA,KTRAV,II,NLS,NVAR)
  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. * Dimensionne les variables NLS et NVAR, gestion des demandes de *
  11. * sorties pour les liaisons. *
  12. * *
  13. * Parametres: *
  14. * *
  15. * e ITABL Table definissant les liaisons en sortie. *
  16. * e ITLIA Table definissant toutes les liaisons sur une base. *
  17. * e KTRAV Segment de travail qui va remplir MTRES dans DYNE15 *
  18. * es II Compteur *
  19. * s NLS Nombre de demandes de liaisons en sortie *
  20. * s NVAR Nombre maxi de variables internes de liaisons *
  21. * *
  22. * *
  23. * Auteur, date de cr{ation: *
  24. * *
  25. * Lionel VIVAN, le 2 octobre 1989. *
  26. * *
  27. *--------------------------------------------------------------------*
  28. -INC CCOPTIO
  29. *
  30. SEGMENT,MTRAV
  31. INTEGER ICHRE2(NBLS),MPOLA(NBLS),MNULA(NBLS)
  32. INTEGER MPOLB(NBLS),MNULB(NBLS)
  33. INTEGER IVLIAA(NBLS,NTVAR),INLIAA(NBLS,NTVAR)
  34. INTEGER IVLIAB(NBLS,NTVAR),INLIAB(NBLS,NTVAR)
  35. ENDSEGMENT
  36. *
  37. LOGICAL L0,L1,LVAR
  38. CHARACTER*8 MONMOT,TYPRET,CHARRE
  39. CHARACTER*40 CMOT
  40. *
  41. MTRAV = KTRAV
  42. NLS = 0
  43. NVAR = 0
  44. *
  45. * recherche des liaisons en sortie
  46. *
  47. INDICE = 0
  48. IVAR = 0
  49. 100 CONTINUE
  50. INDICE = INDICE + 1
  51. TYPRET = ' '
  52. CALL ACCTAB(ITLIA,'ENTIER',INDICE,X0,' ',L0,IP0,
  53. & TYPRET,I1,X1,CHARRE,L1,ITTL)
  54. IF (TYPRET.EQ.'TABLE ' .AND. ITTL.NE.0) THEN
  55. TYPRET = ' '
  56. CALL ACCTAB(ITABL,'TABLE',I0,X0,' ',L0,ITTL,
  57. & TYPRET,I1,X1,CHARRE,LVAR,ITVAR)
  58. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR) THEN
  59. NLS = NLS + 1
  60. MNULA(NLS) = INDICE
  61. MPOLA(NLS) = ITTL
  62. CALL ACCTAB(ITTL,'MOT',I0,X0,'TYPE_LIAISON',L0,IP0,
  63. & 'MOT',I1,X1,CMOT,L1,IP1)
  64. IF (CMOT(1:17).EQ.'POINT_PLAN_FLUIDE') THEN
  65. IVAR = 6
  66. NVAR = MAX(NVAR,IVAR)
  67. II = II + 1
  68. ICHRE2(II) = IVAR
  69. IVLIAA(NLS,1) = 1
  70. INLIAA(NLS,1) = 7
  71. IVLIAA(NLS,2) = 1
  72. INLIAA(NLS,2) = 8
  73. IVLIAA(NLS,3) = 1
  74. INLIAA(NLS,3) = 69
  75. IVLIAA(NLS,4) = 1
  76. INLIAA(NLS,4) = 70
  77. IVLIAA(NLS,5) = 1
  78. INLIAA(NLS,5) = 71
  79. IVLIAA(NLS,6) = 1
  80. INLIAA(NLS,6) = 72
  81. *
  82. ELSE IF (CMOT(1:10).EQ.'POINT_PLAN') THEN
  83. MONMOT = ' '
  84. CALL ACCTAB(ITTL,'MOT',I0,X0,'AMORTISSEMENT',L0,IP0,
  85. & MONMOT,I1,XAMO,CHARRE,L1,IP1)
  86. *
  87. IF (MONMOT.EQ.'FLOTTANT') THEN
  88. IVAR = 3
  89. IVLIAA(NLS,3) = 1
  90. INLIAA(NLS,3) = 39
  91. ELSE
  92. IVAR = 2
  93. ENDIF
  94. NVAR = MAX(NVAR,IVAR)
  95. II = II + 1
  96. ICHRE2(II) = IVAR
  97. IVLIAA(NLS,1) = 1
  98. INLIAA(NLS,1) = 15
  99. IVLIAA(NLS,4) = 1
  100. INLIAA(NLS,4) = 7
  101. *
  102. ELSE IF (CMOT(1:16).EQ.'COUPLAGE_VITESSE') THEN
  103. IVAR = 3
  104. NVAR = MAX(NVAR,IVAR)
  105. II = II + 1
  106. ICHRE2(II) = IVAR
  107. IVLIAA(NLS,1) = 1
  108. INLIAA(NLS,1) = 73
  109. IVLIAA(NLS,3) = 1
  110. INLIAA(NLS,3) = 8
  111. IVLIAA(NLS,4) = 1
  112. INLIAA(NLS,4) = 7
  113. *
  114. ELSE IF (CMOT(1:20).EQ.'COUPLAGE_DEPLACEMENT') THEN
  115. IVAR = 2
  116. NVAR = MAX(NVAR,IVAR)
  117. II = II + 1
  118. ICHRE2(II) = IVAR
  119. IVLIAA(NLS,1) = 1
  120. INLIAA(NLS,1) = 74
  121. IVLIAA(NLS,4) = 1
  122. INLIAA(NLS,4) = 7
  123. *
  124. ELSE IF (CMOT(1:11).EQ.'POLYNOMIALE') THEN
  125. IVAR = 1
  126. NVAR = MAX(NVAR,IVAR)
  127. II = II + 1
  128. ICHRE2(II) = IVAR
  129. IVLIAA(NLS,1) = 1
  130. INLIAA(NLS,1) = 77
  131. *
  132. ELSE
  133. CALL ERREUR(490)
  134. RETURN
  135. ENDIF
  136. *
  137. ELSE IF (TYPRET.EQ.'TABLE ' .AND. ITVAR.NE.0) THEN
  138. NLS = NLS + 1
  139. MNULA(NLS) = INDICE
  140. MPOLA(NLS) = ITTL
  141. CALL ACCTAB(ITTL,'MOT',I0,X0,'TYPE_LIAISON',L0,IP0,
  142. & 'MOT',I1,X1,CMOT,L1,IT1)
  143. IVAR = 0
  144. *
  145. IF (CMOT(1:17).EQ.'POINT_PLAN_FLUIDE') THEN
  146. TYPRET = ' '
  147. CALL ACCTAB(ITVAR,'MOT',I0,X0,'DEPLACEMENT',L0,IP0,
  148. & TYPRET,I1,X1,CHARRE,LVAR,IT1)
  149. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN
  150. IVAR = IVAR + 1
  151. IVLIAA(NLS,1) = 1
  152. INLIAA(NLS,1) = 7
  153. ENDIF
  154. TYPRET = ' '
  155. CALL ACCTAB(ITVAR,'MOT',I0,X0,'VITESSE',L0,IP0,
  156. & TYPRET,I1,X1,CHARRE,LVAR,IT1)
  157. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN
  158. IVAR = IVAR + 1
  159. IVLIAA(NLS,2) = 1
  160. INLIAA(NLS,2) = 8
  161. ENDIF
  162. TYPRET = ' '
  163. CALL ACCTAB(ITVAR,'MOT',I0,X0,'MASSE_AJOUTEE',L0,IP0,
  164. & TYPRET,I1,X1,CHARRE,LVAR,IT1)
  165. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN
  166. IVAR = IVAR + 1
  167. IVLIAA(NLS,3) = 1
  168. INLIAA(NLS,3) = 69
  169. ENDIF
  170. TYPRET = ' '
  171. CALL ACCTAB(ITVAR,'MOT',I0,X0,'FORCE_CONVECTION',L0,IP0,
  172. & TYPRET,I1,X1,CHARRE,LVAR,IT1)
  173. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN
  174. IVAR = IVAR + 1
  175. IVLIAA(NLS,4) = 1
  176. INLIAA(NLS,4) = 70
  177. ENDIF
  178. TYPRET = ' '
  179. CALL ACCTAB(ITVAR,'MOT',I0,X0,'FORCE_VISCOSITE',L0,IP0,
  180. & TYPRET,I1,X1,CHARRE,LVAR,IT1)
  181. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN
  182. IVAR = IVAR + 1
  183. IVLIAA(NLS,5) = 1
  184. INLIAA(NLS,5) = 71
  185. ENDIF
  186. TYPRET = ' '
  187. CALL ACCTAB(ITVAR,'MOT',I0,X0,'FORCE_PERTE_DE_CHARGE',
  188. & L0,IP0,TYPRET,I1,X1,CHARRE,LVAR,IT1)
  189. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN
  190. IVAR = IVAR + 1
  191. IVLIAA(NLS,6) = 1
  192. INLIAA(NLS,6) = 72
  193. ENDIF
  194. IF (IVAR.EQ.0) THEN
  195. CALL ERREUR(496)
  196. RETURN
  197. ENDIF
  198. *
  199. ELSE IF (CMOT(1:10).EQ.'POINT_PLAN') THEN
  200. TYPRET = ' '
  201. CALL ACCTAB(ITVAR,'MOT',I0,X0,'DEPLACEMENT',L0,IP0,
  202. & TYPRET,I1,X1,CHARRE,LVAR,IT1)
  203. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN
  204. IVAR = IVAR + 1
  205. IVLIAA(NLS,4) = 1
  206. INLIAA(NLS,4) = 7
  207. ENDIF
  208. TYPRET = ' '
  209. CALL ACCTAB(ITVAR,'MOT',I0,X0,'VITESSE_NORMALE',L0,IP0,
  210. & TYPRET,I1,X1,CHARRE,LVAR,IT1)
  211. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN
  212. IVAR = IVAR + 1
  213. IVLIAA(NLS,3) = 1
  214. INLIAA(NLS,3) = 39
  215. ENDIF
  216. TYPRET = ' '
  217. CALL ACCTAB(ITVAR,'MOT',I0,X0,'FORCE_DE_CHOC',L0,IP0,
  218. & TYPRET,I1,X1,CHARRE,LVAR,IT1)
  219. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN
  220. IVAR = IVAR + 1
  221. IVLIAA(NLS,1) = 1
  222. INLIAA(NLS,1) = 15
  223. ENDIF
  224. IF (IVAR.EQ.0) THEN
  225. CALL ERREUR(496)
  226. RETURN
  227. ENDIF
  228. *
  229. ELSE IF (CMOT(1:16).EQ.'COUPLAGE_VITESSE') THEN
  230. TYPRET = ' '
  231. CALL ACCTAB(ITVAR,'MOT',I0,X0,'DEPLACEMENT',L0,IP0,
  232. & TYPRET,I1,X1,CHARRE,LVAR,IT1)
  233. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN
  234. IVAR = IVAR + 1
  235. IVLIAA(NLS,4) = 1
  236. INLIAA(NLS,4) = 7
  237. ENDIF
  238. TYPRET = ' '
  239. CALL ACCTAB(ITVAR,'MOT',I0,X0,'VITESSE',L0,IP0,
  240. & TYPRET,I1,X1,CHARRE,LVAR,IT1)
  241. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN
  242. IVAR = IVAR + 1
  243. IVLIAA(NLS,3) = 1
  244. INLIAA(NLS,3) = 8
  245. ENDIF
  246. TYPRET = ' '
  247. CALL ACCTAB(ITVAR,'MOT',I0,X0,
  248. & 'FORCE_DE_COUPLAGE_VITESSE',L0,IP0,
  249. & TYPRET,I1,X1,CHARRE,LVAR,IT1)
  250. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN
  251. IVAR = IVAR + 1
  252. IVLIAA(NLS,1) = 1
  253. INLIAA(NLS,1) = 73
  254. ENDIF
  255. IF (IVAR.EQ.0) THEN
  256. CALL ERREUR(496)
  257. RETURN
  258. ENDIF
  259. *
  260. ELSE IF (CMOT(1:20).EQ.'COUPLAGE_DEPLACEMENT') THEN
  261. TYPRET = ' '
  262. CALL ACCTAB(ITVAR,'MOT',I0,X0,'DEPLACEMENT',L0,IP0,
  263. & TYPRET,I1,X1,CHARRE,LVAR,IT1)
  264. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN
  265. IVAR = IVAR + 1
  266. IVLIAA(NLS,4) = 1
  267. INLIAA(NLS,4) = 7
  268. ENDIF
  269. TYPRET = ' '
  270. CALL ACCTAB(ITVAR,'MOT',I0,X0,
  271. & 'FORCE_DE_COUPLAGE_DEPLACEMENT',L0,IP0,
  272. & TYPRET,I1,X1,CHARRE,LVAR,IT1)
  273. IF (TYPRET.EQ.'LOGIQUE ' .AND. LVAR ) THEN
  274. IVAR = IVAR + 1
  275. IVLIAA(NLS,1) = 1
  276. INLIAA(NLS,1) = 74
  277. ENDIF
  278. IF (IVAR.EQ.0) THEN
  279. CALL ERREUR(496)
  280. RETURN
  281. ENDIF
  282. *
  283. ELSE IF (CMOT(1:11).EQ.'POLYNOMIALE') THEN
  284. TYPRET = ' '
  285. CALL ACCTAB(ITVAR,'MOT',I0,X0,'FORCE_POLYNOMIALE',
  286. & L0,IP0,TYPRET,I1,X1,CHARRE,LVAR,IT1)
  287. IF (TYPRET.EQ.'LOGIQUE '.AND.LVAR) THEN
  288. IVAR = IVAR + 1
  289. IVLIAA(NLS,1) = 1
  290. INLIAA(NLS,1) = 77
  291. ENDIF
  292. *
  293. ELSE
  294. CALL ERREUR(490)
  295. RETURN
  296. ENDIF
  297. NVAR = MAX(NVAR,IVAR)
  298. II = II + 1
  299. ICHRE2(II) = IVAR
  300. IF (IIMPI.EQ.333) THEN
  301. WRITE(IOIMP,*)'DYNE24 : ICHRE2(',II,')=',IVAR
  302. ENDIF
  303. ENDIF
  304. GOTO 100
  305. ENDIF
  306. IF (IIMPI.EQ.333) THEN
  307. WRITE(IOIMP,*) 'DYNE24 : NVAR = ',NVAR
  308. WRITE(IOIMP,*) 'DYNE24 : NLS = ',NLS
  309. WRITE(IOIMP,*) 'DYNE24 : IVAR = ',IVAR
  310. ENDIF
  311. *
  312. END
  313.  
  314.  
  315.  
  316.  

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