Index: /LMDZ5/trunk/libf/dyn3d/leapfrog.F
===================================================================
--- /LMDZ5/trunk/libf/dyn3d/leapfrog.F	(revision 2474)
+++ /LMDZ5/trunk/libf/dyn3d/leapfrog.F	(revision 2475)
@@ -686,4 +686,7 @@
                ENDIF
                
+!              ! Ehouarn: re-compute geopotential for outputs
+               CALL geopot(ip1jmp1,teta,pk,pks,phis,phi)
+
                IF (ok_dynzon) THEN
 #ifdef CPP_IOIPSL
@@ -821,4 +824,7 @@
                ENDIF
 
+!              ! Ehouarn: re-compute geopotential for outputs
+               CALL geopot(ip1jmp1,teta,pk,pks,phis,phi)
+
                IF (ok_dynzon) THEN 
 #ifdef CPP_IOIPSL
Index: /LMDZ5/trunk/libf/dyn3dmem/bilan_dyn_loc.F
===================================================================
--- /LMDZ5/trunk/libf/dyn3dmem/bilan_dyn_loc.F	(revision 2474)
+++ /LMDZ5/trunk/libf/dyn3dmem/bilan_dyn_loc.F	(revision 2475)
@@ -16,5 +16,5 @@
       USE mod_hallo
       use misc_mod
-      use write_field
+      USE write_field_loc
       IMPLICIT NONE
 
@@ -171,5 +171,4 @@
       
       INTEGER :: bilan_dyn_domain_id
-
 
 c=====================================================================
@@ -216,6 +215,6 @@
       ALLOCATE(ndex3d(jjb_v:jje_v*llm))
       ndex3d=0
-      ALLOCATE(rlong(jjb_v:jje_v))
-      ALLOCATE(rlatg(jjb_v:jje_v))
+      ALLOCATE(rlong(1))
+      ALLOCATE(rlatg(jjm))
       
 !$OMP END MASTER
