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