Index: LMDZ5/trunk/libf/dyn3dpar/dynredem_p.F
===================================================================
--- LMDZ5/trunk/libf/dyn3dpar/dynredem_p.F	(revision 1577)
+++ LMDZ5/trunk/libf/dyn3dpar/dynredem_p.F	(revision 1635)
@@ -9,4 +9,6 @@
       USE parallel
       USE infotrac
+      use netcdf95, only: NF95_PUT_VAR
+ 
       IMPLICIT NONE
 c=======================================================================
@@ -19,5 +21,5 @@
 #include "comconst.h"
 #include "comvert.h"
-#include "comgeom.h"
+#include "comgeom2.h"
 #include "temps.h"
 #include "ener.h"
@@ -30,5 +32,5 @@
 c   ----------
       INTEGER iday_end
-      REAL phis(ip1jmp1)
+      REAL phis(iip1, jjp1)
       CHARACTER*(*) fichnom
 
@@ -56,4 +58,5 @@
       character*30 unites
 
+
 c-----------------------------------------------------------------------
       if (mpi_rank==0) then
@@ -69,14 +72,14 @@
       mmois0=1
       jjour0=1
-#endif                
+#endif        
 
       DO l=1,length
        tab_cntrl(l) = 0.
       ENDDO
-       tab_cntrl(1)  =  REAL(iim)
-       tab_cntrl(2)  =  REAL(jjm)
-       tab_cntrl(3)  =  REAL(llm)
-       tab_cntrl(4)  =  REAL(day_ref)
-       tab_cntrl(5)  =  REAL(annee_ref)
+       tab_cntrl(1)  = REAL(iim)
+       tab_cntrl(2)  = REAL(jjm)
+       tab_cntrl(3)  = REAL(llm)
+       tab_cntrl(4)  = REAL(day_ref)
+       tab_cntrl(5)  = REAL(annee_ref)
        tab_cntrl(6)  = rad
        tab_cntrl(7)  = omeg
@@ -118,6 +121,6 @@
       ENDIF
 
-       tab_cntrl(30) =  REAL(iday_end)
-       tab_cntrl(31) =  REAL(itau_dyn + itaufin)
+       tab_cntrl(30) = REAL(iday_end)
+       tab_cntrl(31) = REAL(itau_dyn + itaufin)
 c start_time: start_time of simulation (not necessarily 0.)
        tab_cntrl(32) = start_time
@@ -165,9 +168,5 @@
      .                       "Parametres de controle")
       ierr = NF_ENDDEF(nid)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,tab_cntrl)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,tab_cntrl)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,tab_cntrl)
 c
       ierr = NF_REDEF (nid)
@@ -182,9 +181,5 @@
      .                       "Longitudes des points U")
       ierr = NF_ENDDEF(nid)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlonu)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlonu)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,rlonu)
 c
       ierr = NF_REDEF (nid)
@@ -199,9 +194,5 @@
      .                       "Latitudes des points U")
       ierr = NF_ENDDEF(nid)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlatu)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlatu)
-#endif
+      call NF95_PUT_VAR (nid,nvarid,rlatu)
 c
       ierr = NF_REDEF (nid)
@@ -216,9 +207,5 @@
      .                       "Longitudes des points V")
       ierr = NF_ENDDEF(nid)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlonv)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlonv)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,rlonv)
 c
       ierr = NF_REDEF (nid)
@@ -233,9 +220,5 @@
      .                       "Latitudes des points V")
       ierr = NF_ENDDEF(nid)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlatv)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlatv)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,rlatv)
 c
       ierr = NF_REDEF (nid)
@@ -250,9 +233,5 @@
      .                       "Numero naturel des couches s")
       ierr = NF_ENDDEF(nid)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,nivsigs)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,nivsigs)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,nivsigs)
 c
       ierr = NF_REDEF (nid)
@@ -267,9 +246,5 @@
      .                       "Numero naturel des couches sigma")
       ierr = NF_ENDDEF(nid)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,nivsig)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,nivsig)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,nivsig)
 c
       ierr = NF_REDEF (nid)
