46 . IGRNOD ,ISKN ,LXINTD ,IKINE ,IDDLEVEL,
47 . NOM_OPT,ITAGND ,GRNOD_UID,UNITAB,LSUBMODEL )
64#include "implicit_f.inc"
73#include "tabsiz_c.inc"
80 INTEGER (NRBE3L,*), LRBE3(*), ITAB(*),ITABM1(*),
81 . ISKN(LISKN,*),LXINTD,
82 . iddlevel,ikine(*),itagnd(*)
83 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
85 INTEGER NOM_OPT(LNOPT1,*)
87 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
93 INTEGER I, N, K, NSL, NUSER, NM, NI, NI_OK,
94 . ISK, INGU, IGM, J, IAD,NS,NN,J6(6),JJ,II,
95 . ic,ic1,ic2,irot,isks,iads,imodif,
96 . idir,nrb,
id,uid,sub_index,iform
98 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IKINE1
99 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISKEW0
100 my_real,
DIMENSION(:,:),
ALLOCATABLE :: wi
101 CHARACTER(LEN=NCHARTITLE) :: TITR
102 CHARACTER(LEN=NCHARFIELD) :: STRING
110 DATA mess/
'INTERPOLATION CONSTRAINT BODY '/
128 CALL my_alloc(ikine1,3*numnod)
129 CALL my_alloc(iskew0,slrbe3/2)
130 CALL my_alloc(wi,6,numnod)
134 is_available = .false.
166 . submodel_index = sub_index)
168 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,i),ltitr)
170 CALL hm_get_intv(
'dependentnode',nsl,is_available,lsubmodel)
171 CALL hm_get_intv(
'LTX',j6(1),is_available,lsubmodel)
172 CALL hm_get_intv(
'LTY',j6(2),is_available,lsubmodel)
173 CALL hm_get_intv(
'LTZ',j6(3),is_available,lsubmodel)
174 CALL hm_get_intv('lrx
',J6(4),IS_AVAILABLE,LSUBMODEL)
175 CALL HM_GET_INTV('lry
',J6(5),IS_AVAILABLE,LSUBMODEL)
176 CALL HM_GET_INTV('lrz
',J6(6),IS_AVAILABLE,LSUBMODEL)
177 CALL HM_GET_INTV('nset
',NN,IS_AVAILABLE,LSUBMODEL)
178 CALL HM_GET_INTV('i_modif
',IMODIF,IS_AVAILABLE,LSUBMODEL)
179 CALL HM_GET_INTV('iform
',IFORM,IS_AVAILABLE,LSUBMODEL)
184 IF (IMODIF==0) IMODIF =1
185! IF (IMODIF==4) IRBE3(9,I) =1
190 IF (IFORM==0) IFORM =1
196 NS = USR2SYS(NSL,ITABM1,MESS,NUSER)
197 IC1=J6(1)*4 +J6(2)*2 +J6(3)
198 IC2=J6(4)*4 +J6(5)*2 +J6(6)
200 IF (IC==0) IC =7*512+7*64
202 IF(ITAGND(NS)/=0) THEN
204 CALL ANCMSG(MSGID=1208,
206 . ANMODE=ANINFO_BLIND_1,
218 CALL HM_GET_FLOAT_ARRAY_INDEX('independentnodesetcoeffs
',W,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
219 CALL HM_GET_INT_ARRAY_INDEX('tx
',J6(1),J,IS_AVAILABLE,LSUBMODEL)
220 CALL HM_GET_INT_ARRAY_INDEX('ty
',J6(2),J,IS_AVAILABLE,LSUBMODEL)
221 CALL HM_GET_INT_ARRAY_INDEX('tz
',J6(3),J,IS_AVAILABLE,LSUBMODEL)
222 CALL HM_GET_INT_ARRAY_INDEX('rx
',J6(4),J,IS_AVAILABLE,LSUBMODEL)
223 CALL HM_GET_INT_ARRAY_INDEX('ry
',J6(5),J,IS_AVAILABLE,LSUBMODEL)
224 CALL HM_GET_INT_ARRAY_INDEX('rz
',J6(6),J,IS_AVAILABLE,LSUBMODEL)
225 CALL HM_GET_INT_ARRAY_INDEX('skew_array
',ISK,J,IS_AVAILABLE,LSUBMODEL)
226 CALL HM_GET_INT_ARRAY_INDEX('independentnodesets
',INGU,J,IS_AVAILABLE,LSUBMODEL)
227.OR.
IF (W==ZEROIMODIF==3) W=ONE
230 CALL C_HASH_FIND(GRNOD_UID,INGU,IGM)
232 CALL ANCMSG(MSGID=53,
238 NM = IGRNOD(IGM)%NENTITY
239 LRBE3(IAD+1:IAD+NM) = IGRNOD(IGM)%ENTITY(1:NM)
244 IF ((J6(1)+J6(2)+J6(3)+J6(4)+J6(5)+J6(6))==0) THEN
250 DO JJ=0,NUMSKW+MIN(1,NSPCOND)*NUMSPH+NSUBMOD
251 IF(ISK==ISKN(4,JJ+1)) THEN
256 CALL ANCMSG(MSGID=184,
268 LRBE3(IADS+IAD+K)=ISKS
274 IF (WI(JJ,NI)==ZERO) THEN
277 CALL ANCMSG(MSGID=705,
286 IF(ITAGND(NI)/=0) THEN
288 CALL ANCMSG(MSGID=1211,
297 FRBE3(JJ,IAD+K) = WI(JJ,NI)
302 IRBE3(5,I) = IAD-IRBE3(1,I)
305! optimisation: only concerned nodes are set to zero
306! avoid to set to 0 all nodes (quadratic loop on NRBE3 and NUMNOD)
307 DO NI_OK = IRBE3(1,I)+1,IRBE3(1,I)+IRBE3(5,I)
309 WI(JJ,LRBE3(NI_OK)) = ZERO
315 IF (IPRI<5) WRITE(IOUT,1103)
322 IF (IMODIF/=2) IRBE3(8,I)=4
323 CALL PRERBE3FR(IRBE3 ,I ,J6 ,J6(4) )
325 WRITE(IOUT,1100) NUSER,ITAB(NS),J6,NM,IMODIF,IFORM
328 WRITE(IOUT,1102) ITAB(LRBE3(IAD+J)),ISKEW0(IAD+J),
329 . (FRBE3(JJ,IAD+J),JJ=1,6)
334 WRITE(IOUT,1104) NUSER,ITAB(NS),J6,NM,IMODIF,IFORM
336 LXINTD = LXINTD + NM/4 + 1
337 IF (IDDLEVEL == 0) THEN
339 CALL KINSET(4096,ITAB(NS),IKINE(NS),IDIR,0,
344 IF (NSPMD==1) LXINTD = 0
352 .' interpolation constraint body(rbe3)
'/
353 . ' ----------------------
'/)
354 1100 FORMAT( 5X,'number. . . . . . . . . . . . .
',I10
355 . /5X,'dependent node . . . . . . . . .
',I10
356 . /5X,'reference dof(trarot). . . . . . .
',3I1,1X,3I1
357 . /5X,'number of independent nodes. . .
',I10
358 . /5X,'flag of weighting modification .
',I10
359 . /5X,'flag of rbe3 formulation. . . .
',I10)
361 .' weighting factors of independent nodes
'/
362 .' -------------------
'/
363 .' node skew dir_tra_1 dir_tra_2
',
364 .' dir_tra_3 dir_rot_1 dir_rot_2
',
366 1102 FORMAT(3X,2I10,3X,6G20.13)
367 1103 FORMAT(' rbe3_id dependent_node ref_dof
#IND. IMODIF IFORM'/)
368 1104
FORMAT(3x,2i10,2x,3i1,1x,3i1,3i10)
557 SUBROUTINE rbe3chk(INRBE3 ,ILRBE3 ,NS ,XYZ ,FRBE3 ,
558 . SKEW ,NG ,IROT ,IMODIF ,WMIN ,
563#include "implicit_f.inc"
567#include "param_c.inc"
571 INTEGER INRBE3(*),ILRBE3(*),NG, NS,IROT,IMODIF,IERR,IPEN
574 . XYZ(3,*), FRBE3(6,*), SKEW(LSKEW,*),WMIN
578 INTEGER I, J, K,KG,NSNGLR,IELSUB,KDIAG
581 * tw(3,ng), rw(3,ng),
582 * fufxlc(3,ng), fufylc(3,ng), fufzlc(3,ng),
583 * fumxlc(3,ng), fumylc(3,ng), fumzlc(3,ng),
584 * mxlc(3,ng), mylc(3,ng), mzlc(3,ng),
585 * fufx(3,ng), fufy(3,ng), fufz(3,ng),
586 * mufx(3,ng), mufy(3,ng), mufz(3,ng),
587 * fumx(3,ng), fumy(3,ng), fumz(3,ng),
588 * mx(3,ng), my(3,ng), mz(3,ng),
589 * mumx(3,ng), mumy(3,ng), mumz(3,ng),
590 * flocal(3,ng,6), mlocal(3,ng,6),
591 * fbasic(3,ng,6), mbasic(3,ng,6),
592 * fdstnl(3,ng,6), mdstnl(3,ng,6),
593 * fdstnb(3,ng,6), mdstnb(3,ng,6),el(3,3,ng)
595 * denfx, denfy, denfz, denmx, denmy, denmz,
596 * refpt(3), cgmx(3), cgmy(3), cgmz(3), averef,
597 * tfufx(3), tfufy(3), tfufz(3),
598 * tmufx(3), tmufy(3), tmufz(3),
599 * tfumx(3), tfumy(3), tfumz(3),
600 * tmumx(3), tmumy(3), tmumz(3),
601 * a(6,6), c(6,6), t(3,3),smin,smax,mmax,tmax,
602 * xbar(3),rn(3),gamma(9),wi(ng)
606 CALL zero1(flocal,3*ng*6)
607 CALL zero1(mlocal,3*ng*6)
608 CALL zero1(fbasic,3*ng*6)
609 CALL zero1(mbasic,3*ng*6)
610 CALL zero1(fdstnl,3*ng*6)
611 CALL zero1(mdstnl,3*ng*6)
612 CALL zero1(fdstnb,3*ng*6)
613 CALL zero1(mdstnb,3*ng*6)
629 rw(i,k) = frbe3(i+3,k)
637 IF (ng == 2.AND.irot==0)
THEN
648 el(i,1,k) = skew(i,ielsub)
649 el(i,2,k) = skew(i+3,ielsub)
650 el(i,3,k) = skew(i+6,ielsub)
670 denfx = denfx + tw(i,k)*el(i,1,k)**2
671 denfy = denfy + tw(i,k)*el(i,2,k)**2
672 denfz = denfz + tw(i,k)*el(i,3,k)**2
675 denfx = denfx + tw(1,k)
676 denfy = denfy + tw(2,k)
677 denfz = denfz + tw(3,k)
680 averef = averef + sqrt( (xyz(1,kg) - refpt(1))**2 +
681 * (xyz(2,kg) - refpt(2))**2 +
682 * (xyz(3,kg) - refpt(3))**2 )
685 IF (abs(denfx) <= em20)
THEN
689 IF (abs(denfy) <= em20)
THEN
693 IF (abs(denfz) <= em20)
THEN
696 IF (ierr > 0)
GOTO 999
698 IF (averef == zero) averef = 1.0d0
700 IF (imodif==4.OR.ipen>0)
THEN
702 frbe3(1,k) = frbe3(1,k)/denfx
703 frbe3(2,k) = frbe3(2,k)/denfy
704 frbe3(3,k) = frbe3(3,k)/denfz
705 frbe3(4,k) = frbe3(4,k)/denfx
706 frbe3(5,k) = frbe3(5,k)/denfy
707 frbe3(6,k) = frbe3(6,k)/denfz
715 xbar(1:3) = xbar(1:3) + wi(k)*xyz(1:3,kg)
718 rn(1:3) = refpt(1:3)-xbar(1:3)
719 arm = rn(1)*rn(1)+rn(2)*rn(2)+rn(3)*rn(3)
723 rn(1:3) = xyz(1:3,kg)-xbar(1:3)
724 rndotrn =
max(rndotrn,rn(1)*rn(1)+rn(2)*rn(2)+rn(3)*rn(3))
726 IF (arm/rndotrn < em06) ipen =-2
732 rn(1:3) = xyz(1:3,kg)-xbar(1:3)
733 rndotrn = rn(1)*rn(1)+rn(2)*rn(2)+rn(3)*rn(3)
735 gamma(1) = gamma(1)+wi(k)*(rndotrn-rn(1)*rn(1))
736 gamma(2) = gamma(2)+wi(k)*( -rn(2)*rn(1))
737 gamma(3) = gamma(3)+wi(k)*( -rn(3)*rn(1))
738 gamma(4) = gamma(4)+wi(k)*( -rn(1)*rn(2))
739 gamma(5) = gamma(5)+wi(k)*(rndotrn-rn(2)*rn(2))
740 gamma(6) = gamma(6)+wi(k)*( -rn(3)*rn(2))
741 gamma(7) = gamma(7)+wi(k)*( -rn(1)*rn(3))
742 gamma(8) = gamma(8)+wi(k)*( -rn(2)*rn(3))
743 gamma(9) = gamma(9)+wi(k)*(rndotrn-rn(3)*rn(3))
745 det = (gamma(1)*(gamma(5)*gamma(9)-gamma(6)*gamma(8))-
746 * gamma(2)*(gamma(4)*gamma(9)-gamma(6)*gamma(7))+
747 * gamma(3)*(gamma(4)*gamma(8)-gamma(5)*gamma(7)))
749 gamma_max =
max(em20,gamma(1),gamma(5),gamma(9))
750 IF(abs(det/(gamma_max*gamma_max*gamma_max)) < em6) ierr = 400
753 IF (ierr > 0)
GOTO 999
767 cgmx(2) = cgmx(2) + tw(i,k)*el(i,3,k)**2*xyz(2,kg)
768 cgmx(3) = cgmx(3) + tw(i,k)*el(i,2,k)**2*xyz(3,kg)
772 cgmy(3) = cgmy(3) + tw(i,k)*el(i,1,k)**2*xyz(3,kg)
773 cgmy(1) = cgmy(1) + tw(i,k)*el(i,3,k)**2*xyz(1,kg)
777 cgmz(1) = cgmz(1) + tw(i,k)*el(i,2,k)**2*xyz(1,kg)
778 cgmz(2) = cgmz(2) + tw(i,k)*el(i,1,k)**2*xyz(2,kg)
782 cgmx(2) = cgmx(2) + tw(3,k)*xyz(2,kg)
783 cgmx(3) = cgmx(3) + tw(2,k)*xyz(3,kg)
785 cgmy(3) = cgmy(3) + tw(1,k)*xyz(3,kg)
786 cgmy(1) = cgmy(1) + tw(3,k)*xyz(1,kg)
788 cgmz(1) = cgmz(1) + tw(2,k)*xyz(1,kg)
789 cgmz(2) = cgmz(2) + tw(1,k)*xyz(2,kg)
792 cgmx(2) = cgmx(2)/denfz
793 cgmx(3) = cgmx(3)/denfy
795 cgmy(3) = cgmy(3)/denfx
796 cgmy(1) = cgmy(1)/denfz
798 cgmz(1) = cgmz(1)/denfy
799 cgmz(2) = cgmz(2)/denfx
819 denmx = denmx + rw(i,k)*el(i,1,k)**2*averef**2 +
820 * tw(i,k)*( el(i,3,k)*(xyz(2,kg) - cgmx(2)) -
821 * el(i,2,k)*(xyz(3,kg) - cgmx(3))
823 denmy = denmy + rw(i,k)*el(i,2,k)**2*averef**2 +
824 * tw(i,k)*( el(i,1,k)*(xyz(3,kg) - cgmy(3)) -
825 * el(i,3,k)*(xyz(1,kg) - cgmy(1))
827 denmz = denmz + rw(i,k)*el(i,3,k)**2*averef**2 +
828 * tw(i,k)*( el(i,2,k)*(xyz(1,kg) - cgmz(1)) -
829 * el(i,1,k)*(xyz(2,kg) - cgmz(2))
833 denmx = denmx + rw(1,k)*averef**2 +
834 * tw(2,k)*(xyz(3,kg) - cgmx(3))**2 +
835 * tw(3,k)*(xyz(2,kg) - cgmx(2))**2
836 denmy = denmy + rw(2,k)*averef**2 +
837 * tw(1,k)*(xyz(3,kg) - cgmy(3))**2 +
838 * tw(3,k)*(xyz(1,kg) - cgmy(1))**2
839 denmz = denmz + rw(3,k)*averef**2 +
840 * tw(2,k)*(xyz(1,kg) - cgmz(1))**2 +
841 * tw(1,k)*(xyz(2,kg) - cgmz(2))**2
849 IF (abs(denmx) <= em20)
THEN
853 IF (abs(denmy) <= em20)
THEN
857 IF (abs(denmz) <= em20)
THEN
861 smin =
min(abs(denmx),abs(denmy),abs(denmz))
862 smax =
max(abs(denmx),abs(denmy),abs(denmz))
864 IF (ierr > 0)
GOTO 999
866 IF (irot==0 .AND.(smax/smin)>thirty) ierr = -100
870 CALL rbe3uf(inrbe3,ilrbe3,el,tw,xyz,refpt,
871 * fufxlc,fufylc,fufzlc,fufx,fufy,fufz,mufx,mufy,mufz,
872 * tfufx,tfufy,tfufz,tmufx,tmufy,tmufz,
873 * denfx,denfy,denfz,ng)
879 CALL rbe3um(inrbe3,ilrbe3,el,tw,rw,xyz,refpt,cgmx,cgmy,cgmz,
880 * fumxlc,fumylc,fumzlc,mxlc,mylc,mzlc,
881 * fumx,fumy,fumz,mx,my,mz,mumx,mumy,mumz,
883 * averef,denmx,denmy,denmz,ng,irot )
925 IF (nsnglr /= 0)
THEN
930 CALL wrrinf(
'C(i,1)=',c(1,1),3)
931 CALL wrrinf(
'C(i,2)=',c(1,2),3)
932 CALL wrrinf(
'C(i,3)=',c(1,3),3)
934 IF (kdiag==0.AND.ierr==0)
RETURN
941 flocal(i,k,j) = c(1,j)*fufxlc(i,k) + c(2,j)*fufylc(i,k) +
942 * c(3,j)*fufzlc(i,k) + c(4,j)*fumxlc(i,k) +
943 * c(5,j)*fumylc(i,k) + c(6,j)*fumzlc(i,k)
944 mlocal(i,k,j) = c(4,j)*mxlc(i,k) + c(5,j)*mylc(i,k) +
946 fbasic(i,k,j) = c(1,j)*fufx(i,k) + c(2,j)*fufy(i,k) +
947 * c(3,j)*fufz(i,k) + c(4,j)*fumx(i,k) +
948 * c(5,j)*fumy(i,k) + c(6,j)*fumz(i,k)
949 mbasic(i,k,j) = c(4,j)*mx(i,k) + c(5,j)*my(i,k) +
961 fdstnl(i,k,j) = flocal(i,k,j)
962 mdstnl(i,k,j) = mlocal(i,k,j)
963 fdstnb(i,k,j) = fbasic(i,k,j)
964 mdstnb(i,k,j) = mbasic(i,k,j)
974 IF (mmax<abs(fdstnb(i,k,j))) mmax = abs(fdstnb(i,k,j))
985 IF (tmax<tw(i,k)) tmax=tw(i,k)
991 frbe3(1,k) =
max(wmin,frbe3(1,k))
992 frbe3(2,k) =
max(wmin,frbe3(2,k))
993 frbe3(3,k) =
max(wmin,frbe3(3,k))
1002 IF (kdiag >= 2)
THEN
1006 CALL wrrinf(
'TRAN_WGHTS',tw,3*ng)
1007 CALL wrrinf(
'ROT_WGHTS',rw,3*ng)
1008 CALL wrrinf(
'CGMX',cgmx,3)
1009 CALL wrrinf(
'CGMY',cgmy,3)
1010 CALL wrrinf(
'CGMZ',cgmz,3)
1011 CALL wrrinf(
'DENFX',denfx,1)
1012 CALL wrrinf(
'DENFY',denfy,1)
1013 CALL wrrinf(
'DENFZ',denfz,1)
1014 CALL wrrinf(
'DENMX',denmx,1)
1015 CALL wrrinf(
'DENMY',denmy,1)
1016 CALL wrrinf(
'DENMZ',denmz,1)
1017 CALL wrrinf(
'AVEREF',averef,1)
1019 IF (kdiag == 9.or.ierr/=0)
THEN
1020 CALL wrrinf(
'FDSTNB_ULFX@REF',fdstnb(1,1,1),3*ng)
1021 CALL wrrinf(
'FDSTNB_ULFY@REF',fdstnb(1,1,2),3*ng)
1022 CALL wrrinf(
'FDSTNB_ULFZ@REF',fdstnb(1,1,3),3*ng)
1023 CALL wrrinf(
'FDSTNB_ULMX@REF',fdstnb(1,1,4),3*ng)
1024 CALL wrrinf(
'FDSTNB_ULMY@REF',fdstnb(1,1,5),3*ng)
1025 CALL wrrinf(
'FDSTNB_ULMZ@REF',fdstnb(1,1,6),3*ng)
1026 CALL wrrinf(
'MDSTNB_ULFX@REF',mdstnb(1,1,1),3*ng)
1027 CALL wrrinf(
'MDSTNB_ULFY@REF',mdstnb(1,1,2),3*ng)
1028 CALL wrrinf(
'MDSTNB_ULFZ@REF',mdstnb(1,1,3),3*ng)
1029 CALL wrrinf(
'MDSTNB_ULMX@REF',mdstnb(1,1,4),3*ng)
1030 CALL wrrinf(
'MDSTNB_ULMY@REF',mdstnb(1,1,5),3*ng)
1031 CALL wrrinf(
'MDSTNB_ULMZ@REF',mdstnb(1,1,6),3*ng)
1033 IF (kdiag >= 30)
THEN
1034 CALL wrrinf(
'FDSTNL_ULFX@REF',fdstnl(1,1,1),3*ng)
1035 CALL wrrinf(
'FDSTNL_ULFY@REF',fdstnl(1,1,2),3*ng)
1036 CALL wrrinf(
'FDSTNL_ULFZ@REF',fdstnl(1,1,3),3*ng)
1037 CALL wrrinf(
'FDSTNL_ULMX@REF',fdstnl(1,1,4),3*ng)
1038 CALL wrrinf(
'FDSTNL_ULMY@REF',fdstnl(1,1,5),3*ng)
1039 CALL wrrinf(
'FDSTNL_ULMZ@REF',fdstnl(1,1,6),3*ng)
1040 CALL wrrinf(
'MDSTNL_ULFX@REF',mdstnl(1,1,1),3*ng)
1041 CALL wrrinf(
'MDSTNL_ULFY@REF',mdstnl(1,1,2),3*ng)
1042 CALL wrrinf(
'MDSTNL_ULFZ@REF',mdstnl(1,1,3),3*ng)
1043 CALL wrrinf(
'MDSTNL_ULMX@REF',mdstnl(1,1,4),3*ng)
1044 CALL wrrinf(
'MDSTNL_ULMY@REF',mdstnl(1,1,5),3*ng)
1045 CALL wrrinf(
'MDSTNL_ULMZ@REF',mdstnl(1,1,6),3*ng)
1061 SUBROUTINE rbe3uf(INRBE3,ILRBE3,EL,TW,XYZ,REFPT,
1062 * FUFXLC,FUFYLC,FUFZLC,
1063 * FUFX,FUFY,FUFZ,MUFX,MUFY,MUFZ,
1064 * TFUFX,TFUFY,TFUFZ,TMUFX,TMUFY,TMUFZ,
1065 * DENFX,DENFY,DENFZ,NG)
1069#include "implicit_f.inc"
1071 INTEGER INRBE3(NG), ILRBE3(NG)
1073 * EL(3,3,*),TW(3,NG), XYZ(3,*), (3),
1074 * FUFXLC(3,NG), FUFYLC(3,NG), FUFZLC(3,NG),
1075 * FUFX(3,NG), FUFY(3,NG), FUFZ(3,NG),
1076 * MUFX(3,NG), MUFY(3,NG), MUFZ(3,NG),
1077 * TFUFX(3), TFUFY(3), TFUFZ(3),
1078 * TMUFX(3), TMUFY(3), TMUFZ(3)
1080 * denfx, denfy, denfz,xarm, yarm, zarm
1081 INTEGER I, J, K, KG, IELSUB
1085 CALL zero1(fufx,3*ng)
1086 CALL zero1(fufy,3*ng)
1087 CALL zero1(fufz,3*ng)
1102 IF (ielsub > 0)
THEN
1108 fufxlc(i,k) = tw(i,k)*el(i,1,k)/denfx
1109 fufylc(i,k) = tw(i,k)*el(i,2,k)/denfy
1110 fufzlc(i,k) = tw(i,k)*el(i,3,k)/denfz
1117 fufx(j,k) = fufx(j,k) + fufxlc(i,k)*el(i,j,k)
1118 fufy(j,k) = fufy(j,k) + fufylc(i,k)*el(i,j,k)
1119 fufz(j,k) = fufz(j,k) + fufzlc(i,k)*el(i,j,k)
1124 fufxlc(1,k) = tw(1,k)/denfx
1125 fufylc(2,k) = tw(2,k)/denfy
1126 fufzlc(3,k) = tw(3,k)/denfz
1127 fufx(1,k) = fufxlc(1,k)
1128 fufy(2,k) = fufylc(2,k)
1129 fufz(3,k) = fufzlc(3,k)
1134 xarm = xyz(1,kg) - refpt(1)
1135 yarm = xyz(2,kg) - refpt(2)
1136 zarm = xyz(3,kg) - refpt(3)
1140 mufx(1,k) = yarm*fufx(3,k) - zarm*fufx(2,k)
1141 mufx(2,k) = zarm*fufx(1,k) - xarm*fufx(3,k)
1142 mufx(3,k) = xarm*fufx(2,k) - yarm*fufx(1,k)
1146 mufy(1,k) = yarm*fufy(3,k) - zarm*fufy(2,k)
1147 mufy(2,k) = zarm*fufy(1,k) - xarm*fufy(3,k)
1148 mufy(3,k) = xarm*fufy(2,k) - yarm*fufy(1,k)
1152 mufz(1,k) = yarm*fufz(3,k) - zarm*fufz(2,k)
1153 mufz(2,k) = zarm*fufz(1,k) - xarm*fufz(3,k)
1154 mufz(3,k) = xarm*fufz(2,k) - yarm*fufz(1,k)
1159 tfufx(j) = tfufx(j) + fufx(j,k)
1160 tfufy(j) = tfufy(j) + fufy(j,k)
1161 tfufz(j) = tfufz(j) + fufz(j,k)
1162 tmufx(j) = tmufx(j) + mufx(j,k)
1163 tmufy(j) = tmufy(j) + mufy(j,k)
1164 tmufz(j) = tmufz(j) + mufz(j,k)
1180 SUBROUTINE rbe3um(INRBE3,ILRBE3,EL,TW,RW,XYZ,REFPT,CGMX,CGMY,CGMZ,
1181 * FUMXLC,FUMYLC,FUMZLC,MXLC,MYLC,MZLC,
1182 * FUMX,FUMY,FUMZ,MX,MY,MZ,MUMX,MUMY,MUMZ,
1183 * TFUMX,TFUMY,TFUMZ,TMUMX,TMUMY,TMUMZ,
1184 * AVEREF,DENMX,DENMY,DENMZ,NG ,IROT)
1188#include "implicit_f.inc"
1190 INTEGER INRBE3(NG), ILRBE3(NG)
1192 * EL(3,3,*),TW(3,NG), RW(3,NG), XYZ(3,*),
1193 * REFPT(3), CGMX(3), CGMY(3), CGMZ(3),
1194 * fumxlc(3,ng), fumylc(3,ng), fumzlc(3,ng),
1195 * mxlc(3,ng), mylc(3,ng), mzlc(3,ng),
1196 * fumx(3,ng), fumy(3,ng), fumz(3,ng),
1197 * mx(3,ng), my(3,ng), mz(3,ng),
1198 * mumx(3,ng), mumy(3,ng), mumz(3,ng),
1199 * tfumx(3), tfumy(3), tfumz(3),
1200 * tmumx(3), tmumy(3), tmumz(3)
1202 * averef, denmx, denmy, denmz,xarm, yarm, zarm
1203 INTEGER I, J, K, KG, IELSUB
1207 CALL zero1(fumx,3*ng)
1208 CALL zero1(fumy,3*ng)
1209 CALL zero1(fumz,3*ng)
1227 IF (ielsub > 0)
THEN
1233 fumxlc(i,k) = tw(i,k)*
1234 * ( el(i,3,k)*(xyz(2,kg) - cgmx(2)) -
1235 * el(i,2,k)*(xyz(3,kg) - cgmx(3))
1237 fumylc(i,k) = tw(i,k)*
1238 * ( el(i,1,k)*(xyz(3,kg) - cgmy(3)) -
1239 * el(i,3,k)*(xyz(1,kg) - cgmy(1))
1241 fumzlc(i,k) = tw(i,k)*
1242 * ( el(i,2,k)*(xyz(1,kg) - cgmz(1)) -
1243 * el(i,1,k)*(xyz(2,kg) - cgmz(2))
1251 fumx(j,k) = fumx(j,k) + fumxlc(i,k)*el(i,j,k)
1252 fumy(j,k) = fumy(j,k) + fumylc(i,k)*el(i,j,k)
1253 fumz(j,k) = fumz(j,k) + fumzlc(i,k)*el(i,j,k)
1259 fumxlc(3,k) = tw(3,k)*(xyz(2,kg) - cgmx(2))/denmx
1261 fumylc(3,k) = -tw(3,k)*(xyz(1,kg) - cgmy(1))/denmy
1263 fumzlc(2,k) = tw(2,k)*(xyz(1,kg) - cgmz(1))/denmz
1265 fumx(2,k) = fumxlc(2,k)
1266 fumx(3,k) = fumxlc(3,k)
1267 fumy(1,k) = fumylc(1,k)
1268 fumy(3,k) = fumylc(3,k)
1269 fumz(1,k) = fumzlc(1,k)
1270 fumz(2,k) = fumzlc(2,k)
1275 xarm = xyz(1,kg) - refpt(1)
1276 yarm = xyz(2,kg) - refpt(2)
1277 zarm = xyz(3,kg) - refpt(3)
1279 mumx(1,k) = yarm*fumx(3,k) - zarm*fumx(2,k)
1280 mumx(2,k) = zarm*fumx(1,k) - xarm*fumx(3,k)
1281 mumx(3,k) = xarm*fumx(2,k) - yarm*fumx(1,k)
1285 mumy(1,k) = yarm*fumy(3,k) - zarm*fumy(2,k)
1286 mumy(2,k) = zarm*fumy(1,k) - xarm*fumy(3,k)
1287 mumy(3,k) = xarm*fumy(2,k) - yarm*fumy(1,k)
1291 mumz(1,k) = yarm*fumz(3,k) - zarm*fumz(2,k)
1292 mumz(2,k) = zarm*fumz(1,k) - xarm*fumz(3,k)
1293 mumz(3,k) = xarm*fumz(2,k) - yarm*fumz(1,k)
1307 mxlc(i,k) = averef**2*rw(i,k)*el(i,1,k)/denmx
1308 mylc(i,k) = averef**2*rw(i,k)*el(i,2,k)/denmy
1309 mzlc(i,k) = averef**2*rw(i,k)*el(i,3,k)/denmz
1316 mx(j,k) = mx(j,k) + mxlc(i,k)*el(i,j,k)
1317 my(j,k) = my(j,k) + mylc(i,k)*el(i,j,k)
1318 mz(j,k) = mz(j,k) + mzlc(i,k)*el(i,j,k)
1323 mxlc(1,k) = averef**2*rw(1,k)/denmx
1324 mylc(2,k) = averef**2*rw(2,k)/denmy
1325 mzlc(3,k) = averef**2*rw(3,k)/denmz
1333 mumx(j,k) = mumx(j,k) + mx(j,k)
1334 mumy(j,k) = mumy(j,k) + my(j,k)
1335 mumz(j,k) = mumz(j,k) + mz(j,k)
1346 tfumx(j) = tfumx(j) + fumx(j,k)
1347 tfumy(j) = tfumy(j) + fumy(j,k)
1348 tfumz(j) = tfumz(j) + fumz(j,k)
1349 tmumx(j) = tmumx(j) + mumx(j,k)
1350 tmumy(j) = tmumy(j) + mumy(j,k)
1351 tmumz(j) = tmumz(j) + mumz(j,k)