Index: LMDZ4/trunk/libf/dyn3dpar/conf_gcm.F
===================================================================
--- LMDZ4/trunk/libf/dyn3dpar/conf_gcm.F	(revision 1034)
+++ LMDZ4/trunk/libf/dyn3dpar/conf_gcm.F	(revision 1046)
@@ -720,4 +720,12 @@
       ok_strato=.FALSE.
       CALL getin('ok_strato',ok_strato)
+
+!Config  Key  = ok_gradsfile
+!Config  Desc = activation des sorties grads du guidage
+!Config  Def  = n
+!Config  Help = active les sorties grads du guidage
+
+       ok_gradsfile = .FALSE.
+       CALL getin('ok_gradsfile',ok_gradsfile)
 
       write(lunout,*)' #########################################'
@@ -757,4 +765,5 @@
       write(lunout,*)' omp_chunk = ', omp_chunk
       write(lunout,*)' ok_strato = ', ok_strato
+      write(lunout,*)' ok_gradsfile = ', ok_gradsfile
 c
       RETURN
Index: LMDZ4/trunk/libf/dyn3dpar/conf_guide.F
===================================================================
--- LMDZ4/trunk/libf/dyn3dpar/conf_guide.F	(revision 1034)
+++ LMDZ4/trunk/libf/dyn3dpar/conf_guide.F	(revision 1046)
@@ -19,5 +19,8 @@
       call getpar('online',1,online,'Index de controle du guide')
       CALL getpar('ncep',.false.,ncep,'Coordonnee vert NCEP ou ECMWF')
+      CALL getpar('guide_modele',.false.,guide_modele,
+     $            'guidage sur niveaux modele')
       CALL getpar('ini_anal',.false.,ini_anal,'Initial = analyse')
+      CALL getpar('ok_invertp',.true.,ok_invertp,'niveaux p inverses')
 
       CALL getpar('guide_u',.true.,guide_u,'guidage de u')
@@ -26,4 +29,6 @@
       CALL getpar('guide_P',.true.,guide_P,'guidage de P')
       CALL getpar('guide_Q',.true.,guide_Q,'guidage de Q')
+      CALL getpar('guide_hr',.true.,guide_hr,'guidage de Q par H.R')
+      CALL getpar('guide_BL',.true.,guide_BL,'guidage dans C.Lim')
 
 c   Constantes de rappel. Unite : fraction de jour
@@ -38,4 +43,5 @@
       CALL getpar('tau_min_P',0.02,tau_min_P,'Cste de rappel min, P')
       CALL getpar('tau_max_P', 10.,tau_max_P,'Cste de rappel max, P')
+      CALL getpar('gamma4',.false.,gamma4,'Zone sans rappel elargie')
 
 c   Latitude min et max pour le rappel.
Index: LMDZ4/trunk/libf/dyn3dpar/guide.h
===================================================================
--- LMDZ4/trunk/libf/dyn3dpar/guide.h	(revision 1034)
+++ LMDZ4/trunk/libf/dyn3dpar/guide.h	(revision 1046)
@@ -10,5 +10,6 @@
 
 
-      logical guide_u,guide_v,guide_T,guide_Q,guide_P
+      logical guide_u,guide_v,guide_T,guide_Q,guide_P,guide_modele
+      logical guide_BL,guide_hr,gamma4
 
       real lat_min_guide,lat_max_guide
@@ -21,5 +22,5 @@
 c     data tau_min_P,tau_max_P/0.02,10./
 c
-      LOGICAL ncep,ini_anal
+      LOGICAL ncep,ini_anal,ok_invertp
       integer online
 
@@ -37,3 +38,5 @@
      s ncep,ini_anal,
      s online,
-     s guide_u,guide_v,guide_T,guide_Q,guide_P
+     s guide_u,guide_v,guide_T,guide_Q,guide_P,
+     s guide_modele,ok_invertp,
+     s guide_hr,guide_BL,gamma4
Index: LMDZ4/trunk/libf/dyn3dpar/guide_p.F
===================================================================
--- LMDZ4/trunk/libf/dyn3dpar/guide_p.F	(revision 1034)
+++ LMDZ4/trunk/libf/dyn3dpar/guide_p.F	(revision 1046)
@@ -79,4 +79,5 @@
       real alpha_T(ip1jmp1),alpha_P(ip1jmp1)
       real alpha_u(ip1jmp1),alpha_v(ip1jm)
