*=*=*=*= linear.html =*=*=*=*
subroutine linear

subroutine linear


      subroutine linear(imdep, jmdep, imar, jmar,
     .                  champ, retour,
     .                  icount, iix, jjx, ix, jx, sx, airnx)
c      interpolation bidimensionnelle
c         avec conservation forcee du flux
c=======================================================================
c    A. HARZALLAH (16/08/90).
c    Modifie le 15/12/93 par L. Fairhead (LMD/CNRS)
c                        pour en faire une subroutine
c=======================================================================
C=======================================================================
C  a partir de donnees sur une grille initiale on passe a une
C  nouvelle grille en conservant le flux des donnees a travers
c  la nouvelle grille par interpolation linaire.
C=======================================================================
c input: imdep, nbre de long de la grille de depart
c        jmdep,  "   "  lat   "     "   "    "    "
c        imar,  nbre de long de la grille d'arrivee
c        jmar,  nbre de lat  de la grille d'arrivee
c        champ, champ a interpoler
c        iix, jjx, ix, jx indices pour les connections
c        sx et airnx  poids et aires
c output: retour, champ interpole
c
      implicit none
      INTEGER imdep, jmdep, imar, jmar, icount
      REAL champ(imdep,jmdep),retour(imar,jmar)
      REAL sx(icount)
      REAL airnx(icount)
      INTEGER ix(icount),jx(icount),iix(icount),jjx(icount)
      INTEGER i, j, k

      do i=1,imar
        do j=1,jmar
          retour(i,j)=0.
        enddo
      enddo

      do k=1,icount
        retour(iix(k),jjx(k))=retour(iix(k),jjx(k))+
     &                     champ(ix(k),jx(k))*sx(k)/airnx(k)
      enddo
      return
      end