Index: LMDZ.3.3/branches/rel-LF/libf/dyn3d/gcm.F
===================================================================
--- LMDZ.3.3/branches/rel-LF/libf/dyn3d/gcm.F	(revision 392)
+++ LMDZ.3.3/branches/rel-LF/libf/dyn3d/gcm.F	(revision 403)
@@ -126,4 +126,17 @@
       LOGICAL first
       REAL alpha(ip1jmp1,llm),beta(ip1jmp1,llm)
+c+jld variables test conservation energie
+      REAL ecin(ip1jmp1,llm),ecin0(ip1jmp1,llm)
+C     Tendance de la temp. potentiel d (theta)/ d t due a la 
+C     tansformation d'energie cinetique en energie thermique
+C     cree par la dissipation
+      REAL dhecdt(ip1jmp1,llm)
+      REAL vcont(ip1jm,llm),ucont(ip1jmp1,llm)
+      REAL      d_h_vcol, d_qt, d_qw, d_ql, d_ec
+      CHARACTER*15 ztit
+      INTEGER   ip_ebil  ! PRINT level for energy conserv. diag.
+      SAVE      ip_ebil
+      DATA      ip_ebil/1/
+c-jld 
 
       LOGICAL offline  ! Controle du stockage ds "fluxmass"
@@ -274,4 +287,10 @@
       CALL inidissip( lstardis, nitergdiv, nitergrot, niterh   ,
      *                tetagdiv, tetagrot , tetatemp              )
+c+jld
+C     initialisation constantes thermo utilisees dans diagedyn
+      IF (ip_ebil.ge.1 ) THEN
+        CALL suphec
+      ENDIF 
+c-jld
 c
 
@@ -327,4 +346,6 @@
 
    1  CONTINUE
+
+
 
       if (ok_nudge) then
@@ -475,5 +496,12 @@
 c rajout debug
 c       lafin = .true.
-
+c+jld
+      IF (ip_ebil.ge.1 ) THEN 
+          ztit='bil dyn'
+          CALL diagedyn(ztit,2,1,1,dtphys
+     e  , ucov    , vcov , ps, p ,pk , teta , q(:,:,1), q(:,:,2),aire
+     s  , d_h_vcol , d_qt, d_qw, d_ql, d_ec)
+      ENDIF 
+c-jld
         CALL calfis( nqmx, lafin ,rdayvrai,rday_ecri,time  ,
      $                 ucov,vcov,teta,q,masse,ps,p,pk,phis,phi ,
@@ -486,4 +514,12 @@
      $                 dufi, dvfi, dhfi , dqfi ,dpfi  )
 c
+c+jld
+      IF (ip_ebil.ge.1 ) THEN 
+          ztit='bil phys'
+          CALL diagedyn(ztit,2,1,1,dtphys
+     e  , ucov    , vcov , ps, p ,pk , teta , q(:,:,1), q(:,:,2),aire
+     s  , d_h_vcol , d_qt, d_qw, d_ql, d_ec)
+      ENDIF 
+c-jld
        ENDIF
 
@@ -498,4 +534,14 @@
 
       IF(apdiss) THEN
+c+jld
+      IF (ip_ebil.ge.2 ) THEN 
+          ztit='avant dissip'
+          CALL diagedyn(ztit,2,2,2,dtvr
+     e  , ucov    , vcov , ps, p ,pk , teta , q(:,:,1), q(:,:,2),aire
+     s  , d_h_vcol , d_qt, d_qw, d_ql, d_ec)
+      ENDIF 
+        CALL covcont  ( llm    , ucov    , vcov , ucont, vcont        )
+        CALL enercin ( vcov   , ucov  , vcont     , ucont  , ecin0  )
+c-jld
 
          CALL dissip(vcov,ucov,teta,p,dvdis,dudis,dhdis)
@@ -503,6 +549,27 @@
          CALL addit( ijp1llm,ucov ,dudis,ucov )
          CALL addit( ijmllm ,vcov ,dvdis,vcov )
+c+jld
+        CALL covcont  ( llm    , ucov    , vcov , ucont, vcont        )
+        CALL enercin ( vcov   , ucov  , vcont     , ucont  , ecin  )
+C
+C       On rajoute la tendance due a la transform. Ec -> E therm. cree
+C       lors de la dissipation
+        DO l  =  1, llm
+          DO    ij     = 1, ip1jmp1
+            dhecdt(ij,l)= (ecin0(ij,l)-ecin(ij,l))/ pk(ij,l)
+            dhdis(ij,l) = dhdis(ij,l) + dhecdt(ij,l)
+          ENDDO
+        ENDDO
+c-jld
          CALL addit( ijp1llm,teta ,dhdis,teta )
-
+c+jld
+c
+         IF (ip_ebil.ge.2 ) THEN 
+             ztit='apres dissip'
+             CALL diagedyn(ztit,2,2,2,dtdiss
+     e  , ucov    , vcov , ps, p ,pk , teta , q(:,:,1), q(:,:,2),aire
+     s  , d_h_vcol , d_qt, d_qw, d_ql, d_ec)
+         ENDIF 
+c-jld
 
 c    .......        P. Le Van (  ajout  le 17/04/96  )   ...........
@@ -570,4 +637,5 @@
 
             IF( itau. EQ. itaufinp1 ) then  
+
               abort_message = 'Simulation finished'
               call abort_gcm(modname,abort_message,0)
@@ -585,4 +653,8 @@
                CALL writedynav(histaveid, nqmx, itau,vcov ,
      ,                          ucov,teta,pk,phi,q,masse,ps,phis)
+cccIM cf. FH
+               call bilan_dyn (2,dtvr*iperiod,dtvr*day_step*periodav,
+     ,           ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q)
+
             ENDIF
 
@@ -676,4 +748,7 @@
                CALL writedynav(histaveid, nqmx, itau,vcov ,
      ,                          ucov,teta,pk,phi,q,masse,ps,phis)
+cccIM cf. FH
+               call bilan_dyn (2,dtvr*iperiod,dtvr*day_step*periodav,
+     ,           ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q)
 
             ENDIF
