xref: /phasta/phSolver/common/genibc.f (revision f538fcd778ea5650efdc14c814a10ac273910115)
159599516SKenneth E. Jansen        subroutine geniBC (iBC)
259599516SKenneth E. Jansenc
359599516SKenneth E. Jansenc----------------------------------------------------------------------
459599516SKenneth E. Jansenc This routine reads the boundary condition codes.
559599516SKenneth E. Jansenc
659599516SKenneth E. Jansenc output:
759599516SKenneth E. Jansenc  iBC   (nshg)        : Boundary Condition code
859599516SKenneth E. Jansenc
959599516SKenneth E. Jansenc         = 1 * iBC_1 + 2 * iBC_2 + 4 * iBC_3
1059599516SKenneth E. Jansenc              density   temperature   pressure
1159599516SKenneth E. Jansenc
1259599516SKenneth E. Jansenc    if nsd = 3:
1359599516SKenneth E. Jansenc
1459599516SKenneth E. Jansenc        +  8 * iBC_4 +  16 * iBC_5 +  32 * iBC_6
1559599516SKenneth E. Jansenc           x1-velocity   x2-velocity   x3-velocity
1659599516SKenneth E. Jansenc
1759599516SKenneth E. Jansenc        + 64 * iBC_7 + 128 * iBC_8 + 256 * iBC_9 + 512 * iBC_10
1859599516SKenneth E. Jansenc          sclr1         sclr2        sclr3         sclr4
1959599516SKenneth E. Jansenc
2059599516SKenneth E. Jansenc        + 1024 * iBC_11  + 2048* iBC_12 + 4096* iBC_13 + 8192* iBC_14
2159599516SKenneth E. Jansenc          perioidicity     spebc          axisym         deformwall
2259599516SKenneth E. Jansenc
2359599516SKenneth E. Jansenc  nBC   (nshg)        : Boundary Condition mapping array
2459599516SKenneth E. Jansenc
2559599516SKenneth E. Jansenc
2659599516SKenneth E. Jansenc Farzin Shakib, Winter 1986.
2759599516SKenneth E. Jansenc Zdenek Johan,  Winter 1991.  (Fortran 90)
2859599516SKenneth E. Jansenc----------------------------------------------------------------------
2959599516SKenneth E. Jansenc
3059599516SKenneth E. Jansenc
3159599516SKenneth E. Jansen        use readarrays          ! used to access iBCtmp
3259599516SKenneth E. Jansen        use pointer_data
3359599516SKenneth E. Jansen        include "common.h"
3459599516SKenneth E. Jansenc
3559599516SKenneth E. Jansenc Arrays in the following 1 line are now dimensioned in readnblk
3659599516SKenneth E. Jansenc        dimension iBCtmp(numpbc)
3759599516SKenneth E. Jansenc
3859599516SKenneth E. Jansen        dimension iBC(nshg)
3959599516SKenneth E. Jansen        dimension itemp(6)
4059599516SKenneth E. Jansen        integer, allocatable :: iBCpart(:)
4159599516SKenneth E. Jansenc
4259599516SKenneth E. Jansenc.... set the iBC array
4359599516SKenneth E. Jansenc
4459599516SKenneth E. Jansen        iBC = 0
4559599516SKenneth E. Jansenc
4659599516SKenneth E. Jansen        if(numpbc.eq.0) goto 9999  ! sometimes there are no BC's on a partition
4759599516SKenneth E. Jansen        where (nBC(:) .ne. 0) iBC(:) = iBCtmp(nBC(:))
4859599516SKenneth E. Jansenc
4959599516SKenneth E. Jansenc.... echo the input iBC array only if other than zero
5059599516SKenneth E. Jansenc
5159599516SKenneth E. Jansen        if (necho .lt. 3) then
5259599516SKenneth E. Jansen          nn = 0
5359599516SKenneth E. Jansen          do n = 1, nshg
5459599516SKenneth E. Jansen            if (nBC(n) .ne. 0) then
5559599516SKenneth E. Jansen              nb = nBC(n)
5659599516SKenneth E. Jansen              nn = nn + 1
5759599516SKenneth E. Jansen              if (mod(nn,50).eq.1) write(iecho,1000)ititle,(j,j=1,ndof)
5859599516SKenneth E. Jansen              itemp(   1) = mod(iBCtmp(nb)   ,2) - mod(iBCtmp(nb)/ 4,2)
5959599516SKenneth E. Jansen              itemp(   2) = mod(iBCtmp(nb)/ 8,2)
6059599516SKenneth E. Jansen              itemp(   3) = mod(iBCtmp(nb)/16,2)
6159599516SKenneth E. Jansen              itemp(   4) = mod(iBCtmp(nb)/32,2)
6259599516SKenneth E. Jansen              itemp(ndof) = mod(iBCtmp(nb)/ 2,2)
6359599516SKenneth E. Jansen              write(iecho,1100) n,(itemp(i),i=1,ndof)
6459599516SKenneth E. Jansen            endif
6559599516SKenneth E. Jansen          enddo
6659599516SKenneth E. Jansen        endif
6759599516SKenneth E. Jansen
6859599516SKenneth E. Jansenc
6959599516SKenneth E. Jansenc.... for deformable wall case update iBC from iBCB information
7059599516SKenneth E. Jansenc
7159599516SKenneth E. Jansen
7259599516SKenneth E. Jansen9999   if(ideformwall.eq.1) then
7359599516SKenneth E. Jansen          allocate (iBCpart(nshg))
7459599516SKenneth E. Jansen          iBCpart = 0
7559599516SKenneth E. Jansen          do iblk = 1, nelblb
7659599516SKenneth E. Jansen             iel    = lcblkb(1,iblk)
7759599516SKenneth E. Jansen             iorder = lcblkb(4,iblk)
7859599516SKenneth E. Jansen             nenl   = lcblkb(5,iblk) ! no. of vertices per element
7959599516SKenneth E. Jansen             nenbl  = lcblkb(6,iblk) ! no. of vertices per bdry. face
8059599516SKenneth E. Jansen             nshl   = lcblkb(9,iblk)
8159599516SKenneth E. Jansen             nshlb  = lcblkb(10,iblk)
8259599516SKenneth E. Jansen             npro   = lcblkb(1,iblk+1) - iel
8359599516SKenneth E. Jansen             call iBCupdate(iBCpart,  mienb(iblk)%p,   miBCB(iblk)%p)
8459599516SKenneth E. Jansen          enddo
8559599516SKenneth E. Jansen          iBC = iBC + iBCpart
8659599516SKenneth E. Jansen          deallocate(iBCpart)
8759599516SKenneth E. Jansen       endif
8859599516SKenneth E. Jansen
89*f538fcd7SKenneth E. Jansen        deallocate(iBCtmp)
90*f538fcd7SKenneth E. Jansen
9159599516SKenneth E. Jansen
9259599516SKenneth E. Jansen
9359599516SKenneth E. Jansenc
9459599516SKenneth E. Jansenc.... return
9559599516SKenneth E. Jansenc
9659599516SKenneth E. Jansen        return
9759599516SKenneth E. Jansenc
9859599516SKenneth E. Jansenc.... end of file error handling
9959599516SKenneth E. Jansenc
10059599516SKenneth E. Jansen999     call error ('geniBC  ','end file',ibndc)
10159599516SKenneth E. Jansenc
10259599516SKenneth E. Jansen1000    format(a80,//,
10359599516SKenneth 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',//,
10459599516SKenneth E. Jansen     &  '    Node   ',13x,6('dof',i1,:,6x))
10559599516SKenneth E. Jansen1100    format(2x,i5,10x,5i10)
10659599516SKenneth E. Jansenc
10759599516SKenneth E. Jansen        end
108