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