@@ -284,9 +259,5 @@
      .                       "Coefficient A pour hybride")
       ierr = NF_ENDDEF(nid)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,ap)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,ap)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,ap)
 c
       ierr = NF_REDEF (nid)
@@ -301,9 +272,5 @@
      .                       "Coefficient B pour hybride")
       ierr = NF_ENDDEF(nid)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,bp)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,bp)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,bp)
 c
       ierr = NF_REDEF (nid)
@@ -316,9 +283,5 @@
 cIM 220306 END
       ierr = NF_ENDDEF(nid)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,presnivs)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,presnivs)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,presnivs)
 c
 c Coefficients de passage cov. <-> contra. <--> naturel
@@ -337,9 +300,5 @@
      .                       "Coefficient de passage pour U")
       ierr = NF_ENDDEF(nid)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,cu)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,cu)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,cu)
 c
       ierr = NF_REDEF (nid)
@@ -356,9 +315,5 @@
      .                       "Coefficient de passage pour V")
       ierr = NF_ENDDEF(nid)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,cv)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,cv)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,cv)
 c
 c Aire de chaque maille:
@@ -377,9 +332,5 @@
      .                       "Aires de chaque maille")
       ierr = NF_ENDDEF(nid)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,aire)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,aire)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,aire)
 c
 c Geopentiel au sol:
@@ -398,9 +349,5 @@
      .                       "Geopotentiel au sol")
       ierr = NF_ENDDEF(nid)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,phis)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,phis)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,phis)
 c
 c Definir les variables pour pouvoir les enregistrer plus tard:
@@ -510,5 +457,4 @@
       ierr = NF_ENDDEF(nid) ! sortir du mode de definition
       ierr = NF_CLOSE(nid) ! fermer le fichier
-
 
       PRINT*,'iim,jjm,llm,iday_end',iim,jjm,llm,iday_end
@@ -524,4 +470,7 @@
       USE infotrac
       USE control_mod
+      use netcdf, only: NF90_get_VAR
+      use netcdf95, only: NF95_PUT_VAR
+ 
       IMPLICIT NONE
 c=================================================================
@@ -536,9 +485,10 @@
 #include "temps.h"
 
+
       INTEGER l
-      REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) 
-      REAL teta(ip1jmp1,llm)                   
-      REAL ps(ip1jmp1),masse(ip1jmp1,llm)                   
-      REAL q(ip1jmp1,llm,nqtot)
+      REAL vcov(iip1,jjm,llm),ucov(iip1, jjp1,llm) 
+      REAL teta(iip1, jjp1,llm)                   
+      REAL ps(iip1, jjp1),masse(iip1, jjp1,llm)                   
+      REAL q(iip1, jjp1, llm, nqtot)
       CHARACTER*(*) fichnom
      
@@ -546,5 +496,5 @@
       INTEGER nid, nvarid, nid_trac, nvarid_trac
       REAL trac_tmp(ip1jmp1,llm)      
-      INTEGER ierr, ierr_file
+      INTEGER ierr, ierr_file 
       INTEGER iq
       INTEGER length
@@ -567,5 +517,5 @@
       
       do iq=1,nqtot
-        call Gather_Field(q(1,1,iq),ip1jmp1,llm,0)
+        call Gather_Field(q(:,:,:,iq),ip1jmp1,llm,0)
       enddo
       
@@ -589,9 +539,5 @@
          CALL abort_gcm(modname,abort_message,ierr)
       ENDIF
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR1_DOUBLE (nid,nvarid,nb,time)
-#else
-      ierr = NF_PUT_VAR1_REAL (nid,nvarid,nb,time)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,time,start=(/nb/))
       PRINT*, "Enregistrement pour ", nb, time
 
@@ -605,15 +551,7 @@
          CALL abort_gcm(modname,abort_message,ierr)
       ENDIF
