Index: LMDZ4/trunk/libf/phylmd/physiq.F
===================================================================
--- LMDZ4/trunk/libf/phylmd/physiq.F	(revision 901)
+++ LMDZ4/trunk/libf/phylmd/physiq.F	(revision 904)
@@ -27,4 +27,5 @@
       USE vampir
       USE pbl_surface_mod, ONLY : pbl_surface
+      USE phys_local_var_mod ! Variables internes non sauvegardees de la physique
 
 
@@ -1163,4 +1164,5 @@
 c vdf: couche limite (Vertical DiFfusion)
       REAL d_t_con(klon,klev),d_q_con(klon,klev)
+      REAL d_t_wake(klon,klev),d_q_wake(klon,klev)
       REAL,SAVE,ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:)
 c$OMP THREADPRIVATE(d_u_con,d_v_con)
@@ -1172,4 +1174,8 @@
       REAL d_t_oli(klon,klev) !tendances dues a oro et lif 
       REAL rneb(klon,klev)
+
+! tendance nulles
+      REAL du0(klon,klev),dv0(klon,klev),dq0(klon,klev),dql0(klon,klev)
+
 c
 *********************************************************
@@ -1262,8 +1268,4 @@
 c
 c Variables locales pour effectuer les appels en serie
-c
-      REAL t_seri(klon,klev), q_seri(klon,klev)
-      REAL ql_seri(klon,klev),qs_seri(klon,klev)
-      REAL u_seri(klon,klev), v_seri(klon,klev)
 c
       REAL tr_seri(klon,klev,nbtr)
@@ -1651,7 +1653,12 @@
 	
 	first=.false.
-      endif 
-
+
+      print*, '================================================='
+      print*, 'Allocation des variables locales non sauvegardees'
+      call phys_local_var_init
+      print*, '================================================='
                   
+      endif  ! fisrt
+
        modname = 'physiq'
 cIM
@@ -2075,4 +2082,11 @@
 c   ****************     Fin  de   IF ( debut  )   ***************
 c
+
+! Tendances bidons pour les processus qui n'affectent pas certaines
+! variables.
+      du0(:,:)=0.
+      dv0(:,:)=0.
+      dq0(:,:)=0.
+      dql0(:,:)=0.
 c
 c Mettre a zero des variables de sortie (pour securite)
@@ -2333,16 +2347,10 @@
 c
 c
-ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
-
       pctsrf(:,:) = pctsrf_new(:,:)
       
-      DO k = 1, klev
-      DO i = 1, klon
-         t_seri(i,k) = t_seri(i,k) + d_t_vdf(i,k)
-         q_seri(i,k) = q_seri(i,k) + d_q_vdf(i,k)
-         u_seri(i,k) = u_seri(i,k) + d_u_vdf(i,k)
-         v_seri(i,k) = v_seri(i,k) + d_v_vdf(i,k)
-      ENDDO
-      ENDDO
+!-----------------------------------------------------------------------------------------
+! ajout des tendances de la diffusion turbulente
+      CALL add_phys_tend(d_u_vdf,d_v_vdf,d_t_vdf,d_q_vdf,dql0,'vdf')
+!-----------------------------------------------------------------------------------------
 
       if (mydebug) then
@@ -2612,12 +2620,8 @@
 c    .              d_u_con, d_v_con)
 
-      DO k = 1, klev
-        DO i = 1, klon
-         t_seri(i,k) = t_seri(i,k) + d_t_con(i,k)
-         q_seri(i,k) = q_seri(i,k) + d_q_con(i,k)
-         u_seri(i,k) = u_seri(i,k) + d_u_con(i,k)
-         v_seri(i,k) = v_seri(i,k) + d_v_con(i,k)
-        ENDDO
-      ENDDO
+!-----------------------------------------------------------------------------------------
+! ajout des tendances de la diffusion turbulente
+      CALL add_phys_tend(d_u_con,d_v_con,d_t_con,d_q_con,dql0,'con')
+!-----------------------------------------------------------------------------------------
 
       if (mydebug) then
@@ -2719,11 +2723,12 @@
      o               ,wake_ddeltat,wake_ddeltaq)
 c
