xref: /phasta/phSolver/compressible/au1mfg.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine Au1MFG (ypre,      y,    ac,     x,
2*59599516SKenneth E. Jansen     &                     rmes,      res,       uBrg,
3*59599516SKenneth E. Jansen     &                     BDiag,     iBC,       BC,
4*59599516SKenneth E. Jansen     &                     iper,      ilwork,    shp,
5*59599516SKenneth E. Jansen     &                     shgl,      shpb,
6*59599516SKenneth E. Jansen     &                     shglb)
7*59599516SKenneth E. Jansenc
8*59599516SKenneth E. Jansenc----------------------------------------------------------------------
9*59599516SKenneth E. Jansenc
10*59599516SKenneth E. Jansenc This routine performs a matrix-vector product for the Matrix-Free
11*59599516SKenneth E. Jansenc  Implicit/Iterative solver using a one-sided scheme.
12*59599516SKenneth E. Jansenc
13*59599516SKenneth E. Jansenc input:
14*59599516SKenneth E. Jansenc  y      (nshg,ndof)           : Y-variables
15*59599516SKenneth E. Jansenc  ypre   (nshg,nflow)           : preconditioned Y-variables
16*59599516SKenneth E. Jansenc                                  (perturbed, no-scalars)
17*59599516SKenneth E. Jansenc  x      (numnp,nsd)            : node coordinates
18*59599516SKenneth E. Jansenc  rmes   (nshg,nflow)           : modified residual
19*59599516SKenneth E. Jansenc  res    (nshg,nflow)           : residual
20*59599516SKenneth E. Jansenc  uBrg   (nshg,nflow)           : Krylov space vector
21*59599516SKenneth E. Jansenc  BDiag  (nshg,nflow,nflow)         : block-diagonal preconditioner
22*59599516SKenneth E. Jansenc  iBC    (nshg)                : BC codes
23*59599516SKenneth E. Jansenc  BC     (nshg,ndofBC)         : BC constraint parameters
24*59599516SKenneth E. Jansenc  engBC  (nshg)                : energy for BC on density or pressure
25*59599516SKenneth E. Jansenc  shp(b) (nshape,ngauss)        : element shape functions (boundary)
26*59599516SKenneth E. Jansenc  shgl(b)(nsd,nshape,ngauss)    : local gradients of shape functions
27*59599516SKenneth E. Jansenc
28*59599516SKenneth E. Jansenc output:
29*59599516SKenneth E. Jansenc  uBrg   (nshg,nflow)           : Krylov space vectors
30*59599516SKenneth E. Jansenc
31*59599516SKenneth E. Jansenc
32*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
33*59599516SKenneth E. Jansenc----------------------------------------------------------------------
34*59599516SKenneth E. Jansenc
35*59599516SKenneth E. Jansen        include "common.h"
36*59599516SKenneth E. Jansen        include "mpif.h"
37*59599516SKenneth E. Jansen        include "auxmpi.h"
38*59599516SKenneth E. Jansenc
39*59599516SKenneth E. Jansen        dimension y(nshg,ndof),             ypre(nshg,nflow),
40*59599516SKenneth E. Jansen     &            x(numnp,nsd),             ac(nshg,ndof),
41*59599516SKenneth E. Jansen     &            rmes(nshg,nflow),          ytmp(nshg,nflow),
42*59599516SKenneth E. Jansen     &            res(nshg,nflow),           uBrg(nshg,nflow),
43*59599516SKenneth E. Jansen     &            BDiag(nshg,nflow,nflow),       iBC(nshg),
44*59599516SKenneth E. Jansen     &            BC(nshg,ndofBC),          iper(nshg)
45*59599516SKenneth E. Jansenc
46*59599516SKenneth E. Jansen        dimension uBtmp(nshg,nflow),         tmpBC(nshg),
47*59599516SKenneth E. Jansen     &            ilwork(nlwork)
48*59599516SKenneth E. Jansenc
49*59599516SKenneth E. Jansen
50*59599516SKenneth E. Jansen        dimension shp(MAXTOP,maxsh,MAXQPT),
51*59599516SKenneth E. Jansen     &            shgl(MAXTOP,nsd,maxsh,MAXQPT),
52*59599516SKenneth E. Jansen     &            shpb(MAXTOP,maxsh,MAXQPT),
53*59599516SKenneth E. Jansen     &            shglb(MAXTOP,nsd,maxsh,MAXQPT)
54*59599516SKenneth E. Jansen
55*59599516SKenneth E. Jansenc$$$        dimension shp(nshl,ngauss),  shgl(nsd,nshl,ngauss),
56*59599516SKenneth E. Jansenc$$$     &            shpb(nshl,ngaussb),
57*59599516SKenneth E. Jansenc$$$     &            shglb(nsd,nshl,ngaussb)
58*59599516SKenneth E. Jansenc
59*59599516SKenneth E. Jansenc.... calculate Rmod(y + eps u_i)
60*59599516SKenneth E. Jansenc
61*59599516SKenneth E. Jansen        uBtmp = zero
62*59599516SKenneth E. Jansenc
63*59599516SKenneth E. Jansenc        call yshuffle(ypre, 'new2old ')
64*59599516SKenneth E. Jansen        uBrg = ypre + eGMRES * uBrg
65*59599516SKenneth E. Jansenc
66*59599516SKenneth E. Jansen        call i3LU (BDiag,  uBrg,  'backward')
67*59599516SKenneth E. Jansenc
68*59599516SKenneth E. Jansen        call yshuffle(uBrg, 'old2new ')
69*59599516SKenneth E. Jansenc
70*59599516SKenneth E. Jansen        call itrBC (uBrg, uBrg, iBC,  BC, iper, ilwork)
71*59599516SKenneth E. Jansenc
72*59599516SKenneth E. Jansen        call itrRes (uBrg,            y,
73*59599516SKenneth E. Jansen     &               x,               shp,
74*59599516SKenneth E. Jansen     &               shgl,            iBC,
75*59599516SKenneth E. Jansen     &               BC,              shpb,
76*59599516SKenneth E. Jansen     &               shglb,           uBtmp,
77*59599516SKenneth E. Jansen     &               iper,            ilwork, ac)
78*59599516SKenneth E. Jansenc
79*59599516SKenneth E. Jansen        call i3LU (BDiag,  uBtmp,  'forward ')
80*59599516SKenneth E. Jansenc
81*59599516SKenneth E. Jansenc.... calculate ( Rmod(y + eps u_i) - Rmod(y) ) / eps
82*59599516SKenneth E. Jansenc
83*59599516SKenneth E. Jansen        uBrg = ( uBtmp - rmes ) / eGMRES
84*59599516SKenneth E. Jansenc ... before returning lets put ypre back in the new format
85*59599516SKenneth E. Jansenc         call yshuffle(ypre, 'old2new ')
86*59599516SKenneth E. Jansenc
87*59599516SKenneth E. Jansenc.... flop count
88*59599516SKenneth E. Jansenc
89*59599516SKenneth E. Jansen        flops = flops + 4*nflow*nshg
90*59599516SKenneth E. Jansenc
91*59599516SKenneth E. Jansenc.... end
92*59599516SKenneth E. Jansenc
93*59599516SKenneth E. Jansen        return
94*59599516SKenneth E. Jansen        end
95*59599516SKenneth E. Jansen
96*59599516SKenneth E. Jansen
97*59599516SKenneth E. Jansen
98*59599516SKenneth E. Jansen
99