Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/dyn3dpar/initialize_physics.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/dyn3dpar/initialize_physics.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/dyn3dpar/initialize_physics.F90	(revision 313)
@@ -1,4 +1,4 @@
 SUBROUTINE initialize_unstructured_physics(nbp, nlayer, communicator, nb_proc, distrib, &
-                                           punjours, pdayref,ptimestep,                  &
+                                           punjours, pdayref,time0,ptimestep,                  &
                                            nb_vertex, lat, lon, area, bounds_lon, bounds_lat, &
                                            prad,pg,pr,pcpp, preff,ap,bp )
@@ -37,4 +37,5 @@
     REAL,INTENT(in)    :: bounds_lat(nbp,nb_vertex) ! latitude boundaries of cell
     INTEGER,INTENT(in) :: pdayref ! reference day of for the simulation
+    INTEGER,INTENT(in) :: time0 ! initialtime (s)
     REAL,INTENT(in)    :: ptimestep ! physics time step (s)
     REAL,INTENT(in)    :: preff      ! reference surface pressure (Pa)
@@ -79,5 +80,5 @@
                 rlatd,rlond,airephy,prad,pg,pr,pcpp)
                 
-    CALL initialize_xios_output        
+    CALL initialize_xios_output(time0)        
 !$OMP END PARALLEL
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/abort_physiq.f90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/abort_physiq.f90	(revision 313)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/abort_physiq.f90	(revision 313)
@@ -0,0 +1,10 @@
+SUBROUTINE abort_physiq
+USE mod_phys_lmdz_para
+IMPLICIT NONE
+  INCLUDE 'mpif.h'
+  INTEGER :: ierror_mpi
+!$OMP CRITICAL (MPI_ABORT_GCM)
+    CALL MPI_ABORT(COMM_LMDZ_PHY, 1, ierror_mpi)
+!$OMP END CRITICAL (MPI_ABORT_GCM)
+    STOP 1
+END SUBROUTINE abort_physiq
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/aeropacity.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/aeropacity.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/aeropacity.F90	(revision 313)
@@ -208,5 +208,5 @@
                   end do
 
-                  call abort
+                  call abort_physiq
                endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/ave_stelspec.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/ave_stelspec.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/ave_stelspec.F90	(revision 313)
@@ -88,5 +88,5 @@
             file_id='/stellar_spectra/gj644.txt'
             print*,'Find out tstellar before using this star!'
-            call abort
+            call abort_physiq
             file_id_lam='/stellar_spectra/lam.txt'
             Nfine=5000
@@ -113,5 +113,5 @@
 	   Case Default
             print*,'Error: unknown star type chosen'
-            call abort
+            call abort_physiq
          End Select
 
@@ -128,5 +128,5 @@
            write(*,*)' datadir = /absolute/path/to/datagcm'
            write(*,*)' Also check that there is a ',trim(file_id_lam),' there.'
-           call abort
+           call abort_physiq
          else
            do ifine=1,Nfine
@@ -147,5 +147,5 @@
            write(*,*)' datadir = /absolute/path/to/datagcm'
            write(*,*)' Also check that there is a ',trim(file_id),' there.'
-           call abort
+           call abort_physiq
          else
            do ifine=1,Nfine
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/calc_cpp_mugaz.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/calc_cpp_mugaz.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/calc_cpp_mugaz.F90	(revision 313)
@@ -79,5 +79,5 @@
             else
                print*,'Error in calc_cpp_mugaz: Gas species not recognised!'
-               call abort
+               call abort_physiq
             endif
          endif
@@ -102,5 +102,5 @@
             print*,'    Either adjust cpp / mugaz via newstart to calculated values,'
             print*,'    or set check_cpp_match to .false. in callphys.def.'
-            stop
+            CALL abort_physiq
          else
             if (is_master) print*,'--> OK. Settings match composition.'
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/callcorrk.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/callcorrk.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/callcorrk.F90	(revision 313)
@@ -211,5 +211,5 @@
          if(naerkind.gt.4)then
             print*,'Code not general enough to deal with naerkind > 4 yet.'
-            call abort
+            call abort_physiq
          endif
          call su_aer_radii(ngrid,nlayer,reffrad,nueffrad)
@@ -235,5 +235,5 @@
          if((igcm_h2o_vap.eq.0) .and. varactive)then
             print*,'varactive in callcorrk but no h2o_vap tracer.'
-            stop
+            CALL abort_physiq
          endif
 
@@ -250,5 +250,5 @@
            if (global1d.and.diurnal) then
             print*,'if global1d is true, diurnal must be set to false'
-            stop
+            CALL abort_physiq
            endif
 
@@ -407,5 +407,5 @@
                         print*,'Serious problems with qsvaer values' 
                         print*,'in callcorrk'
-                        call abort
+                        call abort_physiq
                      endif
                      if(qsvaer(k,nw,iaer).gt.qxvaer(k,nw,iaer))then
@@ -418,5 +418,5 @@
                         print*,'Serious problems with qsiaer values'
                         print*,'in callcorrk'
-                        call abort
+                        call abort_physiq
                      endif
                      if(qsiaer(k,nw,iaer).gt.qxiaer(k,nw,iaer))then
@@ -457,5 +457,5 @@
          print*,'For open lower boundary in callcorrk must'
          print*,'have surface albedo set to zero!'
-         call abort
+         call abort_physiq
       endif
 
@@ -556,5 +556,5 @@
             if(nq.gt.1)then
                print*,'Need 1 tracer only to run kcm1d.e' 
-               stop
+               CALL abort_physiq
             endif
             do l=1,nlayer
@@ -639,9 +639,9 @@
          print*,'Minimum pressure is outside the radiative'
          print*,'transfer kmatrix bounds, exiting.'
-         call abort
+         call abort_physiq
       elseif(plevrad(L_LEVELS).gt.pgasmax)then
          print*,'Maximum pressure is outside the radiative'
          print*,'transfer kmatrix bounds, exiting.'
-         call abort
+         call abort_physiq
       endif
 
@@ -654,5 +654,5 @@
             print*,"tgasmin=",tgasmin
             if (strictboundcorrk) then
-              call abort
+              call abort_physiq
             else
               print*,'***********************************************'
@@ -669,5 +669,5 @@
             print*,"tgasmax=",tgasmax
             if (strictboundcorrk) then
-              call abort
+              call abort_physiq
             else
               print*,'***********************************************'
@@ -687,5 +687,5 @@
             print*,"tgasmin=",tgasmin
             if (strictboundcorrk) then
-              call abort
+              call abort_physiq
             else
               print*,'***********************************************'
@@ -702,5 +702,5 @@
             print*,"tgasmax=",tgasmax
             if (strictboundcorrk) then
-              call abort
+              call abort_physiq
             else
               print*,'***********************************************'
@@ -787,5 +787,5 @@
             print*,'temp=   ',pt(ig,:)
             print*,'pplay=  ',pplay(ig,:)
-            call abort
+            call abort_physiq
          endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/callsedim.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/callsedim.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/callsedim.F	(revision 313)
@@ -81,10 +81,10 @@
             write(*,*) "callsedim error: water=.true.",
      &                 " but igcm_h2o_ice=0"
-          stop
+          CALL abort_physiq
           endif
           if (iaero_h2o.eq.0) then
             write(*,*) "callsedim error: water=.true.",
      &                 " but iaero_ho2=0"
-          stop
+          CALL abort_physiq
           endif
         endif
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/condense_cloud.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/condense_cloud.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/condense_cloud.F90	(revision 313)
@@ -175,5 +175,5 @@
            print*,'In condens_cloud but no CO2 ice tracer, exiting.'
            print*,'Still need generalisation to arbitrary species!'
-           stop
+           CALL abort_physiq
         endif
 
@@ -401,5 +401,5 @@
             write(116,*) 0.0, pplev(1,1), 0.0, 0.0
             close(116)
-            call abort
+            call abort_physiq
          endif
 
@@ -448,5 +448,5 @@
                PRINT*,'Ps = ',pplev(ig,1)
                PRINT*,'d Ps = ',pdpsrf(ig)
-               STOP
+               CALL abort_physiq
             ENDIF
          END IF
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/convadj.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/convadj.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/convadj.F	(revision 313)
@@ -97,5 +97,5 @@
              if (noms(iq).eq."co2") then
                 print*,'dont go there'
-                stop
+                CALL abort_physiq
                 ico2=iq
                 m_co2 = 44.01E-3  ! CO2 molecular mass (kg/mol)   
@@ -297,5 +297,5 @@
                  zalpha=1.
               ELSE
-!                IF(zalpha.LT.0.) STOP
+!                IF(zalpha.LT.0.) CALL abort_physiq
                  IF(zalpha.LT.1.e-4) zalpha=1.e-4
               ENDIF
@@ -381,5 +381,5 @@
             print*,'jadrs=',jadrs
 
-            call abort
+            call abort_physiq
          endif
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/cp_neutral.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/cp_neutral.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/cp_neutral.F90	(revision 313)
@@ -22,5 +22,5 @@
   else
      print*,'Gas not recognised in cp_neutral!'
-     call abort
+     call abort_physiq
   endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/datareadnc.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/datareadnc.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/datareadnc.F	(revision 313)
@@ -118,5 +118,5 @@
         write(*,*)' can be obtained online on:'
         write(*,*)' http://www.lmd.jussieu.fr/~forget/datagcm/datafile'
-        STOP
+        CALL abort_physiq
       ENDIF
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/def_var.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/def_var.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/def_var.F90	(revision 313)
@@ -39,5 +39,5 @@
    write(*,*) "def_var: Failed defining variable "//trim(name)
    write(*,*) NF_STRERROR(ierr)
-   stop ""
+   CALL abort_physiq 
 endif
 
@@ -48,5 +48,5 @@
    write(*,*) "def_var: Failed writing title attribute for "//trim(name)
    write(*,*) NF_STRERROR(ierr)
-   stop ""
+   CALL abort_physiq 
 endif
 
@@ -56,5 +56,5 @@
    write(*,*) "def_var: Failed writing units attribute for "//trim(name)
    write(*,*) NF_STRERROR(ierr)
-   stop ""
+   CALL abort_physiq 
 endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/gfluxi.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/gfluxi.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/gfluxi.F	(revision 313)
@@ -62,6 +62,9 @@
  
 
-      IF (NLL .GT. NLP) STOP 'PARAMETER NL TOO SMALL IN GFLUXI'
-
+      IF (NLL .GT. NLP) THEN
+       PRINT*, 'PARAMETER NL TOO SMALL IN GFLUXI'
+       CALL abort_physiq
+      ENDIF
+      
       NLAYER = L_NLAYRAD
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/gradients_kcm.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/gradients_kcm.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/gradients_kcm.F90	(revision 313)
@@ -43,5 +43,5 @@
      if(ngasmx.eq.1)then
         print*,'Cannot have moist adiabat with one gas...'
-        stop
+        CALL abort_physiq
      endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/hydrol.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/hydrol.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/hydrol.F90	(revision 313)
@@ -151,5 +151,5 @@
             print*,'How are we supposed to average the ocean'
             print*,'temperature, when there are no oceans?'
-            call abort
+            call abort_physiq
          endif
 
@@ -157,5 +157,5 @@
             print*,'You have enabled runoff, but you have no oceans.'
             print*,'Where did you think the water was going to go?'
-            call abort
+            call abort_physiq
          endif
          
@@ -315,5 +315,5 @@
             print*,'Surface type not recognised in hydrol.F!'
             print*,'Exiting...'
-            call abort
+            call abort_physiq
 
          endif
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/iniaerosol.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/iniaerosol.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/iniaerosol.F	(revision 313)
@@ -71,5 +71,5 @@
           print*, 'or change options in callphys.def'
           print*, 'Abort in iniaerosol.F'
