38
39
40
41
42
43
44
45
46
47
48
54
55
56
57#include "implicit_f.inc"
58
59
60
61#include "scr06_c.inc"
62#include "scr17_c.inc"
63#include "com01_c.inc"
64#include "com04_c.inc"
65#include "param_c.inc"
66
67
68
69 TYPE(MLAW_TAG_), DIMENSION(NUMMAT), INTENT(INOUT) :: MLAW_TAG
70 CHARACTER(LEN=NCHARTITLE), INTENT(INOUT) :: TITR,TITR1,TITR2
71 INTEGER,INTENT(INOUT):: ITHERM
72 INTEGER,INTENT(INOUT):: ITHERM_FE
73 INTEGER,INTENT(INOUT)::IGEO(NPROPGI,NUMGEO)
74 INTEGER,INTENT(IN) :: ID,IMID,PID,IPID,IGTYP,ILAW
75 INTEGER,INTENT(INOUT) :: MID,JALE_FROM_PROP,JALE_FROM_MAT
76 INTEGER, DIMENSION(NPROPMI,NUMMAT), INTENT(INOUT) :: IPM
77 my_real,
DIMENSION(NPROPM,NUMMAT),
INTENT(INOUT) :: pm
78
79
80
81 INTEGER II,uID1,uID2,MID1,MID2,ILAW1,ILAW2,JALE,JTUR,IMAT,MAT_ID,IGFLU
82 INTEGER JTHE,STAT,CODCONV,CODREZO,IEXPAN
83 INTEGER,EXTERNAL :: NINTRI
84 CHARACTER*5 CHAR_PROP,CHAR_MAT
85
86
87
88 LOGICAL,EXTERNAL :: LOI_FLUID
89
90
91
92
93
94
95
96
97
98
99
100 jale_from_mat = 0
101 IF(imid > 0)THEN
102 jale_from_mat = pm(72,imid)
103
104 IF(jale_from_mat == 1)THEN
105 char_mat = 'ALE '
106 ELSEIF(jale_from_mat == 2)THEN
107 char_mat = 'EULER'
108 ENDIF
109 ELSE
110 jale_from_mat = 0
111 ENDIF
112
113
114 jale_from_prop = 0
115
116 IF(ipid > 0)THEN
117 jale_from_prop = igeo(62,ipid)
118
119 IF(jale_from_prop == 1)THEN
120 char_prop = 'ALE '
121 ELSEIF(jale_from_prop == 2)THEN
122 char_prop = 'EULER'
123 ENDIF
124 ELSE
125 jale_from_prop = 0
126 ENDIF
127
128
129 IF(jale_from_mat > 0 .AND. jale_from_prop > 0)THEN
130 IF(ilaw==77)THEN
131
132 CALL ancmsg(msgid=1120,msgtype=msgerror,anmode=aninfo_blind_1,i1=mid,c1=titr2 )
133 ELSE
134 IF(jale_from_mat /= jale_from_prop)THEN
135 CALL ancmsg(msgid=130,msgtype=msgerror,anmode=aninfo_blind_1,
137 . i2=pid,c2=titr1,c3=char_prop,
138 . i3=mid,c4=titr2,c5=char_mat )
139 ENDIF
140 ENDIF
141 ENDIF
142
143
144
145
146 IF(jale_from_mat > 0 .OR. jale_from_prop > 0)THEN
147 IF (ilaw == 151 .AND. n2d /= 0) THEN
148
149 IF(igtyp/=14.AND.igtyp/=15.AND.igtyp/=1)THEN
151 . msgtype=msgerror,
152 . anmode=aninfo,
154 mid=0
155 pm(1:npropm,imid) = zero
156 ipm(1:npropmi,imid) = 0
157 ENDIF
158 ELSE
159 IF(igtyp/=14.AND.igtyp/=15)THEN
160
161 CALL ancmsg(msgid=42,msgtype=msgerror,anmode=aninfo,i1=
id)
162
163 mid=0
164 pm(1:npropm,imid) = zero
165 ipm(1:npropmi,imid) = 0
166 ENDIF
167 ENDIF
168 ENDIF
169
170
171
172
173
174 IF(jale_from_mat == 0 .AND. jale_from_prop == 0)THEN
175 IF(ilaw==20 .OR. ilaw==37 .OR. ilaw==51 .OR. ilaw==151)THEN
176 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid),ltitr)
177 CALL fretitl2(titr2,ipm(npropmi-ltitr+1,imid),ltitr)
178 CALL ancmsg(msgid=101, msgtype=msgerror,anmode=aninfo,
180 . i2=pid,c2=titr1,
181 . i3=mid,c3=titr2,
182 . i4=ilaw)
183 ENDIF
184 ENDIF
185
186
187
188
189
190
191
192
193 jthe = 0
194 IF(imid > 0) jthe = nint(pm(71,imid))
195 IF( jthe > 0 )THEN
196 IF(jale_from_prop>0 .OR. jale_from_mat>0)THEN
197 itherm = 1
198 ELSE
199 itherm_fe = 1
200 ENDIF
201 ENDIF
202
203
204
205
206 iexpan=0
207 IF(imid > 0) iexpan=ipm(218,imid)
208 IF(iexpan > 0)THEN
209 IF(jale_from_prop>0 .OR. jale_from_mat>0)THEN
210 CALL ancmsg(msgid=1723,msgtype=msgerror,anmode=aninfo,i1=imat,c1=titr)
211 ENDIF
212 ENDIF
213
214
215
216
217 IF(jale_from_prop > 0 .OR. jale_from_mat > 0)THEN
218 IF(imid > 0)THEN
219 mlaw_tag(imid)%L_SSP = 1
220 IF(ilaw == 20)THEN
221 uid1 = nint(pm(21,imid))
222 uid2 = nint(pm(22,imid))
223 mid1 =
nintri(uid1,ipm,npropmi,nummat,1)
224 mid2 =
nintri(uid2,ipm,npropmi,nummat,1)
225 ilaw1 = ipm(2,mid1)
226 ilaw2 = ipm(2,mid2)
227 ilaw2 = ipm(2,mid2)
228 pm(15,mid1) =
ale%UPWIND%UPWMG
229 pm(15,mid2) =
ale%UPWIND%UPWMG
230 pm(16,mid1) =
ale%UPWIND%UPWOG
231 pm(16,mid2) =
ale%UPWIND%UPWOG
232 mlaw_tag(mid1)%L_SSP = 1
233 mlaw_tag(mid2)%L_SSP = 1
234 ENDIF
235 endif
236 ENDIF
237
238
239
240
241 IF(jale_from_prop > 0)THEN
242 IF(ilaw == 11)THEN
243 IF(pm(92,imid) == zero)THEN
244 pm(92,imid) = one
245 ENDIF
246 ENDIF
247 ENDIF
248
249
250
251
252 IF ((jale_from_prop == 0 .AND. jale_from_mat == 0).AND. ilaw/=18 .AND. ilaw/=11) THEN
253 ilag=1
254 ELSEIF(jale_from_prop == 1 .OR. jale_from_mat == 1)THEN
255 iale=1
256 ELSEIF(jale_from_prop == 2 .OR. jale_from_mat == 2)THEN
257 ieuler=1
258 ELSE
259 ilag=1
260 ENDIF
261
262
263
264
265 IF (jale_from_prop /= 0 .OR. jale_from_mat /= 0) THEN
266 pm(15,imid) =
ale%UPWIND%UPWMG
267 pm(16,imid) =
ale%UPWIND%UPWOG
268 ENDIF
269
270
271
272
273 jtur=0
274 IF(imid > 0) jtur = nint(pm(70,imid))
275 IF (ilaw /= 50) iturb =
max(iturb ,jtur)
276
277
278
279
280 codconv=0
281 codrezo=0
282
283
284 IF(jale_from_prop /= 0 .OR. jale_from_mat /= 0)THEN
285 IF(ilaw==1 .OR.
286 . ilaw==2 .OR.
287 . ilaw==3 .OR.
288 . ilaw==4 .OR.
289 . ilaw==5 .OR.
290 . ilaw==6 .OR.
291 . ilaw==7 .OR.
292 . ilaw==8 .OR.
293 . ilaw==9 .OR.
294 . ilaw==10 .OR.
295 . ilaw==11 .OR.
296 . ilaw==13 .OR.
297 . ilaw==16 .OR.
298 . ilaw==17 .OR.
299 . ilaw==18 .OR.
300 . ilaw==20 .OR.
301 . ilaw==21 .OR.
302 . ilaw==22 .OR.
303 . ilaw==23 .OR.
304 . ilaw==26 .OR.
305 . ilaw==29 .OR.
306 . ilaw==30 .OR.
307 . ilaw==31 .OR.
308 . ilaw==36 .OR.
309 . ilaw==37 .OR.
310 . ilaw==41 .OR.
311 . ilaw==44 .OR.
312 . ilaw==46 .OR.
313 . ilaw==47 .OR.
314 . ilaw==49 .OR.
315 . ilaw>=50 )THEN
316
317 codconv = codconv + 11
318
319 ale%GLOBAL%CODV(1) = 01
320 ale%GLOBAL%CODV(2) = 01
321 ENDIF
322 ENDIF
323
324
325 IF(jtur > 0) THEN
326 !local flags
327 codconv = codconv + 1100
328
331 ENDIF
332
333
334 IF(ilaw == 37 .OR. ilaw == 41)THEN
335
336 codconv = codconv + 10000
337
339 ENDIF
340
341
342 IF( (jale_from_prop /= 0 .OR. jale_from_mat /= 0) .AND. (
343 . ilaw == 2 .OR.
344 . ilaw == 3 .OR.
345 . ilaw == 4 .OR.
346 . ilaw == 7 .OR.
347 . ilaw == 8 .OR.
348 . ilaw == 9 .OR.
349 . ilaw == 10 .OR.
350 . ilaw == 16 .OR.
351 . ilaw == 21 .OR.
352 . ilaw == 22 .OR.
353 . ilaw == 23 .OR.
354 . ilaw == 26 .OR.
355 . ilaw == 28 .OR.
356 . ilaw == 29 .OR.
357 . ilaw == 30 .OR.
358 . ilaw == 31 .OR.
359 . ilaw == 36 .OR.
360 . ilaw == 44 .OR.
361 . ilaw == 49 .OR.
362 . ilaw == 97 ) )THEN
363 codrezo=11
364 ENDIF
365
366 IF( (jale_from_prop /= 0 .OR. jale_from_mat /= 0) .AND. ilaw == 1)THEN
367 codrezo=1
368 ENDIF
369
370
371 IF( (jale_from_prop /= 0 .OR. jale_from_mat /= 0) .AND.
alefvm_param%IEnabled == 1)
THEN
372
373
374 codconv = codconv + 11100000
375
376 ale%GLOBAL%CODV(6) = 1
377 ale%GLOBAL%CODV(7) = 1
378 ale%GLOBAL%CODV(8) = 1
379 ENDIF
380
381
382 pm(10,imid)=codconv+em01
383 pm(11,imid)=codrezo+em01
384
385
386
387
388 igflu=0
389 IF(ipid > 0)igflu=igeo(36,ipid)
390
391 IF(
ale%GLOBAL%ICAA /= 0)
THEN
392 IF( jale_from_prop==1 .OR. jale_from_prop==2
393 . .OR. jale_from_mat==1 .OR. jale_from_mat==2 )THEN
395 CALL ancmsg(msgid=37,msgtype=msgwarning,anmode=aninfo_blind_1,
397 . i2=mid ,c2=titr2,
398 . i3=ilaw)
399 ENDIF
400 ENDIF
401 ENDIF
402
403 IF( (igflu==1) .AND. .NOT.(
loi_fluid(ilaw)) .AND. (
ale%GLOBAL%ICAA == 0) .AND. (igtyp == 14) )
THEN
404 CALL ancmsg(msgid=38,msgtype=msgerror,anmode=aninfo_blind_1,
406 . i2=pid ,c2=titr1,
407 . i3=mid ,c3=titr2,
408 . i4=ilaw )
409 ENDIF
410
411
412
413
414
415
416 igflu=0
417 IF(ipid > 0)igflu=igeo(36,ipid)
418
419 IF(
ale%GLOBAL%ICAA /= 0)
THEN
420 IF( jale_from_prop==1 .OR. jale_from_prop==2
421 . .OR. jale_from_mat==1 .OR. jale_from_mat==2 )THEN
423 CALL ancmsg(msgid=37,msgtype=msgwarning,anmode=aninfo_blind_1,
425 . i2=mid ,c2=titr2,
426 . i3=ilaw)
427 ENDIF
428 ENDIF
429 ENDIF
430
431 IF( (igflu==1) .AND. .NOT.(
loi_fluid(ilaw)) .AND. (
ale%GLOBAL%ICAA == 0) .AND. (igtyp == 14) )
THEN
432 CALL ancmsg(msgid=38,msgtype=msgerror,anmode=aninfo_blind_1,
434 . i2=pid ,c2=titr1,
435 . i3=mid ,c3=titr2,
436 . i4=ilaw )
437 ENDIF
438
439
440
441 RETURN
logical function loi_fluid(mln)
type(alefvm_param_), target alefvm_param
integer, parameter nchartitle
integer function nintri(iext, antn, m, n, m1)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)