Index: /LMDZ.3.3/branches/rel-LF/libf/phylmd/clmain.F
===================================================================
--- /LMDZ.3.3/branches/rel-LF/libf/phylmd/clmain.F	(revision 437)
+++ /LMDZ.3.3/branches/rel-LF/libf/phylmd/clmain.F	(revision 438)
@@ -7,6 +7,6 @@
      .                  jour, rmu0,
      .                  ok_veget, ocean, npas, nexca, ts,
-     .                  soil_model,ftsoil,
-     .                  paprs,pplay,radsol,snow,qsol,evap,albe,alblw,
+     .                  soil_model,ftsoil,qsol,
+     .                  paprs,pplay,radsol,snow,qsurf,evap,albe,alblw,
      .                  fluxlat,
      .                  rain_f, snow_f, solsw, sollw, sollwdown, fder,
@@ -110,5 +110,5 @@
       REAL d_ts(klon,nbsrf)
       REAL snow(klon,nbsrf)
-      REAL qsol(klon,nbsrf)
+      REAL qsurf(klon,nbsrf)
       REAL evap(klon,nbsrf)
       REAL albe(klon,nbsrf)
@@ -133,4 +133,5 @@
       REAL ftsoil(klon,nsoilmx,nbsrf)
       REAL ytsoil(klon,nsoilmx)
+      REAL qsol(klon)
 c======================================================================
       EXTERNAL clqh, clvent, coefkz, calbeta, cltrac
@@ -140,5 +141,5 @@
       REAL yalblw(klon)
       REAL yu1(klon), yv1(klon)
-      real ysnow(klon), yqsol(klon), yagesno(klon)
+      real ysnow(klon), yqsurf(klon), yagesno(klon), yqsol(klon)
       real yrain_f(klon), ysnow_f(klon)
       real ysollw(klon), ysolsw(klon), ysollwdown(klon)
@@ -225,5 +226,12 @@
       PARAMETER(t_coup=273.15)
 C
-      PRINT*,'IMclmain klon=',klon
+      character (len = 20) :: modname = 'clmain'
+      LOGICAL check
+      PARAMETER (check=.true.)
+C
+      if (check) THEN
+          write(*,*) modname,'  klon=',klon
+          call flush(6)
+      endif
       IF (first_appel) THEN
           first_appel=.false.
@@ -283,5 +291,5 @@
       yts = 0.0
       ysnow = 0.0
-      yqsol = 0.0
+      yqsurf = 0.0
       yalb = 0.0
       yalblw = 0.0
@@ -377,5 +385,8 @@
       ENDDO
 c
-c      write(*,*)'CLMAIN, nsrf, knon =',nsrf, knon
+      if (check) THEN
+          write(*,*)'CLMAIN, nsrf, knon =',nsrf, knon
+          call flush(6)
+      endif
 c
 c variables pour avoir une sortie IOIPSL des INDEX
@@ -399,5 +410,5 @@
         yts(j) = ts(i,nsrf)
         ysnow(j) = snow(i,nsrf)
-        yqsol(j) = qsol(i,nsrf)
+        yqsurf(j) = qsurf(i,nsrf)
         yalb(j) = albe(i,nsrf)
         yalblw(j) = alblw(i,nsrf)
@@ -436,4 +447,12 @@
         ypaprs(j,klev+1) = paprs(i,klev+1)
       END DO
+      IF ( nsrf .eq. is_ter ) THEN 
+          DO j = 1, knon
+            i = ni(j)
+            yqsol(j) = qsol(i)
+          END DO
+      ELSE 
+          yqsol(:)=0.
+      ENDIF 
 c$$$ PB ajour pour soil
       DO k = 1, nsoilmx
