xref: /phasta/phSolver/compressible/asbmfg.f (revision 712d3df0b59ebebaaeaea358162c8d2c043c6e08)
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