!
! $Header$
!
c******************************************************
      SUBROUTINE   pres2lev(varo,varn,lmo,lmn,po,pn,
     %                      ni,nj)
c
c interpolation lineaire pour passer
c a une nouvelle discretisation verticale pour
c les variables de GCM
c Francois Forget (01/1995)
c 
c MOdif remy roca 12/97 pour passer de pres2sig
c**********************************************************

      IMPLICIT NONE

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

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

       parameter(lmomx=10000,lmnmx=10000)

        real po(lmo)! niveau de pression en millibars
        real pn(ni,nj,lmn) ! niveau de pression en pascals

       INTEGER i,j,Nhoriz,ni,nj ! nombre de point horizontale (input)

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

       real zvaro(lmomx),zpo(lmomx)

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

c run
c ====
        do i=1,ni
        do j=1,nj
c a chaque point de grille correspond un nouveau sigma old
c qui vaut pres(l)/ps(i,j)
           do lo=1,lmo
              zpo(lo)=po(lmo+1-lo)
              zvaro(lo)=varo(i,j,lmo+1-lo)
           enddo
        
           do ln=1,lmn
              if (pn(i,j,ln).ge.zpo(1))then
                 varn(i,j,ln) =  zvaro(1)
              else if (pn(i,j,ln).le.zpo(lmo)) then
                 varn(i,j,ln) =  zvaro(lmo)
              else
                 do lo=1,lmo-1 
                    if ( (pn(i,j,ln).le.zpo(lo)).and.
     &                 (pn(i,j,ln).gt.zpo(lo+1)) )then
                       coef=(pn(i,j,ln)-zpo(lo))
     &                 /(zpo(lo+1)-zpo(lo))
                       varn(i,j,ln)=zvaro(lo)
     &                 +coef*(zvaro(lo+1)-zvaro(lo))
c       print*,'pn(',ln,')=',pn(i,j,ln),varn(i,j,ln)
                    end if
                 enddo           
              endif
           enddo

        enddo
        enddo
      return
      end    
