Index: LMDZ5/trunk/libf/misc/coefpoly_m.F90
===================================================================
--- LMDZ5/trunk/libf/misc/coefpoly_m.F90	(revision 2239)
+++ LMDZ5/trunk/libf/misc/coefpoly_m.F90	(revision 2239)
@@ -0,0 +1,52 @@
+module coefpoly_m
+
+  IMPLICIT NONE
+
+contains
+
+  SUBROUTINE coefpoly(xf1, xf2, xprim1, xprim2, xtild1, xtild2, a0, a1, a2, a3)
+
+    ! From LMDZ4/libf/dyn3d/coefpoly.F, version 1.1.1.1 2004/05/19 12:53:05
+
+    ! Author: P. Le Van
+
+    ! Calcul des coefficients a0, a1, a2, a3 du polynôme de degré 3 qui
+    ! satisfait aux 4 équations suivantes :
+
+    ! a0 + a1 * xtild1 + a2 * xtild1**2 + a3 * xtild1**3 = Xf1
+    ! a0 + a1 * xtild2 + a2 * xtild2**2 + a3 * xtild2**3 = Xf2
+    ! a1 + 2. * a2 * xtild1 + 3. * a3 * xtild1**2 = Xprim1
+    ! a1 + 2. * a2 * xtild2 + 3. * a3 * xtild2**2 = Xprim2
+
+    ! (passe par les points (Xf(it), xtild(it)) et (Xf(it + 1),
+    ! xtild(it + 1))
+
+    ! On en revient à resoudre un système de 4 équations à 4 inconnues
+    ! a0, a1, a2, a3.
+
+    use nrtype, only: k8
+
+    REAL(K8), intent(in):: xf1, xf2, xprim1, xprim2, xtild1, xtild2
+    REAL(K8), intent(out):: a0, a1, a2, a3
+
+    ! Local:
+    REAL(K8) xtil1car, xtil2car, derr, x1x2car
+
+    !------------------------------------------------------------
+
+    xtil1car = xtild1 * xtild1
+    xtil2car = xtild2 * xtild2
+
+    derr = 2. * (xf2-xf1)/(xtild1-xtild2)
+
+    x1x2car = (xtild1-xtild2) * (xtild1-xtild2)
+
+    a3 = (derr+xprim1+xprim2)/x1x2car
+    a2 = (xprim1-xprim2+3. * a3 * (xtil2car-xtil1car))/(2. * (xtild1-xtild2))
+
+    a1 = xprim1 - 3. * a3 * xtil1car - 2. * a2 * xtild1
+    a0 = xf1 - a3 * xtild1 * xtil1car - a2 * xtil1car - a1 * xtild1
+
+  END SUBROUTINE coefpoly
+
+end module coefpoly_m
Index: LMDZ5/trunk/libf/misc/description.h
===================================================================
--- LMDZ5/trunk/libf/misc/description.h	(revision 2239)
+++ LMDZ5/trunk/libf/misc/description.h	(revision 2239)
@@ -0,0 +1,5 @@
+!
+! $Header$
+!
+      character (len=120) :: descript
+      common /titre/descript
Index: LMDZ5/trunk/libf/misc/iniprint.h
===================================================================
--- LMDZ5/trunk/libf/misc/iniprint.h	(revision 2239)
+++ LMDZ5/trunk/libf/misc/iniprint.h	(revision 2239)
@@ -0,0 +1,11 @@
+!
+! $Header$
+!
+!
+! gestion des impressions de sorties et de débogage
+! lunout:    unité du fichier dans lequel se font les sorties 
+!                           (par defaut 6, la sortie standard)
+! prt_level: niveau d'impression souhaité (0 = minimum)
+!
+      INTEGER lunout, prt_level
+      COMMON /comprint/ lunout, prt_level
Index: LMDZ5/trunk/libf/misc/initdynav.F90
===================================================================
--- LMDZ5/trunk/libf/bibio/initdynav.F90	(revision 2232)
+++ 	(revision )
@@ -1,194 +1,0 @@
-! $Id$
-
-subroutine initdynav(day0,anne0,tstep,t_ops,t_wrt)
-
-#ifdef CPP_IOIPSL
-  USE IOIPSL
-#endif
-  USE infotrac, ONLY : nqtot, ttext
-  use com_io_dyn_mod, only : histaveid,histvaveid,histuaveid, &
-       dynhistave_file,dynhistvave_file,dynhistuave_file
-  implicit none
-
-
-  !   Routine d'initialisation des ecritures des fichiers histoires LMDZ
-  !   au format IOIPSL. Initialisation du fichier histoire moyenne.
-
-  !   Appels succesifs des routines: histbeg
-  !                                  histhori
-  !                                  histver
-  !                                  histdef
-  !                                  histend
-
-  !   Entree:
-
-  !      infile: nom du fichier histoire a creer
-  !      day0,anne0: date de reference
-  !      tstep : frequence d'ecriture
-  !      t_ops: frequence de l'operation pour IOIPSL
-  !      t_wrt: frequence d'ecriture sur le fichier
-
-
-  !   L. Fairhead, LMD, 03/99
-
-  include "dimensions.h"
-  include "paramet.h"
-  include "comconst.h"
-  include "comvert.h"
-  include "comgeom.h"
-  include "temps.h"
-  include "ener.h"
-  include "logic.h"
-  include "description.h"
-  include "serre.h"
-  include "iniprint.h"
-
-  !   Arguments
-
-  integer day0, anne0
-  real tstep, t_ops, t_wrt
-
-#ifdef CPP_IOIPSL
-  ! This routine needs IOIPSL to work
-  !   Variables locales
-
-  integer tau0
-  real zjulian
-  integer iq
-  real rlong(iip1,jjp1), rlat(iip1,jjp1)
-  integer uhoriid, vhoriid, thoriid, zvertiid
-  integer ii,jj
-  integer zan, dayref
-
-  !--------------------------------------------------------------------
-
-  !  Initialisations
-
-  pi = 4. * atan (1.)
-
-  !  Appel a histbeg: creation du fichier netcdf et initialisations diverses
-
-
-  zan = anne0
-  dayref = day0
-  CALL ymds2ju(zan, 1, dayref, 0.0, zjulian)
-  tau0 = itau_dyn
-
-  do jj = 1, jjp1
-     do ii = 1, iip1
-        rlong(ii,jj) = rlonv(ii) * 180. / pi
-        rlat(ii,jj)  = rlatu(jj) * 180. / pi
-     enddo
-  enddo
-
-  ! Creation de 3 fichiers pour les differentes grilles horizontales
-  ! Restriction de IOIPSL: seulement 2 coordonnees dans le meme fichier
-  ! Grille Scalaire       
-  call histbeg(dynhistave_file, iip1, rlong(:,1), jjp1, rlat(1,:), &
-       1, iip1, 1, jjp1, &
-       tau0, zjulian, tstep, thoriid,histaveid)
-
-  ! Creation du fichier histoire pour les grilles en V et U (oblige
-  ! pour l'instant, IOIPSL ne permet pas de grilles avec des nombres
-  ! de point differents dans  un meme fichier)
-  ! Grille V
-  do jj = 1, jjm
-     do ii = 1, iip1
-        rlong(ii,jj) = rlonv(ii) * 180. / pi
-        rlat(ii,jj) = rlatv(jj) * 180. / pi
-     enddo
-  enddo
-
-  call histbeg(dynhistvave_file, iip1, rlong(:,1), jjm, rlat(1,:), &
-       1, iip1, 1, jjm, &
-       tau0, zjulian, tstep, vhoriid,histvaveid)
-  ! 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
-
-  call histbeg(dynhistuave_file, iip1, rlong(:,1),jjp1, rlat(1,:), &
-       1, iip1, 1, jjp1, &
-       tau0, zjulian, tstep, uhoriid,histuaveid)
-
-  !  Appel a histvert pour la grille verticale
-
-  call histvert(histaveid,'presnivs','Niveaux Pression approximatifs','mb', &
-       llm, presnivs/100., zvertiid,'down')
-  call histvert(histuaveid,'presnivs','Niveaux Pression approximatifs','mb', &
-       llm, presnivs/100., zvertiid,'down')
-  call histvert(histvaveid,'presnivs','Niveaux Pression approximatifs','mb', &
-       llm, presnivs/100., zvertiid,'down')
-
-  !  Appels a histdef pour la definition des variables a sauvegarder
-
-  !  Vents U
-
-  call histdef(histuaveid, 'u', 'vent u moyen ', &
-       'm/s', iip1, jjp1, uhoriid, llm, 1, llm, zvertiid, &
-       32, 'ave(X)', t_ops, t_wrt)
-
-  !  Vents V
-
-  call histdef(histvaveid, 'v', 'vent v moyen', &
-       'm/s', iip1, jjm, vhoriid, llm, 1, llm, zvertiid, &
-       32, 'ave(X)', t_ops, t_wrt)
-
-
-  !  Temperature
-
-  call histdef(histaveid, 'temp', 'temperature moyenne', 'K', &
-       iip1, jjp1, thoriid, llm, 1, llm, zvertiid, &
-       32, 'ave(X)', t_ops, t_wrt)
-
-  !  Temperature potentielle
-
-  call histdef(histaveid, 'theta', 'temperature potentielle', 'K', &
-       iip1, jjp1, thoriid, llm, 1, llm, zvertiid, &
-       32, 'ave(X)', t_ops, t_wrt)
-
-  !  Geopotentiel
-
-  call histdef(histaveid, 'phi', 'geopotentiel moyen', '-', &
-       iip1, jjp1, thoriid, llm, 1, llm, zvertiid, &
-       32, 'ave(X)', t_ops, t_wrt)
-
-  !  Traceurs
-
-  !        DO iq=1,nqtot
-  !          call histdef(histaveid, ttext(iq), ttext(iq), '-', &
-  !                  iip1, jjp1, thoriid, llm, 1, llm, zvertiid, &
-  !                  32, 'ave(X)', t_ops, t_wrt)
-  !        enddo
-
-  !  Masse
-
-  call histdef(histaveid, 'masse', 'masse', 'kg', &
-       iip1, jjp1, thoriid, llm, 1, llm, zvertiid, &
-       32, 'ave(X)', t_ops, t_wrt)
-
-  !  Pression au sol
-
-  call histdef(histaveid, 'ps', 'pression naturelle au sol', 'Pa', &
-       iip1, jjp1, thoriid, 1, 1, 1, -99, &
-       32, 'ave(X)', t_ops, t_wrt)
-
-  !  Geopotentiel au sol
-
-  !      call histdef(histaveid, 'phis', 'geopotentiel au sol', '-', &
-  !                  iip1, jjp1, thoriid, 1, 1, 1, -99, &
-  !                  32, 'ave(X)', t_ops, t_wrt)
-
-  call histend(histaveid)
-  call histend(histuaveid)
-  call histend(histvaveid)
-#else
-  write(lunout,*)"initdynav: Warning this routine should not be", &
-       " used without ioipsl"
-#endif
-  ! of #ifdef CPP_IOIPSL
-
-end subroutine initdynav
Index: LMDZ5/trunk/libf/misc/initfluxsto.F
===================================================================
--- LMDZ5/trunk/libf/bibio/initfluxsto.F	(revision 2232)
+++ 	(revision )
@@ -1,233 +1,0 @@
-!
-! $Id$
-!
-      subroutine initfluxsto
-     .  (infile,tstep,t_ops,t_wrt,
-     .                    fileid,filevid,filedid)
-
-#ifdef CPP_IOIPSL
-       USE IOIPSL
-#endif
-      implicit none
-
-C
-C   Routine d'initialisation des ecritures des fichiers histoires LMDZ
-C   au format IOIPSL
-C
-C   Appels succesifs des routines: histbeg
-C                                  histhori
-C                                  histver
-C                                  histdef
-C                                  histend
-C
-C   Entree:
-C
-C      infile: nom du fichier histoire a creer
-C      day0,anne0: date de reference
-C      tstep: duree du pas de temps en seconde
-C      t_ops: frequence de l'operation pour IOIPSL
-C      t_wrt: frequence d'ecriture sur le fichier
-C
-C   Sortie:
-C      fileid: ID du fichier netcdf cree
-C      filevid:ID du fichier netcdf pour la grille v
-C
-C   L. Fairhead, LMD, 03/99
-C
-C =====================================================================
-C
-C   Declarations
-#include "dimensions.h"
-#include "paramet.h"
-#include "comconst.h"
-#include "comvert.h"
-#include "comgeom.h"
-#include "temps.h"
-#include "ener.h"
-#include "logic.h"
-#include "description.h"
-#include "serre.h"
-#include "iniprint.h"
-
-C   Arguments
-C
-      character*(*) infile
-      real tstep, t_ops, t_wrt
-      integer fileid, filevid,filedid
-
-#ifdef CPP_IOIPSL
-! This routine needs IOIPSL to work
-C   Variables locales
-C
-      real nivd(1)
-      integer tau0
-      real zjulian
-      character*3 str
-      character*10 ctrac
-      integer iq
-      real rlong(iip1,jjp1), rlat(iip1,jjp1),rl(1,1)
-      integer uhoriid, vhoriid, thoriid, zvertiid,dhoriid,dvertiid
-      integer ii,jj
-      integer zan, idayref
-      logical ok_sync
-C
-C  Initialisations
-C
-      pi = 4. * atan (1.)
-      str='q  '
-      ctrac = 'traceur   '
-      ok_sync = .true.
-C
-C  Appel a histbeg: creation du fichier netcdf et initialisations diverses
-C         
-
-      zan = annee_ref
-      idayref = day_ref
-      CALL ymds2ju(zan, 1, idayref, 0.0, zjulian)
-      tau0 = itau_dyn
-	
-	do jj = 1, jjp1
-        do ii = 1, iip1
-          rlong(ii,jj) = rlonu(ii) * 180. / pi
-          rlat(ii,jj) = rlatu(jj) * 180. / pi
-        enddo
-      enddo
- 
-      call histbeg(infile, iip1, rlong(:,1), jjp1, rlat(1,:),
-     .             1, iip1, 1, jjp1,
-     .             tau0, zjulian, tstep, uhoriid, fileid)
-C
-C  Creation du fichier histoire pour la grille en V (oblige pour l'instant,
-C  IOIPSL ne permet pas de grilles avec des nombres de point differents dans 
-C  un meme fichier)
-
-
-      do jj = 1, jjm
-        do ii = 1, iip1
-          rlong(ii,jj) = rlonv(ii) * 180. / pi
-          rlat(ii,jj) = rlatv(jj) * 180. / pi
-        enddo
-      enddo
-
-      call histbeg('fluxstokev.nc', iip1, rlong(:,1), jjm, rlat(1,:),
-     .             1, iip1, 1, jjm,
-     .             tau0, zjulian, tstep, vhoriid, filevid)
-	
-	rl(1,1) = 1.	
-      call histbeg('defstoke.nc', 1, rl, 1, rl,
-     .             1, 1, 1, 1,
-     .             tau0, zjulian, tstep, dhoriid, filedid)
-
-C
-C  Appel a histhori pour rajouter les autres grilles horizontales
-C
-      do jj = 1, jjp1
-        do ii = 1, iip1
-          rlong(ii,jj) = rlonv(ii) * 180. / pi
-          rlat(ii,jj) = rlatu(jj) * 180. / pi
-        enddo
-      enddo
-
-      call histhori(fileid, iip1, rlong, jjp1, rlat, 'scalar',
-     .              'Grille points scalaires', thoriid)
-	
-C
-C  Appel a histvert pour la grille verticale
-C
-      call histvert(fileid, 'sig_s', 'Niveaux sigma',
-     . 'sigma_level',
-     .              llm, nivsigs, zvertiid)
-C Pour le fichier V
-      call histvert(filevid, 'sig_s', 'Niveaux sigma',
-     .  'sigma_level',
-     .              llm, nivsigs, zvertiid)
-c pour le fichier def
-      nivd(1) = 1
-      call histvert(filedid, 'sig_s', 'Niveaux sigma',
-     .  'sigma_level',
-     .              1, nivd, dvertiid)
-
-C
-C  Appels a histdef pour la definition des variables a sauvegarder
-	
-	CALL histdef(fileid, "phis", "Surface geop. height", "-",
-     .                iip1,jjp1,thoriid, 1,1,1, -99, 32,
-     .                "once", t_ops, t_wrt)
-
-         CALL histdef(fileid, "aire", "Grid area", "-",
-     .                iip1,jjp1,thoriid, 1,1,1, -99, 32,
-     .                "once", t_ops, t_wrt)
-	
-	CALL histdef(filedid, "dtvr", "tps dyn", "s",
-     .                1,1,dhoriid, 1,1,1, -99, 32,
-     .                "once", t_ops, t_wrt)
-        
-         CALL histdef(filedid, "istdyn", "tps stock", "s",
-     .                1,1,dhoriid, 1,1,1, -99, 32,
-     .                "once", t_ops, t_wrt)
-         
-         CALL histdef(filedid, "istphy", "tps stock phy", "s",
-     .                1,1,dhoriid, 1,1,1, -99, 32,
-     .                "once", t_ops, t_wrt)
-
-
-C
-C Masse 
-C
-      call histdef(fileid, 'masse', 'Masse', 'kg',
-     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
-     .             32, 'inst(X)', t_ops, t_wrt)
-C
-C  Pbaru 
-C
-      call histdef(fileid, 'pbaru', 'flx de masse zonal', 'kg m/s',
-     .             iip1, jjp1, uhoriid, llm, 1, llm, zvertiid,
-     .             32, 'inst(X)', t_ops, t_wrt)
-
-C
-C  Pbarv 
-C
-      call histdef(filevid, 'pbarv', 'flx de masse mer', 'kg m/s',
-     .             iip1, jjm, vhoriid, llm, 1, llm, zvertiid,
-     .             32, 'inst(X)', t_ops, t_wrt)
-C
-C  w 
-C
-      call histdef(fileid, 'w', 'flx de masse vert', 'kg m/s',
-     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
-     .             32, 'inst(X)', t_ops, t_wrt)
-
-C
-C  Temperature potentielle
-C
-      call histdef(fileid, 'teta', 'temperature potentielle', '-',
-     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
-     .             32, 'inst(X)', t_ops, t_wrt)
-C
-
-C
-C Geopotentiel 
-C
-      call histdef(fileid, 'phi', 'geopotentiel instantane', '-',
-     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
-     .             32, 'inst(X)', t_ops, t_wrt)
-C
-C  Fin
-C
-      call histend(fileid)
-      call histend(filevid)
-      call histend(filedid)
-      if (ok_sync) then
-        call histsync(fileid)
-        call histsync(filevid)
-        call histsync(filedid)
-      endif
-	
-#else
-! tell the user this routine should be run with ioipsl
-      write(lunout,*)"initfluxsto: Warning this routine should not be",
-     &               " used without ioipsl"
-#endif
-! of #ifdef CPP_IOIPSL
-      return
-      end
Index: LMDZ5/trunk/libf/misc/inithist.F
===================================================================
--- LMDZ5/trunk/libf/bibio/inithist.F	(revision 2232)
+++ 	(revision )
@@ -1,197 +1,0 @@
-!
-! $Id$
-!
-      subroutine inithist(day0,anne0,tstep,t_ops,t_wrt)
-
-#ifdef CPP_IOIPSL
-       USE IOIPSL
-#endif
-       USE infotrac, ONLY : nqtot, ttext
-       use com_io_dyn_mod, only : histid,histvid,histuid,               &
-     &                        dynhist_file,dynhistv_file,dynhistu_file
-
-      implicit none
-
-C
-C   Routine d'initialisation des ecritures des fichiers histoires LMDZ
-C   au format IOIPSL
-C
-C   Appels succesifs des routines: histbeg
-C                                  histhori
-C                                  histver
-C                                  histdef
-C                                  histend
-C
-C   Entree:
-C
-C      infile: nom du fichier histoire a creer
-C      day0,anne0: date de reference
-C      tstep: duree du pas de temps en seconde
-C      t_ops: frequence de l'operation pour IOIPSL
-C      t_wrt: frequence d'ecriture sur le fichier
-C      nq: nombre de traceurs
-C
-C
-C   L. Fairhead, LMD, 03/99
-C
-C =====================================================================
-C
-C   Declarations
-#include "dimensions.h"
-#include "paramet.h"
-#include "comconst.h"
-#include "comvert.h"
-#include "comgeom.h"
-#include "temps.h"
-#include "ener.h"
-#include "logic.h"
-#include "description.h"
-#include "serre.h"
-#include "iniprint.h"
-
-C   Arguments
-C
-      integer day0, anne0
-      real tstep, t_ops, t_wrt
-
-#ifdef CPP_IOIPSL
-! This routine needs IOIPSL to work
-C   Variables locales
-C
-      integer tau0
-      real zjulian
-      integer iq
-      real rlong(iip1,jjp1), rlat(iip1,jjp1)
-      integer uhoriid, vhoriid, thoriid, zvertiid
-      integer ii,jj
-      integer zan, dayref
-C
-C  Initialisations
-C
-      pi = 4. * atan (1.)
-C
-C  Appel a histbeg: creation du fichier netcdf et initialisations diverses
-C         
-
-      zan = anne0
-      dayref = day0
-      CALL ymds2ju(zan, 1, dayref, 0.0, zjulian)
-      tau0 = itau_dyn
-      
-! -------------------------------------------------------------
-! Creation des 3 fichiers pour les grilles horizontales U,V,Scal
-! -------------------------------------------------------------
-!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
-       
-      call histbeg(dynhistu_file, iip1, rlong(:,1), jjp1, rlat(1,:),
-     .             1, iip1, 1, jjp1,
-     .             tau0, zjulian, tstep, uhoriid, histuid)
-
-! Grille V
-      do jj = 1, jjm
-        do ii = 1, iip1
-          rlong(ii,jj) = rlonv(ii) * 180. / pi
-          rlat(ii,jj) = rlatv(jj) * 180. / pi
-        enddo
-      enddo
-
-      call histbeg(dynhistv_file, iip1, rlong(:,1), jjm, rlat(1,:),
-     .             1, iip1, 1, jjm,
-     .             tau0, zjulian, tstep, vhoriid, histvid)
-
-!Grille Scalaire
-      do jj = 1, jjp1
-        do ii = 1, iip1
-          rlong(ii,jj) = rlonv(ii) * 180. / pi
-          rlat(ii,jj) = rlatu(jj) * 180. / pi
-        enddo
-      enddo
-
-      call histbeg(dynhist_file, iip1, rlong(:,1), jjp1, rlat(1,:),
-     .             1, iip1, 1, jjp1,
-     .             tau0, zjulian, tstep, thoriid, histid)
-! -------------------------------------------------------------
-C  Appel a histvert pour la grille verticale
-! -------------------------------------------------------------
-      call histvert(histid, 'presnivs', 'Niveaux pression','mb',
-     .              llm, presnivs/100., zvertiid,'down')
-      call histvert(histvid, 'presnivs', 'Niveaux pression','mb',
-     .              llm, presnivs/100., zvertiid,'down')
-      call histvert(histuid, 'presnivs', 'Niveaux pression','mb',
-     .              llm, presnivs/100., zvertiid,'down')
-C
-! -------------------------------------------------------------
-C  Appels a histdef pour la definition des variables a sauvegarder
-! -------------------------------------------------------------
-C
-C  Vents U
-C
-      call histdef(histuid, 'u', 'vent u', 'm/s',
-     .             iip1, jjp1, uhoriid, llm, 1, llm, zvertiid,
-     .             32, 'inst(X)', t_ops, t_wrt)
-C
-C  Vents V
-C
-      call histdef(histvid, 'v', 'vent v', 'm/s',
-     .             iip1, jjm, vhoriid, llm, 1, llm, zvertiid,
-     .             32, 'inst(X)', t_ops, t_wrt)
-
-C
-C  Temperature potentielle
-C
-      call histdef(histid, 'teta', 'temperature potentielle', '-',
-     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
-     .             32, 'inst(X)', t_ops, t_wrt)
-C
-C  Geopotentiel
-C
-      call histdef(histid, 'phi', 'geopotentiel', '-',
-     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
-     .             32, 'inst(X)', t_ops, t_wrt)
-C
-C  Traceurs
-C
-!
-!        DO iq=1,nqtot
-!          call histdef(histid, ttext(iq),  ttext(iq), '-',
-!     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
-!     .             32, 'inst(X)', t_ops, t_wrt)
-!        enddo
-!C
-C  Masse
-C
-      call histdef(histid, 'masse', 'masse', 'kg',
-     .             iip1, jjp1, 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, 'inst(X)', t_ops, t_wrt)
-C
-C  Geopotentiel au sol
-!C
-!      call histdef(histid, 'phis', 'geopotentiel au sol', '-',
-!     .             iip1, jjp1, thoriid, 1, 1, 1, -99,
-!     .             32, 'inst(X)', t_ops, t_wrt)
-!C
-C  Fin
-C
-      call histend(histid)
-      call histend(histuid)
-      call histend(histvid)
-#else
-! tell the user this routine should be run with ioipsl
-      write(lunout,*)"inithist: Warning this routine should not be",
-     &               " used without ioipsl"
-#endif
-! of #ifdef CPP_IOIPSL
-      return
-      end
Index: LMDZ5/trunk/libf/misc/iotd.h
===================================================================
--- LMDZ5/trunk/libf/bibio/iotd.h	(revision 2232)
+++ 	(revision )
@@ -1,16 +1,0 @@
-!=======================================================================
-!
-!   Auteur:  F. Hourdin
-!   -------
-!
-!   Objet:
-!   ------
-!   Light interface for netcdf outputs. can be used outside LMDZ
-!
-!=======================================================================
-
-      integer imax,jmax,lmax,nid
-      INTEGER dim_coord(4)
-      real iotd_ts
-
-      common/ecritd_c/imax,jmax,lmax,nid,dim_coord,iotd_ts
Index: LMDZ5/trunk/libf/misc/iotd_ecrit.F90
===================================================================
--- LMDZ5/trunk/libf/bibio/iotd_ecrit.F90	(revision 2232)
+++ 	(revision )
@@ -1,180 +1,0 @@
-      subroutine iotd_ecrit(nom,llm,titre,unite,px)
-
-
-!=======================================================================
-!
-!   Auteur:  F. Hourdin
-!   -------
-!
-!   Objet:
-!   ------
-!   Light interface for netcdf outputs. can be used outside LMDZ
-!
-!=======================================================================
-!-----------------------------------------------------------------------
-!  ----------
-!      nom  : nom de la variable a sortir (chaine de caracteres)
-!      llm  : nombre de couches
-!      titre: titre de la variable (chaine de caracteres)
-!      unite : unite de la variable (chaine de caracteres)
-!      px : variable a sortir
-!
-!=================================================================
- 
-      implicit none
-
-! Commons
-
-#include "netcdf.inc"
-#include "iotd.h"
-
-
-! Arguments on input:
-      integer llm
-      character (len=*) :: nom,titre,unite
-      integer imjmax
-      parameter (imjmax=100000)
-      real px(imjmax*llm)
-
-! Local variables:
-
-      real*4 date
-      real*4 zx(imjmax*llm)
-
-
-      integer ierr,ndim,dim_cc(4)
-      integer iq
-      integer i,j,l
-
-      integer zitau
-      character firstnom*20
-      SAVE firstnom
-      SAVE zitau
-      SAVE date
-      data firstnom /'1234567890'/
-      data zitau /0/
-
-! Ajouts
-      integer, save :: ntime=0
-      integer :: idim,varid
-      character (len =50):: fichnom
-      integer, dimension(4) :: id
-      integer, dimension(4) :: edges,corner
-      
-
-!***************************************************************
-! Initialisation of 'firstnom' and create/open the "diagfi.nc" NetCDF file
-! ------------------------------------------------------------------------
-! (Au tout premier appel de la subroutine durant le run.)
-
-
-!--------------------------------------------------------
-! Write the variables to output file if it's time to do so
-!--------------------------------------------------------
-
-
-! Compute/write/extend 'Time' coordinate (date given in days)
-! (done every "first call" (at given time level) to writediagfi)
-! Note: date is incremented as 1 step ahead of physics time
-!--------------------------------------------------------
-
-        zx(1:imax*jmax*llm)=px(1:imax*jmax*llm)
-        if (firstnom =='1234567890') then
-            firstnom=nom
-        endif
-
-!      print*,'nom ',nom,firstnom
-
-!! Quand on tombe sur la premiere variable on ajoute un pas de temps
-        if (nom.eq.firstnom) then
-        ! We have identified a "first call" (at given date)
-
-           ntime=ntime+1 ! increment # of stored time steps
-
-!!          print*,'ntime ',ntime
-           date=ntime
-!          date= float (zitau +1)/float (day_step)
-
-           ! compute corresponding date (in days and fractions thereof)
-           ! Get NetCDF ID of 'Time' variable
-
-           ierr=NF_SYNC(nid)
-
-           ierr= NF_INQ_VARID(nid,"Time",varid)
-           ! Write (append) the new date to the 'Time' array
-
-
-           ierr= NF_PUT_VARA_REAL(nid,varid,ntime,1,date)
-
-!          print*,'date ',date,ierr,nid
-!        print*,'IOTD Date ,varid,nid,ntime,date',varid,nid,ntime,date
-
-           if (ierr.ne.NF_NOERR) then
-              write(*,*) "***** PUT_VAR matter in writediagfi_nc"
-              write(*,*) "***** with time"
-              write(*,*) 'ierr=', ierr   
-           endif
-
-!          write(6,*)'WRITEDIAGFI: date= ', date
-        end if ! of if (nom.eq.firstnom)
-
-
-!Case of a 3D variable
-!---------------------
-        if (llm==lmax) then
-           ndim=4
-           corner(1)=1
-           corner(2)=1
-           corner(3)=1
-           corner(4)=ntime
-           edges(1)=imax
-           edges(2)=jmax
-           edges(3)=llm
-           edges(4)=1
-           dim_cc=dim_coord
-
-
-!Case of a 2D variable
-!---------------------
-
-        else if (llm==1) then
-           ndim=3
-           corner(1)=1
-           corner(2)=1
-           corner(3)=ntime
-           corner(4)=1
-           edges(1)=imax
-           edges(2)=jmax
-           edges(3)=1
-           edges(4)=1
-           dim_cc(1:2)=dim_coord(1:2)
-           dim_cc(3)=dim_coord(4)
-
-        endif ! of if llm=1 ou llm
-
-! AU premier pas de temps, on crée les variables
-!-----------------------------------------------
-
-      if (ntime==1) then
-          ierr = NF_REDEF (nid)
-          ierr = NF_DEF_VAR(nid,nom,NF_FLOAT,ndim,dim_cc,varid)
-          print*,'DEF ',nom,nid,varid
-          ierr = NF_ENDDEF(nid)
-      else
-         ierr= NF_INQ_VARID(nid,nom,varid)
-          print*,'INQ ',nom,nid,varid
-! Commandes pour recuperer automatiquement les coordonnees
-!             ierr= NF_INQ_DIMID(nid,"longitude",id(1))
-      endif
-
-
-      ierr= NF_PUT_VARA_REAL(nid,varid,corner,edges,zx)
-
-      if (ierr.ne.NF_NOERR) then
-           write(*,*) "***** PUT_VAR problem in writediagfi"
-           write(*,*) "***** with ",nom
-           write(*,*) 'ierr=', ierr
-      endif 
-
-
-      end
Index: LMDZ5/trunk/libf/misc/iotd_fin.F90
===================================================================
--- LMDZ5/trunk/libf/bibio/iotd_fin.F90	(revision 2232)
+++ 	(revision )
@@ -1,25 +1,0 @@
-      SUBROUTINE iotd_fin
-      IMPLICIT NONE
-
-!=======================================================================
-!
-!   Auteur:  F. Hourdin
-!   -------
-!
-!   Objet:
-!   ------
-!   Light interface for netcdf outputs. can be used outside LMDZ
-!
-!=======================================================================
-
-
-#include "netcdf.inc"
-#include "iotd.h"
-      integer ierr
-
-!   Arguments:
-!   ----------
-
-      ierr=NF_close(nid)
-
-      END
Index: LMDZ5/trunk/libf/misc/iotd_ini.F90
===================================================================
--- LMDZ5/trunk/libf/bibio/iotd_ini.F90	(revision 2232)
+++ 	(revision )
@@ -1,116 +1,0 @@
-      SUBROUTINE iotd_ini(fichnom,iim,jjm,llm,prlonv,prlatu,pcoordv)
-      IMPLICIT NONE
-
-!=======================================================================
-!
-!   Auteur:  F. Hourdin
-!   -------
-!
-!   Objet:
-!   ------
-!   Light interface for netcdf outputs. can be used outside LMDZ
-!
-!=======================================================================
-!-----------------------------------------------------------------------
-!   Declarations:
-!   -------------
-
-#include "netcdf.inc"
-#include "iotd.h"
-
-!   Arguments:
-!   ----------
-
-      integer iim,jjm,llm
-      real prlonv(iim),prlatu(jjm),pcoordv(llm),timestep
-      INTEGER id_FOCE
-
-      integer corner(4),edges(4),ndim
-      real  px(1000)
-      character (len=10) :: nom
-
-!   Local:
-!   ------
-      INTEGER ierr
-
-      integer :: nvarid
-      integer, dimension(2) :: id  
-      integer :: varid
-
-      character*10 fichnom
-      real*4 rlonv(iim),rlatu(jjm),coordv(llm)
-
-      real pi
-
-      print*,'INIIO prlonv ',prlonv
-      imax=iim
-      jmax=jjm
-      lmax=llm
-
-      rlonv=prlonv
-      rlatu=prlatu
-      coordv=pcoordv
-
-!-----------------------------------------------------------------------
-
-
-      pi=2.*asin(1.)
-
-! Define dimensions
-    
-         ! Create the NetCDF file
-         ierr=NF_CREATE(fichnom, NF_CLOBBER, nid)
-         ! Define the 'Time' dimension
-         ierr=nf_def_dim(nid,"Time",NF_UNLIMITED,dim_coord(4))
-         ! Define the 'Time' variable
-         ierr=NF_DEF_VAR(nid, "Time", NF_FLOAT, 1, dim_coord(4),varid)
-!        ! Add a long_name attribute
-!        ierr=NF_PUT_ATT_TEXT(nid, varid, "long_name",4,"Time")
-!        ! Add a units attribute
-         ierr=NF_PUT_ATT_TEXT(nid, varid,'units',29,"days since 0000-00-0 00:00:00")
-         ! Switch out of NetCDF Define mode
-
-      ierr=NF_DEF_DIM(nid, "longitude", iim, dim_coord(1))
-      ierr=NF_DEF_DIM(nid, "latitude", jjm, dim_coord(2))
-      ierr=NF_DEF_DIM(nid, "altitude", llm, dim_coord(3))
-
-
-      ierr=NF_ENDDEF(nid)
-!
-!  Contol parameters for this run
-! --------------------------
-
-      ierr=NF_REDEF(nid)
-      ierr=NF_DEF_VAR(nid,"longitude", NF_FLOAT, 1, dim_coord(1),nvarid)
-!     ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name", 14,
-!    .      "East longitude")
-!     ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',12,"degrees_east")
-      ierr=NF_ENDDEF(nid)
-      ierr=NF_PUT_VAR_REAL(nid,nvarid,rlonv)
-       print*,ierr
-
-! --------------------------
-      ierr=NF_REDEF(nid)
-      ierr=NF_DEF_VAR(nid, "latitude", NF_FLOAT, 1, dim_coord(2),nvarid)
-!     ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',13,"degrees_north")
-!     ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name", 14,"North latitude")
-      ierr=NF_ENDDEF(nid)
-      ierr=NF_PUT_VAR_REAL(nid,nvarid,rlatu)
-!
-! --------------------------
-      ierr=NF_REDEF(nid)
-      ierr=NF_DEF_VAR(nid, "altitude", NF_FLOAT, 1,dim_coord(3),nvarid)
-      ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name",10,"pseudo-alt")
-!     ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',2,"km")
-      if ( pcoordv(2)>pcoordv(1) ) then
-         ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name",10,"pseudo-alt")
-         ierr=NF_PUT_ATT_TEXT(nid,nvarid,'positive',2,"up")
-      else
-         ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name",8,"pressure")
-         ierr = NF_PUT_ATT_TEXT (nid,nvarid,'positive',4,"down")
-      endif
-      ierr=NF_ENDDEF(nid)
-
-      ierr=NF_PUT_VAR_REAL(nid,nvarid,coordv)
-!
-      END
Index: LMDZ5/trunk/libf/misc/juldate.F
===================================================================
--- LMDZ5/trunk/libf/misc/juldate.F	(revision 2239)
+++ LMDZ5/trunk/libf/misc/juldate.F	(revision 2239)
@@ -0,0 +1,39 @@
+!
+! $Id$
+!
+	subroutine juldate(ian,imoi,ijou,oh,om,os,tjd,tjdsec)
+c	Sous-routine de changement de date:
+c	gregorien>>>date julienne
+c	En entree:an,mois,jour,heure,min.,sec.
+c	En sortie:tjd
+        IMPLICIT NONE
+        INTEGER,INTENT(IN) :: ian,imoi,ijou,oh,om,os
+        REAL,INTENT(OUT) :: tjd,tjdsec
+        
+        REAL frac,year,rmon,cf,a,b
+        INTEGER ojou
+        
+	frac=((os/60.+om)/60.+oh)/24.
+	ojou=dble(ijou)+frac
+	    year=dble(ian)
+	    rmon=dble(imoi)
+	if (imoi .le. 2) then
+	    year=year-1.
+	    rmon=rmon+12.
+	endif
+	cf=year+(rmon/100.)+(ojou/10000.)
+	if (cf .ge. 1582.1015) then
+	    a=int(year/100)
+	    b=2-a+int(a/4)
+	else
+	    b=0
+	endif
+	tjd=int(365.25*year)+int(30.6001*(rmon+1))+int(ojou)
+     +   +1720994.5+b
+        tjdsec=(ojou-int(ojou))+(tjd-int(tjd))
+        tjd=int(tjd)+int(tjdsec)
+	tjdsec=tjdsec-int(tjdsec)
+	return
+	end
+
+
Index: LMDZ5/trunk/libf/misc/minmax.F
===================================================================
--- LMDZ5/trunk/libf/misc/minmax.F	(revision 2239)
+++ LMDZ5/trunk/libf/misc/minmax.F	(revision 2239)
@@ -0,0 +1,23 @@
+!
+! $Header$
+!
+       SUBROUTINE minmax(imax, xi, zmin, zmax )
+c
+c      P. Le Van
+
+       INTEGER imax
+       REAL    xi(imax)
+       REAL    zmin,zmax
+       INTEGER i
+
+       zmin = xi(1)
+       zmax = xi(1)
+
+       DO i = 2, imax
+         zmin = MIN( zmin,xi(i) )
+         zmax = MAX( zmax,xi(i) )
+       ENDDO
+
+       RETURN
+       END
+
Index: LMDZ5/trunk/libf/misc/minmax2.F
===================================================================
--- LMDZ5/trunk/libf/misc/minmax2.F	(revision 2239)
+++ LMDZ5/trunk/libf/misc/minmax2.F	(revision 2239)
@@ -0,0 +1,20 @@
+!
+! $Header$
+!
+       SUBROUTINE minmax2(imax, jmax, lmax, xi, zmin, zmax )
+c
+       INTEGER lmax,jmax,imax
+       REAL xi(imax*jmax*lmax) 
+       REAL zmin,zmax
+       INTEGER i
+    
+       zmin = xi(1)
+       zmax = xi(1)
+
+       DO i = 2, imax*jmax*lmax
+         zmin = MIN( zmin,xi(i) )
+         zmax = MAX( zmax,xi(i) )
+       ENDDO
+
+       RETURN
+       END
Index: LMDZ5/trunk/libf/misc/ran1.F
===================================================================
--- LMDZ5/trunk/libf/misc/ran1.F	(revision 2239)
+++ LMDZ5/trunk/libf/misc/ran1.F	(revision 2239)
@@ -0,0 +1,38 @@
+!
+! $Id$
+!
+      FUNCTION RAN1(IDUM)
+      IMPLICIT NONE
+      REAL RAN1
+      REAL,SAVE :: R(97)
+      REAL,PARAMETER :: RM1=3.8580247E-6,RM2=7.4373773E-6
+      INTEGER,SAVE :: IFF=0
+      integer,save :: ix1,ix2,ix3
+      INTEGER,PARAMETER :: M1=259200,IA1=7141,IC1=54773
+      INTEGER,PARAMETER :: M2=134456,IA2=8121,IC2=28411
+      INTEGER,PARAMETER :: M3=243000,IA3=4561,IC3=51349
+      INTEGER :: IDUM,J
+
+      IF (IDUM.LT.0.OR.IFF.EQ.0) THEN
+        IFF=1
+        IX1=MOD(IC1-IDUM,M1)
+        IX1=MOD(IA1*IX1+IC1,M1)
+        IX2=MOD(IX1,M2)
+        IX1=MOD(IA1*IX1+IC1,M1)
+        IX3=MOD(IX1,M3)
+        DO 11 J=1,97
+          IX1=MOD(IA1*IX1+IC1,M1)
+          IX2=MOD(IA2*IX2+IC2,M2)
+          R(J)=(REAL(IX1)+REAL(IX2)*RM2)*RM1
+11      CONTINUE
+        IDUM=1
+      ENDIF
+      IX1=MOD(IA1*IX1+IC1,M1)
+      IX2=MOD(IA2*IX2+IC2,M2)
+      IX3=MOD(IA3*IX3+IC3,M3)
+      J=1+(97*IX3)/M3
+      IF(J.GT.97.OR.J.LT.1) stop 1
+      RAN1=R(J)
+      R(J)=(REAL(IX1)+REAL(IX2)*RM2)*RM1
+      RETURN
+      END
Index: LMDZ5/trunk/libf/misc/sort.F
===================================================================
--- LMDZ5/trunk/libf/misc/sort.F	(revision 2239)
+++ LMDZ5/trunk/libf/misc/sort.F	(revision 2239)
@@ -0,0 +1,37 @@
+!
+! $Header$
+!
+C
+C
+      SUBROUTINE sort(n,d)
+c
+c     P.Le Van
+c      
+c...  cette routine met le tableau d  dans l'ordre croissant  ....
+cc   ( pour avoir l'ordre decroissant,il suffit de remplacer l'instruc
+c      tion  situee + bas  IF(d(j).LE.p)  THEN     par
+c                           IF(d(j).GE.p)  THEN
+c
+
+      INTEGER n
+      REAL d(n) , p
+      INTEGER i,j,k
+
+      DO i=1,n-1
+        k=i
+        p=d(i)
+        DO j=i+1,n
+         IF(d(j).LE.p) THEN
+           k=j
+           p=d(j)
+         ENDIF
+        ENDDO
+
+       IF(k.ne.i) THEN
+         d(k)=d(i)
+         d(i)=p
+       ENDIF
+      ENDDO
+
+       RETURN
+       END
Index: LMDZ5/trunk/libf/misc/write_field.F90
===================================================================
--- LMDZ5/trunk/libf/bibio/write_field.F90	(revision 2232)
+++ 	(revision )
@@ -1,326 +1,0 @@
-!
-! $Id$
-!
-module write_field
-implicit none
-
-  integer, parameter :: MaxWriteField = 100
-  integer, dimension(MaxWriteField),save :: FieldId
-  integer, dimension(MaxWriteField),save :: FieldVarId
-  integer, dimension(MaxWriteField),save :: FieldIndex
-  character(len=255), dimension(MaxWriteField) ::  FieldName 
-   
-  integer,save :: NbField = 0
-  
-  interface WriteField
-    module procedure WriteField3d,WriteField2d,WriteField1d
-  end interface WriteField
-  contains
-  
-    function GetFieldIndex(name)
-    implicit none
-      integer          :: GetFieldindex
-      character(len=*) :: name
-    
-      character(len=255) :: TrueName
-      integer            :: i
-       
-      
-      TrueName=TRIM(ADJUSTL(name))
-    
-      GetFieldIndex=-1
-      do i=1,NbField
-        if (TrueName==FieldName(i)) then
-          GetFieldIndex=i
-          exit
-        endif
-      enddo
-    end function GetFieldIndex
- 
-    subroutine WriteField3d(name,Field)
-    implicit none
-      character(len=*) :: name
-      real, dimension(:,:,:) :: Field 
-      integer, dimension(3) :: Dim
-      
-      Dim=shape(Field)
-      call WriteField_gen(name,Field,Dim(1),Dim(2),Dim(3))  
-  
-    end subroutine WriteField3d
-    
-    subroutine WriteField2d(name,Field)
-    implicit none
-      character(len=*) :: name
-      real, dimension(:,:) :: Field 
-      integer, dimension(2) :: Dim
-      
-      Dim=shape(Field)
-      call WriteField_gen(name,Field,Dim(1),Dim(2),1)  
-  
-    end subroutine WriteField2d
-    
-    subroutine WriteField1d(name,Field)
-    implicit none
-      character(len=*) :: name
-      real, dimension(:) :: Field 
-      integer, dimension(1) :: Dim
-      
-      Dim=shape(Field)
-      call WriteField_gen(name,Field,Dim(1),1,1)  
-  
-    end subroutine WriteField1d
-        
-    subroutine WriteField_gen(name,Field,dimx,dimy,dimz)
-    implicit none
-    include 'netcdf.inc'
-      character(len=*) :: name
-      integer :: dimx,dimy,dimz
-      real,dimension(dimx,dimy,dimz) :: Field
-      integer,dimension(dimx*dimy*dimz) :: ndex
-      integer :: status
-      integer :: index
-      integer :: start(4)
-      integer :: count(4)
-      
-           
-      Index=GetFieldIndex(name)
-      if (Index==-1) then
-        call CreateNewField(name,dimx,dimy,dimz)
-	Index=GetFieldIndex(name)
-      else
-        FieldIndex(Index)=FieldIndex(Index)+1.
-      endif
-      
-      start(1)=1
-      start(2)=1
-      start(3)=1
-      start(4)=FieldIndex(Index)
-
-      count(1)=dimx
-      count(2)=dimy
-      count(3)=dimz
-      count(4)=1
-
-      status = NF_PUT_VARA_DOUBLE(FieldId(Index),FieldVarId(Index),start,count,Field)
-      status = NF_SYNC(FieldId(Index))
-      
-    end subroutine WriteField_gen
-       
-    subroutine CreateNewField(name,dimx,dimy,dimz)
-    implicit none
-    include 'netcdf.inc'  
-      character(len=*) :: name
-      integer :: dimx,dimy,dimz
-      integer :: TabDim(4)
-      integer :: status
-      
-      
-      NbField=NbField+1
-      FieldName(NbField)=TRIM(ADJUSTL(name))
-      FieldIndex(NbField)=1
-      
-      
-      status = NF_CREATE(TRIM(ADJUSTL(name))//'.nc', NF_CLOBBER, FieldId(NbField))
-      status = NF_DEF_DIM(FieldId(NbField),'X',dimx,TabDim(1))
-      status = NF_DEF_DIM(FieldId(NbField),'Y',dimy,TabDim(2))
-      status = NF_DEF_DIM(FieldId(NbField),'Z',dimz,TabDim(3))
-      status = NF_DEF_DIM(FieldId(NbField),'iter',NF_UNLIMITED,TabDim(4))
-      status = NF_DEF_VAR(FieldId(NbField),FieldName(NbField),NF_DOUBLE,4,TabDim,FieldVarId(NbField))
-      status = NF_ENDDEF(FieldId(NbField))
-
-    end subroutine CreateNewField
-    
-    
-    
-  subroutine write_field1D(name,Field)
-    implicit none
-  
-    integer, parameter :: MaxDim=1
-    character(len=*)   :: name
-    real, dimension(:) :: Field
-    real, dimension(:),allocatable :: New_Field
-    character(len=20) :: str
-    integer, dimension(MaxDim) :: Dim
-    integer :: i,nb
-    integer, parameter :: id=10
-    integer, parameter :: NbCol=4
-    integer :: ColumnSize 
-    integer :: pos
-    character(len=255) :: form
-    character(len=255) :: MaxLen
-    
-    
-    open(unit=id,file=name//'.field',form='formatted',status='replace')
-    write (id,'("----- Field '//name//'",//)')
-    Dim=shape(Field)
-    MaxLen=int2str(len(trim(int2str(Dim(1)))))
-    ColumnSize=20+6+3+len(trim(int2str(Dim(1))))
-    Nb=0
-    Pos=2
-    do i=1,Dim(1)
-      nb=nb+1
-      
-      if (MOD(nb,NbCol)==0) then
-        form='(t'//trim(int2str(pos))// ',i'//trim(MaxLen) //'," ---> ",g22.16,/)'
-        Pos=2
-      else
-        form='(t'//trim(int2str(pos))// ',i'//trim(MaxLen) //'," ---> ",g22.16," | ",)'
-        Pos=Pos+ColumnSize
-      endif
-      write (id,form,advance='no') i,Field(i)
-    enddo
-     
-    close(id)
-
-  end subroutine write_field1D
-
-  subroutine write_field2D(name,Field)
-    implicit none
-  
-    integer, parameter :: MaxDim=2
-    character(len=*)   :: name
-    real, dimension(:,:) :: Field
-    real, dimension(:,:),allocatable :: New_Field
-    character(len=20) :: str
-    integer, dimension(MaxDim) :: Dim
-    integer :: i,j,nb
-    integer, parameter :: id=10
-    integer, parameter :: NbCol=4
-    integer :: ColumnSize 
-    integer :: pos,offset
-    character(len=255) :: form
-    character(len=255) :: spacing
-    
-    open(unit=id,file=name//'.field',form='formatted',status='replace')
-    write (id,'("----- Field '//name//'",//)')
-    
-    Dim=shape(Field)
-    offset=len(trim(int2str(Dim(1))))+len(trim(int2str(Dim(2))))+3
-    ColumnSize=20+6+3+offset
-
-    spacing='(t2,"'//repeat('-',ColumnSize*NbCol)//'")'
-    
-    do i=1,Dim(2)
-      nb=0
-      Pos=2
-      do j=1,Dim(1)
-        nb=nb+1
-      
-        if (MOD(nb,NbCol)==0) then
-          form='(t'//trim(int2str(pos))//            &
-               ',"('//trim(int2str(j))//','          &
-                    //trim(int2str(i))//')",t'       & 
-                    //trim(int2str(pos+offset))     &    
-                    //'," ---> ",g22.16,/)'
-          Pos=2
-        else
-          form='(t'//trim(int2str(pos))//            &
-               ',"('//trim(int2str(j))//','          &
-                    //trim(int2str(i))//')",t'       & 
-                    //trim(int2str(pos+offset))     &    
-                    //'," ---> ",g22.16," | ")'
-          Pos=Pos+ColumnSize
-        endif
-        write (id,form,advance='no') Field(j,i)
-      enddo
-      if (MOD(nb,NbCol)==0) then
-        write (id,spacing)
-      else
-        write (id,'("")')
-        write (id,spacing)
-      endif
-    enddo
-     
-  end subroutine write_field2D
-  
-  subroutine write_field3D(name,Field)
-    implicit none
-  
-    integer, parameter :: MaxDim=3
-    character(len=*)   :: name
-    real, dimension(:,:,:) :: Field
-    real, dimension(:,:,:),allocatable :: New_Field
-    integer, dimension(MaxDim) :: Dim
-    integer :: i,j,k,nb
-    integer, parameter :: id=10
-    integer, parameter :: NbCol=4
-    integer :: ColumnSize 
-    integer :: pos,offset
-    character(len=255) :: form
-    character(len=255) :: spacing
-
-    open(unit=id,file=name//'.field',form='formatted',status='replace')
-    write (id,'("----- Field '//name//'"//)')
-    
-    Dim=shape(Field)
-    offset=len(trim(int2str(Dim(1))))+len(trim(int2str(Dim(2))))+len(trim(int2str(Dim(3))))+4
-    ColumnSize=22+6+3+offset
-
-!    open(unit=id,file=name,form=formatted
-   
-    spacing='(t2,"'//repeat('-',ColumnSize*NbCol)//'")'
-    
-    do i=1,Dim(3)
-    
-      do j=1,Dim(2)
-        nb=0
-        Pos=2
-        
-        do k=1,Dim(1)
-        nb=nb+1
-      
-          if (MOD(nb,NbCol)==0) then
-            form='(t'//trim(int2str(pos))//            &
-                 ',"('//trim(int2str(k))//','          &
-                      //trim(int2str(j))//','          &
-                      //trim(int2str(i))//')",t'       & 
-                      //trim(int2str(pos+offset))      &    
-                      //'," ---> ",g22.16,/)'
-           Pos=2
-          else
-            form='(t'//trim(int2str(pos))//            &
-                 ',"('//trim(int2str(k))//','          &
-                      //trim(int2str(j))//','          &
-                      //trim(int2str(i))//')",t'       & 
-                      //trim(int2str(pos+offset))      &    
-                      //'," ---> ",g22.16," | ")'
-! dépent de l'implémention, sur compaq, c'est necessaire
-!            Pos=Pos+ColumnSize
-          endif
-          write (id,form,advance='no') Field(k,j,i)
-        enddo
-        if (MOD(nb,NbCol)==0) then
-          write (id,spacing)
-        else
-          write (id,'("")')
-          write (id,spacing)
-        endif
-      enddo
-      write (id,spacing)
-    enddo
-    
-    close(id)
-  
-  end subroutine write_field3D  
-  
-  function int2str(int)
-    implicit none
-    integer, parameter :: MaxLen=10
-    integer,intent(in) :: int
-    character(len=MaxLen) :: int2str
-    logical :: flag
-    integer :: i
-    flag=.true.
-    
-    i=int
-    
-    int2str=''
-    do while (flag)
-      int2str=CHAR(MOD(i,10)+48)//int2str
-      i=i/10
-      if (i==0) flag=.false.
-    enddo
-  end function int2str
-
-end module write_field
-  
Index: LMDZ5/trunk/libf/misc/writedynav.F90
===================================================================
--- LMDZ5/trunk/libf/bibio/writedynav.F90	(revision 2232)
+++ 	(revision )
@@ -1,141 +1,0 @@
-! $Id$
-
-subroutine writedynav(time, vcov, ucov, teta, ppk, phi, q, masse, ps, phis)
-
-#ifdef CPP_IOIPSL
-  USE ioipsl
-#endif
-  USE infotrac, ONLY : nqtot, ttext
-  use com_io_dyn_mod, only : histaveid, histvaveid, histuaveid
-
-  implicit none
-
-  !   Ecriture du fichier histoire au format IOIPSL
-
-  !   Appels succesifs des routines: histwrite
-
-  !   Entree:
-  !      time: temps de l'ecriture
-  !      vcov: vents v covariants
-  !      ucov: vents u covariants
-  !      teta: temperature potentielle
-  !      phi : geopotentiel instantane
-  !      q   : traceurs
-  !      masse: masse
-  !      ps   :pression au sol
-  !      phis : geopotentiel au sol
-
-  !   L. Fairhead, LMD, 03/99
-
-  !   Declarations
-  include "dimensions.h"
-  include "paramet.h"
-  include "comconst.h"
-  include "comvert.h"
-  include "comgeom.h"
-  include "temps.h"
-  include "ener.h"
-  include "logic.h"
-  include "description.h"
-  include "serre.h"
-  include "iniprint.h"
-
-  !   Arguments
-
-  REAL vcov(ip1jm, llm), ucov(ip1jmp1, llm) 
-  REAL teta(ip1jmp1*llm), phi(ip1jmp1, llm), ppk(ip1jmp1*llm)     
-  REAL ps(ip1jmp1), masse(ip1jmp1, llm)                   
-  REAL phis(ip1jmp1)                  
-  REAL q(ip1jmp1, llm, nqtot)
-  integer time
-
-#ifdef CPP_IOIPSL
-  ! This routine needs IOIPSL to work
-  !   Variables locales
-
-  integer ndex2d(ip1jmp1), ndexu(ip1jmp1*llm), ndexv(ip1jm*llm)
-  INTEGER iq, ii, ll
-  real tm(ip1jmp1*llm)
-  REAL vnat(ip1jm, llm), unat(ip1jmp1, llm) 
-  logical ok_sync
-  integer itau_w
-
-  !-----------------------------------------------------------------
-
-  !  Initialisations
-
-  ndexu = 0
-  ndexv = 0
-  ndex2d = 0
-  ok_sync = .TRUE.
-  tm = 999.999
-  vnat = 999.999
-  unat = 999.999
-  itau_w = itau_dyn + time
-
-  ! Passage aux composantes naturelles du vent
-  call covnat(llm, ucov, vcov, unat, vnat)
-
-  !  Appels a histwrite pour l'ecriture des variables a sauvegarder
-
-  !  Vents U 
-
-  call histwrite(histuaveid, 'u', itau_w, unat,  &
-       iip1*jjp1*llm, ndexu)
-
-  !  Vents V
-
-  call histwrite(histvaveid, 'v', itau_w, vnat,  &
-       iip1*jjm*llm, ndexv)
-
-  !  Temperature potentielle moyennee
-
-  call histwrite(histaveid, 'theta', itau_w, teta,  &
-       iip1*jjp1*llm, ndexu)
-
-  !  Temperature moyennee
-
-  do ii = 1, ijp1llm
-     tm(ii) = teta(ii) * ppk(ii)/cpp
-  enddo
-  call histwrite(histaveid, 'temp', itau_w, tm,  &
-       iip1*jjp1*llm, ndexu)
-
-  !  Geopotentiel
-
-  call histwrite(histaveid, 'phi', itau_w, phi,  &
-       iip1*jjp1*llm, ndexu)
-
-  !  Traceurs
-
-  !  DO iq=1, nqtot
-  !       call histwrite(histaveid, ttext(iq), itau_w, q(:, :, iq), &
-  !                   iip1*jjp1*llm, ndexu)
-  ! enddo
-
-  !  Masse
-
-  call histwrite(histaveid, 'masse', itau_w, masse,  &
-       iip1*jjp1*llm, ndexu)
-
-  !  Pression au sol
-
-  call histwrite(histaveid, 'ps', itau_w, ps, iip1*jjp1, ndex2d)
-
-  ! Geopotentiel au sol
-
-  ! call histwrite(histaveid, 'phis', itau_w, phis, iip1*jjp1, ndex2d)
-
-  if (ok_sync) then
-     call histsync(histaveid)
-     call histsync(histvaveid)
-     call histsync(histuaveid)
-  ENDIF
-
-#else
-  write(lunout, *) "writedynav: Warning this routine should not be", &
-       " used without ioipsl"
-#endif
-  ! of #ifdef CPP_IOIPSL
-
-end subroutine writedynav
Index: LMDZ5/trunk/libf/misc/writehist.F
===================================================================
--- LMDZ5/trunk/libf/bibio/writehist.F	(revision 2232)
+++ 	(revision )
@@ -1,136 +1,0 @@
-!
-! $Id$
-!
-      subroutine writehist(time,vcov,ucov,teta,phi,q,masse,ps,phis)
-
-#ifdef CPP_IOIPSL
-      USE ioipsl
-#endif
-      USE infotrac, ONLY : nqtot, ttext
-      use com_io_dyn_mod, only : histid,histvid,histuid
-      implicit none
-
-C
-C   Ecriture du fichier histoire au format IOIPSL
-C
-C   Appels succesifs des routines: histwrite
-C
-C   Entree:
-C      time: temps de l'ecriture
-C      vcov: vents v covariants
-C      ucov: vents u covariants
-C      teta: temperature potentielle
-C      phi : geopotentiel instantane
-C      q   : traceurs
-C      masse: masse
-C      ps   :pression au sol
-C      phis : geopotentiel au sol
-C      
-C
-C   L. Fairhead, LMD, 03/99
-C
-C =====================================================================
-C
-C   Declarations
-#include "dimensions.h"
-#include "paramet.h"
-#include "comconst.h"
-#include "comvert.h"
-#include "comgeom.h"
-#include "temps.h"
-#include "ener.h"
-#include "logic.h"
-#include "description.h"
-#include "serre.h"
-#include "iniprint.h"
-
-C
-C   Arguments
-C
-
-      REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) 
-      REAL teta(ip1jmp1,llm),phi(ip1jmp1,llm)                   
-      REAL ps(ip1jmp1),masse(ip1jmp1,llm)                   
-      REAL phis(ip1jmp1)                  
-      REAL q(ip1jmp1,llm,nqtot)
-      integer time
-
-
-#ifdef CPP_IOIPSL
-! This routine needs IOIPSL to work
-C   Variables locales
-C
-      integer iq, ii, ll
-      integer ndexu(ip1jmp1*llm),ndexv(ip1jm*llm),ndex2d(ip1jmp1)
-      logical ok_sync
-      integer itau_w
-      REAL vnat(ip1jm,llm),unat(ip1jmp1,llm)
-
-C
-C  Initialisations
-C
-      ndexu = 0
-      ndexv = 0
-      ndex2d = 0
-      ok_sync =.TRUE.
-      itau_w = itau_dyn + time
-!  Passage aux composantes naturelles du vent
-      call covnat(llm, ucov, vcov, unat, vnat)
-C
-C  Appels a histwrite pour l'ecriture des variables a sauvegarder
-C
-C  Vents U
-C
-      call histwrite(histuid, 'u', itau_w, unat, 
-     .               iip1*jjp1*llm, ndexu)
-C
-C  Vents V
-C
-      call histwrite(histvid, 'v', itau_w, vnat, 
-     .               iip1*jjm*llm, ndexv)
-
-C
-C  Temperature potentielle
-C
-      call histwrite(histid, 'teta', itau_w, teta, 
-     .                iip1*jjp1*llm, ndexu)
-C
-C  Geopotentiel
-C
-      call histwrite(histid, 'phi', itau_w, phi, 
-     .                iip1*jjp1*llm, ndexu)
-C
-C  Traceurs
-C
-!        DO iq=1,nqtot
-!          call histwrite(histid, ttext(iq), itau_w, q(:,:,iq), 
-!     .                   iip1*jjp1*llm, ndexu)
-!        enddo
-!C
-C  Masse
-C
-      call histwrite(histid,'masse',itau_w, masse,iip1*jjp1*llm,ndexu)
-C
-C  Pression au sol
-C
-      call histwrite(histid, 'ps', itau_w, ps, iip1*jjp1, ndex2d)
-C
-C  Geopotentiel au sol
-C
-!      call histwrite(histid, 'phis', itau_w, phis, iip1*jjp1, ndex2d)
-C
-C  Fin
-C
-      if (ok_sync) then
-        call histsync(histid)
-        call histsync(histvid)
-        call histsync(histuid)
-      endif
-#else
-! tell the user this routine should be run with ioipsl
-      write(lunout,*)"writehist: Warning this routine should not be",
-     &               " used without ioipsl"
-#endif
-! of #ifdef CPP_IOIPSL
-      return
-      end
