Index: LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/fonte_neige_mod.F90
===================================================================
--- LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/fonte_neige_mod.F90	(revision 5896)
+++ LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/fonte_neige_mod.F90	(revision 5908)
@@ -237,5 +237,5 @@
 #endif
      &   )
-!$gpum horizontal knon
+!$gpum horizontal knon klon
     USE indice_sol_mod
 #ifdef ISO
@@ -446,8 +446,8 @@
           j = knindex(i)
           !--temporal filtering
-          run_off_lic(i)   = coeff_rel*fqcalving(i) + (1.-coeff_rel)*run_off_lic_0(j)
-          run_off_lic_0(j) = run_off_lic(i)
+          run_off_lic(j)   = coeff_rel*fqcalving(i) + (1.-coeff_rel)*run_off_lic_0(j)
+          run_off_lic_0(j) = run_off_lic(j)
           !--add melting snow and liquid precip to runoff of ice cap
-          run_off_lic(i)   = run_off_lic(i) + fqfonte(i) + precip_rain(i)
+          run_off_lic(j)   = run_off_lic(j) + fqfonte(i) + precip_rain(i)
        ENDDO
     ENDIF
@@ -455,5 +455,5 @@
 #ifdef ISO
     DO i = 1, knon    
-      run_off_lic_diag(i) = run_off_lic(i)
+      run_off_lic_diag(i) = run_off_lic(knindex(i))
     ENDDO ! DO i = 1, knon    
 #endif
@@ -472,5 +472,5 @@
     IF (nisurf == is_lic) THEN
     DO i = 1, knon
-       runofflic_global(knindex(i)) = run_off_lic(i)
+       runofflic_global(knindex(i)) = run_off_lic(knindex(i))
     ENDDO
     ENDIF
Index: LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/pbl_surface_mod.F90
===================================================================
--- LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/pbl_surface_mod.F90	(revision 5896)
+++ LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/pbl_surface_mod.F90	(revision 5908)
@@ -597,4 +597,16 @@
 
   END SUBROUTINE pbl_surface_newfrac
+
+  SUBROUTINE pbl_surface_precall
+  USE surf_landice_mod, ONLY : surf_landice_precall
+  IMPLICIT NONE
+    CALL surf_landice_precall
+  END SUBROUTINE pbl_surface_precall
+
+  SUBROUTINE pbl_surface_postcall
+  USE surf_landice_mod, ONLY : surf_landice_postcall
+  IMPLICIT NONE
+    CALL surf_landice_postcall
+  END SUBROUTINE pbl_surface_postcall
 
 
@@ -1191,4 +1203,6 @@
       CALL checksum("n2mout", n2mout) 
       CALL checksum("n2mout_x", n2mout_x) 
