Index: trunk/LMDZ.VENUS/libf/phyvenus/clesphys.h
===================================================================
--- trunk/LMDZ.VENUS/libf/phyvenus/clesphys.h	(revision 1692)
+++ trunk/LMDZ.VENUS/libf/phyvenus/clesphys.h	(revision 1718)
@@ -13,4 +13,5 @@
        LOGICAL callnlte,callnirco2,callthermos
        LOGICAL ok_cloud, ok_chem, reinit_trac, ok_sedim
+       LOGICAL startphy_file
        INTEGER nbapp_rad, nbapp_chim, iflag_con, iflag_ajs
        INTEGER lev_histins, lev_histday, lev_histmth
@@ -27,5 +28,5 @@
      &     ok_orodr, ok_orolf, ok_gw_nonoro, ok_kzmin,                  &
      &     callnlte,callnirco2,callthermos,                             &
-     &     ok_cloud, ok_chem, reinit_trac, ok_sedim
+     &     ok_cloud, ok_chem, reinit_trac, ok_sedim, startphy_file
 
        COMMON/clesphys_i/ nbapp_rad, nbapp_chim,                        &
Index: trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90
===================================================================
--- trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90	(revision 1692)
+++ trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90	(revision 1718)
@@ -42,4 +42,8 @@
 
 !******************* parametres anciennement lus dans gcm.def
+
+       ! do we read a startphy.nc file? (default: .true.)
+       startphy_file=.true.
+       CALL getin("startphy_file",startphy_file)
 
 !Config  Key  = cycle_diurne
Index: trunk/LMDZ.VENUS/libf/phyvenus/phyetat0.F90
===================================================================
--- trunk/LMDZ.VENUS/libf/phyvenus/phyetat0.F90	(revision 1692)
+++ trunk/LMDZ.VENUS/libf/phyvenus/phyetat0.F90	(revision 1718)
@@ -13,5 +13,6 @@
       USE iostart
       use geometry_mod, only: longitude_deg, latitude_deg
-      USE time_phylmdz_mod, only: itau_phy, raz_date
+      USE time_phylmdz_mod, only: itau_phy, raz_date, pdtphys
+      USE ioipsl_getin_p_mod, only: getin_p
 
 implicit none
@@ -27,5 +28,4 @@
 
 character(len=*),intent(in) :: fichnom ! input file name
-REAL    :: xmin, xmax
 LOGICAL :: found
 REAL    :: tab_cntrl(length)
@@ -33,329 +33,324 @@
 CHARACTER(len=2) :: str2
 REAL :: lon_startphy(klon), lat_startphy(klon)
+REAL :: surface_albedo
 
 ! les variables globales lues dans le fichier restart
 
 ! open physics initial state file:
-call open_startphy(fichnom)
+if (startphy_file) then
+  call open_startphy(fichnom)
+endif
 
 !
-! Lecture des parametres de controle:
+! Load control parameters:
 !
