1*59599516SKenneth E. Jansen subroutine getstrl( y, x, ien, strnrm, shgl, shp ) 2*59599516SKenneth E. Jansen 3*59599516SKenneth E. Jansen include "common.h" 4*59599516SKenneth E. Jansen 5*59599516SKenneth E. Jansen dimension y(nshg,5) 6*59599516SKenneth E. Jansen dimension x(numnp,3), xl(npro,nenl,3) 7*59599516SKenneth E. Jansen dimension ien(npro,nshl), yl(npro,nshl,5), 8*59599516SKenneth E. Jansen & u1(npro), u2(npro), 9*59599516SKenneth E. Jansen & u3(npro), dxdxi(npro,nsd,nsd), 10*59599516SKenneth E. Jansen & strnrm(npro,maxsh), dxidx(npro,nsd,nsd), 11*59599516SKenneth E. Jansen & shgl(nsd,nshl,maxsh), shg(npro,nshl,nsd), 12*59599516SKenneth E. Jansen & shp(nshl,maxsh) 13*59599516SKenneth E. Jansen dimension tmp(npro), fresli(npro,24) 14*59599516SKenneth E. Jansen 15*59599516SKenneth E. Jansen call localy (y, yl, ien, 5, 'gather ') 16*59599516SKenneth E. Jansen call localx (x, xl, ien, 3, 'gather ') 17*59599516SKenneth E. Jansenc 18*59599516SKenneth E. Jansen 19*59599516SKenneth E. Jansen if(matflg(1,1).eq.0) then ! compressible 20*59599516SKenneth E. Jansen yl (:,:,1) = yl(:,:,1) / (Rgas * yl(:,:,5)) 21*59599516SKenneth E. Jansen else 22*59599516SKenneth E. Jansen yl (:,:,1) = one 23*59599516SKenneth E. Jansen endif 24*59599516SKenneth E. Jansen 25*59599516SKenneth E. Jansen do intp = 1, ngauss 26*59599516SKenneth E. Jansen 27*59599516SKenneth E. Jansenc calculate the metrics 28*59599516SKenneth E. Jansenc 29*59599516SKenneth E. Jansenc 30*59599516SKenneth E. Jansenc.... ---------------------> Element Metrics <----------------------- 31*59599516SKenneth E. Jansenc 32*59599516SKenneth E. Jansenc.... compute the deformation gradient 33*59599516SKenneth E. Jansenc 34*59599516SKenneth E. Jansen dxdxi = zero 35*59599516SKenneth E. Jansenc 36*59599516SKenneth E. Jansen do n = 1, nenl 37*59599516SKenneth E. Jansen dxdxi(:,1,1) = dxdxi(:,1,1) + xl(:,n,1) * shgl(1,n,intp) 38*59599516SKenneth E. Jansen dxdxi(:,1,2) = dxdxi(:,1,2) + xl(:,n,1) * shgl(2,n,intp) 39*59599516SKenneth E. Jansen dxdxi(:,1,3) = dxdxi(:,1,3) + xl(:,n,1) * shgl(3,n,intp) 40*59599516SKenneth E. Jansen dxdxi(:,2,1) = dxdxi(:,2,1) + xl(:,n,2) * shgl(1,n,intp) 41*59599516SKenneth E. Jansen dxdxi(:,2,2) = dxdxi(:,2,2) + xl(:,n,2) * shgl(2,n,intp) 42*59599516SKenneth E. Jansen dxdxi(:,2,3) = dxdxi(:,2,3) + xl(:,n,2) * shgl(3,n,intp) 43*59599516SKenneth E. Jansen dxdxi(:,3,1) = dxdxi(:,3,1) + xl(:,n,3) * shgl(1,n,intp) 44*59599516SKenneth E. Jansen dxdxi(:,3,2) = dxdxi(:,3,2) + xl(:,n,3) * shgl(2,n,intp) 45*59599516SKenneth E. Jansen dxdxi(:,3,3) = dxdxi(:,3,3) + xl(:,n,3) * shgl(3,n,intp) 46*59599516SKenneth E. Jansen enddo 47*59599516SKenneth E. Jansenc 48*59599516SKenneth E. Jansenc.... compute the inverse of deformation gradient 49*59599516SKenneth E. Jansenc 50*59599516SKenneth E. Jansen dxidx(:,1,1) = dxdxi(:,2,2) * dxdxi(:,3,3) 51*59599516SKenneth E. Jansen & - dxdxi(:,3,2) * dxdxi(:,2,3) 52*59599516SKenneth E. Jansen dxidx(:,1,2) = dxdxi(:,3,2) * dxdxi(:,1,3) 53*59599516SKenneth E. Jansen & - dxdxi(:,1,2) * dxdxi(:,3,3) 54*59599516SKenneth E. Jansen dxidx(:,1,3) = dxdxi(:,1,2) * dxdxi(:,2,3) 55*59599516SKenneth E. Jansen & - dxdxi(:,1,3) * dxdxi(:,2,2) 56*59599516SKenneth E. Jansen tmp = one / ( dxidx(:,1,1) * dxdxi(:,1,1) 57*59599516SKenneth E. Jansen & + dxidx(:,1,2) * dxdxi(:,2,1) 58*59599516SKenneth E. Jansen & + dxidx(:,1,3) * dxdxi(:,3,1) ) 59*59599516SKenneth E. Jansen dxidx(:,1,1) = dxidx(:,1,1) * tmp 60*59599516SKenneth E. Jansen dxidx(:,1,2) = dxidx(:,1,2) * tmp 61*59599516SKenneth E. Jansen dxidx(:,1,3) = dxidx(:,1,3) * tmp 62*59599516SKenneth E. Jansen dxidx(:,2,1) = (dxdxi(:,2,3) * dxdxi(:,3,1) 63*59599516SKenneth E. Jansen & - dxdxi(:,2,1) * dxdxi(:,3,3)) * tmp 64*59599516SKenneth E. Jansen dxidx(:,2,2) = (dxdxi(:,1,1) * dxdxi(:,3,3) 65*59599516SKenneth E. Jansen & - dxdxi(:,3,1) * dxdxi(:,1,3)) * tmp 66*59599516SKenneth E. Jansen dxidx(:,2,3) = (dxdxi(:,2,1) * dxdxi(:,1,3) 67*59599516SKenneth E. Jansen & - dxdxi(:,1,1) * dxdxi(:,2,3)) * tmp 68*59599516SKenneth E. Jansen dxidx(:,3,1) = (dxdxi(:,2,1) * dxdxi(:,3,2) 69*59599516SKenneth E. Jansen & - dxdxi(:,2,2) * dxdxi(:,3,1)) * tmp 70*59599516SKenneth E. Jansen dxidx(:,3,2) = (dxdxi(:,3,1) * dxdxi(:,1,2) 71*59599516SKenneth E. Jansen & - dxdxi(:,1,1) * dxdxi(:,3,2)) * tmp 72*59599516SKenneth E. Jansen dxidx(:,3,3) = (dxdxi(:,1,1) * dxdxi(:,2,2) 73*59599516SKenneth E. Jansen & - dxdxi(:,1,2) * dxdxi(:,2,1)) * tmp 74*59599516SKenneth E. Jansenc 75*59599516SKenneth E. Jansen 76*59599516SKenneth E. Jansen fresli=zero 77*59599516SKenneth E. Jansen do i=1,nshl 78*59599516SKenneth E. Jansen fresli(:,22) = fresli(:,22)+shp(i,intp)*yl(:,i,1) ! density at qpt 79*59599516SKenneth E. Jansenc fresli(:,24) = fresli(:,24)+shp(i,intp)*yl(:,i,5) !temperature at qpt 80*59599516SKenneth E. Jansen enddo 81*59599516SKenneth E. Jansenc 82*59599516SKenneth E. Jansenc 83*59599516SKenneth E. Jansenc fresli(:,22)=fresli(:,22)*wght 84*59599516SKenneth E. Jansenc fresli(:,24)=fresli(:,24)*wght 85*59599516SKenneth E. Jansen 86*59599516SKenneth E. Jansen 87*59599516SKenneth E. Jansen do n = 1,nshl 88*59599516SKenneth E. Jansen shg(:,n,1) = (shgl(1,n,intp) * dxidx(:,1,1) 89*59599516SKenneth E. Jansen & + shgl(2,n,intp) * dxidx(:,2,1) 90*59599516SKenneth E. Jansen & + shgl(3,n,intp) * dxidx(:,3,1)) 91*59599516SKenneth E. Jansen shg(:,n,2) = (shgl(1,n,intp) * dxidx(:,1,2) 92*59599516SKenneth E. Jansen & + shgl(2,n,intp) * dxidx(:,2,2) 93*59599516SKenneth E. Jansen & + shgl(3,n,intp) * dxidx(:,3,2)) 94*59599516SKenneth E. Jansen shg(:,n,3) = (shgl(1,n,intp) * dxidx(:,1,3) 95*59599516SKenneth E. Jansen & + shgl(2,n,intp) * dxidx(:,2,3) 96*59599516SKenneth E. Jansen & + shgl(3,n,intp) * dxidx(:,3,3)) 97*59599516SKenneth E. Jansen enddo 98*59599516SKenneth E. Jansen 99*59599516SKenneth E. Jansen do j=10,12 ! normal strainrate u_{i,i} no sum on i 100*59599516SKenneth E. Jansen ig=j-9 101*59599516SKenneth E. Jansen iv=j-8 102*59599516SKenneth E. Jansen do i=1,nshl 103*59599516SKenneth E. Jansen fresli(:,j) = fresli(:,j)+shg(:,i,ig)*yl(:,i,iv) 104*59599516SKenneth E. Jansen enddo 105*59599516SKenneth E. Jansen enddo 106*59599516SKenneth E. Jansen 107*59599516SKenneth E. Jansenc shear stresses NOTE there may be faster ways to do this 108*59599516SKenneth E. Jansenc check agains CM5 code for speed WTP 109*59599516SKenneth E. Jansen 110*59599516SKenneth E. Jansen do i=1,nshl 111*59599516SKenneth E. Jansen fresli(:,13) = fresli(:,13)+shg(:,i,2)*yl(:,i,2) 112*59599516SKenneth E. Jansen & +shg(:,i,1)*yl(:,i,3) 113*59599516SKenneth E. Jansen fresli(:,14) = fresli(:,14)+shg(:,i,3)*yl(:,i,2) 114*59599516SKenneth E. Jansen & +shg(:,i,1)*yl(:,i,4) 115*59599516SKenneth E. Jansen fresli(:,15) = fresli(:,15)+shg(:,i,3)*yl(:,i,3) 116*59599516SKenneth E. Jansen & +shg(:,i,2)*yl(:,i,4) 117*59599516SKenneth E. Jansen enddo 118*59599516SKenneth E. Jansen 119*59599516SKenneth E. Jansen 120*59599516SKenneth E. Jansen fresli(:,13) = pt5 * fresli(:,13) 121*59599516SKenneth E. Jansen fresli(:,14) = pt5 * fresli(:,14) 122*59599516SKenneth E. Jansen fresli(:,15) = pt5 * fresli(:,15) 123*59599516SKenneth E. Jansen 124*59599516SKenneth E. Jansen strnrm(:,intp) = fresli(:,22) * sqrt( 125*59599516SKenneth E. Jansen & two * (fresli(:,10)**2 + fresli(:,11)**2 + fresli(:,12)**2) 126*59599516SKenneth E. Jansen & + four * ( fresli(:,13)**2 + fresli(:,14)**2 + 127*59599516SKenneth E. Jansen & fresli(:,15)**2 ) ) 128*59599516SKenneth E. Jansen 129*59599516SKenneth E. Jansen 130*59599516SKenneth E. Jansen enddo !end of loop over integration points 131*59599516SKenneth E. Jansen 132*59599516SKenneth E. Jansen 133*59599516SKenneth E. Jansen return 134*59599516SKenneth E. Jansen end 135