@@ -285,5 +284,5 @@
        
       call histbeg(trim(infile),
-     .             1, rlong(jjb:jje), jjn, rlatg(jjb:jje),
+     .             1, rlong, jjn, rlatg(jjb:jje),
      .             1, 1, 1, jjn,
      .             tau0, zjulian, dt_cum, thoriid, fileid,
@@ -514,7 +513,7 @@
             enddo
          enddo
-!$OMP END DO NOWAIT
-      enddo
-
+!$OMP ENDDO NOWAIT 
+!$OMP BARRIER
+      enddo
 
 c    tendances
@@ -540,4 +539,5 @@
       CALL vitvert_loc(convm,w)
 !$OMP BARRIER
+
 
       jjb=jj_begin
@@ -618,5 +618,4 @@
 !$OMP ENDDO NOWAIT 
          
-      
       IF (pole_sud) jje=jj_end-1
 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
@@ -626,4 +625,5 @@
       ENDDO
 !$OMP ENDDO NOWAIT 
+!$OMP BARRIER
           
       jjb=jj_begin
@@ -640,5 +640,5 @@
 !$OMP ENDDO NOWAIT 
       enddo
- 
+
 c=====================================================================
 c   Transport méridien
@@ -657,4 +657,5 @@
         ENDDO
 !$OMP ENDDO NOWAIT 
+!$OMP BARRIER
 
       call Register_Hallo_u(masse_cum,llm,1,1,1,1,Req)
@@ -684,4 +685,5 @@
       enddo
 !$OMP ENDDO NOWAIT 
+!$OMP BARRIER
 
 c     print*,'3OK'
Index: /LMDZ5/trunk/libf/dyn3dmem/gcm.F90
===================================================================
--- /LMDZ5/trunk/libf/dyn3dmem/gcm.F90	(revision 2474)
+++ /LMDZ5/trunk/libf/dyn3dmem/gcm.F90	(revision 2475)
@@ -415,5 +415,4 @@
 #ifdef CPP_IOIPSL
   time_step = zdtvr
-  IF (mpi_rank==0) then
      if (ok_dyn_ins) then
         ! initialize output file for instantaneous outputs
@@ -421,6 +420,5 @@
         t_ops =((1.0*iecri)/day_step) * daysec  
         t_wrt = daysec ! iecri * daysec ! write output every t_wrt
-        t_wrt = daysec ! iecri * daysec ! write output every t_wrt
-        CALL inithist(day_ref,annee_ref,time_step, &
+        CALL inithist_loc(day_ref,annee_ref,time_step, &
              t_ops,t_wrt)
      endif
@@ -432,5 +430,4 @@
         CALL initdynav_loc(day_ref,annee_ref,time_step,t_ops,t_wrt)
      END IF
-  ENDIF
   dtav = iperiod*dtvr/daysec
 #endif
Index: /LMDZ5/trunk/libf/dyn3dmem/initdynav_loc.F
===================================================================
--- /LMDZ5/trunk/libf/dyn3dmem/initdynav_loc.F	(revision 2474)
+++ /LMDZ5/trunk/libf/dyn3dmem/initdynav_loc.F	(revision 2475)
@@ -154,5 +154,5 @@
 
       ddid=(/ 1,2 /)
-      dsg=(/ iip1,jjp1 /)
+      dsg=(/ iip1,jjm /)
       dsl=(/ iip1,jjn /)
       dpf=(/ 1,jjb /)
@@ -171,4 +171,11 @@
      
 ! Grille U
+
+      do jj = 1, jjp1
+        do ii = 1, iip1
+          rlong(ii,jj) = rlonu(ii) * 180. / pi
+          rlat(ii,jj) = rlatu(jj) * 180. / pi
+        enddo
+      enddo
 
       jjb=jj_begin
@@ -209,6 +216,7 @@
 C  Vents U
 C
+      jjn=jj_nb
       call histdef(histuaveid, 'u', 'vent u moyen ',
-     .             'm/s', iip1, jjp1, uhoriid, llm, 1, llm, zvertiidu,
+     .             'm/s', iip1, jjn, uhoriid, llm, 1, llm, zvertiidu,
      .             32, 'ave(X)', t_ops, t_wrt)
 
@@ -216,6 +224,7 @@
 C  Vents V
 C
+      if (pole_sud) jjn=jj_nb-1
       call histdef(histvaveid, 'v', 'vent v moyen',
-     .             'm/s', iip1, jjm, vhoriid, llm, 1, llm, zvertiidv,
+     .             'm/s', iip1, jjn, vhoriid, llm, 1, llm, zvertiidv,
      .             32, 'ave(X)', t_ops, t_wrt)
 
@@ -223,6 +232,7 @@
 C  Temperature
 C
+      jjn=jj_nb
       call histdef(histaveid, 'temp', 'temperature moyenne', 'K',
-     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
+     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
      .             32, 'ave(X)', t_ops, t_wrt)
 C
@@ -230,5 +240,5 @@
 C
       call histdef(histaveid, 'theta', 'temperature potentielle', 'K',
-     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
+     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
      .             32, 'ave(X)', t_ops, t_wrt)
 
@@ -238,5 +248,5 @@
 C
       call histdef(histaveid, 'phi', 'geopotentiel moyen', '-',
-     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
+     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
      .             32, 'ave(X)', t_ops, t_wrt)
 C
@@ -251,6 +261,6 @@
 C  Masse
 C
-      call histdef(histaveid, 'masse', 'masse', 'kg',
-     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
+      call histdef(histaveid, 'masse', 'masse moyenne', 'kg',
+     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
      .             32, 'ave(X)', t_ops, t_wrt)
 C
@@ -258,8 +268,8 @@
 C
       call histdef(histaveid, 'ps', 'pression naturelle au sol', 'Pa',
-     .             iip1, jjp1, thoriid, 1, 1, 1, -99,
-     .             32, 'ave(X)', t_ops, t_wrt)
-C
-C  Pression au sol
+     .             iip1, jjn, thoriid, 1, 1, 1, -99,
+     .             32, 'ave(X)', t_ops, t_wrt)
+C
+C  Geopotentiel au sol
 C
 !      call histdef(histaveid, 'phis', 'geopotentiel au sol', '-',
@@ -273,7 +283,6 @@
       call histend(histvaveid)
 #else
-      write(lunout,*)'initdynav_p: Needs IOIPSL to function'
+      write(lunout,*)'initdynav_loc: Needs IOIPSL to function'
 #endif
 ! #endif of #ifdef CPP_IOIPSL
-      return
       end
Index: /LMDZ5/trunk/libf/dyn3dmem/inithist_loc.F
===================================================================
--- /LMDZ5/trunk/libf/dyn3dmem/inithist_loc.F	(revision 2474)
+++ /LMDZ5/trunk/libf/dyn3dmem/inithist_loc.F	(revision 2475)
@@ -153,5 +153,5 @@
 
       ddid=(/ 1,2 /)
-      dsg=(/ iip1,jjp1 /)
+      dsg=(/ iip1,jjm /)
       dsl=(/ iip1,jjn /)
       dpf=(/ 1,jjb /)
@@ -170,4 +170,11 @@
      
 ! Grille U
+
+      do jj = 1, jjp1
+        do ii = 1, iip1
+          rlong(ii,jj) = rlonu(ii) * 180. / pi
+          rlat(ii,jj) = rlatu(jj) * 180. / pi
+        enddo
+      enddo
 
       jjb=jj_begin
@@ -210,27 +217,30 @@
 C  Vents U
 C
-      call histdef(histuid, 'u', 'vent u moyen ',
-     .             'm/s', iip1, jjp1, uhoriid, llm, 1, llm, zvertiidu,
-     .             32, 'ave(X)', t_ops, t_wrt)
+      jjn=jj_nb
+      call histdef(histuid, 'u', 'vent u',
+     .             'm/s', iip1, jjn, uhoriid, llm, 1, llm, zvertiidu,
+     .             32, 'inst(X)', t_ops, t_wrt)
 
 C
 C  Vents V
 C
-      call histdef(histvid, 'v', 'vent v moyen',
-     .             'm/s', iip1, jjm, vhoriid, llm, 1, llm, zvertiidv,
-     .             32, 'ave(X)', t_ops, t_wrt)
+      if (pole_sud) jjn=jj_nb-1
+      call histdef(histvid, 'v', 'vent v',
+     .             'm/s', iip1, jjn, vhoriid, llm, 1, llm, zvertiidv,
+     .             32, 'inst(X)', t_ops, t_wrt)
 
 C
 C  Temperature
 C
-      call histdef(histid, 'temp', 'temperature moyenne', 'K',
-     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
-     .             32, 'ave(X)', t_ops, t_wrt)
+      jjn=jj_nb
+      call histdef(histid, 'temp', 'temperature', 'K',
+     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
+     .             32, 'inst(X)', t_ops, t_wrt)
 C
 C  Temperature potentielle
 C
       call histdef(histid, 'theta', 'temperature potentielle', 'K',
-     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
-     .             32, 'ave(X)', t_ops, t_wrt)
+     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
+     .             32, 'inst(X)', t_ops, t_wrt)
 
 
@@ -238,7 +248,7 @@
 C  Geopotentiel
 C
-      call histdef(histid, 'phi', 'geopotentiel moyen', '-',
-     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
-     .             32, 'ave(X)', t_ops, t_wrt)
+      call histdef(histid, 'phi', 'geopotentiel', '-',
+     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
+     .             32, 'inst(X)', t_ops, t_wrt)
 C
 C  Traceurs
@@ -247,5 +257,5 @@
 !          call histdef(histid, ttext(iq), ttext(iq), '-',
 !     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
-!     .             32, 'ave(X)', t_ops, t_wrt)
+!     .             32, 'inst(X)', t_ops, t_wrt)
 !        enddo
 C
@@ -253,18 +263,18 @@
 C
       call histdef(histid, 'masse', 'masse', 'kg',
-     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
-     .             32, 'ave(X)', t_ops, t_wrt)
+     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
+     .             32, 'inst(X)', t_ops, t_wrt)
 C
 C  Pression au sol
 C
       call histdef(histid, 'ps', 'pression naturelle au sol', 'Pa',
-     .             iip1, jjp1, thoriid, 1, 1, 1, -99,
-     .             32, 'ave(X)', t_ops, t_wrt)
-C
-C  Pression au sol
+     .             iip1, jjn, thoriid, 1, 1, 1, -99,
+     .             32, 'inst(X)', t_ops, t_wrt)
+C
+C  Geopotentiel au sol
 C
 !      call histdef(histid, 'phis', 'geopotentiel au sol', '-',
 !     .             iip1, jjn, thoriid, 1, 1, 1, -99,
-!     .             32, 'ave(X)', t_ops, t_wrt)
+!     .             32, 'inst(X)', t_ops, t_wrt)
 C
 C  Fin
