231
232
233
236
237
238
239#include "implicit_f.inc"
240#include "comlock.inc"
241
242
243
244#include "mvsiz_p.inc"
245
246
247
248#include "parit_c.inc"
249#include "task_c.inc"
250#include "sms_c.inc"
251
252
253
254 INTEGER JLT, NIN, NOINT, CS_LOC(*),
255 . N1(*), N2(*), M1(*), M2(*),
256 . NSMS(*), ISKYI_SMS(LSKYI_SMS,*), NRTS, IBM(*)
258 . hs1(*),hs2(*),hm1(*),hm2(*),stif(*), mskyi_sms(*),
259 . k1(*), k2(*), k3(*), k4(*),
260 . c1(*), c2(*), c3(*), c4(*)
261 INTEGER, INTENT(IN) :: EDGE_ID(4*MVSIZ,2)
262
263
264
265 INTEGER I, IG, NISKYL1, NISKYL, NN
267 . mas1, mas2, mas3, mas4, dts
268
269
270 niskyl1 = 0
271 DO i=1,jlt
272 IF(nsms(i)==0.OR.stif(i)==zero) cycle
273 IF (hm1(i)/=zero) niskyl1 = niskyl1 + 2
274 IF (hm2(i)/=zero) niskyl1 = niskyl1 + 2
275 IF (hm1(i)/=zero.AND.ibm(i)>=0) niskyl1 = niskyl1 + 2
276 IF (hm2(i)/=zero.AND.ibm(i)>=0) niskyl1 = niskyl1 + 2
277 ENDDO
278#include "lockon.inc"
279 niskyl = nisky_sms
280 nisky_sms = nisky_sms + niskyl1
281#include "lockoff.inc"
282
283 IF (niskyl+niskyl1 > lskyi_sms) THEN
284 CALL ancmsg(msgid=26,anmode=aninfo)
286 ENDIF
287
288 DO i=1,jlt
289 IF(nsms(i)==0.OR.stif(i)==zero) cycle
290
291 IF(nsms(i)>0)THEN
292 dts = dtmins/dtfacs
293 ELSE
294 dts = dtmins_int/dtfacs_int
295 END IF
296
297 mas1= half * dts * ( dts * k1(i) + c1(i) )
298 mas2= half * dts * ( dts * k2(i) + c2(i) )
299 mas3= half * dts * ( dts * k3(i) + c3(i) )
300 mas4= half * dts * ( dts * k4(i) + c4(i) )
301
302 IF(cs_loc(i)<=nrts) THEN
303 IF(hm1(i)/=zero)THEN
304 niskyl=niskyl+1
305 mskyi_sms(niskyl)=
max(mas1,mas3)
306
307 iskyi_sms(niskyl,2)=m1(i)
308 iskyi_sms(niskyl,3)=ispmd+1
309 niskyl=niskyl+1
310 mskyi_sms(niskyl)=
max(mas2,mas3)
311 iskyi_sms(niskyl,1)=n2(i)
312 iskyi_sms(niskyl,2)=m1(i)
313 iskyi_sms(niskyl,3)=ispmd+1
314 END IF
315 IF(hm1(i)/=zero.AND.ibm(i)>=0)THEN
316 niskyl=niskyl+1
317 mskyi_sms(niskyl)=
max(mas1
318 iskyi_sms(niskyl,1)=n1(i)
319 iskyi_sms(niskyl,2)=m1(i)
320 iskyi_sms(niskyl,3)=ispmd+1
321 niskyl=niskyl+1
322 mskyi_sms(niskyl)=
max(mas2,mas3)
323 iskyi_sms(niskyl,1)=n2(i)
324 iskyi_sms(niskyl,2)=m1(i)
325 iskyi_sms(niskyl,3)=ispmd+1
326 END IF
327 IF(hm2(i)/=zero)THEN
328 niskyl=niskyl+1
329 mskyi_sms(niskyl)=
max(mas1
330 iskyi_sms(niskyl,1)=n1(i)
331 iskyi_sms(niskyl,2)=m2(i)
332 iskyi_sms(niskyl,3)=ispmd+1
333 niskyl=niskyl+1
334 mskyi_sms(niskyl)=
max(mas2,mas4)
335 iskyi_sms(niskyl,1)=n2(i)
336 iskyi_sms(niskyl,2)=m2(i)
337 iskyi_sms(niskyl,3)=ispmd+1
338 END IF
339 IF(hm2(i)/=zero.AND.ibm(i)>=0)THEN
340 niskyl=niskyl+1
341 mskyi_sms(niskyl)=
max(mas1,mas4)
342 iskyi_sms(niskyl,1)=n1(i)
343 iskyi_sms(niskyl,2)=m2(i)
344 iskyi_sms(niskyl,3)=ispmd+1
345 niskyl=niskyl+1
346 mskyi_sms(niskyl)=
max(mas2,mas4)
347 iskyi_sms(niskyl,1)=n2(i)
348 iskyi_sms(niskyl,2)=m2(i)
349 iskyi_sms(niskyl,3)=ispmd+1
350 END IF
351 ELSE
352 IF(hm1(i)/=zero)THEN
353 niskyl=niskyl+1
354 mskyi_sms(niskyl)=
max(mas1,mas3)
355 iskyi_sms(niskyl,1)=
nodamsfie(nin)%P(n1(i))
356 iskyi_sms(niskyl,2)=m1(i)
358 niskyl=niskyl+1
359 mskyi_sms(niskyl)=
max(mas2,mas3)
360 iskyi_sms(niskyl,1)=
nodamsfie(nin)%P(n2(i))
361 iskyi_sms(niskyl,2)=m1(i)
363 END IF
364 IF(hm1(i)/=zero.AND.ibm(i)>=0)THEN
365 niskyl=niskyl+1
366 mskyi_sms(niskyl)=
max(mas1,mas3)
367 iskyi_sms(niskyl,1)=
nodamsfie(nin)%P(n1(i))
368 iskyi_sms(niskyl,2)=m1(i)
370 niskyl=niskyl+1
371 mskyi_sms(niskyl)=
max(mas2,mas3)
372 iskyi_sms(niskyl,1)=
nodamsfie(nin)%P(n2(i))
373 iskyi_sms(niskyl,2)=m1(i)
375 END IF
376 IF(hm2(i)/=zero)THEN
377 niskyl=niskyl+1
378 mskyi_sms(niskyl)=
max(mas1,mas4)
379 iskyi_sms(niskyl,1)=
nodamsfie(nin)%P(n1(i))
380 iskyi_sms(niskyl,2)=m2(i)
382 niskyl=niskyl+1
383 mskyi_sms(niskyl)=
max(mas2,mas4)
385 iskyi_sms(niskyl,2)=m2(i)
387 END IF
388 IF(hm2(i)/=zero.AND.ibm(i)>=0)THEN
389 niskyl=niskyl+1
390 mskyi_sms(niskyl)=
max(mas1,mas4)
391 iskyi_sms(niskyl,1)=
nodamsfie(nin)%P(n1(i))
392 iskyi_sms(niskyl,2)=m2(i)
394 niskyl=niskyl+1
395 mskyi_sms(niskyl)=
max(mas2,mas4)
396 iskyi_sms(niskyl,1)=
nodamsfie(nin)%P(n2(i))
397 iskyi_sms(niskyl,2)=m2(i)
399 END IF
400 END IF
401 ENDDO
402
403 RETURN