Index: LMDZ6/trunk/libf/phylmd/calwake.f90
===================================================================
--- LMDZ6/trunk/libf/phylmd/calwake.f90	(revision 5496)
+++ LMDZ6/trunk/libf/phylmd/calwake.f90	(revision 5499)
@@ -1,4 +1,32 @@
-
 ! $Id$
+MODULE calwake_mod
+  PRIVATE
+
+  LOGICAL, SAVE, ALLOCATABLE :: first(:) ! first(klon) : first calwake computation on columns
+  !$OMP THREADPRIVATE(first)
+
+  LOGICAL, SAVE :: first_first=.TRUE.  ! fisrt call to calwake
+  !$OMP THREADPRIVATE(first_first)  
+
+  PUBLIC calwake_first, calwake
+
+CONTAINS  
+
+SUBROUTINE calwake_first(dtime)
+USE dimphy, ONLY : klon,klev
+USE lmdz_wake, ONLY : wake_first
+  REAL, INTENT(IN)  :: dtime 
+  
+  IF (first_first) THEN
+    ALLOCATE(first(klon))
+    first(:)=.TRUE.
+    
+    CALL wake_first(klev, dtime)
+
+    first_first=.FALSE.
+  ENDIF
+
+END SUBROUTINE calwake_first
+
 
 SUBROUTINE calwake(iflag_wake_tend, paprs, pplay, dtime, &
@@ -28,5 +56,5 @@
   USE phys_state_var_mod, ONLY: pctsrf
   USE indice_sol_mod, ONLY: is_oce
-  USE print_control_mod, ONLY: mydebug=>debug , lunout, prt_level
+  USE print_control_mod, ONLY: lunout, prt_level
   USE lmdz_wake, ONLY : wake
   USE yomcst_mod_h
@@ -76,6 +104,4 @@
   ! Variable internes
   ! -----------------
-  LOGICAL, SAVE                                      :: first = .TRUE.
-  !$OMP THREADPRIVATE(first)
   INTEGER                                            :: i, l
   INTEGER, DIMENSION(klon)                           :: znatsurf    ! 0 if pctsrf(is_oce)>0.1; 1 else.
@@ -318,12 +344,13 @@
   ENDIF  ! (iflag_wake_tend .EQ. 0)
 !
-  IF (first) THEN
-    DO i = 1,klon
+  DO i = 1,klon
+    IF (first(i)) THEN
       IF (wake_dens(i) < -1.) THEN
         wake_dens(i) = wdens(i)
       ENDIF
-    ENDDO
-    first=.false.
-  ENDIF  ! (first)
+      first(i)=.FALSE.
+    ENDIF  
+  ENDDO
+    
 !>jyg
   IF (prt_level >= 10) THEN
@@ -334,3 +361,3 @@
 END SUBROUTINE calwake
 
-
+END MODULE calwake_mod
Index: LMDZ6/trunk/libf/phylmd/lmdz_wake.f90
===================================================================
--- LMDZ6/trunk/libf/phylmd/lmdz_wake.f90	(revision 5496)
+++ LMDZ6/trunk/libf/phylmd/lmdz_wake.f90	(revision 5499)
@@ -4,7 +4,34 @@
 
   IMPLICIT NONE; PRIVATE
-  PUBLIC wake
+  
+  LOGICAL, PARAMETER :: phys_sub=.false.
+  LOGICAL            :: first_call=.true.
+  !$OMP THREADPRIVATE(first_call)
+
+  PUBLIC wake, wake_first
 
 CONTAINS
+
+SUBROUTINE wake_first(klev, dtime)            
+USE lmdz_wake_ini , ONLY : wk_nsub
+IMPLICIT NONE  
+  INTEGER, INTENT(IN) :: klev
+  REAL, INTENT(IN)    :: dtime
+  REAL                :: dtimesub
+
+  dtimesub = dtime/wk_nsub
+  !
+  IF (first_call) THEN
+    IF (CPPKEY_IOPHYS_WK) THEN
+      IF (phys_sub) THEN
+        call iophys_ini(dtimesub,klev)
+      ELSE
+        call iophys_ini(dtime,klev)
+      ENDIF
+    END IF
+    first_call = .false.
+  ENDIF   !(first_call)
+
+END SUBROUTINE wake_first
 
 SUBROUTINE wake(klon,klev,znatsurf, p, ph, pi, dtime, &
@@ -306,10 +333,4 @@
   REAL, DIMENSION(klon)                                 :: wdens_in, awdens_in   ! pour les prints
 
-!!!  LOGICAL                                               :: phys_sub=.true.
-  LOGICAL                                               :: phys_sub=.false.
-
-  LOGICAL                                               :: first_call=.true.
-
-
   !!-- variables liees au nouveau calcul de ptop et hw
   REAL, DIMENSION (klon, klev)                          :: int_dth
@@ -350,20 +371,9 @@
   ! alpk = 0.05
 !
- igout = klon/2+1/klon
+ igout = klon/2+1/klon  
 !
 !   sub-time-stepping parameters
   dtimesub = dtime/wk_nsub
 !
-IF (first_call) THEN
-IF (CPPKEY_IOPHYS_WK) THEN
-  IF (phys_sub) THEN
-    call iophys_ini(dtimesub,klev)
-  ELSE
-    call iophys_ini(dtime,klev)
-  ENDIF
-END IF
-  first_call = .false.
-ENDIF   !(first_call)
-
  IF (iflag_wk_pop_dyn == 0) THEN
   ! Initialisation de toutes des densites a wdens_ref.
Index: LMDZ6/trunk/libf/phylmd/physiq_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/physiq_mod.F90	(revision 5496)
+++ LMDZ6/trunk/libf/phylmd/physiq_mod.F90	(revision 5499)
@@ -79,4 +79,5 @@
     USE lmdz_lscp_old, ONLY : fisrtilp, fisrtilp_first
     USE lmdz_call_blowing_snow, ONLY : call_blowing_snow_sublim_sedim
+    USE calwake_mod, ONLY : calwake, calwake_first
     USE lmdz_wake_ini, ONLY : wake_ini
     USE lmdz_surf_wind_ini, ONLY : surf_wind_ini, iflag_surf_wind
@@ -3517,4 +3518,5 @@
           !
           !calcul caracteristiques de la poche froide
+          CALL calWAKE_first(phys_tstep)
           CALL calWAKE (iflag_wake_tend, paprs, pplay, phys_tstep, &
                t_seri, q_seri, omega,  &
