1*59599516SKenneth E. Jansen subroutine bc3per (iBC, res, iper, ilwork,nQs) 2*59599516SKenneth E. Jansenc 3*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 4*59599516SKenneth E. Jansenc 5*59599516SKenneth E. Jansenc This routine satisfies the BC of the periodic nodes after Ap product 6*59599516SKenneth E. Jansenc 7*59599516SKenneth E. Jansenc input: 8*59599516SKenneth E. Jansenc iBC (nshg) : Boundary Condition Code 9*59599516SKenneth E. Jansenc iper (nshg) : partners of periodic nodes 10*59599516SKenneth E. Jansenc res (nshg,nQs) : residual before BC is applied 11*59599516SKenneth E. Jansenc 12*59599516SKenneth E. Jansenc output: 13*59599516SKenneth E. Jansenc res (nshg,nQs) : residual after satisfaction of BC 14*59599516SKenneth E. Jansenc 15*59599516SKenneth E. Jansenc 16*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1998. 17*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 18*59599516SKenneth E. Jansenc 19*59599516SKenneth E. Jansen use periodicity ! this gives you rcount(1:nshg) (real*8) 20*59599516SKenneth E. Jansen include "common.h" 21*59599516SKenneth E. Jansenc 22*59599516SKenneth E. Jansen dimension iBC(nshg), 23*59599516SKenneth E. Jansen & res(nshg,nQs), ilwork(nlwork), 24*59599516SKenneth E. Jansen & iper(nshg) 25*59599516SKenneth E. Jansenc 26*59599516SKenneth E. Jansenc.... local periodic (and axisymmetric) boundary conditions (no communications) 27*59599516SKenneth E. Jansenc 28*59599516SKenneth E. Jansen do j = 1,nshg 29*59599516SKenneth E. Jansen if ((btest(iBC(j),10)) .or. (btest(iBC(j),12))) then 30*59599516SKenneth E. Jansen i = iper(j) 31*59599516SKenneth E. Jansen res(i,:) = res(i,:) + res(j,:) 32*59599516SKenneth E. Jansen res(j,:) = zero 33*59599516SKenneth E. Jansen endif 34*59599516SKenneth E. Jansen enddo 35*59599516SKenneth E. Jansen 36*59599516SKenneth E. Jansen 37*59599516SKenneth E. Jansen if(numpe.gt.1) then 38*59599516SKenneth E. Jansenc 39*59599516SKenneth E. Jansenc.... nodes treated on another processor are eliminated 40*59599516SKenneth E. Jansenc 41*59599516SKenneth E. Jansen numtask = ilwork(1) 42*59599516SKenneth E. Jansen itkbeg = 1 43*59599516SKenneth E. Jansen 44*59599516SKenneth E. Jansen do itask = 1, numtask 45*59599516SKenneth E. Jansen 46*59599516SKenneth E. Jansen iacc = ilwork (itkbeg + 2) 47*59599516SKenneth E. Jansen numseg = ilwork (itkbeg + 4) 48*59599516SKenneth E. Jansen 49*59599516SKenneth E. Jansen if (iacc .eq. 0) then 50*59599516SKenneth E. Jansen do is = 1,numseg 51*59599516SKenneth E. Jansen isgbeg = ilwork (itkbeg + 3 + 2*is) 52*59599516SKenneth E. Jansen lenseg = ilwork (itkbeg + 4 + 2*is) 53*59599516SKenneth E. Jansen isgend = isgbeg + lenseg - 1 54*59599516SKenneth E. Jansen res(isgbeg:isgend,:) = zero 55*59599516SKenneth E. Jansen enddo 56*59599516SKenneth E. Jansen endif 57*59599516SKenneth E. Jansen 58*59599516SKenneth E. Jansen itkbeg = itkbeg + 4 + 2*numseg 59*59599516SKenneth E. Jansen 60*59599516SKenneth E. Jansen enddo 61*59599516SKenneth E. Jansen endif 62*59599516SKenneth E. Jansenc 63*59599516SKenneth E. Jansenc.... return 64*59599516SKenneth E. Jansenc 65*59599516SKenneth E. Jansen return 66*59599516SKenneth E. Jansen end 67*59599516SKenneth E. Jansen 68*59599516SKenneth E. Jansen 69*59599516SKenneth E. Jansen 70*59599516SKenneth E. Jansen 71*59599516SKenneth E. Jansen 72