Télécharger dyne24.eso

Retour à la liste

Numérotation des lignes :

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

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