xref: /phasta/phSolver/incompressible/asiqGradV.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine AsIqGradV (y,       x,       shp,
2*59599516SKenneth E. Jansen     &                   shgl,    ien,
3*59599516SKenneth E. Jansen     &                   qres )
4*59599516SKenneth E. Jansenc
5*59599516SKenneth E. Jansenc----------------------------------------------------------------------
6*59599516SKenneth E. Jansenc
7*59599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the
8*59599516SKenneth E. Jansenc interior elements for the global reconstruction of the diffusive
9*59599516SKenneth E. Jansenc flux vector.
10*59599516SKenneth E. Jansenc
11*59599516SKenneth E. Jansenc input:
12*59599516SKenneth E. Jansenc     y     (numnp,ndof)        : Y variables
13*59599516SKenneth E. Jansenc     x     (numnp,nsd)         : nodal coordinates
14*59599516SKenneth E. Jansenc     shp   (nen,nintg)         : element shape-functions
15*59599516SKenneth E. Jansenc     shgl  (nsd,nen,nintg)     : element local shape-function gradients
16*59599516SKenneth E. Jansenc     ien   (npro)              : nodal connectivity array
17*59599516SKenneth E. Jansenc
18*59599516SKenneth E. Jansenc output:
19*59599516SKenneth E. Jansenc     qres  (numnp,nsd,nsd)  : residual vector for diffusive flux
20*59599516SKenneth E. Jansenc
21*59599516SKenneth E. Jansenc----------------------------------------------------------------------
22*59599516SKenneth E. Jansenc
23*59599516SKenneth E. Jansen        include "common.h"
24*59599516SKenneth E. Jansenc
25*59599516SKenneth E. Jansen        dimension y(nshg,ndof),               x(numnp,nsd),
26*59599516SKenneth E. Jansen     &            shp(nshl,ngauss),         shgl(nsd,nshl,ngauss),
27*59599516SKenneth E. Jansen     &            ien(npro,nshl),
28*59599516SKenneth E. Jansen     &            qres(nshg,nsdsq)
29*59599516SKenneth E. Jansenc
30*59599516SKenneth E. Jansen        dimension yl(npro,nshl,ndof),          xl(npro,nenl,nsd),
31*59599516SKenneth E. Jansen     &            ql(npro,nshl,nsdsq)
32*59599516SKenneth E. Jansenc
33*59599516SKenneth E. Jansen        dimension sgn(npro,nshl)
34*59599516SKenneth E. Jansenc
35*59599516SKenneth E. Jansenc.... create the matrix of mode signs for the hierarchic basis
36*59599516SKenneth E. Jansenc     functions.
37*59599516SKenneth E. Jansenc
38*59599516SKenneth E. Jansen        do i=1,nshl
39*59599516SKenneth E. Jansen           where ( ien(:,i) < 0 )
40*59599516SKenneth E. Jansen              sgn(:,i) = -one
41*59599516SKenneth E. Jansen           elsewhere
42*59599516SKenneth E. Jansen              sgn(:,i) = one
43*59599516SKenneth E. Jansen           endwhere
44*59599516SKenneth E. Jansen        enddo
45*59599516SKenneth E. Jansen
46*59599516SKenneth E. Jansenc
47*59599516SKenneth E. Jansenc.... gather the variables
48*59599516SKenneth E. Jansenc
49*59599516SKenneth E. Jansen
50*59599516SKenneth E. Jansen        call localy(y,      yl,     ien,    ndof,   'gather  ')
51*59599516SKenneth E. Jansen        call localx (x,      xl,     ien,    nsd,    'gather  ')
52*59599516SKenneth E. Jansenc
53*59599516SKenneth E. Jansenc.... get the element residuals
54*59599516SKenneth E. Jansenc
55*59599516SKenneth E. Jansen        ql     = zero
56*59599516SKenneth E. Jansen
57*59599516SKenneth E. Jansen        call e3qGradV  (yl,         shp,      shgl,
58*59599516SKenneth E. Jansen     &             xl,         ql,
59*59599516SKenneth E. Jansen     &             sgn  )
60*59599516SKenneth E. Jansen
61*59599516SKenneth E. Jansenc
62*59599516SKenneth E. Jansenc.... assemble the diffusive flux residual
63*59599516SKenneth E. Jansenc
64*59599516SKenneth E. Jansen        call local (qres,   ql,  ien,  nsdsq,  'scatter ')
65*59599516SKenneth E. Jansenc
66*59599516SKenneth E. Jansenc.... end
67*59599516SKenneth E. Jansenc
68*59599516SKenneth E. Jansen        return
69*59599516SKenneth E. Jansen        end
70*59599516SKenneth E. Jansen
71