-#ifdef NC_DOUBLE
-      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tab_cntrl)
-#else
-      ierr = NF_GET_VAR_REAL(nid, nvarid, tab_cntrl)
-#endif
-       tab_cntrl(31) =  REAL(itau_dyn + itaufin)
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,tab_cntrl)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,tab_cntrl)
-#endif
+      ierr = NF90_GET_VAR(nid, nvarid, tab_cntrl)
+       tab_cntrl(31) = REAL(itau_dyn + itaufin)
+      call NF95_PUT_VAR(nid,nvarid,tab_cntrl)
 
 c  Ecriture des champs
@@ -624,9 +562,5 @@
          CALL abort
       ENDIF
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,ucov)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,ucov)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,ucov)
 
       ierr = NF_INQ_VARID(nid, "vcov", nvarid)
@@ -635,9 +569,5 @@
          CALL abort
       ENDIF
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,vcov)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,vcov)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,vcov)
 
       ierr = NF_INQ_VARID(nid, "teta", nvarid)
@@ -646,9 +576,5 @@
          CALL abort
       ENDIF
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,teta)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,teta)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,teta)
 
       IF (type_trac == 'inca') THEN
@@ -675,9 +601,5 @@
                CALL abort
             ENDIF
-#ifdef NC_DOUBLE
-            ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,q(1,1,iq))
-#else
-            ierr = NF_PUT_VAR_REAL (nid,nvarid,q(1,1,iq))
-#endif
+            call NF95_PUT_VAR(nid,nvarid,q(:,:,:,iq))
         ELSE ! type_trac = inca
 ! lecture de la valeur du traceur dans start_trac.nc
@@ -691,17 +613,9 @@
                    CALL abort
                 ENDIF
-#ifdef NC_DOUBLE
-                ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,q(1,1,iq))
-#else
-                ierr = NF_PUT_VAR_REAL (nid,nvarid,q(1,1,iq))
-#endif
+                call NF95_PUT_VAR(nid,nvarid,q(:,:,:,iq))
                 
              ELSE
                 PRINT*, tname(iq), "est present dans start_trac.nc"
-#ifdef NC_DOUBLE
-               ierr = NF_GET_VAR_DOUBLE(nid_trac, nvarid_trac, trac_tmp)
-#else
-               ierr = NF_GET_VAR_REAL(nid_trac, nvarid_trac, trac_tmp)
-#endif
+               ierr = NF90_GET_VAR(nid_trac, nvarid_trac, trac_tmp)
                 IF (ierr .NE. NF_NOERR) THEN
                    PRINT*, "Lecture echouee pour", tname(iq)
@@ -713,9 +627,5 @@
                    CALL abort
                 ENDIF
-#ifdef NC_DOUBLE
-                ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,trac_tmp)
-#else
-                ierr = NF_PUT_VAR_REAL (nid,nvarid,trac_tmp)
-#endif
+                call NF95_PUT_VAR(nid, nvarid, trac_tmp)
                
              ENDIF ! IF (ierr .NE. NF_NOERR)
@@ -728,11 +638,7 @@
                 CALL abort
              ENDIF
-#ifdef NC_DOUBLE
-             ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,q(1,1,iq))
-#else
-             ierr = NF_PUT_VAR_REAL (nid,nvarid,q(1,1,iq))
-#endif
+             call NF95_PUT_VAR(nid,nvarid,q(:,:,:,iq))
           ENDIF ! (ierr_file .ne. 2)
-       END IF   ! type_trac
+       END IF   !type_trac
       
       ENDDO
@@ -746,9 +652,5 @@
          CALL abort
       ENDIF
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,masse)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,masse)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,masse)
 c
       ierr = NF_INQ_VARID(nid, "ps", nvarid)
@@ -757,9 +659,5 @@
          CALL abort
       ENDIF
-#ifdef NC_DOUBLE
-      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,ps)
-#else
-      ierr = NF_PUT_VAR_REAL (nid,nvarid,ps)
-#endif
+      call NF95_PUT_VAR(nid,nvarid,ps)
 
       ierr = NF_CLOSE(nid)
