Index: LMDZ6/trunk/libf/phylmd/clesphys.h
===================================================================
--- LMDZ6/trunk/libf/phylmd/clesphys.h	(revision 4443)
+++ LMDZ6/trunk/libf/phylmd/clesphys.h	(revision 4448)
@@ -48,5 +48,4 @@
 !IM, MAFo fmagic, pmagic : parametres - additionnel et multiplicatif - 
 !                          pour regler l albedo sur ocean
-       REAL pbl_lmixmin_alpha
        REAL fmagic, pmagic
 ! Hauteur (imposee) du contenu en eau du sol
@@ -112,5 +111,5 @@
      &     , CH4_ppb, N2O_ppb, CFC11_ppt, CFC12_ppt                     &
      &     , CH4_ppb_per, N2O_ppb_per, CFC11_ppt_per, CFC12_ppt_per     &
-     &     , cdmmax,cdhmax,ksta,ksta_ter,f_ri_cd_min,pbl_lmixmin_alpha  &
+     &     , cdmmax,cdhmax,ksta,ksta_ter,f_ri_cd_min                    &
      &     , fmagic, pmagic                                             &
      &     , f_cdrag_ter,f_cdrag_oce,f_rugoro,z0min,tau_gl              &
Index: LMDZ6/trunk/libf/phylmd/conf_phys_m.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/conf_phys_m.F90	(revision 4443)
+++ LMDZ6/trunk/libf/phylmd/conf_phys_m.F90	(revision 4448)
@@ -198,5 +198,4 @@
     REAL,SAVE :: cdmmax_omp,cdhmax_omp,ksta_omp,ksta_ter_omp,f_ri_cd_min_omp
     LOGICAL,SAVE :: ok_kzmin_omp
-    REAL, SAVE   :: pbl_lmixmin_alpha_omp
     REAL, SAVE ::  fmagic_omp, pmagic_omp
     INTEGER,SAVE :: iflag_pbl_omp,lev_histhf_omp,lev_histday_omp,lev_histmth_omp
@@ -1595,7 +1594,4 @@
     ok_kzmin_omp = .TRUE.
     CALL getin('ok_kzmin',ok_kzmin_omp)
-
-    pbl_lmixmin_alpha_omp=0.0
-    CALL getin('pbl_lmixmin_alpha',pbl_lmixmin_alpha_omp)
 
     !
@@ -2477,5 +2473,4 @@
     f_ri_cd_min = f_ri_cd_min_omp
     ok_kzmin = ok_kzmin_omp
-    pbl_lmixmin_alpha=pbl_lmixmin_alpha_omp
     fmagic = fmagic_omp
     pmagic = pmagic_omp
@@ -2907,5 +2902,4 @@
     WRITE(lunout,*) ' f_ri_cd_min = ',f_ri_cd_min 
     WRITE(lunout,*) ' ok_kzmin = ',ok_kzmin 
-    WRITE(lunout,*) ' pbl_lmixmin_alpha = ',pbl_lmixmin_alpha
     WRITE(lunout,*) ' fmagic = ',fmagic
     WRITE(lunout,*) ' pmagic = ',pmagic
Index: LMDZ6/trunk/libf/phylmd/physiq_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/physiq_mod.F90	(revision 4443)
+++ LMDZ6/trunk/libf/phylmd/physiq_mod.F90	(revision 4448)
@@ -81,4 +81,6 @@
     USE lscp_mod, ONLY : lscp
     USE wake_ini_mod, ONLY : wake_ini
+    USE yamada_ini_mod, ONLY : yamada_ini
+
     USE thermcell_ini_mod, ONLY : thermcell_ini
     USE lscp_ini_mod, ONLY : lscp_ini
@@ -1745,4 +1747,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        CALL wake_ini(rg,rd,rv,prt_level)
+       CALL yamada_ini(klon,lunout,prt_level)
        CALL thermcell_ini(iflag_thermals,prt_level,tau_thermals,lunout, &
    &    RG,RD,RCPD,RKAPPA,RLVTT,RETV)
Index: LMDZ6/trunk/libf/phylmd/yamada4.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/yamada4.F90	(revision 4443)
+++ LMDZ6/trunk/libf/phylmd/yamada4.F90	(revision 4448)
@@ -4,13 +4,11 @@
     cd, tke, km, kn, kq, ustar, iflag_pbl, drgpro)
 
-  USE dimphy
-  USE ioipsl_getin_p_mod, ONLY : getin_p
+  USE dimphy, only : klev,klon
   USE phys_local_var_mod, only: tke_dissip,wprime
+  USE yamada_ini_mod, only : new_yamada4,yamada4_num,hboville
+  USE yamada_ini_mod, only : prt_level, lunout,pbl_lmixmin_alpha,b1,kap,viscom,viscoh
+  USE yamada_ini_mod, only : ric, yun,ydeux,lmixmin
   
   IMPLICIT NONE
