Index: trunk/LMDZ.VENUS/libf/phyvenus/clmain.F
===================================================================
--- trunk/LMDZ.VENUS/libf/phyvenus/clmain.F	(revision 3899)
+++ trunk/LMDZ.VENUS/libf/phyvenus/clmain.F	(revision 3900)
@@ -1,5 +1,10 @@
-!
-! $Header: /home/cvsroot/LMDZ4/libf/phylmd/clmain.F,v 1.3 2005/02/07 16:41:35 fairhead Exp $
-!
+      MODULE clmain_mod
+      
+      IMPLICIT NONE
+      
+      integer,save :: iflag_pbl ! PBL scheme number
+C$OMP THREADPRIVATE(iflag_pbl)
+      
+      CONTAINS
 c
 c
@@ -20,19 +25,9 @@
 cAA REM:
 cAA-----
-cAA Tout ce qui a trait au traceurs est dans phytrac maintenant
-cAA pour l'instant le calcul de la couche limite pour les traceurs
-cAA se fait avec cltrac et ne tient pas compte de la differentiation
-cAA des sous-fraction de sol.
+cAA Tracers are not handled here but in phytrac.
 cAA REM bis :
 cAA----------
-cAA Pour pouvoir extraire les coefficient d'echanges et le vent 
-cAA dans la premiere couche, 3 champs supplementaires ont ete crees
-cAA zcoefh,zu1 et zv1. Pour l'instant nous avons moyenne les valeurs
-cAA de ces trois champs sur les 4 subsurfaces du modele. Dans l'avenir 
-cAA si les informations des subsurfaces doivent etre prises en compte
-cAA il faudra sortir ces memes champs en leur ajoutant une dimension, 
-cAA c'est a dire nbsrf (nbre de subsurface).
-!      USE ioipsl
-!      USE interface_surf
+cAA To extract exchange coefficients and wind in the first layer 
+cAA 3 dedicated fields have been added: zcoefh,zu1 et zv1.
       use dimphy, only: klon, klev
       use mod_grid_phy_lmdz, only: nbp_lev
@@ -40,6 +35,7 @@
       use turb_mod, only :yustar
       use soil_mod, only: nsoilmx
-      use clesphys_mod
-      use YOMCST_mod
+      use clesphys_mod, only: soil_model, ok_kzmin
+      use YOMCST_mod, only: RD, RG
+      use print_control_mod, only: lunout, prt_level
       
 #ifdef CPP_XIOS      
@@ -49,77 +45,55 @@
       IMPLICIT none
 c======================================================================
-c Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
-c Objet: interface de "couche limite" (diffusion verticale)
-c Arguments:
-c dtime----input-R- interval du temps (secondes)
-c itap-----input-I- numero du pas de temps
-c t--------input-R- temperature (K)
-c u--------input-R- vitesse u
-c v--------input-R- vitesse v
-c ts-------input-R- temperature du sol (en Kelvin)
-c paprs----input-R- pression a intercouche (Pa)
-c pplay----input-R- pression au milieu de couche (Pa)
-c radsol---input-R- flux radiatif net (positif vers le sol) en W/m**2
-c rlat-----input-R- latitude en degree
-c dx-----input-R- resolution des mailles en x (m)
-c dy-----input-R- resolution des mailles en y (m)
-c
-c q2-----inoutput-R- $q^2$ TKE at inter-layers
-c
-c d_t------output-R- le changement pour "t"
-c d_u------output-R- le changement pour "u"
-c d_v------output-R- le changement pour "v"
-c d_ts-----output-R- le changement pour "ts"
-c flux_t---output-R- flux de chaleur sensible (CpT) J/m**2/s (W/m**2)
-c                    (orientation positive vers le bas)
-c flux_u---output-R- tension du vent X: (kg m/s)/(m**2 s) ou Pascal
-c flux_v---output-R- tension du vent Y: (kg m/s)/(m**2 s) ou Pascal
-c dflux_t derive du flux sensible
-cAA on rajoute en output yu1 et yv1 qui sont les vents dans 
-cAA la premiere couche
-c======================================================================
-      include "iniprint.h"
-      include "compbl.h"
-c
-c Parametres d'entree
-      REAL, INTENT(IN) :: dtime
-      INTEGER, INTENT(IN) :: itap
-      REAL, INTENT(IN) :: t(klon,klev)
-      REAL, INTENT(IN) :: u(klon,klev), v(klon,klev)
-      REAL, INTENT(IN) :: paprs(klon,klev+1), pplay(klon,klev)
-! ADAPTATION GCM POUR CP(T)
+c Interface for the "boundary layer" (vertical diffusion)
+c======================================================================
+
+c
+c Input arguments:
+      REAL, INTENT(IN) :: dtime ! physics time step (s)
+      INTEGER, INTENT(IN) :: itap ! physics time step counter
+      REAL, INTENT(IN) :: t(klon,klev) ! atmospheric temperature (K)
+      REAL, INTENT(IN) :: u(klon,klev) ! zonal wind (m/s)
+      REAL, INTENT(IN) :: v(klon,klev) ! meridional wind (m/s)
+      REAL, INTENT(IN) :: paprs(klon,klev+1) ! pressure at layer boundaries (Pa)
+      REAL, INTENT(IN) :: pplay(klon,klev) ! pressure at mid-layer (Pa)
+! ADAPTATION GCM FOR CP(T)
       REAL, INTENT(IN) :: ppk(klon,klev)
