xref: /phasta/phSolver/incompressible/bc3global.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen	subroutine bc3global (globMas, iBC)
2*59599516SKenneth E. Jansenc
3*59599516SKenneth E. Jansenc----------------------------------------------------------------------
4*59599516SKenneth E. Jansenc
5*59599516SKenneth E. Jansenc This routine satisfies the BC of LHS mass matrix for a single
6*59599516SKenneth E. Jansenc element.
7*59599516SKenneth E. Jansenc
8*59599516SKenneth E. Jansenc input:
9*59599516SKenneth E. Jansenc  iBC   (nshg) 	: boundary condition code
10*59599516SKenneth E. Jansenc  BC    (nshg,11)     : Dirichlet BC constraint parameters
11*59599516SKenneth E. Jansenc  ien   (npro,nshl)	: ien array for this element
12*59599516SKenneth E. Jansenc  EGmass(npro,nedof,nedof) : element consistent mass matrix before BC
13*59599516SKenneth E. Jansenc
14*59599516SKenneth E. Jansenc output:
15*59599516SKenneth E. Jansenc  EGmass(npro,nedof,nedof): LHS mass matrix after BC is satisfied
16*59599516SKenneth E. Jansenc
17*59599516SKenneth E. Jansenc
18*59599516SKenneth E. Jansenc Farzin Shakib, Winter 1987.
19*59599516SKenneth E. Jansenc Zdenek Johan,  Spring 1990. (Modified for general divariant gas)
20*59599516SKenneth E. Jansenc----------------------------------------------------------------------
21*59599516SKenneth E. Jansenc
22*59599516SKenneth E. Jansen        include "common.h"
23*59599516SKenneth E. Jansenc
24*59599516SKenneth E. Jansen	dimension iBC(nshg),
25*59599516SKenneth E. Jansen     &            globMas(4*nshg,4*nshg)
26*59599516SKenneth E. Jansen
27*59599516SKenneth E. Jansen
28*59599516SKenneth E. Jansen	do in=1,nshg
29*59599516SKenneth E. Jansen	   i0 = (in-1)*4
30*59599516SKenneth E. Jansenc
31*59599516SKenneth E. Jansenc.... pressure
32*59599516SKenneth E. Jansenc
33*59599516SKenneth E. Jansen	   if ( btest(iBC(in),2) ) then
34*59599516SKenneth E. Jansen	      globMas(i0+1,:) = zero
35*59599516SKenneth E. Jansen	      globMas(:,i0+1) = zero
36*59599516SKenneth E. Jansen	      globMas(i0+1,i0+1) = one
37*59599516SKenneth E. Jansen	   endif
38*59599516SKenneth E. Jansenc
39*59599516SKenneth E. Jansenc....   velocities
40*59599516SKenneth E. Jansenc
41*59599516SKenneth E. Jansenc
42*59599516SKenneth E. Jansenc....   x1-velocity
43*59599516SKenneth E. Jansenc
44*59599516SKenneth E. Jansen	   if ( ibits(iBC(in),3,3) .eq. 1 ) then
45*59599516SKenneth E. Jansen	      globMas(i0+2,:) = zero
46*59599516SKenneth E. Jansen	      globMas(:,i0+2) = zero
47*59599516SKenneth E. Jansen	      globMas(i0+2,i0+2) = one
48*59599516SKenneth E. Jansen	   endif
49*59599516SKenneth E. Jansenc
50*59599516SKenneth E. Jansenc....   x2-velocity
51*59599516SKenneth E. Jansenc
52*59599516SKenneth E. Jansen	   if ( ibits(iBC(in),3,3) .eq. 2 ) then
53*59599516SKenneth E. Jansen	      globMas(i0+3,:) = zero
54*59599516SKenneth E. Jansen	      globMas(:,i0+3) = zero
55*59599516SKenneth E. Jansen	      globMas(i0+3,i0+3) = one
56*59599516SKenneth E. Jansen
57*59599516SKenneth E. Jansen	   endif
58*59599516SKenneth E. Jansenc
59*59599516SKenneth E. Jansenc....   x1-velocity and x2-velocity
60*59599516SKenneth E. Jansenc
61*59599516SKenneth E. Jansen	   if ( ibits(iBC(in),3,3) .eq. 3 ) then
62*59599516SKenneth E. Jansen	      globMas(i0+2,:) = zero
63*59599516SKenneth E. Jansen	      globMas(:,i0+2) = zero
64*59599516SKenneth E. Jansen	      globMas(i0+2,i0+2) = one
65*59599516SKenneth E. Jansen	      globMas(i0+3,:) = zero
66*59599516SKenneth E. Jansen	      globMas(:,i0+3) = zero
67*59599516SKenneth E. Jansen	      globMas(i0+3,i0+3) = one
68*59599516SKenneth E. Jansen	   endif
69*59599516SKenneth E. Jansenc
70*59599516SKenneth E. Jansenc....   x3-velocity
71*59599516SKenneth E. Jansenc
72*59599516SKenneth E. Jansen	   if ( ibits(iBC(in),3,3) .eq. 4 ) then
73*59599516SKenneth E. Jansen	      globMas(i0+4,:) = zero
74*59599516SKenneth E. Jansen	      globMas(:,i0+4) = zero
75*59599516SKenneth E. Jansen	      globMas(i0+4,i0+4) = one
76*59599516SKenneth E. Jansen
77*59599516SKenneth E. Jansen	   endif
78*59599516SKenneth E. Jansenc
79*59599516SKenneth E. Jansenc....   x1-velocity and x3-velocity
80*59599516SKenneth E. Jansenc
81*59599516SKenneth E. Jansen	   if ( ibits(iBC(in),3,3) .eq. 5 ) then
82*59599516SKenneth E. Jansen	      globMas(i0+2,:) = zero
83*59599516SKenneth E. Jansen	      globMas(:,i0+2) = zero
84*59599516SKenneth E. Jansen	      globMas(i0+2,i0+2) = one
85*59599516SKenneth E. Jansen	      globMas(i0+4,:) = zero
86*59599516SKenneth E. Jansen	      globMas(:,i0+4) = zero
87*59599516SKenneth E. Jansen	      globMas(i0+4,i0+4) = one
88*59599516SKenneth E. Jansen
89*59599516SKenneth E. Jansen	   endif
90*59599516SKenneth E. Jansenc
91*59599516SKenneth E. Jansenc....   x2-velocity and x3-velocity
92*59599516SKenneth E. Jansenc
93*59599516SKenneth E. Jansen	   if ( ibits(iBC(in),3,3) .eq. 6 ) then
94*59599516SKenneth E. Jansen	      globMas(i0+3,:) = zero
95*59599516SKenneth E. Jansen	      globMas(:,i0+3) = zero
96*59599516SKenneth E. Jansen	      globMas(i0+3,i0+3) = one
97*59599516SKenneth E. Jansen	      globMas(i0+4,:) = zero
98*59599516SKenneth E. Jansen	      globMas(:,i0+4) = zero
99*59599516SKenneth E. Jansen	      globMas(i0+4,i0+4) = one
100*59599516SKenneth E. Jansen
101*59599516SKenneth E. Jansen	   endif
102*59599516SKenneth E. Jansenc
103*59599516SKenneth E. Jansenc....   x1-velocity, x2-velocity, and x3-velocity
104*59599516SKenneth E. Jansenc
105*59599516SKenneth E. Jansen	   if ( ibits(iBC(in),3,3) .eq. 7 ) then
106*59599516SKenneth E. Jansen	      globMas(i0+2,:) = zero
107*59599516SKenneth E. Jansen	      globMas(:,i0+2) = zero
108*59599516SKenneth E. Jansen	      globMas(i0+2,i0+2) = one
109*59599516SKenneth E. Jansen	      globMas(i0+3,:) = zero
110*59599516SKenneth E. Jansen	      globMas(:,i0+3) = zero
111*59599516SKenneth E. Jansen	      globMas(i0+3,i0+3) = one
112*59599516SKenneth E. Jansen	      globMas(i0+4,:) = zero
113*59599516SKenneth E. Jansen	      globMas(:,i0+4) = zero
114*59599516SKenneth E. Jansen	      globMas(i0+4,i0+4) = one
115*59599516SKenneth E. Jansen	   endif
116*59599516SKenneth E. Jansen	enddo
117*59599516SKenneth E. Jansen
118*59599516SKenneth E. Jansen
119*59599516SKenneth E. Jansenc
120*59599516SKenneth E. Jansenc....   return
121*59599516SKenneth E. Jansenc
122*59599516SKenneth E. Jansen	return
123*59599516SKenneth E. Jansen	end
124