1*59599516SKenneth E. Jansen subroutine e3 (yl, ycl, acl, shp, 2*59599516SKenneth E. Jansen & shgl, xl, rl, rml, xmudmi, 3*59599516SKenneth E. Jansen & BDiagl, ql, sgn, rlsl, EGmass, 4*59599516SKenneth E. Jansen & rerrl, ytargetl) 5*59599516SKenneth E. Jansenc 6*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 7*59599516SKenneth E. Jansenc 8*59599516SKenneth E. Jansenc This routine is the 3D element routine for the N-S equations. 9*59599516SKenneth E. Jansenc This routine calculates the RHS residual and if requested the 10*59599516SKenneth E. Jansenc modified residual or the LHS consistent mass matrix or the block- 11*59599516SKenneth E. Jansenc diagonal preconditioner. 12*59599516SKenneth E. Jansenc 13*59599516SKenneth E. Jansenc input: 14*59599516SKenneth E. Jansenc yl (npro,nshl,nflow) : Y variables (DOES NOT CONTAIN SCALARS) 15*59599516SKenneth E. Jansenc ycl (npro,nshl,ndof) : Y variables at current step 16*59599516SKenneth E. Jansenc acl (npro,nshl,ndof) : Y acceleration (Y_{,t}) 17*59599516SKenneth E. Jansenc shp (nshl,ngauss) : element shape-functions N_a 18*59599516SKenneth E. Jansenc shgl (nsd,nshl,ngauss) : element local-shape-functions N_{a,xi} 19*59599516SKenneth E. Jansenc xl (npro,nenl,nsd) : nodal coordinates at current step (x^e_a) 20*59599516SKenneth E. Jansenc ql (npro,nshl,(nflow-1)*nsd) : diffusive flux vector 21*59599516SKenneth E. Jansenc rlsl (npro,nshl,6) : resolved Leonard stresses 22*59599516SKenneth E. Jansenc sgn (npro,nshl) : shape function sign matrix 23*59599516SKenneth E. Jansenc 24*59599516SKenneth E. Jansenc output: 25*59599516SKenneth E. Jansenc rl (npro,nshl,nflow) : element RHS residual (G^e_a) 26*59599516SKenneth E. Jansenc rml (npro,nshl,nflow) : element modified residual (G^e_a tilde) 27*59599516SKenneth E. Jansenc EGmass (npro,nedof,nedof) : element LHS tangent mass matrix (dG^e_a 28*59599516SKenneth E. Jansenc dY_b ) 29*59599516SKenneth E. Jansenc BDiagl (npro,nshl,nflow,nflow) : block-diagonal preconditioner 30*59599516SKenneth E. Jansenc 31*59599516SKenneth E. Jansenc 32*59599516SKenneth E. Jansenc Note: This routine will calculate the element matrices for the 33*59599516SKenneth E. Jansenc Hulbert's generalized alpha method integrator 34*59599516SKenneth E. Jansenc 35*59599516SKenneth E. Jansenc Note: nedof = nflow*nshape is the total number of degrees of freedom 36*59599516SKenneth E. Jansenc at each element node. 37*59599516SKenneth E. Jansenc 38*59599516SKenneth E. Jansenc Mathematics done by: Michel Mallet, Farzin Shakib (version 1) 39*59599516SKenneth E. Jansenc Farzin Shakib (version 2) 40*59599516SKenneth E. Jansenc 41*59599516SKenneth E. Jansenc 42*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2.f) 43*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 44*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997. (Primitive Variables) 45*59599516SKenneth E. Jansenc Chris Whiting, Winter 1998. (LHS matrix formation) 46*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 47*59599516SKenneth E. Jansenc 48*59599516SKenneth E. Jansen include "common.h" 49*59599516SKenneth E. Jansenc 50*59599516SKenneth E. Jansen dimension yl(npro,nshl,nflow), ycl(npro,nshl,ndof), 51*59599516SKenneth E. Jansen & acl(npro,nshl,ndof), rmu(npro), 52*59599516SKenneth E. Jansen & shp(nshl,ngauss), rlm2mu(npro), 53*59599516SKenneth E. Jansen & shgl(nsd,nshl,ngauss), con(npro), 54*59599516SKenneth E. Jansen & xl(npro,nenl,nsd), rlm(npro), 55*59599516SKenneth E. Jansen & rl(npro,nshl,nflow), ql(npro,nshl,idflx), 56*59599516SKenneth E. Jansen & rml(npro,nshl,nflow), xmudmi(npro,ngauss), 57*59599516SKenneth E. Jansen & BDiagl(npro,nshl,nflow,nflow), 58*59599516SKenneth E. Jansen & EGmass(npro,nedof,nedof),cv(npro), 59*59599516SKenneth E. Jansen & ytargetl(npro,nshl,nflow) 60*59599516SKenneth E. Jansenc 61*59599516SKenneth E. Jansen dimension dui(npro,ndof), aci(npro,ndof) 62*59599516SKenneth E. Jansenc 63*59599516SKenneth E. Jansen dimension g1yi(npro,nflow), g2yi(npro,nflow), 64*59599516SKenneth E. Jansen & g3yi(npro,nflow), shg(npro,nshl,nsd), 65*59599516SKenneth E. Jansen & divqi(npro,nflow), tau(npro,5) 66*59599516SKenneth E. Jansenc 67*59599516SKenneth E. Jansen dimension dxidx(npro,nsd,nsd), WdetJ(npro) 68*59599516SKenneth E. Jansenc 69*59599516SKenneth E. Jansen dimension rho(npro), pres(npro), 70*59599516SKenneth E. Jansen & T(npro), ei(npro), 71*59599516SKenneth E. Jansen & h(npro), alfap(npro), 72*59599516SKenneth E. Jansen & betaT(npro), DC(npro,ngauss), 73*59599516SKenneth E. Jansen & cp(npro), rk(npro), 74*59599516SKenneth E. Jansen & u1(npro), u2(npro), 75*59599516SKenneth E. Jansen & u3(npro), A0DC(npro,4), 76*59599516SKenneth E. Jansen & Sclr(npro), dVdY(npro,15), 77*59599516SKenneth E. Jansen & giju(npro,6), rTLS(npro), 78*59599516SKenneth E. Jansen & raLS(npro), A0inv(npro,15) 79*59599516SKenneth E. Jansenc 80*59599516SKenneth E. Jansen dimension A0(npro,nflow,nflow), A1(npro,nflow,nflow), 81*59599516SKenneth E. Jansen & A2(npro,nflow,nflow), A3(npro,nflow,nflow) 82*59599516SKenneth E. Jansenc 83*59599516SKenneth E. Jansen dimension rLyi(npro,nflow), sgn(npro,nshl) 84*59599516SKenneth E. Jansenc 85*59599516SKenneth E. Jansen dimension ri(npro,nflow*(nsd+1)), rmi(npro,nflow*(nsd+1)), 86*59599516SKenneth E. Jansen & shape(npro,nshl), shdrv(npro,nsd,nshl), 87*59599516SKenneth E. Jansen & stiff(npro,nsd*nflow,nsd*nflow), 88*59599516SKenneth E. Jansen & PTau(npro,5,5), 89*59599516SKenneth E. Jansen & sforce(npro,3), compK(npro,10) 90*59599516SKenneth E. Jansenc 91*59599516SKenneth E. Jansen dimension x(npro,3), bcool(npro) 92*59599516SKenneth E. Jansen 93*59599516SKenneth E. Jansen dimension rlsl(npro,nshl,6), rlsli(npro,6) 94*59599516SKenneth E. Jansen 95*59599516SKenneth E. Jansen real*8 rerrl(npro,nshl,6) 96*59599516SKenneth E. Jansen ttim(6) = ttim(6) - secs(0.0) 97*59599516SKenneth E. Jansenc 98*59599516SKenneth E. Jansenc.... local reconstruction of diffusive flux vector 99*59599516SKenneth E. Jansenc (note: not currently included in mfg) 100*59599516SKenneth E. Jansen if (idiff==2 .and. (ires==3 .or. ires==1)) then 101*59599516SKenneth E. Jansen call e3ql (ycl, shp, shgl, xl, ql, xmudmi, sgn) 102*59599516SKenneth E. Jansen endif 103*59599516SKenneth E. Jansenc 104*59599516SKenneth E. Jansenc.... loop through the integration points 105*59599516SKenneth E. Jansenc 106*59599516SKenneth E. Jansen do intp = 1, ngauss 107*59599516SKenneth E. Jansenc 108*59599516SKenneth E. Jansenc.... if Det. .eq. 0, do not include this point 109*59599516SKenneth E. Jansenc 110*59599516SKenneth E. Jansen if (Qwt(lcsyst,intp) .eq. zero) cycle ! precaution 111*59599516SKenneth E. Jansenc 112*59599516SKenneth E. Jansenc.... create a matrix of shape functions (and derivatives) for each 113*59599516SKenneth E. Jansenc element at this quadrature point. These arrays will contain 114*59599516SKenneth E. Jansenc the correct signs for the hierarchic basis 115*59599516SKenneth E. Jansenc 116*59599516SKenneth E. Jansen call getshp(shp, shgl, sgn, 117*59599516SKenneth E. Jansen & shape, shdrv) 118*59599516SKenneth E. Jansenc 119*59599516SKenneth E. Jansenc.... initialize 120*59599516SKenneth E. Jansenc 121*59599516SKenneth E. Jansen ri = zero 122*59599516SKenneth E. Jansen rmi = zero 123*59599516SKenneth E. Jansen if (lhs .eq. 1) stiff = zero 124*59599516SKenneth E. Jansenc 125*59599516SKenneth E. Jansenc 126*59599516SKenneth E. Jansenc.... calculate the integration variables 127*59599516SKenneth E. Jansenc 128*59599516SKenneth E. Jansen ttim(8) = ttim(8) - secs(0.0) 129*59599516SKenneth E. Jansen call e3ivar (yl, ycl, acl, 130*59599516SKenneth E. Jansen & Sclr, shape, shdrv, 131*59599516SKenneth E. Jansen & xl, dui, aci, 132*59599516SKenneth E. Jansen & g1yi, g2yi, g3yi, 133*59599516SKenneth E. Jansen & shg, dxidx, WdetJ, 134*59599516SKenneth E. Jansen & rho, pres, T, 135*59599516SKenneth E. Jansen & ei, h, alfap, 136*59599516SKenneth E. Jansen & betaT, cp, rk, 137*59599516SKenneth E. Jansen & u1, u2, u3, 138*59599516SKenneth E. Jansen & ql, divqi, sgn, 139*59599516SKenneth E. Jansen & rLyi, !passed as a work array 140*59599516SKenneth E. Jansen & rmu, rlm, rlm2mu, 141*59599516SKenneth E. Jansen & con, rlsl, rlsli, 142*59599516SKenneth E. Jansen & xmudmi, sforce, cv) 143*59599516SKenneth E. Jansen ttim(8) = ttim(8) + secs(0.0) 144*59599516SKenneth E. Jansen 145*59599516SKenneth E. Jansenc 146*59599516SKenneth E. Jansenc.... calculate the relevant matrices 147*59599516SKenneth E. Jansenc 148*59599516SKenneth E. Jansen ttim(9) = ttim(9) - secs(0.0) 149*59599516SKenneth E. Jansen call e3mtrx (rho, pres, T, 150*59599516SKenneth E. Jansen & ei, h, alfap, 151*59599516SKenneth E. Jansen & betaT, cp, rk, 152*59599516SKenneth E. Jansen & u1, u2, u3, 153*59599516SKenneth E. Jansen & A0, A1, 154*59599516SKenneth E. Jansen & A2, A3, 155*59599516SKenneth E. Jansen & rLyi(:,1), rLyi(:,2), rLyi(:,3), ! work arrays 156*59599516SKenneth E. Jansen & rLyi(:,4), rLyi(:,5), A0DC, 157*59599516SKenneth E. Jansen & A0inv, dVdY) 158*59599516SKenneth E. Jansen ttim(9) = ttim(9) + tmr() 159*59599516SKenneth E. Jansenc 160*59599516SKenneth E. Jansenc.... calculate the convective contribution (Galerkin) 161*59599516SKenneth E. Jansenc 162*59599516SKenneth E. Jansen ttim(14) = ttim(14) - secs(0.0) 163*59599516SKenneth E. Jansen call e3conv (g1yi, g2yi, g3yi, 164*59599516SKenneth E. Jansen & A1, A2, A3, 165*59599516SKenneth E. Jansen & rho, pres, T, 166*59599516SKenneth E. Jansen & ei, rk, u1, 167*59599516SKenneth E. Jansen & u2, u3, rLyi, 168*59599516SKenneth E. Jansen & ri, rmi, EGmass, 169*59599516SKenneth E. Jansen & shg, shape, WdetJ) 170*59599516SKenneth E. Jansen ttim(14) = ttim(14) + secs(0.0) 171*59599516SKenneth E. Jansenc 172*59599516SKenneth E. Jansenc.... calculate the diffusion contribution 173*59599516SKenneth E. Jansenc 174*59599516SKenneth E. Jansen ttim(15) = ttim(15) - secs(0.0) 175*59599516SKenneth E. Jansen compK = zero 176*59599516SKenneth E. Jansen if (Navier .eq. 1) then 177*59599516SKenneth E. Jansen call e3visc (g1yi, g2yi, g3yi, 178*59599516SKenneth E. Jansen & dxidx, 179*59599516SKenneth E. Jansen & rmu, rlm, rlm2mu, 180*59599516SKenneth E. Jansen & u1, u2, u3, 181*59599516SKenneth E. Jansen & ri, rmi, stiff, 182*59599516SKenneth E. Jansen & con, rlsli, compK, T) 183*59599516SKenneth E. Jansen endif 184*59599516SKenneth E. Jansen ttim(15) = ttim(15) + secs(0.0) 185*59599516SKenneth E. Jansenc 186*59599516SKenneth E. Jansenc.... calculate the body force contribution 187*59599516SKenneth E. Jansenc 188*59599516SKenneth E. Jansen if(isurf .ne. 1 .and. matflg(5,1).gt.0) then 189*59599516SKenneth E. Jansen call e3source (ri, rmi, rlyi, 190*59599516SKenneth E. Jansen & rho, u1, u2, 191*59599516SKenneth E. Jansen & u3, pres, sforce, 192*59599516SKenneth E. Jansen & dui, dxidx, ytargetl, 193*59599516SKenneth E. Jansen & xl, shape, bcool) 194*59599516SKenneth E. Jansen else 195*59599516SKenneth E. Jansen bcool=zero 196*59599516SKenneth E. Jansen endif 197*59599516SKenneth E. Jansenc 198*59599516SKenneth E. Jansenc.... calculate the least-squares contribution 199*59599516SKenneth E. Jansenc 200*59599516SKenneth E. Jansen ttim(16) = ttim(16) - secs(0.0) 201*59599516SKenneth E. Jansen call e3LS (A1, A2, A3, 202*59599516SKenneth E. Jansen & rho, rmu, cp, 203*59599516SKenneth E. Jansen & cv, con, T, 204*59599516SKenneth E. Jansen & u1, u2, u3, 205*59599516SKenneth E. Jansen & rLyi, dxidx, tau, 206*59599516SKenneth E. Jansen & ri, rmi, rk, 207*59599516SKenneth E. Jansen & dui, aci, A0, 208*59599516SKenneth E. Jansen & divqi, shape, shg, 209*59599516SKenneth E. Jansen & EGmass, stiff, WdetJ, 210*59599516SKenneth E. Jansen & giju, rTLS, raLS, 211*59599516SKenneth E. Jansen & A0inv, dVdY, rerrl, 212*59599516SKenneth E. Jansen & compK, pres, PTau) 213*59599516SKenneth E. Jansen ttim(16) = ttim(16) + secs(0.0) 214*59599516SKenneth E. Jansenc 215*59599516SKenneth E. Jansenc.... Discontinuity capturing 216*59599516SKenneth E. Jansenc 217*59599516SKenneth E. Jansen if(iDC.ne.0) then 218*59599516SKenneth E. Jansen call e3dc (g1yi, g2yi, g3yi, 219*59599516SKenneth E. Jansen & A0, raLS, rTLS, 220*59599516SKenneth E. Jansen & giju, DC, 221*59599516SKenneth E. Jansen & ri, rmi, stiff, A0DC) 222*59599516SKenneth E. Jansen endif 223*59599516SKenneth E. Jansenc 224*59599516SKenneth E. Jansenc 225*59599516SKenneth E. Jansenc.... calculate the time derivative (mass) contribution to RHS 226*59599516SKenneth E. Jansenc 227*59599516SKenneth E. Jansen if (ngauss .eq. 1 .and. nshl .eq. 4) then ! trilinear tets 228*59599516SKenneth E. Jansen ttim(17) = ttim(17) - secs(0.0) 229*59599516SKenneth E. Jansen call e3juel (yl, acl, Sclr, A0, WdetJ, rl, rml) 230*59599516SKenneth E. Jansen ttim(17) = ttim(17) + secs(0.0) 231*59599516SKenneth E. Jansen else 232*59599516SKenneth E. Jansen call e3massr (aci, dui, ri, rmi, A0) 233*59599516SKenneth E. Jansen endif 234*59599516SKenneth E. Jansen 235*59599516SKenneth E. Jansenc 236*59599516SKenneth E. Jansenc.... calculate the time (mass) contribution to the LHS 237*59599516SKenneth E. Jansenc 238*59599516SKenneth E. Jansen if (lhs .eq. 1) then 239*59599516SKenneth E. Jansen call e3massl (bcool,shape, WdetJ, A0, EGmass) 240*59599516SKenneth E. Jansen endif 241*59599516SKenneth E. Jansenc 242*59599516SKenneth E. Jansenc.... calculate the preconditioner all at once now instead of in separate 243*59599516SKenneth E. Jansenc routines 244*59599516SKenneth E. Jansenc 245*59599516SKenneth E. Jansen if(iprec.eq.1 .and. lhs.ne.1)then 246*59599516SKenneth E. Jansen ttim(18) = ttim(18) - secs(0.0) 247*59599516SKenneth E. Jansen 248*59599516SKenneth E. Jansen if (itau.lt.10) then 249*59599516SKenneth E. Jansen 250*59599516SKenneth E. Jansen call e3bdg(shape, shg, WdetJ, 251*59599516SKenneth E. Jansen & A1, A2, A3, 252*59599516SKenneth E. Jansen & A0, bcool, tau, 253*59599516SKenneth E. Jansen & u1, u2, u3, 254*59599516SKenneth E. Jansen & BDiagl, 255*59599516SKenneth E. Jansen & rmu, rlm2mu, con) 256*59599516SKenneth E. Jansen 257*59599516SKenneth E. Jansen else 258*59599516SKenneth E. Jansen 259*59599516SKenneth E. Jansen call e3bdg_nd(shape, shg, WdetJ, 260*59599516SKenneth E. Jansen & A1, A2, A3, 261*59599516SKenneth E. Jansen & A0, bcool, PTau, 262*59599516SKenneth E. Jansen & u1, u2, u3, 263*59599516SKenneth E. Jansen & BDiagl, 264*59599516SKenneth E. Jansen & rmu, rlm2mu, con) 265*59599516SKenneth E. Jansen 266*59599516SKenneth E. Jansen endif 267*59599516SKenneth E. Jansen 268*59599516SKenneth E. Jansen ttim(18) = ttim(18) + secs(0.0) 269*59599516SKenneth E. Jansen endif 270*59599516SKenneth E. Jansenc 271*59599516SKenneth E. Jansenc 272*59599516SKenneth E. Jansenc.... multiply flux terms by shape functions and derivatives (from weight space for RHS and 273*59599516SKenneth E. Jansenc by both the weight space and solution space for the LHS stiffness term) 274*59599516SKenneth E. Jansenc 275*59599516SKenneth E. Jansen ttim(19) = ttim(19) - secs(0.0) 276*59599516SKenneth E. Jansen call e3wmlt (shape, shg, WdetJ, 277*59599516SKenneth E. Jansen & ri, rmi, rl, 278*59599516SKenneth E. Jansen & rml, stiff, EGmass) 279*59599516SKenneth E. Jansen ttim(19) = ttim(19) + secs(0.0) 280*59599516SKenneth E. Jansenc 281*59599516SKenneth E. Jansenc.... end of integration loop 282*59599516SKenneth E. Jansenc 283*59599516SKenneth E. Jansen enddo 284*59599516SKenneth E. Jansen 285*59599516SKenneth E. Jansen ttim(6) = ttim(6) + secs(0.0) 286*59599516SKenneth E. Jansenc 287*59599516SKenneth E. Jansenc.... return 288*59599516SKenneth E. Jansenc 289*59599516SKenneth E. Jansen return 290*59599516SKenneth E. Jansen end 291*59599516SKenneth E. Jansenc 292*59599516SKenneth E. Jansenc 293*59599516SKenneth E. Jansenc 294*59599516SKenneth E. Jansenc 295*59599516SKenneth E. Jansen subroutine e3Sclr (ycl, acl, 296*59599516SKenneth E. Jansen & dwl, elDwl, 297*59599516SKenneth E. Jansen & shp, sgn, 298*59599516SKenneth E. Jansen & shgl, xl, 299*59599516SKenneth E. Jansen & rtl, rmtl, 300*59599516SKenneth E. Jansen & qtl, EGmasst) 301*59599516SKenneth E. Jansenc 302*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 303*59599516SKenneth E. Jansenc 304*59599516SKenneth E. Jansenc This routine is the 3D element routine for the N-S equations. 305*59599516SKenneth E. Jansenc This routine calculates the RHS residual and if requested the 306*59599516SKenneth E. Jansenc modified residual or the LHS consistent mass matrix or the block- 307*59599516SKenneth E. Jansenc diagonal preconditioner. 308*59599516SKenneth E. Jansenc 309*59599516SKenneth E. Jansenc input: e a 1..5 when we think of U^e_a and U is 5 variables 310*59599516SKenneth E. Jansenc ycl (npro,nshl,ndof) : Y variables 311*59599516SKenneth E. Jansenc actl (npro,nshl) : scalar variable time derivative 312*59599516SKenneth E. Jansenc dwl (npro,nenl) : distances to wall 313*59599516SKenneth E. Jansenc shp (nen,ngauss) : element shape-functions N_a 314*59599516SKenneth E. Jansenc shgl (nsd,nen,ngauss) : element local-shape-functions N_{a,xi} 315*59599516SKenneth E. Jansenc xl (npro,nenl,nsd) : nodal coordinates at current step (x^e_a) 316*59599516SKenneth E. Jansenc qtl (npro,nshl) : diffusive flux vector (don't worry) 317*59599516SKenneth E. Jansenc 318*59599516SKenneth E. Jansenc output: 319*59599516SKenneth E. Jansenc rtl (npro,nshl) : element RHS residual (G^e_a) 320*59599516SKenneth E. Jansenc rmtl (npro,nshl) : element modified residual (G^e_a tilde) 321*59599516SKenneth E. Jansenc EGmasst (npro,nshape,nshape) : element LHS tangent mass matrix (dG^e_a 322*59599516SKenneth E. Jansenc dY_b ) 323*59599516SKenneth E. Jansenc 324*59599516SKenneth E. Jansenc 325*59599516SKenneth E. Jansenc Note: This routine will calculate the element matrices for the 326*59599516SKenneth E. Jansenc Hulbert's generalized alpha method integrator 327*59599516SKenneth E. Jansenc 328*59599516SKenneth E. Jansenc Note: nedof = nflow*nshl is the total number of degrees of freedom 329*59599516SKenneth E. Jansenc at each element node. 330*59599516SKenneth E. Jansenc 331*59599516SKenneth E. Jansenc Mathematics done by: Michel Mallet, Farzin Shakib (version 1) 332*59599516SKenneth E. Jansenc Farzin Shakib (version 2) 333*59599516SKenneth E. Jansenc 334*59599516SKenneth E. Jansenc 335*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2.f) 336*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 337*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997. (Primitive Variables) 338*59599516SKenneth E. Jansenc Chris Whiting, Winter 1998. (LHS matrix formation) 339*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 340*59599516SKenneth E. Jansenc 341*59599516SKenneth E. Jansen include "common.h" 342*59599516SKenneth E. Jansenc 343*59599516SKenneth E. Jansen dimension ycl(npro,nshl,ndof), 344*59599516SKenneth E. Jansen & acl(npro,nshl,ndof), 345*59599516SKenneth E. Jansen & dwl(npro,nenl), 346*59599516SKenneth E. Jansen & shp(nshl,ngauss), shgl(nsd,nshl,ngauss), 347*59599516SKenneth E. Jansen & xl(npro,nenl,nsd), 348*59599516SKenneth E. Jansen & rtl(npro,nshl), qtl(npro,nshl), 349*59599516SKenneth E. Jansen & rmtl(npro,nshl), Diagl(npro,nshl), 350*59599516SKenneth E. Jansen & EGmasst(npro,nshape,nshape), 351*59599516SKenneth E. Jansen & dist2w(npro), sgn(npro,nshl), 352*59599516SKenneth E. Jansen & vort(npro), 353*59599516SKenneth E. Jansen & rmu(npro), con(npro), 354*59599516SKenneth E. Jansen & T(npro), cp(npro), 355*59599516SKenneth E. Jansen & g1yti(npro), acti(npro), 356*59599516SKenneth E. Jansen & g2yti(npro), g3yti(npro), 357*59599516SKenneth E. Jansen & Sclr(npro), srcp (npro) 358*59599516SKenneth E. Jansen 359*59599516SKenneth E. Jansenc 360*59599516SKenneth E. Jansen dimension shg(npro,nshl,nsd) 361*59599516SKenneth E. Jansenc 362*59599516SKenneth E. Jansen dimension dxidx(npro,nsd,nsd), WdetJ(npro) 363*59599516SKenneth E. Jansenc 364*59599516SKenneth E. Jansen dimension rho(npro), rk(npro), 365*59599516SKenneth E. Jansen & u1(npro), u2(npro), 366*59599516SKenneth E. Jansen & u3(npro) 367*59599516SKenneth E. Jansenc 368*59599516SKenneth E. Jansen dimension A0t(npro), A1t(npro), 369*59599516SKenneth E. Jansen & A2t(npro), A3t(npro) 370*59599516SKenneth E. Jansenc 371*59599516SKenneth E. Jansen dimension rLyti(npro), raLSt(npro), 372*59599516SKenneth E. Jansen & rTLSt(npro), giju(npro,6), 373*59599516SKenneth E. Jansen & DCt(npro, ngauss) 374*59599516SKenneth E. Jansenc 375*59599516SKenneth E. Jansen dimension rti(npro,nsd+1), rmti(npro,nsd+1), 376*59599516SKenneth E. Jansen & stifft(npro,nsd,nsd), 377*59599516SKenneth E. Jansen & shape(npro,nshl), shdrv(npro,nsd,nshl) 378*59599516SKenneth E. Jansen real*8 elDwl(npro) 379*59599516SKenneth E. Jansenc 380*59599516SKenneth E. Jansen ttim(6) = ttim(6) - tmr() 381*59599516SKenneth E. Jansenc 382*59599516SKenneth E. Jansenc.... loop through the integration points 383*59599516SKenneth E. Jansenc 384*59599516SKenneth E. Jansen elDwl(:)=zero 385*59599516SKenneth E. Jansen do intp = 1, ngauss 386*59599516SKenneth E. Jansenc 387*59599516SKenneth E. Jansenc.... if Det. .eq. 0, do not include this point 388*59599516SKenneth E. Jansenc 389*59599516SKenneth E. Jansen if (Qwt(lcsyst,intp) .eq. zero) cycle ! precaution 390*59599516SKenneth E. Jansenc 391*59599516SKenneth E. Jansenc 392*59599516SKenneth E. Jansenc.... create a matrix of shape functions (and derivatives) for each 393*59599516SKenneth E. Jansenc element at this quadrature point. These arrays will contain 394*59599516SKenneth E. Jansenc the correct signs for the hierarchic basis 395*59599516SKenneth E. Jansenc 396*59599516SKenneth E. Jansen call getshp(shp, shgl, sgn, 397*59599516SKenneth E. Jansen & shape, shdrv) 398*59599516SKenneth E. Jansenc 399*59599516SKenneth E. Jansenc.... initialize 400*59599516SKenneth E. Jansenc 401*59599516SKenneth E. Jansen rlyti = zero 402*59599516SKenneth E. Jansen rti = zero 403*59599516SKenneth E. Jansen rmti = zero 404*59599516SKenneth E. Jansen srcp = zero 405*59599516SKenneth E. Jansen stifft = zero 406*59599516SKenneth E. Jansenc if (lhs .eq. 1) stifft = zero 407*59599516SKenneth E. Jansenc 408*59599516SKenneth E. Jansenc 409*59599516SKenneth E. Jansenc.... calculate the integration variables 410*59599516SKenneth E. Jansenc 411*59599516SKenneth E. Jansen ttim(8) = ttim(8) - tmr() 412*59599516SKenneth E. Jansenc 413*59599516SKenneth E. Jansen call e3ivarSclr(ycl, acl, acti, 414*59599516SKenneth E. Jansen & shape, shdrv, xl, 415*59599516SKenneth E. Jansen & T, cp, 416*59599516SKenneth E. Jansen & dxidx, Sclr, 417*59599516SKenneth E. Jansen & Wdetj, vort, 418*59599516SKenneth E. Jansen & g1yti, g2yti, g3yti, 419*59599516SKenneth E. Jansen & rho, rmu, con, 420*59599516SKenneth E. Jansen & rk, u1, u2, 421*59599516SKenneth E. Jansen & u3, shg, dwl, 422*59599516SKenneth E. Jansen & dist2w) 423*59599516SKenneth E. Jansen ttim(8) = ttim(8) + tmr() 424*59599516SKenneth E. Jansen 425*59599516SKenneth E. Jansenc 426*59599516SKenneth E. Jansenc.... calculate the source term contribution 427*59599516SKenneth E. Jansenc 428*59599516SKenneth E. Jansen if(nosource.ne.1) 429*59599516SKenneth E. Jansen & call e3sourceSclr (Sclr, rho, rmu, 430*59599516SKenneth E. Jansen & dist2w, vort, con, 431*59599516SKenneth E. Jansen & g1yti, g2yti, g3yti, 432*59599516SKenneth E. Jansen & rti, rLyti, srcp, 433*59599516SKenneth E. Jansen & ycl, shape, u1, 434*59599516SKenneth E. Jansen & u2, u3, xl, 435*59599516SKenneth E. Jansen & elDwl) 436*59599516SKenneth E. Jansenc 437*59599516SKenneth E. Jansen if (ilset.eq.2 .and. isclr.eq.2) then 438*59599516SKenneth E. Jansen rk = pt5 * ( u1**2 + u2**2 + u3**2 ) 439*59599516SKenneth E. Jansen endif 440*59599516SKenneth E. Jansenc.... calculate the relevant matrices 441*59599516SKenneth E. Jansenc 442*59599516SKenneth E. Jansen ttim(9) = ttim(9) - tmr() 443*59599516SKenneth E. Jansen call e3mtrxSclr (rho, 444*59599516SKenneth E. Jansen & u1, u2, u3, 445*59599516SKenneth E. Jansen & A0t, A1t, 446*59599516SKenneth E. Jansen & A2t, A3t) 447*59599516SKenneth E. Jansen ttim(9) = ttim(9) + tmr() 448*59599516SKenneth E. Jansenc 449*59599516SKenneth E. Jansenc.... calculate the convective contribution (Galerkin) 450*59599516SKenneth E. Jansenc 451*59599516SKenneth E. Jansen ttim(14) = ttim(14) - tmr() 452*59599516SKenneth E. Jansen call e3convSclr (g1yti, g2yti, g3yti, 453*59599516SKenneth E. Jansen & A1t, A2t, A3t, 454*59599516SKenneth E. Jansen & rho, u1, Sclr, 455*59599516SKenneth E. Jansen & u2, u3, rLyti, 456*59599516SKenneth E. Jansen & rti, rmti, EGmasst, 457*59599516SKenneth E. Jansen & shg, shape, WdetJ) 458*59599516SKenneth E. Jansen ttim(14) = ttim(14) + tmr() 459*59599516SKenneth E. Jansenc 460*59599516SKenneth E. Jansenc.... calculate the diffusion contribution 461*59599516SKenneth E. Jansenc 462*59599516SKenneth E. Jansen ttim(15) = ttim(15) - tmr() 463*59599516SKenneth E. Jansen if (Navier .eq. 1) then 464*59599516SKenneth E. Jansen call e3viscSclr (g1yti, g2yti, g3yti, 465*59599516SKenneth E. Jansen & rmu, Sclr, rho, 466*59599516SKenneth E. Jansen & rti, rmti, stifft ) 467*59599516SKenneth E. Jansen endif 468*59599516SKenneth E. Jansen ttim(15) = ttim(15) + tmr() 469*59599516SKenneth E. Jansenc 470*59599516SKenneth E. Jansen if (ilset.eq.2) srcp = zero 471*59599516SKenneth E. Jansen 472*59599516SKenneth E. Jansenc 473*59599516SKenneth E. Jansenc.... calculate the least-squares contribution 474*59599516SKenneth E. Jansenc 475*59599516SKenneth E. Jansen ttim(16) = ttim(16) - tmr() 476*59599516SKenneth E. Jansen call e3LSSclr(A1t, A2t, A3t, 477*59599516SKenneth E. Jansen & rho, rmu, rtLSt, 478*59599516SKenneth E. Jansen & u1, u2, u3, 479*59599516SKenneth E. Jansen & rLyti, dxidx, raLSt, 480*59599516SKenneth E. Jansen & rti, rk, giju, 481*59599516SKenneth E. Jansen & acti, A0t, 482*59599516SKenneth E. Jansen & shape, shg, 483*59599516SKenneth E. Jansen & EGmasst, stifft, WdetJ, 484*59599516SKenneth E. Jansen & srcp) 485*59599516SKenneth E. Jansen ttim(16) = ttim(16) + tmr() 486*59599516SKenneth E. Jansenc 487*59599516SKenneth E. Jansenc******************************DC TERMS***************************** 488*59599516SKenneth E. Jansen if (idcsclr(1) .ne. 0) then 489*59599516SKenneth E. Jansen if ((idcsclr(2).eq.1 .and. isclr.eq.1) .or. 490*59599516SKenneth E. Jansen & (idcsclr(2).eq.2 .and. isclr.eq.2)) then ! scalar with dc 491*59599516SKenneth E. Jansen call e3dcSclr(g1yti, g2yti, g3yti, 492*59599516SKenneth E. Jansen & A0t, raLSt, rTLSt, 493*59599516SKenneth E. Jansen & DCt, giju, 494*59599516SKenneth E. Jansen & rti, rmti, stifft) 495*59599516SKenneth E. Jansen endif 496*59599516SKenneth E. Jansen endif 497*59599516SKenneth E. Jansenc 498*59599516SKenneth E. Jansenc****************************************************************** 499*59599516SKenneth E. Jansenc.... calculate the time derivative (mass) contribution to RHS 500*59599516SKenneth E. Jansenc 501*59599516SKenneth E. Jansen 502*59599516SKenneth E. Jansen call e3massrSclr (acti, rti, A0t) 503*59599516SKenneth E. Jansenc 504*59599516SKenneth E. Jansenc.... calculate the time (mass) contribution to the LHS 505*59599516SKenneth E. Jansenc 506*59599516SKenneth E. Jansen if (lhs .eq. 1) then 507*59599516SKenneth E. Jansen call e3masslSclr (shape, WdetJ, A0t, EGmasst,srcp) 508*59599516SKenneth E. Jansen endif 509*59599516SKenneth E. Jansenc 510*59599516SKenneth E. Jansen 511*59599516SKenneth E. Jansenc.... multiply flux terms by shape functions and derivatives (from weight space for RHS and 512*59599516SKenneth E. Jansenc by both the weight space and solution space for the LHS stiffness term) 513*59599516SKenneth E. Jansenc 514*59599516SKenneth E. Jansen ttim(19) = ttim(19) - tmr() 515*59599516SKenneth E. Jansen call e3wmltSclr (shape, shg, WdetJ, 516*59599516SKenneth E. Jansen & rti, 517*59599516SKenneth E. Jansen & rtl, stifft, EGmasst) 518*59599516SKenneth E. Jansen ttim(19) = ttim(19) + tmr() 519*59599516SKenneth E. Jansenc 520*59599516SKenneth E. Jansenc.... end of the loop 521*59599516SKenneth E. Jansenc 522*59599516SKenneth E. Jansen enddo 523*59599516SKenneth E. Jansen qptinv=one/ngauss 524*59599516SKenneth E. Jansen elDwl(:)=elDwl(:)*qptinv 525*59599516SKenneth E. Jansen 526*59599516SKenneth E. Jansen 527*59599516SKenneth E. Jansen ttim(6) = ttim(6) + tmr() 528*59599516SKenneth E. Jansenc 529*59599516SKenneth E. Jansenc.... return 530*59599516SKenneth E. Jansenc 531*59599516SKenneth E. Jansen return 532*59599516SKenneth E. Jansen end 533*59599516SKenneth E. Jansen 534