xref: /phasta/phSolver/compressible/asiq.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1        subroutine AsIq (y,       x,       shp,
2     &                   shgl,    ien,     xmudmi,
3     &                   qres,    rmass    )
4c
5c----------------------------------------------------------------------
6c
7c This routine computes and assembles the data corresponding to the
8c interior elements for the global reconstruction of the diffusive
9c flux vector.
10c
11c input:
12c     y     (nshg,ndof)        : Y variables
13c     x     (numnp,nsd)         : nodal coordinates
14c     shp   (nshape,ngauss)     : element shape-functions
15c     shgl  (nsd,nshape,ngauss) : element local shape-function gradients
16c     ien   (npro)              : nodal connectivity array
17c
18c output:
19c     qres  (nshg,nflow-1,nsd)  : residual vector for diffusive flux
20c     rmass  (nshg)            : lumped mass matrix
21c
22c----------------------------------------------------------------------
23c
24        include "common.h"
25c
26        dimension y(nshg,ndof),               x(numnp,nsd),
27     &            shp(nshl,ngauss),
28     &            shgl(nsd,nshl,ngauss),
29     &            ien(npro,nshl),
30     &            qres(nshg,idflx),    rmass(nshg)
31c
32c.... element level declarations
33c
34        dimension ycl(npro,nshl,ndof),        xl(npro,nenl,nsd),
35     &            ql(npro,nshl,idflx),       rmassl(npro,nshl),
36     &            xmudmi(npro,ngauss)
37c
38        dimension sgn(npro,nshape)
39c
40c.... create the matrix of mode signs for the hierarchic basis
41c     functions.
42c
43        if (ipord .gt. 1) then
44           call getsgn(ien,sgn)
45        endif
46c
47c.... gather the variables
48c
49
50        call localy(y,      ycl,     ien,    ndof,   'gather  ')
51        call localx(x,      xl,     ien,    nsd,    'gather  ')
52c
53c.... get the element residuals
54c
55        ql     = zero
56        rmassl = zero
57
58        call e3q  (ycl,      shp,    shgl,
59     &             xl,       ql,     rmassl,
60     &             xmudmi,   sgn )
61
62c
63c.... assemble the diffusive flux residual
64c
65        call local (qres,   ql,  ien,  idflx,'scatter ')
66        call local (rmass,  rmassl, ien,  1,      'scatter ')
67c
68c.... end
69c
70        return
71        end
72