Index: LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/dynetat0.F
===================================================================
--- LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/dynetat0.F	(revision 1379)
+++ LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/dynetat0.F	(revision 1380)
@@ -1,4 +1,4 @@
 !
-! $Header$
+! $Id $
 !
       SUBROUTINE dynetat0(fichnom,vcov,ucov,
@@ -34,4 +34,5 @@
 #include "serre.h"
 #include "logic.h"
+#include "iniprint.h"
 
 c   Arguments:
@@ -58,6 +59,6 @@
       ierr = NF_OPEN (fichnom, NF_NOWRITE,nid)
       IF (ierr.NE.NF_NOERR) THEN
-        write(6,*)' Pb d''ouverture du fichier start.nc'
-        write(6,*)' ierr = ', ierr
+        write(lunout,*)'dynetat0: Pb d''ouverture du fichier start.nc'
+        write(lunout,*)' ierr = ', ierr
         CALL ABORT
       ENDIF
@@ -66,5 +67,5 @@
       ierr = NF_INQ_VARID (nid, "controle", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <controle> est absent"
+         write(lunout,*)"dynetat0: Le champ <controle> est absent"
          CALL abort
       ENDIF
@@ -75,5 +76,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echoue pour <controle>"
+         write(lunout,*)"dynetat0: Lecture echoue pour <controle>"
          CALL abort
       ENDIF
@@ -121,5 +122,6 @@
 c
 c
-      PRINT*,'rad,omeg,g,cpp,kappa',rad,omeg,g,cpp,kappa
+      write(lunout,*)'dynetat0: rad,omeg,g,cpp,kappa',
+     &               rad,omeg,g,cpp,kappa
 
       IF(   im.ne.iim           )  THEN
@@ -136,5 +138,5 @@
       ierr = NF_INQ_VARID (nid, "rlonu", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <rlonu> est absent"
+         write(lunout,*)"dynetat0: Le champ <rlonu> est absent"
          CALL abort
       ENDIF
@@ -145,5 +147,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <rlonu>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <rlonu>"
          CALL abort
       ENDIF
@@ -151,5 +153,5 @@
       ierr = NF_INQ_VARID (nid, "rlatu", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <rlatu> est absent"
+         write(lunout,*)"dynetat0: Le champ <rlatu> est absent"
          CALL abort
       ENDIF
@@ -160,5 +162,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <rlatu>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <rlatu>"
          CALL abort
       ENDIF
@@ -166,5 +168,5 @@
       ierr = NF_INQ_VARID (nid, "rlonv", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <rlonv> est absent"
+         write(lunout,*)"dynetat0: Le champ <rlonv> est absent"
          CALL abort
       ENDIF
@@ -175,5 +177,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <rlonv>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <rlonv>"
          CALL abort
       ENDIF
@@ -181,5 +183,5 @@
       ierr = NF_INQ_VARID (nid, "rlatv", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <rlatv> est absent"
+         write(lunout,*)"dynetat0: Le champ <rlatv> est absent"
          CALL abort
       ENDIF
@@ -190,5 +192,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour rlatv"
+         write(lunout,*)"dynetat0: Lecture echouee pour rlatv"
          CALL abort
       ENDIF
@@ -196,5 +198,5 @@
       ierr = NF_INQ_VARID (nid, "cu", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <cu> est absent"
+         write(lunout,*)"dynetat0: Le champ <cu> est absent"
          CALL abort
       ENDIF
@@ -205,5 +207,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <cu>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <cu>"
          CALL abort
       ENDIF
@@ -211,5 +213,5 @@
       ierr = NF_INQ_VARID (nid, "cv", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <cv> est absent"
+         write(lunout,*)"dynetat0: Le champ <cv> est absent"
          CALL abort
       ENDIF
@@ -220,5 +222,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <cv>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <cv>"
          CALL abort
       ENDIF
@@ -226,5 +228,5 @@
       ierr = NF_INQ_VARID (nid, "aire", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <aire> est absent"
+         write(lunout,*)"dynetat0: Le champ <aire> est absent"
          CALL abort
       ENDIF
@@ -235,5 +237,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <aire>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <aire>"
          CALL abort
       ENDIF
@@ -241,5 +243,5 @@
       ierr = NF_INQ_VARID (nid, "phisinit", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <phisinit> est absent"
+         write(lunout,*)"dynetat0: Le champ <phisinit> est absent"
          CALL abort
       ENDIF
@@ -250,5 +252,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <phisinit>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <phisinit>"
          CALL abort
       ENDIF
@@ -256,5 +258,5 @@
       ierr = NF_INQ_VARID (nid, "temps", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <temps> est absent"
+         write(lunout,*)"dynetat0: Le champ <temps> est absent"
          CALL abort
       ENDIF
@@ -265,5 +267,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee <temps>"
+         write(lunout,*)"dynetat0: Lecture echouee <temps>"
          CALL abort
       ENDIF
@@ -271,5 +273,5 @@
       ierr = NF_INQ_VARID (nid, "ucov", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <ucov> est absent"
+         write(lunout,*)"dynetat0: Le champ <ucov> est absent"
          CALL abort
       ENDIF
@@ -280,5 +282,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <ucov>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <ucov>"
          CALL abort
       ENDIF
@@ -286,5 +288,5 @@
       ierr = NF_INQ_VARID (nid, "vcov", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <vcov> est absent"
+         write(lunout,*)"dynetat0: Le champ <vcov> est absent"
          CALL abort
       ENDIF
@@ -295,5 +297,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <vcov>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <vcov>"
          CALL abort
       ENDIF
@@ -301,5 +303,5 @@
       ierr = NF_INQ_VARID (nid, "teta", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <teta> est absent"
+         write(lunout,*)"dynetat0: Le champ <teta> est absent"
          CALL abort
       ENDIF
@@ -310,5 +312,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <teta>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <teta>"
          CALL abort
       ENDIF
@@ -319,6 +321,7 @@
         ierr =  NF_INQ_VARID (nid, tname(iq), nvarid)
         IF (ierr .NE. NF_NOERR) THEN
-           PRINT*, "dynetat0: Le champ <"//tname(iq)//"> est absent"
-           PRINT*, "          Il est donc initialise a zero"
+           write(lunout,*)"dynetat0: Le champ <"//tname(iq)//
+     &                    "> est absent"
+           write(lunout,*)"          Il est donc initialise a zero"
            q(:,:,iq)=0.
         ELSE
@@ -329,6 +332,6 @@
 #endif
           IF (ierr .NE. NF_NOERR) THEN
-             PRINT*, "dynetat0: Lecture echouee pour "//tname(iq)
-             CALL abort
+            write(lunout,*)"dynetat0: Lecture echouee pour "//tname(iq)
+            CALL abort
           ENDIF
         ENDIF
@@ -338,5 +341,5 @@
       ierr = NF_INQ_VARID (nid, "masse", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <masse> est absent"
+         write(lunout,*)"dynetat0: Le champ <masse> est absent"
          CALL abort
       ENDIF
@@ -347,5 +350,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <masse>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <masse>"
          CALL abort
       ENDIF
@@ -353,5 +356,5 @@
       ierr = NF_INQ_VARID (nid, "ps", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <ps> est absent"
+         write(lunout,*)"dynetat0: Le champ <ps> est absent"
          CALL abort
       ENDIF
@@ -362,5 +365,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <ps>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <ps>"
          CALL abort
       ENDIF
Index: LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/dynredem.F
===================================================================
--- LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/dynredem.F	(revision 1379)
+++ LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/dynredem.F	(revision 1380)
@@ -26,4 +26,5 @@
 #include "description.h"
 #include "serre.h"
+#include "iniprint.h"
 
 c   Arguments:
@@ -126,6 +127,7 @@
       ierr = NF_CREATE(fichnom, NF_CLOBBER, nid)
       IF (ierr.NE.NF_NOERR) THEN
-         WRITE(6,*)" Pb d ouverture du fichier "//fichnom
-         WRITE(6,*)' ierr = ', ierr
+         write(lunout,*)"dynredem0: Pb d ouverture du fichier "
+     &                  //trim(fichnom)
+         write(lunout,*)' ierr = ', ierr
          CALL ABORT
       ENDIF
@@ -509,7 +511,8 @@
       ierr = NF_CLOSE(nid) ! fermer le fichier
 
-      PRINT*,'iim,jjm,llm,iday_end',iim,jjm,llm,iday_end
-      PRINT*,'rad,omeg,g,cpp,kappa',
-     ,        rad,omeg,g,cpp,kappa
+      write(lunout,*)'dynredem0: iim,jjm,llm,iday_end',
+     &               iim,jjm,llm,iday_end
+      write(lunout,*)'dynredem0: rad,omeg,g,cpp,kappa',
+     &        rad,omeg,g,cpp,kappa
 
       RETURN
@@ -531,4 +534,6 @@
 #include "comgeom.h"
 #include "temps.h"
+#include "iniprint.h"
+
 
       INTEGER l
@@ -557,5 +562,5 @@
       ierr = NF_OPEN(fichnom, NF_WRITE, nid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "Pb. d ouverture "//fichnom
+         write(lunout,*)"dynredem1: Pb. d ouverture "//trim(fichnom)
          CALL abort
       ENDIF
@@ -566,5 +571,5 @@
       ierr = NF_INQ_VARID(nid, "temps", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         print *, NF_STRERROR(ierr)
+         write(lunout,*) NF_STRERROR(ierr)
          abort_message='Variable temps n est pas definie'
          CALL abort_gcm(modname,abort_message,ierr)
@@ -575,5 +580,5 @@
       ierr = NF_PUT_VAR1_REAL (nid,nvarid,nb,time)
 #endif
-      PRINT*, "Enregistrement pour ", nb, time
+      write(lunout,*) "dynredem1: Enregistrement pour ", nb, time
 
 c
@@ -602,6 +607,7 @@
       ierr = NF_INQ_VARID(nid, "ucov", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "Variable ucov n est pas definie"
-         CALL abort
+         abort_message="Variable ucov n est pas definie"
+         ierr=1
+         CALL abort_gcm(modname,abort_message,ierr)
       ENDIF
 #ifdef NC_DOUBLE
@@ -613,6 +619,7 @@
       ierr = NF_INQ_VARID(nid, "vcov", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "Variable vcov n est pas definie"
-         CALL abort
+         abort_message="Variable vcov n est pas definie"
+         ierr=1
+         CALL abort_gcm(modname,abort_message,ierr)
       ENDIF
 #ifdef NC_DOUBLE
@@ -624,6 +631,7 @@
       ierr = NF_INQ_VARID(nid, "teta", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "Variable teta n est pas definie"
-         CALL abort
+         abort_message="Variable teta n est pas definie"
+         ierr=1
+         CALL abort_gcm(modname,abort_message,ierr)
       ENDIF
 #ifdef NC_DOUBLE
@@ -637,6 +645,7 @@
          ierr_file = NF_OPEN ("start_trac.nc", NF_NOWRITE,nid_trac)
          IF (ierr_file .NE.NF_NOERR) THEN
-            write(6,*)' Pb d''ouverture du fichier start_trac.nc'
-            write(6,*)' ierr = ', ierr_file 
+            write(lunout,*)'dynredem1: Pb d''ouverture du fichier',
+     &                     ' start_trac.nc'
+            write(lunout,*)' ierr = ', ierr_file 
          ENDIF
       END IF
@@ -648,6 +657,7 @@
             ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
             IF (ierr .NE. NF_NOERR) THEN
-               PRINT*, "Variable  tname(iq) n est pas definie"
-               CALL abort
+               abort_message="Variable  tname(iq) n est pas definie"
+               ierr=1
+               CALL abort_gcm(modname,abort_message,ierr)
             ENDIF
 #ifdef NC_DOUBLE
@@ -661,9 +671,12 @@
              ierr = NF_INQ_VARID (nid_trac, tname(iq), nvarid_trac)
              IF (ierr .NE. NF_NOERR) THEN
-                PRINT*, tname(iq),"est absent de start_trac.nc"
+                write(lunout,*) "dynredem1: ",trim(tname(iq)),
+     &                          " est absent de start_trac.nc"
                 ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
                 IF (ierr .NE. NF_NOERR) THEN
-                   PRINT*, "Variable ", tname(iq)," n est pas definie"
-                   CALL abort
+                   abort_message="dynredem1: Variable "//
+     &                     trim(tname(iq))//" n est pas definie"
+                   ierr=1
+                   CALL abort_gcm(modname,abort_message,ierr)
                 ENDIF
 #ifdef NC_DOUBLE
@@ -674,5 +687,6 @@
                 
              ELSE
-                PRINT*, tname(iq), "est present dans start_trac.nc"
+                write(lunout,*) "dynredem1: ",trim(tname(iq)),
+     &              " est present dans start_trac.nc"
 #ifdef NC_DOUBLE
                ierr = NF_GET_VAR_DOUBLE(nid_trac, nvarid_trac, trac_tmp)
@@ -681,11 +695,15 @@
 #endif
                 IF (ierr .NE. NF_NOERR) THEN
-                   PRINT*, "Lecture echouee pour", tname(iq)
-                   CALL abort
+                   abort_message="dynredem1: Lecture echouee pour"//
+     &                    trim(tname(iq))
+                   ierr=1
+                   CALL abort_gcm(modname,abort_message,ierr)
                 ENDIF
                 ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
                 IF (ierr .NE. NF_NOERR) THEN
-                   PRINT*, "Variable ", tname(iq)," n est pas definie"
-                   CALL abort
+                   abort_message="dynredem1: Variable "//
+     &                trim(tname(iq))//" n est pas definie"
+                   ierr=1
+                   CALL abort_gcm(modname,abort_message,ierr)
                 ENDIF
 #ifdef NC_DOUBLE
@@ -701,6 +719,8 @@
              ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
              IF (ierr .NE. NF_NOERR) THEN
-                PRINT*, "Variable  tname(iq) n est pas definie"
-                CALL abort
+                abort_message="dynredem1: Variable "//
+     &                trim(tname(iq))//" n est pas definie"
+                   ierr=1
+                   CALL abort_gcm(modname,abort_message,ierr)
              ENDIF
 #ifdef NC_DOUBLE
@@ -717,6 +737,7 @@
       ierr = NF_INQ_VARID(nid, "masse", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "Variable masse n est pas definie"
-         CALL abort
+         abort_message="dynredem1: Variable masse n est pas definie"
+         ierr=1
+         CALL abort_gcm(modname,abort_message,ierr)
       ENDIF
 #ifdef NC_DOUBLE
@@ -728,6 +749,7 @@
       ierr = NF_INQ_VARID(nid, "ps", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "Variable ps n est pas definie"
-         CALL abort
+         abort_message="dynredem1: Variable ps n est pas definie"
+         ierr=1
+         CALL abort_gcm(modname,abort_message,ierr)
       ENDIF
 #ifdef NC_DOUBLE
Index: LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/gcm.F
===================================================================
--- LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/gcm.F	(revision 1379)
+++ LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/gcm.F	(revision 1380)
@@ -248,12 +248,20 @@
           CALL iniacademic(vcov,ucov,teta,q,masse,ps,phis,time_0)
         endif
-!#ifdef CPP_IOIPSL
+
         if (planet_type.eq."earth") then
 #ifdef CPP_EARTH
 ! Load an Earth-format start file
          CALL dynetat0("start.nc",vcov,ucov,
-     .              teta,q,masse,ps,phis, time_0)
-#endif
+     &              teta,q,masse,ps,phis, time_0)
+#endif
+        ! SW model also has Earth-format start files
+        ! (but can be used without the CPP_EARTH directive)
+          if (iflag_phys.eq.0) then
+            CALL dynetat0("start.nc",vcov,ucov,
+     &              teta,q,masse,ps,phis, time_0)
+          endif
+        
         endif ! of if (planet_type.eq."earth")
+        
 c       write(73,*) 'ucov',ucov
 c       write(74,*) 'vcov',vcov
Index: LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/iniconst.F
===================================================================
--- LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/iniconst.F	(revision 1379)
+++ LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/iniconst.F	(revision 1380)
@@ -19,4 +19,5 @@
 #include "temps.h"
 #include "comvert.h"
+#include "iniprint.h"
 
 
@@ -48,5 +49,5 @@
       r       = cpp * kappa
 
-      PRINT*,' R  CP  Kappa ',  r , cpp,  kappa
+      write(lunout,*)'iniconst: R  CP  Kappa ',  r , cpp,  kappa
 c
 c-----------------------------------------------------------------------
Index: LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/dynetat0.F
===================================================================
--- LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/dynetat0.F	(revision 1379)
+++ LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/dynetat0.F	(revision 1380)
@@ -1,7 +1,8 @@
 !
-! $Header$
+! $Id $
 !
       SUBROUTINE dynetat0(fichnom,vcov,ucov,
      .                    teta,q,masse,ps,phis,time)
+
       USE infotrac
       IMPLICIT NONE
@@ -33,4 +34,5 @@
 #include "serre.h"
 #include "logic.h"
+#include "iniprint.h"
 
 c   Arguments:
@@ -52,10 +54,11 @@
 
 c-----------------------------------------------------------------------
+
 c  Ouverture NetCDF du fichier etat initial
 
       ierr = NF_OPEN (fichnom, NF_NOWRITE,nid)
       IF (ierr.NE.NF_NOERR) THEN
-        write(6,*)' Pb d''ouverture du fichier start.nc'
-        write(6,*)' ierr = ', ierr
+        write(lunout,*)'dynetat0: Pb d''ouverture du fichier start.nc'
+        write(lunout,*)' ierr = ', ierr
         CALL ABORT
       ENDIF
@@ -64,5 +67,5 @@
       ierr = NF_INQ_VARID (nid, "controle", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <controle> est absent"
+         write(lunout,*)"dynetat0: Le champ <controle> est absent"
          CALL abort
       ENDIF
@@ -73,5 +76,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echoue pour <controle>"
+         write(lunout,*)"dynetat0: Lecture echoue pour <controle>"
          CALL abort
       ENDIF
@@ -119,5 +122,6 @@
 c
 c
-      PRINT*,'rad,omeg,g,cpp,kappa',rad,omeg,g,cpp,kappa
+      write(lunout,*)'dynetat0: rad,omeg,g,cpp,kappa',
+     &               rad,omeg,g,cpp,kappa
 
       IF(   im.ne.iim           )  THEN
@@ -134,5 +138,5 @@
       ierr = NF_INQ_VARID (nid, "rlonu", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <rlonu> est absent"
+         write(lunout,*)"dynetat0: Le champ <rlonu> est absent"
          CALL abort
       ENDIF
@@ -143,5 +147,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <rlonu>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <rlonu>"
          CALL abort
       ENDIF
@@ -149,5 +153,5 @@
       ierr = NF_INQ_VARID (nid, "rlatu", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <rlatu> est absent"
+         write(lunout,*)"dynetat0: Le champ <rlatu> est absent"
          CALL abort
       ENDIF
@@ -158,5 +162,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <rlatu>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <rlatu>"
          CALL abort
       ENDIF
@@ -164,5 +168,5 @@
       ierr = NF_INQ_VARID (nid, "rlonv", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <rlonv> est absent"
+         write(lunout,*)"dynetat0: Le champ <rlonv> est absent"
          CALL abort
       ENDIF
@@ -173,5 +177,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <rlonv>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <rlonv>"
          CALL abort
       ENDIF
@@ -179,5 +183,5 @@
       ierr = NF_INQ_VARID (nid, "rlatv", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <rlatv> est absent"
+         write(lunout,*)"dynetat0: Le champ <rlatv> est absent"
          CALL abort
       ENDIF
@@ -188,5 +192,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour rlatv"
+         write(lunout,*)"dynetat0: Lecture echouee pour rlatv"
          CALL abort
       ENDIF
@@ -194,5 +198,5 @@
       ierr = NF_INQ_VARID (nid, "cu", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <cu> est absent"
+         write(lunout,*)"dynetat0: Le champ <cu> est absent"
          CALL abort
       ENDIF
@@ -203,5 +207,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <cu>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <cu>"
          CALL abort
       ENDIF
@@ -209,5 +213,5 @@
       ierr = NF_INQ_VARID (nid, "cv", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <cv> est absent"
+         write(lunout,*)"dynetat0: Le champ <cv> est absent"
          CALL abort
       ENDIF
@@ -218,5 +222,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <cv>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <cv>"
          CALL abort
       ENDIF
@@ -224,5 +228,5 @@
       ierr = NF_INQ_VARID (nid, "aire", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <aire> est absent"
+         write(lunout,*)"dynetat0: Le champ <aire> est absent"
          CALL abort
       ENDIF
@@ -233,5 +237,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <aire>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <aire>"
          CALL abort
       ENDIF
@@ -239,5 +243,5 @@
       ierr = NF_INQ_VARID (nid, "phisinit", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <phisinit> est absent"
+         write(lunout,*)"dynetat0: Le champ <phisinit> est absent"
          CALL abort
       ENDIF
@@ -248,5 +252,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <phisinit>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <phisinit>"
          CALL abort
       ENDIF
@@ -254,5 +258,5 @@
       ierr = NF_INQ_VARID (nid, "temps", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <temps> est absent"
+         write(lunout,*)"dynetat0: Le champ <temps> est absent"
          CALL abort
       ENDIF
@@ -263,5 +267,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee <temps>"
+         write(lunout,*)"dynetat0: Lecture echouee <temps>"
          CALL abort
       ENDIF
@@ -269,5 +273,5 @@
       ierr = NF_INQ_VARID (nid, "ucov", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <ucov> est absent"
+         write(lunout,*)"dynetat0: Le champ <ucov> est absent"
          CALL abort
       ENDIF
@@ -278,5 +282,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <ucov>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <ucov>"
          CALL abort
       ENDIF
@@ -284,5 +288,5 @@
       ierr = NF_INQ_VARID (nid, "vcov", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <vcov> est absent"
+         write(lunout,*)"dynetat0: Le champ <vcov> est absent"
          CALL abort
       ENDIF
@@ -293,5 +297,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <vcov>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <vcov>"
          CALL abort
       ENDIF
@@ -299,5 +303,5 @@
       ierr = NF_INQ_VARID (nid, "teta", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <teta> est absent"
+         write(lunout,*)"dynetat0: Le champ <teta> est absent"
          CALL abort
       ENDIF
@@ -308,14 +312,16 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <teta>"
-         CALL abort
-      ENDIF
-
-
+         write(lunout,*)"dynetat0: Lecture echouee pour <teta>"
+         CALL abort
+      ENDIF
+
+
+      IF(nqtot.GE.1) THEN
       DO iq=1,nqtot
         ierr =  NF_INQ_VARID (nid, tname(iq), nvarid)
         IF (ierr .NE. NF_NOERR) THEN
-           PRINT*, "dynetat0: Le champ <"//tname(iq)//"> est absent"
-           PRINT*, "          Il est donc initialise a zero"
+           write(lunout,*)"dynetat0: Le champ <"//tname(iq)//
+     &                    "> est absent"
+           write(lunout,*)"          Il est donc initialise a zero"
            q(:,:,iq)=0.
         ELSE
@@ -326,13 +332,14 @@
 #endif
           IF (ierr .NE. NF_NOERR) THEN
-             PRINT*, "dynetat0: Lecture echouee pour "//tname(iq)
-             CALL abort
+            write(lunout,*)"dynetat0: Lecture echouee pour "//tname(iq)
+            CALL abort
           ENDIF
         ENDIF
       ENDDO
+      ENDIF
 
       ierr = NF_INQ_VARID (nid, "masse", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <masse> est absent"
+         write(lunout,*)"dynetat0: Le champ <masse> est absent"
          CALL abort
       ENDIF
@@ -343,5 +350,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <masse>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <masse>"
          CALL abort
       ENDIF
@@ -349,5 +356,5 @@
       ierr = NF_INQ_VARID (nid, "ps", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Le champ <ps> est absent"
+         write(lunout,*)"dynetat0: Le champ <ps> est absent"
          CALL abort
       ENDIF
@@ -358,5 +365,5 @@
 #endif
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "dynetat0: Lecture echouee pour <ps>"
+         write(lunout,*)"dynetat0: Lecture echouee pour <ps>"
          CALL abort
       ENDIF
Index: LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/dynredem.F
===================================================================
--- LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/dynredem.F	(revision 1379)
+++ LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/dynredem.F	(revision 1380)
@@ -8,4 +8,5 @@
 #endif
       USE infotrac
+ 
       IMPLICIT NONE
 c=======================================================================
@@ -25,4 +26,5 @@
 #include "description.h"
 #include "serre.h"
+#include "iniprint.h"
 
 c   Arguments:
@@ -72,9 +74,9 @@
        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
@@ -116,6 +118,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
 c    .........................................................
@@ -125,6 +127,7 @@
       ierr = NF_CREATE(fichnom, NF_CLOBBER, nid)
       IF (ierr.NE.NF_NOERR) THEN
-         WRITE(6,*)" Pb d ouverture du fichier "//fichnom
-         WRITE(6,*)' ierr = ', ierr
+         write(lunout,*)"dynredem0: Pb d ouverture du fichier "
+     &                  //trim(fichnom)
+         write(lunout,*)' ierr = ', ierr
          CALL ABORT
       ENDIF
@@ -508,7 +511,8 @@
       ierr = NF_CLOSE(nid) ! fermer le fichier
 
-      PRINT*,'iim,jjm,llm,iday_end',iim,jjm,llm,iday_end
-      PRINT*,'rad,omeg,g,cpp,kappa',
-     ,        rad,omeg,g,cpp,kappa
+      write(lunout,*)'dynredem0: iim,jjm,llm,iday_end',
+     &               iim,jjm,llm,iday_end
+      write(lunout,*)'dynredem0: rad,omeg,g,cpp,kappa',
+     &        rad,omeg,g,cpp,kappa
 
       RETURN
@@ -518,4 +522,5 @@
       USE infotrac
       USE control_mod
+ 
       IMPLICIT NONE
 c=================================================================
@@ -529,4 +534,6 @@
 #include "comgeom.h"
 #include "temps.h"
+#include "iniprint.h"
+
 
       INTEGER l
@@ -555,5 +562,5 @@
       ierr = NF_OPEN(fichnom, NF_WRITE, nid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "Pb. d ouverture "//fichnom
+         write(lunout,*)"dynredem1: Pb. d ouverture "//trim(fichnom)
          CALL abort
       ENDIF
@@ -564,5 +571,5 @@
       ierr = NF_INQ_VARID(nid, "temps", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         print *, NF_STRERROR(ierr)
+         write(lunout,*) NF_STRERROR(ierr)
          abort_message='Variable temps n est pas definie'
          CALL abort_gcm(modname,abort_message,ierr)
@@ -573,5 +580,5 @@
       ierr = NF_PUT_VAR1_REAL (nid,nvarid,nb,time)
 #endif
-      PRINT*, "Enregistrement pour ", nb, time
+      write(lunout,*) "dynredem1: Enregistrement pour ", nb, time
 
 c
@@ -589,5 +596,5 @@
       ierr = NF_GET_VAR_REAL(nid, nvarid, tab_cntrl)
 #endif
-       tab_cntrl(31) =  REAL(itau_dyn + itaufin)
+       tab_cntrl(31) = REAL(itau_dyn + itaufin)
 #ifdef NC_DOUBLE
       ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,tab_cntrl)
@@ -600,6 +607,7 @@
       ierr = NF_INQ_VARID(nid, "ucov", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "Variable ucov n est pas definie"
-         CALL abort
+         abort_message="Variable ucov n est pas definie"
+         ierr=1
+         CALL abort_gcm(modname,abort_message,ierr)
       ENDIF
 #ifdef NC_DOUBLE
@@ -611,6 +619,7 @@
       ierr = NF_INQ_VARID(nid, "vcov", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "Variable vcov n est pas definie"
-         CALL abort
+         abort_message="Variable vcov n est pas definie"
+         ierr=1
+         CALL abort_gcm(modname,abort_message,ierr)
       ENDIF
 #ifdef NC_DOUBLE
@@ -622,6 +631,7 @@
       ierr = NF_INQ_VARID(nid, "teta", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "Variable teta n est pas definie"
-         CALL abort
+         abort_message="Variable teta n est pas definie"
+         ierr=1
+         CALL abort_gcm(modname,abort_message,ierr)
       ENDIF
 #ifdef NC_DOUBLE
@@ -635,6 +645,7 @@
          ierr_file = NF_OPEN ("start_trac.nc", NF_NOWRITE,nid_trac)
          IF (ierr_file .NE.NF_NOERR) THEN
-            write(6,*)' Pb d''ouverture du fichier start_trac.nc'
-            write(6,*)' ierr = ', ierr_file 
+            write(lunout,*)'dynredem1: Pb d''ouverture du fichier',
+     &                     ' start_trac.nc'
+            write(lunout,*)' ierr = ', ierr_file 
          ENDIF
       END IF
@@ -646,6 +657,7 @@
             ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
             IF (ierr .NE. NF_NOERR) THEN
-               PRINT*, "Variable  tname(iq) n est pas definie"
-               CALL abort
+               abort_message="Variable  tname(iq) n est pas definie"
+               ierr=1
+               CALL abort_gcm(modname,abort_message,ierr)
             ENDIF
 #ifdef NC_DOUBLE
@@ -659,9 +671,12 @@
              ierr = NF_INQ_VARID (nid_trac, tname(iq), nvarid_trac)
              IF (ierr .NE. NF_NOERR) THEN
-                PRINT*, tname(iq),"est absent de start_trac.nc"
+                write(lunout,*) "dynredem1: ",trim(tname(iq)),
+     &                          " est absent de start_trac.nc"
                 ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
                 IF (ierr .NE. NF_NOERR) THEN
-                   PRINT*, "Variable ", tname(iq)," n est pas definie"
-                   CALL abort
+                   abort_message="dynredem1: Variable "//
+     &                     trim(tname(iq))//" n est pas definie"
+                   ierr=1
+                   CALL abort_gcm(modname,abort_message,ierr)
                 ENDIF
 #ifdef NC_DOUBLE
@@ -672,5 +687,6 @@
                 
              ELSE
-                PRINT*, tname(iq), "est present dans start_trac.nc"
+                write(lunout,*) "dynredem1: ",trim(tname(iq)),
+     &              " est present dans start_trac.nc"
 #ifdef NC_DOUBLE
                ierr = NF_GET_VAR_DOUBLE(nid_trac, nvarid_trac, trac_tmp)
@@ -679,11 +695,15 @@
 #endif
                 IF (ierr .NE. NF_NOERR) THEN
-                   PRINT*, "Lecture echouee pour", tname(iq)
-                   CALL abort
+                   abort_message="dynredem1: Lecture echouee pour"//
+     &                    trim(tname(iq))
+                   ierr=1
+                   CALL abort_gcm(modname,abort_message,ierr)
                 ENDIF
                 ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
                 IF (ierr .NE. NF_NOERR) THEN
-                   PRINT*, "Variable ", tname(iq)," n est pas definie"
-                   CALL abort
+                   abort_message="dynredem1: Variable "//
+     &                trim(tname(iq))//" n est pas definie"
+                   ierr=1
+                   CALL abort_gcm(modname,abort_message,ierr)
                 ENDIF
 #ifdef NC_DOUBLE
@@ -699,6 +719,8 @@
              ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
              IF (ierr .NE. NF_NOERR) THEN
-                PRINT*, "Variable  tname(iq) n est pas definie"
-                CALL abort
+                abort_message="dynredem1: Variable "//
+     &                trim(tname(iq))//" n est pas definie"
+                   ierr=1
+                   CALL abort_gcm(modname,abort_message,ierr)
              ENDIF
 #ifdef NC_DOUBLE
@@ -715,6 +737,7 @@
       ierr = NF_INQ_VARID(nid, "masse", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "Variable masse n est pas definie"
-         CALL abort
+         abort_message="dynredem1: Variable masse n est pas definie"
+         ierr=1
+         CALL abort_gcm(modname,abort_message,ierr)
       ENDIF
 #ifdef NC_DOUBLE
@@ -726,6 +749,7 @@
       ierr = NF_INQ_VARID(nid, "ps", nvarid)
       IF (ierr .NE. NF_NOERR) THEN
-         PRINT*, "Variable ps n est pas definie"
-         CALL abort
+         abort_message="dynredem1: Variable ps n est pas definie"
+         ierr=1
+         CALL abort_gcm(modname,abort_message,ierr)
       ENDIF
 #ifdef NC_DOUBLE
Index: LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/gcm.F
===================================================================
--- LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/gcm.F	(revision 1379)
+++ LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/gcm.F	(revision 1380)
@@ -274,12 +274,20 @@
           CALL iniacademic(vcov,ucov,teta,q,masse,ps,phis,time_0)
         endif
-!#ifdef CPP_IOIPSL
+
         if (planet_type.eq."earth") then
 #ifdef CPP_EARTH
 ! Load an Earth-format start file
          CALL dynetat0("start.nc",vcov,ucov,
-     .              teta,q,masse,ps,phis, time_0)
-#endif
+     &              teta,q,masse,ps,phis, time_0)
+#endif
+        ! SW model also has Earth-format start files
+        ! (but can be used without the CPP_EARTH directive)
+          if (iflag_phys.eq.0) then
+            CALL dynetat0("start.nc",vcov,ucov,
+     &              teta,q,masse,ps,phis, time_0)
+          endif
+
         endif ! of if (planet_type.eq."earth")
+
 c       write(73,*) 'ucov',ucov
 c       write(74,*) 'vcov',vcov
Index: LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/iniconst.F
===================================================================
--- LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/iniconst.F	(revision 1379)
+++ LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/iniconst.F	(revision 1380)
@@ -5,4 +5,5 @@
 
       USE control_mod
+
       IMPLICIT NONE
 c
@@ -18,4 +19,5 @@
 #include "temps.h"
 #include "comvert.h"
+#include "iniprint.h"
 
 
@@ -47,5 +49,5 @@
       r       = cpp * kappa
 
-      PRINT*,' R  CP  Kappa ',  r , cpp,  kappa
+      write(lunout,*)'iniconst: R  CP  Kappa ',  r , cpp,  kappa
 c
 c-----------------------------------------------------------------------
