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