copyright (C) 2001  MSC-RPN COMM  %%%MC2%%%

      subroutine filbo (f,bcs,bcn,bcw,bce,grid,lminx,lmaxx,lminy,lmaxy, 7
     $      lminxs,lmaxxs,lminys,lmaxys,lminxw,lmaxxw,lminyw,lmaxyw,lnk)
      implicit none
*
      character*1 grid
      integer lminx,lmaxx,lminy,lmaxy,lminxs,lmaxxs,lminys,lmaxys,
     $        lminxw,lmaxxw,lminyw,lmaxyw,lnk
      real f(lminx:lmaxx,lminy:lmaxy,lnk)
      real bcs(lminxs:lmaxxs,lminys:lmaxys,*),
     $     bcn(lminxs:lmaxxs,lminys:lmaxys,*),
     $     bcw(lminxw:lmaxxw,lminyw:lmaxyw,*),
     $     bce(lminxw:lmaxxw,lminyw:lmaxyw,*)
*
#include "lcldim.cdk"
#include "bcsdim.cdk"
#include "partopo.cdk"
      integer i,j,k,inorth,ieast
*----------------------------------------------------------------------
*
      ieast  = 0
      inorth = 0
      if ( grid.eq."u" ) ieast  = 1
      if ( grid.eq."v" ) inorth = 1
*
      if (.not.period_y) then
         if (north.gt.0) then
            do k=1,lnk
            do j=ldnj+inorth,maxyn
            do i=minxn,maxxn
               f(i,j,k) = bcn(i,j-bcs_ofj,k)
            end do
            end do
            end do
         endif
         if (south.gt.0) then
            do k=1,lnk
            do j=minys,0
            do i=minxs,maxxs
               f(i,j,k) = bcs(i,j,k)
            end do
            end do
            end do
         endif
      endif
*
      if (.not.period_x) then
         if (west.gt.0) then
            do k=1,lnk
            do j=minyw,maxyw
            do i=minxw,0
               f(i,j,k) = bcw(i,j,k)
            end do
            end do
            end do
            if (south.gt.0) then
               do k=1,lnk
               do j=1,maxys
               do i=minxs,0
                  f(i,j,k) = bcs(i,j,k)
               end do
               end do
               end do
            endif
            if (north.gt.0) then
               do k=1,lnk
               do j=minyn,ldnj+inorth-1
               do i=minxn,0
                  f(i,j,k) = bcn(i,j-bcs_ofj,k)
               end do
               end do
               end do
            endif
         endif
         if (east.gt.0) then
            do k=1,lnk
            do j=minye,maxye
            do i=ldni+ieast,maxxe
               f(i,j,k) = bce(i-bcs_ofi,j,k)
            end do
            end do
            end do
            if (south.gt.0) then
               do k=1,lnk
               do j=1,maxys
               do i=ldni+ieast,maxxs
                  f(i,j,k) = bcs(i,j,k)
               end do
               end do
               end do
            endif
            if (north.gt.0) then
               do k=1,lnk
               do j=minyn,ldnj+inorth-1
               do i=ldni+ieast,maxxn
                  f(i,j,k) = bcn(i,j-bcs_ofj,k)
               end do
               end do
               end do
            endif
         endif
      endif
*
*----------------------------------------------------------------------
      return
      end