xref: /phasta/phSolver/incompressible/e3qGradV.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine e3qGradV (yl,      shp,     shgl,
2*59599516SKenneth E. Jansen     &                  xl,      ql,
3*59599516SKenneth E. Jansen     &                  sgn )
4*59599516SKenneth E. Jansenc
5*59599516SKenneth E. Jansenc----------------------------------------------------------------------
6*59599516SKenneth E. Jansenc
7*59599516SKenneth E. Jansenc This routine computes the element contribution to the
8*59599516SKenneth E. Jansenc diffusive flux vector and the lumped mass matrix.
9*59599516SKenneth E. Jansenc
10*59599516SKenneth E. Jansenc input:
11*59599516SKenneth E. Jansenc  yl     (npro,nshl,ndof)       : Y variables
12*59599516SKenneth E. Jansenc  shp    (nen,ngauss)            : element shape-functions
13*59599516SKenneth E. Jansenc  shgl   (nsd,nen,ngauss)        : element local-grad-shape-functions
14*59599516SKenneth E. Jansenc  xl     (npro,nshl,nsd)        : nodal coordinates at current step
15*59599516SKenneth E. Jansenc
16*59599516SKenneth E. Jansenc output:
17*59599516SKenneth E. Jansenc  ql     (npro,nshl,nsd*nsd) : element RHS diffusion residual
18*59599516SKenneth E. Jansenc
19*59599516SKenneth E. Jansenc----------------------------------------------------------------------
20*59599516SKenneth E. Jansenc
21*59599516SKenneth E. Jansen        include "common.h"
22*59599516SKenneth E. Jansenc
23*59599516SKenneth E. Jansen        dimension yl(npro,nshl,ndof),
24*59599516SKenneth E. Jansen     &            shp(nshl,ngauss),      shgl(nsd,nshl,ngauss),
25*59599516SKenneth E. Jansen     &            xl(npro,nenl,nsd),
26*59599516SKenneth E. Jansen     &            ql(npro,nshl,nsdsq)
27*59599516SKenneth E. Jansenc
28*59599516SKenneth E. Jansenc local arrays
29*59599516SKenneth E. Jansenc
30*59599516SKenneth E. Jansen        dimension g1yi(npro,nflow),           g2yi(npro,nflow),
31*59599516SKenneth E. Jansen     &            g3yi(npro,nflow),           shg(npro,nshl,nsd),
32*59599516SKenneth E. Jansen     &            dxidx(npro,nsd,nsd),       WdetJ(npro)
33*59599516SKenneth E. Jansenc
34*59599516SKenneth E. Jansenc
35*59599516SKenneth E. Jansen        dimension sgn(npro,nshl),          shape(npro,nshl),
36*59599516SKenneth E. Jansen     &            shdrv(npro,nsd,nshl)
37*59599516SKenneth E. Jansen
38*59599516SKenneth E. Jansenc
39*59599516SKenneth E. Jansenc.... loop through the integration points
40*59599516SKenneth E. Jansenc
41*59599516SKenneth E. Jansen
42*59599516SKenneth E. Jansen        do intp = 1, ngauss
43*59599516SKenneth E. Jansen        if (Qwt(lcsyst,intp) .eq. zero) cycle          ! precaution
44*59599516SKenneth E. Jansenc
45*59599516SKenneth E. Jansen        call getshp(shp,          shgl,      sgn,
46*59599516SKenneth E. Jansen     &              shape,        shdrv)
47*59599516SKenneth E. Jansen
48*59599516SKenneth E. Jansenc
49*59599516SKenneth E. Jansenc
50*59599516SKenneth E. Jansenc.... calculate the integration variables necessary for the
51*59599516SKenneth E. Jansenc     formation of q
52*59599516SKenneth E. Jansenc
53*59599516SKenneth E. Jansen
54*59599516SKenneth E. Jansen        call e3qvar   (yl,        shdrv,
55*59599516SKenneth E. Jansen     &                 xl,           g1yi,
56*59599516SKenneth E. Jansen     &                 g2yi,      g3yi,         shg,
57*59599516SKenneth E. Jansen     &                 dxidx,     WdetJ )
58*59599516SKenneth E. Jansenc
59*59599516SKenneth E. Jansenc
60*59599516SKenneth E. Jansenc     each element node
61*59599516SKenneth E. Jansenc
62*59599516SKenneth E. Jansen        do i=1,nshl
63*59599516SKenneth E. Jansen           ql(:,i,1 ) = ql(:,i,1 )+ shape(:,i)*WdetJ*g1yi(:,2 ) ! du/dx
64*59599516SKenneth E. Jansen           ql(:,i,2 ) = ql(:,i,2 )+ shape(:,i)*WdetJ*g2yi(:,2 ) ! du/dy
65*59599516SKenneth E. Jansen           ql(:,i,3 ) = ql(:,i,3 )+ shape(:,i)*WdetJ*g3yi(:,2 ) ! du/dz
66*59599516SKenneth E. Jansen
67*59599516SKenneth E. Jansen           ql(:,i,4 ) = ql(:,i,4 )+ shape(:,i)*WdetJ*g1yi(:,3 ) ! dv/dx
68*59599516SKenneth E. Jansen           ql(:,i,5 ) = ql(:,i,5 )+ shape(:,i)*WdetJ*g2yi(:,3 ) ! dv/dy
69*59599516SKenneth E. Jansen           ql(:,i,6 ) = ql(:,i,6 )+ shape(:,i)*WdetJ*g3yi(:,3 ) ! dv/dz
70*59599516SKenneth E. Jansen
71*59599516SKenneth E. Jansen           ql(:,i,7 ) = ql(:,i,7 )+ shape(:,i)*WdetJ*g1yi(:,4 ) ! dw/dx
72*59599516SKenneth E. Jansen           ql(:,i,8 ) = ql(:,i,8 )+ shape(:,i)*WdetJ*g2yi(:,4 ) ! dw/dy
73*59599516SKenneth E. Jansen           ql(:,i,9 ) = ql(:,i,9 )+ shape(:,i)*WdetJ*g3yi(:,4 ) ! dw/dz
74*59599516SKenneth E. Jansen
75*59599516SKenneth E. Jansen        enddo
76*59599516SKenneth E. Jansenc
77*59599516SKenneth E. Jansenc
78*59599516SKenneth E. Jansenc.... end of the loop over integration points
79*59599516SKenneth E. Jansenc
80*59599516SKenneth E. Jansen      enddo
81*59599516SKenneth E. Jansen
82*59599516SKenneth E. Jansen
83*59599516SKenneth E. Jansenc
84*59599516SKenneth E. Jansenc.... return
85*59599516SKenneth E. Jansenc
86*59599516SKenneth E. Jansen       return
87*59599516SKenneth E. Jansen       end
88