1*59599516SKenneth E. Jansen subroutine bc3LHS (iBC, BC, iens, xKebe ) 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 all 6*59599516SKenneth E. Jansenc elements in this block. 7*59599516SKenneth E. Jansenc 8*59599516SKenneth E. Jansenc input: 9*59599516SKenneth E. Jansenc iBC (nshg) : boundary condition code 10*59599516SKenneth E. Jansenc BC (nshg,ndofBC) : Dirichlet BC constraint parameters 11*59599516SKenneth E. Jansenc ien (npro,nshape) : ien array for this element 12*59599516SKenneth E. Jansenc xKebe (npro,9,nshl,nshl) : element consistent mass matrix before BC 13*59599516SKenneth E. Jansenc 14*59599516SKenneth E. Jansenc output: 15*59599516SKenneth E. Jansenc xKebe (npro,9,nshl,nshl) : 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 Ken Jansen, Summer 2000. Incompressible (only needed on xKebe) 21*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 22*59599516SKenneth E. Jansenc 23*59599516SKenneth E. Jansen include "common.h" 24*59599516SKenneth E. Jansenc 25*59599516SKenneth E. Jansen dimension iBC(nshg), ien(npro,nshl), 26*59599516SKenneth E. Jansen & BC(nshg,ndofBC), xKebe(npro,9,nshl,nshl) 27*59599516SKenneth E. Jansen integer iens(npro,nshl) 28*59599516SKenneth E. Jansenc 29*59599516SKenneth E. Jansenc prefer to show explicit absolute value needed for cubic modes and 30*59599516SKenneth E. Jansenc higher rather than inline abs on pointer as in past versions 31*59599516SKenneth E. Jansenc iens is the signed ien array ien is unsigned 32*59599516SKenneth E. Jansenc 33*59599516SKenneth E. Jansen ien=abs(iens) 34*59599516SKenneth E. Jansenc 35*59599516SKenneth E. Jansenc.... loop over elements 36*59599516SKenneth E. Jansenc 37*59599516SKenneth E. Jansenc return 38*59599516SKenneth E. Jansen do iel = 1, npro 39*59599516SKenneth E. Jansenc 40*59599516SKenneth E. Jansenc.... loop over number of shape functions for this element 41*59599516SKenneth E. Jansenc 42*59599516SKenneth E. Jansen do inod = 1, nshl 43*59599516SKenneth E. Jansenc 44*59599516SKenneth E. Jansenc.... set up parameters 45*59599516SKenneth E. Jansenc 46*59599516SKenneth E. Jansen in = abs(ien(iel,inod)) 47*59599516SKenneth E. Jansen if (ibits(iBC(in),3,3) .eq. 0) goto 5000 ! NO velocity BC's 48*59599516SKenneth E. Jansen if (ibits(iBC(in),3,3) .eq. 7) goto 5000 ! 3 components ok 49*59599516SKenneth E. Jansen 50*59599516SKenneth E. Jansenc.... 1 or 2 component velocities 51*59599516SKenneth E. Jansenc 52*59599516SKenneth E. Jansenc 53*59599516SKenneth E. Jansenc.... x1-velocity 54*59599516SKenneth E. Jansenc 55*59599516SKenneth E. Jansen if ( ibits(iBC(in),3,3) .eq. 1) then 56*59599516SKenneth E. Jansenc 57*59599516SKenneth E. Jansen! we want to project out the x1 component of the velocity from the tangent 58*59599516SKenneth E. Jansen! matix which is, mathematically, M^e = S^T M^e S. We will do the M^e S 59*59599516SKenneth E. Jansen! product first. It has the effect of 60*59599516SKenneth E. Jansen! subtracting the column of the block-9 matrix from each column of the block-9 61*59599516SKenneth E. Jansen! matrix that is going to survive (weighted by the coefficient in the 62*59599516SKenneth E. Jansen! BC array associated with that row) FOR EACH column of the 63*59599516SKenneth E. Jansen! nshl by nshl matrix FOR EACH element. THEN the transpose of the 64*59599516SKenneth E. Jansen! operation is carried out (replace the word "column" by row 65*59599516SKenneth E. Jansen! EVERYWHERE). The following code has been set up so that we only have to 66*59599516SKenneth E. Jansen! give the starting position in each case since we know the block-9 matrix is 67*59599516SKenneth E. Jansen! ordered like this 68*59599516SKenneth E. Jansen! 1 2 3 69*59599516SKenneth E. Jansen! 4 5 6 70*59599516SKenneth E. Jansen! 7 8 9 71*59599516SKenneth E. Jansen 72*59599516SKenneth E. Jansenc 73*59599516SKenneth E. Jansenc adjusting the second column for the eventual removal of the first 74*59599516SKenneth E. Jansenc column of the block-9 submatrix 75*59599516SKenneth E. Jansenc 76*59599516SKenneth E. Jansen irem1=1 77*59599516SKenneth E. Jansen irem2=irem1+3 78*59599516SKenneth E. Jansen irem3=irem2+3 79*59599516SKenneth E. Jansen 80*59599516SKenneth E. Jansen iadj1=2 81*59599516SKenneth E. Jansen iadj2=iadj1+3 82*59599516SKenneth E. Jansen iadj3=iadj2+3 83*59599516SKenneth E. Jansen do i = 1, nshl 84*59599516SKenneth E. Jansen xKebe(iel,iadj1,i,inod) = xKebe(iel,iadj1,i,inod) 85*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem1,i,inod) 86*59599516SKenneth E. Jansen xKebe(iel,iadj2,i,inod) = xKebe(iel,iadj2,i,inod) 87*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem2,i,inod) 88*59599516SKenneth E. Jansen xKebe(iel,iadj3,i,inod) = xKebe(iel,iadj3,i,inod) 89*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem3,i,inod) 90*59599516SKenneth E. Jansen 91*59599516SKenneth E. Jansen enddo 92*59599516SKenneth E. Jansen! block status ' denotes colunn 1 projected off. 93*59599516SKenneth E. Jansen! 1 2' 3 94*59599516SKenneth E. Jansen! 4 5' 6 95*59599516SKenneth E. Jansen! 7 8' 9 96*59599516SKenneth E. Jansenc 97*59599516SKenneth E. Jansenc adjusting the third column for the eventual removal of the first 98*59599516SKenneth E. Jansenc column of the block-9 submatrix 99*59599516SKenneth E. Jansenc 100*59599516SKenneth E. Jansen iadj1=3 101*59599516SKenneth E. Jansen iadj2=iadj1+3 102*59599516SKenneth E. Jansen iadj3=iadj2+3 103*59599516SKenneth E. Jansen do i = 1, nshl 104*59599516SKenneth E. Jansen xKebe(iel,iadj1,i,inod) = xKebe(iel,iadj1,i,inod) 105*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem1,i,inod) 106*59599516SKenneth E. Jansen xKebe(iel,iadj2,i,inod) = xKebe(iel,iadj2,i,inod) 107*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem2,i,inod) 108*59599516SKenneth E. Jansen xKebe(iel,iadj3,i,inod) = xKebe(iel,iadj3,i,inod) 109*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem3,i,inod) 110*59599516SKenneth E. Jansen! block status 111*59599516SKenneth E. Jansen! 1 2' 3' 112*59599516SKenneth E. Jansen! 4 5' 6' 113*59599516SKenneth E. Jansen! 7 8' 9' 114*59599516SKenneth E. Jansen enddo 115*59599516SKenneth E. Jansen do i=1,nshl 116*59599516SKenneth E. Jansenc 117*59599516SKenneth E. Jansenc done with the first columns_block-9 for columns AND rows of nshl 118*59599516SKenneth E. Jansenc 119*59599516SKenneth E. Jansen xKebe(iel,irem1,i,inod) = zero 120*59599516SKenneth E. Jansen xKebe(iel,irem2,i,inod) = zero 121*59599516SKenneth E. Jansen xKebe(iel,irem3,i,inod) = zero 122*59599516SKenneth E. Jansen 123*59599516SKenneth E. Jansen 124*59599516SKenneth E. Jansen! block status 125*59599516SKenneth E. Jansen! 0 2' 3' 126*59599516SKenneth E. Jansen! 0 5' 6' 127*59599516SKenneth E. Jansen! 0 8' 9' 128*59599516SKenneth E. Jansen 129*59599516SKenneth E. Jansen enddo 130*59599516SKenneth E. Jansenc 131*59599516SKenneth E. Jansenc now adjust the second row_block-9 for EACH row nshl for EACH element 132*59599516SKenneth E. Jansenc 133*59599516SKenneth E. Jansen 134*59599516SKenneth E. Jansen iadj1=4 135*59599516SKenneth E. Jansen iadj2=iadj1+1 136*59599516SKenneth E. Jansen iadj3=iadj2+1 137*59599516SKenneth E. Jansen irem1=1 138*59599516SKenneth E. Jansen irem2=irem1+1 139*59599516SKenneth E. Jansen irem3=irem2+1 140*59599516SKenneth E. Jansen do i = 1, nshl 141*59599516SKenneth E. Jansen xKebe(iel,iadj1,inod,i) = xKebe(iel,iadj1,inod,i) 142*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem1,inod,i) 143*59599516SKenneth E. Jansen xKebe(iel,iadj2,inod,i) = xKebe(iel,iadj2,inod,i) 144*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem2,inod,i) 145*59599516SKenneth E. Jansen xKebe(iel,iadj3,inod,i) = xKebe(iel,iadj3,inod,i) 146*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem3,inod,i) 147*59599516SKenneth E. Jansen 148*59599516SKenneth E. Jansen enddo 149*59599516SKenneth E. Jansen! block status 150*59599516SKenneth E. Jansen! 0 2' 3' 151*59599516SKenneth E. Jansen! 0 5'' 6'' 152*59599516SKenneth E. Jansen! 0 8' 9' 153*59599516SKenneth E. Jansen 154*59599516SKenneth E. Jansen 155*59599516SKenneth E. Jansen iadj1=7 156*59599516SKenneth E. Jansen iadj2=iadj1+1 157*59599516SKenneth E. Jansen iadj3=iadj2+1 158*59599516SKenneth E. Jansen do i = 1, nshl 159*59599516SKenneth E. Jansen xKebe(iel,iadj1,inod,i) = xKebe(iel,iadj1,inod,i) 160*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem1,inod,i) 161*59599516SKenneth E. Jansen xKebe(iel,iadj2,inod,i) = xKebe(iel,iadj2,inod,i) 162*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem2,inod,i) 163*59599516SKenneth E. Jansen xKebe(iel,iadj3,inod,i) = xKebe(iel,iadj3,inod,i) 164*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem3,inod,i) 165*59599516SKenneth E. Jansen 166*59599516SKenneth E. Jansen! block status 167*59599516SKenneth E. Jansen! 0 2' 3' 168*59599516SKenneth E. Jansen! 0 5'' 6'' 169*59599516SKenneth E. Jansen! 0 8'' 9'' 170*59599516SKenneth E. Jansen enddo 171*59599516SKenneth E. Jansen do i=1,nshl 172*59599516SKenneth E. Jansen 173*59599516SKenneth E. Jansenc 174*59599516SKenneth E. Jansenc eliminate the first row of block-9 for all rows 175*59599516SKenneth E. Jansenc 176*59599516SKenneth E. Jansen xKebe(iel,irem1,inod,i) = zero 177*59599516SKenneth E. Jansen xKebe(iel,irem2,inod,i) = zero 178*59599516SKenneth E. Jansen xKebe(iel,irem3,inod,i) = zero 179*59599516SKenneth E. Jansen 180*59599516SKenneth E. Jansen enddo 181*59599516SKenneth E. Jansen 182*59599516SKenneth E. Jansen! block status 183*59599516SKenneth E. Jansen! 0 0 0 184*59599516SKenneth E. Jansen! 0 5'' 6'' 185*59599516SKenneth E. Jansen! 0 8'' 9'' 186*59599516SKenneth E. Jansen 187*59599516SKenneth E. Jansen! Be aware that this simple status of the block does not reflect that when 188*59599516SKenneth E. Jansen! we eliminated columns we did it for columns in nshl as well for the given 189*59599516SKenneth E. Jansen! inod. Conversely when we eliminated rows in the block we did so for ALL 190*59599516SKenneth E. Jansen! rows in nshl as can be seen by the transpose of i and inod. 191*59599516SKenneth E. Jansen 192*59599516SKenneth E. Jansen xKebe(iel,1,inod,inod)=one 193*59599516SKenneth E. Jansen! block status 194*59599516SKenneth E. Jansen! 1 0 0 195*59599516SKenneth E. Jansen! 0 5'' 6'' 196*59599516SKenneth E. Jansen! 0 8'' 9'' 197*59599516SKenneth E. Jansen endif 198*59599516SKenneth E. Jansenc 199*59599516SKenneth E. Jansenc.... x2-velocity 200*59599516SKenneth E. Jansenc 201*59599516SKenneth E. Jansen if ( ibits(iBC(in),3,3) .eq. 2) then 202*59599516SKenneth E. Jansenc 203*59599516SKenneth E. Jansen! See comment above. Now we are eliminating the 2nd column then row of 204*59599516SKenneth E. Jansen! the block-9 matrix 205*59599516SKenneth E. Jansen! 1 2 3 206*59599516SKenneth E. Jansen! 4 5 6 207*59599516SKenneth E. Jansen! 7 8 9 208*59599516SKenneth E. Jansenc 209*59599516SKenneth E. Jansenc adjusting the first column for the eventual removal of the second 210*59599516SKenneth E. Jansenc column of the block-9 submatrix 211*59599516SKenneth E. Jansenc 212*59599516SKenneth E. Jansen irem1=2 213*59599516SKenneth E. Jansen irem2=irem1+3 214*59599516SKenneth E. Jansen irem3=irem2+3 215*59599516SKenneth E. Jansen 216*59599516SKenneth E. Jansen iadj1=1 217*59599516SKenneth E. Jansen iadj2=iadj1+3 218*59599516SKenneth E. Jansen iadj3=iadj2+3 219*59599516SKenneth E. Jansen do i = 1, nshl 220*59599516SKenneth E. Jansen xKebe(iel,iadj1,i,inod) = xKebe(iel,iadj1,i,inod) 221*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem1,i,inod) 222*59599516SKenneth E. Jansen xKebe(iel,iadj2,i,inod) = xKebe(iel,iadj2,i,inod) 223*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem2,i,inod) 224*59599516SKenneth E. Jansen xKebe(iel,iadj3,i,inod) = xKebe(iel,iadj3,i,inod) 225*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem3,i,inod) 226*59599516SKenneth E. Jansen 227*59599516SKenneth E. Jansen enddo 228*59599516SKenneth E. Jansenc 229*59599516SKenneth E. Jansenc adjusting the third column for the eventual removal of the second 230*59599516SKenneth E. Jansenc column of the block-9 submatrix 231*59599516SKenneth E. Jansenc 232*59599516SKenneth E. Jansen iadj1=3 233*59599516SKenneth E. Jansen iadj2=iadj1+3 234*59599516SKenneth E. Jansen iadj3=iadj2+3 235*59599516SKenneth E. Jansen do i = 1, nshl 236*59599516SKenneth E. Jansen xKebe(iel,iadj1,i,inod) = xKebe(iel,iadj1,i,inod) 237*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem1,i,inod) 238*59599516SKenneth E. Jansen xKebe(iel,iadj2,i,inod) = xKebe(iel,iadj2,i,inod) 239*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem2,i,inod) 240*59599516SKenneth E. Jansen xKebe(iel,iadj3,i,inod) = xKebe(iel,iadj3,i,inod) 241*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem3,i,inod) 242*59599516SKenneth E. Jansen 243*59599516SKenneth E. Jansen enddo 244*59599516SKenneth E. Jansen do i=1,nshl 245*59599516SKenneth E. Jansenc 246*59599516SKenneth E. Jansenc done with the second columns_block-9 for columns 247*59599516SKenneth E. Jansenc 248*59599516SKenneth E. Jansen 249*59599516SKenneth E. Jansen xKebe(iel,irem1,i,inod) = zero 250*59599516SKenneth E. Jansen xKebe(iel,irem2,i,inod) = zero 251*59599516SKenneth E. Jansen xKebe(iel,irem3,i,inod) = zero 252*59599516SKenneth E. Jansen 253*59599516SKenneth E. Jansen enddo 254*59599516SKenneth E. Jansenc 255*59599516SKenneth E. Jansenc now adjust the 1st row_block-9 for EACH row nshl for EACH element 256*59599516SKenneth E. Jansenc 257*59599516SKenneth E. Jansen 258*59599516SKenneth E. Jansen iadj1=1 259*59599516SKenneth E. Jansen iadj2=iadj1+1 260*59599516SKenneth E. Jansen iadj3=iadj2+1 261*59599516SKenneth E. Jansen irem1=4 262*59599516SKenneth E. Jansen irem2=irem1+1 263*59599516SKenneth E. Jansen irem3=irem2+1 264*59599516SKenneth E. Jansen do i = 1, nshl 265*59599516SKenneth E. Jansen xKebe(iel,iadj1,inod,i) = xKebe(iel,iadj1,inod,i) 266*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem1,inod,i) 267*59599516SKenneth E. Jansen xKebe(iel,iadj2,inod,i) = xKebe(iel,iadj2,inod,i) 268*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem2,inod,i) 269*59599516SKenneth E. Jansen xKebe(iel,iadj3,inod,i) = xKebe(iel,iadj3,inod,i) 270*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem3,inod,i) 271*59599516SKenneth E. Jansen 272*59599516SKenneth E. Jansen enddo 273*59599516SKenneth E. Jansen iadj1=7 274*59599516SKenneth E. Jansen iadj2=iadj1+1 275*59599516SKenneth E. Jansen iadj3=iadj2+1 276*59599516SKenneth E. Jansen do i = 1, nshl 277*59599516SKenneth E. Jansen xKebe(iel,iadj1,inod,i) = xKebe(iel,iadj1,inod,i) 278*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem1,inod,i) 279*59599516SKenneth E. Jansen xKebe(iel,iadj2,inod,i) = xKebe(iel,iadj2,inod,i) 280*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem2,inod,i) 281*59599516SKenneth E. Jansen xKebe(iel,iadj3,inod,i) = xKebe(iel,iadj3,inod,i) 282*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem3,inod,i) 283*59599516SKenneth E. Jansen enddo 284*59599516SKenneth E. Jansen do i=1,nshl 285*59599516SKenneth E. Jansen 286*59599516SKenneth E. Jansenc 287*59599516SKenneth E. Jansenc eliminate the second row of block-9 for all rows 288*59599516SKenneth E. Jansenc 289*59599516SKenneth E. Jansen xKebe(iel,irem1,inod,i) = zero 290*59599516SKenneth E. Jansen xKebe(iel,irem2,inod,i) = zero 291*59599516SKenneth E. Jansen xKebe(iel,irem3,inod,i) = zero 292*59599516SKenneth E. Jansen enddo 293*59599516SKenneth E. Jansen xKebe(iel,5,inod,inod)=one 294*59599516SKenneth E. Jansen endif 295*59599516SKenneth E. Jansenc 296*59599516SKenneth E. Jansenc.... x3-velocity 297*59599516SKenneth E. Jansenc 298*59599516SKenneth E. Jansen if ( ibits(iBC(in),3,3) .eq. 4) then 299*59599516SKenneth E. Jansenc 300*59599516SKenneth E. Jansen! See comment above. Now we are eliminating the 3rd column then row of 301*59599516SKenneth E. Jansen! the block-9 matrix 302*59599516SKenneth E. Jansen! 1 2 3 303*59599516SKenneth E. Jansen! 4 5 6 304*59599516SKenneth E. Jansen! 7 8 9 305*59599516SKenneth E. Jansenc 306*59599516SKenneth E. Jansenc adjusting the 1st column for the eventual removal of the 3rd 307*59599516SKenneth E. Jansenc column of the block-9 submatrix 308*59599516SKenneth E. Jansenc 309*59599516SKenneth E. Jansen irem1=3 310*59599516SKenneth E. Jansen irem2=irem1+3 311*59599516SKenneth E. Jansen irem3=irem2+3 312*59599516SKenneth E. Jansen 313*59599516SKenneth E. Jansen iadj1=1 314*59599516SKenneth E. Jansen iadj2=iadj1+3 315*59599516SKenneth E. Jansen iadj3=iadj2+3 316*59599516SKenneth E. Jansen do i = 1, nshl 317*59599516SKenneth E. Jansen xKebe(iel,iadj1,i,inod) = xKebe(iel,iadj1,i,inod) 318*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem1,i,inod) 319*59599516SKenneth E. Jansen xKebe(iel,iadj2,i,inod) = xKebe(iel,iadj2,i,inod) 320*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem2,i,inod) 321*59599516SKenneth E. Jansen xKebe(iel,iadj3,i,inod) = xKebe(iel,iadj3,i,inod) 322*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem3,i,inod) 323*59599516SKenneth E. Jansen 324*59599516SKenneth E. Jansen enddo 325*59599516SKenneth E. Jansenc 326*59599516SKenneth E. Jansenc adjusting the second column for the eventual removal of the 3rd 327*59599516SKenneth E. Jansenc column of the block-9 submatrix 328*59599516SKenneth E. Jansenc 329*59599516SKenneth E. Jansen iadj1=2 330*59599516SKenneth E. Jansen iadj2=iadj1+3 331*59599516SKenneth E. Jansen iadj3=iadj2+3 332*59599516SKenneth E. Jansen do i = 1, nshl 333*59599516SKenneth E. Jansen xKebe(iel,iadj1,i,inod) = xKebe(iel,iadj1,i,inod) 334*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem1,i,inod) 335*59599516SKenneth E. Jansen xKebe(iel,iadj2,i,inod) = xKebe(iel,iadj2,i,inod) 336*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem2,i,inod) 337*59599516SKenneth E. Jansen xKebe(iel,iadj3,i,inod) = xKebe(iel,iadj3,i,inod) 338*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem3,i,inod) 339*59599516SKenneth E. Jansen enddo 340*59599516SKenneth E. Jansen do i=1,nshl 341*59599516SKenneth E. Jansen 342*59599516SKenneth E. Jansenc 343*59599516SKenneth E. Jansenc done with the 3rd columns_block-9 for columns 344*59599516SKenneth E. Jansenc 345*59599516SKenneth E. Jansen 346*59599516SKenneth E. Jansen xKebe(iel,irem1,i,inod) = zero 347*59599516SKenneth E. Jansen xKebe(iel,irem2,i,inod) = zero 348*59599516SKenneth E. Jansen xKebe(iel,irem3,i,inod) = zero 349*59599516SKenneth E. Jansen 350*59599516SKenneth E. Jansen enddo 351*59599516SKenneth E. Jansenc 352*59599516SKenneth E. Jansenc now adjust the 1st row_block-9 for EACH row nshl for EACH element 353*59599516SKenneth E. Jansenc 354*59599516SKenneth E. Jansen 355*59599516SKenneth E. Jansen iadj1=1 356*59599516SKenneth E. Jansen iadj2=iadj1+1 357*59599516SKenneth E. Jansen iadj3=iadj2+1 358*59599516SKenneth E. Jansen irem1=7 359*59599516SKenneth E. Jansen irem2=irem1+1 360*59599516SKenneth E. Jansen irem3=irem2+1 361*59599516SKenneth E. Jansen do i = 1, nshl 362*59599516SKenneth E. Jansen xKebe(iel,iadj1,inod,i) = xKebe(iel,iadj1,inod,i) 363*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem1,inod,i) 364*59599516SKenneth E. Jansen xKebe(iel,iadj2,inod,i) = xKebe(iel,iadj2,inod,i) 365*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem2,inod,i) 366*59599516SKenneth E. Jansen xKebe(iel,iadj3,inod,i) = xKebe(iel,iadj3,inod,i) 367*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem3,inod,i) 368*59599516SKenneth E. Jansen 369*59599516SKenneth E. Jansen enddo 370*59599516SKenneth E. Jansen iadj1=4 371*59599516SKenneth E. Jansen iadj2=iadj1+1 372*59599516SKenneth E. Jansen iadj3=iadj2+1 373*59599516SKenneth E. Jansen do i = 1, nshl 374*59599516SKenneth E. Jansen xKebe(iel,iadj1,inod,i) = xKebe(iel,iadj1,inod,i) 375*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem1,inod,i) 376*59599516SKenneth E. Jansen xKebe(iel,iadj2,inod,i) = xKebe(iel,iadj2,inod,i) 377*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem2,inod,i) 378*59599516SKenneth E. Jansen xKebe(iel,iadj3,inod,i) = xKebe(iel,iadj3,inod,i) 379*59599516SKenneth E. Jansen & - BC(in,5) * xKebe(iel,irem3,inod,i) 380*59599516SKenneth E. Jansen 381*59599516SKenneth E. Jansen enddo 382*59599516SKenneth E. Jansen do i=1,nshl 383*59599516SKenneth E. Jansen xKebe(iel,irem1,inod,i) = zero 384*59599516SKenneth E. Jansen xKebe(iel,irem2,inod,i) = zero 385*59599516SKenneth E. Jansen xKebe(iel,irem3,inod,i) = zero 386*59599516SKenneth E. Jansen 387*59599516SKenneth E. Jansen enddo 388*59599516SKenneth E. Jansen xKebe(iel,9,inod,inod)=one 389*59599516SKenneth E. Jansen endif 390*59599516SKenneth E. Jansenc 391*59599516SKenneth E. Jansenc.... x1-velocity and x2-velocity 392*59599516SKenneth E. Jansenc 393*59599516SKenneth E. Jansen if ( ibits(iBC(in),3,3) .eq. 3 ) then 394*59599516SKenneth E. Jansenc 395*59599516SKenneth E. Jansen! See comment above. Now we are eliminating the 2nd and 1st column then 396*59599516SKenneth E. Jansen! same rows of 397*59599516SKenneth E. Jansen! the block-9 matrix 398*59599516SKenneth E. Jansen! 1 2 3 399*59599516SKenneth E. Jansen! 4 5 6 400*59599516SKenneth E. Jansen! 7 8 9 401*59599516SKenneth E. Jansenc 402*59599516SKenneth E. Jansenc adjusting the 3rd column for the eventual removal of the first and second 403*59599516SKenneth E. Jansenc column of the block-9 submatrix 404*59599516SKenneth E. Jansenc 405*59599516SKenneth E. Jansen irem1=1 406*59599516SKenneth E. Jansen irem2=irem1+3 407*59599516SKenneth E. Jansen irem3=irem2+3 408*59599516SKenneth E. Jansen 409*59599516SKenneth E. Jansen ire21=2 410*59599516SKenneth E. Jansen ire22=ire21+3 411*59599516SKenneth E. Jansen ire23=ire22+3 412*59599516SKenneth E. Jansen 413*59599516SKenneth E. Jansen iadj1=3 414*59599516SKenneth E. Jansen iadj2=iadj1+3 415*59599516SKenneth E. Jansen iadj3=iadj2+3 416*59599516SKenneth E. Jansen do i = 1, nshl 417*59599516SKenneth E. Jansen xKebe(iel,iadj1,i,inod) = xKebe(iel,iadj1,i,inod) 418*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem1,i,inod) 419*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire21,i,inod) 420*59599516SKenneth E. Jansen xKebe(iel,iadj2,i,inod) = xKebe(iel,iadj2,i,inod) 421*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem2,i,inod) 422*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire22,i,inod) 423*59599516SKenneth E. Jansen xKebe(iel,iadj3,i,inod) = xKebe(iel,iadj3,i,inod) 424*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem3,i,inod) 425*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire23,i,inod) 426*59599516SKenneth E. Jansen 427*59599516SKenneth E. Jansen! Status of the block-9 matrix 428*59599516SKenneth E. Jansen! 1 2 3' 429*59599516SKenneth E. Jansen! 4 5 6' 430*59599516SKenneth E. Jansen! 7 8 9' 431*59599516SKenneth E. Jansen enddo 432*59599516SKenneth E. Jansen do i=1,nshl 433*59599516SKenneth E. Jansenc 434*59599516SKenneth E. Jansenc done with the first and second columns_block-9 for columns AND rows of nshl 435*59599516SKenneth E. Jansenc 436*59599516SKenneth E. Jansen 437*59599516SKenneth E. Jansen xKebe(iel,irem1,i,inod) = zero 438*59599516SKenneth E. Jansen xKebe(iel,irem2,i,inod) = zero 439*59599516SKenneth E. Jansen xKebe(iel,irem3,i,inod) = zero 440*59599516SKenneth E. Jansen 441*59599516SKenneth E. Jansen xKebe(iel,ire21,i,inod) = zero 442*59599516SKenneth E. Jansen xKebe(iel,ire22,i,inod) = zero 443*59599516SKenneth E. Jansen xKebe(iel,ire23,i,inod) = zero 444*59599516SKenneth E. Jansen 445*59599516SKenneth E. Jansen! Status of the block-9 matrix 446*59599516SKenneth E. Jansen! 0 0 3' 447*59599516SKenneth E. Jansen! 0 0 6' 448*59599516SKenneth E. Jansen! 0 0 9' 449*59599516SKenneth E. Jansen 450*59599516SKenneth E. Jansen enddo 451*59599516SKenneth E. Jansenc 452*59599516SKenneth E. Jansenc now adjust the 3rd row_block-9 for EACH row nshl for EACH element 453*59599516SKenneth E. Jansenc 454*59599516SKenneth E. Jansen 455*59599516SKenneth E. Jansen iadj1=7 456*59599516SKenneth E. Jansen iadj2=iadj1+1 457*59599516SKenneth E. Jansen iadj3=iadj2+1 458*59599516SKenneth E. Jansen irem1=1 459*59599516SKenneth E. Jansen irem2=irem1+1 460*59599516SKenneth E. Jansen irem3=irem2+1 461*59599516SKenneth E. Jansen ire21=4 462*59599516SKenneth E. Jansen ire22=ire21+1 463*59599516SKenneth E. Jansen ire23=ire22+1 464*59599516SKenneth E. Jansen do i = 1, nshl 465*59599516SKenneth E. Jansen xKebe(iel,iadj1,inod,i) = xKebe(iel,iadj1,inod,i) 466*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem1,inod,i) 467*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire21,inod,i) 468*59599516SKenneth E. Jansen xKebe(iel,iadj2,inod,i) = xKebe(iel,iadj2,inod,i) 469*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem2,inod,i) 470*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire22,inod,i) 471*59599516SKenneth E. Jansen xKebe(iel,iadj3,inod,i) = xKebe(iel,iadj3,inod,i) 472*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem3,inod,i) 473*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire23,inod,i) 474*59599516SKenneth E. Jansen 475*59599516SKenneth E. Jansen 476*59599516SKenneth E. Jansen! Status of the block-9 matrix 477*59599516SKenneth E. Jansen! 0 0 3' 478*59599516SKenneth E. Jansen! 0 0 6' 479*59599516SKenneth E. Jansen! 0 0 9'' 480*59599516SKenneth E. Jansen enddo 481*59599516SKenneth E. Jansen do i=1,nshl 482*59599516SKenneth E. Jansen xKebe(iel,irem1,inod,i) = zero 483*59599516SKenneth E. Jansen xKebe(iel,irem2,inod,i) = zero 484*59599516SKenneth E. Jansen xKebe(iel,irem3,inod,i) = zero 485*59599516SKenneth E. Jansen 486*59599516SKenneth E. Jansen xKebe(iel,ire21,inod,i) = zero 487*59599516SKenneth E. Jansen xKebe(iel,ire22,inod,i) = zero 488*59599516SKenneth E. Jansen xKebe(iel,ire23,inod,i) = zero 489*59599516SKenneth E. Jansen 490*59599516SKenneth E. Jansen! Status of the block-9 matrix 491*59599516SKenneth E. Jansen! 0 0 0 492*59599516SKenneth E. Jansen! 0 0 0 493*59599516SKenneth E. Jansen! 0 0 9'' 494*59599516SKenneth E. Jansen 495*59599516SKenneth E. Jansen enddo 496*59599516SKenneth E. Jansen xKebe(iel,1,inod,inod)=one 497*59599516SKenneth E. Jansen xKebe(iel,5,inod,inod)=one 498*59599516SKenneth E. Jansen endif 499*59599516SKenneth E. Jansenc 500*59599516SKenneth E. Jansenc.... x1-velocity and x3-velocity 501*59599516SKenneth E. Jansenc 502*59599516SKenneth E. Jansen if ( ibits(iBC(in),3,3) .eq. 5 ) then 503*59599516SKenneth E. Jansenc 504*59599516SKenneth E. Jansen! See comment above. Now we are eliminating the 1 and 3 column then 505*59599516SKenneth E. Jansen! same rows of 506*59599516SKenneth E. Jansen! the block-9 matrix 507*59599516SKenneth E. Jansen! 1 2 3 508*59599516SKenneth E. Jansen! 4 5 6 509*59599516SKenneth E. Jansen! 7 8 9 510*59599516SKenneth E. Jansenc 511*59599516SKenneth E. Jansenc adjusting the 3rd column for the eventual removal of the first and second 512*59599516SKenneth E. Jansenc column of the block-9 submatrix 513*59599516SKenneth E. Jansenc 514*59599516SKenneth E. Jansen irem1=1 515*59599516SKenneth E. Jansen irem2=irem1+3 516*59599516SKenneth E. Jansen irem3=irem2+3 517*59599516SKenneth E. Jansen 518*59599516SKenneth E. Jansen ire21=3 519*59599516SKenneth E. Jansen ire22=ire21+3 520*59599516SKenneth E. Jansen ire23=ire22+3 521*59599516SKenneth E. Jansen 522*59599516SKenneth E. Jansen iadj1=2 523*59599516SKenneth E. Jansen iadj2=iadj1+3 524*59599516SKenneth E. Jansen iadj3=iadj2+3 525*59599516SKenneth E. Jansen do i = 1, nshl 526*59599516SKenneth E. Jansen xKebe(iel,iadj1,i,inod) = xKebe(iel,iadj1,i,inod) 527*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem1,i,inod) 528*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire21,i,inod) 529*59599516SKenneth E. Jansen xKebe(iel,iadj2,i,inod) = xKebe(iel,iadj2,i,inod) 530*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem2,i,inod) 531*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire22,i,inod) 532*59599516SKenneth E. Jansen xKebe(iel,iadj3,i,inod) = xKebe(iel,iadj3,i,inod) 533*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem3,i,inod) 534*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire23,i,inod) 535*59599516SKenneth E. Jansen 536*59599516SKenneth E. Jansen enddo 537*59599516SKenneth E. Jansen do i=1,nshl 538*59599516SKenneth E. Jansenc 539*59599516SKenneth E. Jansenc done with the first and third columns_block-9 for columns AND rows of nshl 540*59599516SKenneth E. Jansenc 541*59599516SKenneth E. Jansen xKebe(iel,irem1,i,inod) = zero 542*59599516SKenneth E. Jansen xKebe(iel,irem2,i,inod) = zero 543*59599516SKenneth E. Jansen xKebe(iel,irem3,i,inod) = zero 544*59599516SKenneth E. Jansen 545*59599516SKenneth E. Jansen xKebe(iel,ire21,i,inod) = zero 546*59599516SKenneth E. Jansen xKebe(iel,ire22,i,inod) = zero 547*59599516SKenneth E. Jansen xKebe(iel,ire23,i,inod) = zero 548*59599516SKenneth E. Jansen enddo 549*59599516SKenneth E. Jansenc 550*59599516SKenneth E. Jansenc now adjust the 2nd row_block-9 for EACH row nshl for EACH element 551*59599516SKenneth E. Jansenc 552*59599516SKenneth E. Jansen 553*59599516SKenneth E. Jansen iadj1=4 554*59599516SKenneth E. Jansen iadj2=iadj1+1 555*59599516SKenneth E. Jansen iadj3=iadj2+1 556*59599516SKenneth E. Jansen irem1=1 557*59599516SKenneth E. Jansen irem2=irem1+1 558*59599516SKenneth E. Jansen irem3=irem2+1 559*59599516SKenneth E. Jansen ire21=7 560*59599516SKenneth E. Jansen ire22=ire21+1 561*59599516SKenneth E. Jansen ire23=ire22+1 562*59599516SKenneth E. Jansen do i = 1, nshl 563*59599516SKenneth E. Jansen xKebe(iel,iadj1,inod,i) = xKebe(iel,iadj1,inod,i) 564*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem1,inod,i) 565*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire21,inod,i) 566*59599516SKenneth E. Jansen xKebe(iel,iadj2,inod,i) = xKebe(iel,iadj2,inod,i) 567*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem2,inod,i) 568*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire22,inod,i) 569*59599516SKenneth E. Jansen xKebe(iel,iadj3,inod,i) = xKebe(iel,iadj3,inod,i) 570*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem3,inod,i) 571*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire23,inod,i) 572*59599516SKenneth E. Jansen 573*59599516SKenneth E. Jansen enddo 574*59599516SKenneth E. Jansen do i=1,nshl 575*59599516SKenneth E. Jansen xKebe(iel,irem1,inod,i) = zero 576*59599516SKenneth E. Jansen xKebe(iel,irem2,inod,i) = zero 577*59599516SKenneth E. Jansen xKebe(iel,irem3,inod,i) = zero 578*59599516SKenneth E. Jansen 579*59599516SKenneth E. Jansen xKebe(iel,ire21,inod,i) = zero 580*59599516SKenneth E. Jansen xKebe(iel,ire22,inod,i) = zero 581*59599516SKenneth E. Jansen xKebe(iel,ire23,inod,i) = zero 582*59599516SKenneth E. Jansen 583*59599516SKenneth E. Jansen enddo 584*59599516SKenneth E. Jansen xKebe(iel,1,inod,inod)=one 585*59599516SKenneth E. Jansen xKebe(iel,9,inod,inod)=one 586*59599516SKenneth E. Jansen endif 587*59599516SKenneth E. Jansenc 588*59599516SKenneth E. Jansenc.... x2-velocity and x3-velocity 589*59599516SKenneth E. Jansenc 590*59599516SKenneth E. Jansen if ( ibits(iBC(in),3,3) .eq. 6 ) then 591*59599516SKenneth E. Jansenc 592*59599516SKenneth E. Jansen! See comment above. Now we are eliminating the 2nd and 3rd column then 593*59599516SKenneth E. Jansen! same rows of 594*59599516SKenneth E. Jansen! the block-9 matrix 595*59599516SKenneth E. Jansen! 1 2 3 596*59599516SKenneth E. Jansen! 4 5 6 597*59599516SKenneth E. Jansen! 7 8 9 598*59599516SKenneth E. Jansenc 599*59599516SKenneth E. Jansenc adjusting the 3rd column for the eventual removal of the first and second 600*59599516SKenneth E. Jansenc column of the block-9 submatrix 601*59599516SKenneth E. Jansenc 602*59599516SKenneth E. Jansen irem1=2 603*59599516SKenneth E. Jansen irem2=irem1+3 604*59599516SKenneth E. Jansen irem3=irem2+3 605*59599516SKenneth E. Jansen 606*59599516SKenneth E. Jansen ire21=3 607*59599516SKenneth E. Jansen ire22=ire21+3 608*59599516SKenneth E. Jansen ire23=ire22+3 609*59599516SKenneth E. Jansen 610*59599516SKenneth E. Jansen iadj1=1 611*59599516SKenneth E. Jansen iadj2=iadj1+3 612*59599516SKenneth E. Jansen iadj3=iadj2+3 613*59599516SKenneth E. Jansen do i = 1, nshl 614*59599516SKenneth E. Jansen xKebe(iel,iadj1,i,inod) = xKebe(iel,iadj1,i,inod) 615*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem1,i,inod) 616*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire21,i,inod) 617*59599516SKenneth E. Jansen xKebe(iel,iadj2,i,inod) = xKebe(iel,iadj2,i,inod) 618*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem2,i,inod) 619*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire22,i,inod) 620*59599516SKenneth E. Jansen xKebe(iel,iadj3,i,inod) = xKebe(iel,iadj3,i,inod) 621*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem3,i,inod) 622*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire23,i,inod) 623*59599516SKenneth E. Jansen enddo 624*59599516SKenneth E. Jansen do i=1,nshl 625*59599516SKenneth E. Jansen 626*59599516SKenneth E. Jansenc 627*59599516SKenneth E. Jansenc done with the first and second columns_block-9 for columns AND rows of nshl 628*59599516SKenneth E. Jansenc 629*59599516SKenneth E. Jansen xKebe(iel,irem1,i,inod) = zero 630*59599516SKenneth E. Jansen xKebe(iel,irem2,i,inod) = zero 631*59599516SKenneth E. Jansen xKebe(iel,irem3,i,inod) = zero 632*59599516SKenneth E. Jansen 633*59599516SKenneth E. Jansen xKebe(iel,ire21,i,inod) = zero 634*59599516SKenneth E. Jansen xKebe(iel,ire22,i,inod) = zero 635*59599516SKenneth E. Jansen xKebe(iel,ire23,i,inod) = zero 636*59599516SKenneth E. Jansen 637*59599516SKenneth E. Jansen enddo 638*59599516SKenneth E. Jansenc 639*59599516SKenneth E. Jansenc now adjust the 3rd row_block-9 for EACH row nshl for EACH element 640*59599516SKenneth E. Jansenc 641*59599516SKenneth E. Jansen 642*59599516SKenneth E. Jansen iadj1=1 643*59599516SKenneth E. Jansen iadj2=iadj1+1 644*59599516SKenneth E. Jansen iadj3=iadj2+1 645*59599516SKenneth E. Jansen irem1=4 646*59599516SKenneth E. Jansen irem2=irem1+1 647*59599516SKenneth E. Jansen irem3=irem2+1 648*59599516SKenneth E. Jansen ire21=7 649*59599516SKenneth E. Jansen ire22=ire21+1 650*59599516SKenneth E. Jansen ire23=ire22+1 651*59599516SKenneth E. Jansen do i = 1, nshl 652*59599516SKenneth E. Jansen xKebe(iel,iadj1,inod,i) = xKebe(iel,iadj1,inod,i) 653*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem1,inod,i) 654*59599516SKenneth E. Jansen xKebe(iel,iadj2,inod,i) = xKebe(iel,iadj2,inod,i) 655*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem2,inod,i) 656*59599516SKenneth E. Jansen xKebe(iel,iadj3,inod,i) = xKebe(iel,iadj3,inod,i) 657*59599516SKenneth E. Jansen & - BC(in,4) * xKebe(iel,irem3,inod,i) 658*59599516SKenneth E. Jansen & - BC(in,6) * xKebe(iel,ire23,inod,i) 659*59599516SKenneth E. Jansen 660*59599516SKenneth E. Jansen enddo 661*59599516SKenneth E. Jansen do i=1,nshl 662*59599516SKenneth E. Jansen xKebe(iel,irem1,inod,i) = zero 663*59599516SKenneth E. Jansen xKebe(iel,irem2,inod,i) = zero 664*59599516SKenneth E. Jansen xKebe(iel,irem3,inod,i) = zero 665*59599516SKenneth E. Jansen 666*59599516SKenneth E. Jansenc 667*59599516SKenneth E. Jansen xKebe(iel,ire21,inod,i) = zero 668*59599516SKenneth E. Jansen xKebe(iel,ire22,inod,i) = zero 669*59599516SKenneth E. Jansen xKebe(iel,ire23,inod,i) = zero 670*59599516SKenneth E. Jansen 671*59599516SKenneth E. Jansen enddo 672*59599516SKenneth E. Jansen xKebe(iel,5,inod,inod)=one 673*59599516SKenneth E. Jansen xKebe(iel,9,inod,inod)=one 674*59599516SKenneth E. Jansen endif 675*59599516SKenneth E. Jansen 676*59599516SKenneth E. Jansen 5000 continue 677*59599516SKenneth E. Jansen 678*59599516SKenneth E. Jansenc 679*59599516SKenneth E. Jansenc.... end loop over shape functions (nodes) 680*59599516SKenneth E. Jansenc 681*59599516SKenneth E. Jansen enddo 682*59599516SKenneth E. Jansenc 683*59599516SKenneth E. Jansenc.... end loop over elements 684*59599516SKenneth E. Jansenc 685*59599516SKenneth E. Jansen enddo 686*59599516SKenneth E. Jansenc 687*59599516SKenneth E. Jansenc These elements should assemble to a matrix with the rows and columns 688*59599516SKenneth E. Jansenc associated with the Dirichlet nodes zeroed out. Note that BC3 Diag 689*59599516SKenneth E. Jansenc 690*59599516SKenneth E. Jansenc 691*59599516SKenneth E. Jansenc.... return 692*59599516SKenneth E. Jansenc 693*59599516SKenneth E. Jansen return 694*59599516SKenneth E. Jansen end 695