Index: /LMDZ.3.3/branches/rel-LF/libf/dyn3d/create_etat0_limit.F
===================================================================
--- /LMDZ.3.3/branches/rel-LF/libf/dyn3d/create_etat0_limit.F	(revision 369)
+++ /LMDZ.3.3/branches/rel-LF/libf/dyn3d/create_etat0_limit.F	(revision 370)
@@ -18,5 +18,5 @@
 
       LOGICAL interbar, extrap , oldice
-      PARAMETER ( interbar = .TRUE. , extrap = .FALSE. , oldice=.true.)
+      PARAMETER ( interbar = .true. , extrap = .FALSE. , oldice=.true.)
 #include "dimensions.h"
 #include "paramet.h"
@@ -26,4 +26,6 @@
       REAL :: pctsrf(klon, nbsrf)
 
+      WRITE(6,*) '  *********************  '
+      WRITE(6,*) ' interbar = ',interbar
       CALL etat0_netcdf ( interbar, masque, pctsrf )
 c
Index: /LMDZ.3.3/branches/rel-LF/libf/dyn3d/etat0_netcdf.F
===================================================================
--- /LMDZ.3.3/branches/rel-LF/libf/dyn3d/etat0_netcdf.F	(revision 369)
+++ /LMDZ.3.3/branches/rel-LF/libf/dyn3d/etat0_netcdf.F	(revision 370)
@@ -160,210 +160,11 @@
       ENDDO
       !
