45 SUBROUTINE rbe3t1(RBE3 ,NODES ,SKEW ,
47 * ADI ,H3D_DATA , DT1 ,
55 use rbe3pen_init_mod,
only: rbe3pen_init
59#include "implicit_f.inc"
66#include "tabsiz_c.inc"
78 INTEGER,
INTENT(IN) :: IMPL_S
79 TYPE (RBE3_),
INTENT(INOUT) :: RBE3
80 TYPE (H3D_DATABASE) :: H3D_DATA
81 TYPE(nodal_arrays_),
INTENT(INOUT) :: NODES
85 INTEGER J, N, MAX_M,JT(3,NRBE3),JR(3,NRBE3),NMT,
86 . IADA,IADMS,IADFN,IADAR,IADIN,IADFR,IADM0,,IADL,
87 . IPA,IPMS,IPFN,,IPIN,IPFR,NMP,IADLP,NS,ICOM,
88 . nmt0,iadmp(slrbe3/2),iml(slrbe3/2),ipen
93 CALL prerbe3(rbe3%IRBE3 ,max_m , irotg_loc,jt ,jr )
95 icom = rbe3%mpi%IAD_RBE3(nspmd+1)-rbe3%mpi%IAD_RBE3(1)
98 IF (ncycle==0)
CALL rbe3pen_init(nodes%X,nodes%MS,nodes%IN,nodes%STIFN ,nodes%STIFR,numnod,rbe3,tt,impl_s)
99 CALL prerbe3p(rbe3%IRBE3 ,rbe3%LRBE3 ,iadmp ,iml , nmt )
103 IF (rbe3%IROTG>0)
THEN
114 CALL zero1(rbe3%RRBE3,iadl)
120 IF (rbe3%IROTG>0)
THEN
130 rbe3%RRBE3_PON = zero
131 CALL rbe3f(rbe3%IRBE3 ,rbe3%LRBE3 ,nodes%X ,nodes%A ,nodes%AR ,
132 1 nodes%MS ,nodes%IN ,rbe3%FRBE3,skew ,nodes%WEIGHT,
133 2 nodes%STIFN ,nodes%STIFR ,jt ,jr ,rbe3%IROTG ,
134 3 max_m ,rbe3%RRBE3(iada),rbe3%RRBE3(iadar) ,rbe3%RRBE3(iadms),
135 4 rbe3%RRBE3(iadin),rbe3%RRBE3(iadfn),rbe3%RRBE3(iadfr),nmt0 ,
136 5 iadmp ,rbe3%pen,nodes%V,nodes%VR,nmt ,dt1 ,iroddl ,
137 6 rbe3%RRBE3_PON(ipa),rbe3%RRBE3_PON(ipar),rbe3%RRBE3_PON(ipms),
138 7 rbe3%RRBE3_PON(ipin),rbe3%RRBE3_PON(ipfn),rbe3%RRBE3_PON(ipfr),
141 IF (nspmd>1.AND.iparit==0)
THEN
142 CALL rbe3poff(rbe3%IRBE3 ,rbe3%LRBE3 ,nodes%A ,nodes%MS ,nodes%WEIGHT,
143 1 nodes%AR ,nodes%IN ,nodes%STIFN,nodes%STIFR )
148 . rbe3%RRBE3_PON(ipa),rbe3%RRBE3_PON(ipar),rbe3%RRBE3_PON(ipms),rbe3%RRBE3_PON(ipin),
149 . rbe3%RRBE3_PON(ipfn),rbe3%RRBE3_PON(ipfr),rbe3%mpi%FR_RBE3MP,rbe3%mpi%IAD_RBE3 ,
150 . rbe3%mpi%IAD_RBE3(nspmd+1),rbe3%irotg_sz,rbe3%IROTG)
155 CALL asp2_rbe3(rbe3%IRBE3 ,rbe3%LRBE3 ,nodes%A ,nodes%AR ,nodes%MS ,
156 1 nodes%IN,nodes%WEIGHT,nodes%STIFN ,nodes%STIFR ,rbe3%RRBE3_PON(ipa),
157 2 rbe3%RRBE3_PON(ipar),rbe3%RRBE3_PON(ipms),rbe3%RRBE3_PON(ipin),
158 3 rbe3%RRBE3_PON(ipfn),rbe3%RRBE3_PON(ipfr),nmt ,iml ,rbe3%IROTG)
161 CALL ass_rbe3(rbe3%IRBE3 ,rbe3%LRBE3 ,nodes%A ,nodes%AR ,nodes%MS ,
162 1 nodes%IN ,nodes%WEIGHT,nodes%STIFN ,nodes%STIFR ,rbe3%RRBE3(iada),
163 2 rbe3%RRBE3(iadar) ,rbe3%RRBE3(iadms), rbe3%RRBE3(iadin),
164 3 rbe3%RRBE3(iadfn) ,rbe3%RRBE3(iadfr),nmt ,iml ,rbe3%IROTG)
165 IF (iparit==0.AND.icom>0)
THEN
167 . nodes%A ,nodes%AR ,nodes%MS ,nodes%IN ,nodes%STIFN,
168 . nodes%STIFR,rbe3%mpi%FR_RBE3 ,rbe3%mpi%IAD_RBE3 ,rbe3%mpi%IAD_RBE3(nspmd+1),rbe3%irotg_sz,
176 CALL dmi_rbe3(nmt ,rbe3%LRBE3 ,rbe3%FRBE3(iadm0),rbe3%FRBE3(iadi0),
177 1 rbe3%RRBE3(iadms) ,rbe3%RRBE3(iadin) ,dmast ,adm ,
178 2 dinert,adi ,rbe3%IROTG ,rbe3%IRBE3 ,nodes%MS ,
179 3 nodes%IN ,nodes%WEIGHT,iadmp ,h3d_data)
186 ipen= rbe3%IRBE3(9,n)
187 IF(ns/=0.AND.ipen<=0)
THEN
188 IF (nodes%WEIGHT(ns)/=0)
THEN
190 IF(jt(j,n)/=0)nodes%A(j,ns)=zero
269 SUBROUTINE rbe3f(IRBE3 ,LRBE3 ,X ,A ,AR ,
270 1 MS ,IN ,FRBE3,SKEW ,WEIGHT,
271 2 STIFN ,STIFR ,JT ,JR ,IROTG ,
272 3 MAX_M ,AM ,ARM ,MSM ,INM ,
273 4 STIFNM,STIFRM,NMT0 ,IADMP ,PEN ,
274 5 V ,VR ,NMT ,DT1 ,IRODDL,
275 6 AM_P ,ARM_P ,MSM_P,INM_P ,STIFNM_P,
281 USE rbe3f_pen_mod,
only : rbe3f_pen
285#include "implicit_f.inc"
289#include "com04_c.inc"
290#include "param_c.inc"
294 INTEGER IRBE3(NRBE3L,*),LRBE3(*),WEIGHT(*)
295 INTEGER MAX_M,IROTG,JT(3,*),JR(3,*),NMT0,IADMP(*)
296 INTEGER,
INTENT(IN) :: NMT
297 INTEGER,
INTENT(IN) :: IRODDL,IPARIT
300 . X(3,*), A(3,*), AR(3,*), MS(*), IN(*), FRBE3(*),SKEW(*),
301 . STIFN(*) ,STIFR(*), AM(3,*), ARM(3,*), MSM(*), INM(*),
302 . STIFNM(*) ,STIFRM(*), V(3,*), VR(3,*)
303 my_real,
INTENT(IN) :: DT1
304 TYPE (RBE3_pen),
INTENT(INOUT) :: PEN
306 . am_p(6,3,nmt), arm_p(6,3,nmt), msm_p(6,nmt), inm_p(6,nmt),
307 . stifnm_p(6,nmt), stifrm_p(6,nmt)
311 INTEGER I, J, N, NS ,NML, IAD,IROT,IADS,NN,K,IMOD,IADF,
316 . fmax,smax,mmax,sfd,smd,f2max
318 .
DIMENSION(:,:,:),
ALLOCATABLE :: fdstnb ,mdstnb
319 my_real,
DIMENSION(:,:),
ALLOCATABLE :: amp ,armp
320 my_real,
DIMENSION(:),
ALLOCATABLE :: msmp ,inmp,stifnmp,stifrmp
321 DOUBLE PRECISION,
DIMENSION(:,:),
ALLOCATABLE :: R1_6, R2_6
322 DOUBLE PRECISION,
DIMENSION(:,:,:),
ALLOCATABLE :: RR_6
327 ALLOCATE(fdstnb(3,6,max_m))
328 IF (irotg>0)
ALLOCATE(mdstnb(3,6,max_m))
330 ALLOCATE(amp(3,max_m))
331 ALLOCATE(msmp(max_m))
332 ALLOCATE(stifnmp(max_m))
334 ALLOCATE(armp(3,max_m))
335 ALLOCATE(inmp(max_m))
336 ALLOCATE(stifrmp(max_m))
340 ALLOCATE(rr_6(6,3,max_m))
341 ALLOCATE(r1_6(6,max_m))
342 ALLOCATE(r2_6(6,max_m))
351 IF (ns==0.OR.ipen>0) cycle
352 IF (weight(ns)==1)
THEN
353 CALL rbe3cl(lrbe3(iad+1),lrbe3(iads+iad+1),ns ,x ,
354 . frbe3(6*iad+1),skew ,nml ,irot ,fdstnb ,
355 . mdstnb ,irbe3(2,n))
357 nn = jt(j,n)*weight(ns)
360 stn(j) = stifn(ns)*nn
367 CALL mfac_rbe3(fdstnb,mdstnb,nml ,irotg,sfd ,smd)
370 fsum = fdstnb(j,1,i)+fdstnb(j,2,i)+fdstnb(j,3,i)
371 msmp(i) = msmp(i) + abs(fsum)*mss(j)*sfd
374 ELSEIF (imod ==4)
THEN
378 msmp(i) = msmp(i)+frbe3(iadf+j)*mss(j)
384 amp(1:3,i) = amp(1:3,i)+fdstnb(1:3,j,i)*fns(j)
389 fmax=abs(fdstnb(j,1,i))+abs(fdstnb(j,2,i))+abs(fdstnb(j,3,i))
390 f2max=fdstnb(j,1,i)*fdstnb(j,1,i)+fdstnb(j,2,i)*fdstnb(j,2,i)+
391 . fdstnb(j,3,i)*fdstnb(j,3,i)
392 smax =
max(smax,
max(fmax,f2max)*stn(j))
396 IF ((jr(1,n)+jr(2,n)+jr(3,n))>0)
THEN
398 nn = jr(j,n)*weight(ns)
401 str(j) = stifr(ns)*nn
405 amp(1:3,i) = amp(1:3,i)+fdstnb(1:3,j+3,i)*mns(j)
409! fsum = fdstnb(j,j+3,i)
410 fsum = fdstnb(j,4,i)+fdstnb(j,5,i)+fdstnb(j,6,i)
411 msmp(i) =msmp(i)+abs(fsum)*ins(j)
412 fmax=abs(fdstnb(j,4,i))+abs(fdstnb(j,5,i))+abs(fdstnb(j,6,i))
413 f2max=fdstnb(j,4,i)*fdstnb(j,4,i)+fdstnb(j,5,i)*fdstnb(j,5,i)+
414 . fdstnb(j,6,i)*fdstnb(j,6,i)
415 smax =
max(smax,
max(fmax,f2max)*str(j))
417 stifnmp(i) = stifnm(i)+smax
426 am_p(j,1:3,k) = am_p(j,1:3,k)+rr_6(j,1:3,i)
427 msm_p(j,k) = msm_p(j,k)+r1_6(j,i)
428 stifnm_p(j,k) = stifnm_p(j,k)+r2_6(j,i)
437 armp(1:3,i) = armp(1:3,i)+mdstnb(1:3,j,i)*fns(j)
441 msum = mdstnb(j,1,i)+mdstnb(j,2,i)+mdstnb(j,3,i)
442 IF (imod /=4) inmp(i) = inmp(i)+abs(msum)*mss(j)
443 mmax=abs(mdstnb(j,1,i))+abs(mdstnb(j,2,i))+abs(mdstnb(j,3,i))
444 smax =
max(smax,mmax*stn(j))
446 stifrmp(i) = stifrmp(i)+smax
448 IF ((jr(1,n)+jr(2,n)+jr(3,n))>0)
THEN
452 msum = mdstnb(j,4,i)+mdstnb(j,5,i)+mdstnb(j,6,i)
453 inmp(i) = inmp(i)+abs(msum)*ins(j)*smd
456 ELSEIF (imod ==4)
THEN
460 inmp(i) = inmp(i)+frbe3(iadf+j+3)*ins(j)
466 armp(1:3,i) =armp(1:3,i)+mdstnb(1:3,j+3,i)*mns(j)
470 mmax=abs(mdstnb(j,4,i))+abs(mdstnb(j,5,i))+abs(mdstnb(j,6,i))
471 smax =
max(smax,mmax*str(j))
473 stifrmp(i) = stifrmp(i)+smax
482 arm_p(j,1:3,k) = arm_p(j,1:3,k)+rr_6(j,1:3,i)
483 inm_p(j,k) = inm_p(j,k)+r1_6(j,i)
484 stifrm_p(j,k) = stifrm_p(j,k)+r2_6(j,i)
490 IF ((jr(1,n)+jr(2,n)+jr(3,n))>0) stifr(ns) = em20
502 IF (ns==0.OR.ipen<=0) cycle
503 IF (weight(ns)==1)
THEN
512 . ns ,numnod ,dt1 ,iroddl ,
513 . nml ,lrbe3(iad+1),lrbe3(iads+iad+1),in ,
515 . stifn ,stifr ,stifnmp ,stifrmp ,
516 . v ,vr ,frbe3(6*iad+1),x ,
517 . lskew ,numskw ,skew ,
518 . pen%RRBE3PEN_F(1,n_p) ,pen%RRBE3PEN_STF(1,n_p) ,
519 . pen%RRBE3PEN_FAC(n_p) ,pen%RRBE3PEN_VI(n_p) ,
520 . pen%RRBE3PEN_M(1,n_p) ,icoline )
526 am_p(j,1:3,k) = am_p(j,1:3,k)+rr_6(j,1:3,i)
527 stifnm_p(j,k) = stifnm_p(j,k)+r2_6(j,i)
536 arm_p(j,1:3,k) = arm_p(j,1:3,k)+rr_6(j,1:3,i)
537 stifrm_p(j,k) = stifrm_p(j,k)+r2_6(j,i)
554 IF (ns==0.OR.ipen>0) cycle
555 IF (weight(ns)==1)
THEN
556 CALL rbe3cl(lrbe3(iad+1),lrbe3(iads+iad+1),ns ,x ,
557 . frbe3(6*iad+1),skew ,nml ,irot ,fdstnb ,
558 . mdstnb ,irbe3(2,n))
560 nn = jt(j,n)*weight(ns)
563 stn(j) = stifn(ns)*nn
567 CALL mfac_rbe3(fdstnb,mdstnb,nml ,irotg,sfd ,smd)
571 fsum = fdstnb(j,1,i)+fdstnb(j,2,i)+fdstnb(j,3,i)
572 msm(k) = msm(k)+abs(fsum)*mss(j)*sfd
575 ELSEIF (imod ==4)
THEN
580 msm(k) = msm(k)+frbe3(iadf+j)*mss(j)
587 am(1,k) = am(1,k)+fdstnb(1,j,i)*fns(j)
588 am(2,k) = am(2,k)+fdstnb(2,j,i)*fns(j)
589 am(3,k) = am(3,k)+fdstnb(3,j,i)*fns(j)
594 fmax=abs(fdstnb(j,1,i))+abs(fdstnb(j,2,i))+abs(fdstnb(j,3,i))
595 f2max=fdstnb(j,1,i)*fdstnb(j,1,i)+fdstnb(j,2,i)*fdstnb(j,2,i)+
596 . fdstnb(j,3,i)*fdstnb(j,3,i)
597 smax =
max(smax,
max(fmax,f2max)*stn(j))
599 stifnm(k) = stifnm(k)+smax
601 IF ((jr(1,n)+jr(2,n)+jr(3,n))>0)
THEN
603 nn = jr(j,n)*weight(ns)
606 str(j) = stifr(ns)*nn
611 am(1,k) = am(1,k)+fdstnb(1,j+3,i)*mns(j)
612 am(2,k) = am(2,k)+fdstnb(2,j+3,i)*mns(j)
613 am(3,k) = am(3,k)+fdstnb(3,j+3,i)*mns(j)
618 fsum = fdstnb(j,4,i)+fdstnb(j,5,i)+fdstnb(j,6,i)
619 msm(k) =msm(k)+abs(fsum)*ins(j)
620 fmax=abs(fdstnb(j,4,i))+abs(fdstnb(j,5,i))+abs(fdstnb(j,6,i))
621 f2max=fdstnb(j,4,i)*fdstnb(j,4,i)+fdstnb(j,5,i)*fdstnb(j,5,i)+
622 . fdstnb(j,6,i)*fdstnb(j,6,i)
623 smax =
max(smax,
max(fmax,f2max)*str(j))
625 stifnm(k) = stifnm(k)+smax
632 arm(1,k) = arm(1,k)+mdstnb(1,j,i)*fns(j)
633 arm(2,k) = arm(2,k)+mdstnb(2,j,i)*fns(j)
634 arm(3,k) = arm(3,k)+mdstnb(3,j,i)*fns(j)
639 msum = mdstnb(j,1,i)+mdstnb(j,2,i)+mdstnb(j,3,i)
640 IF (imod /=4) inm(k) = inm(k)+abs(msum)*mss(j)
641 mmax=abs(mdstnb(j,1,i))+abs(mdstnb(j,2,i))+abs(mdstnb(j,3,i))
642 smax =
max(smax,mmax*stn(j))
644 stifrm(k) = stifrm(k)+smax
646 IF ((jr(1,n)+jr(2,n)+jr(3,n))>0)
THEN
651 msum = mdstnb(j,4,i)+mdstnb(j,5,i)+mdstnb(j,6,i)
652 inm(k) = inm(k)+abs(msum)*ins(j)*smd
655 ELSEIF (imod ==4)
THEN
660 inm(k) = inm(k)+frbe3(iadf+j+3)*ins(j)
667 arm(1,k) = arm(1,k)+mdstnb(1,j+3,i)*mns(j)
668 arm(2,k) = arm(2,k)+mdstnb(2,j+3,i)*mns(j)
669 arm(3,k) = arm(3,k)+mdstnb(3,j+3,i)*mns(j)
673 mmax=abs(mdstnb(j,4,i))+abs(mdstnb(j,5,i))+abs(mdstnb(j,6,i))
674 smax =
max(smax,mmax*str(j))
676 stifrm(k) = stifrm(k)+smax
682 IF ((jr(1,n)+jr(2,n)+jr(3,n))>0) stifr(ns) = em20
695 IF (ns==0.OR.ipen<=0) cycle
696 IF (weight(ns)==1)
THEN
705 . ns ,numnod ,dt1 ,iroddl ,
706 . nml ,lrbe3(iad+1),lrbe3(iads+iad+1),in ,
708 . stifn ,stifr ,stifnmp ,stifrmp ,
709 . v ,vr ,frbe3(6*iad+1),x ,
710 . lskew ,numskw ,skew ,
711 . pen%RRBE3PEN_F(1,n_p) ,pen%RRBE3PEN_STF(1,n_p) ,
712 . pen%RRBE3PEN_FAC(n_p) ,pen%RRBE3PEN_VI(n_p) ,
713 . pen%RRBE3PEN_M(1,n_p) ,icoline )
716 am(1:3,k) = am(1:3,k)+amp(1:3,i)
717 stifnm(k) = stifnm(k)+stifnmp(i)
722 arm(1:3,k) = arm(1:3,k)+armp(1:3,i)
723 stifrm(k) = stifrm(k)+stifrmp(i)
731 IF (irotg>0)
DEALLOCATE(mdstnb)
1387 SUBROUTINE rbe3cl(INRBE3 ,ILRBE3 ,NS ,XYZ ,FRBE3 ,
1388 . SKEW ,NG ,IROT ,FDSTNB ,MDSTNB ,ID )
1396#include "implicit_f.inc"
1400#include "task_c.inc"
1401#include "param_c.inc"
1402#include "scr07_c.inc"
1406 INTEGER INRBE3(*),ILRBE3(*),NG, NS,IROT,ID
1409 . XYZ(3,*), FRBE3(6,*), SKEW(LSKEW,*),(3,6,*), MDSTNB(3,6,*)
1413 INTEGER I, J, K ,KG,NSNGLR,IELSUB,IERR
1416 * TW(3,NG), RW(3,NG),
1417 * fufxlc(3,ng), fufylc(3,ng), fufzlc(3,ng),
1418 * fumxlc(3,ng), fumylc(3,ng), fumzlc(3,ng),
1419 * mxlc(3,ng), mylc(3,ng), mzlc(3,ng),
1420 * fufx(3,ng), fufy(3,ng), fufz(3,ng),
1421 * mufx(3,ng), mufy(3,ng), mufz(3,ng),
1422 * fumx(3,ng), fumy(3,ng), fumz(3,ng),
1423 * mx(3,ng), my(3,ng), mz(3,ng),
1424 * mumx(3,ng), mumy(3,ng), mumz(3,ng),
1427 * denfx, denfy, denfz, denmx, denmy, denmz,
1428 * refpt(3), cgmx(3), cgmy(3), cgmz(3), averef,
1429 * tfufx(3), tfufy(3), tfufz(3),
1430 * tmufx(3), tmufy(3), tmufz(3),
1431 * tfumx(3), tfumy(3), tfumz(3),
1432 * tmumx(3), tmumy(3), tmumz(3),
1438 CALL zero1(fdstnb,3*ng*6)
1439 IF (irot>0)
CALL zero1(mdstnb,3*ng*6)
1447 refpt(1) = xyz(1,ns)
1448 refpt(2) = xyz(2,ns)
1449 refpt(3) = xyz(3,ns)
1452 tw(i,k) = frbe3(i,k)
1453 rw(i,k) = frbe3(i+3,k)
1461 IF (ng == 2.AND.irot==0)
THEN
1470 IF (ielsub > 0)
THEN
1472 el(i,1,k) = skew(i,ielsub)
1473 el(i,2,k) = skew(i+3,ielsub)
1474 el(i,3,k) = skew(i+6,ielsub)
1489 IF (ielsub > 0)
THEN
1494 denfx = denfx + tw(i,k
1496 denfz = denfz + tw(i,k)*el(i,3,k)**2
1499 denfx = denfx + tw(1,k)
1500 denfy = denfy + tw(2,k)
1501 denfz = denfz + tw(3,k)
1504 averef = averef + sqrt( (xyz(1,kg) - refpt(1))**2 +
1505 * (xyz(2,kg) - refpt(2))**2 +
1506 * (xyz(3,kg) - refpt(3))**2 )
1509 IF (abs(denfx) <= em20)
THEN
1513 IF (abs(denfy) <= em20)
THEN
1517 IF (abs(denfz) <= em20)
THEN
1520 IF (ierr /= 0)
GOTO 999
1522 IF (averef == zero) averef = one
1530 IF (ielsub > 0)
THEN
1535 cgmx(2) = cgmx(2) + tw(i,k)*el(i,3,k)**2*xyz(2,kg)
1536 cgmx(3) = cgmx(3) + tw(i,k)*el(i,2,k)**2*xyz(3,kg)
1540 cgmy(3) = cgmy(3) + tw(i,k)*el(i,1,k)**2*xyz(3,kg)
1541 cgmy(1) = cgmy(1) + tw(i,k)*el(i,3,k)**2*xyz(1,kg)
1545 cgmz(1) = cgmz(1) + tw(i,k)*el(i,2,k)**2*xyz(1,kg)
1546 cgmz(2) = cgmz(2) + tw(i,k)*el(i,1,k
1550 cgmx(2) = cgmx(2) + tw(3,k)*xyz(2,kg)
1551 cgmx(3) = cgmx(3) + tw(2,k)*xyz(3,kg)
1553 cgmy(3) = cgmy(3) + tw(1,k)*xyz(3,kg)
1554 cgmy(1) = cgmy(1) + tw(3,k)*xyz
1556 cgmz(1) = cgmz(1) + tw(2,k)*xyz(1,kg)
1557 cgmz(2) = cgmz(2) + tw(1,k)*xyz(2,kg)
1560 cgmx(2) = cgmx(2)/denfz
1561 cgmx(3) = cgmx(3)/denfy
1563 cgmy(3) = cgmy(3)/denfx
1564 cgmy(1) = cgmy(1)/denfz
1566 cgmz(1) = cgmz(1)/denfy
1567 cgmz(2) = cgmz(2)/denfx
1582 IF (ielsub > 0)
THEN
1587 denmx = denmx + rw(i,k)*el(i,1,k)**2*averef**2 +
1588 * tw(i,k)*( el(i,3,k)*(xyz(2,kg) - cgmx(2)) -
1589 * el(i,2,k)*(xyz(3,kg) - cgmx(3))
1591 denmy = denmy + rw(i,k)*el(i,2,k)**2*averef**2 +
1592 * tw(i,k)*( el(i,1,k)*(xyz(3,kg) - cgmy(3)) -
1593 * el(i,3,k)*(xyz(1,kg) - cgmy(1))
1595 denmz = denmz + rw(i,k)*el(i,3,k)**2*averef**2 +
1596 * tw(i,k)*( el(i,2,k)*(xyz(1,kg) - cgmz(1)) -
1597 * el(i,1,k)*(xyz(2,kg) - cgmz(2))
1601 denmx = denmx + rw(1,k)*averef**2 +
1602 * tw(2,k)*(xyz(3,kg) - cgmx(3))**2 +
1603 * tw(3,k)*(xyz(2,kg) - cgmx(2))**2
1604 denmy = denmy + rw(2,k)*averef**2 +
1605 * tw(1,k)*(xyz(3,kg) - cgmy(3))**2 +
1606 * tw(3,k)*(xyz(1,kg) - cgmy(1))**2
1607 denmz = denmz + rw(3,k)*averef**2 +
1608 * tw(2,k)*(xyz(1,kg) - cgmz(1))**2 +
1609 * tw(1,k)*(xyz(2,kg) - cgmz(2))**2
1617 IF (abs(denmx) <= em20)
THEN
1621 IF (abs(denmy) <= em20)
THEN
1625 IF (abs(denmz) <= em20)
THEN
1629 IF (ierr /= 0)
GOTO 999
1634 CALL rbe3uf(inrbe3,ilrbe3,el,tw,xyz,refpt,
1635 * fufxlc,fufylc,fufzlc,fufx,fufy,fufz,mufx,mufy,mufz,
1636 * tfufx,tfufy,tfufz,tmufx,tmufy,tmufz,
1637 * denfx,denfy,denfz,ng)
1643 CALL rbe3um(inrbe3,ilrbe3,el,tw,rw,xyz,refpt,cgmx,cgmy,cgmz,
1644 * fumxlc,fumylc,fumzlc,mxlc,mylc,mzlc,
1645 * fumx,fumy,fumz,mx,my,mz,mumx,mumy,mumz,
1646 * tfumx,tfumy,tfumz,tmumx,tmumy,tmumz,
1647 * averef,denmx,denmy,denmz,ng,irot )
1688 CALL invert(a,c,6,nsnglr)
1689 IF (nsnglr /= 0)
THEN
1697 fdstnb(i,j,k) = c(1,j)*fufx(i,k) + c(2,j)*fufy(i,k) +
1698 * c(3,j)*fufz(i,k) + c(4,j)*fumx(i,k) +
1699 * c(5,j)*fumy(i,k) + c(6,j)*fumz(i,k)
1707 mdstnb(i,j,k) = c(4,j)*mx(i,k) + c(5,j)*my(i,k) +
1717 CALL ancmsg(msgid=108,anmode=aninfo,
1750 SUBROUTINE rbe3uf(INRBE3,ILRBE3,EL,TW,XYZ,REFPT,
1751 * FUFXLC,FUFYLC,FUFZLC,
1752 * FUFX,FUFY,FUFZ,MUFX,MUFY,MUFZ,
1753 * TFUFX,TFUFY,TFUFZ,TMUFX,TMUFY,TMUFZ,
1754 * DENFX,DENFY,DENFZ,NG)
1758#include "implicit_f.inc"
1760 INTEGER INRBE3(NG), ILRBE3(NG)
1762 * EL(3,3,*),TW(3,NG), XYZ(3,*), REFPT(3),
1763 * fufxlc(3,ng), fufylc(3,ng), fufzlc(3,ng),
1764 * fufx(3,ng), fufy(3,ng), fufz(3,ng),
1765 * mufx(3,ng), mufy(3,ng), mufz(3,ng),
1766 * tfufx(3), tfufy(3), tfufz(3),
1767 * tmufx(3), tmufy(3), tmufz(3)
1769 * denfx, denfy, denfz,xarm, yarm, zarm
1770 INTEGER I, J, K, KG, IELSUB
1774 CALL zero1(fufx,3*ng)
1775 CALL zero1(fufy,3*ng)
1776 CALL zero1(fufz,3*ng)
1791 IF (ielsub > 0)
THEN
1797 fufxlc(i,k) = tw(i,k)*el(i,1,k)/denfx
1798 fufylc(i,k) = tw(i,k)*el(i,2,k)/denfy
1799 fufzlc(i,k) = tw(i,k)*el(i,3,k)/denfz
1806 fufx(j,k) = fufx(j,k) + fufxlc(i,k)*el(i,j,k)
1807 fufy(j,k) = fufy(j,k) + fufylc(i,k)*el(i,j,k)
1808 fufz(j,k) = fufz(j,k) + fufzlc(i,k)*el(i,j,k)
1813 fufxlc(1,k) = tw(1,k)/denfx
1814 fufylc(2,k) = tw(2,k)/denfy
1815 fufzlc(3,k) = tw(3,k)/denfz
1816 fufx(1,k) = fufxlc(1,k)
1817 fufy(2,k) = fufylc(2,k)
1818 fufz(3,k) = fufzlc(3,k)
1823 xarm = xyz(1,kg) - refpt(1)
1824 yarm = xyz(2,kg) - refpt(2)
1825 zarm = xyz(3,kg) - refpt(3)
1829 mufx(1,k) = yarm*fufx(3,k) - zarm*fufx(2,k)
1830 mufx(2,k) = zarm*fufx(1,k) - xarm*fufx(3,k)
1831 mufx(3,k) = xarm*fufx(2,k) - yarm*fufx(1,k)
1835 mufy(1,k) = yarm*fufy(3,k) - zarm*fufy(2,k)
1836 mufy(2,k) = zarm*fufy(1,k) - xarm*fufy(3,k)
1837 mufy(3,k) = xarm*fufy(2,k) - yarm*fufy(1,k)
1841 mufz(1,k) = yarm*fufz(3,k) - zarm*fufz(2,k)
1842 mufz(2,k) = zarm*fufz(1,k) - xarm*fufz(3,k)
1843 mufz(3,k) = xarm*fufz(2,k) - yarm*fufz(1,k)
1848 tfufx(j) = tfufx(j) + fufx(j,k)
1849 tfufy(j) = tfufy(j) + fufy(j,k)
1850 tfufz(j) = tfufz(j) + fufz(j,k)
1851 tmufx(j) = tmufx(j) + mufx(j,k)
1852 tmufy(j) = tmufy(j) + mufy(j,k)
1853 tmufz(j) = tmufz(j) + mufz(j,k)
1868 SUBROUTINE rbe3um(INRBE3,ILRBE3,EL,TW,RW,XYZ,REFPT,CGMX,CGMY,CGMZ,
1869 * FUMXLC,FUMYLC,FUMZLC,MXLC,MYLC,MZLC,
1870 * FUMX,FUMY,FUMZ,MX,MY,MZ,MUMX,MUMY,MUMZ,
1871 * TFUMX,TFUMY,TFUMZ,TMUMX,TMUMY,TMUMZ,
1872 * AVEREF,DENMX,DENMY,DENMZ,NG ,IROT)
1876#include "implicit_f.inc"
1878 INTEGER INRBE3(NG), ILRBE3(NG)
1880 * el(3,3,*),tw(3,ng), rw(3,ng), xyz(3,*),
1881 * refpt(3), cgmx(3), cgmy(3), cgmz(3),
1882 * fumxlc(3,ng), fumylc(3,ng), fumzlc(3,ng),
1883 * mxlc(3,ng), mylc(3,ng), mzlc(3,ng),
1884 * fumx(3,ng), fumy(3,ng), fumz(3,ng),
1885 * mx(3,ng), my(3,ng), mz(3,ng),
1886 * mumx(3,ng), mumy(3,ng), mumz(3,ng),
1887 * tfumx(3), tfumy(3), tfumz(3),
1888 * tmumx(3), tmumy(3), tmumz(3)
1890 * averef, denmx, denmy, denmz,xarm, yarm, zarm
1891 INTEGER I, J, K, KG, IELSUB
1895 CALL zero1(fumx,3*ng)
1896 CALL zero1(fumy,3*ng)
1897 CALL zero1(fumz,3*ng)
1915 IF (ielsub > 0)
THEN
1922 * ( el(i,3,k)*(xyz(2,kg) - cgmx(2)) -
1923 * el(i,2,k)*(xyz(3,kg) - cgmx(3))
1925 fumylc(i,k) = tw(i,k)*
1926 * ( el(i,1,k)*(xyz(3,kg) - cgmy(3)) -
1927 * el(i,3,k)*(xyz(1,kg) - cgmy(1))
1929 fumzlc(i,k) = tw(i,k)*
1930 * ( el(i,2,k)*(xyz(1,kg) - cgmz(1)) -
1931 * el(i,1,k)*(xyz(2,kg) - cgmz(2))
1939 fumx(j,k) = fumx(j,k) + fumxlc(i,k)*el(i,j,k)
1940 fumy(j,k) = fumy(j,k) + fumylc(i,k)*el(i,j,k)
1941 fumz(j,k) = fumz(j,k) + fumzlc(i,k)*el(i,j,k)
1946 fumxlc(2,k) = -tw(2,k)*(xyz(3,kg) - cgmx(3))/denmx
1947 fumxlc(3,k) = tw(3,k)*(xyz(2,kg) - cgmx(2))/denmx
1948 fumylc(1,k) = tw(1,k)*(xyz(3,kg) - cgmy(3))/denmy
1949 fumylc(3,k) = -tw(3,k)*(xyz(1,kg) - cgmy(1))/denmy
1950 fumzlc(1,k) = -tw(1,k)*(xyz(2,kg) - cgmz(2))/denmz
1951 fumzlc(2,k) = tw(2,k)*(xyz(1,kg) - cgmz(1))/denmz
1953 fumx(2,k) = fumxlc(2,k)
1954 fumx(3,k) = fumxlc(3,k)
1955 fumy(1,k) = fumylc(1,k)
1956 fumy(3,k) = fumylc(3,k)
1957 fumz(1,k) = fumzlc(1,k)
1958 fumz(2,k) = fumzlc(2,k)
1963 xarm = xyz(1,kg) - refpt(1)
1964 yarm = xyz(2,kg) - refpt(2)
1965 zarm = xyz(3,kg) - refpt(3)
1967 mumx(1,k) = yarm*fumx(3,k) - zarm*fumx(2,k)
1968 mumx(2,k) = zarm*fumx(1,k) - xarm*fumx(3,k)
1969 mumx(3,k) = xarm*fumx(2,k) - yarm*fumx(1,k)
1973 mumy(1,k) = yarm*fumy(3,k) - zarm*fumy(2,k)
1974 mumy(2,k) = zarm*fumy(1,k) - xarm*fumy(3,k)
1975 mumy(3,k) = xarm*fumy(2,k) - yarm*fumy(1,k)
1979 mumz(1,k) = yarm*fumz(3,k) - zarm*fumz(2,k)
1980 mumz(2,k) = zarm*fumz(1,k) - xarm*fumz(3,k)
1981 mumz(3,k) = xarm*fumz(2,k) - yarm*fumz(1,k)
1989 IF (ielsub > 0)
THEN
1995 mxlc(i,k) = averef**2*rw(i,k)*el(i,1,k)/denmx
1996 mylc(i,k) = averef**2*rw(i,k)*el(i,2,k)/denmy
1997 mzlc(i,k) = averef**2*rw(i,k)*el(i,3,k)/denmz
2004 mx(j,k) = mx(j,k) + mxlc(i,k)*el(i,j,k)
2005 my(j,k) = my(j,k) + mylc(i,k)*el(i,j,k)
2006 mz(j,k) = mz(j,k) + mzlc(i,k)*el(i,j,k)
2011 mxlc(1,k) = averef**2*rw(1,k)/denmx
2012 mylc(2,k) = averef**2*rw(2,k)/denmy
2013 mzlc(3,k) = averef**2*rw(3,k)/denmz
2021 mumx(j,k) = mumx(j,k) + mx(j,k)
2022 mumy(j,k) = mumy(j,k) + my(j,k)
2023 mumz(j,k) = mumz(j,k) + mz(j,k)
2034 tfumx(j) = tfumx(j) + fumx(j,k)
2035 tfumy(j) = tfumy(j) + fumy(j,k)
2036 tfumz(j) = tfumz(j) + fumz(j,k)
2037 tmumx(j) = tmumx(j) + mumx(j,k)
2038 tmumy(j) = tmumy(j) + mumy(j,k)
2039 tmumz(j) = tmumz(j) + mumz(j,k)