C JAUCAU SOURCE CHAT 11/03/16 21:25:52 6902 subroutine jaucau(NBNN,nbsh,tab1,Ncoele,NBPTEL,SHPTOT,XE1 1 ,XE2, BGENE, SHPWRK,tab,KCAS,KERRE,mwrk5,ipmint,mele) implicit real*8(a-h,o-z) implicit integer (i-n) -INC SMINTE -INC CCOPTIO SEGMENT MWRK5 REAL*8 BGR(NGRA,LRE),BB(2,NGRA),gradi(ngra),R(ngra),u(ngra) REAL*8 TENS(9),tentra(9),xddls2(lre) ENDSEGMENT dimension xe1(3,nbnn),xe2(3,nbnn) dimension tab(nbptel,*),shpwrk(6,NBNN),shptot(6,NBNN,*) dimension tab1(nbptel,*),bgene(*) C KERRE=0 C C MISE A ZERO DES CONTRAINTES OU DES DEFORMATIONS C DO 50 IA=1,NBPTEL DO 50 IB=1,NCOELE TAB(IA,IB)=0.D0 50 CONTINUE xxr=1.d0 if(kcas.eq.2) xxr=2.d0 xxzero=0.d0 iipdpg=0 ngra=gradi(/1) lre=xddls2(/1) minte=ipmint NHRM=NIFOUR do 51 igau=1,nbptel CALL BGRMAS(iGau,mele,nbnn,LRE,IFOUR,NGRA,NIFOUR,XE1, . xXZero,SHPTOT,SHPWRK,BB,BGR,DJAC,IIPDPG) ia=0 do iou=1,NBNN do iyu=1,idim ia=ia+1 xddls2(ia)= XE2(iyu,iou)-xe1(iyu,iou) enddo enddo CALL BGRDEP(BGR,NGRA,XDDLs2,LRE,GRADI) if(idim.eQ.2) then gradi(1)=gradi(1)+1.D0 gradi(4)=gradi(4)+1.D0 ELSE IF(IDIM.EQ.3) THEN gradi(1)=gradi(1)+1.D0 gradi(5)=gradi(5)+1.D0 gradi(9)=gradi(9)+1.D0 ENDIF CALL POLA2(gradi,R,U,IDIM) * fait le rtens R.A.Rt on utilise u pour mettre Rt * et on met le tenseur dans le tableau tens * attention, vu le stockage R est en fait Rt if(idim.eq.2) then U(1)=r(1) u(2)=r(3) U(3)=R(2) u(4)=R(4) tens(1)=tab1(igau,1) tens(2)=tab1(igau,4)/xxr tens(3)=tab1(igau,4)/xxr tens(4)=tab1(igau,2) elseif(idim.eq.3) then U(1)=r(1) u(2)=r(4) U(3)=R(7) u(4)=R(2) u(5)=r(5) u(6)=r(8) u(7)=r(3) u(8)=r(6) u(9)=r(9) tens(1)=tab1(igau,1) tens(2)=tab1(igau,4)/xxr tens(3)=tab1(igau,5)/xxr tens(4)=tens(2) tens(5)=tab1(igau,2) tens(6)=tab1(igau,6)/xxr tens(7)=tens(3) tens(8)=tens(6) tens(9)=tab1(igau,3) else write(6,*)' idim est ni 2 ni 3 stop' stop endif CALL MULMAT(tentra,tens,R,IDIM,IDIM,IDIM) CALL MULMAT(tens,U,Tentra,IDIM,IDIM,IDIM) if(idim.eq.2) then tab(igau,1)=tens(1) tab(igau,2)=tens(4) tab(igau,4)=tens(2)*xxr else tab(igau,1)=tens(1) tab(igau,2)=tens(5) tab(igau,3)=tens(9) tab(igau,4)=tens(2)*xxr tab(igau,5)=tens(3)*xxr tab(igau,6)=tens(6)*xxr endif 51 CONTINUE return end