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