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