-      REAL, INTENT(IN) :: rlon(klon), rlat(klon), dx(klon), dy(klon)
+      REAL, INTENT(IN) :: rlon(klon) ! longitudes (deg)
+      REAL, INTENT(IN) :: rlat(klon) ! latitudes (deg)
+      REAL, INTENT(IN) :: dx(klon) ! mesh size along x (m)
+      REAL, INTENT(IN) :: dy(klon) ! mesh size along y (m)
       REAL, INTENT(IN) :: rmu0(klon)         ! cosine of solar zenith angle
-      LOGICAL, INTENT(IN) :: debut, lafin
-      REAL, INTENT(IN) :: ts(klon)
+      LOGICAL, INTENT(IN) :: debut ! .true. if first call to physics
+      LOGICAL, INTENT(IN) :: lafin ! .true. if last call to physics
+      REAL, INTENT(IN) :: ts(klon) ! surface temperature (K)
       REAL, INTENT(IN) :: sollw(klon), solsw(klon), sollwdown(klon)
       
-c Param�tres IN/OUT
+c IN/OUT arguments:
       REAL, INTENT(INOUT) :: fder(klon)
-      REAL, INTENT(INOUT) :: flux_u(klon,klev), flux_v(klon,klev)
-      REAL, INTENT(INOUT) :: radsol(klon)
-      REAL, INTENT(INOUT) :: q2(klon,klev+1)
-      
-c Parametres de sorties
-      REAL, INTENT(OUT) :: d_t(klon, klev)
-      REAL, INTENT(OUT) :: d_u(klon, klev), d_v(klon, klev)
-      REAL, INTENT(OUT) :: flux_t(klon,klev)
-      REAL, INTENT(OUT) :: dflux_t(klon)
-      REAL, INTENT(OUT) :: cdragh(klon), cdragm(klon)
-      REAL, INTENT(OUT) :: d_ts(klon)
-      REAL, INTENT(OUT) :: albe(klon)
+      REAL, INTENT(INOUT) :: flux_u(klon,klev) ! zonal wind stress (kg m/s)/(m**2 s) or Pa
+      REAL, INTENT(INOUT) :: flux_v(klon,klev) ! meridional wind stress (kg m/s)/(m**2 s) or Pa
+      REAL, INTENT(INOUT) :: radsol(klon) ! net radiative flux (positive towards ground) W/m**2
+      REAL, INTENT(INOUT) :: q2(klon,klev+1) ! $q^2$ TKE at inter-layers
+      
+c output arguments
+      REAL, INTENT(OUT) :: d_t(klon, klev) ! temperature increment (K)
+      REAL, INTENT(OUT) :: d_u(klon, klev) ! zonal wind increment (m/s)
+      REAL, INTENT(OUT) :: d_v(klon, klev) ! meridional wind increment (m/s)
+      REAL, INTENT(OUT) :: flux_t(klon,klev) ! latent heat flux (CpT) J/m**2/s (W/m**2)
+                                             ! (positive when downwards)
+      REAL, INTENT(OUT) :: dflux_t(klon) ! derivative of sensible heat flux
+      REAL, INTENT(OUT) :: cdragh(klon)
+      REAL, INTENT(OUT) :: cdragm(klon)
+      REAL, INTENT(OUT) :: d_ts(klon) ! surface temperature increment (K)
+      REAL, INTENT(INOUT) :: albe(klon) ! albedo of the surface
 cAA
       REAL, INTENT(OUT) :: zcoefh(klon,klev)
