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