xref: /phasta/phSolver/common/genibc.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine geniBC (iBC)
2*59599516SKenneth E. Jansenc
3*59599516SKenneth E. Jansenc----------------------------------------------------------------------
4*59599516SKenneth E. Jansenc This routine reads the boundary condition codes.
5*59599516SKenneth E. Jansenc
6*59599516SKenneth E. Jansenc output:
7*59599516SKenneth E. Jansenc  iBC   (nshg)        : Boundary Condition code
8*59599516SKenneth E. Jansenc
9*59599516SKenneth E. Jansenc         = 1 * iBC_1 + 2 * iBC_2 + 4 * iBC_3
10*59599516SKenneth E. Jansenc              density   temperature   pressure
11*59599516SKenneth E. Jansenc
12*59599516SKenneth E. Jansenc    if nsd = 3:
13*59599516SKenneth E. Jansenc
14*59599516SKenneth E. Jansenc        +  8 * iBC_4 +  16 * iBC_5 +  32 * iBC_6
15*59599516SKenneth E. Jansenc           x1-velocity   x2-velocity   x3-velocity
16*59599516SKenneth E. Jansenc
17*59599516SKenneth E. Jansenc        + 64 * iBC_7 + 128 * iBC_8 + 256 * iBC_9 + 512 * iBC_10
18*59599516SKenneth E. Jansenc          sclr1         sclr2        sclr3         sclr4
19*59599516SKenneth E. Jansenc
20*59599516SKenneth E. Jansenc        + 1024 * iBC_11  + 2048* iBC_12 + 4096* iBC_13 + 8192* iBC_14
21*59599516SKenneth E. Jansenc          perioidicity     spebc          axisym         deformwall
22*59599516SKenneth E. Jansenc
23*59599516SKenneth E. Jansenc  nBC   (nshg)        : Boundary Condition mapping array
24*59599516SKenneth E. Jansenc
25*59599516SKenneth E. Jansenc
26*59599516SKenneth E. Jansenc Farzin Shakib, Winter 1986.
27*59599516SKenneth E. Jansenc Zdenek Johan,  Winter 1991.  (Fortran 90)
28*59599516SKenneth E. Jansenc----------------------------------------------------------------------
29*59599516SKenneth E. Jansenc
30*59599516SKenneth E. Jansenc
31*59599516SKenneth E. Jansen        use readarrays          ! used to access iBCtmp
32*59599516SKenneth E. Jansen        use pointer_data
33*59599516SKenneth E. Jansen        include "common.h"
34*59599516SKenneth E. Jansenc
35*59599516SKenneth E. Jansenc Arrays in the following 1 line are now dimensioned in readnblk
36*59599516SKenneth E. Jansenc        dimension iBCtmp(numpbc)
37*59599516SKenneth E. Jansenc
38*59599516SKenneth E. Jansen        dimension iBC(nshg)
39*59599516SKenneth E. Jansen        dimension itemp(6)
40*59599516SKenneth E. Jansen        integer, allocatable :: iBCpart(:)
41*59599516SKenneth E. Jansenc
42*59599516SKenneth E. Jansenc.... set the iBC array
43*59599516SKenneth E. Jansenc
44*59599516SKenneth E. Jansen        iBC = 0
45*59599516SKenneth E. Jansenc
46*59599516SKenneth E. Jansen        if(numpbc.eq.0) goto 9999  ! sometimes there are no BC's on a partition
47*59599516SKenneth E. Jansen        where (nBC(:) .ne. 0) iBC(:) = iBCtmp(nBC(:))
48*59599516SKenneth E. Jansenc
49*59599516SKenneth E. Jansenc.... echo the input iBC array only if other than zero
50*59599516SKenneth E. Jansenc
51*59599516SKenneth E. Jansen        if (necho .lt. 3) then
52*59599516SKenneth E. Jansen          nn = 0
53*59599516SKenneth E. Jansen          do n = 1, nshg
54*59599516SKenneth E. Jansen            if (nBC(n) .ne. 0) then
55*59599516SKenneth E. Jansen              nb = nBC(n)
56*59599516SKenneth E. Jansen              nn = nn + 1
57*59599516SKenneth E. Jansen              if (mod(nn,50).eq.1) write(iecho,1000)ititle,(j,j=1,ndof)
58*59599516SKenneth E. Jansen              itemp(   1) = mod(iBCtmp(nb)   ,2) - mod(iBCtmp(nb)/ 4,2)
59*59599516SKenneth E. Jansen              itemp(   2) = mod(iBCtmp(nb)/ 8,2)
60*59599516SKenneth E. Jansen              itemp(   3) = mod(iBCtmp(nb)/16,2)
61*59599516SKenneth E. Jansen              itemp(   4) = mod(iBCtmp(nb)/32,2)
62*59599516SKenneth E. Jansen              itemp(ndof) = mod(iBCtmp(nb)/ 2,2)
63*59599516SKenneth E. Jansen              write(iecho,1100) n,(itemp(i),i=1,ndof)
64*59599516SKenneth E. Jansen            endif
65*59599516SKenneth E. Jansen          enddo
66*59599516SKenneth E. Jansen        endif
67*59599516SKenneth E. Jansen        deallocate(iBCtmp)
68*59599516SKenneth E. Jansen
69*59599516SKenneth E. Jansenc
70*59599516SKenneth E. Jansenc.... for deformable wall case update iBC from iBCB information
71*59599516SKenneth E. Jansenc
72*59599516SKenneth E. Jansen
73*59599516SKenneth E. Jansen9999   if(ideformwall.eq.1) then
74*59599516SKenneth E. Jansen          allocate (iBCpart(nshg))
75*59599516SKenneth E. Jansen          iBCpart = 0
76*59599516SKenneth E. Jansen          do iblk = 1, nelblb
77*59599516SKenneth E. Jansen             iel    = lcblkb(1,iblk)
78*59599516SKenneth E. Jansen             iorder = lcblkb(4,iblk)
79*59599516SKenneth E. Jansen             nenl   = lcblkb(5,iblk) ! no. of vertices per element
80*59599516SKenneth E. Jansen             nenbl  = lcblkb(6,iblk) ! no. of vertices per bdry. face
81*59599516SKenneth E. Jansen             nshl   = lcblkb(9,iblk)
82*59599516SKenneth E. Jansen             nshlb  = lcblkb(10,iblk)
83*59599516SKenneth E. Jansen             npro   = lcblkb(1,iblk+1) - iel
84*59599516SKenneth E. Jansen             call iBCupdate(iBCpart,  mienb(iblk)%p,   miBCB(iblk)%p)
85*59599516SKenneth E. Jansen          enddo
86*59599516SKenneth E. Jansen          iBC = iBC + iBCpart
87*59599516SKenneth E. Jansen          deallocate(iBCpart)
88*59599516SKenneth E. Jansen       endif
89*59599516SKenneth E. Jansen
90*59599516SKenneth E. Jansen
91*59599516SKenneth E. Jansen
92*59599516SKenneth E. Jansenc
93*59599516SKenneth E. Jansenc.... return
94*59599516SKenneth E. Jansenc
95*59599516SKenneth E. Jansen        return
96*59599516SKenneth E. Jansenc
97*59599516SKenneth E. Jansenc.... end of file error handling
98*59599516SKenneth E. Jansenc
99*59599516SKenneth E. Jansen999     call error ('geniBC  ','end file',ibndc)
100*59599516SKenneth E. Jansenc
101*59599516SKenneth E. Jansen1000    format(a80,//,
102*59599516SKenneth E. Jansen     &  ' N o d a l   B o u n d a r y   C o n d i t i o n   C o d e',//,
103*59599516SKenneth E. Jansen     &  '    Node   ',13x,6('dof',i1,:,6x))
104*59599516SKenneth E. Jansen1100    format(2x,i5,10x,5i10)
105*59599516SKenneth E. Jansenc
106*59599516SKenneth E. Jansen        end
107