-      REAL, INTENT(OUT) :: zu1(klon)
-      REAL, INTENT(OUT) :: zv1(klon)
+      REAL, INTENT(OUT) :: zu1(klon) ! zonal wind in 1st layer (m/s)
+      REAL, INTENT(OUT) :: zv1(klon) ! meridional wind in 1st layer (m/s)
 cAA
-c$$$ PB ajout pour soil
-      REAL, INTENT(INOUT) :: ftsoil(klon,nsoilmx)
-
-c======================================================================
-      EXTERNAL clqh, clvent, coefkz
-c======================================================================
-c Parametre locaux
+      REAL, INTENT(INOUT) :: ftsoil(klon,nsoilmx) ! subsurface temperatures (K)
+
+c======================================================================
+c Local variables
       REAL ytsoil(klon,nsoilmx)
       REAL yts(klon)
@@ -149,5 +123,4 @@
       real y_cd_m(klon),y_cd_h(klon)
 c
-c      include "YOMCST.h"
       REAL u1lay(klon), v1lay(klon)
       REAL delp(klon,klev)
@@ -155,27 +128,24 @@
       INTEGER ni(klon), knon, j     
 c======================================================================
-      REAL zx_alf1, zx_alf2 !valeur ambiante par extrapola.
-c======================================================================
-c
-      LOGICAL zxli ! utiliser un jeu de fonctions simples
-      PARAMETER (zxli=.FALSE.)
+      REAL zx_alf1, zx_alf2 ! ambient values used for extrapolation
+c======================================================================
+c
+      LOGICAL,PARAMETER :: zxli=.FALSE. ! use simple functions testcase
 c
       REAL zt, zdelta, zcor
 C
       character (len = 20) :: modname = 'clmain'
-      LOGICAL check
-      PARAMETER (check=.false.)
+      LOGICAL,PARAMETER :: check=.false.
 C
       if (check) THEN
-          write(*,*) modname,'  klon=',klon
-          call flush(6)
+          write(*,*) trim(modname),'  klon=',klon
       endif
           
-      DO k = 1, klev   ! epaisseur de couche
+      DO k = 1, klev   ! thickness of atmospheric layers
       DO i = 1, klon
          delp(i,k) = paprs(i,k)-paprs(i,k+1)
       ENDDO
       ENDDO
-      DO i = 1, klon  ! vent de la premiere couche
+      DO i = 1, klon  !  wind in the first layer
 ccc         zx_alf1 = (paprs(i,1)-pplay(i,2))/(pplay(i,1)-pplay(i,2))
          zx_alf1 = 1.0
@@ -233,5 +203,5 @@
       ENDDO
 c
-c chercher les indices:
+c identify indexes:
       DO j = 1, klon
          ni(j) = j
@@ -255,5 +225,5 @@
       END DO
 C
-c$$$ PB ajour pour soil
+c$$$ for the soil
       DO k = 1, nsoilmx
         DO j = 1, knon
@@ -276,10 +246,10 @@
 c
 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
-c calculer Cdrag et les coefficients d'echange
+c compute Cdrag and exchange coefficients
 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
 
 c-------------------------------------------------
-c  Calcul anciens du LMD. 
-c  dans les routines coefkz, coefkz2, coefkzmin
+c  Old LMD computations. 
+c  in routines coefkz, coefkz2, coefkzmin
 c-------------------------------------------------
 
@@ -300,9 +270,9 @@
 cIM: 261103
         if (ok_kzmin) THEN
-! ADAPTATION GCM POUR CP(T)
-           print*," coefkzmin: ADAPTATION NON FAITE..."
+! ADAPTATION GCM FOR CP(T)
+           print*," coefkzmin: NOT ADAPTATED..."
 cIM cf FH: 201103 BEG
 
-c   Calcul d'une diffusion minimale pour les conditions tres stables.
+c   Compute minimal diffusion for very stable conditions.
 c        call coefkzmin(knon,ypaprs,ypplay,yu,yv,yt,ycoefm
 c    .   ,ycoefm0,ycoefh0)