-          call abort
+          call abort_physiq
       endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/inifis.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/inifis.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/inifis.F	(revision 313)
@@ -215,5 +215,5 @@
            if (is_master) print*,'If diurnal=true, we should turn off',
      &		' tlocked.'
-           stop
+           CALL abort_physiq
          endif
 
@@ -306,5 +306,5 @@
             if (is_master) print*,'We need a CO2 ice tracer to',
      &		' condense CO2'
-            call abort
+            call abort_physiq
          endif 
  
@@ -393,5 +393,5 @@
          if (kastprof.and.(ngrid.gt.1)) then
            if (is_master) print*,'kastprof can only be used in 1D!'
-           call abort
+           call abort_physiq
          endif
 
@@ -411,5 +411,5 @@
            if (is_master) print*,'nosurf not compatible with soil',
      &		' scheme! ... got to make a choice!'
-           call abort
+           call abort_physiq
          endif
 
@@ -430,15 +430,15 @@
            if (is_master) print*,'newtonian not compatible with ',
      &		'correlated-k!'
-           call abort
+           call abort_physiq
          endif
          if (newtonian.and.calladj) then
            if (is_master) print*,'newtonian not compatible with ',
      &		'adjustment!'
-           call abort
+           call abort_physiq
          endif
          if (newtonian.and.calldifv) then
            if (is_master) print*,'newtonian not compatible with a ',
      &		'boundary layer!'
-           call abort
+           call abort_physiq
          endif
 
@@ -452,5 +452,5 @@
          if (testradtimes.and.(ngrid.gt.1)) then
            if (is_master) print*,'testradtimes can only be used in 1D!'
-           call abort
+           call abort_physiq
          endif
 
@@ -624,5 +624,5 @@
          if (varactive.and.varfixed) then
            if (is_master) print*,'if varactive, varfixed must be OFF!'
-           stop
+           CALL abort_physiq
          endif
 
@@ -642,5 +642,5 @@
            if (is_master) print*,'if water is ON, tracer must be ',
      &		'ON too!'
-           stop
+           CALL abort_physiq
          endif
 
@@ -655,5 +655,5 @@
            if (is_master) print*,'if watercond is used, water should ',
      &		'be used too'
-           stop
+           CALL abort_physiq
          endif
 
@@ -706,5 +706,5 @@
                if (is_master) PRINT *, "mugaz must be set if ',
      &		'force_cpp = T"
-               STOP
+               CALL abort_physiq
            ELSE
                if (is_master) write(*,*) "inifis: mugaz=",mugaz
@@ -722,5 +722,5 @@
                if (is_master) PRINT *, "cpp must be set if ',
      &		'force_cpp = T"
-               STOP
+               CALL abort_physiq
            ELSE
                if (is_master) write(*,*) "inifis: cpp=",cpp
@@ -739,5 +739,5 @@
          if (is_master) write(*,*) 'Cannot read file callphys.def.",
      &		" Is it here ?'
-         stop
+         CALL abort_physiq
       ENDIF
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/iniphysiq.F90.orig
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/iniphysiq.F90.orig	(revision 312)
+++ 	(revision )
@@ -1,77 +1,0 @@
-subroutine iniphysiq(ngrid,nlayer, punjours, pdayref,ptimestep,          &
-                     plat,plon,parea,pcu,pcv,                            &
-                     prad,pg,pr,pcpp,iflag_phys)
-
-use dimphy, only : klev ! number of atmospheric levels
-use mod_grid_phy_lmdz, only : klon_glo ! number of atmospheric columns
-                                       ! (on full grid)
-use mod_phys_lmdz_para, only : klon_omp, & ! number of columns (on local omp grid)
-                               klon_omp_begin, & ! start index of local omp subgrid
-                               klon_omp_end, & ! end index of local omp subgrid
-                               klon_mpi_begin ! start indes of columns (on local mpi grid)
-use comgeomphy, only : airephy, & ! physics grid area (m2)
-                       cuphy, & ! cu coeff. (u_covariant = cu * u)
-                       cvphy, & ! cv coeff. (v_covariant = cv * v)
-                       rlond, & ! longitudes
-                       rlatd ! latitudes
-use infotrac, only : nqtot ! number of advected tracers
-
-implicit none
-
-real,intent(in) :: prad ! radius of the planet (m)
-real,intent(in) :: pg ! gravitational acceleration (m/s2)
-real,intent(in) :: pr ! ! reduced gas constant R/mu
-real,intent(in) :: pcpp ! specific heat Cp
-real,intent(in) :: punjours ! length (in s) of a standard day
-integer,intent(in) :: ngrid ! number of horizontal grid points in the physics (full grid)
-integer,intent(in) :: nlayer ! number of atmospheric layers
-real,intent(in) :: plat(ngrid) ! latitudes of the physics grid
-real,intent(in) :: plon(ngrid) ! longitudes of the physics grid
-real,intent(in) :: parea(klon_glo) ! area (m2)
-real,intent(in) :: pcu(klon_glo) ! cu coeff. (u_covariant = cu * u)
-real,intent(in) :: pcv(klon_glo) ! cv coeff. (v_covariant = cv * v)
-integer,intent(in) :: pdayref ! reference day of for the simulation
-real,intent(in) :: ptimestep !physics time step (s)
-integer,intent(in) :: iflag_phys ! type of physics to be called
-
-integer :: ibegin,iend,offset
-character(len=20) :: modname='iniphysiq'
-character(len=80) :: abort_message
-
-IF (nlayer.NE.klev) THEN
-  write(*,*) 'STOP in ',trim(modname)
-  write(*,*) 'Problem with dimensions :'
-  write(*,*) 'nlayer     = ',nlayer
-  write(*,*) 'klev   = ',klev
-  abort_message = ''
-  CALL abort_gcm (modname,abort_message,1)
-ENDIF
-
-IF (ngrid.NE.klon_glo) THEN
-  write(*,*) 'STOP in ',trim(modname)
-  write(*,*) 'Problem with dimensions :'
-  write(*,*) 'ngrid     = ',ngrid
-  write(*,*) 'klon   = ',klon_glo
-  abort_message = ''
-  CALL abort_gcm (modname,abort_message,1)
-ENDIF
-
-!$OMP PARALLEL PRIVATE(ibegin,iend) 
-!$OMP+         SHARED(parea,pcu,pcv,plon,plat)
-      
-offset=klon_mpi_begin-1
-airephy(1:klon_omp)=parea(offset+klon_omp_begin:offset+klon_omp_end)
-cuphy(1:klon_omp)=pcu(offset+klon_omp_begin:offset+klon_omp_end)
-cvphy(1:klon_omp)=pcv(offset+klon_omp_begin:offset+klon_omp_end)
-rlond(1:klon_omp)=plon(offset+klon_omp_begin:offset+klon_omp_end)
-rlatd(1:klon_omp)=plat(offset+klon_omp_begin:offset+klon_omp_end)
-
-! copy some fundamental parameters to physics 
-! and do some initializations 
-call inifis(klon_omp,nlayer,nqtot,pdayref,punjours,ptimestep, &
-            rlatd,rlond,airephy,prad,pg,pr,pcpp)
-
-!$OMP END PARALLEL
-
-
-end subroutine iniphysiq
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/inistats.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/inistats.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/inistats.F	(revision 313)
@@ -27,9 +27,13 @@
       nsteppd=nint(daysec/dtphys)
       write (*,*) 'nsteppd=',nsteppd
-      if (abs(float(nsteppd)-daysec/dtphys).gt.1.e-8*daysec)
-     &   stop'Dans Instat:  1jour .ne. n pas physiques'
+      if (abs(float(nsteppd)-daysec/dtphys).gt.1.e-8*daysec) THEN 
+        PRINT *,'Dans Instat:  1jour .ne. n pas physiques'
+        CALL abort_physiq
+      endif
 
-      if(mod(nsteppd,istime).ne.0)
-     &   stop'Dans Instat:  1jour .ne. n*istime pas physiques'
+      if(mod(nsteppd,istime).ne.0) THEN
+        PRINT*,'Dans Instat:  1jour .ne. n*istime pas physiques'
+        CALL abort_physiq
+      endif        
 
       istats=nsteppd/istime
@@ -50,5 +54,5 @@
       if (ierr.ne.NF_NOERR) then
          write (*,*) NF_STRERROR(ierr)
-         stop ""
+         CALL abort_physiq
       endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/init_phys_lmdz.F90.orig
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/init_phys_lmdz.F90.orig	(revision 312)
+++ 	(revision )
@@ -1,27 +1,0 @@
-!
-! $Id$
-!
-SUBROUTINE init_phys_lmdz(iim,jjp1,llm,nb_proc,distrib)
-  USE mod_phys_lmdz_omp_data, only: klon_omp
-  USE mod_grid_phy_lmdz, only: nbp_lev
-  USE mod_phys_lmdz_para, only: init_phys_lmdz_para
-  USE mod_grid_phy_lmdz, only: init_grid_phy_lmdz
-  USE dimphy, ONLY : init_dimphy
-
-  IMPLICIT NONE
-  
-    INTEGER,INTENT(in) :: iim
-    INTEGER,INTENT(in) :: jjp1
-    INTEGER,INTENT(in) :: llm
-    INTEGER,INTENT(in) :: nb_proc
-    INTEGER,INTENT(in) :: distrib(0:nb_proc-1)
-
-
-    CALL init_grid_phy_lmdz(iim,jjp1,llm)
-    CALL init_phys_lmdz_para(iim,jjp1,nb_proc,distrib)
-!$OMP PARALLEL
-    CALL init_dimphy(klon_omp,nbp_lev)
-
-!$OMP END PARALLEL
- 
-END SUBROUTINE init_phys_lmdz  
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/interpolateH2H2.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/interpolateH2H2.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/interpolateH2H2.F90	(revision 313)
@@ -61,5 +61,5 @@
          print*,'really want to run simulations with hydrogen at T > 400 K, contact'
          print*,'Robin Wordsworth [rwordsworth@uchicago.edu].'
-         stop
+         CALL abort_physiq
       endif
 
@@ -82,5 +82,5 @@
            write(*,*) 'datadir = /absolute/path/to/datagcm'
            write(*,*) 'Also check that the continuum data continuum_data/H2-H2_norm_2011.cia is there.'
-           call abort
+           call abort_physiq
          else
 
@@ -92,5 +92,5 @@
                   print*,'is ',nres,', which does not match nS.'
                   print*,'Please adjust nS value in interpolateH2H2.F90'
-                  stop
+                  CALL abort_physiq
                endif
                temp_arr(iT)=Ttemp
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/iostart.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/iostart.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/iostart.F90	(revision 313)
@@ -57,5 +57,5 @@
         write(*,*)'open_startphy: problem opening file '//trim(filename)
         write(*,*)trim(nf90_strerror(ierr))
-        !CALL ABORT
+        !CALL abort_physiq
         found=.false.
       ELSE
@@ -125,5 +125,5 @@
                   //trim(field_name)
         write(*,*)trim(nf90_strerror(ierr))
-        CALL ABORT
+        CALL abort_physiq
       ENDIF
     ENDIF
@@ -176,5 +176,5 @@
                   //trim(field_name)
         write(*,*)trim(nf90_strerror(ierr))
-        CALL ABORT
+        CALL abort_physiq
       ENDIF
     ENDIF
@@ -315,5 +315,5 @@
       IF (.NOT. tmp_found) THEN
         PRINT*, 'get_field_rgen: Field <'//field_name//'> not found'
-        CALL abort
+        CALL abort_physiq
       ENDIF
     ENDIF
@@ -335,10 +335,10 @@
 !              IF (ierr/=NF90_NOERR) THEN
 !                 PRINT*, 'phyetat0: Lecture echouee aussi en 2D pour <'//field_name//'>'
