1*59599516SKenneth E. Jansen subroutine AsBFlx (u, y, ac, 2*59599516SKenneth E. Jansen & x, shpb, 3*59599516SKenneth E. Jansen & shglb, ienb, iBCB, 4*59599516SKenneth E. Jansen & BCB, invflx, flxres, 5*59599516SKenneth E. Jansen & flxLHS, flxnrm, xKebe ) 6*59599516SKenneth E. Jansenc 7*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 8*59599516SKenneth E. Jansenc 9*59599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the 10*59599516SKenneth E. Jansenc boundary elements. 11*59599516SKenneth E. Jansenc 12*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 13*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 14*59599516SKenneth E. Jansenc 15*59599516SKenneth E. Jansen use turbSA ! access to d2wall 16*59599516SKenneth E. Jansen include "common.h" 17*59599516SKenneth E. Jansenc 18*59599516SKenneth E. Jansen dimension y(nshg,ndofl), x(numnp,nsd), 19*59599516SKenneth E. Jansen & ac(nshg,ndofl), u(nshg,nsd), 20*59599516SKenneth E. Jansen & shpb(nshl,ngaussb), 21*59599516SKenneth E. Jansen & shglb(nsd,nshl,ngaussb), 22*59599516SKenneth E. Jansen & ienb(npro,nshl), 23*59599516SKenneth E. Jansen & iBCB(npro,ndiBCB), BCB(npro,nshlb,ndBCB), 24*59599516SKenneth E. Jansen & invflx(nshg), flxres(nshg,nflow), 25*59599516SKenneth E. Jansen & flxLHS(nshg,1), flxnrm(nshg,nsd) 26*59599516SKenneth E. Jansenc 27*59599516SKenneth E. Jansen dimension yl(npro,nshl,ndofl), xlb(npro,nenl,nsd), 28*59599516SKenneth E. Jansen & rl(npro,nshl,nflow), sgn(npro,nshl), 29*59599516SKenneth E. Jansen & flhsl(npro,nshl,1), fnrml(npro,nshl,nsd), 30*59599516SKenneth E. Jansen & lnflx(npro), lnode(27), 31*59599516SKenneth E. Jansen & ul(npro,nshl,nsd), acl(npro,nshl,ndofl) 32*59599516SKenneth E. Jansen real*8 dwl(npro,nshl) 33*59599516SKenneth E. Jansen 34*59599516SKenneth E. Jansen dimension xKebe(npro,9,nshl,nshl) 35*59599516SKenneth E. Jansen 36*59599516SKenneth E. Jansenc 37*59599516SKenneth E. Jansenc.... compute the nodes which lie on the boundary (hierarchic) 38*59599516SKenneth E. Jansenc 39*59599516SKenneth E. Jansen call getbnodes(lnode) 40*59599516SKenneth E. Jansenc 41*59599516SKenneth E. Jansenc.... get the matrix of mode signs for the hierarchic basis functions 42*59599516SKenneth E. Jansenc 43*59599516SKenneth E. Jansen if (ipord .gt. 1) then 44*59599516SKenneth E. Jansen call getsgn(ienb,sgn) 45*59599516SKenneth E. Jansen endif 46*59599516SKenneth E. Jansenc 47*59599516SKenneth E. Jansenc.... gather the variables 48*59599516SKenneth E. Jansenc 49*59599516SKenneth E. Jansen call localy(y, yl, ienb, ndofl, 'gather ') 50*59599516SKenneth E. Jansen call localy(ac, acl, ienb, ndofl, 'gather ') 51*59599516SKenneth E. Jansen call localx(x, xlb, ienb, nsd, 'gather ') 52*59599516SKenneth E. Jansen call localx(u, ul, ienb, nsd, 'gather ') 53*59599516SKenneth E. Jansen if(iRANS.eq.-2) then 54*59599516SKenneth E. Jansen call local(d2wall, dwl, ienb, 1, 'gather ') 55*59599516SKenneth E. Jansen endif 56*59599516SKenneth E. Jansen 57*59599516SKenneth E. Jansen rl = zero 58*59599516SKenneth E. Jansen flhsl = zero 59*59599516SKenneth E. Jansen fnrml = zero 60*59599516SKenneth E. Jansenc 61*59599516SKenneth E. Jansen ires = 2 62*59599516SKenneth E. Jansen call e3b (ul, yl, acl, iBCB, BCB, 63*59599516SKenneth E. Jansen & shpb, shglb, 64*59599516SKenneth E. Jansen & xlb, rl, sgn, dwl, xKebe) 65*59599516SKenneth E. Jansen ires = 1 66*59599516SKenneth E. Jansenc 67*59599516SKenneth E. Jansenc.... assemble the residuals 68*59599516SKenneth E. Jansenc 69*59599516SKenneth E. Jansen call local (flxres, rl, ienb, nflow, 'scatter ') 70*59599516SKenneth E. Jansenc 71*59599516SKenneth E. Jansenc.... compute the LHS for the flux computation (should only be done 72*59599516SKenneth E. Jansenc once) 73*59599516SKenneth E. Jansenc 74*59599516SKenneth E. Jansen call f3lhs (shpb, shglb, xlb, 75*59599516SKenneth E. Jansen & flhsl, fnrml, sgn ) 76*59599516SKenneth E. Jansen 77*59599516SKenneth E. Jansenc 78*59599516SKenneth E. Jansenc.... reset the non-contributing element values 79*59599516SKenneth E. Jansenc 80*59599516SKenneth E. Jansen lnflx = 0 81*59599516SKenneth E. Jansen do n = 1, nshlb 82*59599516SKenneth E. Jansen lnflx = lnflx + min(1, invflx(ienb(:,lnode(n)))) 83*59599516SKenneth E. Jansen enddo 84*59599516SKenneth E. Jansenc 85*59599516SKenneth E. Jansen do n = 1, nshl 86*59599516SKenneth E. Jansen where (lnflx .ne. nshlb) flhsl(:,n,1) = zero 87*59599516SKenneth E. Jansen do i = 1, nsd 88*59599516SKenneth E. Jansen where (lnflx .ne. nshlb) fnrml(:,n,i) = zero 89*59599516SKenneth E. Jansen enddo 90*59599516SKenneth E. Jansen enddo 91*59599516SKenneth E. Jansenc 92*59599516SKenneth E. Jansenc.... assemble the boundary LHS and normal 93*59599516SKenneth E. Jansenc 94*59599516SKenneth E. Jansen call local (flxLHS, flhsl, ienb, 1, 'scatter ') 95*59599516SKenneth E. Jansen call local (flxnrm, fnrml, ienb, nsd, 'scatter ') 96*59599516SKenneth E. Jansenc 97*59599516SKenneth E. Jansenc.... end 98*59599516SKenneth E. Jansenc 99*59599516SKenneth E. Jansen return 100*59599516SKenneth E. Jansen end 101