1*59599516SKenneth E. Jansen subroutine AsBMFG (y, x, shpb, shglb, 2*59599516SKenneth E. Jansen & ienb, materb, iBCB, BCB, 3*59599516SKenneth E. Jansen & res, rmes) 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 boundary elements. 9*59599516SKenneth E. Jansenc 10*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 11*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 12*59599516SKenneth E. Jansenc 13*59599516SKenneth E. Jansen include "common.h" 14*59599516SKenneth E. Jansenc 15*59599516SKenneth E. Jansen dimension y(nshg,ndofl), x(numnp,nsd), 16*59599516SKenneth E. Jansen & shpb(nshl,ngaussb), 17*59599516SKenneth E. Jansen & shglb(nsd,nshl,ngaussb), 18*59599516SKenneth E. Jansen & ienb(npro,nshl), materb(npro), 19*59599516SKenneth E. Jansen & iBCB(npro,ndiBCB), BCB(npro,nshlb,ndBCB), 20*59599516SKenneth E. Jansen & res(nshg,nflow), rmes(nshg,nflow) 21*59599516SKenneth E. Jansenc 22*59599516SKenneth E. Jansen dimension ycl(npro,nshl,ndofl), xlb(npro,nenl,nsd), 23*59599516SKenneth E. Jansen & rl(npro,nshl,nflow), 24*59599516SKenneth E. Jansen & rml(npro,nshl,nflow) 25*59599516SKenneth E. Jansenc 26*59599516SKenneth E. Jansen dimension sgn(npro,nshl) 27*59599516SKenneth E. Jansenc 28*59599516SKenneth E. Jansenc.... create the matrix of mode signs for the hierarchic basis 29*59599516SKenneth E. Jansenc functions. 30*59599516SKenneth E. Jansenc 31*59599516SKenneth E. Jansen if (ipord .gt. 1) then 32*59599516SKenneth E. Jansen call getsgn(ienb,sgn) 33*59599516SKenneth E. Jansen endif 34*59599516SKenneth E. Jansenc 35*59599516SKenneth E. Jansenc.... gather the variables 36*59599516SKenneth E. Jansenc 37*59599516SKenneth E. Jansen 38*59599516SKenneth E. Jansen call localy(y, ycl, ienb, ndofl, 'gather ') 39*59599516SKenneth E. Jansen call localx(x, xlb, ienb, nsd, 'gather ') 40*59599516SKenneth E. Jansenc 41*59599516SKenneth E. Jansen 42*59599516SKenneth E. Jansenc.... get the boundary element residuals 43*59599516SKenneth E. Jansenc 44*59599516SKenneth E. Jansen rl = zero 45*59599516SKenneth E. Jansen rml = zero 46*59599516SKenneth E. Jansenc 47*59599516SKenneth E. Jansen! pass the memory location of ycl to both yl and ycl in e3b. This may 48*59599516SKenneth E. Jansen ! seem dangerous since yl in e3b is :,nflow and ycl is :,ndof but they 49*59599516SKenneth E. Jansen ! do not write to yl (out of bounds at least), only use the data there 50*59599516SKenneth E. Jansen ! so both will access data 51*59599516SKenneth E. Jansen ! properly from this location. 52*59599516SKenneth E. Jansenc 53*59599516SKenneth E. Jansen call e3b (ycl, ycl, iBCB, BCB, shpb, shglb, 54*59599516SKenneth E. Jansen & xlb, rl, rml, sgn) 55*59599516SKenneth E. Jansenc 56*59599516SKenneth E. Jansenc.... assemble the residual and the modified residual 57*59599516SKenneth E. Jansenc 58*59599516SKenneth E. Jansen call local(res, rl, ienb, nflow, 'scatter ') 59*59599516SKenneth E. Jansen 60*59599516SKenneth E. Jansen 61*59599516SKenneth E. Jansenc 62*59599516SKenneth E. Jansen if (Navier .eq. 1 .and. ires.ne.1 ) 63*59599516SKenneth E. Jansen & call local(rmes, rml, ienb, nflow, 'scatter ') 64*59599516SKenneth E. Jansenc 65*59599516SKenneth E. Jansenc.... end 66*59599516SKenneth E. Jansenc 67*59599516SKenneth E. Jansen return 68*59599516SKenneth E. Jansen end 69*59599516SKenneth E. Jansenc 70*59599516SKenneth E. Jansenc 71*59599516SKenneth E. Jansenc 72*59599516SKenneth E. Jansen subroutine AsBMFGSclr (y, x, shpb, shglb, 73*59599516SKenneth E. Jansen & ienb, materb, iBCB, 74*59599516SKenneth E. Jansen & BCB, rest, rmest) 75*59599516SKenneth E. Jansenc 76*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 77*59599516SKenneth E. Jansenc 78*59599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the 79*59599516SKenneth E. Jansenc boundary elements. 80*59599516SKenneth E. Jansenc 81*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 82*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 83*59599516SKenneth E. Jansenc 84*59599516SKenneth E. Jansen include "common.h" 85*59599516SKenneth E. Jansenc 86*59599516SKenneth E. Jansen dimension y(nshg,ndofl), x(numnp,nsd), 87*59599516SKenneth E. Jansen & shpb(nshl,maxsh), 88*59599516SKenneth E. Jansen & shglb(nsd,nshl,maxsh), 89*59599516SKenneth E. Jansen & ienb(npro,nshl), materb(npro), 90*59599516SKenneth E. Jansen & iBCB(npro,ndiBCB), BCB(npro,nshlb,ndBCB), 91*59599516SKenneth E. Jansen & rest(nshg), rmest(nshg) 92*59599516SKenneth E. Jansenc 93*59599516SKenneth E. Jansen dimension ycl(npro,nshl,ndofl), xlb(npro,nenl,nsd), 94*59599516SKenneth E. Jansen & rtl(npro,nshl), 95*59599516SKenneth E. Jansen & rmtl(npro,nshl) 96*59599516SKenneth E. Jansenc 97*59599516SKenneth E. Jansenc.... create the matrix of mode signs for the hierarchic basis 98*59599516SKenneth E. Jansenc functions. 99*59599516SKenneth E. Jansenc 100*59599516SKenneth E. Jansen if (ipord .gt. 1) then 101*59599516SKenneth E. Jansen call getsgn(ienb,sgn) 102*59599516SKenneth E. Jansen endif 103*59599516SKenneth E. Jansenc 104*59599516SKenneth E. Jansenc.... gather the variables 105*59599516SKenneth E. Jansenc 106*59599516SKenneth E. Jansen call localy (y, ycl, ienb, ndofl, 'gather ') 107*59599516SKenneth E. Jansen call localx (x, xlb, ienb, nsd, 'gather ') 108*59599516SKenneth E. Jansenc 109*59599516SKenneth E. Jansenc.... get the boundary element residuals 110*59599516SKenneth E. Jansenc 111*59599516SKenneth E. Jansen rtl = zero 112*59599516SKenneth E. Jansen rmtl = zero 113*59599516SKenneth E. Jansenc 114*59599516SKenneth E. Jansenc.... 3D 115*59599516SKenneth E. Jansenc 116*59599516SKenneth E. Jansen call e3bSclr (ycl, iBCB, BCB, 117*59599516SKenneth E. Jansen & shpb, shglb, sgn, 118*59599516SKenneth E. Jansen & xlb, rtl, rmtl) 119*59599516SKenneth E. Jansenc 120*59599516SKenneth E. Jansenc.... assemble the residual and the modified residual 121*59599516SKenneth E. Jansenc 122*59599516SKenneth E. Jansen 123*59599516SKenneth E. Jansen call local (rest, rtl, ienb, 1, 'scatter ') 124*59599516SKenneth E. Jansen 125*59599516SKenneth E. Jansen 126*59599516SKenneth E. Jansenc 127*59599516SKenneth E. Jansen if (Navier .eq. 1) 128*59599516SKenneth E. Jansen & call local (rmest, rmtl, ienb, 1, 'scatter ') 129*59599516SKenneth E. Jansenc 130*59599516SKenneth E. Jansenc.... end 131*59599516SKenneth E. Jansenc 132*59599516SKenneth E. Jansen return 133*59599516SKenneth E. Jansen end 134*59599516SKenneth E. Jansen 135*59599516SKenneth E. Jansen 136