@@ -460,6 +479,5 @@
       CALL coefkz(nsrf, knon, ypaprs, ypplay,
      .            yts, yrugos, yu, yv, yt, yq,
-cIM remplace qsurf par yqsol
-     .            yqsol, 
+     .            yqsurf, 
      .            ycoefm, ycoefh)
       CALL coefkz2(nsrf, knon, ypaprs, ypplay,yt,
@@ -493,10 +511,10 @@
      e          rlon, rlat, cufi, cvfi,
      e          knon, nsrf, ni, pctsrf,
-     e          soil_model, ytsoil,
+     e          soil_model, ytsoil,yqsol,
      e          ok_veget, ocean, npas, nexca,
      e          rmu0, yrugos, yrugoro,
      e          yu1, yv1, ycoefh,
      e          yt,yq,yts,ypaprs,ypplay,
-     e          ydelp,yrads,yalb, yalblw, ysnow, yqsol, 
+     e          ydelp,yrads,yalb, yalblw, ysnow, yqsurf, 
      e          yrain_f, ysnow_f, yfder, ytaux, ytauy, 
 c$$$     e          ysollw, ysolsw,
@@ -548,5 +566,5 @@
       alblw(:, nsrf) = 0.
       snow(:, nsrf) = 0.
-      qsol(:, nsrf) = 0.
+      qsurf(:, nsrf) = 0.
       rugos(:, nsrf) = 0.
       fluxlat(:,nsrf) = 0.
@@ -557,5 +575,5 @@
          alblw(i,nsrf) = yalblw(j)
          snow(i,nsrf) = ysnow(j)
-         qsol(i,nsrf) = yqsol(j)
+         qsurf(i,nsrf) = yqsurf(j)
          rugos(i,nsrf) = yz0_new(j)
          fluxlat(i,nsrf) = yfluxlat(j)
@@ -572,4 +590,10 @@
          zv1(i) = zv1(i) + yv1(j)
       END DO
+      IF ( nsrf .eq. is_ter ) THEN 
+      DO j = 1, knon
+         i = ni(j)
+         qsol(i) = yqsol(j)
+      END DO
+      END IF 
 c$$$ PB ajout pour soil
       ftsoil(:,:,nsrf) = 0.
@@ -624,30 +648,37 @@
         patm(j)=ypplay(j,1)
 c
-        IF (nsrf.EQ.1) THEN
-          qairsol(j) = yqsol(j)
-        ELSE IF(nsrf.GT.1) THEN
-         zt = ts(i,nsrf)
-         IF (thermcep) THEN
-           zdelta = MAX(0.,SIGN(1.,RTT-zt))
-           zqs = R2ES * FOEEW(zt,zdelta) / ypplay(j,1)
-           zqs = MIN(0.5,zqs)
-           zcor = 1./(1.-RETV*zqs)
-           zqs = zqs*zcor
-         ELSE
-           IF (zt .LT. t_coup) THEN
-             zqs = qsats(zt) / ypplay(j,1)
-           ELSE
-             zqs = qsatl(zt) / ypplay(j,1)
-           ENDIF
-         ENDIF   
-         qairsol(j) = zqs
-        ENDIF   
-      ENDDO
-c
-      IF(nsrf.EQ.3) THEN
-       j=1465
-       WRITE(*,*)' INstO',klon,knon,nsrf,zxli,uzon(j),vmer(j), 
-     & tair1(j),qair1(j),zgeo1(j),tairsol(j),qairsol(j),rugo1(j),
-     & psfce(j),patm(j)
+        qairsol(j) = yqsurf(j)
+c$$$        IF (nsrf.EQ.1) THEN
+c$$$          qairsol(j) = yqsurf(j)
+c$$$        ELSE IF(nsrf.GT.1) THEN
+c$$$         zt = ts(i,nsrf)
+c$$$         IF (thermcep) THEN
+c$$$           zdelta = MAX(0.,SIGN(1.,RTT-zt))
+c$$$           zqs = R2ES * FOEEW(zt,zdelta) / ypplay(j,1)
+c$$$           zqs = MIN(0.5,zqs)
+c$$$           zcor = 1./(1.-RETV*zqs)
+c$$$           zqs = zqs*zcor
+c$$$         ELSE
+c$$$           IF (zt .LT. t_coup) THEN
+c$$$             zqs = qsats(zt) / ypplay(j,1)
+c$$$           ELSE
+c$$$             zqs = qsatl(zt) / ypplay(j,1)
+c$$$           ENDIF
+c$$$         ENDIF   
+c$$$         qairsol(j) = zqs
+c$$$        ENDIF   
+      ENDDO
+c
+      if (check) THEN
+       WRITE(*,*)' avant stdlevvar. nsrf=',nsrf
+       IF(nsrf.EQ.3) THEN
+        j=1465
+        WRITE(*,*)' INstO',klon,knon,nsrf,zxli,uzon(j),vmer(j), 
+     &      tair1(j),qair1(j),zgeo1(j),tairsol(j),qairsol(j),rugo1(j),
+     &      psfce(j),patm(j)
+       ENDIF
+       WRITE(*,*)' qairsol (min, max)'
+     $     , minval(qairsol(1:knon)), maxval(qairsol(1:knon))
+       call flush(6)
       ENDIF
 c
@@ -658,4 +689,5 @@
 
 c
+      if (check) THEN
       IF(nsrf.EQ.3) THEN
        j=1465
@@ -664,4 +696,6 @@
      & psfce(j),patm(j)
        WRITE(*,*)' tqu',yt2m(j),yq2m(j),yu10m(j)
+          call flush(6)
+      ENDIF
       ENDIF
 c
@@ -670,10 +704,11 @@
        t2m(i,nsrf)=yt2m(j)
 
-        IF(nsrf.EQ.3) THEN
-         IF(j.EQ.1465) THEN
+       if (check) THEN
+        IF(nsrf.EQ.3 .and. j.EQ.1465) THEN
          WRITE(*,*) 't2m APRES stdlev',j,i,tair1(j),t2m(i,nsrf),
      $   tairsol(j),rlon(i),rlat(i)
-         ENDIF
+         call flush(6)
         ENDIF
+       ENDIF
 c
        q2m(i,nsrf)=yq2m(j)
@@ -706,10 +741,10 @@
      e                rlon, rlat, cufi, cvfi, 
      e                knon, nisurf, knindex, pctsrf,
-     $                soil_model,tsoil,
+     $                soil_model,tsoil,qsol,
      e                ok_veget, ocean, npas, nexca,
      e                rmu0, rugos, rugoro,
      e                u1lay,v1lay,coef,
      e                t,q,ts,paprs,pplay,
-     e                delp,radsol,albedo,alblw,snow,qsol, 
+     e                delp,radsol,albedo,alblw,snow,qsurf, 
      e                precip_rain, precip_snow, fder, taux, tauy,
      $                sollw, sollwdown, swnet,fluxlat, 
@@ -753,5 +788,5 @@
       REAL alblw(klon)
       REAL snow(klon)         ! hauteur de neige
-      REAL qsol(klon)         ! humidite de la surface
+      REAL qsurf(klon)         ! humidite de l'air au dessus de la surface
       real precip_rain(klon), precip_snow(klon)
       REAL agesno(klon)
@@ -822,4 +857,5 @@
       LOGICAL soil_model
       REAL tsoil(klon, nsoilmx)
+      REAL qsol(klon)
 
 ! Parametres de sortie
@@ -830,7 +866,20 @@
 c JLD
       real zzpk
-      
-c
-
+C
+      character (len = 20) :: modname = 'Debut clqh'
+      LOGICAL check
+      PARAMETER (check=.true.)
+C
+      if (check) THEN
+          write(*,*) modname,' nisurf=',nisurf
+          call flush(6)
+      endif
+c
+      if (check) THEN
+       WRITE(*,*)' qsurf (min, max)'
+     $     , minval(qsurf(1:knon)), maxval(qsurf(1:knon))
+       call flush(6)
+      ENDIF
+C
       if (.not. contreg) then
         do k = 2, klev
@@ -969,10 +1018,10 @@
      e klon, iim, jjm, nisurf, knon, knindex, pctsrf, 
      e rlon, rlat, cufi, cvfi, 
-     e debut, lafin, ok_veget, soil_model, nsoilmx,tsoil,
+     e debut, lafin, ok_veget, soil_model, nsoilmx,tsoil, qsol,
      e zlev1,  u1lay, v1lay, temp_air, spechum, epot_air, ccanopy, 
      e tq_cdrag, petAcoef, peqAcoef, petBcoef, peqBcoef,
      e precip_rain, precip_snow, sollw, sollwdown, swnet, swdown,
      e fder, taux, tauy, rugos, rugoro,
-     e albedo, snow, qsol,
+     e albedo, snow, qsurf,
      e ts, p1lay, psref, radsol,
      e ocean, npas, nexca, zmasq,
@@ -1146,6 +1195,5 @@
      .                  ts, rugos,
      .                  u,v,t,q,
-cIM remplace qsurf par yqsol
-     .                  qsol, 
+     .                  qsurf, 
      .                  pcfm, pcfh)
       IMPLICIT none
@@ -1237,7 +1285,5 @@
 c contre-gradient pour la chaleur sensible: Kelvin/metre
       REAL gamt(2:klev)
-c essai qsurf
-cIM   real qsurf(klon)
-      real qsol(klon) 
+      real qsurf(klon) 
 c
       LOGICAL appel1er
@@ -1277,11 +1323,9 @@
       ENDDO
 
-cIM remplace qsurf par qsol
-      IF(nsrf.NE.1) THEN
-      do i = 1, knon
-cIM     qsurf(i) = qsatl(ts(i))/paprs(i,1)
-        qsol(i) = qsatl(ts(i))/paprs(i,1)
-      enddo
-      ENDIF
+c$$$      IF(nsrf.NE.1) THEN
+c$$$      do i = 1, knon
+c$$$        qsurf(i) = qsatl(ts(i))/paprs(i,1)
+c$$$      enddo
+c$$$      ENDIF
 
 c
