159599516SKenneth E. Jansen subroutine e3wmlt (shp, shg, WdetJ, 259599516SKenneth E. Jansen & ri, rmi, rl, 359599516SKenneth E. Jansen & rml, stiff, EGmass ) 459599516SKenneth E. Jansenc 559599516SKenneth E. Jansenc---------------------------------------------------------------------- 659599516SKenneth E. Jansenc 759599516SKenneth E. Jansenc Up to now most of the terms have not been multiplied by the 859599516SKenneth E. Jansenc shape function from the weight space. Now that we have collected 959599516SKenneth E. Jansenc all the terms that the shape function (and its derivatives for the 1059599516SKenneth E. Jansenc terms that were integrated by parts) multiplies, in this routine 1159599516SKenneth E. Jansenc we carry out that multiplication. After these operations we will 1259599516SKenneth E. Jansenc have this quadrature points contribution to the integral for the 1359599516SKenneth E. Jansenc residual (i.e. g^e_b(xi^l) D(xi^l) QW(xi^l) where e is the element, 1459599516SKenneth E. Jansenc b is the local node number on the element, l is the quadrature point 1559599516SKenneth E. Jansenc D is the determinate of the Jacobian of the mapping, and QW is this 1659599516SKenneth E. Jansenc quadrature points weight....WHEW). When we add up all of the 1759599516SKenneth E. Jansenc integration points we get G^e_b which we will assemble in the 1859599516SKenneth E. Jansenc subroutine LOCAL to form G_B. 1959599516SKenneth E. Jansenc 2059599516SKenneth E. Jansenc This routine also forms the LHS contribution from the LS term 2159599516SKenneth E. Jansenc and the diffusion term which has been partially constructed and 2259599516SKenneth E. Jansenc placed in stiff. Those familiar with elasticity might recognize 2359599516SKenneth E. Jansenc this naming convention since this is like a stiffness matrix that 2459599516SKenneth E. Jansenc if you had a linear problem would be calculated once and saved for 2559599516SKenneth E. Jansenc all time. 2659599516SKenneth E. Jansenc 2759599516SKenneth E. Jansenc ri: LS, Diffusion, Convective and mass, 2859599516SKenneth E. Jansenc rmi: LS, Diffusion and mass, 2959599516SKenneth E. Jansenc stiff: LS, Diffusion. 3059599516SKenneth E. Jansenc 3159599516SKenneth E. Jansenc input: 3259599516SKenneth E. Jansenc shp (nshl) : element shape-functions 3359599516SKenneth E. Jansenc shg (npro,nshl,nsd) : element grad-shape-functions 3459599516SKenneth E. Jansenc WdetJ (npro) : weighted Jacobian 3559599516SKenneth E. Jansenc ri (npro,nflow*(nsd+1)) : partial residual 3659599516SKenneth E. Jansenc rmi (npro,nflow*(nsd+1)) : partial modified residual 3759599516SKenneth E. Jansenc stiff (npro,nsd*nflow,nsd*nflow) : stiffness matrix 3859599516SKenneth E. Jansenc ( K_ij + A_i tau A_j ) 3959599516SKenneth E. Jansenc 4059599516SKenneth E. Jansenc output: 4159599516SKenneth E. Jansenc rl (npro,nshl,nflow) : residual 4259599516SKenneth E. Jansenc rml (npro,nshl,nflow) : modified residual 4359599516SKenneth E. Jansenc EGmass (npro,nedof,nedof) : element LHS tangent mass matrix 4459599516SKenneth E. Jansenc 4559599516SKenneth E. Jansenc 4659599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2assm.f) 4759599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 4859599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997 Prim. variables 4959599516SKenneth E. Jansenc---------------------------------------------------------------------- 5059599516SKenneth E. Jansenc 5159599516SKenneth E. Jansen include "common.h" 5259599516SKenneth E. Jansenc 5359599516SKenneth E. Jansen dimension shp(npro,nshl), 5459599516SKenneth E. Jansen & shg(npro,nshl,nsd), 5559599516SKenneth E. Jansen & WdetJ(npro), ri(npro,nflow*(nsd+1)), 5659599516SKenneth E. Jansen & rmi(npro,nflow*(nsd+1)), stiff(npro,3*nflow,3*nflow), 5759599516SKenneth E. Jansen & rl(npro,nshl,nflow), rml(npro,nshl,nflow), 5859599516SKenneth E. Jansen & EGmass(npro,nedof,nedof) 5959599516SKenneth E. Jansenc 6059599516SKenneth E. Jansen dimension shg1(npro), shg2(npro), 6159599516SKenneth E. Jansen & shg3(npro), stif1(npro,nflow,nflow), 6259599516SKenneth E. Jansen & stif2(npro,nflow,nflow), stif3(npro,nflow,nflow) 6359599516SKenneth E. Jansen 6459599516SKenneth E. Jansen ttim(29) = ttim(29) - secs(0.0) 6559599516SKenneth E. Jansenc 6659599516SKenneth E. Jansenc.... ----------------------------> RHS <---------------------------- 6759599516SKenneth E. Jansenc 6859599516SKenneth E. Jansenc.... add spatial contribution to rl and rml 6959599516SKenneth E. Jansenc 7059599516SKenneth E. Jansenc.... ires = 1 or 3 7159599516SKenneth E. Jansenc 7259599516SKenneth E. Jansen if ((ires .eq. 1) .or. (ires .eq. 3)) then 7359599516SKenneth E. Jansenc 7459599516SKenneth E. Jansen do i = 1, nshl 7559599516SKenneth E. Jansen rl(:,i,1) = rl(:,i,1) + WdetJ * ( 7659599516SKenneth E. Jansen & shg(:,i,1) * ri(:, 1) + shg(:,i,2) * ri(:, 6) 7759599516SKenneth E. Jansen & + shg(:,i,3) * ri(:,11) ) 7859599516SKenneth E. Jansen rl(:,i,2) = rl(:,i,2) + WdetJ * ( 7959599516SKenneth E. Jansen & shg(:,i,1) * ri(:, 2) + shg(:,i,2) * ri(:, 7) 8059599516SKenneth E. Jansen & + shg(:,i,3) * ri(:,12) ) 8159599516SKenneth E. Jansen rl(:,i,3) = rl(:,i,3) + WdetJ * ( 8259599516SKenneth E. Jansen & shg(:,i,1) * ri(:, 3) + shg(:,i,2) * ri(:, 8) 8359599516SKenneth E. Jansen & + shg(:,i,3) * ri(:,13) ) 8459599516SKenneth E. Jansen rl(:,i,4) = rl(:,i,4) + WdetJ * ( 8559599516SKenneth E. Jansen & shg(:,i,1) * ri(:, 4) + shg(:,i,2) * ri(:, 9) 8659599516SKenneth E. Jansen & + shg(:,i,3) * ri(:,14) ) 8759599516SKenneth E. Jansen rl(:,i,5) = rl(:,i,5) + WdetJ * ( 8859599516SKenneth E. Jansen & shg(:,i,1) * ri(:, 5) + shg(:,i,2) * ri(:,10) 8959599516SKenneth E. Jansen & + shg(:,i,3) * ri(:,15) ) 9059599516SKenneth E. Jansen enddo 9159599516SKenneth E. Jansenc 92*f4d0b58bSKenneth E. Jansen! flops = flops + 36*nshl*npro 9359599516SKenneth E. Jansen endif 9459599516SKenneth E. Jansenc 9559599516SKenneth E. Jansenc.... ires = 2 or 3 9659599516SKenneth E. Jansenc 9759599516SKenneth E. Jansen if ((ires .eq. 2) .or. (ires .eq. 3)) then 9859599516SKenneth E. Jansen do i = 1, nshl 9959599516SKenneth E. Jansen rml(:,i,1) = rml(:,i,1) + WdetJ * ( 10059599516SKenneth E. Jansen & shg(:,i,1) * rmi(:, 1) + shg(:,i,2) * rmi(:, 6) 10159599516SKenneth E. Jansen & + shg(:,i,3) * rmi(:,11) 10259599516SKenneth E. Jansen & + shp(:,i) * rmi(:,16) ) 10359599516SKenneth E. Jansen rml(:,i,2) = rml(:,i,2) + WdetJ * ( 10459599516SKenneth E. Jansen & shg(:,i,1) * rmi(:, 2) + shg(:,i,2) * rmi(:, 7) 10559599516SKenneth E. Jansen & + shg(:,i,3) * rmi(:,12) 10659599516SKenneth E. Jansen & + shp(:,i) * rmi(:,17) ) 10759599516SKenneth E. Jansen rml(:,i,3) = rml(:,i,3) + WdetJ * ( 10859599516SKenneth E. Jansen & shg(:,i,1) * rmi(:, 3) + shg(:,i,2) * rmi(:, 8) 10959599516SKenneth E. Jansen & + shg(:,i,3) * rmi(:,13) 11059599516SKenneth E. Jansen & + shp(:,i) * rmi(:,18) ) 11159599516SKenneth E. Jansen rml(:,i,4) = rml(:,i,4) + WdetJ * ( 11259599516SKenneth E. Jansen & shg(:,i,1) * rmi(:, 4) + shg(:,i,2) * rmi(:, 9) 11359599516SKenneth E. Jansen & + shg(:,i,3) * rmi(:,14) 11459599516SKenneth E. Jansen & + shp(:,i) * rmi(:,19) ) 11559599516SKenneth E. Jansen rml(:,i,5) = rml(:,i,5) + WdetJ * ( 11659599516SKenneth E. Jansen & shg(:,i,1) * rmi(:, 5) + shg(:,i,2) * rmi(:,10) 11759599516SKenneth E. Jansen & + shg(:,i,3) * rmi(:,15) 11859599516SKenneth E. Jansen & + shp(:,i) * rmi(:,20) ) 11959599516SKenneth E. Jansen enddo 12059599516SKenneth E. Jansenc 121*f4d0b58bSKenneth E. Jansen! flops = flops + (15+45*nshl)*npro 12259599516SKenneth E. Jansen endif 12359599516SKenneth E. Jansenc 12459599516SKenneth E. Jansenc.... add temporal contribution to rl 12559599516SKenneth E. Jansenc 12659599516SKenneth E. Jansen if (ngauss .eq. 1 .and. nshl.eq.4) then !already ex. integ mass 12759599516SKenneth E. Jansen if(matflg(5,1).ge.1) then 12859599516SKenneth E. Jansen do i = 1, nshl 12959599516SKenneth E. Jansen rl(:,i,2) = rl(:,i,2) + shp(:,i) * WdetJ * ri(:,17) 13059599516SKenneth E. Jansen rl(:,i,3) = rl(:,i,3) + shp(:,i) * WdetJ * ri(:,18) 13159599516SKenneth E. Jansen rl(:,i,4) = rl(:,i,4) + shp(:,i) * WdetJ * ri(:,19) 13259599516SKenneth E. Jansen rl(:,i,5) = rl(:,i,5) + shp(:,i) * WdetJ * ri(:,20) 13359599516SKenneth E. Jansen enddo 13459599516SKenneth E. Jansen endif 13559599516SKenneth E. Jansen else !check for a body force 13659599516SKenneth E. Jansen do i = 1, nshl 13759599516SKenneth E. Jansen rl(:,i,1) = rl(:,i,1) + shp(:,i) * WdetJ * ri(:,16) 13859599516SKenneth E. Jansen rl(:,i,2) = rl(:,i,2) + shp(:,i) * WdetJ * ri(:,17) 13959599516SKenneth E. Jansen rl(:,i,3) = rl(:,i,3) + shp(:,i) * WdetJ * ri(:,18) 14059599516SKenneth E. Jansen rl(:,i,4) = rl(:,i,4) + shp(:,i) * WdetJ * ri(:,19) 14159599516SKenneth E. Jansen rl(:,i,5) = rl(:,i,5) + shp(:,i) * WdetJ * ri(:,20) 14259599516SKenneth E. Jansen enddo 14359599516SKenneth E. Jansen 144*f4d0b58bSKenneth E. Jansen! flops = flops + 11*nshl*npro 14559599516SKenneth E. Jansen endif 14659599516SKenneth E. Jansen 14759599516SKenneth E. Jansenc 14859599516SKenneth E. Jansenc.... ----------------------------> LHS <---------------------------- 14959599516SKenneth E. Jansenc 15059599516SKenneth E. Jansen if (lhs .eq. 1) then 15159599516SKenneth E. Jansenc 15259599516SKenneth E. Jansenc.... loop through columns (nodes j) 15359599516SKenneth E. Jansenc 15459599516SKenneth E. Jansen do j = 1, nshl 15559599516SKenneth E. Jansen j0 = nflow * (j - 1) 15659599516SKenneth E. Jansenc 15759599516SKenneth E. Jansenc.... set up factors 15859599516SKenneth E. Jansenc 15959599516SKenneth E. Jansen shg1 = WdetJ * shg(:,j,1) 16059599516SKenneth E. Jansen shg2 = WdetJ * shg(:,j,2) 16159599516SKenneth E. Jansen shg3 = WdetJ * shg(:,j,3) 16259599516SKenneth E. Jansenc 16359599516SKenneth E. Jansenc.... loop through d.o.f.'s 16459599516SKenneth E. Jansenc 16559599516SKenneth E. Jansen do jdof = 1, nflow 16659599516SKenneth E. Jansen do idof = 1, nflow 16759599516SKenneth E. Jansen idof2 = idof + nflow 16859599516SKenneth E. Jansen jdof2 = jdof + nflow 16959599516SKenneth E. Jansen 17059599516SKenneth E. Jansen idof3 = idof2 + nflow 17159599516SKenneth E. Jansen jdof3 = jdof2 + nflow 17259599516SKenneth E. Jansenc 17359599516SKenneth E. Jansenc.... calculate weighted stiffness matrix (first part) 17459599516SKenneth E. Jansenc 17559599516SKenneth E. Jansen stif1(:,idof,jdof) = shg1 * stiff(:,idof,jdof) 17659599516SKenneth E. Jansen & + shg2 * stiff(:,idof,jdof2) 17759599516SKenneth E. Jansen & + shg3 * stiff(:,idof,jdof3) 17859599516SKenneth E. Jansen stif2(:,idof,jdof) = shg1 * stiff(:,idof2,jdof) 17959599516SKenneth E. Jansen & + shg2 * stiff(:,idof2,jdof2) 18059599516SKenneth E. Jansen & + shg3 * stiff(:,idof2,jdof3) 18159599516SKenneth E. Jansen stif3(:,idof,jdof) = shg1 * stiff(:,idof3,jdof) 18259599516SKenneth E. Jansen & + shg2 * stiff(:,idof3,jdof2) 18359599516SKenneth E. Jansen & + shg3 * stiff(:,idof3,jdof3) 18459599516SKenneth E. Jansen enddo 18559599516SKenneth E. Jansen enddo 18659599516SKenneth E. Jansenc 18759599516SKenneth E. Jansenc.... loop through rows (nodes i) 18859599516SKenneth E. Jansenc 18959599516SKenneth E. Jansen do i = 1, nshl 19059599516SKenneth E. Jansen i0 = nflow * (i - 1) 19159599516SKenneth E. Jansenc 19259599516SKenneth E. Jansenc.... add contribution of stiffness to EGmass 19359599516SKenneth E. Jansenc 19459599516SKenneth E. Jansen do jdof = 1, nflow 19559599516SKenneth E. Jansen EGmass(:,i0+1,j0+jdof) = EGmass(:,i0+1,j0+jdof) 19659599516SKenneth E. Jansen & + shg(:,i,1) * stif1(:,1,jdof) 19759599516SKenneth E. Jansen & + shg(:,i,2) * stif2(:,1,jdof) 19859599516SKenneth E. Jansen & + shg(:,i,3) * stif3(:,1,jdof) 19959599516SKenneth E. Jansen EGmass(:,i0+2,j0+jdof) = EGmass(:,i0+2,j0+jdof) 20059599516SKenneth E. Jansen & + shg(:,i,1) * stif1(:,2,jdof) 20159599516SKenneth E. Jansen & + shg(:,i,2) * stif2(:,2,jdof) 20259599516SKenneth E. Jansen & + shg(:,i,3) * stif3(:,2,jdof) 20359599516SKenneth E. Jansen EGmass(:,i0+3,j0+jdof) = EGmass(:,i0+3,j0+jdof) 20459599516SKenneth E. Jansen & + shg(:,i,1) * stif1(:,3,jdof) 20559599516SKenneth E. Jansen & + shg(:,i,2) * stif2(:,3,jdof) 20659599516SKenneth E. Jansen & + shg(:,i,3) * stif3(:,3,jdof) 20759599516SKenneth E. Jansen EGmass(:,i0+4,j0+jdof) = EGmass(:,i0+4,j0+jdof) 20859599516SKenneth E. Jansen & + shg(:,i,1) * stif1(:,4,jdof) 20959599516SKenneth E. Jansen & + shg(:,i,2) * stif2(:,4,jdof) 21059599516SKenneth E. Jansen & + shg(:,i,3) * stif3(:,4,jdof) 21159599516SKenneth E. Jansen EGmass(:,i0+5,j0+jdof) = EGmass(:,i0+5,j0+jdof) 21259599516SKenneth E. Jansen & + shg(:,i,1) * stif1(:,5,jdof) 21359599516SKenneth E. Jansen & + shg(:,i,2) * stif2(:,5,jdof) 21459599516SKenneth E. Jansen & + shg(:,i,3) * stif3(:,5,jdof) 21559599516SKenneth E. Jansen enddo 21659599516SKenneth E. Jansenc 21759599516SKenneth E. Jansenc.... end loop on rows 21859599516SKenneth E. Jansenc 21959599516SKenneth E. Jansen enddo 22059599516SKenneth E. Jansenc 22159599516SKenneth E. Jansenc.... end loop on columns 22259599516SKenneth E. Jansenc 22359599516SKenneth E. Jansen enddo 22459599516SKenneth E. Jansenc 22559599516SKenneth E. Jansenc.... end left hand side assembly 22659599516SKenneth E. Jansenc 22759599516SKenneth E. Jansen endif 22859599516SKenneth E. Jansen 22959599516SKenneth E. Jansen ttim(29) = ttim(29) + secs(0.0) 23059599516SKenneth E. Jansenc 23159599516SKenneth E. Jansenc.... return 23259599516SKenneth E. Jansenc 23359599516SKenneth E. Jansen return 23459599516SKenneth E. Jansen end 23559599516SKenneth E. Jansenc 23659599516SKenneth E. Jansenc 23759599516SKenneth E. Jansenc 23859599516SKenneth E. Jansen subroutine e3wmltSclr(shp, shg, WdetJ, 23959599516SKenneth E. Jansen & rti, rtl, 24059599516SKenneth E. Jansen & stifft, EGmasst ) 24159599516SKenneth E. Jansenc 24259599516SKenneth E. Jansenc---------------------------------------------------------------------- 24359599516SKenneth E. Jansenc 24459599516SKenneth E. Jansenc Up to now most of the terms have not been multiplied by the 24559599516SKenneth E. Jansenc shape function from the weight space. Now that we have collected 24659599516SKenneth E. Jansenc all the terms that the shape function (and its derivatives for the 24759599516SKenneth E. Jansenc terms that were integrated by parts) multiplies, in this routine 24859599516SKenneth E. Jansenc we carry out that multiplication. After these operations we will 24959599516SKenneth E. Jansenc have this quadrature points contribution to the integral for the 25059599516SKenneth E. Jansenc residual (i.e. g^e_b(xi^l) D(xi^l) QW(xi^l) where e is the element, 25159599516SKenneth E. Jansenc b is the local node number on the element, l is the quadrature point 25259599516SKenneth E. Jansenc D is the determinate of the Jacobian of the mapping, and QW is this 25359599516SKenneth E. Jansenc quadrature points weight....WHEW). When we add up all of the 25459599516SKenneth E. Jansenc integration points we get G^e_b which we will assemble in the 25559599516SKenneth E. Jansenc subroutine LOCAL to form G_B. 25659599516SKenneth E. Jansenc 25759599516SKenneth E. Jansenc This routine also forms the LHS contribution from the LS term 25859599516SKenneth E. Jansenc and the diffusion term which has been partially constructed and 25959599516SKenneth E. Jansenc placed in stiff. Those familiar with elasticity might recognize 26059599516SKenneth E. Jansenc this naming convention since this is like a stiffness matrix that 26159599516SKenneth E. Jansenc if you had a linear problem would be calculated once and saved for 26259599516SKenneth E. Jansenc all time. 26359599516SKenneth E. Jansenc 26459599516SKenneth E. Jansenc ri: LS, Diffusion, Convective and mass, 26559599516SKenneth E. Jansenc stiff: LS, Diffusion. 26659599516SKenneth E. Jansenc 26759599516SKenneth E. Jansenc input: 26859599516SKenneth E. Jansenc shp (npro,nshl) : element shape-functions 26959599516SKenneth E. Jansenc shg (npro,nshl,nsd) : element grad-shape-functions 27059599516SKenneth E. Jansenc WdetJ (npro) : weighted Jacobian 27159599516SKenneth E. Jansenc rti (npro,nsd+1) : partial residual 27259599516SKenneth E. Jansenc stifft (npro,nsd,nsd) : stiffness matrix 27359599516SKenneth E. Jansenc ( K_ij + A_i tau A_j ) 27459599516SKenneth E. Jansenc 27559599516SKenneth E. Jansenc output: 27659599516SKenneth E. Jansenc rtl (npro,nshl) : residual (will end up being G^e_b) 27759599516SKenneth E. Jansenc EGmasst (npro,nshape,nshape) : element LHS tangent mass matrix 27859599516SKenneth E. Jansenc (will end up being dG^e_b/dY_a) 27959599516SKenneth E. Jansenc 28059599516SKenneth E. Jansenc 28159599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2assm.f) 28259599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 28359599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997 Prim. variables 28459599516SKenneth E. Jansenc---------------------------------------------------------------------- 28559599516SKenneth E. Jansenc 28659599516SKenneth E. Jansen include "common.h" 28759599516SKenneth E. Jansenc 28859599516SKenneth E. Jansen dimension shp(npro,nshl), shg(npro,nshl,nsd), 28959599516SKenneth E. Jansen & WdetJ(npro), rti(npro,nsd+1), 29059599516SKenneth E. Jansen & rmti(npro,nsd+1), stifft(npro,nsd,nsd), 29159599516SKenneth E. Jansen & rtl(npro,nshl), rmtl(npro,nshl), 29259599516SKenneth E. Jansen & EGmasst(npro,nshape,nshape) 29359599516SKenneth E. Jansenc 29459599516SKenneth E. Jansen dimension shg1(npro), shg2(npro), 29559599516SKenneth E. Jansen & shg3(npro), stift1(npro), 29659599516SKenneth E. Jansen & stift2(npro), stift3(npro) 29759599516SKenneth E. Jansen 29859599516SKenneth E. Jansen ttim(29) = ttim(29) - tmr(0.0) 29959599516SKenneth E. Jansenc 30059599516SKenneth E. Jansenc.... ----------------------------> RHS <---------------------------- 30159599516SKenneth E. Jansenc 30259599516SKenneth E. Jansenc.... add spatial contribution to rl and rml 30359599516SKenneth E. Jansenc 30459599516SKenneth E. Jansenc.... ires = 1 or 3 30559599516SKenneth E. Jansenc 30659599516SKenneth E. Jansen if ((ires .eq. 1) .or. (ires .eq. 3)) then 30759599516SKenneth E. Jansenc 30859599516SKenneth E. Jansen do i = 1, nshl 30959599516SKenneth E. Jansen rtl(:,i) = rtl(:,i) + WdetJ * ( 31059599516SKenneth E. Jansen & shg(:,i,1) * rti(:,1) + shg(:,i,2) * rti(:,2) 31159599516SKenneth E. Jansen & + shg(:,i,3) * rti(:,3) ) 31259599516SKenneth E. Jansen 31359599516SKenneth E. Jansen enddo 314*f4d0b58bSKenneth E. Jansen! flops = flops + 36*nshl*npro 31559599516SKenneth E. Jansen endif 31659599516SKenneth E. Jansenc 31759599516SKenneth E. Jansenc.... ires = 2 or 3 31859599516SKenneth E. Jansenc 31959599516SKenneth E. Jansenc if ((ires .eq. 2) .or. (ires .eq. 3)) then 32059599516SKenneth E. Jansenc do i = 1, nshl 32159599516SKenneth E. Jansenc rml(:,i,1) = rml(:,i,1) + WdetJ * ( 32259599516SKenneth E. Jansenc & shg(:,i,1) * rmi(:, 1) + shg(:,i,2) * rmi(:, 6) 32359599516SKenneth E. Jansenc & + shg(:,i,3) * rmi(:,11) + shp(:,i) * rmi(:,16) ) 32459599516SKenneth E. Jansenc rml(:,i,2) = rml(:,i,2) + WdetJ * ( 32559599516SKenneth E. Jansenc & shg(:,i,1) * rmi(:, 2) + shg(:,i,2) * rmi(:, 7) 32659599516SKenneth E. Jansenc & + shg(:,i,3) * rmi(:,12) + shp(:,i) * rmi(:,17) ) 32759599516SKenneth E. Jansenc rml(:,i,3) = rml(:,i,3) + WdetJ * ( 32859599516SKenneth E. Jansenc & shg(:,i,1) * rmi(:, 3) + shg(:,i,2) * rmi(:, 8) 32959599516SKenneth E. Jansenc & + shg(:,i,3) * rmi(:,13) + shp(:,i) * rmi(:,18) ) 33059599516SKenneth E. Jansenc rml(:,i,4) = rml(:,i,4) + WdetJ * ( 33159599516SKenneth E. Jansenc & shg(:,i,1) * rmi(:, 4) + shg(:,i,2) * rmi(:, 9) 33259599516SKenneth E. Jansenc & + shg(:,i,3) * rmi(:,14) + shp(:,i) * rmi(:,19) ) 33359599516SKenneth E. Jansenc rml(:,i,5) = rml(:,i,5) + WdetJ * ( 33459599516SKenneth E. Jansenc & shg(:,i,1) * rmi(:, 5) + shg(:,i,2) * rmi(:,10) 33559599516SKenneth E. Jansenc & + shg(:,i,3) * rmi(:,15) + shp(:,i) * rmi(:,20) ) 33659599516SKenneth E. Jansenc enddo 33759599516SKenneth E. Jansenc 338*f4d0b58bSKenneth E. Jansenc ! flops = flops + (15+45*nshl)*npro 33959599516SKenneth E. Jansenc endif 34059599516SKenneth E. Jansen 34159599516SKenneth E. Jansenc 34259599516SKenneth E. Jansenc.... add temporal contribution to rl 34359599516SKenneth E. Jansenc 34459599516SKenneth E. Jansen 34559599516SKenneth E. Jansen do i = 1, nshl 34659599516SKenneth E. Jansen rtl(:,i) = rtl(:,i) + shp(:,i) * WdetJ * rti(:,4) 34759599516SKenneth E. Jansen enddo 34859599516SKenneth E. Jansen 349*f4d0b58bSKenneth E. Jansen! flops = flops + 11*nshl*npro 35059599516SKenneth E. Jansen 35159599516SKenneth E. Jansenc 35259599516SKenneth E. Jansenc.... ----------------------------> LHS <---------------------------- 35359599516SKenneth E. Jansenc 35459599516SKenneth E. Jansen if (lhs .eq. 1) then 35559599516SKenneth E. Jansenc 35659599516SKenneth E. Jansenc.... loop through columns (nodes j) 35759599516SKenneth E. Jansenc 35859599516SKenneth E. Jansen do j = 1, nshl 35959599516SKenneth E. Jansenc 36059599516SKenneth E. Jansenc.... set up factors 36159599516SKenneth E. Jansenc 36259599516SKenneth E. Jansen shg1 = WdetJ * shg(:,j,1) 36359599516SKenneth E. Jansen shg2 = WdetJ * shg(:,j,2) 36459599516SKenneth E. Jansen shg3 = WdetJ * shg(:,j,3) 36559599516SKenneth E. Jansenc 36659599516SKenneth E. Jansenc.... calculate weighted stiffness matrix (first part) 36759599516SKenneth E. Jansenc 36859599516SKenneth E. Jansen stift1(:) = shg1 * stifft(:,1,1) 36959599516SKenneth E. Jansen & + shg2 * stifft(:,1,2) 37059599516SKenneth E. Jansen & + shg3 * stifft(:,1,3) 37159599516SKenneth E. Jansen stift2(:) = shg1 * stifft(:,2,1) 37259599516SKenneth E. Jansen & + shg2 * stifft(:,2,2) 37359599516SKenneth E. Jansen & + shg3 * stifft(:,2,3) 37459599516SKenneth E. Jansen stift3(:) = shg1 * stifft(:,3,1) 37559599516SKenneth E. Jansen & + shg2 * stifft(:,3,2) 37659599516SKenneth E. Jansen & + shg3 * stifft(:,3,3) 37759599516SKenneth E. Jansenc 37859599516SKenneth E. Jansenc.... loop through rows (nodes i) 37959599516SKenneth E. Jansenc 38059599516SKenneth E. Jansen do i = 1, nshl 38159599516SKenneth E. Jansenc 38259599516SKenneth E. Jansenc.... add contribution of stiffness to EGmass 38359599516SKenneth E. Jansenc 38459599516SKenneth E. Jansen EGmasst(:,i,j) = EGmasst(:,i,j) 38559599516SKenneth E. Jansen & + shg(:,i,1) * stift1(:) 38659599516SKenneth E. Jansen & + shg(:,i,2) * stift2(:) 38759599516SKenneth E. Jansen & + shg(:,i,3) * stift3(:) 38859599516SKenneth E. Jansen 38959599516SKenneth E. Jansenc 39059599516SKenneth E. Jansenc.... end loop on rows 39159599516SKenneth E. Jansenc 39259599516SKenneth E. Jansen enddo 39359599516SKenneth E. Jansenc 39459599516SKenneth E. Jansenc.... end loop on columns 39559599516SKenneth E. Jansenc 39659599516SKenneth E. Jansen enddo 39759599516SKenneth E. Jansenc 39859599516SKenneth E. Jansenc.... end left hand side assembly 39959599516SKenneth E. Jansenc 40059599516SKenneth E. Jansen endif 40159599516SKenneth E. Jansen 40259599516SKenneth E. Jansen ttim(29) = ttim(29) + tmr(0.0) 40359599516SKenneth E. Jansenc 40459599516SKenneth E. Jansenc.... return 40559599516SKenneth E. Jansenc 40659599516SKenneth E. Jansen return 40759599516SKenneth E. Jansen end 408