xref: /phasta/phSolver/incompressible/bc3per.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
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