159599516SKenneth E. Jansen subroutine AsBMFG (y, x, shpb, shglb, 259599516SKenneth E. Jansen & ienb, materb, iBCB, BCB, 3*513954efSKenneth E. Jansen & res, rmes, EGmass) 459599516SKenneth E. Jansenc 559599516SKenneth E. Jansenc---------------------------------------------------------------------- 659599516SKenneth E. Jansenc 759599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the 859599516SKenneth E. Jansenc boundary elements. 959599516SKenneth E. Jansenc 1059599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 1159599516SKenneth E. Jansenc---------------------------------------------------------------------- 1259599516SKenneth E. Jansenc 1359599516SKenneth E. Jansen include "common.h" 1459599516SKenneth E. Jansenc 1559599516SKenneth E. Jansen dimension y(nshg,ndofl), x(numnp,nsd), 1659599516SKenneth E. Jansen & shpb(nshl,ngaussb), 1759599516SKenneth E. Jansen & shglb(nsd,nshl,ngaussb), 1859599516SKenneth E. Jansen & ienb(npro,nshl), materb(npro), 1959599516SKenneth E. Jansen & iBCB(npro,ndiBCB), BCB(npro,nshlb,ndBCB), 2059599516SKenneth E. Jansen & res(nshg,nflow), rmes(nshg,nflow) 2159599516SKenneth E. Jansenc 2259599516SKenneth E. Jansen dimension ycl(npro,nshl,ndofl), xlb(npro,nenl,nsd), 2359599516SKenneth E. Jansen & rl(npro,nshl,nflow), 24*513954efSKenneth E. Jansen & rml(npro,nshl,nflow), 25*513954efSKenneth E. Jansen & EGmass(npro, nshl, nshl) 2659599516SKenneth E. Jansenc 2759599516SKenneth E. Jansen dimension sgn(npro,nshl) 2859599516SKenneth E. Jansenc 2959599516SKenneth E. Jansenc.... create the matrix of mode signs for the hierarchic basis 3059599516SKenneth E. Jansenc functions. 3159599516SKenneth E. Jansenc 3259599516SKenneth E. Jansen if (ipord .gt. 1) then 3359599516SKenneth E. Jansen call getsgn(ienb,sgn) 3459599516SKenneth E. Jansen endif 3559599516SKenneth E. Jansenc 3659599516SKenneth E. Jansenc.... gather the variables 3759599516SKenneth E. Jansenc 3859599516SKenneth E. Jansen 3959599516SKenneth E. Jansen call localy(y, ycl, ienb, ndofl, 'gather ') 4059599516SKenneth E. Jansen call localx(x, xlb, ienb, nsd, 'gather ') 4159599516SKenneth E. Jansenc 4259599516SKenneth E. Jansen 43*513954efSKenneth E. Jansen !get the boundary element residuals 44*513954efSKenneth E. Jansen 4559599516SKenneth E. Jansen rl = zero 4659599516SKenneth E. Jansen rml = zero 4759599516SKenneth E. Jansenc 4859599516SKenneth E. Jansen! pass the memory location of ycl to both yl and ycl in e3b. This may 4959599516SKenneth E. Jansen ! seem dangerous since yl in e3b is :,nflow and ycl is :,ndof but they 5059599516SKenneth E. Jansen ! do not write to yl (out of bounds at least), only use the data there 5159599516SKenneth E. Jansen ! so both will access data 5259599516SKenneth E. Jansen ! properly from this location. 5359599516SKenneth E. Jansenc 5459599516SKenneth E. Jansen call e3b (ycl, ycl, iBCB, BCB, shpb, shglb, 55*513954efSKenneth E. Jansen & xlb, rl, rml, sgn, EGmass) 56*513954efSKenneth E. Jansen 57*513954efSKenneth E. Jansen !assemble the residual and the modified residual 5859599516SKenneth E. Jansen call local(res, rl, ienb, nflow, 'scatter ') 5959599516SKenneth E. Jansen if (Navier .eq. 1 .and. ires.ne.1 ) 6059599516SKenneth E. Jansen & call local(rmes, rml, ienb, nflow, 'scatter ') 61*513954efSKenneth E. Jansen 62*513954efSKenneth E. Jansen !end 6359599516SKenneth E. Jansen return 6459599516SKenneth E. Jansen end 6559599516SKenneth E. Jansenc 6659599516SKenneth E. Jansenc 6759599516SKenneth E. Jansenc 6859599516SKenneth E. Jansen subroutine AsBMFGSclr (y, x, shpb, shglb, 6959599516SKenneth E. Jansen & ienb, materb, iBCB, 7059599516SKenneth E. Jansen & BCB, rest, rmest) 7159599516SKenneth E. Jansenc 7259599516SKenneth E. Jansenc---------------------------------------------------------------------- 7359599516SKenneth E. Jansenc 7459599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the 7559599516SKenneth E. Jansenc boundary elements. 7659599516SKenneth E. Jansenc 7759599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 7859599516SKenneth E. Jansenc---------------------------------------------------------------------- 7959599516SKenneth E. Jansenc 8059599516SKenneth E. Jansen include "common.h" 8159599516SKenneth E. Jansenc 8259599516SKenneth E. Jansen dimension y(nshg,ndofl), x(numnp,nsd), 8359599516SKenneth E. Jansen & shpb(nshl,maxsh), 8459599516SKenneth E. Jansen & shglb(nsd,nshl,maxsh), 8559599516SKenneth E. Jansen & ienb(npro,nshl), materb(npro), 8659599516SKenneth E. Jansen & iBCB(npro,ndiBCB), BCB(npro,nshlb,ndBCB), 8759599516SKenneth E. Jansen & rest(nshg), rmest(nshg) 8859599516SKenneth E. Jansenc 8959599516SKenneth E. Jansen dimension ycl(npro,nshl,ndofl), xlb(npro,nenl,nsd), 9059599516SKenneth E. Jansen & rtl(npro,nshl), 9159599516SKenneth E. Jansen & rmtl(npro,nshl) 9259599516SKenneth E. Jansenc 9359599516SKenneth E. Jansenc.... create the matrix of mode signs for the hierarchic basis 9459599516SKenneth E. Jansenc functions. 9559599516SKenneth E. Jansenc 9659599516SKenneth E. Jansen if (ipord .gt. 1) then 9759599516SKenneth E. Jansen call getsgn(ienb,sgn) 9859599516SKenneth E. Jansen endif 9959599516SKenneth E. Jansenc 10059599516SKenneth E. Jansenc.... gather the variables 10159599516SKenneth E. Jansenc 10259599516SKenneth E. Jansen call localy (y, ycl, ienb, ndofl, 'gather ') 10359599516SKenneth E. Jansen call localx (x, xlb, ienb, nsd, 'gather ') 10459599516SKenneth E. Jansenc 10559599516SKenneth E. Jansenc.... get the boundary element residuals 10659599516SKenneth E. Jansenc 10759599516SKenneth E. Jansen rtl = zero 10859599516SKenneth E. Jansen rmtl = zero 10959599516SKenneth E. Jansenc 11059599516SKenneth E. Jansenc.... 3D 11159599516SKenneth E. Jansenc 11259599516SKenneth E. Jansen call e3bSclr (ycl, iBCB, BCB, 11359599516SKenneth E. Jansen & shpb, shglb, sgn, 11459599516SKenneth E. Jansen & xlb, rtl, rmtl) 11559599516SKenneth E. Jansenc 11659599516SKenneth E. Jansenc.... assemble the residual and the modified residual 11759599516SKenneth E. Jansenc 11859599516SKenneth E. Jansen 11959599516SKenneth E. Jansen call local (rest, rtl, ienb, 1, 'scatter ') 12059599516SKenneth E. Jansen 12159599516SKenneth E. Jansen 12259599516SKenneth E. Jansenc 12359599516SKenneth E. Jansen if (Navier .eq. 1) 12459599516SKenneth E. Jansen & call local (rmest, rmtl, ienb, 1, 'scatter ') 12559599516SKenneth E. Jansenc 12659599516SKenneth E. Jansenc.... end 12759599516SKenneth E. Jansenc 12859599516SKenneth E. Jansen return 12959599516SKenneth E. Jansen end 13059599516SKenneth E. Jansen 13159599516SKenneth E. Jansen 132