@@ -327,5 +297,5 @@
       IF (iflag_pbl.ge.3) then
 c-------------------------------------------------
-c MELLOR ET YAMADA adapte a Mars Richard Fournier et Frederic Hourdin
+c MELLOR ET YAMADA adapted to Mars Richard Fournier and Frederic Hourdin
 c-------------------------------------------------
 
@@ -339,5 +309,5 @@
          enddo
 
-! ADAPTATION GCM POUR CP(T)
+! ADAPTATION GCM FOR CP(T)
          call t2tpot(knon*nbp_lev,yt,yteta,ppk)
 
@@ -349,13 +319,6 @@
 
 
-c   Bug introduit volontairement pour converger avec les resultats
-c  du papier sur les thermiques.
-         if (1.eq.1) then
          y_cd_m(1:knon) = ycoefm(1:knon,1)
          y_cd_h(1:knon) = ycoefh(1:knon,1)
-         else
-         y_cd_h(1:knon) = ycoefm(1:knon,1)
-         y_cd_m(1:knon) = ycoefh(1:knon,1)
-         endif
 
          call ustarhb(knon,yu,yv,y_cd_m, yustar)
@@ -365,5 +328,5 @@
         ENDIF
 
-c   iflag_pbl peut etre utilise comme longueur de melange
+c   iflag_pbl can be used as mixing length
 
          if (iflag_pbl.ge.11) then
@@ -391,5 +354,5 @@
 
 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
-c calculer la diffusion des vitesses "u" et "v"
+c compute diffusion for winds "u" et "v"
 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
 
@@ -399,18 +362,13 @@
      s            y_d_v,y_flux_v)
  
-c pour le couplage
+c for the coupling
       ytaux = y_flux_u(:,1)
       ytauy = y_flux_v(:,1)
 
-c FH modif sur le cdrag temperature
-c$$$PB : d�place dans clcdrag
-c$$$      do i=1,knon
-c$$$         ycoefh(i,1)=ycoefm(i,1)*0.8
-c$$$      enddo
 
 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
-c calculer la diffusion de "q" et de "h"
+c compute diffusion for "q" and "h"
 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
