1*59599516SKenneth E. Jansen subroutine e3qvar (yl, shgl, 2*59599516SKenneth E. Jansen & xl, g1yi, 3*59599516SKenneth E. Jansen & g2yi, g3yi, shg, 4*59599516SKenneth E. Jansen & dxidx, WdetJ ) 5*59599516SKenneth E. Jansenc 6*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 7*59599516SKenneth E. Jansenc 8*59599516SKenneth E. Jansenc This routine computes the variables at integration point 9*59599516SKenneth E. Jansenc necessary for the computation of the diffusive flux vector. 10*59599516SKenneth E. Jansenc 11*59599516SKenneth E. Jansenc input: 12*59599516SKenneth E. Jansenc yl (npro,nshl,ndof) : primitive variables 13*59599516SKenneth E. Jansenc shgl (npro,nsd,nshl) : element local-grad-shape-functions 14*59599516SKenneth E. Jansenc xl (npro,nenl,nsd) : nodal coordinates at current step 15*59599516SKenneth E. Jansenc 16*59599516SKenneth E. Jansenc output: 17*59599516SKenneth E. Jansenc g1yi (npro,ndof) : grad-y in direction 1 18*59599516SKenneth E. Jansenc g2yi (npro,ndof) : grad-y in direction 2 19*59599516SKenneth E. Jansenc g3yi (npro,ndof) : grad-y in direction 3 20*59599516SKenneth E. Jansenc shg (npro,nshl,nsd) : element global grad-shape-functions 21*59599516SKenneth E. Jansenc dxidx (npro,nsd,nsd) : inverse of deformation gradient 22*59599516SKenneth E. Jansenc WdetJ (npro) : weighted Jacobian 23*59599516SKenneth E. Jansenc u1 (npro) : x1-velocity component 24*59599516SKenneth E. Jansenc u2 (npro) : x2-velocity component 25*59599516SKenneth E. Jansenc u3 (npro) : x3-velocity component 26*59599516SKenneth E. Jansenc 27*59599516SKenneth E. Jansenc 28*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2ivar.f) 29*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 30*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997. Primitive Variables 31*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 32*59599516SKenneth E. Jansenc 33*59599516SKenneth E. Jansen include "common.h" 34*59599516SKenneth E. Jansenc 35*59599516SKenneth E. Jansenc passed arrays 36*59599516SKenneth E. Jansenc 37*59599516SKenneth E. Jansen dimension yl(npro,nshl,ndof), 38*59599516SKenneth E. Jansen & shgl(npro,nsd,nshl), xl(npro,nenl,nsd), 39*59599516SKenneth E. Jansen & g1yi(npro,nflow), g2yi(npro,nflow), 40*59599516SKenneth E. Jansen & g3yi(npro,nflow), shg(npro,nshl,nsd), 41*59599516SKenneth E. Jansen & dxidx(npro,nsd,nsd), WdetJ(npro) 42*59599516SKenneth E. Jansenc 43*59599516SKenneth E. Jansenc local arrays 44*59599516SKenneth E. Jansenc 45*59599516SKenneth E. Jansen dimension tmp(npro), dxdxi(npro,nsd,nsd) 46*59599516SKenneth E. Jansen 47*59599516SKenneth E. Jansenc 48*59599516SKenneth E. Jansenc.... compute the deformation gradient 49*59599516SKenneth E. Jansenc 50*59599516SKenneth E. Jansen dxdxi = zero 51*59599516SKenneth E. Jansenc 52*59599516SKenneth E. Jansen do n = 1, nenl 53*59599516SKenneth E. Jansen dxdxi(:,1,1) = dxdxi(:,1,1) + xl(:,n,1) * shgl(:,1,n) 54*59599516SKenneth E. Jansen dxdxi(:,1,2) = dxdxi(:,1,2) + xl(:,n,1) * shgl(:,2,n) 55*59599516SKenneth E. Jansen dxdxi(:,1,3) = dxdxi(:,1,3) + xl(:,n,1) * shgl(:,3,n) 56*59599516SKenneth E. Jansen dxdxi(:,2,1) = dxdxi(:,2,1) + xl(:,n,2) * shgl(:,1,n) 57*59599516SKenneth E. Jansen dxdxi(:,2,2) = dxdxi(:,2,2) + xl(:,n,2) * shgl(:,2,n) 58*59599516SKenneth E. Jansen dxdxi(:,2,3) = dxdxi(:,2,3) + xl(:,n,2) * shgl(:,3,n) 59*59599516SKenneth E. Jansen dxdxi(:,3,1) = dxdxi(:,3,1) + xl(:,n,3) * shgl(:,1,n) 60*59599516SKenneth E. Jansen dxdxi(:,3,2) = dxdxi(:,3,2) + xl(:,n,3) * shgl(:,2,n) 61*59599516SKenneth E. Jansen dxdxi(:,3,3) = dxdxi(:,3,3) + xl(:,n,3) * shgl(:,3,n) 62*59599516SKenneth E. Jansen enddo 63*59599516SKenneth E. Jansenc 64*59599516SKenneth E. Jansenc.... compute the inverse of deformation gradient 65*59599516SKenneth E. Jansenc 66*59599516SKenneth E. Jansen dxidx(:,1,1) = dxdxi(:,2,2) * dxdxi(:,3,3) 67*59599516SKenneth E. Jansen & - dxdxi(:,3,2) * dxdxi(:,2,3) 68*59599516SKenneth E. Jansen dxidx(:,1,2) = dxdxi(:,3,2) * dxdxi(:,1,3) 69*59599516SKenneth E. Jansen & - dxdxi(:,1,2) * dxdxi(:,3,3) 70*59599516SKenneth E. Jansen dxidx(:,1,3) = dxdxi(:,1,2) * dxdxi(:,2,3) 71*59599516SKenneth E. Jansen & - dxdxi(:,1,3) * dxdxi(:,2,2) 72*59599516SKenneth E. Jansen tmp = one / ( dxidx(:,1,1) * dxdxi(:,1,1) 73*59599516SKenneth E. Jansen & + dxidx(:,1,2) * dxdxi(:,2,1) 74*59599516SKenneth E. Jansen & + dxidx(:,1,3) * dxdxi(:,3,1) ) 75*59599516SKenneth E. Jansen dxidx(:,1,1) = dxidx(:,1,1) * tmp 76*59599516SKenneth E. Jansen dxidx(:,1,2) = dxidx(:,1,2) * tmp 77*59599516SKenneth E. Jansen dxidx(:,1,3) = dxidx(:,1,3) * tmp 78*59599516SKenneth E. Jansen dxidx(:,2,1) = (dxdxi(:,2,3) * dxdxi(:,3,1) 79*59599516SKenneth E. Jansen & - dxdxi(:,2,1) * dxdxi(:,3,3)) * tmp 80*59599516SKenneth E. Jansen dxidx(:,2,2) = (dxdxi(:,1,1) * dxdxi(:,3,3) 81*59599516SKenneth E. Jansen & - dxdxi(:,3,1) * dxdxi(:,1,3)) * tmp 82*59599516SKenneth E. Jansen dxidx(:,2,3) = (dxdxi(:,2,1) * dxdxi(:,1,3) 83*59599516SKenneth E. Jansen & - dxdxi(:,1,1) * dxdxi(:,2,3)) * tmp 84*59599516SKenneth E. Jansen dxidx(:,3,1) = (dxdxi(:,2,1) * dxdxi(:,3,2) 85*59599516SKenneth E. Jansen & - dxdxi(:,2,2) * dxdxi(:,3,1)) * tmp 86*59599516SKenneth E. Jansen dxidx(:,3,2) = (dxdxi(:,3,1) * dxdxi(:,1,2) 87*59599516SKenneth E. Jansen & - dxdxi(:,1,1) * dxdxi(:,3,2)) * tmp 88*59599516SKenneth E. Jansen dxidx(:,3,3) = (dxdxi(:,1,1) * dxdxi(:,2,2) 89*59599516SKenneth E. Jansen & - dxdxi(:,1,2) * dxdxi(:,2,1)) * tmp 90*59599516SKenneth E. Jansenc 91*59599516SKenneth E. Jansen WdetJ = Qwt(lcsyst,intp)/ tmp 92*59599516SKenneth E. Jansen 93*59599516SKenneth E. Jansenc 94*59599516SKenneth E. Jansenc.... ---------------------> Global Gradients <----------------------- 95*59599516SKenneth E. Jansenc 96*59599516SKenneth E. Jansen g1yi = zero 97*59599516SKenneth E. Jansen g2yi = zero 98*59599516SKenneth E. Jansen g3yi = zero 99*59599516SKenneth E. Jansenc 100*59599516SKenneth E. Jansenc 101*59599516SKenneth E. Jansen do n = 1, nshl 102*59599516SKenneth E. Jansenc 103*59599516SKenneth E. Jansenc.... compute the global gradient of shape-function 104*59599516SKenneth E. Jansenc 105*59599516SKenneth E. Jansenc ! N_{a,x_i}= N_{a,xi_i} xi_{i,x_j} 106*59599516SKenneth E. Jansenc 107*59599516SKenneth E. Jansen shg(:,n,1) = shgl(:,1,n) * dxidx(:,1,1) + 108*59599516SKenneth E. Jansen & shgl(:,2,n) * dxidx(:,2,1) + 109*59599516SKenneth E. Jansen & shgl(:,3,n) * dxidx(:,3,1) 110*59599516SKenneth E. Jansen shg(:,n,2) = shgl(:,1,n) * dxidx(:,1,2) + 111*59599516SKenneth E. Jansen & shgl(:,2,n) * dxidx(:,2,2) + 112*59599516SKenneth E. Jansen & shgl(:,3,n) * dxidx(:,3,2) 113*59599516SKenneth E. Jansen shg(:,n,3) = shgl(:,1,n) * dxidx(:,1,3) + 114*59599516SKenneth E. Jansen & shgl(:,2,n) * dxidx(:,2,3) + 115*59599516SKenneth E. Jansen & shgl(:,3,n) * dxidx(:,3,3) 116*59599516SKenneth E. Jansenc 117*59599516SKenneth E. Jansenc.... compute the global gradient of Y-variables 118*59599516SKenneth E. Jansenc 119*59599516SKenneth E. Jansenc 120*59599516SKenneth E. Jansenc Y_{,x_i}=SUM_{a=1}^nenl (N_{a,x_i}(int) Ya) 121*59599516SKenneth E. Jansenc 122*59599516SKenneth E. Jansen g1yi(:,2) = g1yi(:,2) + shg(:,n,1) * yl(:,n,2) 123*59599516SKenneth E. Jansen g1yi(:,3) = g1yi(:,3) + shg(:,n,1) * yl(:,n,3) 124*59599516SKenneth E. Jansen g1yi(:,4) = g1yi(:,4) + shg(:,n,1) * yl(:,n,4) 125*59599516SKenneth E. Jansenc 126*59599516SKenneth E. Jansen g2yi(:,2) = g2yi(:,2) + shg(:,n,2) * yl(:,n,2) 127*59599516SKenneth E. Jansen g2yi(:,3) = g2yi(:,3) + shg(:,n,2) * yl(:,n,3) 128*59599516SKenneth E. Jansen g2yi(:,4) = g2yi(:,4) + shg(:,n,2) * yl(:,n,4) 129*59599516SKenneth E. Jansenc 130*59599516SKenneth E. Jansen g3yi(:,2) = g3yi(:,2) + shg(:,n,3) * yl(:,n,2) 131*59599516SKenneth E. Jansen g3yi(:,3) = g3yi(:,3) + shg(:,n,3) * yl(:,n,3) 132*59599516SKenneth E. Jansen g3yi(:,4) = g3yi(:,4) + shg(:,n,3) * yl(:,n,4) 133*59599516SKenneth E. Jansen 134*59599516SKenneth E. Jansen enddo 135*59599516SKenneth E. Jansen 136*59599516SKenneth E. Jansenc 137*59599516SKenneth E. Jansenc.... return 138*59599516SKenneth E. Jansenc 139*59599516SKenneth E. Jansen 140*59599516SKenneth E. Jansen return 141*59599516SKenneth E. Jansen end 142*59599516SKenneth E. Jansen 143*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 144*59599516SKenneth E. Jansenc 145*59599516SKenneth E. Jansenc compute the variables for the local scalar diffusion 146*59599516SKenneth E. Jansenc 147*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 148*59599516SKenneth E. Jansen subroutine e3qvarSclr (yl, shgl, xl, 149*59599516SKenneth E. Jansen & gradT, dxidx, WdetJ ) 150*59599516SKenneth E. Jansen 151*59599516SKenneth E. Jansen include "common.h" 152*59599516SKenneth E. Jansenc 153*59599516SKenneth E. Jansenc passed arrays 154*59599516SKenneth E. Jansenc 155*59599516SKenneth E. Jansen real*8 yl(npro,nshl,ndof), shp(npro,nshl), 156*59599516SKenneth E. Jansen & shgl(npro,nsd,nshl), xl(npro,nenl,nsd), 157*59599516SKenneth E. Jansen & dxidx(npro,nsd,nsd), WdetJ(npro), 158*59599516SKenneth E. Jansen & gradT(npro,nsd) 159*59599516SKenneth E. Jansenc 160*59599516SKenneth E. Jansenc local arrays 161*59599516SKenneth E. Jansenc 162*59599516SKenneth E. Jansen real*8 shg(npro,nshl,nsd) 163*59599516SKenneth E. Jansen 164*59599516SKenneth E. Jansen 165*59599516SKenneth E. Jansen call e3metric( xl, shgl, dxidx, 166*59599516SKenneth E. Jansen & shg, WdetJ) 167*59599516SKenneth E. Jansen 168*59599516SKenneth E. Jansen gradT = zero 169*59599516SKenneth E. Jansen id=5+isclr 170*59599516SKenneth E. Jansenc 171*59599516SKenneth E. Jansenc later, when there are more models than SA we will need a 172*59599516SKenneth E. Jansenc more general function to calculate evisc at a quadrature point 173*59599516SKenneth E. Jansenc 174*59599516SKenneth E. Jansen do n = 1, nshl 175*59599516SKenneth E. Jansen gradT(:,1) = gradT(:,1) + shg(:,n,1) * yl(:,n,id) 176*59599516SKenneth E. Jansen gradT(:,2) = gradT(:,2) + shg(:,n,2) * yl(:,n,id) 177*59599516SKenneth E. Jansen gradT(:,3) = gradT(:,3) + shg(:,n,3) * yl(:,n,id) 178*59599516SKenneth E. Jansen enddo 179*59599516SKenneth E. Jansenc 180*59599516SKenneth E. Jansenc.... return 181*59599516SKenneth E. Jansenc 182*59599516SKenneth E. Jansen 183*59599516SKenneth E. Jansen return 184*59599516SKenneth E. Jansen end 185*59599516SKenneth E. Jansen 186*59599516SKenneth E. Jansen 187*59599516SKenneth E. Jansen 188*59599516SKenneth E. Jansen 189