+      real alpha_pcor(llm)
       real dday_step,toto,reste,itau_test
       INTEGER step_rea,count_no_rea
@@ -112,4 +113,5 @@
 
       save alpha_T,alpha_q,alpha_u,alpha_v,alpha_P,itau_test
+      save alpha_pcor
       save step_rea,count_no_rea
 
@@ -159,8 +161,10 @@
 	 
 	 if (mpi_rank==0) then
+         if (ok_gradsfile) then
          call inigrads(igrads,iip1
      s  ,rlonv,180./pi,-180.,180.,jjp1,rlatu,-90.,90.,180./pi
      s  ,llm,presnivs,1.
      s  ,dtgrads,file,'dyn_zon ')
+         endif !ok_gradsfile
          endif
 	 
@@ -208,5 +212,13 @@
 c           physic=.false.
          endif
-
+c correction de rappel dans couche limite
+c F.Codron
+         if (guide_BL) then
+           alpha_pcor(:)=1.
+         else
+           do l=1,llm
+             alpha_pcor(l)=(1.+tanh((0.85-presnivs(l)/preff)/0.05))/2.
+           enddo
+         endif
          itau_test=1001
          step_rea=1
@@ -216,5 +228,7 @@
 c lecture d'un fichier netcdf pour determiner le nombre de niveaux
          IF (mpi_rank==0) THEN
-	
+         if (guide_modele) then
+           if (ncidpl.eq.-99) ncidpl=NCOPN('apbp.nc',NCNOWRIT,rcod)
+         else	
          if (guide_u) then
            if (ncidpl.eq.-99) ncidpl=NCOPN('u.nc',NCNOWRIT,rcod)
@@ -233,4 +247,5 @@
          endif
 c
+         endif 
          if (ncep) then
           status=NF_INQ_DIMID(ncidpl,'LEVEL',rid)
@@ -239,9 +254,6 @@
          endif
           status=NF_INQ_DIMLEN(ncidpl,rid,nlev)
-         print *,'nlev', nlev 
-          call ncclos(ncidpl,rcod)
-	 
-	 ENDIF
-	 
+         print *,'nlev guide', nlev 
+         call ncclos(ncidpl,rcod)
 c   Lecture du premier etat des reanalyses.
          call Gather_Field(ps,ip1jmp1,1,0)
@@ -316,4 +328,5 @@
       
        if (mpi_rank==0) then
+        if (ok_gradsfile) then
          call wrgrads(igrads,1,aire   ,'aire      ','aire      ' )
          call wrgrads(igrads,1,dxdys  ,'dxdy      ','dxdy      ' )
@@ -328,4 +341,5 @@
          call wrgrads(igrads,llm,q,'Q         ','Q         ' )
          call wrgrads(igrads,llm,qsat,'QSAT      ','QSAT      ' )
+       endif !(ok_gradsfile) then
       endif
       
@@ -357,5 +371,6 @@
             do ij=ijb,ije
                 a=(1.-tau)*ucovrea1(ij,l)+tau*ucovrea2(ij,l)
-                ucov(ij,l)=(1.-alpha_u(ij))*ucov(ij,l)+alpha_u(ij)*a
+                ucov(ij,l)=(1.-alpha_u(ij))*ucov(ij,l)+alpha_u(ij)
+     $                     *alpha_pcor(l)*a
                 if (first.and.ini_anal) ucov(ij,l)=a
             enddo
@@ -368,5 +383,6 @@
             do ij=ijb,ije
                 a=(1.-tau)*tetarea1(ij,l)+tau*tetarea2(ij,l)
-                teta(ij,l)=(1.-alpha_T(ij))*teta(ij,l)+alpha_T(ij)*a
+                teta(ij,l)=(1.-alpha_T(ij))*teta(ij,l)+alpha_T(ij)
+     $                     *alpha_pcor(l)*a
                 if (first.and.ini_anal) teta(ij,l)=a
             enddo
@@ -393,5 +409,6 @@
 c   hum relative en % -> hum specif
                 a=qsat(ij,l)*a*0.01
-                q(ij,l)=(1.-alpha_Q(ij))*q(ij,l)+alpha_Q(ij)*a
+                q(ij,l)=(1.-alpha_Q(ij))*q(ij,l)+alpha_Q(ij)
+     $                     *alpha_pcor(l)*a
                 if (first.and.ini_anal) q(ij,l)=a
             enddo
