40 USE format_mod, ONLY : fmw_a_i_a, fmw_10i
41
42
43
44#include "implicit_f.inc"
45
46
47
48#include "com04_c.inc"
49#include "kincod_c.inc"
50#include "lagmult.inc"
51#include "param_c.inc"
52#include "scr17_c.inc"
53#include "scr03_c.inc"
54#include "units_c.inc"
55
56
57
58 INTEGER NOM_OPT(,*),PTR_NOPT_RWALL,PTR_NOPT_RBE2,
59 . PTR_NOPT_RBE3
60 INTEGER IKINE(*),NPRW(*), LPRW(*),ITAB(*),KINET(*),
61 . (NNPBY,*), LPBY(*),IRBE2(NRBE2L,*),(*),
62 . IRBE3(NRBE3L,*),LRBE3(*),
63 . INOPT_RWALL,INOPT_RBE2,INOPT_RBE3,ITAGCYC(*)
65 . rwl(nrwlp,*)
66
67
68
69 INTEGER I, J, K, L, N, KK, IKK, IKK2, NK, JWARN, ITYP, NE, NSL,
70 . IK(10), RBWARN, RB2WARN, KRB, NSLRB,
71 . MARQUEUR(8192),
72 . MARQUEURDOUBLE(13),J1,FLAG_IKCOND,MARQ2,MARQM2,
73 . NS,NM,M,IAD,NUN,JJ,NIKRW,IPEN
74 INTEGER, DIMENSION(:), ALLOCATABLE :: NKINDOUBLE,NKIN,IKRW
75 INTEGER ID
76 CHARACTER(LEN=NCHARTITLE) :: TITR
77
78 ALLOCATE(nkindouble(numnod),nkin(numnod),ikrw(numnod))
79 marq2 = 0
80 marqm2 = 0
81
82
83
84 k=0
85 kk=0
86 rbwarn = 0
87 rb2warn = 0
88 DO n=1,nrwall
89
90 jwarn = 0
91 nsl=nprw(n)
92 ityp=nprw(n+3*nrwall)
93 j=0
94 DO l=1,nsl
95 i=lprw(k+l)
96 ikk=iabs(ikine(i))
97 IF(irb(ikk)/=0.OR.itf(ikk)/=0)THEN
98 rbwarn = rbwarn + 1
99 jwarn = jwarn+1
100 IF(irb(ikk)/=0 .AND. marq2 == 0) marq2 = 1
101 IF(itf(ikk)/=0 .AND. marqm2 == 0) marqm2 = 1
102 IF(iwl(ikine(i))==1)ikine(i) = ikine(i) - 4
103
104 ELSE
105 IF (irb2(ikk)/=0) rb2warn = rb2warn + 1
106 j=j+1
107 lprw(kk+j)=lprw(k+l)
108 ENDIF
109 ENDDO
110 k = k+nsl
111 nsl=j
112 kk = kk+nsl
113 nprw(n)=nsl
114 IF(ityp<0)THEN
115 ne=nint(rwl(8,n))
116 DO i=1,ne
117 lprw(kk+i)=lprw(k+i)
118 ENDDO
119 k = k+ne
120 kk = kk+ne
121 ENDIF
122 IF (jwarn>0) THEN
123 id=nom_opt(1,ptr_nopt_rwall+n)
125 . nom_opt(lnopt1-ltitr+1,ptr_nopt_rwall+n),ltitr)
127 . msgtype=msgwarning,
128 . anmode=aninfo_blind_2,
130 . c1=titr,
131 . i2=jwarn)
132 ENDIF
133 ENDDO
134
135
136
137
138
139
140 nun=0
141 DO i=1,nrbe3
142 iad = irbe3(1,i)
143 ipen= irbe3(9,i)
144 IF (ipen>0) cycle
145 nm = irbe3(5,i)
146 DO j =1,nm
147 m = lrbe3(iad+j)
148 id=nom_opt(1,ptr_nopt_rbe3+i)
150 . nom_opt(lnopt1-ltitr+1,ptr_nopt_rbe3+i),ltitr)
151 IF (ikrbe2(ikine(m))==1) THEN
152 IF (ipen<0) THEN
154 . msgtype=msgerror,
155 . anmode=aninfo_blind_1,
157 . c1=titr,
158 . i2=itab(m))
159 RETURN
160 ELSE
162 . msgtype=msgwarning,
163 . anmode=aninfo_blind_1,
165 . c1=titr,
166 . i2=itab(m))
167 irbe3(9,i) = 1
168 END IF
169 ENDIF
170 IF (itf(ikine(m))==1) THEN
171 IF (ipen<0) THEN
173 . msgtype=msgerror,
174 . anmode=aninfo_blind_1,
176 . c1=titr,
177 . i2=itab(m))
178 RETURN
179 ELSE
181 . msgtype=msgwarning,
182 . anmode=aninfo_blind_1,
184 . c1=titr,
185 . i2=itab(m))
186 irbe3(9,i) = 1
187 END IF
188 ENDIF
189 ENDDO
190 ENDDO
191
192
193
194 DO i=1,nrbe2
195 m = irbe2(3,i)
196 id=nom_opt(1,ptr_nopt_rbe2+i)
198 . nom_opt(lnopt1-ltitr+1,ptr_nopt_rbe2+i),ltitr)
199 IF (itf(ikine(m))==1) THEN
201 . msgtype=msgerror,
202 . anmode=aninfo_blind_1,
204 . c1=titr,
205 . i2=itab(m))
206 RETURN
207 ENDIF
208 ENDDO
209
210
211
212 DO i=1,nrbody
213 m=npby(1,i)
214 IF (ikrbe2(ikine(m))==1) THEN
215
216
219 . nom_opt(lnopt1-ltitr+1,i),ltitr)
221 . msgtype=msgerror,
222 . anmode=aninfo_blind_1,
224 . c1=titr,
225 . i2=itab(m))
226 RETURN
227 ENDIF
228 ENDDO
229
230
231
232 DO i=1,nrbody
233 m=npby(1,i)
234 IF (ikrbe3(ikine(m))==1)
THEN ! add here
the case of switching to penalty of rbe3
235 DO n=1,nrbe3
236 nsl= irbe3(3,n)
237 ipen= irbe3(9,n)
238 IF (ipen>0) cycle
239 IF (nsl==m) THEN
240 IF (ipen<0) THEN
243 . nom_opt(lnopt1-ltitr+1,i),ltitr)
245 . msgtype=msgerror,
246 . anmode=aninfo_blind_1,
248 . c1=titr,
249 . i2=itab(m))
250 RETURN
251 ELSE
254 . nom_opt(lnopt1-ltitr+1,ptr_nopt_rbe3+n),ltitr)
256 . msgtype=msgwarning,
257 . anmode=aninfo_blind_1,
259 . c1=titr,
260 . i2=itab(m))
261 irbe3(9,n) = 1
262 END IF
263 END IF
264 END DO
265 END IF
266 ENDDO
267
268
269
270 DO i=1,nrbe2
271 m = irbe2(3,i)
272 DO j =1,nrbody
273 IF(npby(1,j)==m)THEN
274 id=nom_opt(1,ptr_nopt_rbe2+i)
276 . nom_opt(lnopt1-ltitr+1,ptr_nopt_rbe2+i),ltitr)
278 . msgtype=msgerror,
279 . anmode=aninfo_blind_1,
281 . c1=titr,
282 . i2=itab(m))
283 RETURN
284 ENDIF
285 ENDDO
286 ENDDO
287
288
289
290 krb = 0
291 DO n=1,nrbykin
292 nslrb = npby(2,n)
293 krb= krb+nslrb
294 ENDDO
295 DO n=1,nrbylag
296 nslrb = npby(2,n)
297 krb= krb+3*nslrb
298 ENDDO
299 DO n=1,nrbykin
301 CALL fretitl2(titr,nom_opt(lnopt1-ltitr+1,n),ltitr)
302 DO i=1,krb
303 IF(npby(1,n)==lpby(i))THEN
305 . msgtype=msgwarning,
306 . anmode=aninfo_blind_2,
308 . c1=titr,
309 . i2=itab(npby(1,n)))
310 ENDIF
311 ENDDO
312 ENDDO
313
314
315
316 IF (nbcscyc>0) THEN
317 DO i=1,numnod
318 IF (itagcyc(i)==0 .OR. ikine(i)==0) cycle
319
320 IF (irb(ikine(i))/=0 ) THEN
321 k=0
322 DO n=1,nrbykin
323 nsl=npby(2,n)
324
325 IF(npby(7,n)/=0)THEN
327 DO j=1,nsl
328 IF (lpby(j+k)==i) THEN
329 CALL ancmsg(msgid=1754,anmode=aninfo,msgtype=msgerror,
330 . i1=itagcyc(i),i2=itab(i),i3=
id)
331 END IF
332 ENDDO
333 ENDIF
334 k=k+nsl
335 ENDDO
336 END IF
337
338 IF (ikrbe2(ikine(i))/=0 ) THEN
339 DO n=1,nrbe2
340 k = irbe2(1,n)
341 nsl= irbe2(5,n)
343 DO j=1,nsl
344 IF (lrbe2(j+k)==i) THEN
345 CALL ancmsg(msgid=1755,anmode=aninfo,msgtype=msgerror,
346 . i1=itagcyc(i),i2=itab(i),i3=
id)
347 END IF
348 ENDDO
349 ENDDO
350 END IF
351
352 IF (ikrbe3(ikine(i))/=0 ) THEN
353 DO n=1,nrbe3
354 nsl= irbe3(3,n)
356 IF (nsl==i) THEN
357 CALL ancmsg(msgid=1756,anmode=aninfo,msgtype=msgerror,
358 . i1=itagcyc(i),i2=itab(i),i3=
id)
359 END IF
360 ENDDO
361 END IF
362
363 IF (irlk(ikine(i))/=0 ) THEN
364 CALL ancmsg(msgid=1757,anmode=aninfo,msgtype=msgerror,
365 . i1=itagcyc(i),i2=itab(i))
366 END IF
367 ENDDO
368 END IF
369
370 DO i=1,nrbe3
371 nsl= irbe3(3,i)
372 ipen = irbe3(9,i)
373 IF (ipen>0) ikrbe3(ikine(nsl)) = 0
374 END DO
375
376 IF(ipri>=6)THEN
377 WRITE(iout,*)' NODES WITH KINEMATIC CONDITIONS:'
378 WRITE(iout,*)' --------------------------------'
379 k = 0
380 DO i=1,numnod
381 IF(ikine(i)/=0)THEN
382 k = k + 1
383 ik(k) = itab(i)
384 IF(k==10)THEN
385 WRITE(iout,fmt=fmw_10i)(ik(j),j=1,k)
386 k = 0
387 ENDIF
388 ENDIF
389 ENDDO
390 IF(k/=10) WRITE(iout,fmt=fmw_10i)(ik(j),j=1,k)
391 ENDIF
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407 DO i=1,numnod
408 nkin(i) = 0
409 nkindouble(i) = 0
410 ENDDO
411 DO i=1,numnod
412 nkin(i) = ibc(ikine(i))+itf(ikine(i))+iwl(ikine(i))+
413 . irb(ikine(i))+irb2(ikine(i))+
414 . ivf(ikine(i))+irv(ikine(i))+ijo(ikine(i))+
415 . irbm(ikine(i))+ilmult(ikine(i))+irlk(ikine(i))+
416 . ikrbe2(ikine(i))+ikrbe3(ikine(i))+
417 . ibc(ikine(i+3*numnod))+itf(ikine(i+3*numnod))+
418 . iwl(ikine(i+3*numnod))+irb(ikine(i+3*numnod))+
419 . irb2(ikine(i+3*numnod))+ivf(ikine(i+3*numnod))+
420 . irv(ikine(i+3*numnod))+ijo(ikine(i+3*numnod))+
421 . irbm(ikine(i+3*numnod))+ilmult(ikine(i+3*numnod))+
422 . irlk(ikine(i+3*numnod))+ikrbe2(ikine(i+3*numnod))+
423 . ikrbe3(ikine(i+3*numnod))
424 ENDDO
425
426 flag_ikcond = 0
427 DO i=1,8192
428 marqueur(i) = 0
429 ENDDO
430 DO i=1,13
431 marqueurdouble(i) = 0
432 ENDDO
433 DO i=1,numnod
434 IF(nkin(i)>=2)THEN
435 IF (ibc(ikine(i))== 1
436 . .AND. ibc(ikine(i+3*numnod))== 1) THEN
437 marqueurdouble(1) = 1
438 flag_ikcond = 1
439 ENDIF
440 IF (itf(ikine(i))== 1
441 . .AND. itf(ikine(i+3*numnod))== 1) THEN
442 marqueurdouble(2) = 1
443 flag_ikcond = 1
444 ENDIF
445 IF (iwl(ikine(i))== 1
446 . .AND. iwl(ikine(i+3*numnod))== 1) THEN
447 marqueurdouble(3) = 1
448 flag_ikcond = 1
449 ENDIF
450 IF (irb(ikine(i))== 1
451 . .AND. irb(ikine(i+3*numnod))== 1) THEN
452 marqueurdouble(4) = 1
453 flag_ikcond = 1
454 ENDIF
455 IF (irb2(ikine(i))== 1
456 . .AND. irb2(ikine(i+3*numnod))== 1) THEN
457 marqueurdouble(5) = 1
458 flag_ikcond = 1
459 ENDIF
460 IF (ivf(ikine(i))== 1
461 . .AND. ivf(ikine(i+3*numnod))== 1) THEN
462 marqueurdouble(6) = 1
463 flag_ikcond = 1
464 ENDIF
465 IF (irv(ikine(i))== 1
466 . .AND. irv(ikine(i+3*numnod))== 1) THEN
467 marqueurdouble(7) = 1
468 flag_ikcond = 1
469 ENDIF
470 IF (ijo(ikine(i))== 1
471 . .AND. ijo(ikine(i+3*numnod))== 1) THEN
472 marqueurdouble(8) = 1
473 flag_ikcond = 1
474 ENDIF
475 IF (irbm(ikine(i))== 1
476 . .AND. irbm(ikine(i+3*numnod))== 1) THEN
477 marqueurdouble(9) = 1
478 flag_ikcond = 1
479 ENDIF
480 IF (ilmult(ikine(i))== 1
481 . .AND. ilmult(ikine(i+3*numnod))== 1) THEN
482 marqueurdouble(10) = 1
483 flag_ikcond = 1
484 ENDIF
485 IF (irlk(ikine(i))== 1
486 . .AND. irlk(ikine(i+3*numnod))== 1) THEN
487 marqueurdouble(11) = 1
488 flag_ikcond = 1
489 ENDIF
490 IF (ikrbe2(ikine(i))== 1
491 . .AND. ikrbe2(ikine(i+3*numnod))== 1) THEN
492 marqueurdouble(12) = 1
493 flag_ikcond = 1
494 ENDIF
495 IF (ikrbe3(ikine(i))== 1
496 . .AND. ikrbe3(ikine(i+3*numnod))== 1) THEN
497 marqueurdouble(13) = 1
498 flag_ikcond = 1
499 ENDIF
500 ENDIF
501 ENDDO
502
503 nikrw = 0
504 DO i = 1,numnod
505 IF ( ikine(i) /= 0 .AND. ikine(i)/=1 .AND. ikine(i)/=2
506 . .AND. ikine(i)/=4 .AND. ikine(i)/=8 .AND. ikine(i)/=16
507 . .AND. ikine(i)/=32 .AND. ikine(i)/=64
508 . .AND. ikine(i)/=128 .AND. ikine(i)/=256
509 . .AND. ikine(i)/=512 .AND. ikine(i)/=1024
510 . .AND. ikine(i)/=2048 .AND. ikine(i)/=4096
511 . .AND. ikine(i+4*numnod) /= 0 ) THEN
512 IF(iwl(ikine(i))== 1 .AND. irb(ikine(i))== 1
513 . .AND. itf(ikine(i))== 1 )THEN
514 IF (ikine(i)>14) THEN
515 marqueur(ikine(i)) = 3
516 flag_ikcond = 1
517 ELSE
518 marqueur(ikine(i)) = 0
519 ENDIF
520 ELSEIF(iwl(ikine(i))== 1 .AND. irb(ikine(i))== 1)THEN
521 IF (ikine(i)>12) THEN
522 marqueur(ikine(i)) = 2
523 flag_ikcond = 1
524 ELSE
525 marqueur(ikine(i)) = 0
526 ENDIF
527 ELSEIF(iwl(ikine(i))== 1 .AND. itf(ikine(i))== 1)THEN
528 IF (ikine(i)>6) THEN
529 marqueur(ikine(i)) = -2
530 flag_ikcond = 1
531 ELSE
532 marqueur(ikine(i)) = 0
533 ENDIF
534 ELSE
535 marqueur(ikine(i)) = 1
536 flag_ikcond = 1
537 nikrw = nikrw + 1
538 ikrw(nikrw) = itab(i)
539 ENDIF
540 ENDIF
541 ENDDO
542
543 IF (ipri>=6 .AND. flag_ikcond==1) THEN
544 WRITE(iout,*)' '
545 WRITE(iout,*)
546 . 'LIST OF POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS :'
547 WRITE(iout,*)'--------------------------------------------------'
548 WRITE(iout,*)' '
549
550 DO i=1,13
551 IF ( marqueurdouble(i) == 1 )THEN
552 IF ( i == 1) THEN
553 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
554 .ETWEEN'
555 WRITE(iout,*)' SEVERAL BOUNDARY CONDITIONS :'
556 WRITE(iout,*)' '
557 WRITE(iout,*)'NODES :'
558 k = 0
559 DO j = 1,numnod
560 IF (ibc(ikine(j))== 1
561 . .AND. ibc(ikine(j+3*numnod))== 1) THEN
562 k = k + 1
563 ik(k) = itab(j)
564 IF(k==10)THEN
565 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
566 k = 0
567 ENDIF
568 ENDIF
569 ENDDO
570 IF(k/=0)THEN
571 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
572 ENDIF
573 WRITE(iout,*)' '
574 ENDIF
575 IF ( i == 2) THEN
576 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
577 .ETWEEN'
578 WRITE(iout,*)' SEVERAL INTERFACES TYPE 1 2 12 OR 9'
579 WRITE(iout,*)' '
580 WRITE(iout,*)'NODES :'
581 k = 0
582 DO j = 1,numnod
583 IF (itf(ikine(j))== 1
584 . .AND. itf(ikine(j+3*numnod))== 1) THEN
585 k = k + 1
586 ik(k) = itab(j)
587 IF(k==10)THEN
588 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
589 k = 0
590 ENDIF
591 ENDIF
592 ENDDO
593 IF(k/=0)THEN
594 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
595 ENDIF
596 WRITE(iout,*)' '
597 ENDIF
598 IF ( i == 3) THEN
599 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
600 .ETWEEN'
601 WRITE(iout,*)' SEVERAL RIGID WALLS'
602 WRITE(iout,*)' '
603 WRITE(iout,*)'NODES :'
604 k = 0
605 DO j = 1,numnod
606 IF (iwl(ikine(j))== 1
607 . .AND. iwl(ikine(j+3*numnod))== 1) THEN
608 k = k + 1
609 ik(k) = itab(j)
610 IF(k==10)THEN
611 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
612 k = 0
613 ENDIF
614 ENDIF
615 ENDDO
616 IF(k/=0)THEN
617 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
618 ENDIF
619 WRITE(iout,*)' '
620 ENDIF
621 IF ( i == 4 .OR. i == 5) THEN
622 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
623 .ETWEEN'
624 WRITE(iout,*)' SEVERAL RIGID BODIES'
625 WRITE(iout,*)' '
626 WRITE(iout,*)'NODES :'
627 k = 0
628 DO j = 1,numnod
629 IF (irb(ikine(j))== 1
630 . .AND. irb(ikine(j+3*numnod))== 1) THEN
631 k = k + 1
632 ik(k) = itab(j)
633 IF(k==10)THEN
634 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
635 k = 0
636 ENDIF
637 ENDIF
638 ENDDO
639 IF(k/=0)THEN
640 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
641 ENDIF
642 WRITE(iout,*)' '
643 ENDIF
644 IF ( i == 6) THEN
645 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
646 .ETWEEN'
647 WRITE(iout,*)' SEVERAL IMPOSED ACCELERATIONS, IMPOSED DEP
648 .LACEMENTS, IMPOSED VELOCITIES'
649 WRITE(iout,*)' '
650 WRITE(iout,*)'NODES :'
651 k = 0
652 DO j = 1,numnod
653 IF (ivf(ikine(j))== 1
654 . .AND. ivf(ikine(j+3*numnod))== 1) THEN
655 k = k + 1
656 ik(k) = itab(j)
657 IF(k==10)THEN
658 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
659 k = 0
660 ENDIF
661 ENDIF
662 ENDDO
663 IF(k/=0)THEN
664 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
665 ENDIF
666 WRITE(iout,*)' '
667 ENDIF
668 IF ( i == 7) THEN
669 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
670 .ETWEEN'
671 WRITE(iout,*)' SEVERAL RIVETS'
672 WRITE(iout,*)' '
673 WRITE(iout,*)'NODES :'
674 k = 0
675 DO j = 1,numnod
676 IF (irv(ikine(j))== 1
677 . .AND. irv(ikine(j+3*numnod))== 1) THEN
678 k = k + 1
679 ik(k) = itab(j)
680 IF(k==10)THEN
681 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
682 k = 0
683 ENDIF
684 ENDIF
685 ENDDO
686 IF(k/=0)THEN
687 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
688 ENDIF
689 WRITE(iout,*)' '
690 ENDIF
691 IF ( i == 8) THEN
692 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
693 .ETWEEN'
694 WRITE(iout,*)' SEVERAL CYLINDRICAL JOINTS'
695 WRITE(iout,*)' '
696 WRITE(iout,*)'NODES :'
697 k = 0
698 DO j = 1,numnod
699 IF (ijo(ikine(j))== 1
700 . .AND. ijo(ikine(j+3*numnod))== 1) THEN
701 k = k + 1
702 ik(k) = itab(j)
703 IF(k==10)THEN
704 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
705 k = 0
706 ENDIF
707 ENDIF
708 ENDDO
709 IF(k/=0)THEN
710 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
711 ENDIF
712 WRITE(iout,*)' '
713 ENDIF
714 IF ( i == 9) THEN
715 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
716 .ETWEEN'
717 WRITE(iout,*)' SEVERAL IMPOSED BODY VELOCITIES'
718 WRITE(iout,*)' '
719 WRITE(iout,*)'NODES :'
720 k = 0
721 DO j = 1,numnod
722 IF (ilmult(ikine(j))== 1
723 . .AND. ilmult(ikine(j+3*numnod))== 1) THEN
724 k = k + 1
725 ik(k) = itab(j)
726 IF(k==10)THEN
727 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
728 k = 0
729 ENDIF
730 ENDIF
731 ENDDO
732 IF(k/=0)THEN
733 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
734 ENDIF
735 WRITE(iout,*)' '
736 ENDIF
737 IF ( i == 10) THEN
738 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
739 .ETWEEN'
740 WRITE(iout,*)' SEVERAL LAGRANGE MULTIPLIERS'
741 WRITE(iout,*)' '
742 WRITE(iout,*)'NODES :'
743 k = 0
744 DO j = 1,numnod
745 IF (ibc(ikine(j))== 1
746 . .AND. ibc(ikine(j+3*numnod))== 1) THEN
747 k = k + 1
748 ik(k) = itab(j)
749 IF(k==10)THEN
750 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
751 k = 0
752 ENDIF
753 ENDIF
754 ENDDO
755 IF(k/=0)THEN
756 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
757 ENDIF
758 WRITE(iout,*)' '
759 ENDIF
760 IF ( i == 11) THEN
761 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
762 .ETWEEN'
763 WRITE(iout,*)' SEVERAL RIGID LINKS :'
764 WRITE(iout,*)' '
765 WRITE(iout,*)'NODES :'
766 k = 0
767 DO j = 1,numnod
768 IF (irlk(ikine(j))== 1
769 . .AND. irlk(ikine(j+3*numnod))== 1) THEN
770 k = k + 1
771 ik(k) = itab(j)
772 IF(k==10)THEN
773 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
774 k = 0
775 ENDIF
776 ENDIF
777 ENDDO
778 IF(k/=0)THEN
779 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
780 ENDIF
781 WRITE(iout,*)' '
782 ENDIF
783 IF ( i == 12) THEN
784 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
785 .ETWEEN'
786 WRITE(iout,*)' SEVERAL RBE2 :'
787 WRITE(iout,*)' '
788 WRITE(iout,*)'NODES :'
789 k = 0
790 DO j = 1,numnod
791 IF (ikrbe2(ikine(j))== 1
792 . .AND. ikrbe2(ikine(j+3*numnod))== 1) THEN
793 k = k + 1
794 ik(k) = itab(j)
795 IF(k==10)THEN
796 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
797 k = 0
798 ENDIF
799 ENDIF
800 ENDDO
801 IF(k/=0)THEN
802 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
803 ENDIF
804 WRITE(iout,*)' '
805 ENDIF
806 IF ( i == 13) THEN
807 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
808 .ETWEEN'
809 WRITE(iout,*)' SEVERAL RBE3 :'
810 WRITE(iout,*)' '
811 WRITE(iout,*)'NODES :'
812 k = 0
813 DO j = 1,numnod
814 IF (ikrbe3(ikine(j))== 1
815 . .AND. ikrbe3(ikine(j+3*numnod))== 1) THEN
816 k = k + 1
817 ik(k) = itab(j)
818 IF(k==10)THEN
819 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
820 k = 0
821 ENDIF
822 ENDIF
823 ENDDO
824 IF(k/=0)THEN
825 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
826 ENDIF
827 WRITE(iout,*)' '
828 ENDIF
829 ENDIF
830 ENDDO
831
832 DO i=1,8192
833 IF ( marqueur(i) /= 0 )THEN
834 WRITE(iout,*)
835 . '- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS BETWEEN:'
836 DO j=1,abs(marqueur(i))
837
838 IF (j==1 .AND. abs(marqueur(i)) == 2 ) iwl(i)=iwl(i)-1
839 IF (j==1 .AND. abs(marqueur(i)) == 3 ) THEN
840 iwl(i)=iwl(i)-1
841 itf(i) = itf(i) - 1
842 ENDIF
843 IF (j==2 .AND. marqueur(i) == 2 ) THEN
844 WRITE(iout,*)
845 . '- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS BETWEEN:'
846 iwl(i) = iwl(i) + 1
847 irb(i) = irb(i) - 1
848 ENDIF
849 IF (j==2 .AND. marqueur(i) == -2 ) THEN
850 WRITE(iout,*)
851 . '- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS BETWEEN:'
852 iwl(i) = iwl(i) + 1
853 itf(i) = itf(i) - 1
854 ENDIF
855 IF (j==2 .AND. marqueur(i) == 3 ) THEN
856 WRITE(iout,*)
857 . '- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS BETWEEN:'
858 iwl(i) = iwl(i) + 1
859 irb(i) = irb(i) - 1
860 ENDIF
861 IF (j==3 .AND. marqueur(i) == 3 ) THEN
862 WRITE(iout,*)
863 . '- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS BETWEEN:'
864 iwl(i) = iwl(i) - 1
865 itf(i) = itf(i) +1
866 ENDIF
867
868 IF (ibc(i)== 1) THEN
869 WRITE(iout,*)' BOUNDARY CONDITION'
870 ENDIF
871 IF (itf(i)== 1) THEN
872 WRITE(iout,*)' INTERFACE TYPE 1 2 12 OR 9'
873 ENDIF
874 IF (iwl(i)== 1) THEN
875 WRITE(iout,*)' RIGID WALL'
876 ENDIF
877 IF (irb(i)== 1) THEN
878 WRITE(iout,*)' RIGID BODY'
879 ENDIF
880 IF (irb2(i)== 1) THEN
881 WRITE(iout,*)' RIGID BODY'
882 ENDIF
883 IF (ivf(i)== 1) THEN
884 WRITE(iout,*)' IMPOSED ACCELERATION, IMPOSED DISPLACEMENT
885 ., IMPOSED VELOCITY'
886 ENDIF
887 IF (irv(i)== 1) THEN
888 WRITE(iout,*)' RIVET'
889 ENDIF
890 IF (ijo(i)== 1) THEN
891 WRITE(iout,*)' CYLINDRICAL JOINT'
892 ENDIF
893 IF (irbm(i)== 1) THEN
894 WRITE(iout,*)' IMPOSED BODY VELOCITY'
895 ENDIF
896 IF (ilmult(i)== 1) THEN
897 WRITE(iout,*)' LAGRANGE MULTIPLIERS'
898 ENDIF
899 IF (irlk(i)== 1) THEN
900 WRITE(iout,*)' RIGID LINK'
901 ENDIF
902 IF (ikrbe2(i)== 1) THEN
903 WRITE(iout,*)' RBE2'
904 ENDIF
905 IF (ikrbe3(i)== 1) THEN
906 WRITE(iout,*)' RBE3'
907 ENDIF
908 WRITE(iout,*)
909 . ' '
910 WRITE(iout,*)'NODES :'
911 k = 0
912 DO j1 = 1,numnod
913 IF (ikine(j1) == i) THEN
914 k = k + 1
915 ik(k) = itab(j1)
916 IF(k==10)THEN
917 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
918 k = 0
919 ENDIF
920 ENDIF
921 ENDDO
922 IF(k/=0)THEN
923 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
924 ENDIF
925 WRITE(iout,*)' '
926 IF (j==2 .AND.marqueur(i) == 2 )irb(i) = irb(i) + 1
927 IF (j==2 .AND.marqueur(i) == -2 )itf(i) = itf(i) + 1
928 IF (j==3 .AND.marqueur(i) == 3 ) THEN
929 irb(i) = irb(i) + 1
930 iwl(i) = iwl(i) + 1
931 ENDIF
932 ENDDO
933 ENDIF
934 ENDDO
935 ENDIF
936
937 IF(kwarn>0)THEN
938 CALL ancmsg(msgid=312,anmode=aninfo,msgtype=msgwarning,
939 . i1=kwarn)
940 WRITE(iout,*)' '
941 WRITE(iout,*)' '
942
943
944 ENDIF
945
946
947
948 WRITE(iout,*)'SUMMARY OF POSSIBLE INCOMPATIBLE KINEMATIC CONDITION
949 .S :'
950 WRITE(iout,*)'--------------------------------------------------
951 .---'
952 WRITE(iout,*)' '
953 IF (flag_ikcond==0) THEN
954 WRITE(iout,*)'NO TRUE INCOMPATIBLE KINEMATIC CONDITION'
955 IF (marq2 == 1) THEN
956 WRITE(iout,*)' - AFTER SECONDARY NODES OF RIGID BODIES WERE SUPPRE
957 .SSED FROM RIGID WALL(S)'
958 ENDIF
959 IF (marqm2 == 1) THEN
960 WRITE(iout,*)' - AFTER SECONDARY NODES OF INTERFACES TYPE 1,2,12 O
961 .R 9 WERE SUPPRESSED'
962 WRITE(iout,*)' FROM RIGID WALL(S)'
963 ENDIF
964 ENDIF
965
966 DO i=1,13
967 IF ( marqueurdouble(i) == 1 )THEN
968 IF ( i == 1) THEN
969 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
970 .ETWEEN'
971 WRITE(iout,*)' SEVERAL BOUNDARY CONDITIONS'
972 WRITE(iout,*)' '
973 WRITE(iout,*)' '
974 ENDIF
975 IF ( i == 2) THEN
976 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
977 .ETWEEN'
978 WRITE(iout,*)' SEVERAL INTERFACES TYPE 1 2 12 OR 9'
979 WRITE(iout,*)' '
980 WRITE(iout,*)' '
981 ENDIF
982 IF ( i == 3) THEN
983 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
984 .ETWEEN'
985 WRITE(iout,*)' SEVERAL RIGID WALLS'
986 WRITE(iout,*)' '
987 WRITE(iout,*)' '
988 ENDIF
989 IF ( i == 4 .OR. i == 5) THEN
990 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
991 .ETWEEN'
992 WRITE(iout,*)' SEVERAL RIGID BODIES'
993 WRITE(iout,*)' '
994 WRITE(iout,*)' '
995 ENDIF
996 IF ( i == 6) THEN
997 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
998 .ETWEEN'
999 WRITE(iout,*)' SEVERAL IMPOSED ACCELERATIONS, IMPOSED DEP
1000 .LACEMENTS, IMPOSED VELOCITIES'
1001 WRITE(iout,*)' '
1002 WRITE(iout,*)' '
1003 ENDIF
1004 IF ( i == 7) THEN
1005 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
1006 .ETWEEN'
1007 WRITE(iout,*)' SEVERAL RIVETS'
1008 WRITE(iout,*)' '
1009 WRITE(iout,*)' '
1010 ENDIF
1011 IF ( i == 8) THEN
1012 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
1013 .ETWEEN'
1014 WRITE(iout,*)' SEVERAL CYLINDRICAL JOINTS'
1015 WRITE(iout,*)' '
1016 WRITE(iout,*)' '
1017 ENDIF
1018 IF ( i == 9) THEN
1019 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
1020 .ETWEEN'
1021 WRITE(iout,*)' SEVERAL IMPOSED BODY VELOCITIES'
1022 WRITE(iout,*)' '
1023 WRITE(iout,*)' '
1024 ENDIF
1025 IF ( i == 10) THEN
1026 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
1027 .ETWEEN'
1028 WRITE(iout,*)' SEVERAL LAGRANGE MULTIPLIERS'
1029 WRITE(iout,*)' '
1030 WRITE(iout,*)' '
1031 ENDIF
1032 IF ( i == 11) THEN
1033 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
1034 .ETWEEN'
1035 WRITE(iout,*)' SEVERAL RIGID LINKS'
1036 WRITE(iout,*)' '
1037 WRITE(iout,*)' '
1038 ENDIF
1039 IF ( i == 12) THEN
1040 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
1041 .ETWEEN'
1042 WRITE(iout,*)' SEVERAL RBE2'
1043 WRITE(iout,*)' '
1044 WRITE(iout,*)' '
1045 ENDIF
1046 IF ( i == 13) THEN
1047 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
1048 .ETWEEN'
1049 WRITE(iout,*)' SEVERAL RBE3'
1050 WRITE(iout,*)' '
1051 WRITE(iout,*)' '
1052 ENDIF
1053 ENDIF
1054 ENDDO
1055
1056 DO i=1,8192
1057 IF ( marqueur(i) /= 0 )THEN
1058 WRITE(iout,*)
1059 . '- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS BETWEEN:'
1060 DO j=1,abs(marqueur(i))
1061 IF (j==1 .AND. abs(marqueur(i)) == 2 ) iwl(i)=iwl(i)-1
1062 IF (j==1 .AND. abs(marqueur(i)) == 3 ) THEN
1063 iwl(i )= iwl(i) - 1
1064 itf(i) = itf(i) - 1
1065 ENDIF
1066 IF (j==2 .AND. marqueur(i) == 2 ) THEN
1067 WRITE(iout,*)
1068 . '- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS BETWEEN:'
1069 iwl(i) = iwl(i) + 1
1070 irb(i) = irb(i) - 1
1071 ENDIF
1072 IF (j==2 .AND. marqueur(i) == -2 ) THEN
1073 WRITE(iout,*)
1074 . '- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS BETWEEN:'
1075 iwl(i) = iwl(i) + 1
1076 itf(i) = itf(i) - 1
1077 ENDIF
1078 IF (j==2 .AND. marqueur(i) == 3 ) THEN
1079 WRITE(iout,*)
1080 . '- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS BETWEEN:'
1081 iwl(i) = iwl(i) + 1
1082 irb(i) = irb(i) - 1
1083 ENDIF
1084 IF (j==3 .AND. marqueur(i) == 3 ) THEN
1085 WRITE(iout,*)
1086 . '- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS BETWEEN:'
1087 iwl(i) = iwl(i) - 1
1088 itf(i) = itf(i) + 1
1089 ENDIF
1090
1091 IF (ibc(i)== 1) THEN
1092 WRITE(iout,*)' BOUNDARY CONDITION'
1093 ENDIF
1094 IF (itf(i)== 1) THEN
1095 WRITE(iout,*)' INTERFACE TYPE 1 2 12 OR 9'
1096 ENDIF
1097 IF (iwl(i)== 1) THEN
1098 WRITE(iout,*)' RIGID WALL'
1099 ENDIF
1100 IF (irb(i)== 1) THEN
1101 WRITE(iout,*)' RIGID BODY'
1102 ENDIF
1103 IF (irb2(i)== 1) THEN
1104 WRITE(iout,*)' RIGID BODY'
1105 ENDIF
1106 IF (ivf(i)== 1) THEN
1107 WRITE(iout,*)' IMPOSED ACCELERATION, IMPOSED DISPLACEMENT
1108 ., IMPOSED VELOCITY'
1109 ENDIF
1110 IF (irv(i)== 1) THEN
1111 WRITE(iout,*)' RIVET'
1112 ENDIF
1113 IF (ijo(i)== 1) THEN
1114 WRITE(iout,*)' CYLINDRICAL JOINT'
1115 ENDIF
1116 IF (irbm(i)== 1) THEN
1117 WRITE(iout,*)' IMPOSED BODY VELOCITY'
1118 ENDIF
1119 IF (ilmult(i)== 1) THEN
1120 WRITE(iout,*)' LAGRANGE MULTIPLIERS'
1121 ENDIF
1122 IF (irlk(i)== 1) THEN
1123 WRITE(iout,*)' RIGID LINK'
1124 ENDIF
1125 IF (ikrbe2(i)== 1) THEN
1126 WRITE(iout,*)' RBE2'
1127 ENDIF
1128 IF (ikrbe3(i)== 1) THEN
1129 WRITE(iout,*)' RBE3'
1130 ENDIF
1131 IF (j==2 .AND.marqueur(i) == 2 )irb(i) = irb(i) + 1
1132 IF (j==2 .AND.marqueur(i) == -2 )itf(i) = itf(i) + 1
1133 IF (j==3 .AND.marqueur(i) == 3 ) THEN
1134 irb(i) = irb(i) + 1
1135 iwl(i) = iwl(i) + 1
1136 ENDIF
1137 IF(kwarn>0.AND.ipri>=3)THEN
1138 WRITE(iout,*)'NODES :'
1139 WRITE(iout,fmt=fmw_10i)(ikrw(l),l=1,nikrw)
1140 ENDIF
1141 WRITE(iout,*)' '
1142 WRITE(iout,*)' '
1143 ENDDO
1144 ENDIF
1145 ENDDO
1146
1147 nun=0
1148 DO i=1,nrbe3
1149 ipen = irbe3(9,i)
1150 IF (ipen>0) nun = nun + 1
1151 IF (ipen <0) irbe3(9,i) =0
1152 END DO
1153 IF (nun>0) THEN
1154 WRITE(iout,'(/I8,X,A)')nun,'OF RBE3 HAVE BEEN SWITCHED TO PENALTY METHOD'
1155 ENDIF
1156
1157 DO i=1,numnod
1158
1159
1160 kinet(i)=ikine(i)
1161 ENDDO
1162 DEALLOCATE(nkindouble,nkin,ikrw)
1163
1164
1165
1166
1167
1168
1169 RETURN
1170
1171
1172
1173 jwarn = 0
1174 DO 100 i=1,numnod
1175 nk = ibc(ikine(i))+itf(ikine(i))+iwl(ikine(i))+
1176 . irb(ikine(i))+irb2(ikine(i))+
1177 . ivf(ikine(i))+irv(ikine(i))+ijo(ikine(i))
1178 IF(nk>=2)THEN
1179 jwarn = jwarn+1
1180 WRITE(iout,*)
1181 . ' -',nk,' KINEMATIC CONDITIONS ON NODE',itab(i),':'
1182 IF(ibc(ikine(i))==1) WRITE(iout,*)
1183 . ' - BOUNDARY CONDITION'
1184 IF(itf(ikine(i))==1) WRITE(iout,*)
1185 . ' - INTERFACE TYPE 1 2 12 OR 9'
1186 IF(iwl(ikine(i))==1) WRITE(iout,*)
1187 . ' - RIGID WALL'
1188 IF(irb(ikine(i))==1) WRITE(iout,*)
1189 . ' - RIGID BODY'
1190 IF(irb2(ikine(i))==1) WRITE(iout,*)
1191 . ' - RIGID BODY'
1192 IF(ivf(ikine(i))==1) WRITE(iout,*)
1193 . ' - FIXED VELOCITY'
1194 IF(irv(ikine(i))==1) WRITE(iout,*)
1195 . ' - RIVET'
1196 IF(ijo(ikine(i))==1) WRITE(iout,*)
1197 . ' - CYLINDRICAL JOINT'
1198 IF(irbm(ikine(i))==1) WRITE(iout,*)
1199 . ' - IMPOSED BODY VELOCITY'
1200 IF(ilmult(ikine(i))==1) WRITE(iout,*)
1201 . ' - LAGRANGE MULTIPLIERS'
1202 ENDIF
1203 100 CONTINUE
1204
1205 iwarn = iwarn + jwarn
1206 IF(jwarn/=0)THEN
1207 WRITE(istdo,'(A,I8,A)') ' ** WARNING',jwarn,
1208 . ' NODES WITH INCOMPATIBLE KINEMATIC CONDITIONS'
1209 WRITE(iout,fmt=fmw_a_i_a) ' ** WARNING',jwarn,
1210 . ' NODES WITH INCOMPATIBLE KINEMATIC CONDITIONS'
1211 ENDIF
1212
1213 RETURN
end diagonal values have been computed in the(sparse) matrix id.SOL
integer, parameter nchartitle
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)