-!                 CALL abort
+!                 CALL abort_physiq
 !              ELSE
 !                 PRINT*, 'phyetat0: La variable <'//field_name//'> lu sur surface seulement'!, selon ancien format, le reste mis a zero'
 !              END IF
 !           ELSE
-              CALL abort
+              CALL abort_physiq
 !           ENDIF
          ENDIF
@@ -435,5 +435,5 @@
         IF (ierr/=NF90_NOERR) THEN
           PRINT*, 'phyetat0: Failed loading <'//trim(var_name)//'>'
-          CALL abort
+          CALL abort_physiq
         ENDIF
         tmp_found=.TRUE.
@@ -455,5 +455,5 @@
       IF (.NOT. tmp_found) THEN
         PRINT*, 'phyetat0: Variable <'//trim(var_name)//'> not found'
-        CALL abort
+        CALL abort_physiq
       ENDIF
     ENDIF
@@ -490,5 +490,5 @@
           write(*,*)'open_restartphy: problem creating file '//trim(filename)
           write(*,*)trim(nf90_strerror(ierr))
-          CALL ABORT
+          CALL abort_physiq
         ENDIF
         already_created=.true.
@@ -499,5 +499,5 @@
           write(*,*)'open_restartphy: problem opening file '//trim(filename)
           write(*,*)trim(nf90_strerror(ierr))
-          CALL ABORT
+          CALL abort_physiq
         ENDIF
         return
@@ -515,5 +515,5 @@
         write(*,*)'open_restartphy: problem defining index dimension '
         write(*,*)trim(nf90_strerror(ierr))
-        CALL ABORT
+        CALL abort_physiq
       ENDIF
       
@@ -522,5 +522,5 @@
         write(*,*)'open_restartphy: problem defining physical_points dimension '
         write(*,*)trim(nf90_strerror(ierr))
-        CALL ABORT
+        CALL abort_physiq
       ENDIF
       
@@ -529,5 +529,5 @@
         write(*,*)'open_restartphy: problem defining subsurface_layers dimension '
         write(*,*)trim(nf90_strerror(ierr))
-        CALL ABORT
+        CALL abort_physiq
       ENDIF
       
@@ -536,5 +536,5 @@
         write(*,*)'open_restartphy: problem defining nlayer_plus_1 dimension '
         write(*,*)trim(nf90_strerror(ierr))
-        CALL ABORT
+        CALL abort_physiq
       ENDIF
       
@@ -545,5 +545,5 @@
           write(*,*)'open_restartphy: problem defining number_of_advected_fields dimension '
           write(*,*)trim(nf90_strerror(ierr))
-          CALL ABORT
+          CALL abort_physiq
         ENDIF
       endif
@@ -553,5 +553,5 @@
         write(*,*)'open_restartphy: problem defining nlayer dimension '
         write(*,*)trim(nf90_strerror(ierr))
-        CALL ABORT
+        CALL abort_physiq
       ENDIF
       
@@ -560,5 +560,5 @@
         write(*,*)'open_restartphy: problem defining Time dimension '
         write(*,*)trim(nf90_strerror(ierr))
-        CALL ABORT
+        CALL abort_physiq
       ENDIF
 
@@ -567,5 +567,5 @@
         write(*,*)'open_restartphy: problem defining oceanic layer dimension '
         write(*,*)trim(nf90_strerror(ierr))
-        CALL ABORT
+        CALL abort_physiq
       ENDIF
 
@@ -575,5 +575,5 @@
         write(*,*)'open_restartphy: problem ending definition mode '
         write(*,*)trim(nf90_strerror(ierr))
-        CALL ABORT
+        CALL abort_physiq
       ENDIF
     ENDIF
@@ -884,5 +884,5 @@
         PRINT *, "Error phyredem(put_field_rgen) : wrong dimension for ",trim(field_name)
         write(*,*) "  field_size =",field_size
-        CALL ABORT
+        CALL abort_physiq
       ENDIF
 
@@ -891,5 +891,5 @@
         write(*,*) " Error phyredem(put_field_rgen) : failed writing ",trim(field_name)
         write(*,*)trim(nf90_strerror(ierr))
-        call abort
+        call abort_physiq
       endif
 
@@ -996,5 +996,5 @@
           write(*,*)'put_var_rgen: problem writing Time'
           write(*,*)trim(nf90_strerror(ierr))
-          CALL ABORT
+          CALL abort_physiq
         ENDIF
         return ! nothing left to do
@@ -1011,5 +1011,5 @@
         PRINT *, "put_var_rgen error : wrong dimension"
         write(*,*) "  var_size =",var_size
-        CALL abort
+        CALL abort_physiq
 
       ENDIF ! of IF (var_size==length) THEN
@@ -1032,5 +1032,5 @@
         write(*,*)'put_var_rgen: problem writing '//trim(var_name)
         write(*,*)trim(nf90_strerror(ierr))
-        CALL ABORT
+        CALL abort_physiq
       ENDIF
     ENDIF ! of IF (is_master)
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/kcm1d.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/kcm1d.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/kcm1d.F90	(revision 313)
@@ -117,5 +117,5 @@
      write(*,*) '   )'
      write(*,*) ' ... might as well stop here ...'
-     stop
+     CALL abort_physiq
   else
      close(90)
@@ -133,5 +133,5 @@
      write(*,*) 'Please remove the file and restart the run.'
      write(*,*) 'Runtime parameters are supposed to be in kcm1d.def'
-     stop
+     CALL abort_physiq
   else
      call system('touch run.def')
@@ -144,5 +144,5 @@
   if(.not.global1d)then
      print*,'Error, kcm1d must have global1d=.true. in kcm1d.def!'
-     stop
+     CALL abort_physiq
   end if
 
@@ -200,5 +200,5 @@
      print*,"In 1D modeling, check_cpp_match is supposed to be F"
      print*,"Please correct callphys.def"
-     stop
+     CALL abort_physiq
   endif
 
@@ -221,5 +221,5 @@
            write(*,*) "kcm1d: error reading number of tracers"
            write(*,*) "   (first line of traceur.def) "
-           stop
+           CALL abort_physiq
         endif
         nqtot=nq
@@ -235,5 +235,5 @@
            if (ierr.ne.0) then
               write(*,*) 'kcm1d: error reading tracer names...'
-              stop
+              CALL abort_physiq
            endif
         enddo !of do iq=1,nq
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/kcmprof_fn.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/kcmprof_fn.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/kcmprof_fn.F90	(revision 313)
@@ -95,5 +95,5 @@
         print*,'Must have Psat_max=0 if no variable species'
         psat_max=0.0
-        !stop
+        !CALL abort_physiq
      endif
      print*, 'Assuming pure atmosphere'
@@ -109,8 +109,8 @@
      m_v   = 16.04/1000.
      tcrit = 1.91d2
-     stop
+     CALL abort_physiq
   else
      print*,'Variable gas not recognised!'
-     call abort
+     call abort_physiq
   endif
 
@@ -326,5 +326,5 @@
            if(ilay.eq.1)then
               print*,'Error in create_profils: Psurf here less than Psurf in RCM!'
-              call abort
+              call abort_physiq
            endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/lect_start_archive.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/lect_start_archive.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/lect_start_archive.F	(revision 313)
@@ -21,5 +21,5 @@
 c
 c   Objet:     Lecture des variables d'un fichier "start_archive"
-c              Plus besoin de régler ancienne valeurs grace
+c              Plus besoin de rï¿œgler ancienne valeurs grace
 c              a l'allocation dynamique de memoire (Yann Wanherdrick)
 c
@@ -341,5 +341,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "Lect_start_archive: champ <controle> est absent"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -350,5 +350,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echoue pour <controle>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 c
@@ -362,5 +362,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Le champ <rlonv> est absent"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -371,5 +371,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <rlonv>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 c
@@ -377,5 +377,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Le champ <rlatu> est absent"
-         CALL abort
+         CALL abort_physiq
       ENDIF 
 #ifdef NC_DOUBLE
@@ -386,5 +386,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <rlatu>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 c
@@ -392,5 +392,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Le champ <rlonu> est absent"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -401,5 +401,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <rlonu>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 c
@@ -407,5 +407,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Le champ <rlatv> est absent"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -416,5 +416,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <rlatv>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 c
@@ -447,5 +447,5 @@
          IF (ierr .NE. NF_NOERR) THEN
             PRINT*, "Nothing to do..."
-            CALL abort
+            CALL abort_physiq
          ENDIF
       ENDIF
@@ -457,5 +457,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <bps>"
-         CALL abort
+         CALL abort_physiq
       END IF
 
@@ -482,5 +482,5 @@
        if (ierr .NE. NF_NOERR) then
          PRINT*, "lect_start_archive: Failed reading <soildepth>"
-         CALL abort
+         CALL abort_physiq
        endif
 
@@ -510,5 +510,5 @@
        if (ierr .NE. NF_NOERR) then
          PRINT*, "lect_start_archive: Failed reading <soildepth>"
-         CALL abort
+         CALL abort_physiq
        endif
       endif ! of if (depthinterpol)
@@ -535,5 +535,5 @@
        if (ierr .NE. NF_NOERR) then
          PRINT*, "lect_start_archive: Failed reading <inertiedat>"
-         CALL abort
+         CALL abort_physiq
        endif
       endif
@@ -546,5 +546,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Le champ <phisinit> est absent"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -555,5 +555,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <phisinit>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 
@@ -575,5 +575,5 @@
          IF (ierr .NE. NF_NOERR) THEN
             PRINT*, "lect_start_archive: Le champ <Time> est absent"
-            CALL abort
+            CALL abort_physiq
          endif
       ENDIF
@@ -590,5 +590,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <Time>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 c
@@ -649,5 +649,5 @@
 !      IF (ierr .NE. NF_NOERR) THEN
 !         PRINT*, "lect_start_archive: Le champ <co2ice> est absent"
-!         CALL abort
+!         CALL abort_physiq
 !      ENDIF
 !#ifdef NC_DOUBLE
@@ -659,5 +659,5 @@
 !         PRINT*, "lect_start_archive: Lecture echouee pour <co2ice>"
 !         PRINT*, NF_STRERROR(ierr)
-!         CALL abort
+!         CALL abort_physiq
 !      ENDIF
 c
@@ -665,5 +665,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Le champ <emis> est absent"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -674,5 +674,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <emis>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 c
@@ -680,5 +680,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Le champ <ps> est absent"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -689,5 +689,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <ps>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 c
@@ -695,5 +695,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Le champ <tsurf> est absent"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -704,5 +704,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <tsurf>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 c
@@ -710,5 +710,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Le champ <q2surf> est absent"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -719,5 +719,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <q2surf>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 c
@@ -833,5 +833,5 @@
 
 !          print*,'RDW has added hack to let me continue...'
-!          CALL abort
+!          CALL abort_physiq
         ENDIF
 #ifdef NC_DOUBLE
@@ -871,5 +871,5 @@
             PRINT*, "lect_start_archive: ",
      &              "Field <","Tg"//str2,"> not found"
-            CALL abort
+            CALL abort_physiq
          ENDIF
 #ifdef NC_DOUBLE
@@ -883,5 +883,5 @@
             PRINT*, "lect_start_archive: ",
      &            "Failed reading <","Tg"//str2,">"
-            CALL abort
+            CALL abort_physiq
          ENDIF
 c
@@ -897,5 +897,5 @@
        if (ierr.ne.NF_NOERR) then
         write(*,*)"lect_start_archive: Cannot find <tsoil>"
-	call abort
+	call abort_physiq
        else
 #ifdef NC_DOUBLE
@@ -915,5 +915,5 @@
 !       if (ierr.ne.NF_NOERR) then
 !        write(*,*)"lect_start_archive: Cannot find <inertiedat>"
