159599516SKenneth E. Jansen subroutine AsAuGMR (ien, EGmass, uBrg, uBtmp ) 259599516SKenneth E. Jansenc 359599516SKenneth E. Jansenc---------------------------------------------------------------------- 459599516SKenneth E. Jansenc This routine computes and assembles the Au product for the 559599516SKenneth E. Jansenc GMRES solver. 659599516SKenneth E. Jansenc 759599516SKenneth E. Jansenc input: 8*513954efSKenneth E. Jansenc ien (npro,nshl) : nodal connectivity 959599516SKenneth E. Jansenc EGmass (npro,nedof,nedof) : element mass matrix 1059599516SKenneth E. Jansenc uBrg (nshg,nflow) : u_i before product 1159599516SKenneth E. Jansenc 1259599516SKenneth E. Jansenc output: 1359599516SKenneth E. Jansenc uBrg (nshg,nflow) : result of product ( u_{i+1} ) 1459599516SKenneth E. Jansenc 1559599516SKenneth E. Jansenc---------------------------------------------------------------------- 1659599516SKenneth E. Jansenc 1759599516SKenneth E. Jansen include "common.h" 1859599516SKenneth E. Jansenc 1959599516SKenneth E. Jansen dimension ien(npro,nshl), EGmass(npro,nedof,nedof), 2059599516SKenneth E. Jansen & uBrg(nshg,nflow), uBtmp(nshg,nflow) 2159599516SKenneth E. Jansenc 2259599516SKenneth E. Jansen dimension uBrgl(npro,nedof), ubBgl(npro,nedof) 2359599516SKenneth E. Jansenc 2459599516SKenneth E. Jansenc.... localize this K-vector for the EBE product 2559599516SKenneth E. Jansenc 2659599516SKenneth E. Jansen call localt (uBrg, uBrgl, abs(ien), nflow, 'gather ') 2759599516SKenneth E. Jansen 2859599516SKenneth E. Jansen ubBgl = zero 2959599516SKenneth E. Jansenc 3059599516SKenneth E. Jansenc.... -----------------------> Au product <--------------------------- 3159599516SKenneth E. Jansenc 3259599516SKenneth E. Jansen do i = 1, nflow*nshl, nflow 3359599516SKenneth E. Jansen do j = 1, nflow*nshl, nflow 3459599516SKenneth E. Jansen ubBgl(:,i ) = ubBgl(:,i ) 3559599516SKenneth E. Jansen & + EGmass(:,i ,j ) * uBrgl(:,j ) 3659599516SKenneth E. Jansen & + EGmass(:,i ,j+1) * uBrgl(:,j+1) 3759599516SKenneth E. Jansen & + EGmass(:,i ,j+2) * uBrgl(:,j+2) 3859599516SKenneth E. Jansen & + EGmass(:,i ,j+3) * uBrgl(:,j+3) 3959599516SKenneth E. Jansen & + EGmass(:,i ,j+4) * uBrgl(:,j+4) 4059599516SKenneth E. Jansenc 4159599516SKenneth E. Jansen ubBgl(:,i+1) = ubBgl(:,i+1) 4259599516SKenneth E. Jansen & + EGmass(:,i+1,j ) * uBrgl(:,j ) 4359599516SKenneth E. Jansen & + EGmass(:,i+1,j+1) * uBrgl(:,j+1) 4459599516SKenneth E. Jansen & + EGmass(:,i+1,j+2) * uBrgl(:,j+2) 4559599516SKenneth E. Jansen & + EGmass(:,i+1,j+3) * uBrgl(:,j+3) 4659599516SKenneth E. Jansen & + EGmass(:,i+1,j+4) * uBrgl(:,j+4) 4759599516SKenneth E. Jansenc 4859599516SKenneth E. Jansen ubBgl(:,i+2) = ubBgl(:,i+2) 4959599516SKenneth E. Jansen & + EGmass(:,i+2,j ) * uBrgl(:,j ) 5059599516SKenneth E. Jansen & + EGmass(:,i+2,j+1) * uBrgl(:,j+1) 5159599516SKenneth E. Jansen & + EGmass(:,i+2,j+2) * uBrgl(:,j+2) 5259599516SKenneth E. Jansen & + EGmass(:,i+2,j+3) * uBrgl(:,j+3) 5359599516SKenneth E. Jansen & + EGmass(:,i+2,j+4) * uBrgl(:,j+4) 5459599516SKenneth E. Jansenc 5559599516SKenneth E. Jansen ubBgl(:,i+3) = ubBgl(:,i+3) 5659599516SKenneth E. Jansen & + EGmass(:,i+3,j ) * uBrgl(:,j ) 5759599516SKenneth E. Jansen & + EGmass(:,i+3,j+1) * uBrgl(:,j+1) 5859599516SKenneth E. Jansen & + EGmass(:,i+3,j+2) * uBrgl(:,j+2) 5959599516SKenneth E. Jansen & + EGmass(:,i+3,j+3) * uBrgl(:,j+3) 6059599516SKenneth E. Jansen & + EGmass(:,i+3,j+4) * uBrgl(:,j+4) 6159599516SKenneth E. Jansenc 6259599516SKenneth E. Jansen ubBgl(:,i+4) = ubBgl(:,i+4) 6359599516SKenneth E. Jansen & + EGmass(:,i+4,j ) * uBrgl(:,j ) 6459599516SKenneth E. Jansen & + EGmass(:,i+4,j+1) * uBrgl(:,j+1) 6559599516SKenneth E. Jansen & + EGmass(:,i+4,j+2) * uBrgl(:,j+2) 6659599516SKenneth E. Jansen & + EGmass(:,i+4,j+3) * uBrgl(:,j+3) 6759599516SKenneth E. Jansen & + EGmass(:,i+4,j+4) * uBrgl(:,j+4) 6859599516SKenneth E. Jansenc 6959599516SKenneth E. Jansen enddo 7059599516SKenneth E. Jansen enddo 7159599516SKenneth E. Jansenc 7259599516SKenneth E. Jansenc.... assemble the result of the product 7359599516SKenneth E. Jansenc 7459599516SKenneth E. Jansen call localt (uBtmp, ubBgl, abs(ien), nflow, 'scatter ') 7559599516SKenneth E. Jansenc 7659599516SKenneth E. Jansenc.... end 7759599516SKenneth E. Jansenc 7859599516SKenneth E. Jansen return 7959599516SKenneth E. Jansen end 8059599516SKenneth E. Jansenc 8159599516SKenneth E. Jansenc 8259599516SKenneth E. Jansenc 8359599516SKenneth E. Jansen subroutine AsAuGMRSclr (ien, EGmass, uBrg, uBtmp ) 8459599516SKenneth E. Jansenc 8559599516SKenneth E. Jansenc---------------------------------------------------------------------- 8659599516SKenneth E. Jansenc This routine computes and assembles the Au product for the 8759599516SKenneth E. Jansenc GMRES solver. 8859599516SKenneth E. Jansenc 8959599516SKenneth E. Jansenc input: 9059599516SKenneth E. Jansenc ien (npro,nshl) : nodal connectivity 9159599516SKenneth E. Jansenc EGmass (npro,nen,nen) : element mass matrix 9259599516SKenneth E. Jansenc uBrg (nshg) : u_i before product 9359599516SKenneth E. Jansenc 9459599516SKenneth E. Jansenc output: 9559599516SKenneth E. Jansenc uBtmp (nshg) : result of product ( u_{i+1} ) 9659599516SKenneth E. Jansenc 9759599516SKenneth E. Jansenc---------------------------------------------------------------------- 9859599516SKenneth E. Jansenc 9959599516SKenneth E. Jansen include "common.h" 10059599516SKenneth E. Jansen include "mpif.h" 10159599516SKenneth E. Jansen include "auxmpi.h" 10259599516SKenneth E. Jansenc 10359599516SKenneth E. Jansen dimension ien(npro,nshl), EGmass(npro,nshape,nshape), 10459599516SKenneth E. Jansen & uBrg(nshg), uBtmp(nshg) 10559599516SKenneth E. Jansenc 106*513954efSKenneth E. Jansen dimension uBrgl(npro,nshl), ubBgl(npro,nshl) 10759599516SKenneth E. Jansenc 10859599516SKenneth E. Jansenc.... localize this K-vector for the EBE product 10959599516SKenneth E. Jansenc 11059599516SKenneth E. Jansen uBrgl = zero 11159599516SKenneth E. Jansen call localtSclr(uBrg, uBrgl, ien, 'gather ') 11259599516SKenneth E. Jansen 11359599516SKenneth E. Jansen ubBgl = zero 11459599516SKenneth E. Jansenc 11559599516SKenneth E. Jansenc.... -----------------------> Au product <--------------------------- 11659599516SKenneth E. Jansenc 11759599516SKenneth E. Jansen do i = 1, nshl 11859599516SKenneth E. Jansen do j = 1, nshl 11959599516SKenneth E. Jansen ubBgl(:,i ) = ubBgl(:,i ) 12059599516SKenneth E. Jansen & + EGmass(:,i ,j ) * uBrgl(:,j ) 12159599516SKenneth E. Jansenc 12259599516SKenneth E. Jansen enddo 12359599516SKenneth E. Jansen enddo 12459599516SKenneth E. Jansenc 12559599516SKenneth E. Jansenc.... assemble the result of the product 12659599516SKenneth E. Jansenc 12759599516SKenneth E. Jansen call localtSclr(uBtmp, ubBgl, ien, 'scatter ') 12859599516SKenneth E. Jansenc 12959599516SKenneth E. Jansenc.... end 13059599516SKenneth E. Jansenc 13159599516SKenneth E. Jansen return 13259599516SKenneth E. Jansen end 13359599516SKenneth E. Jansen 13459599516SKenneth E. Jansen 13559599516SKenneth E. Jansen 13659599516SKenneth E. Jansen 13759599516SKenneth E. Jansen 13859599516SKenneth E. Jansen 139