-! ADAPTATION GCM POUR CP(T)
+! ADAPTATION GCM FOR CP(T)
       CALL clqh(dtime, itap, debut,lafin,
      e          rlon, rlat, dx, dy,
@@ -430,5 +388,5 @@
          d_ts(i) = y_d_ts(j)
 c----------------------------------------
-c VENUS TEST: tendance sur Tsurf forcee = 0
+c VENUS TEST: tendancy on Tsurf forced = 0
 c        d_ts(i) = 0.
 c----------------------------------------
@@ -441,5 +399,5 @@
       END DO
 
-c$$$ PB ajout pour soil
+c for the subsurface
       DO k = 1, nsoilmx
         DO j = 1, knon
@@ -462,5 +420,5 @@
       ENDDO
 
-      END
+      END SUBROUTINE clmain
 
 C=================================================================
@@ -487,13 +445,10 @@
       use mod_grid_phy_lmdz, only: nbp_lon, nbp_lat, nbp_lev
       use cpdet_phy_mod, only: t2tpot,tpot2t,cpdet
-      use YOMCST_mod
+      use YOMCST_mod, only: RD, RG, RKAPPA, RMD
 
       IMPLICIT none
 c======================================================================
-c Auteur(s): Z.X. Li (LMD/CNRS) date: 19930818
-c Objet: diffusion verticale de "h"
-c======================================================================
-c      include "YOMCST.h"
-      include "iniprint.h"
+c Compute vertical diffusion for "h"
+c======================================================================
 
 c Arguments:
@@ -554,6 +509,4 @@
       REAL zdelz
 c======================================================================
-      include "compbl.h"
-c======================================================================
 c Rajout pour l'interface
       real zlev1(klon)
@@ -569,6 +522,6 @@
 
       character (len = 20) :: modname = 'Debut clqh'
-      LOGICAL check
-      PARAMETER (check=.false.)
+      LOGICAL,PARAMETER :: check=.false.
+
 C
 c----------------------
@@ -790,5 +743,5 @@
 c
 
-      END
+      END SUBROUTINE clqh
       
 c======================================================================
@@ -804,5 +757,5 @@
 
       use dimphy, only: klon, klev
-      use YOMCST_mod
+      use YOMCST_mod, only: RD, RG
 
       IMPLICIT none
@@ -828,5 +781,4 @@
 c flux_v---output-R- (diagnostic) flux du vent: (kg m/s)/(m**2 s)
 c======================================================================
-c      include "iniprint.h"
 
 c Parametres d'entree
@@ -925,5 +877,5 @@
       ENDDO
 c
-      END
+      END SUBROUTINE clvent
       
 c======================================================================
@@ -940,9 +892,10 @@
       use dimphy, only: klon, klev
       use cpdet_phy_mod, only: cpdet,t2tpot
-      use clesphys_mod
+      use clesphys_mod, only: ksta, lmixmin
 #ifdef CPP_XIOS      
       use xios_output_mod, only: send_xios_field
 #endif
-      use YOMCST_mod
+      use YOMCST_mod, only: R, RD, RG, RKAPPA
+      use print_control_mod, only: lunout, prt_level
       IMPLICIT none
 c======================================================================
@@ -964,8 +917,5 @@
 c pcfh-----output-R- coefficients a calculer (chaleur et humidite)
 c======================================================================
-c      include "YOMCST.h"
-      include "iniprint.h"
-      include "compbl.h"
-c      include "clesphys.h"
+
 c
 c Arguments:
@@ -1044,4 +994,5 @@
 c
       LOGICAL, SAVE :: appel1er = .TRUE.
+C$OMP THREADPRIVATE(appel1er)
 c
 c Fonctions thermodynamiques et fonctions d'instabilite
@@ -1259,5 +1210,5 @@
 c#endif
 
-      END
+      END SUBROUTINE coefkz
 
 C=================================================================
@@ -1272,5 +1223,5 @@
       use mod_grid_phy_lmdz, only: nbp_lev
       use cpdet_phy_mod, only: cpdet
-      use YOMCST_mod
+      use YOMCST_mod, only: RD
       IMPLICIT none
 c======================================================================
@@ -1288,6 +1239,4 @@
 c pcfh-----output-R- coefficients a calculer (chaleur et humidite)
 c======================================================================
-c      include "YOMCST.h"
-      include "iniprint.h"
 c
 c Arguments:
@@ -1336,4 +1285,5 @@
       ENDDO
 c
-      END
-
+      END SUBROUTINE coefkz2
+
+      END MODULE clmain_mod
Index: trunk/LMDZ.VENUS/libf/phyvenus/clmain_ideal.F
===================================================================
--- trunk/LMDZ.VENUS/libf/phyvenus/clmain_ideal.F	(revision 3899)
+++ trunk/LMDZ.VENUS/libf/phyvenus/clmain_ideal.F	(revision 3900)
@@ -31,4 +31,5 @@
       use dimphy, only: klon, klev
       use soil_mod, only: nsoilmx
+      use clmain_mod, only: clvent
 
       IMPLICIT none
Index: trunk/LMDZ.VENUS/libf/phyvenus/compbl.h
===================================================================
--- trunk/LMDZ.VENUS/libf/phyvenus/compbl.h	(revision 3899)
+++ 	(revision )
@@ -1,2 +1,0 @@
-      integer iflag_pbl
-      common/compbl/iflag_pbl
Index: trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90
===================================================================
--- trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90	(revision 3899)
+++ trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90	(revision 3900)
@@ -13,11 +13,8 @@
    use age_of_air_mod, only: ok_aoa, reinit_aoa, lev_aoa
    use clesphys_mod
+   use clmain_mod, only: iflag_pbl
    use YOMCST_mod
 
    implicit none
-
-   !include "YOMCST.h"
-   !include "clesphys.h"
-   include "compbl.h"
 
 ! ok_journe:  sorties journalieres
Index: trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F
===================================================================
--- trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F	(revision 3899)
+++ trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F	(revision 3900)
@@ -87,4 +87,5 @@
       use soil_mod, only: nsoilmx
       use hgardfou_mod, only: hgardfou
+      use clmain_mod, only: clmain
       use clmain_ideal_mod, only: clmain_ideal
       use clesphys_mod