-!	call abort
+!	call abort_physiq
 !       else
 !#ifdef NC_DOUBLE
@@ -936,5 +936,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Le champ <temp> est absent"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -945,5 +945,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <temp>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 c
@@ -951,5 +951,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Le champ <u> est absent"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -960,5 +960,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <u>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 c
@@ -966,5 +966,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Le champ <v> est absent"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -975,5 +975,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <v>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 c
@@ -981,5 +981,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Le champ <q2atm> est absent"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -990,5 +990,5 @@
       IF (ierr .NE. NF_NOERR) THEN
          PRINT*, "lect_start_archive: Lecture echouee pour <q2atm>"
-         CALL abort
+         CALL abort_physiq
       ENDIF
 c
@@ -1006,5 +1006,5 @@
             PRINT*, "lect_start_archive: ",
      &              " Tracer <",trim(txt),"> not found"
-!            CALL abort
+!            CALL abort_physiq
         ENDIF
 #ifdef NC_DOUBLE
@@ -1226,5 +1226,5 @@
                !print*,'Problem in lect_start_archive interpolating'
                !print*,'to new resolution!!'
-               !call abort
+               !call abort_physiq
             !endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/mass_redistribution.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/mass_redistribution.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/mass_redistribution.F90	(revision 313)
@@ -176,5 +176,5 @@
          PRINT*,'Ps = ',pplev(ig,1)
          PRINT*,'d Ps = ',pdpsrfmr(ig)*ptimestep
-         STOP
+         CALL abort_physiq
         ENDIF
       enddo ! of DO ig=1,ngrid
@@ -379,5 +379,5 @@
 		print*,q
 		print*,qm
