c****************************************************** *=*=*=*= interp_vert.html =*=*=*=*
SUBROUTINE interp_vert

SUBROUTINE interp_vert


      SUBROUTINE   interp_vert(varo,varn,lmo,lmn,sigmo,sigmn,Nhoriz)
c
c interpolation lineaire pour passer
c a une nouvelle discretisation verticale pour
c les variables de GCM
c Francois Forget (01/1995)
c**********************************************************

      IMPLICIT NONE

c   Declarations:
c ==============
c
c  ARGUMENTS
c  """""""""

       INTEGER lmo ! dimensions ancienne couches (input)
       INTEGER lmn ! dimensions nouvelle couches (input)

       REAL sigmo(lmo) ! niveau des variables dans les anciennes coord
       REAL sigmn(lmn) ! niveau des variables dans les nouvelles coord

       INTEGER Nhoriz ! nombre de point horizontale (input)

       REAL varo(Nhoriz,lmo) ! var dans l'ancienne grille (input)
       REAL varn(Nhoriz,lmn) ! var dans la nouvelle grille (output)

c Autres variables
c """"""""""""""""
       INTEGER n, ln ,lo
       REAL coef

c run
c ====
      do ln=1,lmn
        if (sigmn(ln).ge.sigmo(1))then
           do n=1,Nhoriz
             varn(n,ln) =  varo(n,1)
           end do
        else if (sigmn(ln).le.sigmo(lmo)) then
           do n=1,Nhoriz
             varn(n,ln) =  varo(n,lmo)
           end do
        else
           do lo =1,lmo-1
             if ( (sigmn(ln).le.sigmo(lo)).and.
     &          (sigmn(ln).gt.sigmo(lo+1)) )then
               coef = (sigmn(ln)-sigmo(lo))/(sigmo(lo+1)-sigmo(lo))
               do n=1,Nhoriz
                 varn(n,ln)=varo(n,lo) +coef*(varo(n,lo+1)-varo(n,lo))
               end do
             end if
           end do
        end if
      end do
      return
      end