xref: /phasta/phSolver/incompressible/asbmfg.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen      subroutine AsBMFG (u,       y,       ac,      x,
2*59599516SKenneth E. Jansen     &                   shpb,    shglb,
3*59599516SKenneth E. Jansen     &                   ienb,    materb,  iBCB,    BCB,
4*59599516SKenneth E. Jansen     &                   res,     xKebe)
5*59599516SKenneth E. Jansenc
6*59599516SKenneth E. Jansenc----------------------------------------------------------------------
7*59599516SKenneth E. Jansenc
8*59599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the
9*59599516SKenneth E. Jansenc  boundary elements.
10*59599516SKenneth E. Jansenc
11*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
12*59599516SKenneth E. Jansenc Alberto Figueroa, Winter 2004.  CMM-FSI
13*59599516SKenneth E. Jansenc Irene Vignon, Spring 2004.
14*59599516SKenneth E. Jansenc----------------------------------------------------------------------
15*59599516SKenneth E. Jansenc
16*59599516SKenneth E. Jansen      use turbSA                ! access to d2wall
17*59599516SKenneth E. Jansen      include "common.h"
18*59599516SKenneth E. Jansenc
19*59599516SKenneth E. Jansen        dimension y(nshg,ndofl),           x(numnp,nsd),
20*59599516SKenneth E. Jansen     &            ac(nshg,ndofl),          u(nshg,nsd),
21*59599516SKenneth E. Jansen     &            shpb(nshl,ngaussb),
22*59599516SKenneth E. Jansen     &            shglb(nsd,nshl,ngaussb),
23*59599516SKenneth E. Jansen     &            ienb(npro,nshl),         materb(npro),
24*59599516SKenneth E. Jansen     &            iBCB(npro,ndiBCB),       BCB(npro,nshlb,ndBCB),
25*59599516SKenneth E. Jansen     &            res(nshg,nflow),        dwl(npro,nenl)
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     &            ul(npro,nshl,nsd),       acl(npro,nshl,ndofl)
30*59599516SKenneth E. Jansenc
31*59599516SKenneth E. Jansen        dimension xKebe(npro,9,nshl,nshl)
32*59599516SKenneth E. Jansen
33*59599516SKenneth E. Jansenc
34*59599516SKenneth E. Jansenc.... get the matrix of mode signs for the hierarchic basis functions
35*59599516SKenneth E. Jansenc
36*59599516SKenneth E. Jansen        if (ipord .gt. 1) then
37*59599516SKenneth E. Jansen           call getsgn(ienb,sgn)
38*59599516SKenneth E. Jansen        endif
39*59599516SKenneth E. Jansenc
40*59599516SKenneth E. Jansenc.... gather the variables
41*59599516SKenneth E. Jansenc
42*59599516SKenneth E. Jansen        call localy(y,      yl,     ienb,   ndofl,  'gather  ')
43*59599516SKenneth E. Jansen        call localy(ac,     acl,    ienb,   ndofl,  'gather  ')
44*59599516SKenneth E. Jansen        call localx(x,      xlb,    ienb,   nsd,    'gather  ')
45*59599516SKenneth E. Jansen        call localx(u,      ul,     ienb,   nsd,    'gather  ')
46*59599516SKenneth E. Jansen        if(iRANS.eq.-2) then
47*59599516SKenneth E. Jansen           call local(d2wall, dwl, ienb, 1, 'gather  ')
48*59599516SKenneth E. Jansen        endif
49*59599516SKenneth E. Jansen
50*59599516SKenneth E. Jansenc
51*59599516SKenneth E. Jansenc.... zero the matrices if they are being recalculated
52*59599516SKenneth E. Jansenc
53*59599516SKenneth E. Jansen       if (lhs. eq. 1)  then
54*59599516SKenneth E. Jansen           xKebe = zero
55*59599516SKenneth E. Jansen        endif
56*59599516SKenneth E. Jansen
57*59599516SKenneth E. Jansenc
58*59599516SKenneth E. Jansenc.... get the boundary element residuals
59*59599516SKenneth E. Jansenc
60*59599516SKenneth E. Jansen        rl  = zero
61*59599516SKenneth E. Jansenc
62*59599516SKenneth E. Jansenc.... 3D
63*59599516SKenneth E. Jansenc
64*59599516SKenneth E. Jansen        call e3b  (ul,      yl,      acl,     iBCB,    BCB,
65*59599516SKenneth E. Jansen     &             shpb,    shglb,
66*59599516SKenneth E. Jansen     &             xlb,     rl,      sgn,     dwl,     xKebe)
67*59599516SKenneth E. Jansenc
68*59599516SKenneth E. Jansenc.... assemble the residual and the modified residual
69*59599516SKenneth E. Jansenc
70*59599516SKenneth E. Jansen        call local (res,    rl,     ienb,   nflow,  'scatter ')
71*59599516SKenneth E. Jansen
72*59599516SKenneth E. Jansenc
73*59599516SKenneth E. Jansenc.... end
74*59599516SKenneth E. Jansenc
75*59599516SKenneth E. Jansen        return
76*59599516SKenneth E. Jansen        end
77*59599516SKenneth E. Jansen
78*59599516SKenneth E. Jansen
79*59599516SKenneth E. Jansenc
80*59599516SKenneth E. Jansenc----------------------------------------------------------------------
81*59599516SKenneth E. Jansenc
82*59599516SKenneth E. Jansenc     This routine computes and assembles the data corresponding to the
83*59599516SKenneth E. Jansenc     boundary elements for the temperature equation
84*59599516SKenneth E. Jansenc
85*59599516SKenneth E. Jansenc----------------------------------------------------------------------
86*59599516SKenneth E. Jansenc
87*59599516SKenneth E. Jansen      subroutine AsBSclr (y,       x,       shpb,    shglb,
88*59599516SKenneth E. Jansen     &                   ienb,    materb,  iBCB,    BCB,
89*59599516SKenneth E. Jansen     &                   res)
90*59599516SKenneth E. Jansen      use turbSA ! access to d2wall
91*59599516SKenneth E. Jansen        include "common.h"
92*59599516SKenneth E. Jansenc
93*59599516SKenneth E. Jansen        dimension y(nshg,ndofl),           x(numnp,nsd),
94*59599516SKenneth E. Jansen     &            shpb(nshl,*),
95*59599516SKenneth E. Jansen     &            shglb(nsd,nshl,*),
96*59599516SKenneth E. Jansen     &            ienb(npro,nshl),         materb(npro),
97*59599516SKenneth E. Jansen     &            iBCB(npro,ndiBCB),       BCB(npro,nshlb,ndBCB),
98*59599516SKenneth E. Jansen     &            res(nshg)
99*59599516SKenneth E. Jansenc
100*59599516SKenneth E. Jansen        dimension yl(npro,nshl,ndofl),     xlb(npro,nenl,nsd),
101*59599516SKenneth E. Jansen     &            rl(npro,nshl),     sgn(npro,nshl)
102*59599516SKenneth E. Jansen        real*8 dwl(npro,nshl)
103*59599516SKenneth E. Jansenc
104*59599516SKenneth E. Jansenc.... get the matrix of mode signs for the hierarchic basis functions
105*59599516SKenneth E. Jansenc
106*59599516SKenneth E. Jansen        if (ipord .gt. 1) then
107*59599516SKenneth E. Jansen           call getsgn(ienb,sgn)
108*59599516SKenneth E. Jansen        endif
109*59599516SKenneth E. Jansenc
110*59599516SKenneth E. Jansenc.... gather the variables
111*59599516SKenneth E. Jansenc
112*59599516SKenneth E. Jansen        call localy(y,      yl,     ienb,   ndofl,  'gather  ')
113*59599516SKenneth E. Jansen        call localx(x,      xlb,    ienb,   nsd,    'gather  ')
114*59599516SKenneth E. Jansen        if(iRANS.eq.-2) then
115*59599516SKenneth E. Jansen           call local(d2wall, dwl, ienb, 1, 'gather  ')
116*59599516SKenneth E. Jansen        endif
117*59599516SKenneth E. Jansenc
118*59599516SKenneth E. Jansenc.... get the boundary element residuals
119*59599516SKenneth E. Jansenc
120*59599516SKenneth E. Jansen        rl  = zero
121*59599516SKenneth E. Jansen
122*59599516SKenneth E. Jansen        call e3bSclr  (yl,      iBCB,    BCB,     shpb,    shglb,
123*59599516SKenneth E. Jansen     &                 xlb,     rl,      sgn,     dwl)
124*59599516SKenneth E. Jansenc
125*59599516SKenneth E. Jansenc.... assemble the residual and the modified residual
126*59599516SKenneth E. Jansenc
127*59599516SKenneth E. Jansen        call local (res,    rl,     ienb,   1,  'scatter ')
128*59599516SKenneth E. Jansenc
129*59599516SKenneth E. Jansenc.... end
130*59599516SKenneth E. Jansenc
131*59599516SKenneth E. Jansen        return
132*59599516SKenneth E. Jansen        end
133*59599516SKenneth E. Jansen
134*59599516SKenneth E. Jansen
135