-               stop
+               CALL abort_physiq
              end if
           else      ! if(w(l+1).lt.0) 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/mod_grid_phy_lmdz.F90.orig
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/mod_grid_phy_lmdz.F90.orig	(revision 312)
+++ 	(revision )
@@ -1,453 +1,0 @@
-!
-!$Header$
-!
-MODULE mod_grid_phy_lmdz
-
-  PUBLIC
-  PRIVATE :: grid1dTo2d_glo_igen, grid1dTo2d_glo_rgen, grid1dTo2d_glo_lgen, &
-             grid2dTo1d_glo_igen, grid2dTo1d_glo_rgen, grid2dTo1d_glo_lgen
-
-  INTEGER,SAVE :: nbp_lon  ! == iim
-  INTEGER,SAVE :: nbp_lat  ! == jjmp1
-  INTEGER,SAVE :: nbp_lev  ! == llm
-  INTEGER,SAVE :: klon_glo
-
-  INTERFACE grid1dTo2d_glo
-    MODULE PROCEDURE grid1dTo2d_glo_i,grid1dTo2d_glo_i1,grid1dTo2d_glo_i2,grid1dTo2d_glo_i3, &
-                     grid1dTo2d_glo_r,grid1dTo2d_glo_r1,grid1dTo2d_glo_r2,grid1dTo2d_glo_r3, &
-		     grid1dTo2d_glo_l,grid1dTo2d_glo_l1,grid1dTo2d_glo_l2,grid1dTo2d_glo_l3
-   END INTERFACE 
-
-   INTERFACE grid2dTo1d_glo
-    MODULE PROCEDURE grid2dTo1d_glo_i,grid2dTo1d_glo_i1,grid2dTo1d_glo_i2,grid2dTo1d_glo_i3, &
-                     grid2dTo1d_glo_r,grid2dTo1d_glo_r1,grid2dTo1d_glo_r2,grid2dTo1d_glo_r3, &
-		     grid2dTo1d_glo_l,grid2dTo1d_glo_l1,grid2dTo1d_glo_l2,grid2dTo1d_glo_l3
-   END INTERFACE 
- 
-CONTAINS
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!! SUBROUTINE grid1dTo2d  !!  
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-
-  SUBROUTINE init_grid_phy_lmdz(iim,jjp1,llm)
-  IMPLICIT NONE
-  INTEGER, INTENT(in) :: iim
-  INTEGER, INTENT(in) :: jjp1
-  INTEGER, INTENT(in) :: llm
-  
-    nbp_lon=iim
-    nbp_lat=jjp1
-    nbp_lev=llm
-    klon_glo=(iim*jjp1)-2*(iim-1)
-  
-  ! Ehouarn: handle 1D case:
-  if ((iim.eq.1).and.(jjp1.eq.2)) then
-    nbp_lat=1
-    klon_glo=1
-  endif
-  
-  END SUBROUTINE init_grid_phy_lmdz
-  
-  
-  SUBROUTINE grid1dTo2d_glo_i(VarIn,VarOut)  
-  IMPLICIT NONE  
-    INTEGER,INTENT(IN),DIMENSION(:)     :: VarIn
-    INTEGER,INTENT(OUT),DIMENSION(:,:)  :: VarOut
-    
-    CALL grid1dTo2d_glo_igen(VarIn,VarOut,1)
-  
-  END SUBROUTINE grid1dTo2d_glo_i
-  
-
-  SUBROUTINE grid1dTo2d_glo_i1(VarIn,VarOut)  
-  IMPLICIT NONE  
-    INTEGER,INTENT(IN),DIMENSION(:,:)     :: VarIn
-    INTEGER,INTENT(OUT),DIMENSION(:,:,:)  :: VarOut
-    
-    CALL grid1dTo2d_glo_igen(VarIn,VarOut,size(VarIn,2))
-  
-  END SUBROUTINE grid1dTo2d_glo_i1
-
-  SUBROUTINE grid1dTo2d_glo_i2(VarIn,VarOut)  
-  IMPLICIT NONE  
-    INTEGER,INTENT(IN),DIMENSION(:,:,:)     :: VarIn
-    INTEGER,INTENT(OUT),DIMENSION(:,:,:,:)  :: VarOut
-    
-    CALL grid1dTo2d_glo_igen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3))
-  
-  END SUBROUTINE grid1dTo2d_glo_i2
-  
-  SUBROUTINE grid1dTo2d_glo_i3(VarIn,VarOut)  
-  IMPLICIT NONE  
-    INTEGER,INTENT(IN),DIMENSION(:,:,:,:)     :: VarIn
-    INTEGER,INTENT(OUT),DIMENSION(:,:,:,:,:)  :: VarOut
-    
-    CALL grid1dTo2d_glo_igen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3)*size(VarIn,4))
-  
-  END SUBROUTINE grid1dTo2d_glo_i3
-
-
-  SUBROUTINE grid1dTo2d_glo_r(VarIn,VarOut)  
-  IMPLICIT NONE  
-    REAL,INTENT(IN),DIMENSION(:)     :: VarIn
-    REAL,INTENT(OUT),DIMENSION(:,:)  :: VarOut
-    
-    CALL grid1dTo2d_glo_rgen(VarIn,VarOut,1)
-  
-  END SUBROUTINE grid1dTo2d_glo_r
-  
-
-  SUBROUTINE grid1dTo2d_glo_r1(VarIn,VarOut)  
-  IMPLICIT NONE  
-    REAL,INTENT(IN),DIMENSION(:,:)     :: VarIn
-    REAL,INTENT(OUT),DIMENSION(:,:,:)  :: VarOut
-    
-    CALL grid1dTo2d_glo_rgen(VarIn,VarOut,size(VarIn,2))
-  
-  END SUBROUTINE grid1dTo2d_glo_r1
-
-  SUBROUTINE grid1dTo2d_glo_r2(VarIn,VarOut)  
-  IMPLICIT NONE  
-    REAL,INTENT(IN),DIMENSION(:,:,:)     :: VarIn
-    REAL,INTENT(OUT),DIMENSION(:,:,:,:)  :: VarOut
-    
-    CALL grid1dTo2d_glo_rgen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3))
-  
-  END SUBROUTINE grid1dTo2d_glo_r2
-  
-  SUBROUTINE grid1dTo2d_glo_r3(VarIn,VarOut)  
-  IMPLICIT NONE  
-    REAL,INTENT(IN),DIMENSION(:,:,:,:)     :: VarIn
-    REAL,INTENT(OUT),DIMENSION(:,:,:,:,:)  :: VarOut
-    
-    CALL grid1dTo2d_glo_rgen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3)*size(VarIn,4))
-  
-  END SUBROUTINE grid1dTo2d_glo_r3
-  
-  
-  
-  SUBROUTINE grid1dTo2d_glo_l(VarIn,VarOut)  
-  IMPLICIT NONE  
-    LOGICAL,INTENT(IN),DIMENSION(:)     :: VarIn
-    LOGICAL,INTENT(OUT),DIMENSION(:,:)  :: VarOut
-    
-    CALL grid1dTo2d_glo_lgen(VarIn,VarOut,1)
-  
-  END SUBROUTINE grid1dTo2d_glo_l
-  
-
-  SUBROUTINE grid1dTo2d_glo_l1(VarIn,VarOut)  
-  IMPLICIT NONE  
-    LOGICAL,INTENT(IN),DIMENSION(:,:)     :: VarIn
-    LOGICAL,INTENT(OUT),DIMENSION(:,:,:)  :: VarOut
-    
-    CALL grid1dTo2d_glo_lgen(VarIn,VarOut,size(VarIn,2))
-  
-  END SUBROUTINE grid1dTo2d_glo_l1
-
-  SUBROUTINE grid1dTo2d_glo_l2(VarIn,VarOut)  
-  IMPLICIT NONE  
-    LOGICAL,INTENT(IN),DIMENSION(:,:,:)     :: VarIn
-    LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:)  :: VarOut
-    
-    CALL grid1dTo2d_glo_lgen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3))
-  
-  END SUBROUTINE grid1dTo2d_glo_l2
-  
-  SUBROUTINE grid1dTo2d_glo_l3(VarIn,VarOut)  
-  IMPLICIT NONE  
-    LOGICAL,INTENT(IN),DIMENSION(:,:,:,:)     :: VarIn
-    LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:,:)  :: VarOut
-    
-    CALL grid1dTo2d_glo_lgen(VarIn,VarOut,size(VarIn,2)*size(VarIn,3)*size(VarIn,4))
-  
-  END SUBROUTINE grid1dTo2d_glo_l3  
-  
-    SUBROUTINE grid2dTo1d_glo_i(VarIn,VarOut)  
-  IMPLICIT NONE  
-    INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn
-    INTEGER,INTENT(OUT),DIMENSION(:)  :: VarOut
-    
-    CALL grid2dTo1d_glo_igen(VarIn,VarOut,1)
-  
-  END SUBROUTINE grid2dTo1d_glo_i
-  
-
-  SUBROUTINE grid2dTo1d_glo_i1(VarIn,VarOut)  
-  IMPLICIT NONE  
-    INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn
-    INTEGER,INTENT(OUT),DIMENSION(:,:)  :: VarOut
-    
-    CALL grid2dTo1d_glo_igen(VarIn,VarOut,size(VarIn,3))
-  
-  END SUBROUTINE grid2dTo1d_glo_i1
-
-  SUBROUTINE grid2dTo1d_glo_i2(VarIn,VarOut)  
-  IMPLICIT NONE  
-    INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn
-    INTEGER,INTENT(OUT),DIMENSION(:,:,:)  :: VarOut
-    
-    CALL grid2dTo1d_glo_igen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4))
-  
-  END SUBROUTINE grid2dTo1d_glo_i2
-  
-  SUBROUTINE grid2dTo1d_glo_i3(VarIn,VarOut)  
-  IMPLICIT NONE  
-    INTEGER,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn
-    INTEGER,INTENT(OUT),DIMENSION(:,:,:,:)  :: VarOut
-    
-    CALL grid2dTo1d_glo_igen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4)*size(VarIn,5))
-  
-  END SUBROUTINE grid2dTo1d_glo_i3
- 
-
-
-
-  SUBROUTINE grid2dTo1d_glo_r(VarIn,VarOut)  
-  IMPLICIT NONE  
-    REAL,INTENT(IN),DIMENSION(:,:) :: VarIn
-    REAL,INTENT(OUT),DIMENSION(:)  :: VarOut
-    
-    CALL grid2dTo1d_glo_rgen(VarIn,VarOut,1)
-  
-  END SUBROUTINE grid2dTo1d_glo_r
-  
-
-  SUBROUTINE grid2dTo1d_glo_r1(VarIn,VarOut)  
-  IMPLICIT NONE  
-    REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn
-    REAL,INTENT(OUT),DIMENSION(:,:)  :: VarOut
-    
-    CALL grid2dTo1d_glo_rgen(VarIn,VarOut,size(VarIn,3))
-  
-  END SUBROUTINE grid2dTo1d_glo_r1
-
-  SUBROUTINE grid2dTo1d_glo_r2(VarIn,VarOut)  
-  IMPLICIT NONE  
-    REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn
-    REAL,INTENT(OUT),DIMENSION(:,:,:)  :: VarOut
-    
-    CALL grid2dTo1d_glo_rgen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4))
-  
-  END SUBROUTINE grid2dTo1d_glo_r2
-  
-  SUBROUTINE grid2dTo1d_glo_r3(VarIn,VarOut)  
-  IMPLICIT NONE  
-    REAL,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn
-    REAL,INTENT(OUT),DIMENSION(:,:,:,:)  :: VarOut
-    
-    CALL grid2dTo1d_glo_rgen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4)*size(VarIn,5))
-  
-  END SUBROUTINE grid2dTo1d_glo_r3
-
-
-
-  SUBROUTINE grid2dTo1d_glo_l(VarIn,VarOut)  
-  IMPLICIT NONE  
-    LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn
-    LOGICAL,INTENT(OUT),DIMENSION(:)  :: VarOut
-    
-    CALL grid2dTo1d_glo_lgen(VarIn,VarOut,1)
-  
-  END SUBROUTINE grid2dTo1d_glo_l
-  
-
-  SUBROUTINE grid2dTo1d_glo_l1(VarIn,VarOut)  
-  IMPLICIT NONE  
-    LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn
-    LOGICAL,INTENT(OUT),DIMENSION(:,:)  :: VarOut
-    
-    CALL grid2dTo1d_glo_lgen(VarIn,VarOut,size(VarIn,3))
-  
-  END SUBROUTINE grid2dTo1d_glo_l1
-
-  SUBROUTINE grid2dTo1d_glo_l2(VarIn,VarOut)  
-  IMPLICIT NONE  
-    LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn
-    LOGICAL,INTENT(OUT),DIMENSION(:,:,:)  :: VarOut
-    
-    CALL grid2dTo1d_glo_lgen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4))
-  
-  END SUBROUTINE grid2dTo1d_glo_l2
-  
-  SUBROUTINE grid2dTo1d_glo_l3(VarIn,VarOut)  
-  IMPLICIT NONE  
-    LOGICAL,INTENT(IN),DIMENSION(:,:,:,:,:) :: VarIn
-    LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:)  :: VarOut
-    
-    CALL grid2dTo1d_glo_lgen(VarIn,VarOut,size(VarIn,3)*size(VarIn,4)*size(VarIn,5))
-  
-  END SUBROUTINE grid2dTo1d_glo_l3
-
-!---------------------------------------------------------------- 
-!  fonctions generiques (privees)
-!---------------------------------------------------------------- 
-  SUBROUTINE grid1dTo2d_glo_igen(VarIn,VarOut,dimsize)
-    IMPLICIT NONE
-
-    INTEGER,INTENT(IN) :: dimsize
-    INTEGER,INTENT(IN) ,DIMENSION(klon_glo,dimsize)       :: VarIn
-    INTEGER,INTENT(OUT),DIMENSION(nbp_lon*nbp_lat,dimsize)  :: VarOut
-    INTEGER :: i,ij,Offset
-
-    
-    Offset=nbp_lon
-        
-    DO i=1,dimsize
-      DO ij=1,klon_glo
-        VarOut(ij+offset-1,i)=VarIn(ij,i)
-      ENDDO
-    ENDDO
-    
-    
-    DO i=1,dimsize
-      DO ij=1,nbp_lon
-       VarOut(ij,i)=VarIn(1,i)
-      ENDDO
-    ENDDO
-    
-    
-    DO i=1,dimsize
-      DO ij=nbp_lon*(nbp_lat-1)+1,nbp_lat*nbp_lon
-       VarOut(ij,i)=VarIn(klon_glo,i)
-      ENDDO
-    ENDDO
-
-  END SUBROUTINE grid1dTo2d_glo_igen   
-
-
-  SUBROUTINE grid1dTo2d_glo_rgen(VarIn,VarOut,dimsize)
-    IMPLICIT NONE
-
-    INTEGER,INTENT(IN) :: dimsize
-    REAL,INTENT(IN) ,DIMENSION(klon_glo,dimsize)       :: VarIn
-    REAL,INTENT(OUT),DIMENSION(nbp_lon*nbp_lat,dimsize)  :: VarOut
-    INTEGER :: i,ij,Offset
-
-   
-    Offset=nbp_lon
-        
-    DO i=1,dimsize
-      DO ij=1,klon_glo
-        VarOut(ij+offset-1,i)=VarIn(ij,i)
-      ENDDO
-    ENDDO
-    
-    
-    DO i=1,dimsize
-      DO ij=1,nbp_lon
-       VarOut(ij,i)=VarIn(1,i)
-      ENDDO
-    ENDDO
-    
-    
-    DO i=1,dimsize
-      DO ij=nbp_lon*(nbp_lat-1)+1,nbp_lat*nbp_lon
-       VarOut(ij,i)=VarIn(klon_glo,i)
-      ENDDO
-    ENDDO
-
-  END SUBROUTINE grid1dTo2d_glo_rgen   
-
-  SUBROUTINE grid1dTo2d_glo_lgen(VarIn,VarOut,dimsize)
-    IMPLICIT NONE
-    
-    INTEGER,INTENT(IN) :: dimsize
-    LOGICAL,INTENT(IN) ,DIMENSION(klon_glo,dimsize)       :: VarIn
-    LOGICAL,INTENT(OUT),DIMENSION(nbp_lon*nbp_lat,dimsize)  :: VarOut
-    INTEGER :: i,ij,Offset
-
-    Offset=nbp_lon
-        
-    DO i=1,dimsize
-      DO ij=1,klon_glo
-        VarOut(ij+offset-1,i)=VarIn(ij,i)
-      ENDDO
-    ENDDO
-    
-    
-    DO i=1,dimsize
-      DO ij=1,nbp_lon
-       VarOut(ij,i)=VarIn(1,i)
-      ENDDO
-    ENDDO
-    
-    
-    DO i=1,dimsize
-      DO ij=nbp_lon*(nbp_lat-1)+1,nbp_lat*nbp_lon
-       VarOut(ij,i)=VarIn(klon_glo,i)
-      ENDDO
-    ENDDO
-
-  END SUBROUTINE grid1dTo2d_glo_lgen     
-  
-  
-  SUBROUTINE grid2dTo1d_glo_igen(VarIn,VarOut,dimsize)
-    IMPLICIT NONE
-
-    INTEGER,INTENT(IN) :: dimsize
-    INTEGER,INTENT(IN) ,DIMENSION(nbp_lon*nbp_lat,dimsize) :: VarIn
-    INTEGER,INTENT(OUT),DIMENSION(klon_glo,dimsize)      :: VarOut
-    INTEGER :: i,ij,offset
-
-    offset=nbp_lon
-
-    DO i=1,dimsize
-      DO ij=1,klon_glo
-        VarOut(ij,i)=VarIn(ij+offset-1,i)
-      ENDDO
-    ENDDO
-
-    DO i=1,dimsize
-      VarOut(1,i)=VarIn(1,i)
-    ENDDO
-    
-  END SUBROUTINE grid2dTo1d_glo_igen   
-  
-  SUBROUTINE grid2dTo1d_glo_rgen(VarIn,VarOut,dimsize)
-    IMPLICIT NONE
-
-    INTEGER,INTENT(IN) :: dimsize
-    REAL,INTENT(IN) ,DIMENSION(nbp_lon*nbp_lat,dimsize) :: VarIn
-    REAL,INTENT(OUT),DIMENSION(klon_glo,dimsize)      :: VarOut
-    INTEGER :: i,ij,offset
-
-    offset=nbp_lon
-
-    DO i=1,dimsize
-      DO ij=1,klon_glo
-        VarOut(ij,i)=VarIn(ij+offset-1,i)
-      ENDDO
-    ENDDO
-
-    DO i=1,dimsize
-      VarOut(1,i)=VarIn(1,i)
-    ENDDO
-    
-  END SUBROUTINE grid2dTo1d_glo_rgen 
-    
-  SUBROUTINE grid2dTo1d_glo_lgen(VarIn,VarOut,dimsize)
-    IMPLICIT NONE
-
-    INTEGER,INTENT(IN) :: dimsize
-    LOGICAL,INTENT(IN) ,DIMENSION(nbp_lon*nbp_lat,dimsize) :: VarIn
-    LOGICAL,INTENT(OUT),DIMENSION(klon_glo,dimsize)      :: VarOut
-    INTEGER :: i,ij,offset
-
-    offset=nbp_lon
-
-    DO i=1,dimsize
-      DO ij=1,klon_glo
-        VarOut(ij,i)=VarIn(ij+offset-1,i)
-      ENDDO
-    ENDDO
-
-    DO i=1,dimsize
-      VarOut(1,i)=VarIn(1,i)
-    ENDDO
-    
-  END SUBROUTINE grid2dTo1d_glo_lgen   
-
-END MODULE mod_grid_phy_lmdz
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/mod_phys_lmdz_mpi_data.F90.orig
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/mod_phys_lmdz_mpi_data.F90.orig	(revision 312)
+++ 	(revision )
@@ -1,211 +1,0 @@
-!
-!$Header$
-!
-MODULE mod_phys_lmdz_mpi_data
-  USE mod_const_mpi, only: MPI_REAL_LMDZ, COMM_LMDZ
-  
-  INTEGER,SAVE :: ii_begin
-  INTEGER,SAVE :: ii_end
-  INTEGER,SAVE :: jj_begin
-  INTEGER,SAVE :: jj_end
-  INTEGER,SAVE :: jj_nb
-  INTEGER,SAVE :: ij_begin
-  INTEGER,SAVE :: ij_end
-  INTEGER,SAVE :: ij_nb
-  INTEGER,SAVE :: klon_mpi_begin
-  INTEGER,SAVE :: klon_mpi_end
-  INTEGER,SAVE :: klon_mpi
-  
-  INTEGER,SAVE,ALLOCATABLE,DIMENSION(:) :: jj_para_nb
-  INTEGER,SAVE,ALLOCATABLE,DIMENSION(:) :: jj_para_begin
-  INTEGER,SAVE,ALLOCATABLE,DIMENSION(:) :: jj_para_end
-
-  INTEGER,SAVE,ALLOCATABLE,DIMENSION(:) :: ii_para_begin
-  INTEGER,SAVE,ALLOCATABLE,DIMENSION(:) :: ii_para_end
-
-  INTEGER,SAVE,ALLOCATABLE,DIMENSION(:) :: ij_para_nb
-  INTEGER,SAVE,ALLOCATABLE,DIMENSION(:) :: ij_para_begin
-  INTEGER,SAVE,ALLOCATABLE,DIMENSION(:) :: ij_para_end
-
-  INTEGER,SAVE,ALLOCATABLE,DIMENSION(:) :: klon_mpi_para_nb
-  INTEGER,SAVE,ALLOCATABLE,DIMENSION(:) :: klon_mpi_para_begin
-  INTEGER,SAVE,ALLOCATABLE,DIMENSION(:) :: klon_mpi_para_end 
-
-  
-  INTEGER,SAVE :: mpi_rank
-  INTEGER,SAVE :: mpi_size
-  INTEGER,SAVE :: mpi_root
-  LOGICAL,SAVE :: is_mpi_root
-  LOGICAL,SAVE :: is_using_mpi
-  
-  
-  LOGICAL,SAVE :: is_north_pole
-  LOGICAL,SAVE :: is_south_pole
-  INTEGER,SAVE :: COMM_LMDZ_PHY
-
-CONTAINS
-  
-  SUBROUTINE Init_phys_lmdz_mpi_data(iim,jjp1,nb_proc,distrib)
-  USE mod_const_mpi, ONLY : COMM_LMDZ
-  IMPLICIT NONE
-    INTEGER,INTENT(in) :: iim
-    INTEGER,INTENT(in) :: jjp1
-    INTEGER,INTENT(in) :: nb_proc
-    INTEGER,INTENT(in) :: distrib(0:nb_proc-1)
-    
-    INTEGER :: ierr
-    INTEGER :: klon_glo
-    INTEGER :: i
-    
-#ifdef CPP_MPI
-    is_using_mpi=.TRUE.
-#else
-    is_using_mpi=.FALSE.
-#endif
-    
-    if (iim.eq.1) then
-       klon_glo=1
-    else
-       klon_glo=iim*(jjp1-2)+2
-    endif
-    
-    COMM_LMDZ_PHY=COMM_LMDZ
-
-    IF (is_using_mpi) THEN    
-#ifdef CPP_MPI
-      CALL MPI_COMM_SIZE(COMM_LMDZ_PHY,mpi_size,ierr)    
-      CALL MPI_COMM_RANK(COMM_LMDZ_PHY,mpi_rank,ierr)
-#endif
-    ELSE
-      mpi_size=1
-      mpi_rank=0
-    ENDIF
-    
-    IF (mpi_rank == 0) THEN
-      mpi_root = 0
-      is_mpi_root = .true.
-    ENDIF
-    
-    IF (mpi_rank == 0) THEN 
-      is_north_pole = .TRUE.
-    ELSE
-      is_north_pole = .FALSE.
-    ENDIF
-    
-    IF (mpi_rank == mpi_size-1) THEN
-      is_south_pole = .TRUE.
-    ELSE
-      is_south_pole = .FALSE.
-    ENDIF
-    
-    ALLOCATE(jj_para_nb(0:mpi_size-1))
-    ALLOCATE(jj_para_begin(0:mpi_size-1))
-    ALLOCATE(jj_para_end(0:mpi_size-1))
-    
-    ALLOCATE(ij_para_nb(0:mpi_size-1))
-    ALLOCATE(ij_para_begin(0:mpi_size-1))
-    ALLOCATE(ij_para_end(0:mpi_size-1))
-    
-    ALLOCATE(ii_para_begin(0:mpi_size-1))
-    ALLOCATE(ii_para_end(0:mpi_size-1))
-
-    ALLOCATE(klon_mpi_para_nb(0:mpi_size-1))
-    ALLOCATE(klon_mpi_para_begin(0:mpi_size-1))
-    ALLOCATE(klon_mpi_para_end(0:mpi_size-1))
-  
-      
-    klon_mpi_para_nb(0:mpi_size-1)=distrib(0:nb_proc-1)
-
-    DO i=0,mpi_size-1
-      IF (i==0) THEN 
-        klon_mpi_para_begin(i)=1
-      ELSE 
-        klon_mpi_para_begin(i)=klon_mpi_para_end(i-1)+1
-      ENDIF
-        klon_mpi_para_end(i)=klon_mpi_para_begin(i)+klon_mpi_para_nb(i)-1
-    ENDDO
-
-
-    DO i=0,mpi_size-1
-      
-      IF (i==0) THEN
-        ij_para_begin(i) = 1
-      ELSE
-        ij_para_begin(i) = klon_mpi_para_begin(i)+iim-1
-      ENDIF
-
-      jj_para_begin(i) = (ij_para_begin(i)-1)/iim + 1
-      ii_para_begin(i) = MOD(ij_para_begin(i)-1,iim) + 1
-
-      
-      ij_para_end(i) = klon_mpi_para_end(i)+iim-1
-      jj_para_end(i) = (ij_para_end(i)-1)/iim + 1
-      ii_para_end(i) = MOD(ij_para_end(i)-1,iim) + 1
-
-      ! Ehouarn: handle 1D case:
-      if (klon_glo.eq.1) then
-        klon_mpi_para_end(i) = 1
-        klon_mpi_para_nb(i) = 1
-        ij_para_end(i) = 1
-        jj_para_end(i) = 1
-        ii_para_end(i) = 1
-      endif
-
-      ij_para_nb(i) = ij_para_end(i)-ij_para_begin(i)+1
-      jj_para_nb(i) = jj_para_end(i)-jj_para_begin(i)+1
-         
-    ENDDO
-  
-    ii_begin = ii_para_begin(mpi_rank)
-    ii_end   = ii_para_end(mpi_rank)
-    jj_begin = jj_para_begin(mpi_rank)
-    jj_end   = jj_para_end(mpi_rank)
-    jj_nb    = jj_para_nb(mpi_rank)
-    ij_begin = ij_para_begin(mpi_rank)
-    ij_end   = ij_para_end(mpi_rank)
-    ij_nb    = ij_para_nb(mpi_rank)
-    klon_mpi_begin = klon_mpi_para_begin(mpi_rank)
-    klon_mpi_end   = klon_mpi_para_end(mpi_rank)
-    klon_mpi       = klon_mpi_para_nb(mpi_rank)
-   
-    CALL Print_module_data
-    
-  END SUBROUTINE Init_phys_lmdz_mpi_data
-
-  SUBROUTINE print_module_data
-  IMPLICIT NONE
-!  INCLUDE "iniprint.h" 
-  
-    WRITE(*,*) 'ii_begin =', ii_begin
-    WRITE(*,*) 'ii_end =', ii_end
-    WRITE(*,*) 'jj_begin =',jj_begin
-    WRITE(*,*) 'jj_end =', jj_end
-    WRITE(*,*) 'jj_nb =', jj_nb
-    WRITE(*,*) 'ij_begin =', ij_begin
-    WRITE(*,*) 'ij_end =', ij_end
-    WRITE(*,*) 'ij_nb =', ij_nb
-    WRITE(*,*) 'klon_mpi_begin =', klon_mpi_begin
-    WRITE(*,*) 'klon_mpi_end =', klon_mpi_end
-    WRITE(*,*) 'klon_mpi =', klon_mpi
-    WRITE(*,*) 'jj_para_nb =', jj_para_nb
-    WRITE(*,*) 'jj_para_begin =', jj_para_begin
-    WRITE(*,*) 'jj_para_end =', jj_para_end
-    WRITE(*,*) 'ii_para_begin =', ii_para_begin
-    WRITE(*,*) 'ii_para_end =', ii_para_end
-    WRITE(*,*) 'ij_para_nb =', ij_para_nb
-    WRITE(*,*) 'ij_para_begin =', ij_para_begin
-    WRITE(*,*) 'ij_para_end =', ij_para_end
-    WRITE(*,*) 'klon_mpi_para_nb =', klon_mpi_para_nb
-    WRITE(*,*) 'klon_mpi_para_begin =', klon_mpi_para_begin
-    WRITE(*,*) 'klon_mpi_para_end  =', klon_mpi_para_end 
-    WRITE(*,*) 'mpi_rank =', mpi_rank
-    WRITE(*,*) 'mpi_size =', mpi_size
-    WRITE(*,*) 'mpi_root =', mpi_root
-    WRITE(*,*) 'is_mpi_root =', is_mpi_root
-    WRITE(*,*) 'is_north_pole =', is_north_pole
-    WRITE(*,*) 'is_south_pole =', is_south_pole
-    WRITE(*,*) 'COMM_LMDZ_PHY =', COMM_LMDZ_PHY
-  
-  END SUBROUTINE print_module_data
-  
-END MODULE mod_phys_lmdz_mpi_data
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/mod_phys_lmdz_mpi_transfert.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/mod_phys_lmdz_mpi_transfert.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/mod_phys_lmdz_mpi_transfert.F90	(revision 313)
@@ -60,5 +60,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-!! -- Les chaine de charactère -- !!
+!! -- Les chaine de charactï¿œre -- !!
 
   SUBROUTINE bcast_mpi_c(var1)