-      varname = 'relief'
-      ! This line needs to be replaced by a call to restget to get the values in the restart file
-      orog(:,:) = 0.0
-       CALL startget(varname, iip1, jjp1, rlonv, rlatu, orog, 0.0 ,
-     , jjm ,rlonu,rlatv , interbar )
-      !
-      WRITE(*,*) 'OUT OF GET VARIABLE : Relief'
-!      WRITE(*,'(49I1)') INT(orog(:,:))
-      !
-      varname = 'rugosite'
-      ! This line needs to be replaced by a call to restget to get the values in the restart file
-      rugo(:,:) = 0.0
-       CALL startget(varname, iip1, jjp1, rlonv, rlatu, rugo, 0.0 ,
-     , jjm, rlonu,rlatv , interbar )
-      !
-      WRITE(*,*) 'OUT OF GET VARIABLE : Rugosite' 
-!      WRITE(*,'(49I1)') INT(rugo(:,:)*10)
-      !
-      varname = 'masque'
-      ! This line needs to be replaced by a call to restget to get the values in the restart file
-      masque(:,:) = 0.0
-      
-       CALL startget(varname, iip1, jjp1, rlonv, rlatu, masque, 0.0,
-     , jjm ,rlonu,rlatv , interbar )
-!      masque = nint(masque)
-      !
-      WRITE(*,*) 'MASQUE construit : Masque'
-      WRITE(*,'(97I1)') nINT(masque(:,:))
-      !
-      !
-
-
-C
-C on initialise les sous surfaces
-C
-      pctsrf=0.
-      !cree le masque a partir du fichier relief
-      call gr_dyn_fi(1, iip1, jjp1, klon, masque, zmasq)
-      WHERE (zmasq(1 : klon) .LT. EPSFRA)
-          zmasq(1 : klon) = 0.
-      END WHERE 
-      WHERE (1. - zmasq(1 : klon) .LT. EPSFRA)
-          zmasq(1 : klon) = 1.
-      END WHERE 
-c
-      varname = 'psol'
-      psol(:,:) = 0.0
-      CALL startget(varname, iip1, jjp1, rlonv, rlatu, psol, 0.0 ,
-     , jjm ,rlonu,rlatv , interbar )
-      !
-      !  Compute here the pressure on the intermediate levels. One would expect that this is available in the GCM 
-      !  anyway.
-      !
-!      WRITE(*,*) 'PSOL :', psol(10,20)
-!      WRITE(*,*) ap(:), bp(:)
-      CALL pression(ip1jmp1, ap, bp, psol, p3d)
-!      WRITE(*,*) 'P3D :', p3d(10,20,:)
-      CALL exner_hyb(ip1jmp1, psol, p3d, alpha, beta, pks, pk, workvar)
-!      WRITE(*,*) 'PK:', pk(10,20,:)
-      !
-      !
-      !
-      prefkap =  preff  ** kappa
-!      WRITE(*,*) 'unskap, cpp,  preff :', unskap, cpp,  preff
-      DO l = 1, llm
-        DO j=1,jjp1
-          DO i =1, iip1
-            pls(i,j,l) = preff * ( pk(i,j,l)/cpp) ** unskap
-           ENDDO
-        ENDDO
-      ENDDO
-      !
-!      WRITE(*,*) 'PLS :', pls(10,20,:)
-      !
-      varname = 'surfgeo'
-      phis(:,:) = 0.0
-      CALL startget(varname, iip1, jjp1, rlonv, rlatu, phis, 0.0 ,
-     , jjm ,rlonu,rlatv, interbar )
-      !
-      varname = 'u'
-      uvent(:,:,:) = 0.0
-      CALL startget(varname, iip1, jjp1, rlonu, rlatu, llm, pls,
-     . workvar, uvent, 0.0, jjm ,rlonv, rlatv, interbar )
-      !  
-      varname = 'v'
-      vvent(:,:,:) = 0.0
-      CALL startget(varname, iip1, jjm, rlonv, rlatv, llm, pls,
-     . workvar, vvent, 0.0, jjp1, rlonu, rlatu, interbar )
-      !
-      varname = 't'
-      t3d(:,:,:) = 0.0
-      CALL startget(varname, iip1, jjp1, rlonv, rlatu, llm, pls,
-     . workvar, t3d, 0.0 , jjm, rlonu, rlatv , interbar )
-      !
-      WRITE(*,*) 'T3D min,max:',minval(t3d(:,:,:)),
-     .                          maxval(t3d(:,:,:))
-      varname = 'tpot'
-      tpot(:,:,:) = 0.0
-      CALL startget(varname, iip1, jjp1, rlonv, rlatu, llm, pls,
-     . pk, tpot, 0.0 , jjm, rlonu, rlatv , interbar )
-      !
-      WRITE(*,*) 'T3D min,max:',minval(t3d(:,:,:)),
-     .                          maxval(t3d(:,:,:))
-      WRITE(*,*) 'PLS min,max:',minval(pls(:,:,:)),
-     .                          maxval(pls(:,:,:))
-      DO l = 1, llm
-        DO j=1,jjp1
-          DO i =1, iip1-1
-           qsat(i,j,l) = q_sat(t3d(i,j,l),pls(i,j,l)/100. )
-          ENDDO
-          qsat(iip1,j,l) = qsat(1,j,l)
-        ENDDO
-      ENDDO
-      WRITE(*,*) 'QSAT min,max:',minval(qsat(:,:,:)),
-     .                           maxval(qsat(:,:,:))
-      !
-      WRITE(*,*) 'QSAT :', qsat(10,20,:)
-      !
-      varname = 'q'
-      qd(:,:,:) = 0.0
-      q3d(:,:,:,:) = 0.0
-      WRITE(*,*) 'QSAT min,max:',minval(qsat(:,:,:)),
-     .                           maxval(qsat(:,:,:))
-      CALL startget(varname, iip1, jjp1, rlonv, rlatu, llm, pls,
-     . qsat, qd, 0.0, jjm, rlonu, rlatv , interbar )
-      q3d(:,:,:,1) = qd(:,:,:)
-      !
-      varname = 'tsol'
-      ! This line needs to be replaced by a call to restget to get the values in the restart file
-      tsol(:) = 0.0
-      CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, tsol, 0.0,
-     .    jjm, rlonu, rlatv , interbar )
-      !
-      WRITE(*,*) 'TSOL construit :'
-!      WRITE(*,'(48I3)') INT(TSOL(2:klon)-273)
-      !
-      varname = 'qsol'
-      qsol(:) = 0.0
-      CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, qsol, 0.0,
-     .   jjm, rlonu, rlatv , interbar )
-      !
-      varname = 'snow'
-      sn(:) = 0.0
-      CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, sn, 0.0,
-     .    jjm, rlonu, rlatv , interbar )
-      !
-      varname = 'rads'
-      radsol(:) = 0.0
-      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,radsol,0.0,
-     .    jjm, rlonu, rlatv , interbar )
-      !
-      varname = 'deltat'
-      deltat(:) = 0.0
-      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,deltat,0.0,
-     .     jjm, rlonu, rlatv , interbar )
-      !
-      varname = 'rugmer'
-      rugmer(:) = 0.0
-      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,rugmer,0.0,
-     .     jjm, rlonu, rlatv , interbar )
-      !
-!      varname = 'agesno'
-!      agesno(:) = 0.0
-!      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,agesno,0.0,
-!     .     jjm, rlonu, rlatv , interbar )
-
-      varname = 'zmea'
-      zmea(:) = 0.0
-      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zmea,0.0,
-     .     jjm, rlonu, rlatv , interbar )
-
-      varname = 'zstd'
-      zstd(:) = 0.0
-      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zstd,0.0,
-     .     jjm, rlonu, rlatv , interbar )
-      varname = 'zsig'
-      zsig(:) = 0.0
-      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zsig,0.0,
-     .     jjm, rlonu, rlatv , interbar )
-      varname = 'zgam'
-      zgam(:) = 0.0
-      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zgam,0.0,
-     .     jjm, rlonu, rlatv , interbar )
-      varname = 'zthe'
-      zthe(:) = 0.0
-      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zthe,0.0,
-     .     jjm, rlonu, rlatv , interbar )
-      varname = 'zpic'
-      zpic(:) = 0.0
-      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zpic,0.0,
-     .     jjm, rlonu, rlatv , interbar )
-      varname = 'zval'
-      zval(:) = 0.0
-      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zval,0.0,
-     .     jjm, rlonu, rlatv , interbar )
-c
-      rugsrel(:) = 0.0
-      IF(ok_orodr)  THEN
-        DO i = 1, iip1* jjp1
-         rugsrel(i) = MAX( 1.e-05, zstd(i)* zsig(i) /2. )
-        ENDDO
-      ENDIF
+
+
 C
 C En cas de simulation couplee, lecture du masque ocean issu du modele ocean
 C utilise pour calculer les poids et pour assurer l'adequation entre les