-  include "iniprint.h"
-  ! .......................................................................
-  ! ym#include "dimensions.h"
-  ! ym#include "dimphy.h"
   ! ************************************************************************************************
   !
@@ -111,6 +109,4 @@
   !-------
 
-  INCLUDE "clesphys.h"
-
   REAL q2(klon, klev+1)
   REAL kmpre(klon, klev+1), tmp2, qpre
@@ -121,7 +117,4 @@
   INTEGER nlay, nlev
 
-  LOGICAL,SAVE :: hboville=.TRUE.
-  REAL,SAVE :: viscom,viscoh
-  !$OMP THREADPRIVATE( hboville,viscom,viscoh)
   INTEGER ig, jg, k
   REAL ri, zrif, zalpha, zsm, zsn
@@ -136,22 +129,12 @@
   REAL :: disseff
 
-  REAL,SAVE :: ric0,ric,rifc, b1, kap
-  !$OMP THREADPRIVATE(ric0,ric,rifc,b1,kap)
-  DATA b1, kap/16.6, 0.4/
+  REAL,SAVE :: rifc
+  !$OMP THREADPRIVATE(rifc)
   REAL,SAVE :: seuilsm, seuilalpha
   !$OMP THREADPRIVATE(seuilsm, seuilalpha)
-  REAL,SAVE :: lmixmin
-  !$OMP THREADPRIVATE(lmixmin)
-  LOGICAL, SAVE :: new_yamada4
-  INTEGER, SAVE :: yamada4_num
-  !$OMP THREADPRIVATE(new_yamada4,yamada4_num)
-  REAL, SAVE :: yun,ydeux
-  !$OMP THREADPRIVATE(yun,ydeux)
 
   REAL frif, falpha, fsm
   REAL rino(klon, klev+1), smyam(klon, klev), styam(klon, klev), &
     lyam(klon, klev), knyam(klon, klev), w2yam(klon, klev), t2yam(klon, klev)
-  LOGICAL, SAVE :: firstcall = .TRUE.
-  !$OMP THREADPRIVATE(firstcall)
 
   CHARACTER (len = 20) :: modname = 'yamada4'
@@ -168,50 +151,15 @@
   
 
-  IF (firstcall) THEN
-! Seuil dans le code de turbulence 
-    new_yamada4=.false.
-    CALL getin_p('new_yamada4',new_yamada4)
 
     IF (new_yamada4) THEN
 ! Corrections et reglages issus du travail de these d'Etienne Vignon.
-       ric=0.143 ! qui donne des valeurs proches des seuils proposes
-                 ! dans YAMADA 1983 : sm=0.0845 (0.085 dans Y83)
-                 !                    sm=1.1213 (1.12  dans Y83)
-       CALL getin_p('yamada4_ric',ric)
-       ric0=0.19489      ! ric=0.195 originalement, mais produisait sm<0
-       ric=min(ric,ric0) ! Au dela de ric0, sm devient n??gatif
        rifc=frif(ric)
        seuilsm=fsm(frif(ric))
        seuilalpha=falpha(frif(ric))
-       yun=1.
-       ydeux=2.
-       hboville=.FALSE.
-       viscom=1.46E-5
-       viscoh=2.06E-5
-       !lmixmin=1.0E-3
-       lmixmin=0.
-       yamada4_num=5
     ELSE
-       ric=0.195
        rifc=0.191
        seuilalpha=1.12
        seuilsm=0.085
-       yun=2.
-       ydeux=1.
-       hboville=.TRUE.
-       viscom=0.
-       viscoh=0.
-       lmixmin=1.
-       yamada4_num=0
     ENDIF
-
-    WRITE(lunout,*)'YAMADA4 RIc, RIfc, Sm_min, Alpha_min',ric,rifc,seuilsm,seuilalpha
-    firstcall = .FALSE.
-    CALL getin_p('lmixmin',lmixmin)
-    CALL getin_p('yamada4_hboville',hboville)
-    CALL getin_p('yamada4_num',yamada4_num)
-  END IF
-
-
 
 !===============================================================================
@@ -760,5 +708,5 @@
 SUBROUTINE vdif_q2(timestep, gravity, rconst, ngrid, plev, temp, kmy, q2)
 
-  USE dimphy
+  USE dimphy, only : klev,klon
   IMPLICIT NONE
  
@@ -849,5 +797,5 @@
  SUBROUTINE vdif_q2e(timestep, gravity, rconst, ngrid, plev, temp, kmy, q2)
   
-   USE dimphy
+   USE dimphy, only : klev,klon
   IMPLICIT NONE
 
