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