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