-C fractions d'ocean vu par l'atmosphere et l'ocean
+C fractions d'ocean vu par l'atmosphere et l'ocean. Sinon, on cree le masque 
+C a partir du fichier relief
 C
 
@@ -373,4 +174,17 @@
         write(*,*)'ATTENTION!! pas de fichier o2a.nc trouve'
         write(*,*)'Run force'
+        varname = 'masque'
+        masque(:,:) = 0.0
+        CALL startget(varname, iip1, jjp1, rlonv, rlatu, masque, 0.0,
+     ,  jjm ,rlonu,rlatv , interbar )
+        WRITE(*,*) 'MASQUE construit : Masque'
+        WRITE(*,'(97I1)') nINT(masque(:,:))
+        call gr_dyn_fi(1, iip1, jjp1, klon, masque, zmasq)
+        WHERE (zmasq(1 : klon) .LT. EPSFRA)
+            zmasq(1 : klon) = 0.
+        END WHERE 
+        WHERE (1. - zmasq(1 : klon) .LT. EPSFRA)
+            zmasq(1 : klon) = 1.
+        END WHERE 
       else
         couple = .true.
@@ -406,5 +220,4 @@
 C passage masque ocean a la grille physique
 C
-
         write(*,*)'ocemask '
         write(*,'(96i1)')int(ocemask)
@@ -417,7 +230,188 @@
         ocemask_fi(klon) = ocemask(1,jjp1)
         zmasq = 1. - ocemask_fi
-        isst = 0
-        where (ocemask_fi(2:klon-1) >0.) isst = 1
       endif