@@ -920,7 +868,9 @@
 
 
-  USE dimphy
+  USE dimphy, only : klev,klon
+  USE yamada_ini_mod, only : l0
   USE phys_state_var_mod, only: zstd, zsig, zmea
   USE phys_local_var_mod, only: l_mixmin, l_mix
+  USE yamada_ini_mod, only : kap, kapb
 
  ! zstd: ecart type de la'altitud e sous-maille
@@ -982,7 +932,4 @@
 !-------
 
-  LOGICAL, SAVE :: firstcall = .TRUE.
-  !$OMP THREADPRIVATE(firstcall)
-
 ! Outputs
 !---------
@@ -997,10 +944,6 @@
  REAL     h_oro(klon)
  REAL     hlim(klon)
- REAL, SAVE :: kap=0.4,kapb=0.4
-  !$OMP THREADPRIVATE(kap,kapb)
  REAL zq
  REAL sq(klon), sqz(klon)
- REAL, ALLOCATABLE, SAVE :: l0(:)
-  !$OMP THREADPRIVATE(l0)
  REAL fl, zzz, zl0, zq2, zn2
  REAL famorti, zzzz, zh_oro, zhlim
@@ -1030,9 +973,4 @@
 
   IF (ngrid==0) RETURN
-
-  IF (firstcall) THEN
-    ALLOCATE (l0(klon))
-    firstcall = .FALSE.
-  END IF
 
 
Index: LMDZ6/trunk/libf/phylmd/yamada_ini_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/yamada_ini_mod.F90	(revision 4448)
+++ LMDZ6/trunk/libf/phylmd/yamada_ini_mod.F90	(revision 4448)
@@ -0,0 +1,89 @@
+MODULE yamada_ini_mod
+
+! AFAIRE : frif defini deux fois.
+! peut on passer une fonction du module au code.
+
+implicit none
+
+save
+
+  LOGICAL :: new_yamada4
+  INTEGER :: yamada4_num
+  !$OMP THREADPRIVATE(new_yamada4,yamada4_num)
+  LOGICAL :: hboville=.TRUE.
+  REAL :: viscom,viscoh,pbl_lmixmin_alpha
+  !$OMP THREADPRIVATE( hboville,viscom,viscoh)
+  real :: ric, yun,ydeux,lmixmin,b1,kap,kapb
+  !$OMP THREADPRIVATE(ric, yun,ydeux,lmixmin,b1,kap,kapb)
+
+  real, dimension(:), allocatable, save :: l0
+  !$OMP THREADPRIVATE(l0)
+  integer :: lunout,prt_level
+  !$OMP THREADPRIVATE(lunout,prt_level)
+
+
+CONTAINS
+
+SUBROUTINE yamada_ini(klon,lunout_in,prt_level_in)
+
+   USE ioipsl_getin_p_mod, ONLY : getin_p
+
+! local
+  integer, intent(in) :: klon,lunout_in,prt_level_in
+  real :: ric0
+  real frif,falpha,fsm,ri
+
+  lunout=lunout_in
+  prt_level=prt_level_in
+
+  b1=16.6
+  kap=0.4
+  kapb=0.4
+
+    ALLOCATE (l0(klon))
+
+   new_yamada4=.false.
+   CALL getin_p('new_yamada4',new_yamada4)
+
+
+    IF (new_yamada4) THEN
+! Corrections et reglages issus du travail de these d'Etienne Vignon.
+       ric=0.143 ! qui donne des valeurs proches des seuils proposes
+                 ! dans YAMADA 1983 : sm=0.0845 (0.085 dans Y83)
+                 !                    sm=1.1213 (1.12  dans Y83)
+
+       CALL getin_p('yamada4_ric',ric)
+       ric0=0.19489      ! ric=0.195 originalement, mais produisait sm<0
+       ric=min(ric,ric0) ! Au dela de ric0, sm devient n??gatif
+       yun=1.
+       ydeux=2.
+       hboville=.FALSE.
+       viscom=1.46E-5
+       viscoh=2.06E-5
+       !lmixmin=1.0E-3
+       lmixmin=0.
+       yamada4_num=5
+    ELSE
+       ric=0.195
+       yun=2.
+       ydeux=1.
+       hboville=.TRUE.
+       viscom=0.
+       viscoh=0.
+       lmixmin=1.
+       yamada4_num=0
+    ENDIF
+
+
+!    WRITE(lunout,*)'YAMADA4 RIc, RIfc, Sm_min, Alpha_min',ric,rifc,seuilsm,seuilalpha
+    CALL getin_p('lmixmin',lmixmin)
+    CALL getin_p('yamada4_hboville',hboville)
+    CALL getin_p('yamada4_num',yamada4_num)
+
+
+   
+ RETURN
+
+END SUBROUTINE yamada_ini
+
+END MODULE yamada_ini_mod