@@ -274,7 +284,6 @@
       call histend(histvid)
 #else
-      write(lunout,*)'initdynav_p: Needs IOIPSL to function'
+      write(lunout,*)'inithist_loc: Needs IOIPSL to function'
 #endif
 ! #endif of #ifdef CPP_IOIPSL
-      return
       end
Index: /LMDZ5/trunk/libf/dyn3dmem/leapfrog_loc.F
===================================================================
--- /LMDZ5/trunk/libf/dyn3dmem/leapfrog_loc.F	(revision 2474)
+++ /LMDZ5/trunk/libf/dyn3dmem/leapfrog_loc.F	(revision 2475)
@@ -1603,4 +1603,11 @@
                ENDIF
 
+              ! Ehouarn: re-compute geopotential for outputs
+c$OMP BARRIER
+c$OMP MASTER
+              CALL geopot_loc(ip1jmp1,teta,pk,pks,phis,phi)
+c$OMP END MASTER
+c$OMP BARRIER
+
 #ifdef CPP_IOIPSL
              IF (ok_dynzon) THEN 
@@ -1638,5 +1645,5 @@
 #ifdef CPP_IOIPSL
              if (ok_dyn_ins) then
-	         CALL writehist_loc(itau,vcov,ucov,teta,phi,q,
+	         CALL writehist_loc(itau,vcov,ucov,teta,pk,phi,q,
      &                              masse,ps,phis)
              endif
@@ -1750,4 +1757,11 @@
 
 #ifdef CPP_IOIPSL
+              ! Ehouarn: re-compute geopotential for outputs
+c$OMP BARRIER
+c$OMP MASTER
+              CALL geopot_loc(ip1jmp1,teta,pk,pks,phis,phi)
+c$OMP END MASTER
+c$OMP BARRIER
+               
                IF (ok_dynzon) THEN
                CALL bilan_dyn_loc(2,dtvr*iperiod,dtvr*day_step*periodav,
@@ -1774,5 +1788,5 @@
 #ifdef CPP_IOIPSL
               if (ok_dyn_ins) then
-                 CALL writehist_loc(itau,vcov,ucov,teta,phi,q,
+                 CALL writehist_loc(itau,vcov,ucov,teta,pk,phi,q,
      &                              masse,ps,phis)
               endif ! of if (ok_dyn_ins)
Index: /LMDZ5/trunk/libf/dyn3dmem/writedynav_loc.F
===================================================================
--- /LMDZ5/trunk/libf/dyn3dmem/writedynav_loc.F	(revision 2474)
+++ /LMDZ5/trunk/libf/dyn3dmem/writedynav_loc.F	(revision 2475)
@@ -89,5 +89,5 @@
 !$OMP MASTER
         ALLOCATE(unat(ijb_u:ije_u,llm))
-        ALLOCATE(vnat(ijb_u:ije_u,llm)) 
+        ALLOCATE(vnat(ijb_v:ije_v,llm)) 
         ALLOCATE(tm(ijb_u:ije_u,llm))
         ALLOCATE(ndex2d(ijnb_u*llm))
@@ -127,5 +127,7 @@
 C  Vents V
 C
-
+      ije=ij_end
+      if (pole_sud) jjn=jj_nb-1
+      if (pole_sud) ije=ij_end-iip1
 !$OMP BARRIER
 !$OMP MASTER      
@@ -138,4 +140,7 @@
 C  Temperature potentielle moyennee
 C
+      ijb=ij_begin
+      ije=ij_end
+      jjn=jj_nb
 !$OMP MASTER      
       call histwrite(histaveid, 'theta', itau_w, teta(ijb:ije,:), 
@@ -186,5 +191,5 @@
 !$OMP MASTER      
        call histwrite(histaveid, 'masse', itau_w, masse(ijb:ije,:),
-     .                iip1*jjn, ndexu)
+     .                iip1*jjn*llm, ndexu)
 !$OMP END MASTER
 
@@ -203,6 +208,6 @@
 C
 !$OMP MASTER      
-       call histwrite(histaveid, 'phis', itau_w, phis(ijb:ije),
-     .                 iip1*jjn, ndexu)
+!       call histwrite(histaveid, 'phis', itau_w, phis(ijb:ije),
+!     .                 iip1*jjn, ndex2d)
 !$OMP END MASTER
 
@@ -218,7 +223,6 @@
 !$OMP END MASTER
 #else
-      write(lunout,*)'writedynav_p: Needs IOIPSL to function'
+      write(lunout,*)'writedynav_loc: Needs IOIPSL to function'
 #endif
 ! #endif of #ifdef CPP_IOIPSL
-      return
       end
Index: /LMDZ5/trunk/libf/dyn3dmem/writehist_loc.F
===================================================================
--- /LMDZ5/trunk/libf/dyn3dmem/writehist_loc.F	(revision 2474)
+++ /LMDZ5/trunk/libf/dyn3dmem/writehist_loc.F	(revision 2475)
@@ -89,5 +89,5 @@
 !$OMP MASTER
         ALLOCATE(unat(ijb_u:ije_u,llm))
-        ALLOCATE(vnat(ijb_u:ije_u,llm)) 
+        ALLOCATE(vnat(ijb_v:ije_v,llm)) 
         ALLOCATE(tm(ijb_u:ije_u,llm))
         ALLOCATE(ndex2d(ijnb_u*llm))
@@ -127,5 +127,7 @@
 C  Vents V
 C
-
+      ije=ij_end
+      if (pole_sud) jjn=jj_nb-1
+      if (pole_sud) ije=ij_end-iip1
 !$OMP BARRIER
 !$OMP MASTER      
@@ -136,6 +138,9 @@
 
 C
-C  Temperature potentielle moyennee
-C
+C  Temperature potentielle
+C
+      ijb=ij_begin
+      ije=ij_end
+      jjn=jj_nb
 !$OMP MASTER      
       call histwrite(histid, 'theta', itau_w, teta(ijb:ije,:), 
@@ -144,5 +149,5 @@
 
 C
-C  Temperature moyennee
+C  Temperature
 C
 
@@ -186,5 +191,5 @@
 !$OMP MASTER      
        call histwrite(histid, 'masse', itau_w, masse(ijb:ije,:),
-     .                iip1*jjn, ndexu)
+     .                iip1*jjn*llm, ndexu)
 !$OMP END MASTER
 
@@ -194,5 +199,4 @@
 C
 !$OMP MASTER      
-
        call histwrite(histid, 'ps', itau_w, ps(ijb:ije), 
      .                 iip1*jjn, ndex2d)
@@ -203,6 +207,6 @@
 C
 !$OMP MASTER      
-       call histwrite(histid, 'phis', itau_w, phis(ijb:ije),
-     .                 iip1*jjn, ndexu)
+!       call histwrite(histid, 'phis', itau_w, phis(ijb:ije),
+!     .                 iip1*jjn, ndex2d)
 !$OMP END MASTER
 
@@ -218,7 +222,6 @@
 !$OMP END MASTER
 #else
-      write(lunout,*)'writedynav_p: Needs IOIPSL to function'
+      write(lunout,*)'writehist_loc: Needs IOIPSL to function'
 #endif
 ! #endif of #ifdef CPP_IOIPSL
-      return
       end