+
+      call gr_fi_dyn(1, klon, iip1, jjp1, zmasq, masque)
+
+      varname = 'relief'
+      ! This line needs to be replaced by a call to restget to get the values in the restart file
+      orog(:,:) = 0.0
+       CALL startget(varname, iip1, jjp1, rlonv, rlatu, orog, 0.0 ,
+     , jjm ,rlonu,rlatv , interbar, masque )
+      !
+      WRITE(*,*) 'OUT OF GET VARIABLE : Relief'
+!      WRITE(*,'(49I1)') INT(orog(:,:))
+      !
+      varname = 'rugosite'
+      ! This line needs to be replaced by a call to restget to get the values in the restart file
+      rugo(:,:) = 0.0
+       CALL startget(varname, iip1, jjp1, rlonv, rlatu, rugo, 0.0 ,
+     , jjm, rlonu,rlatv , interbar )
+      !
+      WRITE(*,*) 'OUT OF GET VARIABLE : Rugosite' 
+!      WRITE(*,'(49I1)') INT(rugo(:,:)*10)
+      !
+C
+C on initialise les sous surfaces
+C
+      pctsrf=0.
+c
+      varname = 'psol'
+      psol(:,:) = 0.0
+      CALL startget(varname, iip1, jjp1, rlonv, rlatu, psol, 0.0 ,
+     , jjm ,rlonu,rlatv , interbar )
+      !
+      !  Compute here the pressure on the intermediate levels. One would expect that this is available in the GCM 
+      !  anyway.
+      !
+!      WRITE(*,*) 'PSOL :', psol(10,20)
+!      WRITE(*,*) ap(:), bp(:)
+      CALL pression(ip1jmp1, ap, bp, psol, p3d)
+!      WRITE(*,*) 'P3D :', p3d(10,20,:)
+      CALL exner_hyb(ip1jmp1, psol, p3d, alpha, beta, pks, pk, workvar)
+!      WRITE(*,*) 'PK:', pk(10,20,:)
+      !
+      !
+      !
+      prefkap =  preff  ** kappa
+!      WRITE(*,*) 'unskap, cpp,  preff :', unskap, cpp,  preff
+      DO l = 1, llm
+        DO j=1,jjp1
+          DO i =1, iip1
+            pls(i,j,l) = preff * ( pk(i,j,l)/cpp) ** unskap
+           ENDDO
+        ENDDO
+      ENDDO
+      !
+!      WRITE(*,*) 'PLS :', pls(10,20,:)
+      !
+      varname = 'surfgeo'
+      phis(:,:) = 0.0
+      CALL startget(varname, iip1, jjp1, rlonv, rlatu, phis, 0.0 ,
+     , jjm ,rlonu,rlatv, interbar )
+      !
+      varname = 'u'
+      uvent(:,:,:) = 0.0
+      CALL startget(varname, iip1, jjp1, rlonu, rlatu, llm, pls,
+     . workvar, uvent, 0.0, jjm ,rlonv, rlatv, interbar )
+      !  
+      varname = 'v'
+      vvent(:,:,:) = 0.0
+      CALL startget(varname, iip1, jjm, rlonv, rlatv, llm, pls,
+     . workvar, vvent, 0.0, jjp1, rlonu, rlatu, interbar )
+      !
+      varname = 't'
+      t3d(:,:,:) = 0.0
+      CALL startget(varname, iip1, jjp1, rlonv, rlatu, llm, pls,
+     . workvar, t3d, 0.0 , jjm, rlonu, rlatv , interbar )
+      !
+      WRITE(*,*) 'T3D min,max:',minval(t3d(:,:,:)),
+     .                          maxval(t3d(:,:,:))
+      varname = 'tpot'
+      tpot(:,:,:) = 0.0
+      CALL startget(varname, iip1, jjp1, rlonv, rlatu, llm, pls,
+     . pk, tpot, 0.0 , jjm, rlonu, rlatv , interbar )
+      !
+      WRITE(*,*) 'T3D min,max:',minval(t3d(:,:,:)),
+     .                          maxval(t3d(:,:,:))
+      WRITE(*,*) 'PLS min,max:',minval(pls(:,:,:)),
+     .                          maxval(pls(:,:,:))
+      DO l = 1, llm
+        DO j=1,jjp1
+          DO i =1, iip1-1
+           qsat(i,j,l) = q_sat(t3d(i,j,l),pls(i,j,l)/100. )
+          ENDDO
+          qsat(iip1,j,l) = qsat(1,j,l)
+        ENDDO
+      ENDDO
+      WRITE(*,*) 'QSAT min,max:',minval(qsat(:,:,:)),
+     .                           maxval(qsat(:,:,:))
+      !
+      WRITE(*,*) 'QSAT :', qsat(10,20,:)
+      !
+      varname = 'q'
+      qd(:,:,:) = 0.0
+      q3d(:,:,:,:) = 0.0
+      WRITE(*,*) 'QSAT min,max:',minval(qsat(:,:,:)),
+     .                           maxval(qsat(:,:,:))
+      CALL startget(varname, iip1, jjp1, rlonv, rlatu, llm, pls,
+     . qsat, qd, 0.0, jjm, rlonu, rlatv , interbar )
+      q3d(:,:,:,1) = qd(:,:,:)
+      !
+      varname = 'tsol'
+      ! This line needs to be replaced by a call to restget to get the values in the restart file
+      tsol(:) = 0.0
+      CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, tsol, 0.0,
+     .    jjm, rlonu, rlatv , interbar )
+      !
+      WRITE(*,*) 'TSOL construit :'
+!      WRITE(*,'(48I3)') INT(TSOL(2:klon)-273)
+      !
+      varname = 'qsol'
+      qsol(:) = 0.0
+      CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, qsol, 0.0,
+     .   jjm, rlonu, rlatv , interbar )
+      !
+      varname = 'snow'
+      sn(:) = 0.0
+      CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, sn, 0.0,
+     .    jjm, rlonu, rlatv , interbar )
+      !
+      varname = 'rads'
+      radsol(:) = 0.0
+      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,radsol,0.0,
+     .    jjm, rlonu, rlatv , interbar )
+      !
+      varname = 'deltat'
+      deltat(:) = 0.0
+      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,deltat,0.0,
+     .     jjm, rlonu, rlatv , interbar )
+      !
+      varname = 'rugmer'
+      rugmer(:) = 0.0
+      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,rugmer,0.0,
+     .     jjm, rlonu, rlatv , interbar )
+      !
+!      varname = 'agesno'
+!      agesno(:) = 0.0
+!      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,agesno,0.0,
+!     .     jjm, rlonu, rlatv , interbar )
+
+      varname = 'zmea'
+      zmea(:) = 0.0
+      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zmea,0.0,
+     .     jjm, rlonu, rlatv , interbar )
+
+      varname = 'zstd'
+      zstd(:) = 0.0
+      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zstd,0.0,
+     .     jjm, rlonu, rlatv , interbar )
+      varname = 'zsig'
+      zsig(:) = 0.0
+      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zsig,0.0,
+     .     jjm, rlonu, rlatv , interbar )
+      varname = 'zgam'
+      zgam(:) = 0.0
+      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zgam,0.0,
+     .     jjm, rlonu, rlatv , interbar )
+      varname = 'zthe'
+      zthe(:) = 0.0
+      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zthe,0.0,
+     .     jjm, rlonu, rlatv , interbar )
+      varname = 'zpic'
+      zpic(:) = 0.0
+      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zpic,0.0,
+     .     jjm, rlonu, rlatv , interbar )
+      varname = 'zval'
+      zval(:) = 0.0
+      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zval,0.0,
+     .     jjm, rlonu, rlatv , interbar )
+c
+      rugsrel(:) = 0.0
+      IF(ok_orodr)  THEN
+        DO i = 1, iip1* jjp1
+         rugsrel(i) = MAX( 1.e-05, zstd(i)* zsig(i) /2. )
+        ENDDO
+      ENDIF
 
 
Index: /LMDZ.3.3/branches/rel-LF/libf/dyn3d/grid_noro.F
===================================================================
--- /LMDZ.3.3/branches/rel-LF/libf/dyn3d/grid_noro.F	(revision 369)
+++ /LMDZ.3.3/branches/rel-LF/libf/dyn3d/grid_noro.F	(revision 370)
@@ -1,3 +1,5 @@
-
+c
+c $Header$
+c
       SUBROUTINE grid_noro(imdep, jmdep, xdata, ydata, zdata,
      .             imar, jmar, x, y,
@@ -82,4 +84,5 @@
 c
       REAL a(2200),b(2200),c(1100),d(1100)
+      logical masque_lu
 c
       print *,' parametres de l orographie a l echelle sous maille' 
@@ -87,4 +90,13 @@
       rad    = 6 371 229.
       zdeltay=2.*xpi/float(jusn)*rad
+c
+c utilise-t'on un masque lu?
+c
+      masque_lu = .true.
+      if (maxval(mask) == -99999 .and. minval(mask) == -99999) then
+        masque_lu= .false.
+        masque = 0.0
+      endif
+      write(*,*)'Masque lu', masque_lu
 c
 c  quelques tests de dimensions:
@@ -263,5 +275,7 @@
 c$$$             mask(ii,jj)=0
 c$$$           ENDIF
-             mask(ii,jj) = num_lan(ii,jj)/num_tot(ii,jj)
+             if (.not. masque_lu) then
+               mask(ii,jj) = num_lan(ii,jj)/num_tot(ii,jj)
+             endif
 c  Mean Orography:
            zmea (ii,jj)=zmea (ii,jj)/weight(ii,jj)
@@ -357,5 +371,4 @@
        ENDDO
        ENDDO
-
       print *,'  MEAN ORO:',zllmmea
       print *,'  ST. DEV.:',zllmstd
Index: /LMDZ.3.3/branches/rel-LF/libf/dyn3d/startvar.F
===================================================================
--- /LMDZ.3.3/branches/rel-LF/libf/dyn3d/startvar.F	(revision 369)
+++ /LMDZ.3.3/branches/rel-LF/libf/dyn3d/startvar.F	(revision 370)
@@ -72,5 +72,5 @@
     !
       SUBROUTINE startget_phys2d(varname, iml, jml, lon_in, lat_in,
-     . champ, val_exp, jml2, lon_in2, lat_in2 , interbar )
+     . champ, val_exp, jml2, lon_in2, lat_in2 , interbar, masque_lu )
     !
     !    There is a big mess with the size in logitude, should it be iml or iml+1.