@@ -406,5 +423,6 @@
             do ij=ijb,ije
                 a=(1.-tau)*vcovrea1(ij,l)+tau*vcovrea2(ij,l)
-                vcov(ij,l)=(1.-alpha_v(ij))*vcov(ij,l)+alpha_v(ij)*a
+                vcov(ij,l)=(1.-alpha_v(ij))*vcov(ij,l)+alpha_v(ij)
+     $                     *alpha_pcor(l)*a
                 if (first.and.ini_anal) vcov(ij,l)=a
             enddo
@@ -493,6 +511,6 @@
          enddo
 
-         call dump2d(iip1,jjp1,dxdys,'DX2DY2 SCAL  ')
-         call dump2d(iip1,jjp1,dxdyu,'DX2DY2 U     ')
+c         call dump2d(iip1,jjp1,dxdys,'DX2DY2 SCAL  ')
+c         call dump2d(iip1,jjp1,dxdyu,'DX2DY2 U     ')
          call dump2d(iip1,jjp1,dxdyv,'DX2DY2 v     ')
 
@@ -520,6 +538,9 @@
               stop
             endif
+            gamma=log(0.5)/log(gamma)
+            if (gamma4) then 
+              gamma=min(gamma,4.)
+            endif
             print*,'gamma=',gamma
-            gamma=log(0.5)/log(gamma)
          endif
       endif
Index: LMDZ4/trunk/libf/dyn3dpar/logic.h
===================================================================
--- LMDZ4/trunk/libf/dyn3dpar/logic.h	(revision 1034)
+++ LMDZ4/trunk/libf/dyn3dpar/logic.h	(revision 1046)
@@ -9,9 +9,9 @@
       COMMON/logic/ purmats,iflag_phys,forward,leapf,apphys,            &
      &  statcl,conser,apdiss,apdelq,saison,ecripar,fxyhypb,ysinus       &
-     &  ,read_start,ok_guide,ok_strato
+     &  ,read_start,ok_guide,ok_strato,ok_gradsfile
 
       LOGICAL purmats,forward,leapf,apphys,statcl,conser,               &
      & apdiss,apdelq,saison,ecripar,fxyhypb,ysinus                      &
-     &  ,read_start,ok_guide,ok_strato
+     &  ,read_start,ok_guide,ok_strato,ok_gradsfile
 
       INTEGER iflag_phys
Index: LMDZ4/trunk/libf/dyn3dpar/pres2lev.F
===================================================================
--- LMDZ4/trunk/libf/dyn3dpar/pres2lev.F	(revision 1034)
+++ LMDZ4/trunk/libf/dyn3dpar/pres2lev.F	(revision 1046)
@@ -4,5 +4,5 @@
 c******************************************************
       SUBROUTINE   pres2lev(varo,varn,lmo,lmn,po,pn,
-     %                      ni,nj)
+     %                      ni,nj,ok_invertp)
 c
 c interpolation lineaire pour passer
@@ -10,6 +10,6 @@
 c les variables de GCM
 c Francois Forget (01/1995)
-c 
 c MOdif remy roca 12/97 pour passer de pres2sig
+c Modif F.Codron 07/08 po en 3D
 c**********************************************************
 
