xref: /phasta/phSolver/incompressible/asbflx.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen      subroutine AsBFlx (u,           y,           ac,
2*59599516SKenneth E. Jansen     &                   x,           shpb,
3*59599516SKenneth E. Jansen     &                   shglb,       ienb,        iBCB,
4*59599516SKenneth E. Jansen     &                   BCB,         invflx,      flxres,
5*59599516SKenneth E. Jansen     &                   flxLHS,      flxnrm,      xKebe )
6*59599516SKenneth E. Jansenc
7*59599516SKenneth E. Jansenc----------------------------------------------------------------------
8*59599516SKenneth E. Jansenc
9*59599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the
10*59599516SKenneth E. Jansenc  boundary elements.
11*59599516SKenneth E. Jansenc
12*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
13*59599516SKenneth E. Jansenc----------------------------------------------------------------------
14*59599516SKenneth E. Jansenc
15*59599516SKenneth E. Jansen      use turbSA ! access to d2wall
16*59599516SKenneth E. Jansen        include "common.h"
17*59599516SKenneth E. Jansenc
18*59599516SKenneth E. Jansen        dimension y(nshg,ndofl),           x(numnp,nsd),
19*59599516SKenneth E. Jansen     &            ac(nshg,ndofl),          u(nshg,nsd),
20*59599516SKenneth E. Jansen     &            shpb(nshl,ngaussb),
21*59599516SKenneth E. Jansen     &            shglb(nsd,nshl,ngaussb),
22*59599516SKenneth E. Jansen     &            ienb(npro,nshl),
23*59599516SKenneth E. Jansen     &            iBCB(npro,ndiBCB),       BCB(npro,nshlb,ndBCB),
24*59599516SKenneth E. Jansen     &            invflx(nshg),            flxres(nshg,nflow),
25*59599516SKenneth E. Jansen     &            flxLHS(nshg,1),          flxnrm(nshg,nsd)
26*59599516SKenneth E. Jansenc
27*59599516SKenneth E. Jansen        dimension yl(npro,nshl,ndofl),     xlb(npro,nenl,nsd),
28*59599516SKenneth E. Jansen     &            rl(npro,nshl,nflow),     sgn(npro,nshl),
29*59599516SKenneth E. Jansen     &            flhsl(npro,nshl,1),      fnrml(npro,nshl,nsd),
30*59599516SKenneth E. Jansen     &            lnflx(npro),             lnode(27),
31*59599516SKenneth E. Jansen     &            ul(npro,nshl,nsd),       acl(npro,nshl,ndofl)
32*59599516SKenneth E. Jansen        real*8 dwl(npro,nshl)
33*59599516SKenneth E. Jansen
34*59599516SKenneth E. Jansen        dimension xKebe(npro,9,nshl,nshl)
35*59599516SKenneth E. Jansen
36*59599516SKenneth E. Jansenc
37*59599516SKenneth E. Jansenc.... compute the nodes which lie on the boundary (hierarchic)
38*59599516SKenneth E. Jansenc
39*59599516SKenneth E. Jansen        call getbnodes(lnode)
40*59599516SKenneth E. Jansenc
41*59599516SKenneth E. Jansenc.... get the matrix of mode signs for the hierarchic basis functions
42*59599516SKenneth E. Jansenc
43*59599516SKenneth E. Jansen        if (ipord .gt. 1) then
44*59599516SKenneth E. Jansen           call getsgn(ienb,sgn)
45*59599516SKenneth E. Jansen        endif
46*59599516SKenneth E. Jansenc
47*59599516SKenneth E. Jansenc.... gather the variables
48*59599516SKenneth E. Jansenc
49*59599516SKenneth E. Jansen        call localy(y,      yl,     ienb,   ndofl,  'gather  ')
50*59599516SKenneth E. Jansen        call localy(ac,     acl,    ienb,   ndofl,  'gather  ')
51*59599516SKenneth E. Jansen        call localx(x,      xlb,    ienb,   nsd,    'gather  ')
52*59599516SKenneth E. Jansen        call localx(u,      ul,     ienb,   nsd,    'gather  ')
53*59599516SKenneth E. Jansen        if(iRANS.eq.-2) then
54*59599516SKenneth E. Jansen           call local(d2wall, dwl, ienb, 1, 'gather  ')
55*59599516SKenneth E. Jansen        endif
56*59599516SKenneth E. Jansen
57*59599516SKenneth E. Jansen        rl    = zero
58*59599516SKenneth E. Jansen        flhsl = zero
59*59599516SKenneth E. Jansen        fnrml = zero
60*59599516SKenneth E. Jansenc
61*59599516SKenneth E. Jansen        ires = 2
62*59599516SKenneth E. Jansen        call e3b  (ul,      yl,      acl,     iBCB,    BCB,
63*59599516SKenneth E. Jansen     &             shpb,    shglb,
64*59599516SKenneth E. Jansen     &             xlb,     rl,      sgn,     dwl,     xKebe)
65*59599516SKenneth E. Jansen        ires = 1
66*59599516SKenneth E. Jansenc
67*59599516SKenneth E. Jansenc.... assemble the residuals
68*59599516SKenneth E. Jansenc
69*59599516SKenneth E. Jansen        call local (flxres, rl,     ienb,   nflow,  'scatter ')
70*59599516SKenneth E. Jansenc
71*59599516SKenneth E. Jansenc.... compute the LHS for the flux computation (should only be done
72*59599516SKenneth E. Jansenc     once)
73*59599516SKenneth E. Jansenc
74*59599516SKenneth E. Jansen        call f3lhs (shpb,       shglb,      xlb,
75*59599516SKenneth E. Jansen     &              flhsl,      fnrml,      sgn )
76*59599516SKenneth E. Jansen
77*59599516SKenneth E. Jansenc
78*59599516SKenneth E. Jansenc.... reset the non-contributing element values
79*59599516SKenneth E. Jansenc
80*59599516SKenneth E. Jansen        lnflx = 0
81*59599516SKenneth E. Jansen        do n = 1, nshlb
82*59599516SKenneth E. Jansen          lnflx = lnflx + min(1, invflx(ienb(:,lnode(n))))
83*59599516SKenneth E. Jansen        enddo
84*59599516SKenneth E. Jansenc
85*59599516SKenneth E. Jansen        do n = 1, nshl
86*59599516SKenneth E. Jansen          where (lnflx .ne. nshlb)   flhsl(:,n,1) = zero
87*59599516SKenneth E. Jansen          do i = 1, nsd
88*59599516SKenneth E. Jansen            where (lnflx .ne. nshlb) fnrml(:,n,i) = zero
89*59599516SKenneth E. Jansen          enddo
90*59599516SKenneth E. Jansen        enddo
91*59599516SKenneth E. Jansenc
92*59599516SKenneth E. Jansenc.... assemble the boundary LHS and normal
93*59599516SKenneth E. Jansenc
94*59599516SKenneth E. Jansen        call local (flxLHS, flhsl,  ienb,   1,      'scatter ')
95*59599516SKenneth E. Jansen        call local (flxnrm, fnrml,  ienb,   nsd,    'scatter ')
96*59599516SKenneth E. Jansenc
97*59599516SKenneth E. Jansenc.... end
98*59599516SKenneth E. Jansenc
99*59599516SKenneth E. Jansen        return
100*59599516SKenneth E. Jansen        end
101