@@ -1321,5 +1321,5 @@
     if (ierr.ne.MPI_SUCCESS) then
       write(*,*) "bcast_mpi error: ierr=",ierr
-      stop
+      CALL abort_physiq
     endif
 #endif
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/newstart.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/newstart.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/newstart.F	(revision 313)
@@ -231,5 +231,5 @@
           write(6,*)' Problem opening file:',fichnom
           write(6,*)' ierr = ', ierr
-          CALL ABORT
+          CALL abort_physiq
         ENDIF
         tab0 = 50 
@@ -247,5 +247,5 @@
           write(6,*)' Problem opening file:',fichnom
           write(6,*)' ierr = ', ierr
-          CALL ABORT
+          CALL abort_physiq
         ENDIF
  
@@ -255,5 +255,5 @@
           write(6,*)' Problem opening file:',fichnom
           write(6,*)' ierr = ', ierr
-          CALL ABORT
+          CALL abort_physiq
         ENDIF
 
@@ -1024,5 +1024,5 @@
         if (igcm_h2o_vap.eq.0) then
           write(*,*) "No water vapour tracer! Can't use this option"
-          stop
+          CALL abort_physiq
         endif
           DO l=1,llm
@@ -1044,5 +1044,5 @@
            if (igcm_h2o_ice.eq.0) then
              write(*,*) "No water ice tracer! Can't use this option"
-             stop
+             CALL abort_physiq
            endif
            do ig=1,ngridmx
@@ -1061,5 +1061,5 @@
            if (igcm_h2o_ice.eq.0) then
              write(*,*) "No water ice tracer! Can't use this option"
-             stop
+             CALL abort_physiq
            endif
 
@@ -1103,5 +1103,5 @@
            if (igcm_h2o_ice.eq.0) then
               write(*,*) "No water ice tracer! Can't use this option"
-              stop
+              CALL abort_physiq
            endif
 
@@ -1144,5 +1144,5 @@
            if (igcm_h2o_ice.eq.0) then
              write(*,*) "No water ice tracer! Can't use this option"
-             stop
+             CALL abort_physiq
            endif
           DO j=1,jjp1        
@@ -1173,5 +1173,5 @@
            if (igcm_h2o_ice.eq.0) then
              write(*,*) "No water ice tracer! Can't use this option"
-             stop
+             CALL abort_physiq
            endif
           DO j=1,jjp1        
@@ -1205,5 +1205,5 @@
            if (igcm_h2o_ice.eq.0) then
              write(*,*) "No water ice tracer! Can't use this option"
-             stop
+             CALL abort_physiq
            endif
           DO j=1,jjp1        
@@ -1229,5 +1229,5 @@
            if (igcm_h2o_ice.eq.0) then
              write(*,*) "No water ice tracer! Can't use this option"
-             stop
+             CALL abort_physiq
            endif
           DO j=1,jjp1        
@@ -1258,5 +1258,5 @@
            if (igcm_h2o_ice.eq.0) then
              write(*,*) "No water ice tracer! Can't use this option"
