1*59599516SKenneth E. Jansen subroutine AsAuGMR (ien, EGmass, uBrg, uBtmp ) 2*59599516SKenneth E. Jansenc 3*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 4*59599516SKenneth E. Jansenc This routine computes and assembles the Au product for the 5*59599516SKenneth E. Jansenc GMRES solver. 6*59599516SKenneth E. Jansenc 7*59599516SKenneth E. Jansenc input: 8*59599516SKenneth E. Jansenc ien (npro,nshape) : nodal connectivity 9*59599516SKenneth E. Jansenc EGmass (npro,nedof,nedof) : element mass matrix 10*59599516SKenneth E. Jansenc uBrg (nshg,nflow) : u_i before product 11*59599516SKenneth E. Jansenc 12*59599516SKenneth E. Jansenc output: 13*59599516SKenneth E. Jansenc uBrg (nshg,nflow) : result of product ( u_{i+1} ) 14*59599516SKenneth E. Jansenc 15*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 16*59599516SKenneth E. Jansenc 17*59599516SKenneth E. Jansen include "common.h" 18*59599516SKenneth E. Jansenc 19*59599516SKenneth E. Jansen dimension ien(npro,nshl), EGmass(npro,nedof,nedof), 20*59599516SKenneth E. Jansen & uBrg(nshg,nflow), uBtmp(nshg,nflow) 21*59599516SKenneth E. Jansenc 22*59599516SKenneth E. Jansen dimension uBrgl(npro,nedof), ubBgl(npro,nedof) 23*59599516SKenneth E. Jansenc 24*59599516SKenneth E. Jansenc.... localize this K-vector for the EBE product 25*59599516SKenneth E. Jansenc 26*59599516SKenneth E. Jansen call localt (uBrg, uBrgl, abs(ien), nflow, 'gather ') 27*59599516SKenneth E. Jansen 28*59599516SKenneth E. Jansen ubBgl = zero 29*59599516SKenneth E. Jansenc 30*59599516SKenneth E. Jansenc.... -----------------------> Au product <--------------------------- 31*59599516SKenneth E. Jansenc 32*59599516SKenneth E. Jansen do i = 1, nflow*nshl, nflow 33*59599516SKenneth E. Jansen do j = 1, nflow*nshl, nflow 34*59599516SKenneth E. Jansen ubBgl(:,i ) = ubBgl(:,i ) 35*59599516SKenneth E. Jansen & + EGmass(:,i ,j ) * uBrgl(:,j ) 36*59599516SKenneth E. Jansen & + EGmass(:,i ,j+1) * uBrgl(:,j+1) 37*59599516SKenneth E. Jansen & + EGmass(:,i ,j+2) * uBrgl(:,j+2) 38*59599516SKenneth E. Jansen & + EGmass(:,i ,j+3) * uBrgl(:,j+3) 39*59599516SKenneth E. Jansen & + EGmass(:,i ,j+4) * uBrgl(:,j+4) 40*59599516SKenneth E. Jansenc 41*59599516SKenneth E. Jansen ubBgl(:,i+1) = ubBgl(:,i+1) 42*59599516SKenneth E. Jansen & + EGmass(:,i+1,j ) * uBrgl(:,j ) 43*59599516SKenneth E. Jansen & + EGmass(:,i+1,j+1) * uBrgl(:,j+1) 44*59599516SKenneth E. Jansen & + EGmass(:,i+1,j+2) * uBrgl(:,j+2) 45*59599516SKenneth E. Jansen & + EGmass(:,i+1,j+3) * uBrgl(:,j+3) 46*59599516SKenneth E. Jansen & + EGmass(:,i+1,j+4) * uBrgl(:,j+4) 47*59599516SKenneth E. Jansenc 48*59599516SKenneth E. Jansen ubBgl(:,i+2) = ubBgl(:,i+2) 49*59599516SKenneth E. Jansen & + EGmass(:,i+2,j ) * uBrgl(:,j ) 50*59599516SKenneth E. Jansen & + EGmass(:,i+2,j+1) * uBrgl(:,j+1) 51*59599516SKenneth E. Jansen & + EGmass(:,i+2,j+2) * uBrgl(:,j+2) 52*59599516SKenneth E. Jansen & + EGmass(:,i+2,j+3) * uBrgl(:,j+3) 53*59599516SKenneth E. Jansen & + EGmass(:,i+2,j+4) * uBrgl(:,j+4) 54*59599516SKenneth E. Jansenc 55*59599516SKenneth E. Jansen ubBgl(:,i+3) = ubBgl(:,i+3) 56*59599516SKenneth E. Jansen & + EGmass(:,i+3,j ) * uBrgl(:,j ) 57*59599516SKenneth E. Jansen & + EGmass(:,i+3,j+1) * uBrgl(:,j+1) 58*59599516SKenneth E. Jansen & + EGmass(:,i+3,j+2) * uBrgl(:,j+2) 59*59599516SKenneth E. Jansen & + EGmass(:,i+3,j+3) * uBrgl(:,j+3) 60*59599516SKenneth E. Jansen & + EGmass(:,i+3,j+4) * uBrgl(:,j+4) 61*59599516SKenneth E. Jansenc 62*59599516SKenneth E. Jansen ubBgl(:,i+4) = ubBgl(:,i+4) 63*59599516SKenneth E. Jansen & + EGmass(:,i+4,j ) * uBrgl(:,j ) 64*59599516SKenneth E. Jansen & + EGmass(:,i+4,j+1) * uBrgl(:,j+1) 65*59599516SKenneth E. Jansen & + EGmass(:,i+4,j+2) * uBrgl(:,j+2) 66*59599516SKenneth E. Jansen & + EGmass(:,i+4,j+3) * uBrgl(:,j+3) 67*59599516SKenneth E. Jansen & + EGmass(:,i+4,j+4) * uBrgl(:,j+4) 68*59599516SKenneth E. Jansenc 69*59599516SKenneth E. Jansen enddo 70*59599516SKenneth E. Jansen enddo 71*59599516SKenneth E. Jansenc 72*59599516SKenneth E. Jansenc.... assemble the result of the product 73*59599516SKenneth E. Jansenc 74*59599516SKenneth E. Jansen call localt (uBtmp, ubBgl, abs(ien), nflow, 'scatter ') 75*59599516SKenneth E. Jansenc 76*59599516SKenneth E. Jansenc.... end 77*59599516SKenneth E. Jansenc 78*59599516SKenneth E. Jansen return 79*59599516SKenneth E. Jansen end 80*59599516SKenneth E. Jansenc 81*59599516SKenneth E. Jansenc 82*59599516SKenneth E. Jansenc 83*59599516SKenneth E. Jansen subroutine AsAuGMRSclr (ien, EGmass, uBrg, uBtmp ) 84*59599516SKenneth E. Jansenc 85*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 86*59599516SKenneth E. Jansenc This routine computes and assembles the Au product for the 87*59599516SKenneth E. Jansenc GMRES solver. 88*59599516SKenneth E. Jansenc 89*59599516SKenneth E. Jansenc input: 90*59599516SKenneth E. Jansenc ien (npro,nshl) : nodal connectivity 91*59599516SKenneth E. Jansenc EGmass (npro,nen,nen) : element mass matrix 92*59599516SKenneth E. Jansenc uBrg (nshg) : u_i before product 93*59599516SKenneth E. Jansenc 94*59599516SKenneth E. Jansenc output: 95*59599516SKenneth E. Jansenc uBtmp (nshg) : result of product ( u_{i+1} ) 96*59599516SKenneth E. Jansenc 97*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 98*59599516SKenneth E. Jansenc 99*59599516SKenneth E. Jansen include "common.h" 100*59599516SKenneth E. Jansen include "mpif.h" 101*59599516SKenneth E. Jansen include "auxmpi.h" 102*59599516SKenneth E. Jansenc 103*59599516SKenneth E. Jansen dimension ien(npro,nshl), EGmass(npro,nshape,nshape), 104*59599516SKenneth E. Jansen & uBrg(nshg), uBtmp(nshg) 105*59599516SKenneth E. Jansenc 106*59599516SKenneth E. Jansen dimension uBrgl(npro,nshape), ubBgl(npro,nshape) 107*59599516SKenneth E. Jansenc 108*59599516SKenneth E. Jansenc.... localize this K-vector for the EBE product 109*59599516SKenneth E. Jansenc 110*59599516SKenneth E. Jansen uBrgl = zero 111*59599516SKenneth E. Jansen call localtSclr(uBrg, uBrgl, ien, 'gather ') 112*59599516SKenneth E. Jansen 113*59599516SKenneth E. Jansen ubBgl = zero 114*59599516SKenneth E. Jansenc 115*59599516SKenneth E. Jansenc.... -----------------------> Au product <--------------------------- 116*59599516SKenneth E. Jansenc 117*59599516SKenneth E. Jansen do i = 1, nshl 118*59599516SKenneth E. Jansen do j = 1, nshl 119*59599516SKenneth E. Jansen ubBgl(:,i ) = ubBgl(:,i ) 120*59599516SKenneth E. Jansen & + EGmass(:,i ,j ) * uBrgl(:,j ) 121*59599516SKenneth E. Jansenc 122*59599516SKenneth E. Jansen enddo 123*59599516SKenneth E. Jansen enddo 124*59599516SKenneth E. Jansenc 125*59599516SKenneth E. Jansenc.... assemble the result of the product 126*59599516SKenneth E. Jansenc 127*59599516SKenneth E. Jansen call localtSclr(uBtmp, ubBgl, ien, 'scatter ') 128*59599516SKenneth E. Jansenc 129*59599516SKenneth E. Jansenc.... end 130*59599516SKenneth E. Jansenc 131*59599516SKenneth E. Jansen return 132*59599516SKenneth E. Jansen end 133*59599516SKenneth E. Jansen 134*59599516SKenneth E. Jansen 135*59599516SKenneth E. Jansen 136*59599516SKenneth E. Jansen 137*59599516SKenneth E. Jansen 138*59599516SKenneth E. Jansen 139