40 SUBROUTINE rbypid(IPARG ,IPARI ,MS ,IN ,
41 . IXS ,IXQ ,IXC ,IXT ,IXP ,
42 . IXR ,SKEW ,ITAB ,ITABM1,ISKWN ,
43 . NPBY ,ONOF ,ITAG ,LPBY ,
45 . IXTG ,NPBYI,RBYI ,LPBYI ,IACTS ,
46 . FR_RBY2 ,NRB ,ONFELT,WEIGHT,PARTSAV,
47 . IPARTC ,NSN ,ELBUF_TAB,PRI_OFF)
55#include "implicit_f.inc"
69 INTEGER IPARG(NPARG,*), IPARI(*), IXS(NIXS,*), IXQ(NIXQ,*),
70 . IXC(NIXC,*), IXT(NIXT,*), IXP(NIXP,*), IXR(NIXR,*),
71 . ITAB(*), ITABM1(*),IXTG(NIXTG,*),NRB, NSN,
72 . ISKWN(LISKN,*), NPBY(*),ITAG(*),LPBY(*),NPBYI(*) ,LPBYI(*),
73 . WEIGHT(*), (3,*), IPARTC(*)
74 INTEGER ONOF,IACTS, ONFELT, IWIOUT
75 INTEGER,
INTENT(IN) :: PRI_OFF
78 . skew(lskew,*),ms(*),in(*),partsav(npsav,*),
79 . x(3,*),v(3,*),vr(3,*),rby(*),rbyi(nrby,*)
80 TYPE(),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
84 INTEGER I, II, NG, ITY, NEL, NFT, IAD, IGOF, N, , LSKYRBKG,
85 . M, ISPH, NALL,MLW, K, PMAIN, TAG, L,
86 . MX,ICOMM(NSPMD+2),ISTRAIN,NPT,IHBE, ID
89 . xmom, ymom, zmom,ii1,ii2,ii3,ii4,ii5,ii6,ii7,ii8,ii9,
90 . ig1,ig2,ig3,ig4,ig5,ig6,ig7,ig8,ig9,
91 . xxmom, yymom, zzmom, wa1, wa2, wa3,
93 . fskyrbk(nskyrbk0*10+1),
94 . f1(nsn), f2(nsn), f3(nsn), f4(nsn),
95 . f5(nsn), f6(nsn), off_old
96 DOUBLE PRECISION RBF6(6,6)
98 .
DIMENSION(:),
POINTER :: OFFG
99 TYPE(G_BUFEL_) ,
POINTER :: GBUF
106 pmain = abs(fr_rby2(3,nrb))
109 IF(ispmd+1/=pmain) icomm(ispmd+1) = tag
115 icomm(nspmd+2) = pmain
130 ELSEIF(onof == 1)
THEN
140 xxmom = vr(1,m)*in(m)
141 yymom = vr(2,m)*in(m)
142 zzmom = vr(3,m)*in(m)
151 zzmom = vr(3,m)*in(m)
158 xxmom = vr(1,m)*in(m)
163 CALL rbyact(rby ,m ,lpby ,nsn ,ms ,
164 . in ,x ,itab ,skew ,isph ,
165 . itag(1+numnod),npbyi,rbyi ,lpbyi ,
166 . pmain,icomm,weight,id )
175 IF(itag(numnod+n) > 0.AND.weight(n) == 1)
THEN
185 ii1=rbyi(10,ni)*rbyi(1,ni)
186 ii2=rbyi(10,ni)*rbyi(2,ni)
187 ii3=rbyi(10,ni)*rbyi(3,ni)
188 ii4=rbyi(11,ni)*rbyi(4,ni)
189 ii5=rbyi(11,ni)*rbyi(5,ni)
190 ii6=rbyi(11,ni)*rbyi(6,ni)
191 ii7=rbyi(12,ni)*rbyi(7,ni)
192 ii8=rbyi(12,ni)*rbyi(8,ni)
193 ii9=rbyi(12,ni)*rbyi(9,ni)
195 ig1=rbyi(1,ni)*ii1+rbyi(4,ni)*ii4+rbyi(7,ni)*ii7
196 ig2=rbyi(1,ni)*ii2+rbyi(4,ni)*ii5+rbyi(7,ni)*ii8
197 ig3=rbyi(1,ni)*ii3+rbyi(4,ni)*ii6+rbyi(7,ni)*ii9
198 ig4=rbyi(2,ni)*ii1+rbyi(5,ni)*ii4+rbyi(8,ni
199 ig5=rbyi(2,ni)*ii2+rbyi(5,ni)*ii5+rbyi(8,ni)*ii8
200 ig6=rbyi(2,ni)*ii3+rbyi(5,ni)*ii6+rbyi(8,ni)*ii9
203 ig9=rbyi(3,ni)*ii3+rbyi(6,ni)*ii6+rbyi(9,ni)*ii9
205 f4(i) = vr(1,n)*ig1 + vr(2,n)*ig2 + vr(3,n)*ig3
206 . +(x(2,n)-x(2,m))*v(3,n)*ms(n)
207 . -(x(3,n)-x(3,m))*v(2,n)*ms(n
208 f5(i) = vr(1,n)*ig4 + vr(2,n)*ig5 + vr(3,n)*ig6
209 . +(x(3,n)-x(3,m))*v(1,n)*ms(n)
211 f6(i) = vr(1,n)*ig7 + vr
212 . +(x(1,n)-x(1,m))*v(2,n)*ms(n)
213 . -(x(2,n)-x(2,m))*v(1,n)*ms(n)
223 ELSEIF(itag(numnod+n) == 0.AND.weight(n) == 1)
THEN
232 f4(i) = vr(1,n)*in(n)
233 . +(x(2,n)-x(2,m))*v(3,n)*ms(n)
234 . -(x(3,n)-x(3,m))*v(2,n)*ms(n)
235 f5(i) = vr(2,n)*in(n)
236 . +(x(3,n)-x(3,m))*v(1,n)*ms(n)
237 . -(x(1,n)-x(1,m))*v(3,n)*ms(n)
238 f6(i) = vr(3,n)*in(n)
239 . +(x(1,n)-x(1,m))*v(2,n)*ms(n)
240 . -(x(2,n)-x(2,m))*v(1,n)*ms(n)
264 IF(itag(numnod+n) > 0.AND.weight(n) == 1)
THEN
276 . +(x(2,n)-x(2,m))*v(3,n)*ms(n)
277 . -(x(3,n)-x(3,m))*v(2,n)*ms(n)
279 . +(x(3,n)-x(3,m))*v(1,n)*ms(n)
280 . -(x(1,n)-x(1,m))*v(3,n)*ms(n)
282 . +(x(1,n)-x(1,m))*v(2,n)*ms(n)
283 . -(x(2,n)-x(2,m))*v(1,n)*ms(n)
285 ELSEIF(itag(numnod+n) == 0.AND.weight(n) == 1)
THEN
291 f4(i) = vr(1,n)*in(n)
292 . +(x(2,n)-x(2,m))*v(3,n)*ms(n)
293 . -(x(3,n)-x(3,m))*v(2,n)*ms(n)
294 f5(i) = vr(2,n)*in(n)
295 . +(x(3,n)-x(3,m))*v(1,n)*ms(n)
296 . -(x(1,n)-x(1,m))*v(3,n)*ms(n)
297 f6(i) = vr(3,n)*in(n)
298 . +(x(1,n)-x(1,m))*v(2,n)*ms(n)
299 . -(x(2,n)-x(2,m))*v(1,n)*ms(n)
314 IF(itag(numnod+n) > 0.AND.weight(n) == 1)
THEN
321 ii1=rbyi(10,ni)*rbyi(1,ni)
322 ii5=rbyi(11,ni)*rbyi(5,ni)
323 ii6=rbyi(11,ni)*rbyi(6,ni)
324 ii8=rbyi(12,ni)*rbyi(8,ni)
325 ii9=rbyi(12,ni)*rbyi(9,ni)
328 ig5=rbyi(5,ni)*ii5+rbyi(8,ni)*ii8
329 ig6=rbyi(5,ni)*ii6+rbyi(8,ni)*ii9
330 ig8=rbyi(6,ni)*ii5+rbyi(9,ni)*ii8
331 ig9=rbyi(6,ni)*ii6+rbyi(9,ni)*ii9
333 f4(i) = vr(1,n)*ig1+(x(2,n)-x(2,m))*v(3,n)*ms(n)
334 . -(x(3,n)-x(3,m))*v(2,n)*ms(n)
337 f5(i) = vr(2,n)*ig5 + vr(3,n)*ig6
339 ELSEIF(itag(numnod+n) ==
THEN
344 f4(i) = vr(1,n)*in(n)+(x(2,n)-x(2,m))*v(3,n)*ms(n)
345 . -(x(3,n)-x(3,m))*v(2,n)*ms(n)
348 f5(i) = vr(2,n)*in(n)
349 f6(i) = vr(3,n)*in(n)
388 + rbf6(1,1)+rbf6(1,2)+rbf6(1,3)+
389 + rbf6(1,4)+rbf6(1,5)+rbf6(1,6)
391 + rbf6(2,1)+rbf6(2,2)+rbf6(2,3)+
392 + rbf6(2,4)+rbf6(2,5)
394 + rbf6(3,1)+rbf6(3,2)+rbf6(3,3)+
395 + rbf6(3,4)+rbf6(3,5)+rbf6(3,6)
397 + rbf6(4,1)+rbf6(4,2)+rbf6(4,3)+
400 + rbf6(5,1)+rbf6(5,2)+rbf6(5,3)+
401 + rbf6(5,4)+rbf6(5,5)+rbf6(5,6)
403 + rbf6(6,1)+rbf6(6,2)+rbf6(6,3)+
404 + rbf6(6,4)+rbf6(6,5)+rbf6(6,6)
407 v(1,m) = xmom / ms(m)
408 v(2,m) = ymom / ms(m)
409 v(3,m) = zmom / ms(m)
414 xxmom=rby(1)*wa1+rby(2)*wa2+rby(3)*wa3
415 yymom=rby(4)*wa1+rby(5)*wa2+rby(6)*wa3
416 zzmom=rby(7)*wa1+rby(8)*wa2+rby(9)*wa3
417 wa1 = xxmom / rby(10)
418 wa2 = yymom / rby(11)
419 wa3 = zzmom / rby(12)
421 vr(1,m)=rby(1)*wa1+rby(4)*wa2+rby(7)*wa3
422 vr(2,m)=rby(2)*wa1+rby(5)*wa2+rby(8)*wa3
423 vr(3,m)=rby(3)*wa1+rby(6)*wa2+rby(9)*wa3
436 IF(onfelt == 0.OR.onfelt == 1)
THEN
452 gbuf => elbuf_tab(ng)%GBUF
456 IF(ity == 1.AND.mlw /= 0)
THEN
460 nall = itag(ixs(2,ii)) * itag(ixs(3,ii)) *
461 + itag(ixs(4,ii)) * itag(ixs(5,ii)) *
462 + itag(ixs(6,ii)) * itag(ixs(7,ii)) *
463 + itag(ixs(8,ii)) * itag(ixs(9,ii))
466 IF (onfelt == 1)
THEN
467 offg(i) = abs(offg(i))
468 IF ((pri_off==0).OR.(off_old*offg(i)<zero))
469 .
WRITE(iout,*)
' BRICK ACTIVATION:',ixs(11,ii)
470 ELSEIF(onfelt == 0)
THEN
471 offg(i) = -abs(offg(i))
472 IF ((pri_off==0).OR.(off_old*offg(i)<zero))
473 .
WRITE(iout,*)
' BRICK DEACTIVATION:',ixs(11,ii)
483 IF (offg(i) > zero) igof=0
489 ELSEIF(ity == 2.AND.mlw /= 0)
THEN
490 offg => elbuf_tab(ng)%GBUF%OFF
493 nall = itag(ixq(2,ii)) * itag(ixq(3,ii)) *
494 + itag(ixq(4,ii)) * itag(ixq(5,ii))
497 IF (onfelt == 1)
THEN
498 offg(i) = abs(offg(i))
499 IF ((pri_off==0).OR.(off_old*offg(i)<zero))
500 .
WRITE(iout,*)
' QUAD ACTIVATION:',ixq(7,ii)
501 ELSEIF(onfelt == 0)
THEN
502 offg(i) = -abs(offg(i))
503 IF ((pri_off==0).OR.(off_old*offg(i)<zero))
504 .
WRITE(iout,*)
' QUAD DEACTIVATION:',ixq(7,ii)
514 IF (offg(i) > zero) igof=0
520 ELSEIF(ity == 3.AND.mlw /= 0)
THEN
521 offg => elbuf_tab(ng)%GBUF%OFF
522 istrain = iparg(44,ng)
523 npt = iabs(iparg(6,ng))
527 nall = itag(ixc(2,ii)) * itag(ixc(3,ii)) *
528 + itag(ixc(4,ii)) * itag(ixc(5,ii))
532 IF (offg(i) < zero)
THEN
535 partsav(24,mx) = partsav(24,mx)
536 . - gbuf%EINT(i) - gbuf%EINT(i+nel)
538 IF ((pri_off==0).OR.(off_old*offg(i)<zero))
539 .
WRITE(iout,*)
' SHELL ACTIVATION:',ixc(7,ii)
540 ELSEIF(onfelt == 0)
THEN
541 IF (offg(i) > zero)
THEN
544 partsav(24,mx) = partsav(24,mx)
545 . + gbuf%EINT(i) + gbuf%EINT(i+nel)
547 IF ((pri_off==0).OR.(off_old*offg(i)<zero))
548 .
WRITE(iout,*)
' SHELL DEACTIVATION:',ixc(7,ii)
557 IF (offg(i) > zero) igof=0
563 ELSEIF(ity == 4.AND.(iacts == 1.OR.codvers>=44))
THEN
564 offg => elbuf_tab(ng)%GBUF%OFF
567 nall = itag(ixt(2,ii)) * itag(ixt(3,ii))
571 offg(i) = abs(offg(i))
573 .
WRITE(iout,*)
' TRUSS ACTIVATION:',ixt(5,ii)
574 ELSEIF(onfelt == 0)
THEN
575 offg(i) = -abs(offg(i))
576 IF ((pri_off==0).OR.(off_old*offg(i)<zero))
577 .
WRITE(iout
' TRUSS DEACTIVATION:',ixt(5,ii)
593 ELSEIF(ity == 5.AND.(iacts == 1.OR.codvers>=44))
THEN
594 offg => elbuf_tab(ng)%GBUF%OFF
597 nall = itag(ixp(2,ii)) * itag(ixp(3,ii))
601 offg(i) = abs(offg(i))
602 IF ((pri_off==0).OR.(off_old*offg(i)<zero))
603 .
WRITE(iout,*)
' BEAM ACTIVATION:',ixp(6,ii)
604 ELSEIF(onfelt == 0)
THEN
605 offg(i) = -abs(offg(i))
606 IF ((pri_off==0).OR.(off_old*offg(i)<zero))
607 .
WRITE(iout,*)
' BEAM DEACTIVATION:',ixp(6,ii)
616 IF (offg(i) > zero) igof=0
622 ELSEIF(ity == 6.AND.mlw /= 3.AND.
623 . (iacts == 1.OR.codvers>=44))
THEN
624 offg => elbuf_tab(ng)%GBUF%OFF
627 nall = itag(ixr(2,ii)) * itag
633 . offg(i)= abs(offg(i))
634 IF ((pri_off==0).OR.(off_old*offg(i)<zero))
635 .
WRITE(iout,*)
' SPRING ACTIVATION:',ixr(nixr,ii)
636 ELSEIF(onfelt == 0)
THEN
639 . offg(i) = -abs(offg(i))
640 IF ((pri_off==0).OR.(off_old*offg(i)<zero))
641 .
WRITE(iout,*)
' SPRING DEACTIVATION:',ixr(nixr,ii)
650 IF(offg(i) /= zero) igof=0
656 ELSEIF (ity == 7 .AND. mlw /= 0)
THEN
657 offg => elbuf_tab(ng)%GBUF%OFF
658 istrain = iparg(44,ng)
659 npt = iabs(iparg(6,ng))
662 nall = itag(ixtg(2,ii)) * itag(ixtg(3,ii)) *
666 IF (onfelt == 1)
THEN
667 offg(i) = abs(offg(i))
668 IF ((pri_off==0).OR.(off_old*offg(i)<zero))
669 .
WRITE(iout,*)
' SH_3N ACTIVATION:',ixtg(6,ii)
670 ELSEIF(onfelt == 0)
THEN
671 offg(i) = -abs(offg(i))
672 IF ((pri_off==0).OR.(off_old*offg(i)<zero))
673 .
WRITE(iout,*)
' SH_3N DEACTIVATION:',ixtg(6,ii)
682 IF (offg(i) > zero) igof=0
701 IF (ispmd /= 0)
CALL spmd_chkw(iwiout,iout)