-             stop
+             CALL abort_physiq
            endif
           DO j=1,jjp1        
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/phyetat0.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/phyetat0.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/phyetat0.F90	(revision 313)
@@ -16,5 +16,5 @@
 !======================================================================
 ! Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
-!  Adaptation à Mars : Yann Wanherdrick 
+!  Adaptation ï¿œ Mars : Yann Wanherdrick 
 ! Objet: Lecture de l etat initial pour la physique
 !======================================================================
@@ -113,5 +113,5 @@
 !      IF (ierr.NE.NF_NOERR) THEN
 !         PRINT*, 'phyetat0: Le champ <latitude> est absent'
-!         CALL abort
+!         CALL abort_physiq
 !      ENDIF
 !#ifdef NC_DOUBLE
@@ -122,5 +122,5 @@
 !      IF (ierr.NE.NF_NOERR) THEN
 !         PRINT*, 'phyetat0: Lecture echouee pour <latitude>'
-!         CALL abort
+!         CALL abort_physiq
 !      ENDIF
 !c
@@ -130,5 +130,5 @@
 !      IF (ierr.NE.NF_NOERR) THEN
 !         PRINT*, 'phyetat0: Le champ <longitude> est absent'
-!         CALL abort
+!         CALL abort_physiq
 !      ENDIF
 !#ifdef NC_DOUBLE
@@ -139,5 +139,5 @@
 !      IF (ierr.NE.NF_NOERR) THEN
 !         PRINT*, 'phyetat0: Lecture echouee pour <longitude>'
-!         CALL abort
+!         CALL abort_physiq
 !      ENDIF
 !c
@@ -147,5 +147,5 @@
 !      IF (ierr.NE.NF_NOERR) THEN
 !         PRINT*, 'phyetat0: Le champ <area> est absent'
-!         CALL abort
+!         CALL abort_physiq
 !      ENDIF
 !#ifdef NC_DOUBLE
@@ -156,5 +156,5 @@
 !      IF (ierr.NE.NF_NOERR) THEN
 !         PRINT*, 'phyetat0: Lecture echouee pour <area>'
-!         CALL abort
+!         CALL abort_physiq
 !      ENDIF
 !      xmin = 1.0E+20
@@ -168,5 +168,5 @@
 if (.not.found) then
   write(*,*) "phyetat0: Failed loading <phisfi>"
-  call abort
+  call abort_physiq
 else
   write(*,*) "phyetat0: surface geopotential <phisfi> range:", &
@@ -178,5 +178,5 @@
 if (.not.found) then
   write(*,*) "phyetat0: Failed loading <albedodat>"
-  call abort
+  call abort_physiq
 else
   write(*,*) "phyetat0: Bare ground albedo <albedodat> range:", &
@@ -188,5 +188,5 @@
 if (.not.found) then
   write(*,*) "phyetat0: Failed loading <ZMEA>"
-  call abort
+  call abort_physiq
 else
   write(*,*) "phyetat0: <ZMEA> range:", &
@@ -198,5 +198,5 @@
 if (.not.found) then
   write(*,*) "phyetat0: Failed loading <ZSTD>"
-  call abort
+  call abort_physiq
 else
   write(*,*) "phyetat0: <ZSTD> range:", &
@@ -208,5 +208,5 @@
 if (.not.found) then
   write(*,*) "phyetat0: Failed loading <ZSIG>"
-  call abort
+  call abort_physiq
 else
   write(*,*) "phyetat0: <ZSIG> range:", &
@@ -218,5 +218,5 @@
 if (.not.found) then
   write(*,*) "phyetat0: Failed loading <ZGAM>"
-  call abort
+  call abort_physiq
 else
   write(*,*) "phyetat0: <ZGAM> range:", &
@@ -228,5 +228,5 @@
 if (.not.found) then
   write(*,*) "phyetat0: Failed loading <ZTHE>"
-  call abort
+  call abort_physiq
 else
   write(*,*) "phyetat0: <ZTHE> range:", &
@@ -238,5 +238,5 @@
 if (.not.found) then
   write(*,*) "phyetat0: Failed loading <tsurf>"
-  call abort
+  call abort_physiq
 else
   write(*,*) "phyetat0: Surface temperature <tsurf> range:", &
@@ -248,5 +248,5 @@
 if (.not.found) then
   write(*,*) "phyetat0: Failed loading <emis>"
-  call abort
+  call abort_physiq
 else
   write(*,*) "phyetat0: Surface emissivity <emis> range:", &
@@ -258,5 +258,5 @@
 if (.not.found) then
   write(*,*) "phyetat0: Failed loading <cloudfrac>"
-  call abort
+  call abort_physiq
 else
   write(*,*) "phyetat0: Cloud fraction <cloudfrac> range:", &
@@ -268,5 +268,5 @@
 if (.not.found) then
   write(*,*) "phyetat0: Failed loading <totcloudfrac>"
-  call abort
+  call abort_physiq
 else
   write(*,*) "phyetat0: Total cloud fraction <totcloudfrac> range:", &
@@ -278,5 +278,5 @@
 if (.not.found) then
   write(*,*) "phyetat0: Failed loading <hice>"
-!  call abort
+!  call abort_physiq
       do ig=1,ngrid
       hice(ig)=0.
@@ -361,5 +361,5 @@
 if (.not.found) then
   write(*,*) "phyetat0: Failed loading <q2>"
-  call abort
+  call abort_physiq
 else
   write(*,*) "phyetat0: PBL wind variance <q2> range:", &
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/physiq.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/physiq.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/physiq.F90	(revision 313)
@@ -587,5 +587,5 @@
            if (is_master) write(*,*) "taking dynamics day for physics:  ",day_ini
            day_ini=pday
-!ym           stop
+!ym           CALL abort_physiq
          endif
 
@@ -670,5 +670,5 @@
               if (is_master) write(*,*) "physiq: Error! No num_run file!"
               if (is_master) write(*,*) " (which is needed for sourceevol option)"
-              stop
+              CALL abort_physiq
             endif
             read(128,*) num_run 
@@ -797,5 +797,5 @@
         print*,'I need values for flatten, J2, Rmean and MassPlanet to compute glat (else set oblate=.false.)'
 
-        call abort
+        call abort_physiq
         else
 
@@ -940,5 +940,5 @@
               if(kastprof)then
                  print*,'kastprof should not = true here'
-                 call abort
+                 call abort_physiq
               endif
 	      if(water) then
@@ -1287,5 +1287,5 @@
          if (.not.tracer) then
             print*,'We need a CO2 ice tracer to condense CO2'
