35 SUBROUTINE rbyonf(IPARG ,IPARI ,MS ,IN ,
36 2 IXS ,IXQ ,IXC ,IXT ,IXP ,
37 3 IXR ,SKEW ,ITAB ,ITABM1 ,ISKWN ,
38 4 NPBY ,ONOF ,NRBYNF,ITAG ,LPBY ,
39 5 RBY ,X ,V ,VR ,IXTG ,
40 6 IGRV ,IBGR ,WEIGHT,FR_RBY2,PARTSAV,
41 7 IPART ,ELBUF_TAB,ICFIELD,LCFIELD,TAGSLV_RBY)
46 use element_mod ,
only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
50#include "implicit_f.inc"
63 INTEGER IPARG(NPARG,*), IPARI(*), IXS(NIXS,*), IXQ(NIXQ,*),
64 . IXC(NIXC,*), IXT(NIXT,*), IXP(NIXP,*), IXR(NIXR,*),
65 . ITAB(*), ITABM1(*),IGRV(NIGRV,*),IBGR(*),IPART(*),
66 . ISKWN(LISKN,*), NPBY(NNPBY,*),ITAG(*),LPBY(*), IXTG(NIXTG,*),
67 . WEIGHT(*), FR_RBY2(*), ICFIELD(SIZFIELD,*), LCFIELD(*), TAGSLV_RBY(*)
68 INTEGER ONOF,NRBYNF,PRI_OFF
71 . skew(lskew,*),ms(*),in(*),rby(nrby,*),x(3,*),
72 . v(3,*),vr(3,*),partsav(*)
73 TYPE(elbuf_struct_),
DIMENSION(NGROUP) :: ELBUF_TAB
77 INTEGER I, J ,ITEMP(10),K, N,,NN,IAD,ONOF1,ISENS,IACTI,
78 . ONFELT,K1,K2,K3,K4,K5,K6,K7
82 k1=1+lipart1*npart+2*9*npart
101 IF(isens==0.AND.iacti==1.AND.npby(1,n)>0)
102 . itag(npby(1,n)+numnod)=n
106 READ(iin,
'(10I10)')(itemp(j),j=1,10)
108 IF(itemp(j)==0)
GOTO 120
112 IF(itemp(j)==itab(npby(1,n)))
GOTO 110
120 IF(n/=0) n = n*weight(npby(1,n))
132 .
WRITE(iout,
'(/A,I9,A)')
' RIGID BODY:',itemp(j),
' SET OFF'
135 .
WRITE(iout,
'(/A,I9,A)')
' RIGID BODY:',itemp(j),
' SET ON'
157 IF(onof==1.AND.npby(7,n)/=0) onof1 = -1
162 1 iparg ,ipari ,ms ,in ,
163 2 ixs ,ixq ,ixc ,ixt ,ixp ,
164 3 ixr ,skew ,itab ,itabm1 ,iskwn ,
165 4 npby(1,n),onof1 ,itag ,lpby(k) ,
166 5 x ,v ,vr ,rby(1,n),
167 6 ixtg ,npby ,rby ,lpby ,0 ,
168 7 fr_rby2 ,n ,onfelt ,weight ,partsav ,
169 8 ipart(k3),npby(2,n) ,elbuf_tab,pri_off)
177 tagslv_rby(1:numnod)=0
185 tagslv_rby(lpby(i+k))=n
196 IF(tagslv_rby(n) /= 0)
THEN
209 IF(tagslv_rby(n) /= 0)lcfield(iad+i-1) = -n
227 2 IXS ,IXQ ,IXC ,IXT ,IXP ,
228 3 IXR ,SKEW ,ITAB ,ITABM1,ISKWN,
229 4 NPBY ,ITAG ,LPBY ,FSKY ,NSENSOR,
230 5 RBY ,X ,V ,VR ,IXTG ,
231 6 IGRV ,IBGR ,SENSOR_TAB,A ,AR ,
232 7 FSAV,STIFN,STIFR ,FANI ,WEIGHT,
233 8 DMAST,DINERT,BUFSF,FR_RBY2,PARTSAV,
234 9 IPART ,ELBUF_TAB,ICFIELD,LCFIELD,TAGSLV_RBY)
240 use element_mod ,
only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
244#include "implicit_f.inc"
248#include "com01_c.inc"
249#include "com04_c.inc"
250#include "com08_c.inc"
251#include "param_c.inc"
252#include "units_c.inc"
254#include "parit_c.inc"
255#include "scr17_c.inc"
259 INTEGER ,
INTENT(IN) :: NSENSOR
260 INTEGER IPARG(NPARG,*), IPARI(*), IXS(NIXS,*), IXQ(NIXQ,*),
261 . IXC(NIXC,*), IXT(NIXT,*), IXP(NIXP,*), IXR(NIXR,*),
262 . ITAB(*), ITABM1(*),IGRV(NIGRV,*),IBGR(*),
263 . ISKWN(LISKN,*), NPBY(NNPBY,*),ITAG(*),LPBY(*), IXTG(NIXTG,*),
264 . WEIGHT(*), IPART(*), FR_RBY2(3,*), ICFIELD(SIZFIELD,*), LCFIELD(*), TAGSLV_RBY(*)
267 . SKEW(LSKEW,*),MS(*),IN(*),RBY(NRBY,*),X(3,*),
268 . V(3,*),VR(3,*),FSKY(*), A(3,*) ,AR(3,*),
269 . FSAV(NTHVKI,*), STIFN(*),STIFR(*),FANI(3,*),
270 . DMAST, DINERT, BUFSF(*),PARTSAV(*)
271 TYPE(ELBUF_STRUCT_),
DIMENSION(NGROUP) :: ELBUF_TAB
272 TYPE(SENSOR_STR_) ,
DIMENSION(NSENSOR) ,
INTENT(IN) :: SENSOR_TAB
276 INTEGER I ,K, N,NSL,NN,IAD,ONOF,ONOF1,ISENS,IACTI,
279 . ONFELT,K1,K2,K3,K4,K5,K6,K7,IFAIL,ELT_ACTIV,PRI_OFF
290 k1=1+lipart1*npart+2*9*npart
313 IF(isens==0 .AND. iacti==1 .AND. npby(1,n)>0)
314 . itag(npby(1,n)+numnod)=n
328 IF(isens/=0 .AND. (ifail/=1 .OR. crit < one))
THEN
329 IF (iacti==0 .AND. tt <= sensor_tab(isens)%TSTART)
THEN
335 WRITE(iout,
'(/A,I9,A)')
' RIGID BODY:',
336 . npby(6,n),
' SET ON'
337 WRITE(istdo,
'(/A,I9,A)')
' RIGID BODY:',
344 CALL rbypid( iparg ,ipari ,ms ,in ,
345 2 ixs ,ixq ,ixc ,ixt ,ixp ,
346 3 ixr ,skew ,itab ,itabm1 ,iskwn ,
347 4 npby(1,n),onof ,itag ,lpby(k) ,
348 5 x ,v ,vr ,rby(1,n),
349 6 ixtg ,npby ,rby ,lpby ,1 ,
350 7 fr_rby2 ,n ,onfelt,weight ,partsav ,
351 8 ipart(k3),npby(2,n) ,elbuf_tab,pri_off)
354 ELSEIF (iacti>1 .AND. tt <= sensor_tab(isens)%TSTART)
THEN
362 CALL rbypid( iparg ,ipari ,ms ,in ,
363 2 ixs ,ixq ,ixc ,ixt ,ixp ,
364 3 ixr ,skew ,itab ,itabm1 ,iskwn ,
365 4 npby(1,n),onof ,itag ,lpby(k) ,
366 5 x ,v ,vr ,rby(1,n),
367 6 ixtg ,npby ,rby ,lpby ,1 ,
368 7 fr_rby2 ,n ,onfelt,weight ,partsav ,
369 8 ipart(k3),npby(2,n) ,elbuf_tab,pri_off)
375 IF(onfelt==0.AND.iparit/=0)
THEN
390 IF(isens/=0 .AND. (ifail/=1 .OR. crit < one) )
THEN
391 IF (iacti == 1 .AND. tt > sensor_tab(isens)%TSTART)
THEN
396 WRITE(iout,
'(/A,I9,A)')
' RIGID BODY:',
397 . npby(6,n),
' WILL BE SET OFF WITHIN 2 CYCLES'
398 WRITE(istdo,
'(/A,I9,A)')
' RIGID BODY:',
399 . npby(6,n),
' WILL BE SET OFF WITHIN 2 CYCLES'
405 CALL rbypid( iparg ,ipari ,ms ,in ,
406 2 ixs ,ixq ,ixc ,ixt ,ixp ,
407 3 ixr ,skew ,itab ,itabm1 ,iskwn ,
408 4 npby(1,n),onof ,itag ,lpby(k) ,
409 5 x ,v ,vr ,rby(1,n),
410 6 ixtg ,npby ,rby ,lpby ,1 ,
411 7 fr_rby2 ,n ,onfelt,weight ,partsav ,
412 8 ipart(k3),npby(2,n) ,elbuf_tab, pri_off)
416 WRITE(iout,
'(/A,I9,A)')
' RIGID BODY:',
417 . npby(6,n),
' SET OFF'
418 WRITE(istdo,
'(/A,I9,A)')
' RIGID BODY:',
425 CALL rbypid( iparg ,ipari ,ms ,in ,
426 2 ixs ,ixq ,ixc ,ixt ,ixp ,
427 3 ixr ,skew ,itab ,itabm1 ,iskwn ,
428 4 npby(1,n),onof ,itag ,lpby(k) ,
429 5 x ,v ,vr ,rby(1,n),
430 6 ixtg ,npby ,rby ,lpby ,1 ,
431 7 fr_rby2 ,n ,onfelt,weight ,partsav ,
432 8 ipart(k3),npby(2,n) ,elbuf_tab, pri_off)
443 WRITE(iout,
'(/A,I9,A)')
' RIGID BODY:',
444 . npby(6,n),
' SET OFF'
445 WRITE(istdo,
'(/A,I9,A)')
' RIGID BODY:',
452 CALL rbypid( iparg ,ipari ,ms ,in ,
453 2 ixs ,ixq ,ixc ,ixt ,ixp ,
454 3 ixr ,skew ,itab ,itabm1 ,iskwn ,
455 4 npby(1,n),onof ,itag ,lpby(k) ,
456 5 x ,v ,vr ,rby(1,n),
457 6 ixtg ,npby ,rby ,lpby ,1 ,
458 7 fr_rby2 ,n ,onfelt,weight ,partsav ,
477 IF(iacti >= 1.AND.ifail == 1.AND.crit >= one)
THEN
483 WRITE(iout,
'(/A,I9,A)')
' RIGID BODY FAILURE : RIGID BODY:',
484 . npby(6,n),
' WILL BE SET OFF WITHIN 2 CYCLES'
485 WRITE(istdo,
'(/A,I9,A)')
' RIGID BODY FAILURE : RIGID BODY:',
486 . npby(6,n),
' WILL BE SET OFF WITHIN 2 CYCLES'
492 CALL rbypid( iparg ,ipari ,ms ,in ,
493 2 ixs ,ixq ,ixc ,ixt ,ixp ,
494 3 ixr ,skew ,itab ,itabm1 ,iskwn ,
495 4 npby(1,n),onof ,itag ,lpby(k) ,
496 5 x ,v ,vr ,rby(1,n),
497 6 ixtg ,npby ,rby ,lpby ,1 ,
498 7 fr_rby2 ,n ,onfelt,weight ,partsav ,
499 8 ipart(k3),npby(2,n) ,elbuf_tab
503 WRITE(iout,
'(/A,I9,A)')
' RIGID BODY FAILURE : RIGID BODY:',
504 . npby(6,n),
' SET OFF'
505 WRITE(istdo,
'(/A,I9,A)')
' RIGID BODY FAILURE : RIGID BODY:',
512 CALL rbypid( iparg ,ipari ,ms ,in ,
513 2 ixs ,ixq ,ixc ,ixt ,ixp ,
514 3 ixr ,skew ,itab ,itabm1 ,iskwn ,
515 4 npby(1,n),onof ,itag ,lpby(k) ,
516 5 x ,v ,vr ,rby(1,n),
517 6 ixtg ,npby ,rby ,lpby ,1 ,
519 8 ipart(k3),npby(2,n) ,elbuf_tab, pri_off)
529 WRITE(iout,
'(/A,I9,A)')
' RIGID BODY FAILURE : RIGID BODY:',
530 . npby(6,n),
' SET OFF'
531 WRITE(istdo,
'(/A,I9,A)')
' RIGID BODY FAILURE : RIGID BODY:',
538 CALL rbypid( iparg ,ipari ,ms ,in ,
539 2 ixs ,ixq ,ixc ,ixt ,ixp ,
540 3 ixr ,skew ,itab ,itabm1 ,iskwn ,
541 4 npby(1,n),onof ,itag ,lpby(k) ,
542 5 x ,v ,vr ,rby(1,n),
543 6 ixtg ,npby ,rby ,lpby ,1 ,
544 7 fr_rby2 ,n ,onfelt,weight ,partsav ,
545 8 ipart(k3),npby(2,n) ,elbuf_tab, pri_off)
557 IF(elt_activ == 1)
THEN
565 CALL rbypid( iparg ,ipari ,ms ,in ,
566 2 ixs ,ixq ,ixc ,ixt ,ixp ,
567 3 ixr ,skew ,itab ,itabm1 ,iskwn ,
568 4 npby(1,n),onof ,itag ,lpby(k) ,
569 5 x ,v ,vr ,rby(1,n),
570 6 ixtg ,npby ,rby ,lpby ,1 ,
571 7 fr_rby2 ,n ,onfelt,weight ,partsav ,
572 8 ipart(k3),npby(2,n) ,elbuf_tab,pri_off)
589 IF(onof1==0)
GOTO 200
591 tagslv_rby(1:numnod)=0
599 tagslv_rby(lpby(i+k))=n
610 IF(tagslv_rby(n) /= 0)
THEN
623 IF(tagslv_rby(n) /= 0)lcfield(iad+i-1) = -n