+    
+    CALL pbl_surface_precall
 
     CALL pbl_surface_uncompress_pre( &
@@ -1252,5 +1266,5 @@
       ENDIF
     ENDDO
-
+    
     CALL pbl_surface_subsrf( nsrf, knon, ni(1:knon),  &
        dtime,     date0,     itap,     jour,          &
@@ -1344,4 +1358,6 @@
 #endif      
      &   )
+
+      CALL pbl_surface_postcall
 
       IF (is_master) WRITE(lunout,*) "****************** CHECKSUM OUT ****************************"
Index: LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/surf_landice_mod.F90
===================================================================
--- LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/surf_landice_mod.F90	(revision 5896)
+++ LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/surf_landice_mod.F90	(revision 5908)
@@ -3,4 +3,16 @@
   
   IMPLICIT NONE
+  PRIVATE
+
+   REAL,SAVE :: alb_vis_sno_lic
+  !$OMP THREADPRIVATE(alb_vis_sno_lic)
+   REAL,SAVE :: alb_nir_sno_lic
+  !$OMP THREADPRIVATE(alb_nir_sno_lic)
+  
+  LOGICAL, SAVE :: firstcall = .TRUE.
+  !$OMP THREADPRIVATE(firstcall)
+
+
+  PUBLIC :: surf_landice_init, surf_landice, surf_landice_precall, surf_landice_postcall
 
 CONTAINS
@@ -8,4 +20,31 @@
 !****************************************************************************************
 !
+  SUBROUTINE surf_landice_init
+  USE ioipsl_getin_p_mod, ONLY : getin_p
+  IMPLICIT NONE
+  
+    alb_vis_sno_lic=0.77
+    CALL getin_p('alb_vis_sno_lic',alb_vis_sno_lic)
+    PRINT*, 'alb_vis_sno_lic',alb_vis_sno_lic
+    alb_nir_sno_lic=0.77
+    CALL getin_p('alb_nir_sno_lic',alb_nir_sno_lic)
+    PRINT*, 'alb_nir_sno_lic',alb_nir_sno_lic
+
+  END SUBROUTINE surf_landice_init
+
+
+  SUBROUTINE surf_landice_precall
+  IMPLICIT NONE
+
+  END SUBROUTINE surf_landice_precall
+
+
+  SUBROUTINE surf_landice_postcall
+  IMPLICIT NONE
+    IF (firstcall) firstcall=.FALSE.
+  END SUBROUTINE surf_landice_postcall
+  
+
+
   SUBROUTINE surf_landice(itime, dtime, knon, knindex, &
        rlon, rlat, debut, lafin, &
@@ -29,5 +68,5 @@
 #endif               
            &    )
-
+!$gpum horizontal knon klon  
     USE dimphy
     USE geometry_mod,     ONLY : longitude,latitude
@@ -50,5 +89,4 @@
     USE clesphys_mod_h
     USE yomcst_mod_h
-    USE ioipsl_getin_p_mod, ONLY : getin_p
     USE lmdz_blowing_snow_ini, ONLY : c_esalt_bs, zeta_bs, pbst_bs, prt_bs, rhoice_bs, rhohard_bs
     USE lmdz_blowing_snow_ini, ONLY : rhofresh_bs, tau_eqsalt_bs, tau_dens0_bs, tau_densmin_bs
@@ -194,4 +232,6 @@
     LOGICAL, DIMENSION(knon) :: ok_remaining_freshsnow
     REAL  :: ta1, ta2, ta3, z01, z02, z03, coefa, coefb, coefc, coefd
+    REAl :: lon(knon), lat(knon)   ! for indexation
+
 
 
@@ -200,10 +240,5 @@
 !FC 
 !FC
-   REAL,SAVE :: alb_vis_sno_lic
-  !$OMP THREADPRIVATE(alb_vis_sno_lic)
-   REAL,SAVE :: alb_nir_sno_lic
-  !$OMP THREADPRIVATE(alb_nir_sno_lic)
-  LOGICAL, SAVE :: firstcall = .TRUE.
-  !$OMP THREADPRIVATE(firstcall)
+
 
 
@@ -223,16 +258,10 @@
 
   IF (firstcall) THEN
-  alb_vis_sno_lic=0.77
-  CALL getin_p('alb_vis_sno_lic',alb_vis_sno_lic)
-           PRINT*, 'alb_vis_sno_lic',alb_vis_sno_lic
-  alb_nir_sno_lic=0.77
-  CALL getin_p('alb_nir_sno_lic',alb_nir_sno_lic)
-           PRINT*, 'alb_nir_sno_lic',alb_nir_sno_lic
-  
-  DO j=1,knon
+ 
+    DO j=1,knon
        i = knindex(j)
        tempsmoothlic(i) = temp_air(j)
-  ENDDO
-  firstcall=.false.
+    ENDDO
+  
   ENDIF
 !******************************************************************************************
@@ -313,5 +342,7 @@
             lafin_is=.true.
           END IF
-
+          
+          !ym surf_inlandsis not ported on gpu for now
+          !$gpum nocall
           CALL surf_inlandsis(knon, rlon, rlat, knindex, itime, dtis, debut_is, lafin_is,&
             rmu0, swdown, lwdown, albedo, pexner, ps, p1lay, precip_rain, precip_snow,   &
@@ -361,6 +392,8 @@
     ! use soil model and recalculate properly cal
     IF (soil_model) THEN 
+       lon(1:knon) = longitude(knindex(1:knon))
+       lat(1:knon) = latitude(knindex(1:knon))
        CALL soil(dtime, is_lic, knon, snow, tsurf, qsol, &
-        & longitude(knindex(1:knon)), latitude(knindex(1:knon)), tsoil, soilcap, soilflux)
+        & lon, lat, tsoil, soilcap, soilflux)
        cal(1:knon) = RCPD / soilcap(1:knon)
        radsol(1:knon)  = radsol(1:knon) + soilflux(1:knon)
@@ -662,9 +695,10 @@
        ENDDO
 
+       !$gpum nocall
        CALL cpl_send_landice_fields(itime, knon, knindex, run_off_lic, run_off_lic_frac)
     ENDIF
 
  ! transfer runoff rate [kg/m2/s](!) to physiq for output
-    runoff(1:knon)=run_off_lic(1:knon)/dtime
+    runoff(1:knon)=run_off_lic(knindex(1:knon))/dtime
 
 !ym WARNING snow_o, zfrac_o => en klon !!!