-            call abort
+            call abort_physiq
          endif
          call condense_cloud(ngrid,nlayer,nq,ptimestep,   &
@@ -1392,6 +1392,6 @@
 		  call planetwide_sumval(cpp*massarea(:,:)*dtlscale(:,:)/totarea_planet,dEtot)
 !		  if(isnan(dEtot)) then ! NB: isnan() is not a standard function...
-!		     print*,'Nan in largescale, abort'
-!                     STOP
+!		     print*,'Nan in largescale, abort_physiq'
+!                     CALL abort_physiq
 !		  endif
 		  if (is_master) print*,'In largescale atmospheric energy change =',dEtot,' W m-2'
@@ -1794,5 +1794,5 @@
                print*,'temp=   ',pt(ig,:)
                print*,'pplay=  ',pplay(ig,:)
-               call abort
+               call abort_physiq
             endif
          end do
@@ -1844,5 +1844,5 @@
          print*,'As testradtimes enabled,'
          print*,'exiting physics on first call'
-         call abort
+         call abort_physiq
       endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/profile.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/profile.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/profile.F	(revision 313)
@@ -184,5 +184,6 @@
 
       GOTO 201
-101   STOP'fichier profile inexistant'
+101   PRINT*, 'fichier profile inexistant'
+      CALL abort_physiq
 201   CONTINUE
       CLOSE(10)
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/radii_mod.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/radii_mod.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/radii_mod.F90	(revision 313)
@@ -93,5 +93,5 @@
                print*,'The code still needs generalisation to arbitrary'
                print*,'aerosol kinds and number.'
-               call abort
+               call abort_physiq
             endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/rain.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/rain.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/rain.F90	(revision 313)
@@ -370,5 +370,5 @@
          if(zrfl(i).lt.0.0)then
             print*,'Droplets of negative rain are falling...'
-            call abort
+            call abort_physiq
          endif
          IF (t(i,1) .LT. T_h2O_ice_liq) THEN
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/setspi.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/setspi.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/setspi.F90	(revision 313)
@@ -90,5 +90,5 @@
          write(*,*)' datadir = /absolute/path/to/datagcm'
          write(*,*)'Also check that the corrkdir you chose in callphys.def exists.'
-         call abort
+         call abort_physiq
       endif
     
@@ -110,5 +110,5 @@
       if(nb.ne.L_NSPECTI) then
          write(*,*) 'MISMATCH !! I stop here'
-         call abort
+         call abort_physiq
       endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/setspv.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/setspv.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/setspv.F90	(revision 313)
@@ -68,5 +68,5 @@
          write(*,*)' datadir = /absolute/path/to/datagcm'
          write(*,*)'Also check that the corrkdir you chose in callphys.def exists.'
-         call abort
+         call abort_physiq
       endif
 	
@@ -87,5 +87,5 @@
       if(nb.ne.L_NSPECTV) then
          write(*,*) 'MISMATCH !! I stop here'
-         call abort
+         call abort_physiq
       endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/soil_settings.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/soil_settings.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/soil_settings.F	(revision 313)
@@ -102,5 +102,5 @@
           if (ierr.ne.0) then
             write(*,*) 'soil_settings: failed allocation of oldmlayer!'
-            stop
+            CALL abort_physiq
           endif
         endif
@@ -171,5 +171,5 @@
        if (.not.found) then
          write(*,*) "soil_settings: Failed loading <inertiedat>"
-         call abort
+         call abort_physiq
        endif
        
@@ -188,5 +188,5 @@
             write(*,*) 'soil_settings: failed allocation of ',
      &                 'oldinertiedat!'
-            stop
+            CALL abort_physiq
            endif
          endif ! of if (.not.allocated(oldinertiedat))
@@ -194,5 +194,5 @@
         if (.not.found) then
           write(*,*) "soil_settings: Failed loading <inertiedat>"
-          call abort
+          call abort_physiq
         endif
        else ! put values in therm_i
@@ -200,5 +200,5 @@
          if (.not.found) then
            write(*,*) "soil_settings: Failed loading <inertiedat>"
-           call abort
+           call abort_physiq
          endif
 !        endif
@@ -224,5 +224,5 @@
              write(*,*) 'soil_settings: failed allocation of ',
      &                  'oldtsoil!'
-             stop
+             CALL abort_physiq
            endif
          endif
@@ -230,5 +230,5 @@
          if (.not.found) then
            write(*,*) "soil_settings: Failed loading <tsoil>"
-           call abort
+           call abort_physiq
          endif
        else ! put values in tsoil
@@ -236,5 +236,5 @@
          if (.not.found) then
            write(*,*) "soil_settings: Failed loading <tsoil>"
-           call abort
+           call abort_physiq
          endif
        endif ! of if (interpol) 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/start2archive.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/start2archive.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/start2archive.F	(revision 313)
@@ -176,5 +176,5 @@
        IF (ierr.NE.NF_NOERR) THEN
          write(6,*)' Pb d''ouverture du fichier'//trim(fichnom)
-        CALL ABORT
+        CALL abort_physiq
        ENDIF
                                                 
@@ -182,5 +182,5 @@
       IF (ierr .NE. NF_NOERR) THEN
        PRINT*, "start2archive: Le champ <controle> est absent"
-       CALL abort
+       CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -191,5 +191,5 @@
        IF (ierr .NE. NF_NOERR) THEN
           PRINT*, "start2archive: Lecture echoue pour <controle>"
-          CALL abort
+          CALL abort_physiq
        ENDIF
 
@@ -217,5 +217,5 @@
        IF (ierr.NE.NF_NOERR) THEN
          write(6,*)' Pb d''ouverture du fichier'//trim(fichnom)
-        CALL ABORT
+        CALL abort_physiq
        ENDIF
                                                 
@@ -223,5 +223,5 @@
       IF (ierr .NE. NF_NOERR) THEN
        PRINT*, "start2archive: Le champ <controle> est absent"
-       CALL abort
+       CALL abort_physiq
       ENDIF
 #ifdef NC_DOUBLE
@@ -232,5 +232,5 @@
        IF (ierr .NE. NF_NOERR) THEN
           PRINT*, "start2archive: Lecture echoue pour <controle>"
-          CALL abort
+          CALL abort_physiq
        ENDIF
 
@@ -242,6 +242,8 @@
 c-----------------------------------------------------------------------
 !mars a voir      if ((day_ini_fi.ne.day_ini).or.(abs(timefi-timedyn).gt.1.e-10)) 
-      if ((day_ini_fi.ne.day_ini)) 
-     &  stop ' Probleme de Synchro entre start et startfi !!!'
+      if ((day_ini_fi.ne.day_ini)) THEN
+        PRINT*, 'Probleme de Synchro entre start et startfi !!!'
+        CALL abort_physiq
+      endif
 
 
@@ -401,5 +403,5 @@
       if (ierr.ne.NF_NOERR) then
          write(*,*) "time matter ",NF_STRERROR(ierr)
-         stop
+         CALL abort_physiq
       endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/su_gases.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/su_gases.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/su_gases.F90	(revision 313)
@@ -30,5 +30,5 @@
         write(*,*) "sugases.F90: error reading number of gases"
         write(*,*) "   (first line of gases.def) "
-        call abort
+        call abort_physiq
      endif
 
@@ -40,5 +40,5 @@
         if (ierr.ne.0) then
            write(*,*) 'sugases.F90: error reading gas names in gases.def...'
-           call abort
+           call abort_physiq
         endif
      enddo                  !of do igas=1,ngasmx
@@ -50,5 +50,5 @@
         if (ierr.ne.0) then
            write(*,*) 'sugases.F90: error reading gas molar fractions in gases.def...'
-           call abort
+           call abort_physiq
         endif
 
@@ -60,5 +60,5 @@
               print*,'You seem to be choosing two variable gases'
               print*,'Check that gases.def is correct'
-              call abort
+              call abort_physiq
            endif
         endif
@@ -120,5 +120,5 @@
   else
      write(*,*) 'Cannot find required file "gases.def"'
-     call abort
+     call abort_physiq
   endif
   close(90)
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/suaer_corrk.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/suaer_corrk.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/suaer_corrk.F90	(revision 313)
@@ -222,5 +222,5 @@
                write(*,*)' http://www.lmd.jussieu.fr/',&
                '~forget/datagcm/datafile'
-               CALL ABORT 
+               CALL abort_physiq 
             ENDIF
             OPEN(UNIT=file_unit,&
@@ -248,5 +248,5 @@
                WRITE(*,*) 'readoptprop: ',& 
                'Error while loading optical properties.' 
-               CALL ABORT 
+               CALL abort_physiq 
             END SELECT reading1_seq ! ==============================
          ENDIF
@@ -323,5 +323,5 @@
          WRITE(*,*) 'readoptprop: ',&
          'Error while loading optical properties.'
-         CALL ABORT
+         CALL abort_physiq
       END SELECT reading2_seq   ! ==============================
       ENDIF
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/tabfi.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/tabfi.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/tabfi.F	(revision 313)
@@ -164,5 +164,5 @@
        if (.not.found) then
          write(*,*)"tabfi: Failed reading <controle> array"
-         call abort
+         call abort_physiq
        else
          if (is_master) write(*,*)'tabfi: tab_cntrl',tab_cntrl
@@ -276,5 +276,5 @@
         write(*,*) "tabfi: Error modifying tab_control should",
      &             " only happen in serial mode (eg: by newstart)"
-        stop
+        CALL abort_physiq
       endif
 c-----------------------------------------------------------------------
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/vlz_fi.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/vlz_fi.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/vlz_fi.F	(revision 313)
@@ -169,5 +169,5 @@
 c               wq(ij,l+1)= (MQtot + (-w(ij,l+1)-Mtot)*qm(ij,1))
                 write(*,*) 'a rather weird situation in vlz_fi !'
-                stop
+                CALL abort_physiq
              end if
           endif
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/write_archive.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/write_archive.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/write_archive.F	(revision 313)
@@ -115,5 +115,5 @@
               write(*,*) "***** PUT_VAR matter in write_archive"
               write(*,*) "***** with ",nom," ",nf_STRERROR(ierr)
-              call abort
+              call abort_physiq
            endif
 
@@ -134,5 +134,5 @@
 	   write(*,*)"write_archive: dimension <subsurface_layers>",
      &               " is missing !!!"
-	   call abort
+	   call abort_physiq
 	  endif
           ierr=NF_INQ_DIMID(nid,"Time",id(4))
@@ -202,5 +202,5 @@
               write(*,*) "***** PUT_VAR matter in write_archive"
               write(*,*) "***** with ",nom,nf_STRERROR(ierr)
-              call abort
+              call abort_physiq
            endif
 
@@ -238,10 +238,10 @@
               write(*,*) "***** PUT_VAR matter in write_archive"
               write(*,*) "***** with ",nom,nf_STRERROR(ierr)
-              call abort
+              call abort_physiq
            endif
 
         else
 	  write(*,*) "write_archive: dim=",dim," ?!?"
-	  call abort
+	  call abort_physiq
         endif ! of if (dim.eq.3) else if (dim.eq.-3) ....
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/writediagfi.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/writediagfi.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/writediagfi.F	(revision 313)
@@ -150,5 +150,5 @@
             if (n.ge.n_nom_def_max) then
                write(*,*)"n_nom_def_max too small in writediagfi.F:",n
-               stop
+               CALL abort_physiq
             end if 
             n_nom_def=n-1
@@ -183,5 +183,5 @@
            write(*,*) "   firstnom string not long enough!!"
            write(*,*) "   increase its size to at least ",len_trim(nom)
-           stop
+           CALL abort_physiq
          endif
          
@@ -457,5 +457,5 @@
            write(*,*) "writediagfi error: dim=1 not implemented ",
      &                 "in parallel mode"
-           stop
+           CALL abort_physiq
          endif
 !         Passage variable physique -->  physique dynamique
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/writediagsoil.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/writediagsoil.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/writediagsoil.F90	(revision 313)
@@ -77,5 +77,5 @@
     write(*,*) "   firstname string not long enough!!"
     write(*,*) "   increase its size to at least ",len_trim(name)
-    stop
+    CALL abort_physiq
   endif
   
@@ -89,5 +89,5 @@
    if (ierr.ne.NF_NOERR) then
     write(*,*)'writediagsoil: Error, failed creating file '//trim(filename)
-    stop
+    CALL abort_physiq
    endif
   endif ! of if (is_master)
@@ -133,5 +133,5 @@
      if (ierr.ne.NF_NOERR) then
       write(*,*)"writediagsoil: Failed writing date to time variable"
-      stop 
+      CALL abort_physiq 
      endif
     endif ! of if (is_master)
@@ -285,5 +285,5 @@
 #ifdef CPP_PARA
   write(*,*) "writediagsoil: dimps==0 case not implemented in // mode!!"
-  stop
+  CALL abort_physiq
 #endif
   ! A. Copy data value
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/writediagspecIR.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/writediagspecIR.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/writediagspecIR.F	(revision 313)
@@ -138,5 +138,5 @@
            write(*,*) "   firstnom string not long enough!!"
            write(*,*) "   increase its size to at least ",len_trim(nom)
-           stop
+           CALL abort_physiq
          endif
 
@@ -214,5 +214,5 @@
               write(*,*) "***** with time"
               write(*,*) 'ierr=', ierr   
-c             call abort
+c             call abort_physiq
              endif
 
@@ -295,5 +295,5 @@
               write(*,*) "***** with ",nom
               write(*,*) 'ierr=', ierr
-             call abort
+             call abort_physiq
            endif 
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/writediagspecVI.F
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/writediagspecVI.F	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/writediagspecVI.F	(revision 313)
@@ -137,5 +137,5 @@
            write(*,*) "   firstnom string not long enough!!"
            write(*,*) "   increase its size to at least ",len_trim(nom)
-           stop
+           CALL abort_physiq
          endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/wstats.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/wstats.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/wstats.F90	(revision 313)
@@ -222,5 +222,5 @@
       if (ierr.ne.NF_NOERR) then
          write (*,*) NF_STRERROR(ierr)
-         stop ""
+         CALL abort_physiq
       endif
 
@@ -237,5 +237,5 @@
       if (ierr.ne.NF_NOERR) then
          write (*,*) NF_STRERROR(ierr)
-         stop ""
+         CALL abort_physiq
       endif
    endif
@@ -405,5 +405,5 @@
    write(*,*) "def_var_stats: Failed defining variable "//trim(name)
    write(*,*) NF_STRERROR(ierr)
-   stop ""
+   CALL abort_physiq
 endif
 
@@ -414,5 +414,5 @@
    write(*,*) "def_var_stats: Failed writing title attribute for "//trim(name)
    write(*,*) NF_STRERROR(ierr)
-   stop ""
+   CALL abort_physiq
 endif
 
@@ -422,5 +422,5 @@
    write(*,*) "def_var_stats: Failed writing units attribute for "//trim(name)
    write(*,*) NF_STRERROR(ierr)
-   stop ""
+   CALL abort_physiq
 endif
 
Index: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/xios_output.F90
===================================================================
--- codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/xios_output.F90	(revision 312)
+++ codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/libf/phystd/xios_output.F90	(revision 313)
@@ -14,5 +14,5 @@
 CONTAINS
 
-  SUBROUTINE initialize_xios_output
+  SUBROUTINE initialize_xios_output(time)
   USE comgeomphy
   USE xios
@@ -24,5 +24,5 @@
   IMPLICIT NONE
     INCLUDE "comcstfi.h" 
-      
+    INTEGER,INTENT(IN) :: time  
     TYPE(xios_context) :: ctx_hdl
     TYPE(xios_time)      :: dtime
@@ -35,4 +35,7 @@
     INTEGER :: l
     REAL :: presnivs(klev)
+    INTEGER :: time0
+    CHARACTER(LEN=256) :: start_date
+    INTEGER :: year,month,day,hour,minute,second
 
     CALL gather_omp(rlond,lon_mpi)
@@ -43,7 +46,25 @@
 !$OMP BARRIER    
 !$OMP MASTER
+    time0=time
+    year=time0/(86400*360)
+    time0=time0-year*(86400*360)
+    month=time0/(86400*30)
+    time0=time0-month*(86400*30)
+    month=month+1
+    day=time0/86400
+    time0=time0-day*86400
+    day=day+1
+    hour=time0/3600
+    time0=time0-hour*3600
+    minute=time0/60
+    time0=time0-minute*60
+    second=time0
+    write(start_date,'(i0.4,"-",i0.2,"-",i0.2," ",i0.2,":",i0.2,":",i0.2)'),year,month,day,hour,minute,second
+    
+    PRINT *,"time0  ",time," Start Date ",TRIM(start_date)
     CALL xios_context_initialize(context_id,comm_lmdz_phy)
     CALL xios_get_handle(context_id, ctx_hdl)
     CALL xios_set_current_context(ctx_hdl)
+    CALL xios_set_attr(ctx_hdl,start_date=TRIM(start_date))
    
 !    lev_value(:) = (/ (l,l=1,klev) /)     