-      CALL get_var("controle",tab_cntrl,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <controle> est absent'
-         CALL abort
-      ENDIF
+IF (startphy_file) THEN
+  CALL get_var("controle",tab_cntrl,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <controle> est absent'
+    CALL abort
+  ENDIF
        
-      DO i = 1, length
-           tabcntr0( i ) = tab_cntrl( i )
-      ENDDO
-
-
-      dtime        = tab_cntrl(1)
-      radpas       = tab_cntrl(2)
-
-      itau_phy = tab_cntrl(15)
+  DO i = 1, length
+    tabcntr0( i ) = tab_cntrl( i )
+  ENDDO
+
+  dtime        = tab_cntrl(1)
+  radpas       = tab_cntrl(2)
+
+  itau_phy = tab_cntrl(15)
 
 ! Attention si raz_date est active :
 ! il faut remettre a zero itau_phy apres phyetat0 !
-      IF (raz_date.eq.1) THEN
-        itau_phy=0
-      ENDIF
-
-! read latitudes and make a sanity check (because already known from dyn)
-call get_field("latitude",lat_startphy,found)
-IF (.not.found) THEN
-  PRINT*, 'phyetat0: Le champ <latitude> est absent'
-  CALL abort
+  IF (raz_date.eq.1) THEN
+    itau_phy=0
+  ENDIF
+
+ELSE
+  tabcntr0(:)=1 ! dummy initialization
+  ! Initialize parameter or get values from def files
+  dtime=pdtphys
+  radpas=1
+  itau_phy=0
+ENDIF ! of IF (startphy_file)
+
+IF (startphy_file) THEN
+  ! read latitudes and make a sanity check (because already known from dyn)
+  call get_field("latitude",lat_startphy,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <latitude> est absent'
+    CALL abort
+  ENDIF
+  DO i=1,klon
+    IF (ABS(lat_startphy(i)-latitude_deg(i))>=0.01) THEN
+      WRITE(*,*) "phyetat0: Warning! Latitude discrepancy wrt startphy file:",&
+                 " i=",i," lat_startphy(i)=",lat_startphy(i),&
+                 " latitude_deg(i)=",latitude_deg(i)
+      CALL abort
+    ENDIF
+  ENDDO
+
+  ! read longitudes and make a sanity check (because already known from dyn)
+  call get_field("longitude",lon_startphy,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <longitude> est absent'
+    CALL abort
+  ENDIF
+  DO i=1,klon
+    IF (ABS(lon_startphy(i)-longitude_deg(i))>=0.01) THEN
+      WRITE(*,*) "phyetat0: Warning! Longitude discrepancy wrt startphy file:",&
+                 " i=",i," lon_startphy(i)=",lon_startphy(i),&
+                 " longitude_deg(i)=",longitude_deg(i)
+      CALL abort
+    ENDIF
+  ENDDO
+ENDIF ! of IF (startphy_file)
+
+! read in other variables here ...
+
+IF (startphy_file) THEN
+  ! Load surface temperature:
+  CALL get_field("TS",ftsol(:),found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <TS> est absent'
+    PRINT*, "phyetat0: Lecture echouee pour <TS>"
+    CALL abort
+  ELSE
+    PRINT*, 'phyetat0: Le champ <TS> est present'
+    PRINT*,'Temperature du sol <TS>', minval(ftsol), maxval(ftsol)
+  ENDIF
+ELSE
+  ! Dummy initialization, but in fact this is later handled in physiq
+  ftsol(:)=0
+ENDIF ! of IF (startphy_file)
+
+IF (startphy_file) THEN
+  ! Load sub-surface temperatures:
+  DO isoil=1, nsoilmx
+    IF (isoil.GT.99) THEN
+       PRINT*, "Trop de couches"
+       CALL abort
+    ENDIF
+    WRITE(str2,'(i2.2)') isoil
+    CALL get_field('Tsoil'//str2,ftsoil(:,isoil),found)
+    IF (.not.found) THEN
+      PRINT*, "phyetat0: Le champ <Tsoil"//str2//"> est absent"
+      PRINT*, "          Il prend donc la valeur de surface"
+      DO i=1, klon
+             ftsoil(i,isoil)=ftsol(i)
+      ENDDO
+    ENDIF
+  ENDDO
+ELSE
+  ! Dummy initialization, but in fact this is later handled in physiq
+  ftsoil(:,:)=0
+ENDIF ! of IF (startphy_file)
+
+IF (startphy_file) THEN
+  ! Load surface albedo:
+  CALL get_field("ALBE", falbe,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <ALBE> est absent'
+    PRINT*, "phyetat0: Lecture echouee pour <ALBE>"
+    CALL abort
+  ENDIF
+ELSE
+  ! Dummy initialization: read value from def file 
+  surface_albedo=0.5 ! default
+  CALL getin_p("surface_albedo",surface_albedo)
+  falbe(:)=surface_albedo
+ENDIF ! of IF (startphy_file)
+PRINT*,'Albedo du sol <ALBE>', minval(falbe), maxval(falbe)
+
+IF (startphy_file) THEN
+  ! Lecture rayonnement solaire au sol:
+  CALL get_field("solsw",solsw,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <solsw> est absent'
+    PRINT*, 'mis a zero'
+    solsw = 0.
+  ENDIF
+ELSE
+  ! Dummy initialization
+  solsw(:)=0
+ENDIF ! of IF (startphy_file)
+PRINT*,'Rayonnement solaire au sol solsw:', minval(solsw), maxval(solsw)
+
+IF (startphy_file) THEN
+  ! Lecture rayonnement IR au sol:
+  CALL get_field("sollw",sollw,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <sollw> est absent'
+    PRINT*, 'mis a zero'
+    sollw = 0.
+  ENDIF
+ELSE
+  ! Dummy initialization
+  sollw(:)=0
+ENDIF ! of IF (startphy_file)
+PRINT*,'Rayonnement IR au sol sollw:', minval(sollw), maxval(solsw)
+
+IF (startphy_file) THEN
+  ! Lecture derive des flux:
+  CALL get_field("fder",fder,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <fder> est absent'
+    PRINT*, 'mis a zero'
+    fder = 0.
+  ENDIF
+ELSE
+  ! Dummy initialization
+  fder(:)=0
+ENDIF ! of IF (startphy_file)
+PRINT*,'Derive des flux fder:', minval(fder), maxval(fder)
+
+IF (startphy_file) THEN
+  ! Lecture derive flux IR:
+  CALL get_field("dlw",dlw,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <dlw> est absent'
+    PRINT*, 'mis a zero'
+    dlw = 0.
+  ENDIF
+ELSE
+  ! Dummy initialization
+  dlw(:)=0
+ENDIF ! of IF (startphy_file)
+PRINT*,'Derive flux IR dlw:', minval(dlw), maxval(dlw)
+
+IF (startphy_file) THEN
+  ! Lecture rayonnement IR vers le bas au sol:
+  CALL get_field("sollwdown",sollwdown,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <sollwdown> est absent'
+    PRINT*, 'mis a zero'
+    sollwdown = 0.
+  ENDIF
+ELSE
+  ! Dummy initialization
+  sollwdown(:)=0
+ENDIF ! of IF (startphy_file)
+PRINT*,'Flux IR vers le bas au sol sollwdown:', minval(sollwdown), maxval(sollwdown)
+
+IF (startphy_file) THEN
+  ! Lecture du rayonnement net au sol:
+  CALL get_field("RADS",radsol,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <RADS> est absent'
+    CALL abort
+  ENDIF
+ELSE
+  ! Dummy initialization
+  radsol(:)=0
+ENDIF ! of IF (startphy_file)
+PRINT*,'Rayonnement net au sol radsol:', minval(radsol), maxval(radsol)
+
+IF (startphy_file) THEN
+  ! Load sub-grid scale orography parameters:
+  CALL get_field("ZMEA",zmea,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <ZMEA> est absent'
+    PRINT*, 'mis a zero'
+    zmea=0.
+  ENDIF
+ELSE
+  zmea(:)=0
+ENDIF ! of IF (startphy_file)
+PRINT*,'OROGRAPHIE SOUS-MAILLE zmea:', minval(zmea), maxval(zmea)
+
+IF (startphy_file) THEN
+  ! Load sub-grid scale orography parameters:
+  CALL get_field("ZSTD",zstd,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <ZSTD> est absent'
+    PRINT*, 'mis a zero'
+    zstd=0.
+  ENDIF
+ELSE
+  zstd(:)=0
+ENDIF ! of IF (startphy_file)
+PRINT*,'OROGRAPHIE SOUS-MAILLE zstd:', minval(zstd), maxval(zstd)
+
+IF (startphy_file) THEN
+  ! Load sub-grid scale orography parameters:
+  CALL get_field("ZSIG",zsig,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <ZSIG> est absent'
+    PRINT*, 'mis a zero'
+    zsig=0.
+  ENDIF
+ELSE
+  zsig(:)=0
+ENDIF ! of IF (startphy_file)
+PRINT*,'OROGRAPHIE SOUS-MAILLE zsig:', minval(zsig), maxval(zsig)
+
+IF (startphy_file) THEN
+  ! Load sub-grid scale orography parameters:
+  CALL get_field("ZGAM",zgam,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <ZGAM> est absent'
+    PRINT*, 'mis a zero'
+    zgam=0.
+  ENDIF
+ELSE
+  zgam(:)=0
+ENDIF ! of IF (startphy_file)
+PRINT*,'OROGRAPHIE SOUS-MAILLE zgam:', minval(zgam), maxval(zgam)
+
+IF (startphy_file) THEN
+  ! Load sub-grid scale orography parameters:
+  CALL get_field("ZTHE",zthe,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <ZTHE> est absent'
+    PRINT*, 'mis a zero'
+    zthe=0.
+  ENDIF
+ELSE
+  zthe(:)=0
+ENDIF ! of IF (startphy_file)
+PRINT*,'OROGRAPHIE SOUS-MAILLE zthe:', minval(zthe), maxval(zthe)
+
+IF (startphy_file) THEN
+  ! Load sub-grid scale orography parameters:
+  CALL get_field("ZPIC",zpic,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <ZPIC> est absent'
+    PRINT*, 'mis a zero'
+    zpic=0.
+  ENDIF
+ELSE
+  zpic(:)=0
+ENDIF ! of IF (startphy_file)
+PRINT*,'OROGRAPHIE SOUS-MAILLE zpic:', minval(zpic), maxval(zpic)
+
+IF (startphy_file) THEN
+  ! Load sub-grid scale orography parameters:
+  CALL get_field("ZVAL",zval,found)
+  IF (.not.found) THEN
+    PRINT*, 'phyetat0: Le champ <ZVAL> est absent'
+    PRINT*, 'mis a zero'
+    zval=0.
+  ENDIF
+ELSE
+  zval(:)=0
+ENDIF ! of IF (startphy_file)
+PRINT*,'OROGRAPHIE SOUS-MAILLE zval:', minval(zval), maxval(zval)
+
+IF (startphy_file) THEN
+  ! Lecture de TANCIEN:
+  ancien_ok = .TRUE.
+
+  CALL get_field("TANCIEN",t_ancien,found)
+  IF (.not.found) THEN
+    PRINT*, "phyetat0: Le champ <TANCIEN> est absent"
+    PRINT*, "Depart legerement fausse. Mais je continue"
+    ancien_ok = .FALSE.
+  ENDIF
+ELSE
+  ancien_ok=.false.
 ENDIF
-DO i=1,klon
-  IF (ABS(lat_startphy(i)-latitude_deg(i))>=0.01) THEN
-    WRITE(*,*) "phyetat0: Warning! Latitude discrepancy wrt startphy file:",&
-               " i=",i," lat_startphy(i)=",lat_startphy(i),&
-               " latitude_deg(i)=",latitude_deg(i)
-    CALL abort
-  ENDIF
-ENDDO
-
-! read longitudes and make a sanity check (because already known from dyn)
-call get_field("longitude",lon_startphy,found)
-IF (.not.found) THEN
-  PRINT*, 'phyetat0: Le champ <longitude> est absent'
-  CALL abort
-ENDIF
-DO i=1,klon
-  IF (ABS(lon_startphy(i)-longitude_deg(i))>=0.01) THEN
-    WRITE(*,*) "phyetat0: Warning! Longitude discrepancy wrt startphy file:",&
-               " i=",i," lon_startphy(i)=",lon_startphy(i),&
-               " longitude_deg(i)=",longitude_deg(i)
-    CALL abort
-  ENDIF
-ENDDO
-
-! read in other variables here ...
-
-! Lecture des temperatures du sol:
-
-       CALL get_field("TS",ftsol(:),found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <TS> est absent'
-         PRINT*, "phyetat0: Lecture echouee pour <TS>"
-         CALL abort
-      ELSE
-         PRINT*, 'phyetat0: Le champ <TS> est present'
-         xmin = 1.0E+20
-         xmax = -1.0E+20
-         DO i = 1, klon
-            xmin = MIN(ftsol(i),xmin)
-            xmax = MAX(ftsol(i),xmax)
-         ENDDO
-         PRINT*,'Temperature du sol <TS>', xmin, xmax
-      ENDIF
-
-
-! Lecture des temperatures du sol profond:
-
-      DO isoil=1, nsoilmx
-      IF (isoil.GT.99) THEN
-         PRINT*, "Trop de couches"
-         CALL abort
-      ENDIF
-      WRITE(str2,'(i2.2)') isoil
-      CALL get_field('Tsoil'//str2,ftsoil(:,isoil),found)
-      IF (.not.found) THEN
-         PRINT*, "phyetat0: Le champ <Tsoil"//str2//"> est absent"
-         PRINT*, "          Il prend donc la valeur de surface"
-         DO i=1, klon
-             ftsoil(i,isoil)=ftsol(i)
-         ENDDO
-      ENDIF
-      ENDDO
-
-! Lecture de albedo au sol:
-
-      CALL get_field("ALBE", falbe,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <ALBE> est absent'
-         PRINT*, "phyetat0: Lecture echouee pour <ALBE>"
-         CALL abort
-      ELSE
-         xmin = 1.0E+20
-         xmax = -1.0E+20
-         DO i = 1, klon
-            xmin = MIN(falbe(i),xmin)
-            xmax = MAX(falbe(i),xmax)
-         ENDDO
-         PRINT*,'Albedo du sol <ALBE>', xmin, xmax
-      ENDIF
-
-! Lecture rayonnement solaire au sol:
-
-      CALL get_field("solsw",solsw,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <solsw> est absent'
-         PRINT*, 'mis a zero'
-         solsw = 0.
-      ENDIF
-      xmin = 1.0E+20
-      xmax = -1.0E+20
-      DO i = 1, klon
-         xmin = MIN(solsw(i),xmin)
-         xmax = MAX(solsw(i),xmax)
-      ENDDO
-      PRINT*,'Rayonnement solaire au sol solsw:', xmin, xmax
-
-! Lecture rayonnement IR au sol:
-
-      CALL get_field("sollw",sollw,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <sollw> est absent'
-         PRINT*, 'mis a zero'
-         sollw = 0.
-      ENDIF
-      xmin = 1.0E+20
-      xmax = -1.0E+20
-      DO i = 1, klon
-         xmin = MIN(sollw(i),xmin)
-         xmax = MAX(sollw(i),xmax)
-      ENDDO
-      PRINT*,'Rayonnement IR au sol sollw:', xmin, xmax
-
-! Lecture derive des flux:
-
-      CALL get_field("fder",fder,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <fder> est absent'
-         PRINT*, 'mis a zero'
-         fder = 0.
-      ENDIF
-      xmin = 1.0E+20
-      xmax = -1.0E+20
-      DO i = 1, klon
-         xmin = MIN(fder(i),xmin)
-         xmax = MAX(fder(i),xmax)
-      ENDDO
-      PRINT*,'Derive des flux fder:', xmin, xmax
-
-! Lecture derive flux IR:
-
-      CALL get_field("dlw",dlw,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <dlw> est absent'
-         PRINT*, 'mis a zero'
-         dlw = 0.
-      ENDIF
-      xmin = 1.0E+20
-      xmax = -1.0E+20
-      DO i = 1, klon
-         xmin = MIN(dlw(i),xmin)
-         xmax = MAX(dlw(i),xmax)
-      ENDDO
-      PRINT*,'Derive flux IR dlw:', xmin, xmax
-
-! Lecture rayonnement IR vers le bas au sol:
-
-      CALL get_field("sollwdown",sollwdown,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <sollwdown> est absent'
-         PRINT*, 'mis a zero'
-         sollwdown = 0.
-      ENDIF
-      xmin = 1.0E+20
-      xmax = -1.0E+20
-      DO i = 1, klon
-         xmin = MIN(sollwdown(i),xmin)
-         xmax = MAX(sollwdown(i),xmax)
-      ENDDO
-      PRINT*,'Flux IR vers le bas au sol sollwdown:', xmin, xmax
-
-! Lecture du rayonnement net au sol:
-
-      CALL get_field("RADS",radsol,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <RADS> est absent'
-         CALL abort
-      ENDIF
-      xmin = 1.0E+20
-      xmax = -1.0E+20
-      DO i = 1, klon
-         xmin = MIN(radsol(i),xmin)
-         xmax = MAX(radsol(i),xmax)
-      ENDDO
-      PRINT*,'Rayonnement net au sol radsol:', xmin, xmax
-
-! Lecture de l'orographie sous-maille:
-
-      CALL get_field("ZMEA",zmea,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <ZMEA> est absent'
-         PRINT*, 'mis a zero'
-         zmea=0.
-      ENDIF
-      xmin = 1.0E+20
-      xmax = -1.0E+20
-      DO i = 1, klon
-         xmin = MIN(zmea(i),xmin)
-         xmax = MAX(zmea(i),xmax)
-      ENDDO
-      PRINT*,'OROGRAPHIE SOUS-MAILLE zmea:', xmin, xmax
-
-      CALL get_field("ZSTD",zstd,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <ZSTD> est absent'
-         PRINT*, 'mis a zero'
-         zstd=0.
-      ENDIF
-      xmin = 1.0E+20
-      xmax = -1.0E+20
-      DO i = 1, klon
-         xmin = MIN(zstd(i),xmin)
-         xmax = MAX(zstd(i),xmax)
-      ENDDO
-      PRINT*,'OROGRAPHIE SOUS-MAILLE zstd:', xmin, xmax
-
-      CALL get_field("ZSIG",zsig,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <ZSIG> est absent'
-         PRINT*, 'mis a zero'
-         zsig=0.
-      ENDIF
-      xmin = 1.0E+20
-      xmax = -1.0E+20
-      DO i = 1, klon
-         xmin = MIN(zsig(i),xmin)
-         xmax = MAX(zsig(i),xmax)
-      ENDDO
-      PRINT*,'OROGRAPHIE SOUS-MAILLE zsig:', xmin, xmax
-
-      CALL get_field("ZGAM",zgam,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <ZGAM> est absent'
-         PRINT*, 'mis a zero'
-         zgam=0.
-      ENDIF
-      xmin = 1.0E+20
-      xmax = -1.0E+20
-      DO i = 1, klon
-         xmin = MIN(zgam(i),xmin)
-         xmax = MAX(zgam(i),xmax)
-      ENDDO
-      PRINT*,'OROGRAPHIE SOUS-MAILLE zgam:', xmin, xmax
-
-      CALL get_field("ZTHE",zthe,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <ZTHE> est absent'
-         PRINT*, 'mis a zero'
-         zthe=0.
-      ENDIF
-      xmin = 1.0E+20
-      xmax = -1.0E+20
-      DO i = 1, klon
-         xmin = MIN(zthe(i),xmin)
-         xmax = MAX(zthe(i),xmax)
-      ENDDO
-      PRINT*,'OROGRAPHIE SOUS-MAILLE zthe:', xmin, xmax
-
-      CALL get_field("ZPIC",zpic,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <ZPIC> est absent'
-         PRINT*, 'mis a zero'
-         zpic=0.
-      ENDIF
-      xmin = 1.0E+20
-      xmax = -1.0E+20
-      DO i = 1, klon
-         xmin = MIN(zpic(i),xmin)
-         xmax = MAX(zpic(i),xmax)
-      ENDDO
-      PRINT*,'OROGRAPHIE SOUS-MAILLE zpic:', xmin, xmax
-
-      CALL get_field("ZVAL",zval,found)
-      IF (.not.found) THEN
-         PRINT*, 'phyetat0: Le champ <ZVAL> est absent'
-         PRINT*, 'mis a zero'
-         zval=0.
-      ENDIF
-      xmin = 1.0E+20
-      xmax = -1.0E+20
-      DO i = 1, klon
-         xmin = MIN(zval(i),xmin)
-         xmax = MAX(zval(i),xmax)
-      ENDDO
-      PRINT*,'OROGRAPHIE SOUS-MAILLE zval:', xmin, xmax
-
-! Lecture de TANCIEN:
-
-      ancien_ok = .TRUE.
-
-      CALL get_field("TANCIEN",t_ancien,found)
-      IF (.not.found) THEN
-         PRINT*, "phyetat0: Le champ <TANCIEN> est absent"
-         PRINT*, "Depart legerement fausse. Mais je continue"
-         ancien_ok = .FALSE.
-      ENDIF
 
 ! close file
-call close_startphy
+IF (startphy_file) call close_startphy
 
 ! do some more initializations
Index: trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F
===================================================================
--- trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F	(revision 1692)
+++ trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F	(revision 1718)
@@ -275,5 +275,5 @@
       REAL zdtime, zlongi
 c
-      INTEGER i, k, iq, ig, j, ll, ilon, ilat, ilev
+      INTEGER i, k, iq, ig, j, ll, ilon, ilat, ilev, isoil
 c
       REAL zphi(klon,klev)
@@ -461,4 +461,12 @@
 c
          CALL phyetat0 ("startphy.nc")
+         IF (.not.startphy_file) THEN
+           ! Additionnal academic initializations
+           ftsol(:)=t(:,1) ! surface temperature as in first atm. layer
+           DO isoil=1, nsoilmx
+             ! subsurface temperatures equal to surface temperature
+             ftsoil(:,isoil)=ftsol(:)
+           ENDDO
+         ENDIF
 
 c dtime est defini dans tabcontrol.h et lu dans startphy
