      subroutine swlon_n(uw,qw,vw,dw,u1,q1,v1,n,h
     &		,ux1,vx1,qx1,ux2,vx2,qx2,nn,j,t)
      real*8 u1(n),q1(n),v1(n),vw(n),uw(n),h(n)
     &       ,qw(n),dw(n),dw1,dw2
      real*8 d1,d2,t1,ux1,vx1,qx1,ux2,vx2
     &      ,qx2,fi,t,time,PI,RE,GA,grnd,dry,fr
      common /run/time,nstep,npics,grnd,dry,fi,fr
      common /const/ PI,RE,GA
      nm=n-1                                                            
      dw1=dw(2)
      do 111 i=1,n
         if (dw(i).LE.grnd.AND.dw(i).GT.-8500.)then
           qw(i)=qw(i)-dw(i)+grnd-.01
           dw(i)=grnd-.01
           if(i.gt.1) dw1=dw(i-1)
           if(i.lt.n) dw2=dw(i+1)
           if (dw1.GT.grnd .AND. dw2.GT.grnd) then
             uw(i)=0.
             vw(i)=0.
           endif
         end if
         if (dw(i).GT.0) then
         u1(i)=uw(i)+2.*sqrt(GA*qw(i))
         q1(i)=uw(i)-2.*sqrt(GA*qw(i))
         qw(i)=q1(i)
         uw(i)=u1(i)
         v1(i)=vw(i)
         end if
 111  continue
      do 10 i=2,nm
      im=i-1
      ip=i+1
c     *** space integration ***
      if(dw(i).LE.grnd) then
         if((dw(im).LE.grnd).and.(dw(ip).GT.grnd)) then
c..... Shore on the left
            if (dw(i).GT.-8500) then
              q1(i)=qw(i)-(uw(i)+uw(ip)+3.*(qw(i)+qw(ip)))/8.*
     &           (qw(ip)-qw(i))*t/h(i)+GA*t/h(i)*(dw(ip)-dw(i))
              u1(i)=-q1(i)
              v1(i)=0.
            end if
         end if
         if((dw(im).GT.grnd).and.(dw(ip).LE.grnd)) then
c..... Shore on the right
            if (dw(i).GT.-8500) then
              u1(i)=uw(i)-(3.*(uw(i)+uw(im))+qw(im)+qw(i))/8.*
     &           (uw(i)-uw(im))*t/h(im)+GA*t/h(im)*(dw(i)-dw(im))
              q1(i)=-u1(i)
              v1(i)=0.
            end if
         end if
c         if((dw(ip).GT.grnd).and.(dw(im).GT.grnd)) then
CC...... Isolated dry point never get here
c            write(*,*)'isolated dry pt swlon_n ',dw(i)-grnd,i
c         end if
      else
c..... Open water
         d1=GA*t*((dw(ip)-dw(i))/h(i)-(dw(i)-dw(im))/h(im))
         d2=GA*(dw(ip)-dw(im))
         t1=t/(h(im)+h(i))
         u1(i)=uw(i)-t1*((3.*uw(im)+qw(im)+3.*uw(ip)
     &      +qw(ip))/8.*(uw(ip)-uw(im))-d2+d1*
     &      (3.*uw(i)+qw(i))/4.-t/32.*(3.*uw(i)+qw(i))*
     &      ((3.*uw(ip)+qw(ip)+3.*uw(i)+qw(i))*(uw(ip)-uw(i))/h(i)-
     &      (3.*uw(im)+qw(im)+3.*uw(i)+qw(i))*(uw(i)-uw(im))/h(im)))
         q1(i)=qw(i)-t1*((uw(im)+3.*qw(im)+uw(ip)+
     &      3.*qw(ip))/8.*(qw(ip)-qw(im))-d2+d1*
     &      (uw(i)+qw(i)*3.)/4.-t/(32.)*(uw(i)+3.*qw(i))*
     &      ((uw(ip)+3.*qw(ip)+uw(i)+3.*qw(i))*(qw(ip)-qw(i))/h(i)-
     &      (uw(i)+3.*qw(i)+uw(im)+3.*qw(im))*(qw(i)-qw(im))/h(im)))
         v1(i)=vw(i)-t1*.5*((uw(i)+qw(i))*(vw(ip)-
     &      vw(im))-(uw(i)+qw(i))/4.*t*((uw(ip)+qw(ip)+uw(i)+qw(i))*
     &      (vw(ip)-vw(i))/h(i)-(uw(i)+qw(i)+uw(im)+qw(im))*
     &      (vw(i)-vw(im))/h(im)))
      end if

   10 continue

      if (dw(1) .GT. grnd) then
      	v1(1)=vx1
      	if((uw(1)+qw(1)).LT.0) then
     	  v1(1)=vw(1)-t/h(1)*(vw(2)-vw(1))*(uw(1)+qw(1))*.5
        end if
      	u1(1)=ux1+2.*sqrt(GA*(dw(1)+qx1))
      	q1(1)=qw(1)-(uw(1)+uw(2)+3.*(qw(1)+qw(2)))/8.*
     &        (qw(2)-qw(1))*t/h(1)+GA*t/h(1)*(dw(2)-dw(1))
      end if
      
      if (dw(n) .GT. grnd) then
      	v1(n)=vx2
      	if((uw(n)+qw(n)).GT.0) then
     	  v1(n)=vw(n)-t/h(n-1)*(vw(n)-vw(n-1))*(uw(n)+qw(n))*.5
        end if
      	u1(n)=uw(n)-(3.*(uw(n)+uw(n-1))+qw(n-1)+qw(n))/8.*
     &        (uw(n)-uw(n-1))*t/h(n-1)+GA*t/h(n-1)*(dw(n)-dw(n-1))
      	q1(n)=ux2-2.*sqrt(GA*(dw(n)+qx2))
      end if

      do i=1,n
         if (dw(i).GT.0) then
           qw(i)=(u1(i)-q1(i))**2/(16.*GA)
           uw(i)=(u1(i)+q1(i))*.5
           vw(i)=v1(i)
         end if
      end do
      return
      end