-cIncrementation des tendances de la poche froide
-      DO k = 1, klev
-        DO i = 1, klon
-          t_seri(i,k) = t_seri(i,k) + dt_wake(i,k)*dtime
-          q_seri(i,k) = q_seri(i,k) + dq_wake(i,k)*dtime
-        ENDDO
-      ENDDO
+!-----------------------------------------------------------------------------------------
+! ajout des tendances des poches froides
+! Faire rapidement disparaitre l'ancien dt_wake pour garder un d_t_wake
+! coherent avec les autres d_t_...
+      d_t_wake(:,:)=dt_wake(:,:)*dtime
+      d_q_wake(:,:)=dq_wake(:,:)*dtime
+      CALL add_phys_tend(du0,dv0,d_t_wake,d_q_wake,dql0,'wake')
+!-----------------------------------------------------------------------------------------
 
       endif
@@ -2815,8 +2820,11 @@
          endif
 
-         t_seri(:,:) = t_seri(:,:) + d_t_ajsb(:,:)
-         q_seri(:,:) = q_seri(:,:) + d_q_ajsb(:,:)
+!-----------------------------------------------------------------------------------------
+! ajout des tendances de l'ajustement sec ou des thermiques
+      CALL add_phys_tend(du0,dv0,d_t_ajsb,d_q_ajsb,dql0,'ajsb')
          d_t_ajs(:,:)=d_t_ajs(:,:)+d_t_ajsb(:,:)
          d_q_ajs(:,:)=d_q_ajs(:,:)+d_q_ajsb(:,:)
+
+!-----------------------------------------------------------------------------------------
 
          endif
@@ -2966,9 +2974,10 @@
       WHERE (rain_lsc < 0) rain_lsc = 0.
       WHERE (snow_lsc < 0) snow_lsc = 0.
+!-----------------------------------------------------------------------------------------
+! ajout des tendances de la diffusion turbulente
+      CALL add_phys_tend(du0,dv0,d_t_lsc,d_q_lsc,d_ql_lsc,'lsc')
+!-----------------------------------------------------------------------------------------
       DO k = 1, klev
       DO i = 1, klon
-         t_seri(i,k) = t_seri(i,k) + d_t_lsc(i,k)
-         q_seri(i,k) = q_seri(i,k) + d_q_lsc(i,k)
-         ql_seri(i,k) = ql_seri(i,k) + d_ql_lsc(i,k)
          cldfra(i,k) = rneb(i,k)
          IF (.NOT.new_oliq) cldliq(i,k) = ql_seri(i,k)
@@ -3435,11 +3444,8 @@
 c
 c  ajout des tendances
-        DO k = 1, klev
-        DO i = 1, klon
-           t_seri(i,k) = t_seri(i,k) + d_t_oro(i,k)
-           u_seri(i,k) = u_seri(i,k) + d_u_oro(i,k)
-           v_seri(i,k) = v_seri(i,k) + d_v_oro(i,k)
-        ENDDO
-        ENDDO
+!-----------------------------------------------------------------------------------------
+! ajout des tendances de la trainee de l'orographie
+      CALL add_phys_tend(d_u_oro,d_v_oro,d_t_oro,dq0,dql0,'oro')
+!-----------------------------------------------------------------------------------------
 c
       ENDIF ! fin de test sur ok_orodr
@@ -3473,12 +3479,8 @@
      s                   d_t_lif, d_u_lif, d_v_lif)
 c
-c  ajout des tendances
-        DO k = 1, klev
-        DO i = 1, klon
-           t_seri(i,k) = t_seri(i,k) + d_t_lif(i,k)
-           u_seri(i,k) = u_seri(i,k) + d_u_lif(i,k)
-           v_seri(i,k) = v_seri(i,k) + d_v_lif(i,k)
-        ENDDO
-        ENDDO
+!-----------------------------------------------------------------------------------------
+! ajout des tendances de la portance de l'orographie
+      CALL add_phys_tend(d_u_lif,d_v_lif,d_t_lif,dq0,dql0,'lif')
+!-----------------------------------------------------------------------------------------
 c
       ENDIF ! fin de test sur ok_orolf
@@ -3888,4 +3890,7 @@
      .      t_ancien, q_ancien, rnebcon, ratqs, clwcon,
      .      pbl_tke)
+         open(97,form="unformatted",file="finbin")
+         write(97) u_seri,v_seri,t_seri,q_seri
+         close(97)
       ENDIF
       