@@ -21,5 +21,5 @@
 c  ARGUMENTS
 c  """""""""
-
+       LOGICAL ok_invertp
        INTEGER lmo ! dimensions ancienne couches (input)
        INTEGER lmn ! dimensions nouvelle couches (input)
@@ -29,6 +29,6 @@
        parameter(lmomx=10000,lmnmx=10000)
 
-        real po(lmo)! niveau de pression en millibars
-        real pn(ni,nj,lmn) ! niveau de pression en pascals
+        real po(ni,nj,lmo)! niveau de pression ancienne grille
+        real pn(ni,nj,lmn) ! niveau de pression nouvelle grille
 
        INTEGER i,j,Nhoriz,ni,nj ! nombre de point horizontale (input)
@@ -48,11 +48,17 @@
         do i=1,ni
         do j=1,nj
-c a chaque point de grille correspond un nouveau sigma old
-c qui vaut pres(l)/ps(i,j)
+! Inversion de l'ordre des niveaux verticaux
+          IF (ok_invertp) THEN
            do lo=1,lmo
-              zpo(lo)=po(lmo+1-lo)
+              zpo(lo)=po(i,j,lmo+1-lo)
               zvaro(lo)=varo(i,j,lmo+1-lo)
            enddo
-        
+          ELSE
+           do lo=1,lmo
+              zpo(lo)=po(i,j,lo)
+              zvaro(lo)=varo(i,j,lo)
+           enddo
+          ENDIF 
+
            do ln=1,lmn
               if (pn(i,j,ln).ge.zpo(1))then
Index: LMDZ4/trunk/libf/dyn3dpar/read_reanalyse.F
===================================================================
--- LMDZ4/trunk/libf/dyn3dpar/read_reanalyse.F	(revision 1034)
+++ LMDZ4/trunk/libf/dyn3dpar/read_reanalyse.F	(revision 1046)
@@ -26,9 +26,8 @@
 #include "guide.h"
 
-
 c arguments
 c ---------
       integer nlevnc
-      integer timestep,mode,l
+      integer timestep,mode
 
       real psi(iip1,jjp1)
@@ -37,11 +36,11 @@
       real masse(iip1,jjp1,llm),pk(iip1,jjp1,llm)
 
-
 c local
 c -----
       integer ncidu,varidu,ncidv,varidv,ncidt,varidt,ncidps,varidps
       integer ncidpl
-      integer varidpl,ncidQ,varidQ
-      save ncidpl,ncidu,varidu,ncidv,varidv,ncidt,varidt,ncidps,varidps
+      integer varidpl,ncidQ,varidQ,varidap,varidbp
+      save ncidu,varidu,ncidv,varidv,ncidt,varidt,ncidps,varidps
+      save ncidpl,varidap,varidbp
       save varidpl,ncidQ,varidQ
 
@@ -49,7 +48,9 @@
       real*4 tnc(iip1,jjp1,nlevnc),psnc(iip1,jjp1)
       real*4 Qnc(iip1,jjp1,nlevnc)
-      real*4 pl(nlevnc),presnc(iip1,jjp1,nlevnc)
+      real*4 plnc(iip1,jjp1,nlevnc)
+      real*4 apnc(nlevnc),bpnc(nlevnc)
 
       integer start(4),count(4),status
+      integer i,j,l
 
       real rcode
@@ -60,6 +61,4 @@
       data first/.true./
 
-
-
 c -----------------------------------------------------------------
 c   Initialisation de la lecture des fichiers
@@ -68,4 +67,14 @@
            ncidpl=-99
            print*,'Intitialisation de read reanalsye'
+
+c Niveaux de pression si non constants
+            if (guide_modele) then
+            print *,'Vous êtes entrain de lire des données sur 
+     .               niveaux modèle'
+            ncidpl=NCOPN('apbp.nc',NCNOWRIT,rcode)
+            varidap=NCVID(ncidpl,'AP',rcode)
+            varidbp=NCVID(ncidpl,'BP',rcode)
+            print*,'ncidpl,varidap',ncidpl,varidap
+            endif
 
 c Vent zonal
@@ -82,7 +91,6 @@
                varidv=NCVID(ncidv,'VWND',rcode)
                print*,'ncidv,varidv',ncidv,varidv
-               if (ncidpl.eq.-99) ncidpl=ncidu
-            endif
-           
+               if (ncidpl.eq.-99) ncidpl=ncidv
+            endif
 
 c Temperature
@@ -91,7 +99,7 @@
                varidt=NCVID(ncidt,'AIR',rcode)
                print*,'ncidt,varidt',ncidt,varidt
-               if (ncidpl.eq.-99) ncidpl=ncidu
-            endif
-            
+               if (ncidpl.eq.-99) ncidpl=ncidt
+            endif
+
 c Humidite
             if (guide_Q) then
@@ -99,16 +107,17 @@
                varidQ=NCVID(ncidQ,'RH',rcode)
                print*,'ncidQ,varidQ',ncidQ,varidQ
-               if (ncidpl.eq.-99) ncidpl=ncidu
-            endif
-            
+               if (ncidpl.eq.-99) ncidpl=ncidQ
+            endif
+
 c Pression de surface
-            if (guide_P) then
+            if ((guide_P).OR.(guide_modele)) then
                ncidps=NCOPN('ps.nc',NCNOWRIT,rcode)
                varidps=NCVID(ncidps,'SP',rcode)
                print*,'ncidps,varidps',ncidps,varidps
             endif
-            
-c Coordonnee vertcale
-            if (ncep) then
+
+c Coordonnee verticale
+            if (.not.guide_modele) then
+              if (ncep) then
                print*,'Vous etes entrain de lire des donnees NCEP'
                varidpl=NCVID(ncidpl,'LEVEL',rcode)
@@ -116,9 +125,10 @@
                print*,'Vous etes entrain de lire des donnees ECMWF'
                varidpl=NCVID(ncidpl,'PRESSURE',rcode)
+              endif
+              print*,'ncidpl,varidpl',ncidpl,varidpl
             endif
             print*,'ncidu,varidpl',ncidu,varidpl
 
       endif
-
       print*,'ok1'
 
@@ -126,28 +136,4 @@
 c   lecture des champs u, v, T, ps
 c -----------------------------------------------------------------
-
-c  niveaux de pression
-c  -------------------
-
-      print*,'WARNING!!! Il n y a pas de test de coherence'
-      print*,'sur le nombre de niveaux verticaux dans le fichier nc'
-#ifdef NC_DOUBLE
-      status=NF_GET_VARA_DOUBLE(ncidpl,varidpl,1,nlevnc,pl)
-#else
-      status=NF_GET_VARA_REAL(ncidpl,varidpl,1,nlevnc,pl)
-#endif
-     
-c  passage en pascal
-      pl(:)=100.*pl(:)
-c  passage des presions sur une grille 3D
-      do l=1,nlevnc
-         presnc(:,:,l)=pl(l)
-      enddo
-      if(first) then
-         do l=1,nlevnc
-            print*,'PL(',l,')=',pl(l)
-         enddo
-      endif
-
 
 c  dimensions pour les champs scalaires et le vent zonal
@@ -163,5 +149,4 @@
       count(3)=nlevnc
       count(4)=1
-
 
 c mise a zero des tableaux 
@@ -171,4 +156,5 @@
        tnc(:,:,:)=0.
        Qnc(:,:,:)=0.
+       plnc(:,:,:)=0.
 
 c  Vent zonal
@@ -183,10 +169,8 @@
          status=NF_GET_VARA_REAL(ncidu,varidu,start,count,unc)
 #endif
-c     call dump2d(iip1,jjp1,unc,'VENT NCEP   ')
-c     call dump2d(iip1,40,unc(1,1,nlevnc),'VENT NCEP   ')
-         print*,'WARNING!!! Correction bidon pour palier a un '
-         print*,'probleme dans la creation des fichiers nc'
-         call correctbid(iim,jjp1*nlevnc,unc)
-         call dump2d(iip1,jjp1,unc,'UNC COUCHE 1 ')
+      print*,'WARNING!!! Correction bidon pour palier a un '
+      print*,'probleme dans la creation des fichiers nc'
+      call correctbid(iim,jjp1*nlevnc,unc)
+      call dump2d(iip1,jjp1,unc,'UNC COUCHE 1 ')
       endif
 
@@ -242,6 +226,6 @@
 c  Pression de surface
 c  -------------------
-
-      if (guide_P) then
+      psnc(:,:)=0.
+      if ((guide_P).OR.(guide_modele))  then
 #ifdef NC_DOUBLE
          status=NF_GET_VARA_DOUBLE(ncidps,varidps,start,count,psnc)
@@ -253,10 +237,59 @@
       endif
 
-
+c Calcul de la pression aux differents niveaux
+c --------------------------------------------
+      if (guide_modele) then
+#ifdef NC_DOUBLE
+      status=NF_GET_VARA_DOUBLE(ncidpl,varidap,1,nlevnc,apnc)
+      status=NF_GET_VARA_DOUBLE(ncidpl,varidbp,1,nlevnc,bpnc)
+#else
+      status=NF_GET_VARA_REAL(ncidpl,varidap,1,nlevnc,apnc)
+      status=NF_GET_VARA_REAL(ncidpl,varidbp,1,nlevnc,bpnc)
+#endif
+      else
+#ifdef NC_DOUBLE
+      status=NF_GET_VARA_DOUBLE(ncidpl,varidpl,1,nlevnc,apnc)
+#else
+      status=NF_GET_VARA_REAL(ncidpl,varidpl,1,nlevnc,apnc)
+#endif
+c conversion en Pascals
+      apnc=apnc*100.
+      bpnc(:)=0.
+      endif
+      do i=1,iip1
+        do j=1,jjp1
+          do l=1,nlevnc
+            plnc(i,j,l)=apnc(l)+bpnc(l)*psnc(i,j)
+          enddo
+        enddo
+      enddo
+      if (first) then
+        print*,'Verification ordre niveaux verticaux'
+        print*,'LMDZ :'
+        do l=1,llm
+           print*,'PL(',l,')=',(ap(l)+ap(l+1))/2.
+     $                    +psi(1,jjp1)*(bp(l)+bp(l+1))/2.
+        enddo
+        print*,'Fichiers guidage'
+        do l=1,nlevnc
+           print*,'PL(',l,')=',plnc(1,1,l)
+        enddo
+        if (guide_u) then
+          do l=1,nlevnc
+            print*,'U(',l,')=',unc(1,1,l)
+          enddo
+        endif
+        if (guide_T) then
+          do l=1,nlevnc
+            print*,'T(',l,')=',tnc(1,1,l)
+          enddo
+        endif
+        print *,'inversion de l''ordre: ok_invertp=',ok_invertp
+      endif
 
 c -----------------------------------------------------------------
 c  Interpollation verticale sur les niveaux modele
 c -----------------------------------------------------------------
-      call reanalyse2nat(nlevnc,psi,unc,vnc,tnc,Qnc,psnc,pl,u,v,t,Q
+      call reanalyse2nat(nlevnc,psi,unc,vnc,tnc,Qnc,psnc,plnc,u,v,t,Q
      s    ,ps,masse,pk)
 
@@ -288,5 +321,5 @@
 c===========================================================================
       subroutine reanalyse2nat(nlevnc,psi
-     s   ,unc,vnc,tnc,qnc,psnc,pl,u,v,t,q
+     s   ,unc,vnc,tnc,qnc,psnc,plnc,u,v,t,q
      s   ,ps,masse,pk)
 c===========================================================================
@@ -311,5 +344,5 @@
       real t(iip1,jjp1,llm),ps(iip1,jjp1),q(iip1,jjp1,llm)
 
-      real pl(nlevnc)
+      real plnc(iip1,jjp1,nlevnc)
       real unc(iip1,jjp1,nlevnc),vnc(iip1,jjm,nlevnc)
       real tnc(iip1,jjp1,nlevnc),psnc(iip1,jjp1)
@@ -396,8 +429,8 @@
 
 c -----------------------------------------------------------------
-      call pres2lev(unc,zu,nlevnc,llm,pl,plunc,iip1,jjp1)
-      call pres2lev(vnc,zv,nlevnc,llm,pl,plvnc,iip1,jjm )
-      call pres2lev(tnc,zt,nlevnc,llm,pl,plsnc,iip1,jjp1)
-      call pres2lev(qnc,zq,nlevnc,llm,pl,plsnc,iip1,jjp1)
+      call pres2lev(unc,zu,nlevnc,llm,plnc,plunc,iip1,jjp1,ok_invertp)
+      call pres2lev(vnc,zv,nlevnc,llm,plnc,plvnc,iip1,jjm,ok_invertp )
+      call pres2lev(tnc,zt,nlevnc,llm,plnc,plsnc,iip1,jjp1,ok_invertp)
+      call pres2lev(qnc,zq,nlevnc,llm,plnc,plsnc,iip1,jjp1,ok_invertp)
 
 c     call dump2d(iip1,jjp1,ps,'PS    ')
@@ -500,5 +533,5 @@
 c  Humidite relative -> specifique
 c  -------------------------------
-      if (1.eq.0) then
+      if (guide_hr) then
 c   FINALEMENT ON GUIDE EN HUMIDITE RELATIVE
       print*,'calcul de unskap'
@@ -513,9 +546,11 @@
       q(:,:,:)=qsat(:,:,:)*rh(:,:,:)
       print*,'calcul de q OK'
-
+      call dump2d(iip1,jjp1,q,'HUMIDITE SPECIFIQUE COUCHE 1   ') 
       call dump2d(iip1,jjp1,pres,'PRESSION PREMIERE COUCHE   ')
+      else
+      q(:,:,:)=rh(:,:,:)
+      print*,'calcul de q OK'
       call dump2d(iip1,jjp1,q,'HUMIDITE SPECIFIQUE COUCHE 1   ') 
-      endif
-
+      endif 
 
       return