@@ -86,4 +86,5 @@
       REAL, INTENT(inout) :: champ(iml,jml)
       REAL, INTENT(in) :: val_exp
+      REAL, INTENT(in), optional :: masque_lu(iml,jml) 
       LOGICAL interbar
     !
@@ -101,6 +102,11 @@
                   IF ( .NOT.ALLOCATED(relief)) THEN
                       !
+                    if (present(masque_lu)) then
                       CALL start_init_orog( iml, jml, lon_in, lat_in,
-     .                    jml2,lon_in2,lat_in2, interbar )
+     .                    jml2,lon_in2,lat_in2, interbar, masque_lu )
+                    else
+                      CALL start_init_orog( iml, jml, lon_in, lat_in,
+     .                    jml2,lon_in2,lat_in2, interbar)
+                    endif
                       !
                   ENDIF
@@ -241,9 +247,10 @@
     !
       SUBROUTINE start_init_orog ( iml,jml,lon_in, lat_in,jml2,lon_in2 ,
-     ,   lat_in2 , interbar )
+     ,   lat_in2 , interbar, masque_lu )
     !
       INTEGER, INTENT(in) :: iml, jml, jml2
       REAL, INTENT(in) :: lon_in(iml), lat_in(jml)
       REAL, INTENT(in) :: lon_in2(iml), lat_in2(jml2)
+      REAL, intent(in), optional :: masque_lu(iml,jml)
       LOGICAL interbar
     !
@@ -339,4 +346,9 @@
       ALLOCATE(tmp_int(iml,jml))
       ALLOCATE(masque(iml,jml))
+
+      masque = -99999.
+      if (present(masque_lu)) then
+        masque = masque_lu
+      endif
     !
       CALL grid_noro(iml_rel, jml_rel, lon_rad, lat_rad, relief_hi,
