1*59599516SKenneth E. Jansen subroutine e3wmlt (shp, shg, WdetJ, 2*59599516SKenneth E. Jansen & ri, rmi, rl, 3*59599516SKenneth E. Jansen & rml, stiff, EGmass ) 4*59599516SKenneth E. Jansenc 5*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 6*59599516SKenneth E. Jansenc 7*59599516SKenneth E. Jansenc Up to now most of the terms have not been multiplied by the 8*59599516SKenneth E. Jansenc shape function from the weight space. Now that we have collected 9*59599516SKenneth E. Jansenc all the terms that the shape function (and its derivatives for the 10*59599516SKenneth E. Jansenc terms that were integrated by parts) multiplies, in this routine 11*59599516SKenneth E. Jansenc we carry out that multiplication. After these operations we will 12*59599516SKenneth E. Jansenc have this quadrature points contribution to the integral for the 13*59599516SKenneth E. Jansenc residual (i.e. g^e_b(xi^l) D(xi^l) QW(xi^l) where e is the element, 14*59599516SKenneth E. Jansenc b is the local node number on the element, l is the quadrature point 15*59599516SKenneth E. Jansenc D is the determinate of the Jacobian of the mapping, and QW is this 16*59599516SKenneth E. Jansenc quadrature points weight....WHEW). When we add up all of the 17*59599516SKenneth E. Jansenc integration points we get G^e_b which we will assemble in the 18*59599516SKenneth E. Jansenc subroutine LOCAL to form G_B. 19*59599516SKenneth E. Jansenc 20*59599516SKenneth E. Jansenc This routine also forms the LHS contribution from the LS term 21*59599516SKenneth E. Jansenc and the diffusion term which has been partially constructed and 22*59599516SKenneth E. Jansenc placed in stiff. Those familiar with elasticity might recognize 23*59599516SKenneth E. Jansenc this naming convention since this is like a stiffness matrix that 24*59599516SKenneth E. Jansenc if you had a linear problem would be calculated once and saved for 25*59599516SKenneth E. Jansenc all time. 26*59599516SKenneth E. Jansenc 27*59599516SKenneth E. Jansenc ri: LS, Diffusion, Convective and mass, 28*59599516SKenneth E. Jansenc rmi: LS, Diffusion and mass, 29*59599516SKenneth E. Jansenc stiff: LS, Diffusion. 30*59599516SKenneth E. Jansenc 31*59599516SKenneth E. Jansenc input: 32*59599516SKenneth E. Jansenc shp (nshl) : element shape-functions 33*59599516SKenneth E. Jansenc shg (npro,nshl,nsd) : element grad-shape-functions 34*59599516SKenneth E. Jansenc WdetJ (npro) : weighted Jacobian 35*59599516SKenneth E. Jansenc ri (npro,nflow*(nsd+1)) : partial residual 36*59599516SKenneth E. Jansenc rmi (npro,nflow*(nsd+1)) : partial modified residual 37*59599516SKenneth E. Jansenc stiff (npro,nsd*nflow,nsd*nflow) : stiffness matrix 38*59599516SKenneth E. Jansenc ( K_ij + A_i tau A_j ) 39*59599516SKenneth E. Jansenc 40*59599516SKenneth E. Jansenc output: 41*59599516SKenneth E. Jansenc rl (npro,nshl,nflow) : residual 42*59599516SKenneth E. Jansenc rml (npro,nshl,nflow) : modified residual 43*59599516SKenneth E. Jansenc EGmass (npro,nedof,nedof) : element LHS tangent mass matrix 44*59599516SKenneth E. Jansenc 45*59599516SKenneth E. Jansenc 46*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2assm.f) 47*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 48*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997 Prim. variables 49*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 50*59599516SKenneth E. Jansenc 51*59599516SKenneth E. Jansen include "common.h" 52*59599516SKenneth E. Jansenc 53*59599516SKenneth E. Jansen dimension shp(npro,nshl), 54*59599516SKenneth E. Jansen & shg(npro,nshl,nsd), 55*59599516SKenneth E. Jansen & WdetJ(npro), ri(npro,nflow*(nsd+1)), 56*59599516SKenneth E. Jansen & rmi(npro,nflow*(nsd+1)), stiff(npro,3*nflow,3*nflow), 57*59599516SKenneth E. Jansen & rl(npro,nshl,nflow), rml(npro,nshl,nflow), 58*59599516SKenneth E. Jansen & EGmass(npro,nedof,nedof) 59*59599516SKenneth E. Jansenc 60*59599516SKenneth E. Jansen dimension shg1(npro), shg2(npro), 61*59599516SKenneth E. Jansen & shg3(npro), stif1(npro,nflow,nflow), 62*59599516SKenneth E. Jansen & stif2(npro,nflow,nflow), stif3(npro,nflow,nflow) 63*59599516SKenneth E. Jansen 64*59599516SKenneth E. Jansen ttim(29) = ttim(29) - secs(0.0) 65*59599516SKenneth E. Jansenc 66*59599516SKenneth E. Jansenc.... ----------------------------> RHS <---------------------------- 67*59599516SKenneth E. Jansenc 68*59599516SKenneth E. Jansenc.... add spatial contribution to rl and rml 69*59599516SKenneth E. Jansenc 70*59599516SKenneth E. Jansenc.... ires = 1 or 3 71*59599516SKenneth E. Jansenc 72*59599516SKenneth E. Jansen if ((ires .eq. 1) .or. (ires .eq. 3)) then 73*59599516SKenneth E. Jansenc 74*59599516SKenneth E. Jansen do i = 1, nshl 75*59599516SKenneth E. Jansen rl(:,i,1) = rl(:,i,1) + WdetJ * ( 76*59599516SKenneth E. Jansen & shg(:,i,1) * ri(:, 1) + shg(:,i,2) * ri(:, 6) 77*59599516SKenneth E. Jansen & + shg(:,i,3) * ri(:,11) ) 78*59599516SKenneth E. Jansen rl(:,i,2) = rl(:,i,2) + WdetJ * ( 79*59599516SKenneth E. Jansen & shg(:,i,1) * ri(:, 2) + shg(:,i,2) * ri(:, 7) 80*59599516SKenneth E. Jansen & + shg(:,i,3) * ri(:,12) ) 81*59599516SKenneth E. Jansen rl(:,i,3) = rl(:,i,3) + WdetJ * ( 82*59599516SKenneth E. Jansen & shg(:,i,1) * ri(:, 3) + shg(:,i,2) * ri(:, 8) 83*59599516SKenneth E. Jansen & + shg(:,i,3) * ri(:,13) ) 84*59599516SKenneth E. Jansen rl(:,i,4) = rl(:,i,4) + WdetJ * ( 85*59599516SKenneth E. Jansen & shg(:,i,1) * ri(:, 4) + shg(:,i,2) * ri(:, 9) 86*59599516SKenneth E. Jansen & + shg(:,i,3) * ri(:,14) ) 87*59599516SKenneth E. Jansen rl(:,i,5) = rl(:,i,5) + WdetJ * ( 88*59599516SKenneth E. Jansen & shg(:,i,1) * ri(:, 5) + shg(:,i,2) * ri(:,10) 89*59599516SKenneth E. Jansen & + shg(:,i,3) * ri(:,15) ) 90*59599516SKenneth E. Jansen enddo 91*59599516SKenneth E. Jansenc 92*59599516SKenneth E. Jansen flops = flops + 36*nshl*npro 93*59599516SKenneth E. Jansen endif 94*59599516SKenneth E. Jansenc 95*59599516SKenneth E. Jansenc.... ires = 2 or 3 96*59599516SKenneth E. Jansenc 97*59599516SKenneth E. Jansen if ((ires .eq. 2) .or. (ires .eq. 3)) then 98*59599516SKenneth E. Jansen do i = 1, nshl 99*59599516SKenneth E. Jansen rml(:,i,1) = rml(:,i,1) + WdetJ * ( 100*59599516SKenneth E. Jansen & shg(:,i,1) * rmi(:, 1) + shg(:,i,2) * rmi(:, 6) 101*59599516SKenneth E. Jansen & + shg(:,i,3) * rmi(:,11) 102*59599516SKenneth E. Jansen & + shp(:,i) * rmi(:,16) ) 103*59599516SKenneth E. Jansen rml(:,i,2) = rml(:,i,2) + WdetJ * ( 104*59599516SKenneth E. Jansen & shg(:,i,1) * rmi(:, 2) + shg(:,i,2) * rmi(:, 7) 105*59599516SKenneth E. Jansen & + shg(:,i,3) * rmi(:,12) 106*59599516SKenneth E. Jansen & + shp(:,i) * rmi(:,17) ) 107*59599516SKenneth E. Jansen rml(:,i,3) = rml(:,i,3) + WdetJ * ( 108*59599516SKenneth E. Jansen & shg(:,i,1) * rmi(:, 3) + shg(:,i,2) * rmi(:, 8) 109*59599516SKenneth E. Jansen & + shg(:,i,3) * rmi(:,13) 110*59599516SKenneth E. Jansen & + shp(:,i) * rmi(:,18) ) 111*59599516SKenneth E. Jansen rml(:,i,4) = rml(:,i,4) + WdetJ * ( 112*59599516SKenneth E. Jansen & shg(:,i,1) * rmi(:, 4) + shg(:,i,2) * rmi(:, 9) 113*59599516SKenneth E. Jansen & + shg(:,i,3) * rmi(:,14) 114*59599516SKenneth E. Jansen & + shp(:,i) * rmi(:,19) ) 115*59599516SKenneth E. Jansen rml(:,i,5) = rml(:,i,5) + WdetJ * ( 116*59599516SKenneth E. Jansen & shg(:,i,1) * rmi(:, 5) + shg(:,i,2) * rmi(:,10) 117*59599516SKenneth E. Jansen & + shg(:,i,3) * rmi(:,15) 118*59599516SKenneth E. Jansen & + shp(:,i) * rmi(:,20) ) 119*59599516SKenneth E. Jansen enddo 120*59599516SKenneth E. Jansenc 121*59599516SKenneth E. Jansen flops = flops + (15+45*nshl)*npro 122*59599516SKenneth E. Jansen endif 123*59599516SKenneth E. Jansenc 124*59599516SKenneth E. Jansenc.... add temporal contribution to rl 125*59599516SKenneth E. Jansenc 126*59599516SKenneth E. Jansen if (ngauss .eq. 1 .and. nshl.eq.4) then !already ex. integ mass 127*59599516SKenneth E. Jansen if(matflg(5,1).ge.1) then 128*59599516SKenneth E. Jansen do i = 1, nshl 129*59599516SKenneth E. Jansen rl(:,i,2) = rl(:,i,2) + shp(:,i) * WdetJ * ri(:,17) 130*59599516SKenneth E. Jansen rl(:,i,3) = rl(:,i,3) + shp(:,i) * WdetJ * ri(:,18) 131*59599516SKenneth E. Jansen rl(:,i,4) = rl(:,i,4) + shp(:,i) * WdetJ * ri(:,19) 132*59599516SKenneth E. Jansen rl(:,i,5) = rl(:,i,5) + shp(:,i) * WdetJ * ri(:,20) 133*59599516SKenneth E. Jansen enddo 134*59599516SKenneth E. Jansen endif 135*59599516SKenneth E. Jansen else !check for a body force 136*59599516SKenneth E. Jansen do i = 1, nshl 137*59599516SKenneth E. Jansen rl(:,i,1) = rl(:,i,1) + shp(:,i) * WdetJ * ri(:,16) 138*59599516SKenneth E. Jansen rl(:,i,2) = rl(:,i,2) + shp(:,i) * WdetJ * ri(:,17) 139*59599516SKenneth E. Jansen rl(:,i,3) = rl(:,i,3) + shp(:,i) * WdetJ * ri(:,18) 140*59599516SKenneth E. Jansen rl(:,i,4) = rl(:,i,4) + shp(:,i) * WdetJ * ri(:,19) 141*59599516SKenneth E. Jansen rl(:,i,5) = rl(:,i,5) + shp(:,i) * WdetJ * ri(:,20) 142*59599516SKenneth E. Jansen enddo 143*59599516SKenneth E. Jansen 144*59599516SKenneth E. Jansen flops = flops + 11*nshl*npro 145*59599516SKenneth E. Jansen endif 146*59599516SKenneth E. Jansen 147*59599516SKenneth E. Jansenc 148*59599516SKenneth E. Jansenc.... ----------------------------> LHS <---------------------------- 149*59599516SKenneth E. Jansenc 150*59599516SKenneth E. Jansen if (lhs .eq. 1) then 151*59599516SKenneth E. Jansenc 152*59599516SKenneth E. Jansenc.... loop through columns (nodes j) 153*59599516SKenneth E. Jansenc 154*59599516SKenneth E. Jansen do j = 1, nshl 155*59599516SKenneth E. Jansen j0 = nflow * (j - 1) 156*59599516SKenneth E. Jansenc 157*59599516SKenneth E. Jansenc.... set up factors 158*59599516SKenneth E. Jansenc 159*59599516SKenneth E. Jansen shg1 = WdetJ * shg(:,j,1) 160*59599516SKenneth E. Jansen shg2 = WdetJ * shg(:,j,2) 161*59599516SKenneth E. Jansen shg3 = WdetJ * shg(:,j,3) 162*59599516SKenneth E. Jansenc 163*59599516SKenneth E. Jansenc.... loop through d.o.f.'s 164*59599516SKenneth E. Jansenc 165*59599516SKenneth E. Jansen do jdof = 1, nflow 166*59599516SKenneth E. Jansen do idof = 1, nflow 167*59599516SKenneth E. Jansen idof2 = idof + nflow 168*59599516SKenneth E. Jansen jdof2 = jdof + nflow 169*59599516SKenneth E. Jansen 170*59599516SKenneth E. Jansen idof3 = idof2 + nflow 171*59599516SKenneth E. Jansen jdof3 = jdof2 + nflow 172*59599516SKenneth E. Jansenc 173*59599516SKenneth E. Jansenc.... calculate weighted stiffness matrix (first part) 174*59599516SKenneth E. Jansenc 175*59599516SKenneth E. Jansen stif1(:,idof,jdof) = shg1 * stiff(:,idof,jdof) 176*59599516SKenneth E. Jansen & + shg2 * stiff(:,idof,jdof2) 177*59599516SKenneth E. Jansen & + shg3 * stiff(:,idof,jdof3) 178*59599516SKenneth E. Jansen stif2(:,idof,jdof) = shg1 * stiff(:,idof2,jdof) 179*59599516SKenneth E. Jansen & + shg2 * stiff(:,idof2,jdof2) 180*59599516SKenneth E. Jansen & + shg3 * stiff(:,idof2,jdof3) 181*59599516SKenneth E. Jansen stif3(:,idof,jdof) = shg1 * stiff(:,idof3,jdof) 182*59599516SKenneth E. Jansen & + shg2 * stiff(:,idof3,jdof2) 183*59599516SKenneth E. Jansen & + shg3 * stiff(:,idof3,jdof3) 184*59599516SKenneth E. Jansen enddo 185*59599516SKenneth E. Jansen enddo 186*59599516SKenneth E. Jansenc 187*59599516SKenneth E. Jansenc.... loop through rows (nodes i) 188*59599516SKenneth E. Jansenc 189*59599516SKenneth E. Jansen do i = 1, nshl 190*59599516SKenneth E. Jansen i0 = nflow * (i - 1) 191*59599516SKenneth E. Jansenc 192*59599516SKenneth E. Jansenc.... add contribution of stiffness to EGmass 193*59599516SKenneth E. Jansenc 194*59599516SKenneth E. Jansen do jdof = 1, nflow 195*59599516SKenneth E. Jansen EGmass(:,i0+1,j0+jdof) = EGmass(:,i0+1,j0+jdof) 196*59599516SKenneth E. Jansen & + shg(:,i,1) * stif1(:,1,jdof) 197*59599516SKenneth E. Jansen & + shg(:,i,2) * stif2(:,1,jdof) 198*59599516SKenneth E. Jansen & + shg(:,i,3) * stif3(:,1,jdof) 199*59599516SKenneth E. Jansen EGmass(:,i0+2,j0+jdof) = EGmass(:,i0+2,j0+jdof) 200*59599516SKenneth E. Jansen & + shg(:,i,1) * stif1(:,2,jdof) 201*59599516SKenneth E. Jansen & + shg(:,i,2) * stif2(:,2,jdof) 202*59599516SKenneth E. Jansen & + shg(:,i,3) * stif3(:,2,jdof) 203*59599516SKenneth E. Jansen EGmass(:,i0+3,j0+jdof) = EGmass(:,i0+3,j0+jdof) 204*59599516SKenneth E. Jansen & + shg(:,i,1) * stif1(:,3,jdof) 205*59599516SKenneth E. Jansen & + shg(:,i,2) * stif2(:,3,jdof) 206*59599516SKenneth E. Jansen & + shg(:,i,3) * stif3(:,3,jdof) 207*59599516SKenneth E. Jansen EGmass(:,i0+4,j0+jdof) = EGmass(:,i0+4,j0+jdof) 208*59599516SKenneth E. Jansen & + shg(:,i,1) * stif1(:,4,jdof) 209*59599516SKenneth E. Jansen & + shg(:,i,2) * stif2(:,4,jdof) 210*59599516SKenneth E. Jansen & + shg(:,i,3) * stif3(:,4,jdof) 211*59599516SKenneth E. Jansen EGmass(:,i0+5,j0+jdof) = EGmass(:,i0+5,j0+jdof) 212*59599516SKenneth E. Jansen & + shg(:,i,1) * stif1(:,5,jdof) 213*59599516SKenneth E. Jansen & + shg(:,i,2) * stif2(:,5,jdof) 214*59599516SKenneth E. Jansen & + shg(:,i,3) * stif3(:,5,jdof) 215*59599516SKenneth E. Jansen enddo 216*59599516SKenneth E. Jansenc 217*59599516SKenneth E. Jansenc.... end loop on rows 218*59599516SKenneth E. Jansenc 219*59599516SKenneth E. Jansen enddo 220*59599516SKenneth E. Jansenc 221*59599516SKenneth E. Jansenc.... end loop on columns 222*59599516SKenneth E. Jansenc 223*59599516SKenneth E. Jansen enddo 224*59599516SKenneth E. Jansenc 225*59599516SKenneth E. Jansenc.... end left hand side assembly 226*59599516SKenneth E. Jansenc 227*59599516SKenneth E. Jansen endif 228*59599516SKenneth E. Jansen 229*59599516SKenneth E. Jansen ttim(29) = ttim(29) + secs(0.0) 230*59599516SKenneth E. Jansenc 231*59599516SKenneth E. Jansenc.... return 232*59599516SKenneth E. Jansenc 233*59599516SKenneth E. Jansen return 234*59599516SKenneth E. Jansen end 235*59599516SKenneth E. Jansenc 236*59599516SKenneth E. Jansenc 237*59599516SKenneth E. Jansenc 238*59599516SKenneth E. Jansen subroutine e3wmltSclr(shp, shg, WdetJ, 239*59599516SKenneth E. Jansen & rti, rtl, 240*59599516SKenneth E. Jansen & stifft, EGmasst ) 241*59599516SKenneth E. Jansenc 242*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 243*59599516SKenneth E. Jansenc 244*59599516SKenneth E. Jansenc Up to now most of the terms have not been multiplied by the 245*59599516SKenneth E. Jansenc shape function from the weight space. Now that we have collected 246*59599516SKenneth E. Jansenc all the terms that the shape function (and its derivatives for the 247*59599516SKenneth E. Jansenc terms that were integrated by parts) multiplies, in this routine 248*59599516SKenneth E. Jansenc we carry out that multiplication. After these operations we will 249*59599516SKenneth E. Jansenc have this quadrature points contribution to the integral for the 250*59599516SKenneth E. Jansenc residual (i.e. g^e_b(xi^l) D(xi^l) QW(xi^l) where e is the element, 251*59599516SKenneth E. Jansenc b is the local node number on the element, l is the quadrature point 252*59599516SKenneth E. Jansenc D is the determinate of the Jacobian of the mapping, and QW is this 253*59599516SKenneth E. Jansenc quadrature points weight....WHEW). When we add up all of the 254*59599516SKenneth E. Jansenc integration points we get G^e_b which we will assemble in the 255*59599516SKenneth E. Jansenc subroutine LOCAL to form G_B. 256*59599516SKenneth E. Jansenc 257*59599516SKenneth E. Jansenc This routine also forms the LHS contribution from the LS term 258*59599516SKenneth E. Jansenc and the diffusion term which has been partially constructed and 259*59599516SKenneth E. Jansenc placed in stiff. Those familiar with elasticity might recognize 260*59599516SKenneth E. Jansenc this naming convention since this is like a stiffness matrix that 261*59599516SKenneth E. Jansenc if you had a linear problem would be calculated once and saved for 262*59599516SKenneth E. Jansenc all time. 263*59599516SKenneth E. Jansenc 264*59599516SKenneth E. Jansenc ri: LS, Diffusion, Convective and mass, 265*59599516SKenneth E. Jansenc stiff: LS, Diffusion. 266*59599516SKenneth E. Jansenc 267*59599516SKenneth E. Jansenc input: 268*59599516SKenneth E. Jansenc shp (npro,nshl) : element shape-functions 269*59599516SKenneth E. Jansenc shg (npro,nshl,nsd) : element grad-shape-functions 270*59599516SKenneth E. Jansenc WdetJ (npro) : weighted Jacobian 271*59599516SKenneth E. Jansenc rti (npro,nsd+1) : partial residual 272*59599516SKenneth E. Jansenc stifft (npro,nsd,nsd) : stiffness matrix 273*59599516SKenneth E. Jansenc ( K_ij + A_i tau A_j ) 274*59599516SKenneth E. Jansenc 275*59599516SKenneth E. Jansenc output: 276*59599516SKenneth E. Jansenc rtl (npro,nshl) : residual (will end up being G^e_b) 277*59599516SKenneth E. Jansenc EGmasst (npro,nshape,nshape) : element LHS tangent mass matrix 278*59599516SKenneth E. Jansenc (will end up being dG^e_b/dY_a) 279*59599516SKenneth E. Jansenc 280*59599516SKenneth E. Jansenc 281*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2assm.f) 282*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 283*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997 Prim. variables 284*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 285*59599516SKenneth E. Jansenc 286*59599516SKenneth E. Jansen include "common.h" 287*59599516SKenneth E. Jansenc 288*59599516SKenneth E. Jansen dimension shp(npro,nshl), shg(npro,nshl,nsd), 289*59599516SKenneth E. Jansen & WdetJ(npro), rti(npro,nsd+1), 290*59599516SKenneth E. Jansen & rmti(npro,nsd+1), stifft(npro,nsd,nsd), 291*59599516SKenneth E. Jansen & rtl(npro,nshl), rmtl(npro,nshl), 292*59599516SKenneth E. Jansen & EGmasst(npro,nshape,nshape) 293*59599516SKenneth E. Jansenc 294*59599516SKenneth E. Jansen dimension shg1(npro), shg2(npro), 295*59599516SKenneth E. Jansen & shg3(npro), stift1(npro), 296*59599516SKenneth E. Jansen & stift2(npro), stift3(npro) 297*59599516SKenneth E. Jansen 298*59599516SKenneth E. Jansen ttim(29) = ttim(29) - tmr(0.0) 299*59599516SKenneth E. Jansenc 300*59599516SKenneth E. Jansenc.... ----------------------------> RHS <---------------------------- 301*59599516SKenneth E. Jansenc 302*59599516SKenneth E. Jansenc.... add spatial contribution to rl and rml 303*59599516SKenneth E. Jansenc 304*59599516SKenneth E. Jansenc.... ires = 1 or 3 305*59599516SKenneth E. Jansenc 306*59599516SKenneth E. Jansen if ((ires .eq. 1) .or. (ires .eq. 3)) then 307*59599516SKenneth E. Jansenc 308*59599516SKenneth E. Jansen do i = 1, nshl 309*59599516SKenneth E. Jansen rtl(:,i) = rtl(:,i) + WdetJ * ( 310*59599516SKenneth E. Jansen & shg(:,i,1) * rti(:,1) + shg(:,i,2) * rti(:,2) 311*59599516SKenneth E. Jansen & + shg(:,i,3) * rti(:,3) ) 312*59599516SKenneth E. Jansen 313*59599516SKenneth E. Jansen enddo 314*59599516SKenneth E. Jansen flops = flops + 36*nshl*npro 315*59599516SKenneth E. Jansen endif 316*59599516SKenneth E. Jansenc 317*59599516SKenneth E. Jansenc.... ires = 2 or 3 318*59599516SKenneth E. Jansenc 319*59599516SKenneth E. Jansenc if ((ires .eq. 2) .or. (ires .eq. 3)) then 320*59599516SKenneth E. Jansenc do i = 1, nshl 321*59599516SKenneth E. Jansenc rml(:,i,1) = rml(:,i,1) + WdetJ * ( 322*59599516SKenneth E. Jansenc & shg(:,i,1) * rmi(:, 1) + shg(:,i,2) * rmi(:, 6) 323*59599516SKenneth E. Jansenc & + shg(:,i,3) * rmi(:,11) + shp(:,i) * rmi(:,16) ) 324*59599516SKenneth E. Jansenc rml(:,i,2) = rml(:,i,2) + WdetJ * ( 325*59599516SKenneth E. Jansenc & shg(:,i,1) * rmi(:, 2) + shg(:,i,2) * rmi(:, 7) 326*59599516SKenneth E. Jansenc & + shg(:,i,3) * rmi(:,12) + shp(:,i) * rmi(:,17) ) 327*59599516SKenneth E. Jansenc rml(:,i,3) = rml(:,i,3) + WdetJ * ( 328*59599516SKenneth E. Jansenc & shg(:,i,1) * rmi(:, 3) + shg(:,i,2) * rmi(:, 8) 329*59599516SKenneth E. Jansenc & + shg(:,i,3) * rmi(:,13) + shp(:,i) * rmi(:,18) ) 330*59599516SKenneth E. Jansenc rml(:,i,4) = rml(:,i,4) + WdetJ * ( 331*59599516SKenneth E. Jansenc & shg(:,i,1) * rmi(:, 4) + shg(:,i,2) * rmi(:, 9) 332*59599516SKenneth E. Jansenc & + shg(:,i,3) * rmi(:,14) + shp(:,i) * rmi(:,19) ) 333*59599516SKenneth E. Jansenc rml(:,i,5) = rml(:,i,5) + WdetJ * ( 334*59599516SKenneth E. Jansenc & shg(:,i,1) * rmi(:, 5) + shg(:,i,2) * rmi(:,10) 335*59599516SKenneth E. Jansenc & + shg(:,i,3) * rmi(:,15) + shp(:,i) * rmi(:,20) ) 336*59599516SKenneth E. Jansenc enddo 337*59599516SKenneth E. Jansenc 338*59599516SKenneth E. Jansenc flops = flops + (15+45*nshl)*npro 339*59599516SKenneth E. Jansenc endif 340*59599516SKenneth E. Jansen 341*59599516SKenneth E. Jansenc 342*59599516SKenneth E. Jansenc.... add temporal contribution to rl 343*59599516SKenneth E. Jansenc 344*59599516SKenneth E. Jansen 345*59599516SKenneth E. Jansen do i = 1, nshl 346*59599516SKenneth E. Jansen rtl(:,i) = rtl(:,i) + shp(:,i) * WdetJ * rti(:,4) 347*59599516SKenneth E. Jansen enddo 348*59599516SKenneth E. Jansen 349*59599516SKenneth E. Jansen flops = flops + 11*nshl*npro 350*59599516SKenneth E. Jansen 351*59599516SKenneth E. Jansenc 352*59599516SKenneth E. Jansenc.... ----------------------------> LHS <---------------------------- 353*59599516SKenneth E. Jansenc 354*59599516SKenneth E. Jansen if (lhs .eq. 1) then 355*59599516SKenneth E. Jansenc 356*59599516SKenneth E. Jansenc.... loop through columns (nodes j) 357*59599516SKenneth E. Jansenc 358*59599516SKenneth E. Jansen do j = 1, nshl 359*59599516SKenneth E. Jansenc 360*59599516SKenneth E. Jansenc.... set up factors 361*59599516SKenneth E. Jansenc 362*59599516SKenneth E. Jansen shg1 = WdetJ * shg(:,j,1) 363*59599516SKenneth E. Jansen shg2 = WdetJ * shg(:,j,2) 364*59599516SKenneth E. Jansen shg3 = WdetJ * shg(:,j,3) 365*59599516SKenneth E. Jansenc 366*59599516SKenneth E. Jansenc.... calculate weighted stiffness matrix (first part) 367*59599516SKenneth E. Jansenc 368*59599516SKenneth E. Jansen stift1(:) = shg1 * stifft(:,1,1) 369*59599516SKenneth E. Jansen & + shg2 * stifft(:,1,2) 370*59599516SKenneth E. Jansen & + shg3 * stifft(:,1,3) 371*59599516SKenneth E. Jansen stift2(:) = shg1 * stifft(:,2,1) 372*59599516SKenneth E. Jansen & + shg2 * stifft(:,2,2) 373*59599516SKenneth E. Jansen & + shg3 * stifft(:,2,3) 374*59599516SKenneth E. Jansen stift3(:) = shg1 * stifft(:,3,1) 375*59599516SKenneth E. Jansen & + shg2 * stifft(:,3,2) 376*59599516SKenneth E. Jansen & + shg3 * stifft(:,3,3) 377*59599516SKenneth E. Jansenc 378*59599516SKenneth E. Jansenc.... loop through rows (nodes i) 379*59599516SKenneth E. Jansenc 380*59599516SKenneth E. Jansen do i = 1, nshl 381*59599516SKenneth E. Jansenc 382*59599516SKenneth E. Jansenc.... add contribution of stiffness to EGmass 383*59599516SKenneth E. Jansenc 384*59599516SKenneth E. Jansen EGmasst(:,i,j) = EGmasst(:,i,j) 385*59599516SKenneth E. Jansen & + shg(:,i,1) * stift1(:) 386*59599516SKenneth E. Jansen & + shg(:,i,2) * stift2(:) 387*59599516SKenneth E. Jansen & + shg(:,i,3) * stift3(:) 388*59599516SKenneth E. Jansen 389*59599516SKenneth E. Jansenc 390*59599516SKenneth E. Jansenc.... end loop on rows 391*59599516SKenneth E. Jansenc 392*59599516SKenneth E. Jansen enddo 393*59599516SKenneth E. Jansenc 394*59599516SKenneth E. Jansenc.... end loop on columns 395*59599516SKenneth E. Jansenc 396*59599516SKenneth E. Jansen enddo 397*59599516SKenneth E. Jansenc 398*59599516SKenneth E. Jansenc.... end left hand side assembly 399*59599516SKenneth E. Jansenc 400*59599516SKenneth E. Jansen endif 401*59599516SKenneth E. Jansen 402*59599516SKenneth E. Jansen ttim(29) = ttim(29) + tmr(0.0) 403*59599516SKenneth E. Jansenc 404*59599516SKenneth E. Jansenc.... return 405*59599516SKenneth E. Jansenc 406*59599516SKenneth E. Jansen return 407*59599516SKenneth E. Jansen end 408