xref: /phasta/phSolver/compressible/asaugmr.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
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